我的应用使用Zoom SDK。我在使用x86系统映像(具体是在几台设备上分别是23、24、25)在Android模拟器上安装时遇到了问题,出现错误:
INSTALL_FAILED_NO_MATCHING_ABIS
通过将以下内容放在我的build.gradle
中,我能够使用另一个StackOverflow帖子中的建议来解决此问题。
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a'
universalApk true
}
}
但是,现在在我的app/builds/outputs/apk
文件夹中,正在生成多个apk,即:
app-arm64-v8a-debug.apk
app-armeabi-debug.apk
app-armeabi-v7a-debug.apk
app-mips-debug.apk
app-mips64-debug.apk
app-universal-debug.apk
app-x86-debug.apk
app-x86_64-debug.apk
编辑:创建发行版也将创建这些相同的版本,减去'debug'名称,改为使用'release'。根据文档,
一个通用APK包含单个APK中所有ABI的代码和资源。
但是,当我尝试安装app-universal.apk
时,失败并出现与以前相同的ABIS错误。我还尝试生成发布版本,但由于相同的错误而失败。
但是,在仿真器上安装app-x86-debug.apk
效果很好。因此,在我看来,通用apk上的文档似乎与实际行为不匹配。
有人可以向我解释如何生成可同时在android设备和模拟器上运行的apk吗?如果没有,为什么我没有得到预期的行为形式app-universal.apk
?
您应该在相应的文件夹中添加库。根据要添加的数量,您的库下应有三个或两个文件夹。
arm64-v8a
armeabi-v7a
x86
如果您没有x86并构建通用应用程序,则将不会安装该应用程序,因为此lib将在最终软件包中丢失。
app-x86-debug.apk将安装,因为它没有任何本地库版本。但是在安装app-x86-debug.apk之后,您的应用将在模拟器上崩溃。