Androidの開発環境をLinux上に構築

この記事は2年以上前に書いたものです。
そのため情報が古い可能性があります。ご了承ください。m(_ _)m

Hello, world! in IS01Hello, world! in IS01(2)
で、上に開発環境構築したけど、なんとなく上の方が開発しやすそうだったので、
Linux上に構築してみる。

でも、一からインストールするのは面倒なので、
以前、KuroSheevaの開発環境用に作ったVMをコピーして使う。
VMのコピー作業は割愛。

Linux (i386)用のSDKツールをAndroid SDK | Android Developersからダウンロード。

user@android-dev:~$ wget 'http://dl.google.com/android/android-sdk_r07-linux_x86.tgz'
--2010-09-20 16:37:38--  http://dl.google.com/android/android-sdk_r07-linux_x86.tgz
dl.google.com をDNSに問いあわせています... 72.14.203.91, 72.14.203.93, 72.14.203.136, ...
dl.google.com|72.14.203.91|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 17114517 (16M) [application/x-tar]
`android-sdk_r07-linux_x86.tgz' に保存中

100%[======================================================>] 17,114,517  1.12M/s   時間 15s

2010-09-20 16:37:53 (1.11 MB/s) - `android-sdk_r07-linux_x86.tgz' へ保存完了 [17114517/17114517]

ダウンロード完了したら展開。

user@android-dev:~$ tar zxf android-sdk_r07-linux_x86.tgz
user@android-dev:~$ ls
android-sdk-linux_x86  android-sdk_r07-linux_x86.tgz

Readme.txtを参照して、その通りに。

user@android-dev:~/android-sdk-linux_x86$ cat SDK\ Readme.txt
Welcome to the Android SDK!

The Android SDK archive now only contains the tools. It no longer comes
populated with a specific Android platform or Google add-on. Instead you
use the SDK Manager to install or update SDK components such as platforms,
tools, add-ons, and documentation.

In order to start developing applications, you must install at least one
version of the Android platform using the SDK Manager.

This requires an Internet connection, so if you plan to use the SDK
offline, please make sure to download the necessary components while online.

To start the SDK Manager, please execute the program "tools/android".

From the command-line you can also directly trigger an update by
executing:
  tools/android update sdk

For more information, please consult the Android web site at
  http://developer.android.com

user@android-dev:~/android-sdk-linux_x86$ tools/android update sdk
tools/android: 83: java: not found
tools/android: 100: java: not found
exec: 116: java: not found

javaが無いと怒られたので、インストール。

user@android-dev:~/android-sdk-linux_x86$ sudo aptitude search java6
v   java6-runtime                           -
v   java6-runtime-headless                  -
v   java6-sdk                               -
user@android-dev:~/android-sdk-linux_x86$ sudo aptitude install java6-sdk
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
"java6-sdk" は、以下のパッケージから提供されている仮想パッケージです:
  openjdk-6-jdk default-jdk
インストールするものを一つ選んでください。
インストール・削除・更新されるパッケージがありません。
0 個のパッケージを更新、 0 個を新たにインストール、 0 個を削除予定、28 個が更新されていない。
0B のアーカイブを取得する必要があります。 展開後に 0B のディスク領域が新たに消費されます。
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了

user@android-dev:~/android-sdk-linux_x86$ sudo aptitude install openjdk-6-jdk
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
以下の新規パッケージがインストールされます:
  ca-certificates-java{a} defoma{a} fontconfig{a} fontconfig-config{a}
  hicolor-icon-theme{a} icedtea-6-jre-cacao{a} java-common{a} libaccess-bridge-java{a}
  libaccess-bridge-java-jni{a} libasound2{a} libatk1.0-0{a} libatk1.0-data{a}
  libavahi-client3{a} libavahi-common-data{a} libavahi-common3{a} libcairo2{a} libcups2{a}
  libdatrie1{a} libdirectfb-1.2-0{a} libflac8{a} libfontconfig1{a} libfontenc1{a}
  libgif4{a} libgtk2.0-0{a} libgtk2.0-bin{a} libgtk2.0-common{a} libice-dev{a} libice6{a}
  libjasper1{a} libjpeg62{a} liblcms1{a} libnspr4-0d{a} libnss3-1d{a} libogg0{a}
  libpango1.0-0{a} libpango1.0-common{a} libpixman-1-0{a} libpthread-stubs0{a}
  libpthread-stubs0-dev{a} libpulse0{a} libsm-dev{a} libsm6{a} libsndfile1{a} libsysfs2{a}
  libthai-data{a} libthai0{a} libtiff4{a} libts-0.0-0{a} libvorbis0a{a} libvorbisenc2{a}
  libx11-dev{a} libxau-dev{a} libxcb-render-util0{a} libxcb-render0{a} libxcb1-dev{a}
  libxcomposite1{a} libxcursor1{a} libxdamage1{a} libxdmcp-dev{a} libxfixes3{a}
  libxfont1{a} libxft2{a} libxi6{a} libxinerama1{a} libxrandr2{a} libxrender1{a}
  libxt-dev{a} libxt6{a} libxtst6{a} openjdk-6-jdk openjdk-6-jre{a}
  openjdk-6-jre-headless{a} openjdk-6-jre-lib{a} shared-mime-info{a} tsconf{a}
  ttf-dejavu-core{a} ttf-dejavu-extra{a} tzdata-java{a} x-ttcidfont-conf{a} x11-common{a}
  x11proto-core-dev{a} x11proto-input-dev{a} x11proto-kb-dev{a} xfonts-encodings{a}
  xfonts-utils{a} xtrans-dev{a}
