3

(1) ビルド状態
※対象SDK : 23

(1-1) ビルド状態 - ADD
* eclipse - indigo
* ndk - android-ndk-r7c

(2) デバイスの状態
* デバイス OS : Android 6.0 preview 3 OS , Android 6.0
* デバイス名 : Nexus 9

(3) コード

ケース 1 System.loadLibrary("ゲーム");

ケース 2 System.load(“/lib/libc2scommon.so");

(4) エラーメッセージ

ケース1

09-30 19:06:56.091: D/AndroidRuntime(3512): Shutting down VM
09-30 19:06:56.091: E/AndroidRuntime(3512): FATAL EXCEPTION: main
09-30 19:06:56.091: E/AndroidRuntime(3512): Process: <MY_APP_ID>, PID: 3512
09-30 19:06:56.091: E/AndroidRuntime(3512): java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/<MY_APP_ID>-1/lib/arm/libgame.so: has text relocations
09-30 19:06:56.091: E/AndroidRuntime(3512):     at java.lang.Runtime.load(Runtime.java:332)
09-30 19:06:56.091: E/AndroidRuntime(3512):     at java.lang.System.load(System.java:1069)

ケース 2

09-30 18:43:42.390: E/AndroidRuntime(3082): Process: <MY_APP_ID> , PID: 3082
09-30 18:43:42.390: E/AndroidRuntime(3082): java.lang.UnsatisfiedLinkError: dlopen failed: /data/app/<MY_APP_ID>-2/lib/arm/libgame.so: has text relocations
09-30 18:43:42.390: E/AndroidRuntime(3082):     at java.lang.Runtime.load(Runtime.java:332)
09-30 18:43:42.390: E/AndroidRuntime(3082):     at java.lang.System.load(System.java:1069)


問題とは
ターゲット SDK 22 は問題ありません。
助けてください。

4

1 に答える 1

3

テキストの再配置を含む SDK 23 以降の共有ライブラリをターゲットにしている場合、拒否されるようになりました。これはここに文書化されています: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-runtime

それらを修正する必要があります。つまり、ネイティブ コードにアクセスして NDK を準備する必要があります。最も簡単な回避策は、Android.mk ファイルの LOCAL_CFLAGS に -fpic または -fPIC を追加してから、ライブラリを再構築することです。

于 2015-10-07T13:43:18.550 に答える