为 Play 商店签署 kivy 应用程序时出错

Posted

技术标签:

【中文标题】为 Play 商店签署 kivy 应用程序时出错【英文标题】:Error while signing an kivy app for the play store 【发布时间】:2021-05-05 08:43:12 【问题描述】:

我使用 buildozer android release 命令制作了一个发布 apk。然后我使用以下命令对我的 apk 进行签名和压缩。

生成密钥库文件 [之前] - keytool -genkey -v -keystore myapp.keystore -alias myalias -keyalg RSA -keysize 2048 -validity 10000

生成密钥库文件 [之后] - keytool -importkeystore -srckeystore myapp.keystore -destkeystore myapp.keystore -deststoretype pkcs12

签署apk - jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore myapp.keystore myapp-0.1-arm64-v8a-release-unsigned.apk myalias

zipalign apk - zipalign -v 4 myapp-0.1-arm64-v8a-release-unsigned.apk playstore-release.apk

完成所有操作后,Play 商店出现此错误 - 您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误:MIN_SIG_SCHEME_FOR_TARGET_SDK_NOT_MET:目标 SDK 版本 30 至少需要签名方案 v2; APK 未使用此签名方案或更高版本的签名方案进行签名

目标 max api 30 和 min api 21, sdk 30 used

我如何在 2021 年将我的 apk 上传到 Playstore

【问题讨论】:

【参考方案1】:

首先,您的项目必须能够在 .apk 处于调试和未签名模式的 android 上运行。

如果是这种情况,您可以阅读这些 2 个步骤。

首先,您必须签署您的应用程序,以确保您是唯一可以更新它的人(防止恶意算法插入)。

在您的 buildozer.spec 文件中更改此内容:

#App store要求我们有这个架构和最新的api可用(实际上是29个)

android.arch = arm64-v8a

android.api = 29

#每次你在应用商店更新你的apk,你必须把这个变量加1。默认是8211但是要注意,你必须从一开始就改变它(我从1开始):

android.numeric_version = 1


现在您的密钥已签名,进入终端并:

---- 满足以下变量----

project_path=~/MY/PATH

key_filename=mykeyfilename

key_alias=mykeyaliasname

password="turlututu"

---- 只做一次 ----

mkdir -p ~/keystores/

keytool -genkey -v -keystore ~/keystores/$key_filename.keystore -alias $key_alias -keyalg RSA -keysize 2048 -validity 10000

---- 打印警告并建议我们迁移到 PKCS12 所以我们这样做----

keytool -importkeystore -srckeystore ~/keystores/$key_filename.keystore -destkeystore ~/keystores/$key_filename.keystore -deststoretype pkcs12

---- 只做一次的部分结束----

export P4A_RELEASE_KEYSTORE=~/keystores/$key_filename.keystore export P4A_RELEASE_KEYSTORE_PASSWD=$password export P4A_RELEASE_KEYALIAS_PASSWD=$password export P4A_RELEASE_KEYALIAS=$key_alias cd $project_path buildozer -v android release

【讨论】:

我个人让 min/max api 变量注释了,因此您的错误可能来自此更改。 感谢您的回答,我会检查这个 完美完成这些步骤后 [max api not changed] play store 出现此错误 - 您上传的 APK 签名无效(了解有关签名的更多信息)。来自 apksigner 的错误:错误(Jar 签名者 CERT.RSA):JAR 签名 META-INF/CERT.SF 表示 APK 使用 APK 签名方案 v2 进行签名,但未找到此类签名。签名被剥夺?【参考方案2】:

(我暂时无法发表评论,所以我在这里写)。我不知道这个错误,我没有时间搜索抱歉。

小提示:here 他们谈论 Visual Studio 问题,也许是你的情况?

【讨论】:

以上是关于为 Play 商店签署 kivy 应用程序时出错的主要内容,如果未能解决你的问题,请参考以下文章

作为使用 Kivy 2.0 的初学者,我需要采取哪些步骤将我的项目(应用程序)编译到 Play 商店

尝试将 App Bundle 上传到 Play 商店时出错

引入新的 Google 政策后,在 Google Play 商店更新应用程序时出错

在谷歌Play商店更新时出错的应用程序引入新的谷歌政策后

如何使用 Google 签名密钥签署 apk 以上传到其他应用商店

使用 Google Play 上传密钥签署 APK