我发布了一些应用程序,但最终需要进行更新,大部分时间都很好,但很快就会...更新我的应用程序时出现错误,说明指纹证书错误。答案都指向需要保存和重用原始密钥库或您是SOL。只需要解释几件事:
我想弄清楚的是,确保每当我弄乱我的应用程序以便将来开发它时,最好的做法是什么,如何防止更改这个该死的密钥库?是否每当我更新cordova?更新平台?等等。我觉得我的应用程序有一个滴答作响的定时炸弹,最终阻止它在Play商店上更新。我正在使用Cordova btw。
在询问前大约一天半做了一些研究,所以任何帮助都表示赞赏。
答案 0 :(得分:0)
这是我收集的内容......
第一步 - 创建一个.KEYSTORE文件:
导航到C:\ Program Files \ Java \ jre7 \ bin(通常是这个),打开命令窗口并输入:
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
第二步 - 创建一份无关的APP版本 在项目文件夹中打开的命令窗口中构建应用程序的未签名版本:
cordova build android --release
第三步 - 与您的SASTED KEYSTORE签署相关信息 运行下面的第一个命令将显示密钥库中的所有条目,在输出中查找“别名”,然后在第二个命令中使用该值。在CMD:
keytool -list -v -keystore /path/to/your.keystore
jarsigner -sigalg SHA1withRSA -digestalg SHA1 -keystore /path/to/your.keystore android-release-unsigned.apk alias_name
第四步 - 检查你的工作: 在添加你的应用程序之前,让我们确保一切都已正确更新,否则你可能会再次遇到这个烂摊子。
首先,解压缩APK并解压缩文件/META-INF/ALIAS_NA.RSA(此文件也可能是CERT.RSA或其他文件,但应该只有一个.RSA文件)。
然后发出以下命令:
keytool -printcert -file ALIAS_NA.RSA
您将获得以下证书指纹:
MD5: B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
SHA1: 16:59:E7:E3:0C:AA:7A:0D:F2:0D:05:20:12:A8:85:0B:32:C5:4F:68
Signature algorithm name: SHA1withRSA
然后再次使用keytool打印出签名密钥库的所有别名:
keytool -list -keystore my-signing-key.keystore
您将获得别名列表及其证书指纹:
android_key, Jan 23, 2010, PrivateKeyEntry,
Certificate fingerprint (MD5): B3:4F:BE:07:AA:78:24:DC:CA:92:36:FF:AE:8C:17:DB
我们现在可以确定已使用此密钥库签名的apk,并使用别名'android_key'。
Keytool是Java的一部分,因此请确保您的PATH中包含Java安装目录。 把它存放在你会记住的地方并使用你记忆中的信息(或安全地存储这些信息,想到纹身)。
第五步 - 为您的APP添加邮件:导航到Android SDK文件夹并搜索zipalign,使用最新版本。然后:
zipalign -f -v 4 "path/to/unsigned-apk" "path/you/want/signed/apk"
很多这样的信息都是从遍布堆栈的流程中找到的,然后在这里编译给我自己和其他人以供将来参考。