今天更新一个库文件到项目上,编译是正常的,但是运行的时候报了这样一个错:
Caused by: java.lang.UnsatisfiedLinkError: dlopen failed: cannot locate symbol
"_ZTINSt6__ndk18ios_baseE" referenced by
"/data/app/com.tclhz.gallery.dev-jbo9-kJFY5CODTEnV86C3g==
/lib/arm64/libnative-lib.so"...
这个错是由于加载libnative-lib.so
这个库的时候找不到相应的符号,这就奇怪了,升级一下库就变成这样了,于是我打开这个库的aar文件,发现里面有两个so文件:
libnative-lib.so
libtensorflowlite.so
那么上面报错的符号_ZTINSt6__ndk18ios_baseE
应该是在libtensorflowlite.so
这个文件里面,可以使用readelf -s
查看符号:
4053: 00000000003b4478 16 OBJECT GLOBAL DEFAULT 17 _ZTINSt6__ndk18ios_baseE
查看的结果就是有这个符号,既然有这个符号,那么就到apk中去看一看是不是这个库没有被打包进去,果然,解开apk里面确实有libtensorflowlite.so
,但是大小不一样,用上面的方式查看符号表也没有找到对应的符号表,因此我断定项目里面可能还有哪个地方也使用到了这个库,在打包的时候&