定位 SDK Android Q 导致无法完成会话:INSTALL_FAILED_INVALID_APK:无法提取本机库,res=-2

Targeting SDK Android Q results in Failed to finalize session : INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2

一旦我将目标 api 切换为 'Q',我就无法在 Android Q Emulator 上安装 APK。我收到错误:

Failed to finalize session : INSTALL_FAILED_INVALID_APK: Failed to extract native libraries, res=-2

Android Studio (v3.3.2) 建议我先卸载apk。我尝试卸载 apk,但仍然出现相同的错误。如果我将目标 api 降级到 28.

,应用程序可以正常工作

发生这种情况是因为 zipalign 存在问题,请参阅 - https://issuetracker.google.com/issues/37045367。您需要在 AndroidManifest.xml

上的应用程序标签中设置 extractNativeLibs
<application
        android:allowBackup="false"
        android:label="@string/app_name"
        android:extractNativeLibs="true"
...
>

如果您使用 adb 安装 apk,请尝试添加 -t 标志

adb install -t <path-to-apk>

如果您想要 android:extractNativeLibs="false",请使用带 -p 键的 zipalign 以便在 ZIP 内对 ELF 进行分页对齐:

zipalign -p 4 app.apk app-aligned.apk

我在 AWS Device Farm 中也遇到了这个错误。结果他们安装了 sdk 版本 21,我的 minSdkVersion 设置为 24。将我的 minSdkVersion 降低到 21 解决了这个问题。尝试在测试设备上安装 apk 时返回此错误。希望这有助于其他人在 android.

上设置设备农场