我正在开发一款 Android 应用,该应用于 2024 年 1 月在 Google Play Console 上发布。 我使用了 Windows 密钥库“mafirstkeystoreformyapp.keystore”。
因为我想升级我的笔记本电脑,所以我买了一台新的,从我的 GitHub 存储库取回我的项目,进行测试:一切正常。
所以我格式化了我的第一台笔记本电脑。
但我意识到,当我想为 Google Play Console 创建新版本时,我的应用程序签名/足迹无法识别:
您的 Android App Bundle 是使用错误密钥签名的。确保您的应用程序包已使用正确的密钥进行签名,然后重试。导入的应用程序包应使用与“足迹”关联的证书进行签名 SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:B2 ,但使用的证书与足迹相关联 SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:A5
所以我联系了 Google Play Console 支持,这让我受益匪浅:
从我的 MAUI 项目创建 JKS 文件:
keytool -genkeypair -alias upload -keyalg RSA -keysize 2048 -validity 9125 -keystore keystore.jks
将该密钥的证书导出为 PEM 格式
keytool -export -rfc -alias upload -file upload_certificate.pem -keystore keystore.jks
从我的帐户更新证书(需要 2 天)
但是这个.jks文件对我来说没有任何意义:windows keystore被识别为.keystore文件,所以它没有用
有没有办法将这个 .jks 转换为 .keystore ? 或者从现有的“导入密钥证书”轻松重新创建有效的密钥库?
关于第二个问题(与第一个问题相关)有很多 stackoverflow,但是,即使答案似乎是否定的,但看起来目前的情况已经发生了变化。 Android:我丢失了 Android 密钥存储,我该怎么办? 我丢失了 .keystore 文件? 从私钥和证书重新创建密钥库文件
我发现了这个:.NET MAUI 应用程序的 Android 包签名 它非常接近,但用户问题与他的“应用程序签名密钥有关,而我必须使用应用程序导入密钥(因此无法完成他的解决步骤)
我尝试过:
从 Visual Studio 创建一个新的 .keystore,从 Play Console 获取 .der 密钥来添加它:KO(证书已添加,但在分发期间未使用)
创建一个新的密钥存储,删除默认密钥,从 Play Console 导入 .der 密钥来添加它:KO(密钥存储似乎已“损坏”,因此 Visual Studio 不允许我分发该应用程序)
从 Play Console 导入 .der 密钥并从中创建密钥库:KO(密钥库似乎已“损坏”,因此 Visual Studio 不允许我分发该应用程序)
(在此之前执行 3)从专用 Windows 对话框导入新的密钥库:KO(出现 java 错误)
à System.Runtime.InteropServices.Marshal.SecureStringToGlobalAllocUnicode(SecureString s)
à Xamarin.VisualStudio.SecureStringExtensions.ToUnsecureString(SecureString input) dans D:\a\_work\1\s\src\Core\VisualStudio\Extensions\SecureStringExtensions.cs:ligne 16
à Xamarin.VisualStudio.Publishing.Presentation.ViewModels.AndroidImportKeyViewModel.<ImportAsync>d__49.MoveNext() dans D:\a\_work\1\s\src\Core\VisualStudio.Publishing\Presentation\ViewModels\AndroidImportKeyViewModel.cs:ligne 138
我使用 Keytool 来更新/创建密钥库:
keytool -import -alias vilolaboratory -file upload_cert.der -keystore vilolboratory.keystore
好吧,经过多次尝试和研究,如何将 .JKS 转换为“keystore”格式?帮助我发布了新版本:我能够为我当前的应用程序恢复可用的 .keystore 文件。
这里是主要步骤的总结:
要求重新初始化密钥导入证书 错误:'keytool' 未被识别为内部或外部命令、可操作程序或批处理文件)
上传.pem证书文件到玩控,等待两天。
您将需要再次使用keytool来转换JKS文件。 感谢@Geo367 :
keytool -importkeystore -srckeystore {generatedfile}.jks -srcstoretype JKS -destkeystore {TemporaryName}.p12 -deststoretype PKCS12
keytool -importkeystore -srckeystore {TemporaryName}.p12 -srcstoretype PKCS12 -destkeystore {DefinitiveName}.keystore -deststoretype JKS
但是生成的文件将无法被 Visual Studio 正确识别。 所以继续:
keytool -importkeystore -srckeystore {DefinitiveName}.keystore -destkeystore {DefinitiveName} -deststoretype pkcs12
它将应用最后一个密钥库格式(不能更具体:我根本不掌握这个主题)
将密钥库文件移动到 C:\Users{USER}\AppData\Local\Xamarin\Mono for Android\Keystore
然后,在 Visual Studio 中,进入“显示/显示档案”并按“分发...”
通常,会出现一个“上传”密钥库:这就是你的英雄。
/!\ 就我而言,我需要删除最后创建的存档并重新发布,以便正确刷新数据并能够查看最后一个密钥库。