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>

maven-android-pluginがandroid-maven-pluginに名前も変わっている。

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で動作を確認できました。