
IM即时通讯
安全可靠、全球互通

实时音视频
流畅稳定、省钱省力
回答:
可能的原因是:
在安装APK的时候,系统会按照Build.SUPPORTED_ABIS去查找APK的lib目录下的native库的目录(现有的ABI:armeabi, armeabi-v7a,arm64-v8a, x86, x86_64, mips64, mips)。 如果在app中有兼容64-bit的目录但是又缺少库文件的话,并不会使用其他ABI目录下的库文件替换所缺少的库文件进行安装,这些库不混合使用,也就是说需要为每个架构提供对应的库文件。 Android在加载native库的时候有回退(fallback)机制,在64位系统上如果app并不存在arm64-v8a的目录,则会尝试寻找armeabi-v7a下面的库进行加载,一般来说是向下兼容的。
出现该问题的解决方案如下:
方法1: 在构建应用程序的时候,在工程(project)里删除所有arm64-v8a下面的库以及该目录;在生成app后,确认apk的包内lib下没有arm64-v8a的目录。
方法2: 在gradle构建文件中设置abiFilters,只打包32位架构的库:
android {
…
defaultConfig {
…
ndk { //选择要添加的对应 cpu 类型的 .so 库。 abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a' // 还可以添加 'x86', 'x86_64', 'mips', 'mips64' }
}
}