【发布时间】:2015-12-05 11:07:22
【问题描述】:
我有一个原生 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 库
-
/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 库链接。
为什么无法加载库,我缺少什么?
为什么不从/data/data/com.example.myapp/lib/ 加载旧的android 版本?!
较旧的 android 版本是否有其他模块命名约定?
【问题讨论】:
-
检查 logcat 是否有来自动态链接器的消息。
-
@fadden 没有任何链接器消息。是否有可以提升到的链接器日志记录级别以及如何提升?
标签: android android-ndk native-activity