以下のパッケージは更新されます:
  tzdata
1 個のパッケージを更新、 86 個を新たにインストール、 0 個を削除予定、27 個が更新されていない。
67.5MB のアーカイブを取得する必要があります。 展開後に 207MB のディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]
拡張状態情報を書き込んでいます... 完了
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main x11-common 1:7.5+5ubuntu1 [308kB]
取得:2 http://jp.archive.ubuntu.com/ubuntu/ lucid/main libice6 2:1.0.6-1 [50.5kB]
・・・
取得:86 http://jp.archive.ubuntu.com/ubuntu/ lucid/main x-ttcidfont-conf 32 [23.8kB]
取得:87 http://jp.archive.ubuntu.com/ubuntu/ lucid-updates/main icedtea-6-jre-cacao 6b18-1.8.1-0ubuntu1 [344kB]
67.5MB を 58s 秒でダウンロードしました (1,156kB/s)
パッケージからテンプレートを展開しています: 100%
パッケージを事前設定しています ...
未選択パッケージ x11-common を選択しています。
(データベースを読み込んでいます ... 現在 46236 個のファイルとディレクトリがインストールされています。)
(.../x11-common_1%3a7.5+5ubuntu1_all.deb から) x11-common を展開しています...
・・・
update-alternatives: using /usr/lib/jvm/java-6-openjdk/bin/wsimport to provide /usr/bin/wsimport (wsimport) in auto mode.
update-alternatives: using /usr/lib/jvm/java-6-openjdk/bin/xjc to provide /usr/bin/xjc (xjc) in auto mode.

libc-bin のトリガを処理しています ...
ldconfig deferred processing now taking place
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了

現在の状態: 更新が 27 個 [-1]。
user@android-dev:~/android-sdk-linux_x86$

tools/ update sdk を再実行。

user@android-dev:~/android-sdk-linux_x86$ tools/android update sdk
No command line parameters provided, launching UI.
See 'android --help' for operations from the command line.
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.<init>(Unknown Source)
        at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
        at org.eclipse.swt.widgets.Display.<init>(Unknown Source)
        at org.eclipse.swt.widgets.Display.getDefault(Unknown Source)
        at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
        at org.eclipse.swt.widgets.Shell.<init>(Unknown Source)
        at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.createContents(UpdaterWindowImpl.java:122)
        at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.open(UpdaterWindowImpl.java:102)
        at com.android.sdkuilib.repository.UpdaterWindow.open(UpdaterWindow.java:113)
        at com.android.sdkmanager.Main.showMainWindow(Main.java:307)
        at com.android.sdkmanager.Main.doAction(Main.java:259)
        at com.android.sdkmanager.Main.run(Main.java:98)
        at com.android.sdkmanager.Main.main(Main.java:87)

Xサーバを立ち上げてなかったので怒られる。
X11Forwardingな環境になっているので、Windows側でXming起動して再度。

user@android-dev:~/android-sdk-linux_x86$ tools/android update sdk
No command line parameters provided, launching UI.
See 'android --help' for operations from the command line.

すると、Windowsで動かしたSDK Managerと同じ画面が起動してくる
Hello, world! in IS01(2)と全く同じなので割愛。

次に、SH Developers Square – SDK AddOn ダウンロード
から、AddOnダウンロードして展開。

user@android-dev:~/android-sdk-linux_x86$ unzip -l sharp_addon-JNDK01_r1.zip | head
プログラム 'unzip' はまだインストールされていません。  次のように入力することでインストールできます:
sudo apt-get install unzip

unzip入れてなかったのでインストール。

user@android-dev:~/android-sdk-linux_x86$ sudo aptitude install unzip
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
以下の新規パッケージがインストールされます:
  unzip
