需求:我的app有两个功能需要用so库:录音和编辑pdf,当app运行在32位设备上时只能都用32位so,运行在64位设备时,我希望录音继续用32位so,编辑pdf用64位so。原因在此不解释了
实际结果:我尝试先把32位so放到jnilib,把64位so放到assets,然后开新进程 system.load动态拷贝加载64位so,报错!android不支持在一个app混合使用so,要么全部只用32位,要么只用64位so。因为在安装这个app的时候就已经确定,这个app是运行在32 or 64位的虚拟机。
我在stackoverflow提了一个问题,有个外国大牛回答了此问题,但是我不太明白他说的:“ and run a arm64-v8a executable from Java with Runtime.exec() or from C with system().” 是啥意思,大家帮我看下
我觉得他的意思是不用JNI,直接用
exec() / system()
执行so文件,也就没有JNI load lib时的问题。