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

时间:2015-09-09 13:00:00

标签: android android-ndk native-activity

我是一个原生的Android应用程序(NativeActivity,没有java代码,只有libMyApp.so本机库)

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

对于5.0.1和5.1.1版本,从

成功加载.so lib
  • /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个库链接。

为什么无法加载lib,我缺少什么?

为什么旧的Android版本无法从/data/data/com.example.myapp/lib/加载?!

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

1 个答案:

答案 0 :(得分:0)

你有没有像这样在你的班级加载你的图书馆?

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