针对SDK Android Q进行开发,结果出现“无法完成会话:INSTALL_FAILED_INVALID_APK:提取本地库失败,res=-2”的错误。

26

当我把目标 API 切换到“Q”时,我无法在 Android Q 模拟器上安装 APK。出现以下错误:

无法完成会话:INSTALL_FAILED_INVALID_APK:提取本地库失败,res=-2

Android Studio(v3.3.2)建议我先卸载 APK。我尝试了卸载 APK,但仍然遇到相同的错误。如果将目标 API 降级到28,则应用程序可正常工作。


1
在真实设备上(运行 Q 版本)出现了相同的问题。 - Francis
我的Pixel 2上出现了同样的错误。 - Mateen Chaudhry
3个回答

38
这是由于zipalign问题导致的,请参见-https://issuetracker.google.com/issues/37045367。您需要在AndroidManifest.xml上的Application标签中设置extractNativeLibs
<application
        android:allowBackup="false"
        android:label="@string/app_name"
        android:extractNativeLibs="true"
...
>

如果您正在使用adb安装apk,请尝试添加-t标志。
adb install -t <path-to-apk>

1
尝试过了,没有帮助。 - user1159819
1
adb install -t apk-free.apk 正在执行流式安装 adb:无法安装apk-free.apk:失败[INSTALL_FAILED_INVALID_APK:提取本地库失败,res=-2] - user1159819
尝试将以下内容添加到 app/build.gradle 文件中的 defaultConfig 中packagingOptions{ doNotStrip "*/armeabi/*.so" doNotStrip "*/armeabi-v7a/*.so" doNotStrip "*/x86/*.so" } - ranjk89
如果我的回答有帮助到您,我会很感激您将其接受为解决方案! - ranjk89
你值得拥有皇冠!太棒了,确实我正在使用zipalign,这就是问题所在。 - Gary Klasen
显示剩余5条评论

10
如果你想使用 android:extractNativeLibs="false",请使用 zipalign 并加上 -p 参数来对 ZIP 文件中的 ELFs 进行页面对齐:
zipalign -p 4 app.apk app-aligned.apk

1
我也在AWS设备农场中遇到了这个错误。事实证明,他们安装了sdk版本21,而我的minSdkVersion设置为24。将我的minSdkVersion降低到21可以解决此问题。尝试在测试设备上安装apk时会返回此错误。希望这能帮助其他任何在Android上设置设备农场的人。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接