一旦我将目标 api 切换到“Q”,我就无法在 Android Q Emulator 上安装 APK。我得到错误:
无法完成会话:INSTALL_FAILED_INVALID_APK:无法提取本机库,res=-2
Android Studio (v3.3.2) 建议我先卸载 apk。我尝试卸载apk,但仍然遇到相同的错误。如果我将目标 api 降级到 28,则应用程序工作。
一旦我将目标 api 切换到“Q”,我就无法在 Android Q Emulator 上安装 APK。我得到错误:
无法完成会话:INSTALL_FAILED_INVALID_APK:无法提取本机库,res=-2
Android Studio (v3.3.2) 建议我先卸载 apk。我尝试卸载apk,但仍然遇到相同的错误。如果我将目标 api 降级到 28,则应用程序工作。
发生这种情况是因为 zipalign 存在问题,请参阅 - https://issuetracker.google.com/issues/37045367。您需要extractNativeLibs
在 AndroidManifest.xml 上的 Application Tag 中设置
<application
android:allowBackup="false"
android:label="@string/app_name"
android:extractNativeLibs="true"
...
>
如果您正在使用adb
安装 apk 尝试添加-t
标志
adb install -t <path-to-apk>
如果需要android:extractNativeLibs="false"
,请使用 zipalign with -p
key 以在 ZIP 中对 ELF 进行页面对齐:
zipalign -p 4 app.apk app-aligned.apk
我在 AWS Device Farm 中也遇到了这个错误。原来他们安装了 sdk 版本 21,并且我minSdkVersion
的设置为 24。将我的版本降低minSdkVersion
到 21 解决了这个问题。尝试在测试设备上安装 apk 时返回此错误。希望这对其他在 android 上设置设备场的人有所帮助。