如何在应用程序中混合使用 32 位和 64 位 .so 文件

How to mix 32 and 64-bit .so files in an app

首先,我知道在一个app中不允许混合使用不同架构的.so文件(一部分只用32位,另一部分只用64位)

所以,我尝试打开一个新的进程来动态加载64位和32位的so文件,但是System.load()抛出错误并且应用程序崩溃了!如何通过多进程解决这个问题?或者还有其他方法可以解决吗?

好吧,我试过了。从表面上看,这是可行的:使用 armeabi 共享库 'in the usual way' 和 运行 一个 arm64-v8a 可执行文件来自 Java Runtime.exec() 或来自 C system().

你可以把可执行文件放到assets里面手动解压,也可以在cheat and rename it so that it starts with lib and ends with .so; now you can put this file in the /armeabi目录下

相反的方法也适用:从 64 位应用程序启动 32 位可执行文件(不要忘记 -fPIE)。

确保库搜索路径不冲突。