一种可能的解决方法是将库包含在apk中(参见Update your app).
您尝试链接的库可能依赖于其他非ndk库.在这种情况下,您也应该包括这些库.
就我而言,我一直在开发一个使用OpenCL的应用程序.在ARM设备上,具有正确符号的库是libGLES_mali.so.该应用程序适用于Android< 7.0但它在Android> = 7.0的设备上崩溃.我在logcat中可以读到的错误是:
java.lang.UnsatisfiedLinkError: dlopen failed: library "android.hardware.graphics.common@1.0.so" not found
使用命令
readelf -d libGLES_mali.so | grep NEEDED
我可以读取libGLES_mali.so所依赖的库的名称,并且可以预见android.hardware.graphics.common@1.0.so就是其中之一:
0x0000000000000001 (NEEDED) Shared library: [android.hardware.graphics.common@1.0.so]
0x0000000000000001 (NEEDED) Shared library: [liblog.so]
0x0000000000000001 (NEEDED) Shared library: [libnativewindow.so]
0x0000000000000001 (NEEDED) Shared library: [libz.so]
0x0000000000000001 (NEEDED) Shared library: [libc++.so]
0x0000000000000001 (NEEDED) Shared library: [libutil