Android 我如何确保我的密钥库信息不会';我的cordova应用程序无法更改

Android 我如何确保我的密钥库信息不会';我的cordova应用程序无法更改,android,cordova,keystore,android-keystore,Android,Cordova,Keystore,Android Keystore,我已经发布了一些应用程序,但最终需要进行更新,大多数情况下还可以,但很快就可以了。。我在更新应用程序时出错,说指纹证书错误。所有答案都指向需要保存和重用原始密钥库,否则您将无法使用。有几件事需要解释: 我不知道什么是密钥库 我不知道在制作应用程序时如何保存它 我不知道如何在出于某种原因使用备用密钥库的应用程序的未来版本中恢复它 我想弄明白的是,什么是最好的实践,以确保无论何时我搞乱我的应用程序以进行未来的开发,我如何防止更改这个该死的密钥库?是我每次更新cordova的时候吗?更新平台?等我

我已经发布了一些应用程序,但最终需要进行更新,大多数情况下还可以,但很快就可以了。。我在更新应用程序时出错,说指纹证书错误。所有答案都指向需要保存和重用原始密钥库,否则您将无法使用。有几件事需要解释:

  • 我不知道什么是密钥库
  • 我不知道在制作应用程序时如何保存它
  • 我不知道如何在出于某种原因使用备用密钥库的应用程序的未来版本中恢复它
我想弄明白的是,什么是最好的实践,以确保无论何时我搞乱我的应用程序以进行未来的开发,我如何防止更改这个该死的密钥库?是我每次更新cordova的时候吗?更新平台?等我觉得我的应用程序有一颗滴答作响的定时炸弹,最终阻止它在Play Store上更新。顺便说一句,我用的是科尔多瓦


在询问之前,我已经做了大约一天半的研究,所以我们非常感谢您的帮助

这是我收集到的

步骤一-创建.KEYSTORE文件:

导航到C:\Program Files\Java\jre7\bin(通常为此),打开命令窗口并键入:

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
第二步-创建应用程序的未签名版本 在项目文件夹中打开的命令窗口中生成应用程序的未签名版本:

cordova build android --release
第三步-使用保存的密钥库对发行版进行签名 运行下面的第一个命令将显示密钥库中的所有条目,在输出中查找别名,然后在第二个命令中使用该值。在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的一部分,因此请确保您的路径中包含Java安装目录。 将这些信息储存在你能记住的地方,并在你能记住的地方使用这些信息(或者安全地将这些信息储存在某个地方,我会想到纹身)

第五步-ZIPALIGN你的应用程序:导航到你的Android SDK文件夹并搜索ZIPALIGN,使用最新的一个。然后:

zipalign -f -v 4 "path/to/unsigned-apk" "path/you/want/signed/apk"
在stackoverflow的各个地方都找到了很多这样的信息,然后在这里编译,供我和其他人将来参考