Android so 方法找不到问题定位
Contents
前言
相信在 Android 中进行 jni 开发的基本都碰到过如下错误
java.lang.UnsatisfiedLinkError: No implementation for void xxx
定位
上面这个错误网上有不少资料,大概就是 Java 对应的 C++ 方法找不到。
Java 的函数很好找,但是 C++ 编译成 so 之后,对应的函数还在不在,有没有改变就不好说了。
其实可以通过查看 so 的符号表来看 C++ 对应的函数是否正确。
sdk/ndk/28.0.13004108/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -s xxx.so
如果符号表很多函数可以通过 grep 来过滤。
sdk/ndk/28.0.13004108/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf -s xxx.so |grep Java_xxx