飼育係(べべ)日記


2011-03-06(Sun) [長年日記]

_ mavenを使ったAndroidプロジェクトの構成管理

maven-android-plugin」と「Maven: The Complete Reference」内のChapter 14を参照しながらやってみた記録。

mavenレポジトリへのAndroidSDKのインストール(maven-android-sdk-deployer)

まずは環境変数の確認。

ANDROID_HOME=/path/to/android-sdk-linux_86

となっているのを確認。その後、maven-android-sdk-deployerのgithubからダウンロードしてきたtar玉を展開。展開したディレクトリの中でmvn install

$ mvn clean install
(略)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Maven Android SDK Deployer ........................ SUCCESS [1.092s]
[INFO] Android Platforms ................................. SUCCESS [0.031s]
[INFO] Android Platform 1.5 API 3 ........................ SUCCESS [0.627s]
[INFO] Android Platform 1.6 API 4 ........................ SUCCESS [0.229s]
[INFO] Android Platform 2.1 API 7 ........................ SUCCESS [0.348s]
[INFO] Android Platform 2.2 API 8 ........................ SUCCESS [0.619s]
[INFO] Android Platform 2.3 API 9 ........................ SUCCESS [0.172s]
[INFO] Android Platform 2.3.3 API 10 ..................... SUCCESS [0.466s]
[INFO] Android Platform 3.0 API 11 ....................... SUCCESS [0.070s]
[INFO] Android Add-Ons ................................... SUCCESS [0.149s]
[INFO] Android Add-On Google Platform 1.5 API 3 .......... SUCCESS [0.121s]
[INFO] Android Add-On Google Platform 1.6 API 4 .......... SUCCESS [0.038s]
[INFO] Android Add-On Google Platform 2.1 API 7 .......... SUCCESS [0.051s]
[INFO] Android Add-On Google Platform 2.2 API 8 .......... SUCCESS [0.066s]
[INFO] Android Add-On Google Platform 2.3 API 9 .......... SUCCESS [0.045s]
[INFO] Android Add-On Google Platform 2.3.3 API 10 ....... SUCCESS [0.061s]
[INFO] Android Add-On Google Platform 3.0 API 11 ......... SUCCESS [0.016s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
(略)

エラーがでる時はANDROID_HOMEの値を確認する。AndroidSDKがきちんとインストールされているか確認する。ANDROID_HOME内のものをmavenレポジトリに再配置するので、ANDROID_HOME内にないとBUILD ERRORになるよ。特定のSDKバージョンだけ再配備したい場合は、-Pで指定。2.2だけの場合は以下の通り。

$ mvn install -P 2.2

あと、mavenのsettings.xmlに以下を追加。

<pluginGroups>
   <pluginGroup>
     com.jayway.maven.plugins.android.generation2
   </pluginGroup>
</pluginGroups> 

こうしておくと、mvnを実行するときのgoal指定で"com.jayway.maven.plugins.android.generation2:maven-android-plugin:deploy"とかせずに、"android:deploy"とすることができる。

プロジェクトの作成

先日はandroid create projectで作成したけど、ここもmavenで。Maven Android Archetypesを使う。特に何かのインストールはいらない。以下のようなオプションでmavenを実行。

$ mvn archetype:generate -DarchetypeArtifactId=android-release -DarchetypeGroupId=de.akquinet.android.archetypes -DarchetypeVersion=1.0.5 -DgroupId=jp.hepo -DartifactId=FirstAndroidApp -Dpackage=jp.hepo.android -Dplatform=2.2

archetypeArtifactIdは"androidquick-start", "android-with-test", "android-release"の3種類あって、それぞれ「apkを作るまでを行う単一のAndroidプロジェクト」「android-quickstartの分に加えてテスト用のプロジェクトも一緒に」「android-with-testに加えてandroid-marketの公開用に署名やらなにやら一通りできるプロジェクト」ができる。

プロジェクトをbuildしてみる

ここまでやったら、プロジェクトのディレクトリ内で

$ mvn clean install

してみる。うまくいけばapkができあがる。プロジェクトが"android-with-test"だったり"android-release"だったりしたときには、apkをエミュレータや実機にインストールして、テストを実行するところまでやってくれる。

おまけ。その他わかったこと。
エミュレータの起動・終了

pom.xmlの中に書いておいた名前のエミュレータの起動・終了ができる。pom.xmlに書いてなければ名前がDefaultのエミュレータを起動する。android.emulator.avdをコマンドラインで指定することもできる。

$ mvn android:emulator-start
$ mvn android:emulator-stop
$ mvn android:emulator-start -Dandroid.emulator.avd=froyo

pom.xmlの中でエミュレータを指定するには、以下のようにする。

<configuration>
  <emulator>
    <avd>froyo</avd>
  </emulator>
</configuration>
apkのインストール・アンインストール

deviceが複数見える状態でやるとbuild errorになる。

$ mvn android:deploy
$ mvn android:undeploy
Tags: Android maven