无法上传目标SDK版本为30的已签名APK

32

我使用目标SDK版本为30(Android 11)生成了已签名的APK文件。虽然该版本尚未正式发布,但我的应用程序已准备好适应新变化。我试图将其上传到Google Play控制台,但面临以下错误:

您上传了一个具有无效签名的APK文件(详见签名)。apksigner的错误:ERROR: MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET:目标SDK版本30需要最低签名方案v2;APK未使用此或更高版本的签名方案进行签名。

我尝试了以下方法:

  1. 我再次确认在生成APK文件时选择了v2(完整APK签名)。
  2. 我尝试使用apksigner手动签名APK文件。

没有什么方法起作用。我正在想这个问题是否是因为该版本尚未正式发布而导致的。但是,根据文档,我理解它应该可以工作。


1
你解决了这个问题吗?如果是,请发布答案,因为我也遇到了同样的问题。 - bhaskar
4个回答

80

对于那些使用命令行构建 Cordova 项目的人来说,简短的回答是:您需要从 jarsigner 切换到 apksigner 并相应地设置命令。注意:您需要在运行 apksigner 之前运行 zipalign,这与我们以前使用 jarsigner 的方式不同。以下是一个示例:

cordova build android --release

zipalign -f 4 platforms/android/app/build/outputs/apk/release/myapp-release-unsigned.apk myapp.apk

apksigner sign --ks my-ks.keystore --ks-pass file:my-passfile.txt --v1-signing-enabled true --v2-signing-enabled true myapp.apk

... upload apk to store or whatever ... 

3
谢谢!这解决了 Cordova 的问题 =) - MaxXx1313
1
这是 Cordova 的最佳解决方案。对我来说效果很好。谢谢! - Jose Seie

12

在生成apk时,选择V1和V2(完整Apk签名)。这解决了我类似于你的问题。


10
怎么做呢?你能帮忙翻译一下吗?我正在使用Cordova CLI生成APK,用的是命令 cordova build android --release - Utpal - Ur Best Pal
@Utpal-UrBestPal 请查看我下面添加的答案 https://dev59.com/IlIG5IYBdhLWcg3wtj22#69473649 - sherb

7

生成应用包(App Bundle)而不是APK。

我的应用以API 30为目标,发布应用包没有问题。


1
这一定是正确的答案,容易多了。 - Diego Desenvolvedor
救命稻草,谢谢! - Reut Schremer

4

我曾经在解决这个问题时遇到了困难。以下内容帮助我完全解决了这个问题。

  1. 在config.xml文件中(即Cordova项目的根目录)添加以下两行:
<preference name="android-minSdkVersion" value="30"/>

<preference name="android-targetSdkVersion" value="30"/>
  1. 在AndroidStudio中导入您的项目
  2. 在“Build”下点击“生成签名捆绑包/APK”

enter image description here

  1. 选择“Android 应用捆绑包”

enter image description here

  1. 更新密钥库文件/密码以及所有请求的详细信息(请选中导出加密密钥的选项,因为您需要将其上传到Play商店)

enter image description here

  1. 选择“发布”

enter image description here

  1. 在上传应用程序捆绑包之前,您需要上传证书(步骤4中下载的证书)

enter image description here

  1. (可选步骤)您还将看到一个自动生成的应用签名密钥证书,如果需要可以下载它

  2. 上传应用捆绑包,现在可以将应用发布到Play商店。


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