AndEngineは前回までに入ったので、次にAndenginephysicsbox2dextensionを入れて行きます。これは苦労しました。というか、既に、順序を忘れてしまってます。思い出しながら・・・書いていきます。ちなみにndkもインストールしてあります(他のサイトみてください)。

まず、最初にすることは、AndEngineのライブラリと同様に、プロジェクト構造から追加していきます。

Additional required Moduleにandengineが入ってますが、これは既に入っている前提なので、そのまま進みます。andengineの導入がわからない方は前の記事へ・・・

build.gradle(Module: app)に、

[java]

compile project(‘:andEnginePhysicsBox2DExtension’)

[/java]

 

build.gradle(Module: andEnginePhisicsBox2DExtension)に

[java]
sourceSets.main {
jniLibs.srcDir ‘src/main/libs’
jni.srcDirs = []
}
[/java]

を加えます。ここまでandEngineを組み込むのと、ほぼ一緒です。

ここで、一応ビルトは通ります。しかしながら、物理シミュレーション部の記述などをすると、共有ライブラリの関係のエラーが出て、正常に動きません。

[java]
mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false);
[/java]

と記述すると、

[java]
MainActivity.onCreateScene failed. @(Thread: ‘GLThread 2268’)
java.lang.UnsatisfiedLinkError: ~~~ couldn’t find "libandenginephysicsbox2dextension.so"
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at org.andengine.extension.physics.box2d.PhysicsWorld.<clinit>(PhysicsWorld.java:35)
~ 略 ~
[/java]

てな感じでlibandenginephysicsbox2dextension.soが見当たらない!!といわれます。

これは、stackoverflowでも対策がでていますが、ここで注意が必要です。ここではlib.zipを作る方法と、jniLibsを作る方法の2つ紹介されていますが、Android 6 (Marshmallow)では相変わらずエラーがでます。

で、解決策としてAndroid6で使える共用ライブラリ(jniLibs)がアップロードされています。これをDLして展開してきます。次に、これを組み込みます。

app/src/mainの下にjniLibsのフォルダを作り、スクリーンショットのように配置します(左側反転部)。通常は、これだけで正常にできると思います。一応念のため、build.gradle(Module:app)を開き、jniLibsを明示しておいてもよいと思います(右側反転部)。

これでエラーは出なくなると思います。

投稿者 まる

Twitter : @dinagon Instagram : @d_dinagon フォロバします!!最近、ESP/Arduinoいじりすぎでアプリ開発が進んでない。歯医者なのに歯のことはあまり触れませんw