2012年10月2日火曜日

LinuxにAndroid開発環境を構築してみよう

はじめまして。サイオステクノロジーの貝野です。
どうぞよろしくお願いします。

私は今年の3月に SIOS に入社したのですが、それまでは Java を中心としたアプリケーション開発に携わっていました。

そこで今回は、Linux に Android アプリケーション開発環境を構築する手順をご紹介したいと思います。

・環境

今回使用した環境は、以下の通りです。

・RHEL5.8 (32bit)
・JDK 1.7.0_07
・Android SDK 20.0.3
・Apache-ant 1.8.4

・ダウンロード~インストールの実施

  1. JDK をインストールします。
  2. http://www.oracle.com/technetwork/java/javase/downloads/index.html より、JDKをダウンロードします。

    今回は、以下のファイルをダウンロードしました。

    jdk-7u7-linux-i586.rpm
    

    インストールを実行します。

    # rpm -ivh jdk-7u7-linux-i586.rpm
    

  3. Android SDK をインストールします。
  4. http://developer.android.com/sdk/index.html より、Android SDK をダウンロードします。

    以下のファイルをダウンロードしました。

    android-sdk_r20.0.3-linux.tgz
    

    Android SDK を展開します。

    # cd /usr/local/
    # tar -zxvf android-sdk_r20.0.3-linux.tgz
    

    展開が成功すると、android-sdk-linux というフォルダが作成されます。


    さらに、ここで Android SDK Manager を起動して、必要なツールやAPIをインストールします。

    # android update sdk
    

    上記コマンドを CUI 環境で実行すると、以下のようなエラーが発生しました。

    CUI環境でGUIを起動しようとしているためです。

    Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed]
            at org.eclipse.swt.SWT.error(Unknown Source)
            at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source)
            at org.eclipse.swt.widgets.Display.create(Unknown Source)
            at org.eclipse.swt.graphics.Device.(Unknown Source)
            at org.eclipse.swt.widgets.Display.(Unknown Source)
            at org.eclipse.swt.widgets.Display.(Unknown Source)
            at org.eclipse.swt.widgets.Display.getDefault(Unknown Source)
            at org.eclipse.swt.widgets.Shell.(Unknown Source)
            at org.eclipse.swt.widgets.Shell.(Unknown Source)
            at com.android.sdkuilib.internal.repository.sdkman2.SdkUpdaterWindowImpl2.createShell(SdkUpdaterWindowImpl2.java:168)
            at com.android.sdkuilib.internal.repository.sdkman2.SdkUpdaterWindowImpl2.open(SdkUpdaterWindowImpl2.java:137)
            at com.android.sdkuilib.repository.SdkUpdaterWindow.open(SdkUpdaterWindow.java:110)
            at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:338)
            at com.android.sdkmanager.Main.doAction(Main.java:294)
            at com.android.sdkmanager.Main.run(Main.java:118)
            at com.android.sdkmanager.Main.main(Main.java:101)
    

    GUI環境で実行すると、Android SDK Manager が表示されます。

    インストールする項目を選択したら、[Install package]ボタンを押下します。

    インストールが必要となるのは、Tools配下のパッケージです。

    API がインストールされていない場合は API のインストールも必要になります。

    API がインストールされると、/android-sdk-linux/platforms/ 配下に格納されます。

    # ls /usr/local/android-sdk-linux/platforms
    android-10  android-12  android-14  android-16
    android-11  android-13  android-15
    

    次の画面が表示されたら、"Accept All"を選択します。

    最後に[Install]ボタンを押下します。


  5. Apache Ant をインストールします。
  6. http://ant.apache.org/ より、Apache Ant をダウンロードします。

    以下のファイルをダウンロードしました。

    apache-ant-1.8.4-bin.tar.gz
    

     Apache Antを展開します。

    # cd /usr/local/
    # tar -zxvf apache-ant-1.8.4-bin.tar.gz
    

・環境変数の設定

以下のように、環境変数を設定します。

/root/.bash_profile

export JAVA_HOME=/usr/java/jdk1.7.0_07
export ANT_HOME=/usr/local/apache-ant-1.8.4
export ANDROID_SDK_HOME=/usr/local/android-sdk-linux
export PATH=${PATH}:$JAVA_HOME/bin:$ANDROID_SDK_HOME/tools:$ANDROID_SDK_HOME/tools-platform:$ANT_HOME/bin:

以上で、インストールは完了です。


・プロジェクトの作成~ビルド

