Android 6.0预览3设备(目标sdk 23),System.loadLibrary失败

时间:2015-10-01 10:42:10

标签: android android-6.0-marshmallow loadlibrary target-sdk

(1)建立国家
 *目标SDK:23

(1-1)建立国 - ADD
 * eclipse - 靛蓝
 * ndk - android-ndk-r7c

(2)设备状态
 *设备操作系统:Android 6.0预览3操作系统,Android 6.0
 *设备名称:Nexus 9

(3)代码

案例1     的System.loadLibrary("游戏&#34);

案例2     System.load(“/ LIB / libc2scommon.so&#34);

(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没有问题 帮助PLZ。

1 个答案:

答案 0 :(得分:3)

如果您要定位SDK 23或更高版本,则现在会拒绝具有文本重定位的共享库。这在此处记录: https://developer.android.com/about/versions/marshmallow/android-6.0-changes.html#behavior-runtime

您必须修复它们,这意味着您需要访问本机代码并准备好NDK。最简单的解决方法是将-fpic或-fPIC添加到Android.mk文件中的LOCAL_CFLAGS,然后重建库。