如何在应用程序中混合使用 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
)。
确保库搜索路径不冲突。
首先,我知道在一个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
相反的方法也适用:从 64 位应用程序启动 32 位可执行文件(不要忘记 -fPIE
)。
确保库搜索路径不冲突。