0 個のパッケージを更新、 1 個を新たにインストール、 0 個を削除予定、27 個が更新されていない。
177kB のアーカイブを取得する必要があります。 展開後に 397kB のディスク領域が新たに消費されます。
拡張状態情報を書き込んでいます... 完了
取得:1 http://jp.archive.ubuntu.com/ubuntu/ lucid/main unzip 6.0-1build1 [177kB]
177kB を 0s 秒でダウンロードしました (442kB/s)
未選択パッケージ unzip を選択しています。
(データベースを読み込んでいます ... 現在 50332 個のファイルとディレクトリがインストールされています。)
(.../unzip_6.0-1build1_i386.deb から) unzip を展開しています...
man-db のトリガを処理しています ...
unzip (6.0-1build1) を設定しています ...
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
拡張状態情報を読み込んでいます
パッケージの状態を初期化しています... 完了
拡張状態情報を書き込んでいます... 完了

改めて展開。

user@android-dev:~/android-sdk-linux_x86$ unzip sharp_addon-JNDK01_r1.zip -d add-ons/
Archive:  sharp_addon-JNDK01_r1.zip
   creating: add-ons/sharp_addon-JNDK01_r1/docs/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/allclasses-frame.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/allclasses-noframe.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/constant-values.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/deprecated-list.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/help-doc.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/index.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/index-all.html
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/hardware/
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/hardware/CameraEx.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/hardware/FlashLight.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/hardware/package-frame.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/hardware/package-summary.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/hardware/package-tree.html
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/client/
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/client/IIoObexPushClientDataCallback.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/client/package-frame.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/client/package-summary.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/client/package-tree.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/client/PushClient.html
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/server/
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/server/IIoObexPushServerDataCallback.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/server/package-frame.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/server/package-summary.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/server/package-tree.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/jp/co/sharp/android/io/obex/server/PushServer.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/overview-frame.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/overview-summary.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/overview-tree.html
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/package-list
   creating: add-ons/sharp_addon-JNDK01_r1/docs/reference/resources/
 extracting: add-ons/sharp_addon-JNDK01_r1/docs/reference/resources/inherit.gif
  inflating: add-ons/sharp_addon-JNDK01_r1/docs/reference/stylesheet.css
  inflating: add-ons/sharp_addon-JNDK01_r1/hardware.ini
   creating: add-ons/sharp_addon-JNDK01_r1/images/
  inflating: add-ons/sharp_addon-JNDK01_r1/images/kernel-qemu
  inflating: add-ons/sharp_addon-JNDK01_r1/images/NOTICE.txt
  inflating: add-ons/sharp_addon-JNDK01_r1/images/ramdisk.img
  inflating: add-ons/sharp_addon-JNDK01_r1/images/system.img
  inflating: add-ons/sharp_addon-JNDK01_r1/images/userdata.img
   creating: add-ons/sharp_addon-JNDK01_r1/libs/
  inflating: add-ons/sharp_addon-JNDK01_r1/libs/hardware.jar
  inflating: add-ons/sharp_addon-JNDK01_r1/libs/obex.jar
  inflating: add-ons/sharp_addon-JNDK01_r1/manifest.ini
   creating: add-ons/sharp_addon-JNDK01_r1/skins/
   creating: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/
  inflating: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/background.png
  inflating: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/enterbar.png
 extracting: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/hardware.ini
  inflating: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/key.png
  inflating: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/layout
 extracting: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/menu_b.png
  inflating: add-ons/sharp_addon-JNDK01_r1/skins/JNDK01/spacebar.png

Target IDの確認

user@android-dev:~/android-sdk-linux_x86$ tools/android list target
Available Android targets:
id: 1 or "android-4"
     Name: Android 1.6
     Type: Platform
     API level: 4
     Revision: 3
     Skins: WVGA800, HVGA (default), WVGA854, QVGA
id: 2 or "SHARP Corporation:JN-DK01:4"
     Name: JN-DK01
     Type: Add-On
     Vendor: SHARP Corporation
     Revision: 1
     Description: SHARP JN-DK01 Add-on
     Based on Android 1.6 (API level 4)
     Libraries:
      * jp.co.sharp.android.hardware (hardware.jar)

      * jp.co.sharp.android.io.obex (obex.jar)

     Skins: WVGA854, HVGA, QVGA, WVGA800, JNDK01 (default)
     Adds USB support for devices (Vendor: 0x04DD)

Target IDは、2。

AVD作って、Emulator起動

user@android-dev:~/android-sdk-linux_x86$ tools/android create avd -n JNDK01 -t 2 --sdcard 128M
Created AVD 'JNDK01' based on JN-DK01 (SHARP Corporation),
with the following hardware config:
hw.lcd.density=240
vm.heapSize=24
hw.ramSize=256M
hw.gsmModem=no
user@android-dev:~/android-sdk-linux_x86$ tools/emulator @JNDK01 -qemu --cpu cortex-a8

エミュレータの画面もHello, world! in IS01(2)と全く同じ。

動かしてみた感じWindows環境より重い。
エミュレータ動作中、topを眺めてると、sshdがえらくパワーを使用してた(X11Forwardingな環境だからだろうけど)
のが原因かなぁ。。。

カテゴリー: ハードウェア, モバイル タグ: , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です