签名apk包

原来是使用桌面云的某台win10进行打包和签名。
但是因为桌面云迁移导致了信息丢失,密钥还在,签名流程和过程缺失( 打包的js脚本文件还在 ),所以需要重新生成打包环境和流程。


  1. 首先第一步是利用keytool生成jks文件,类似一个密钥
keytool -genkey -v 
-alias alias_name 
-keyalg RSA 
-keysize 1024 
-keypass password 
-dname "cn=creatorName, ou=organizationUnit, o=organization, l=location, st=state, c=country" 
-keystore .\jks_name.jks 
-storepass password 
-validity 3650

比较重要的是keypass需要记住(也可以存在一个文件中),alias也需要记住,在签名时需要,其他都不需要,然后这段代码可以存进cmd命令行工具中下次双击执行。

  1. 然后打包release-unsigned.apk,在cordova中是cordova build android --release

  2. 接下来使用jarsigner脚本进行签名

jarsigner 
-tsa http://timestamp.digicert.com 
-sigalg SHA1withRSA 
-digestalg SHA1 
-verbose -keystore jks_name.jks
-signedjar signed.apk unsigned.apk
jks_alias

现在使用生成的密钥进行签名,alias就是前面需要记住的别名。然后回车执行后需要输入之前记住的密码。这个使用了tsa时间戳的服务,也可以不用使用。

  1. 验证签名
jarsigner -verify -verbose -certs signed.apk

使用后可以知悉所有文件的签名信息,还有证书文件的信息。


执行完验证签名的时候,出现警告
此 jar 包含尚未进行完整性检查的未签名条目。
此 jar 包含证书链未验证的条目。
在签名信息的最后也看到有几个文件没有被验证签名,只是被列出而已。在安装apk时也会报错,致无法安装,需要排错:( SAD
(华为:未找到相关的证书)
(小米:安装包解析错误)

你可能感兴趣的:(签名apk包)