应用程序未安装在 Android 11 中,但适用于以前的版本

Pro*_*mer 9 android build apk build.gradle

我有一个包含两个包com.example.packagecom.other.package. 我在build.gradle中的配置如下:

android {
    compileSdkVersion 30
    defaultConfig {
        applicationId "com.example.package"
        minSdkVersion 18
        targetSdkVersion 30

Run Code Online (Sandbox Code Playgroud)

我构建了一个未签名的发布版本。然后我用它签名

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystore> <OUTPUT> <ALIAS>
Run Code Online (Sandbox Code Playgroud)

我从中获得的构建适用于除 Android 11 以外的所有版本。在 Android 11 上,当我安装我的应用程序时,出现以下错误:

adb: failed to install ginger-uk.apk: Failure [-124: Failed parse during installPackageLI: Targeting R+ (version 30 and above) requires the resources.arsc of installed APKs to be stored uncompressed and aligned on a 4-byte boundary]
Run Code Online (Sandbox Code Playgroud)

因此,我尝试使用 zip 对齐 APK 并进行安装,但随后在 Android 11 上出现以下错误:

App not installed error
Run Code Online (Sandbox Code Playgroud)

然后我尝试在基于某些 stackoverflow 解决方案签名之前先进行 zipalign,但在 Android 11 上出现以下错误:

adb: failed to install ginger-uk.apk: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package com.other.package]
Run Code Online (Sandbox Code Playgroud)

我的问题是有人成功签署了适用于 android 11 及以下版本的 APK?你是怎么做到的?

小智 16

这可能是相关的:Android 11 不再支持 APK 签名方案 v1。现在必须使用 APK Signature Scheme v2 或更高版本对 apk 进行签名。有关更多信息,请参阅此链接:https : //developer.android.com/about/versions/11/behavior-changes-11#minimum-signature-scheme


Pro*_*mer 6

我解决了这个问题,问题是resources.arscBAD使用之后jarsigner,所以我压缩对齐,然后用来apksigner签名。这解决了这个问题(至少对我来说)。

  • @AdarshMadrecha:这可能会有所帮助 - https://developer.android.com/studio/command-line/zipalign (2认同)