ncnn
ncnn copied to clipboard
Android更新20220701与20220721两个大版本库后编译的JNI库在应用加载时报错
error log | 日志或报错信息
E/art ( 9849): dlopen("/data/app/packagename-1/lib/arm/libname.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "_ZNSt13runtime_errorD1Ev" referenced by "libname.so"...
D/AndroidRuntime( 9849): Shutting down VM
E/AndroidRuntime( 9849): FATAL EXCEPTION: main
E/AndroidRuntime( 9849): Process: packagename, PID: 9849
E/AndroidRuntime( 9849): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt13runtime_errorD1Ev" referenced by "libname.so"...
context | 编译/运行环境
ncnn version: 20220701 20220721 Android Studio version: 3.5.2 gradle version: 3.2.1 Cmake version: 3.10.2.4988404 Ndk version: 21.1.6352462 Android Os Version:5.1.1(22)
how to reproduce | 复现步骤 | 再現方法
1.替换安卓应用工程内ncnn旧版本20220420库为20220701或20220721版本库 2.清理后重新编译 3.运行应用并加载JNI库 4.应用闪退
more | 其他
旧版本20220420库并无此问题,应是这两个版本更新出来的问题,麻烦帮忙看看是什么原因。
另外,我将相同的应用安装到Android 7.1/8.1/10.0的设备上运行时,报了与5.1不一样的错误日志:
5.1:
E/art ( 9849): dlopen("/data/app/packagename-1/lib/arm/libname.so", RTLD_LAZY) failed: dlopen failed: cannot locate symbol "_ZNSt13runtime_errorD1Ev" referenced by "libname.so"...
D/AndroidRuntime( 9849): Shutting down VM
E/AndroidRuntime( 9849): FATAL EXCEPTION: main
E/AndroidRuntime( 9849): Process: packagename, PID: 9849
E/AndroidRuntime( 9849): java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt13runtime_errorD1Ev" referenced by "libname.so"...
E/AndroidRuntime( 9849): at java.lang.Runtime.loadLibrary(Runtime.java:371)
E/AndroidRuntime( 9849): at java.lang.System.loadLibrary(System.java:988)
7.1:
E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt6__ndk112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev" referenced by "/data/app/packagename-1/lib/arm/libname.so"...
E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:989)
E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1562)
8.1:
E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt6__ndk112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev" referenced by "/data/app/packagename-Oq_LNOZnxMybwqTPrqre4Q==/lib/arm/libname.so"...
E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1016)
E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1657)
10.0
E AndroidRuntime: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol "_ZNSt6__ndk112basic_stringIwNS_11char_traitsIwEENS_9allocatorIwEEED2Ev" referenced by "/data/app/packagename-5ILRE-ygDGIyHffrNKwX0A==/lib/arm/libname.so"...
E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1071)
E AndroidRuntime: at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
E AndroidRuntime: at java.lang.System.loadLibrary(System.java:1667)
这两个版本使用 ndk-r23c 编译,之前是 ndk-r21d
目前项目工程不支持ndk23版本,编译不通过,我更新ncnn源码自己用低版本ndk编译了库来用,现在可以了