我正在使用JNI c ++文件以加密格式存储字符串。
以下是我的CMakelists.txt:
npx distize --no-files -o {targetpath}
来自我名为CallStateService.java的类:
cmake_minimum_required(VERSION 3.4.1)
add_library ( native-lib SHARED native-lib.cpp boot-lib.cpp call-lib.cpp state-lib.cpp cap-
lib.cpp manage-lib.cpp on-lib.cpp service-lib.cpp network-lib.cpp )
find_library ( log-lib log )
target_link_libraries( native-lib ${log-lib} )
我正在加载static
{
System.loadLibrary("state-lib");
}
库,并且加载得很好。项目清理得很好。项目重建良好。
通过模拟器运行它时,它会崩溃:
state-lib
我的关注点是:
02-10 15:12:11.848 3433-3433/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.mycompany.app.myapp, PID: 3433
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.mycompany.app.myapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.mycompany.app.myapp-1/lib/x86, /data/app/com.mycompany.app.myapp-1/base.apk!/lib/x86, /vendor/lib, /system/lib]]] couldn't find "libstate-lib.so"
at java.lang.Runtime.loadLibrary(Runtime.java:367)
at java.lang.System.loadLibrary(System.java:1076)
at com.mycompany.app.myapp.CallStateService.<clinit>(CallStateService.java:37)
,其中显示logcat
不是项目的一部分,我在名为couldn't find "libstate-lib.so"
的项目中也没有这样的文件libstate-lib.cpp.
,然后在运行时为什么要寻找com.mycompany.app.myapp
com.mycompany.app.myapp-1/
中寻找nativeLibraryDirectories
而不是nativeLibraryDirectories=[/data/app/com.mycompany.app.myapp-1/lib/x86
到目前为止,我已经尝试过: -多次更改CMakelists.txt文件的位置并进行了更改 链接的.cpp文件的路径,然后进行清理,构建和重建。 -无效的缓存和重新启动的Studio。 -更改了build.gradle中的应用程序版本 -清除了模拟器中的应用程序数据,并多次卸载并重新设置了模拟器,然后再次尝试对其运行
我希望有人能帮助我。预先谢谢您,我们将不胜感激。