首先,我知道在一个app中不允许混合使用不同架构的.so文件(一部分只用32位,另一部分只用64位)
于是,我尝试开启一个新进程来动态加载64位和32位so文件,但是System.load()
抛出错误,app崩溃了!如何通过多进程解决这个问题?还是有其他方法可以解决?
最佳答案
好吧,我试过了。从表面上看,这是可行的:“以通常的方式”使用 armeabi 共享库,并使用 Runtime.exec() 或从 Java 运行 arm64-v8a 可执行文件来自 C 与 system() .
您可以将可执行文件放在 Assets 中并手动解压,或者您可以cheat并重命名它,使其以 lib
开头并以 .so
结尾;现在你可以把这个文件放在 jniLibs 中/armeabi 目录。
相反的方法也适用:从 64 位应用程序启动 32 位可执行文件(不要忘记 -fPIE
)。
确保库搜索路径不冲突。
关于java - 如何在应用程序中混合使用 32 位和 64 位 .so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45353090/