微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么Android SDK 30会生成无效的APK文件?

如何解决为什么Android SDK 30会生成无效的APK文件?

我使用全新安装的 Android Studio 4.1.2 在新 PC 上构建了一个新的 Java Android 应用程序,并且能够通过调试器在我的手机上正常运行它。但是,当我构建一个签名的 APK 文件(使用我的普通密钥存储文件)并将其复制到我的手机时,我无法像往常一样使用 Google Files 应用程序将它安装在手机上。几个小时后,我最终发现,如果我更改了 build.gradle 文件,使 compileSdkVersion、buildToolsversion 和 targetSdkVersion 都是 29 而不是 30,那么 APK 安装正常。即使我的手机运行的是 Android 11 并且我的 build.gradle 中的 minSdkVersion 是 19 (Android 4.1)。

该应用程序相当简单,由两个 java 文件组成:一个主活动和一个扩展开源 NanoHTTPD 类的服务器类。 NanoHTTPD jar 文件位于应用程序的 libs 文件夹中。该应用程序仅需要其清单中的以下权限:android.permission.INTERNET、android.permission.ACCESS_WIFI_STATE、android.permission.ACCESS_NETWORK_STATE

我如何确定这是我做错了什么、是 Google SDK 30 版的错误还是 Android Studio 中的错误以便我可以将其报告给合适的人?谢谢。

解决方法

好的,现在解决了。感谢 Lev M 建议使用 adb 尝试安装该应用程序。这立即显示了问题所在!

问题是,当我构建签名的 APK 文件时,我只勾选了“V1(Jar 签名)”选项,但我还需要勾选“V2(完整 APK 签名)”。看起来您需要为 SDK 30 进行 V2 签名。

此处确认:https://developer.android.com/about/versions/11/behavior-changes-11

,

要找出未安装 APK 的原因,请使用命令行 adb 工具进行安装:

adb install myapp.apk

如果安装失败,adb会打印错误信息说明原因。

无法从文件浏览器安装的一个可能原因是您的应用的调试版本仍安装在您的手机上。

签名版本将具有相同的包名称但不同的签名,因此操作系统不会安装它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。