标签: java android linux android-ndk ndk-build
首先,我知道在一个应用程序中不允许混合使用.so文件的不同体系结构(部分仅使用32,另一部分仅使用64)
所以,我尝试打开一个新进程来动态加载64位和32位so文件,但是System.load()抛出错误并且应用程序崩溃了!如何通过多个流程解决这个问题?或者还有其他方法可以解决这个问题吗?
System.load()
答案 0 :(得分:1)
好吧,我确实试过了。从表面上看,这样做:以通常的方式使用 armeabi 共享库',并使用运行时从Java运行 arm64-v8a 可执行文件.exec()或来自C system()。
您可以将可执行文件放入资源中并手动解压缩,也可以cheat重命名,以便它以lib开头,以.so结尾;现在您可以将此文件放在 jniLibs / armeabi 目录中。
lib
.so
相反的方式也适用:从64位应用程序启动32位可执行文件(不要忘记-fPIE)。
-fPIE
确保库搜索路径不会发生冲突。