CUIのみでAndroidの開発環境を作る

何の役に立つのか疑問ですが、一貫した情報が無くハマりポイントが多かったので書いときます。
環境はさくらのVPS上に作りました。正真正銘のCUIです。
http://vps.sakura.ad.jp/
最小構成でインストールしたCentOSに、カーネルは2.6.18-194.8.1.el5 x86_64です。古い・・・

Javaの環境

まずはJavaの実行環境が必要です。openjdkを使えば良いと思います。
yumに「java-1.6.0-openjdk.x86_64」があったのでインストールしました。

Android SDK

Linux用のAndroid SDKをダウンロードしてきます。
http://developer.android.com/sdk/index.html
適当なディレクトリに展開。
ここでダウンロードしたAndroid SDKはtoolsだけで、platformsやadd-onsなどの開発に必要なコンポーネントを下記ドキュメントを参考に整えていくのですが、これがGUIが前提になっているので厄介でした。
http://developer.android.com/sdk/adding-components.html
コマンドラインから./tools/androidを起動しても、GUIを立ち上げようとするので当然エラーになります。

# tools/android 

Starting Android SDK and AVD Manager
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:275)
	at com.android.sdkmanager.Main.run(Main.java:98)
	at com.android.sdkmanager.Main.main(Main.java:87)

ググるVNCを使ってインストールするとかの情報は見つかりましたが、CUIだけでも可能です。help見てると下のオプションを見つけたので、こいつをつけて起動します。他にも色々あるので、コマンドにhelp付けて確認してみてください。

  -u --no-ui    Update from command-line, without any UI
./tools/android update sdk -t platform -u
*2011/01/26追記:SDK2.3以上の場合、構造が変わってるので下のコマンドで。
./tools/android update sdk -u

実行するとplatformsの下に色々ダウンロードされていきます。

$ ls platforms/
android-3  android-4  android-7  android-8

これでとりあえずの開発環境は整いました。次はプロジェクトを作成してコンパイルまでしてみます。

プロジェクト作成

詳細は省略・・・

$ ./android create project -t 4 -p /home/matatabi/test -k "com.example.test" -a HelloWorld

ビルド

$ cd /home/matatabi/test
$ ls
AndroidManifest.xml  bin  build.properties  build.xml  default.properties  gen  libs  local.properties  res  src

build.xmlまで作成してくれてるのでantでビルドするだけですが、CentOSのパッケージに罠がありました。「yum install ant」でインストールしたantを使うとこんなエラーが出ます。

BUILD FAILED
java.lang.NoSuchMethodError: org.apache.tools.ant.types.FileSet.iterator()Ljava/util/Iterator;

CentOSのantのバージョンは1.6.5でした。古い・・・ソース確認しましたが、1.6.5のantにはFileSet.iterator()が無いのでエラーになったみたいです。
多分1.7以上が必要です。最新版をダウンロードしてきましょう。
http://ant.apache.org/bindownload.cgi
最新版のantでビルドします。

$ ant debug

成功するとbinの下にapkファイルが作成されます。
以上、CUIだけでAndroidの開発環境が整いました。