如何确保我的密钥库信息不会随我的cordova应用程序而变化

时间:2017-01-25 21:16:28

标签: android cordova keystore android-keystore

我发布了一些应用程序,但最终需要进行更新,大部分时间都很好,但很快就会...更新我的应用程序时出现错误,说明指纹证书错误。答案都指向需要保存和重用原始密钥库或您是SOL。只需要解释几件事:

  • 我不知道密钥库是什么。
  • 我不知道如何在制作应用时保存它。
  • 我不知道如何在我的应用程序的未来版本中恢复它,因为某些原因或其他原因使用了备用密钥库。

我想弄清楚的是,确保每当我弄乱我的应用程序以便将来开发它时,最好的做法是什么,如何防止更改这个该死的密钥库?是否每当我更新cordova?更新平台?等等。我觉得我的应用程序有一个滴答作响的定时炸弹,最终阻止它在Play商店上更新。我正在使用Cordova btw。

在询问前大约一天半做了一些研究,所以任何帮助都表示赞赏。

1 个答案:

答案 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"

很多这样的信息都是从遍布堆栈的流程中找到的,然后在这里编译给我自己和其他人以供将来参考。