ncnn icon indicating copy to clipboard operation
ncnn copied to clipboard

Android更新20220701与20220721两个大版本库后编译的JNI库在应用加载时报错

Open bestpower opened this issue 3 years ago • 3 comments

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库并无此问题,应是这两个版本更新出来的问题,麻烦帮忙看看是什么原因。

bestpower avatar Jul 21 '22 11:07 bestpower

另外,我将相同的应用安装到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)

bestpower avatar Jul 21 '22 12:07 bestpower

这两个版本使用 ndk-r23c 编译,之前是 ndk-r21d

nihui avatar Jul 21 '22 13:07 nihui

目前项目工程不支持ndk23版本,编译不通过,我更新ncnn源码自己用低版本ndk编译了库来用,现在可以了

bestpower avatar Jul 22 '22 06:07 bestpower