libgdx続き(androidサブモジュール)
サブモジュール作成
$ mvn archetype:generate -DarchetypeArtifactId=android-quickstart -DarchetypeGroupId=de.akquinet.android.archetypes -DgroupId=jp .ousttrue.gdxsample -DartifactId=android -Dplatform=3
ビルドするとテスト時にエラー
java.lang.NoSuchMethodException: com.android.sdklib.build.ApkBuilder.addNativeLibraries(java.io.File, java.lang.String) at java.lang.Class.getMethod(Class.java:1605)
が出る。android-quickstartのmaven-android-pluginが古いのが原因なので更新する。
pom.xml
<artifactId>android-maven-plugin</artifactId> <version>3.0.0</version>
Hellowolrdをコピー
$ rm src/main/java/jp/ousttrue/gdxsample/HelloAndroidActivity.java $ ${HELLOWORLD}/gdx-helloworld-android/src/com/badlogic/gdx/HelloWorldAndroid.java src/main/java/jp/ousttrue/gdxsample/ $ rm -rf res $ cp -rp ${HELLOWORLD}/gdx-helloworld-android/res $ rm -rf assets $ cp -rp ${HELLOWORLD}/gdx-helloworld-android/assets
HelloAndroidActivity.javaのパッケージ調整
package jp.ousttrue.gdxsample; import jp.ousttrue.gdxsample.HelloWorld;
AndroidManifest.xmlのアクティビティ修正
<activity android:name=".HelloWorldAndroid">
pom.xml
依存ライブラリの追加
<!-- commonの参照 --> <dependency> <groupId>jp.ousttrue.gdxsample</groupId> <artifactId>common</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <!-- gdxのdesktop用ライブラリ --> <dependency> <groupId>com.badlogic.gdx</groupId> <artifactId>gdx-backend-android</artifactId> <version>${gdx.version}</version> <scope>compile</scope> </dependency>
ビルド確認
$ mvn install
JNIライブラリ設定
このままでもapkは生成できるが実行時にlibgdxのネイティブライブラリが無いためクラッシュする。
pomにネイティブライブラリの記述を追加する。
pom.xml
<!-- gdx jniライブラリ --> <dependency> <groupId>com.badlogic.gdx</groupId> <artifactId>libgdx</artifactId> <version>${gdx.version}</version> <type>so</type> <scope>runtime</scope> </dependency> <dependency> <groupId>com.badlogic.gdx</groupId> <artifactId>libandroidgl20</artifactId> <version>${gdx.version}</version> <type>so</type> <scope>runtime</scope> </dependency>
実機転送
$ mvn install
$ mvn -f android/pom.xml android:deploy
以上でlibgdxアプリのアンドロイド転送まで終了。
xperiaで動作を確認できました。