apk包在安装的时候系统会把包中与自己的abi对应的lib目录中的so库文件拷贝到system分区中,32位机器中只有一个目录/system/lib64位机器中有两个目录/system/lib和/system/lib64,app启动进行链接时64位机器中会先到/system/lib64目录中去找,如果没有找到再到/system/lib目录中去找如果你把32位嘚so库拷贝到了lib64目录中,会导致链接失败同样,64位的so库被拷贝到lib目录中也会导致失败所以so库要和目录一一对应。
如果我们的工程的so库目錄中没有arm64—v8a目录默认情况下,Android Studio会在apk中自动创建一个空的arm64—v8a-v8a文件夹并根据一些规则把某些so库(具体是怎样的规则,我也不知道)拷贝到這个目录中这样就导致,在64位机器上在lib64目录下找到的so库并不是正确的so库文件从而出现了上面的错误
解决方案也很简单,在build.gradle中加上这呴话的意思大概就是,告诉程序加载如下的so文件
这时会报错因为gradle的配置中,并不知道是否要做操作系统的兼容这时只要在gradle.properties文件中加上
說明:不去配置64位的,开启兼容程序找不到64位arm64—v8a-v8a文件夹,程序会自动加载32位的so文件此时不会报错,成功运行