インストールが完了したら、次はプロジェクトを作成します。

  1. android create project コマンドを用いて、プロジェクトを作成します。
  2. # android create project --target 1 --name HelloWorld \
    --path /usr/local/android-sdk-linux/HelloWorldPg \
    --activity HelloWorldActivity --package sample.helloworld
    Created project directory: ./usr/local/android-sdk-linux/HelloWorldPg
    Created directory /root/usr/local/android-sdk-linux/HelloWorldPg/src/sample/helloworld
    Added file ./usr/local/android-sdk-linux/HelloWorldPg/src/sample/helloworld/HelloWorldActivity.java
    Created directory /root/usr/local/android-sdk-linux/HelloWorldPg/res
    Created directory /root/usr/local/android-sdk-linux/HelloWorldPg/bin
    Created directory /root/usr/local/android-sdk-linux/HelloWorldPg/libs
    Created directory /root/usr/local/android-sdk-linux/HelloWorldPg/res/values
    Added file ./usr/local/android-sdk-linux/HelloWorldPg/res/values/strings.xml
    Created directory /root/usr/local/android-sdk-linux/HelloWorldPg/res/layout
    Added file ./usr/local/android-sdk-linux/HelloWorldPg/res/layout/main.xml
    Added file ./usr/local/android-sdk-linux/HelloWorldPg/AndroidManifest.xml
    Added file ./usr/local/android-sdk-linux/HelloWorldPg/build.xml
    Added file ./usr/local/android-sdk-linux/HelloWorldPg/proguard-project.txt
    

    コマンド実行時の各オプションの意味は、以下のとおりです。

    --target :ターゲットID(必須)
    --name :プロジェクト名
    --path :プロジェクトフォルダのパス(必須)
    --activity :アクティビティ名(必須)
    --package :パッケージ(必須)

    使用できるターゲット ID は、以下のコマンドで調べることができます。

    ※API をインストールしていないと、ターゲット情報が表示されません。Android SDK Manager を用いて、 API をインストールしてください。

    # android list targets
    Available Android targets:
    ----------
    id: 1 or "android-10"
         Name: Android 2.3.3
         Type: Platform
         API level: 10
         Revision: 2
         Skins: WVGA854, QVGA, WQVGA432, WQVGA400, HVGA, WVGA800 (default)
         ABIs : armeabi
    ----------
    id: 2 or "Google Inc.:Google APIs:10"
         Name: Google APIs
         Type: Add-On
         Vendor: Google Inc.
         Revision: 2
         Description: Android + Google APIs
         Based on Android 2.3.3 (API level 10)
         Libraries:
          * com.android.future.usb.accessory (usb.jar)
              API for USB Accessories
          * com.google.android.maps (maps.jar)
              API for Google Maps
         Skins: WQVGA400, WVGA854, HVGA, WQVGA432, WVGA800 (default), QVGA
         ABIs : armeabi
    
  3. 一度、プロジェクトフォルダの中身を確認してみます。
  4. # ls /usr/local/android-sdk-linux/HelloWorldPg
    AndroidManifest.xml  build.xml  local.properties      res
    ant.properties       gen        proguard-project.txt  src
    bin                  libs       project.properties
    

    プロジェクトフォルダの構成は、以下のようになっています。

    ディレクトリ/
    ファイル名
    説明
    src java のファイルを配置します。
    res イメージファイルやレイアウト定義のxmlファイルなどの、リソースファイルを配置します。
    gen 定数ファイルが自動で作成されます。
    bin プロジェクトをビルドした後に、bin フォルダ配下に apk ファイルが作成されます。
    libs ライブラリを配置します。
    AndroidManifest.xml アプリケーションの情報を管理するxmlファイルです。
    パーミッションの設定など、アプリの実行に必要な情報を記載します。
    build.xml アプリケーションのビルド情報を管理するxmlファイルです。
    local.properties 開発環境のローカル設定ファイルです。開発環境ごとに用意する必要があります。
    ant.properties ビルドの設定ファイルです。
    project.properties プロジェクトの設定ファイルです。
    proguard-project.txt ProGraudの設定ファイルです。

  5. ここまでできたら、後はビルドをするだけです。
  6. # ant release
    Buildfile: /usr/local/android-sdk-linux/HelloWorldPg/build.xml
    
    -set-mode-check:
    
    (省略)
    
    release:
    
    BUILD SUCCESSFUL
    Total time: 5 seconds
    

    "BUILD SUCCESSFUL"と表示されたので、正常にビルドが行われました。

    bin フォルダ配下を見てみると、ちゃんと apk ファイルができています。

    # ls bin/
    AndroidManifest.xml                HelloWorld.ap_    classes.dex    res
    AndroidManifest.xml.d              HelloWorld.ap_.d  classes.dex.d
    HelloWorld-release-unsigned.apk    build.prop        jarlist.cache
    HelloWorld-release-unsigned.apk.d  classes           proguard.txt
    

あとは、この apk ファイルを端末に乗せれば OK です。

今回はファイルに変更を加えず、設定方法のみのご紹介とさせていただきました。
みなさんの方ではぜひカスタマイズして動かしてみてくださいね。


以上です。

0 件のコメント:

コメントを投稿