android-studio - 从 IntelliJ 迁移到 Android Studio 后无法签署 APK(或密码问题?)
问题描述
在试用了 IntelliJ 的 Android 插件几个月后,我最近切换回了 Android Studio。然后我尝试签署一个应用程序的 APK,该应用程序目前在 Play 商店中进行 beta 测试,但签名与 Dev Play 控制台上以前版本的签名不匹配。我仔细检查了一下,我确定我使用的是与以前相同的密钥库(和相同的密钥)。
现在我有两种可能性:
• 将 IntelliJ 迁移到 Android 时出现代码签名问题?
• 我的密钥库密码错误。但是,为什么它会成功构建 APK?
我可以排除这两个方向中的任何一个吗?
它在 Google 帮助中写道,如果密钥库丢失(不是这种情况,但可能是密码),需要在 Play 商店中使用新的包名称重新创建一个全新的应用程序。
真的没有别的办法了吗?
PS:我过去下载了一些用于apk签名的证书,但我不知道如何在Android Studio中使用它们而不是jks文件。
编辑
我从商店收到的错误消息是:
You uploaded an APK that is not signed with the upload certificate.
You must use the same certificate. The upload certificate has fingerprint:
[ SHA1: XXX ]
and the certificate used to sign the APK you uploaded have
fingerprint:
[ SHA1: YYY ]
然而,当我运行以下命令时:
keytool -list -v -keystore "/Path/upload_keystore.jks"
-alias "upload_key" -storepass ***** -keypass ****
我知道 SHA1 实际上是XXX(而不是YYY)。所以应该是对的。另外,奇怪的事情是:无论我使用什么密码,我都会得到相同的 SHA1,而且它是正确的!
但我也收到以下消息:
Warning:
The JKS keystore uses a proprietary format. It is recommended to
migrate to PKCS12 which is an industry standard format using "keytool
-importkeystore -srckeystore /Path/upload_keystore.jks -
destkeystore /Path/upload_keystore.jks -deststoretype pkcs12".
这很奇怪,因为它是由 Google 生成的。
解决方案
好的,我刚刚做了一个干净的构建,然后再次签名,它工作了。我猜第一次签名尝试是错误的,但它被缓存并阻止了其他签名尝试真正有效。
推荐阅读
- python - 无法从正在运行的事件循环中调用 asyncio.run()
- javascript - 使用 create-react-app 时如何在没有 webpack 依赖的情况下导入节点模块或 JavaScript 文件?
- javascript - Openlayer 5 - 查询样式颜色给出错误结果
- python - 这是 python 装饰器还是 python 属性?
- python - 在 python 的数据集中应用 k-Nearest Neighbors
- python - 根据其他两列熊猫的条件创建一个新列
- asp.net-core-mvc - 在 Partialview o ComponentView Asp.net core 2.2 中使用代码时,ActionLink 和 asp-action 在行表体内不起作用
- jquery - 制作一个可拖动的障碍物=除self之外的所有项目
- django - 以编程方式创建页面对象得到错误 ValidationError 路径和深度字段不能为空白/空
- php - 提交按钮在 Laravel 中什么都不做