Android 无法在4.2 4.3上加载本机库,但在最新版本上加载

Android 无法在4.2 4.3上加载本机库,但在最新版本上加载,android,android-ndk,native-activity,Android,Android Ndk,Native Activity,我有一个本地android应用程序NativeActivity,没有java代码,只有libMyApp.so本地库 该应用程序在安卓5.0.1和5.1.1上运行完美,但在安卓4.3和4.2.2上崩溃 对于5.0.1和5.1.1版本,请从中成功加载.so库 /data/data/com.example.myapp/lib/libMyApp.so 4.3和4.2.2版本尝试从以下位置之一加载 /data/app lib/com.example.myapp-1/libMyApp.so /data/ap

我有一个本地android应用程序NativeActivity,没有java代码,只有libMyApp.so本地库

该应用程序在安卓5.0.1和5.1.1上运行完美,但在安卓4.3和4.2.2上崩溃

对于5.0.1和5.1.1版本,请从中成功加载.so库

/data/data/com.example.myapp/lib/libMyApp.so 4.3和4.2.2版本尝试从以下位置之一加载

/data/app lib/com.example.myapp-1/libMyApp.so /data/app lib/com.example.myapp-2/libMyApp.so 错误消息是

FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/android.app.NativeActivity}: java.lang.IllegalArgumentException: Unable to load native library: /data/app-lib/com.example.myapp-2/libMyApp.so
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2295)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349)
    at android.app.ActivityThread.access$700(ActivityThread.java:159)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:176)
    at android.app.ActivityThread.main(ActivityThread.java:5419)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
    at dalvik.system.NativeStart.main(Native Method
我的应用程序只有一个共享库,即不依赖第三方库

模块名在清单文件中指定,如下所示

<meta-data android:name="android.app.lib_name"
           android:value="MyApp" />
libMyApp.so与-llog-lGLESv3-lGLESv2-lGLESv1_CM-lEGL-landroid-lz libs链接

为什么无法加载库,我缺少什么

为什么旧的android版本不从/data/data/com.example.myapp/lib/加载


较旧的android版本是否有另一个模块命名约定?

您是否像这样在类中加载了库

static {
        System.loadLibrary("nativeLib");
    }

经过两天的研究,我终于找到了问题的根源

首先,本机应用程序在logcat中没有显示完整链接器错误-我不知道为什么

但在将同一个应用程序转换为Java/JNI应用程序后,我只能在L5之前的Android版本上看到以下链接器错误。*

dlopen/data/app lib/com.example.myapp/libMyApp.so失败:dlopen 失败:找不到libMyApp引用的符号sr。因此

我曾经用R10eNDK编译android-21API级别的cpp代码

这基本上不能保证应用程序在L之前的android版本上运行正常

这是官方的安卓系统


由于在我的本机应用程序OGLES3.1中使用了功能,我无法将目标SDK级别从21降级,因此我别无选择,只能将最小SDK级别更新为21。

检查logcat以获取来自动态链接器的消息。@fadden没有任何链接器消息。是否存在可提升到的链接器日志记录级别以及如何提升?错误消息由dlerror返回,而不是直接写入日志。您在Java应用程序中看到了它,因为VM记录了故障。对不起,我刚才让你检查日志时忘了这一部分。