命令行使用JKS文件为APK签名
目前拿到一个机器的Android系统签名,以JKS格式文件提供,要如何对APK签名呢?按如下步骤操作:
1 |
jarsigner -verbose -keystore xxx.jks -signedjar xxx_signed.apk xxx_unsigned.apk xxx_alias |
其中,xxx.jdk为相应的签名文件,xxx_alias为签名文件里面配置的keystore别名。例如:
1 |
jarsigner -verbose -keystore xbh.jks -signedjar Explorer_signed.apk Explorer_unsigned.apk android |
执行该命令后,要求输入keystore的密码,输入完后,碰到如下提示:
1 |
jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 6716 but got 6831 bytes) |
查了下资料,是由于APK已有签名了,于是执行如下命令删除到现有签名:
1 |
zip -d Explorer_unsigned.apk META-INF/\* |
命令执行后有如下提示:
deleting: META-INF/MANIFEST.MF deleting: META-INF/CERT.SF deleting: META-INF/CERT.RSA
执行完该命令后,再执行上面的jarsigner命令重新签名即可,此时有如下提示输出:
正在添加: META-INF/MANIFEST.MF 正在添加: META-INF/ANDROID.SF 正在添加: META-INF/ANDROID.RSA 正在签名: res/drawable-1280x600/content_item.9.png 正在签名: res/drawable-1280x600/explorer_logo.png 正在签名: res/drawable-1280x600/icon.png 正在签名: res/drawable-1280x600/icon_apk.png 正在签名: res/drawable-1280x600/icon_audio.png 正在签名: res/drawable-1280x600/icon_copy.png 正在签名: res/drawable-1280x600/icon_delete.png 正在签名: res/drawable-
1280x600/icon_folder.png 正在签名: res/drawable-res/layout/tool_bar.xml jar 已签名。
警告: 签名者证书为自签名证书。
未提供 -tsa 或 -tsacert, 此 jar 没有时间戳。如果没有时间戳, 则在签名者证书的到期日期 (2154-09-25) 或以后的任何撤销日期之后, 用户可能无法验证此 jar。
至此使用JKS文件为APK签名完成。
更多签名操作
查看jks签名库里的签名信息:
1 |
keytool -v -list -keystore keystore.jks |
更改别名:
1 |
keytool -changealias -keystore my.jks -alias myalias -destalias otheralias |
删除别名:
1 |
keytool -delete -alias myalias -keystore my.jks -storepass jkspassword |
查看.apk包里的签名详细:
1 |
jarsigner -verify -verbose -certs app-release.apk |
通过命令生成密钥库和别名
1 |
keytool -genkey -alias myalias -keyalg RSA -keystore my.jks -keysize 2048 -validity 9125 -dname "CN=FirstAndLastName, OU=OrganizationalUnit, O=Organization, L=CityOrLocality, ST=StateOrProvince, C=CountryCode, EMAILADDRESS=email@gmail.com" |
----注:-keyalg:加密算法 -keysize:加密位数 -validity:有效期(天) -dname:证书详细信息
导出证书:
1 |
keytool -export -alias myalias -keystore my.jks -file myalias.crt -storepass jkspassword |
打印证书信息:
1 |
keytool -printcert -file myalias.crt |
将证书导入到密钥库并生成别名
1 |
keytool -import -alias myotheralias -file myalias.crt -keystore my1.jks -storepass jkspassword |
修改别名里的信息,注MD5的值也会同时被修改
1 |
keytool -selfcert -alias myalias -keypass aliaspassword -keystore my.jks -storepass jkspassword -dname "CN=FirstAndLastName1, OU=OrganizationalUnit1, O=Organization1, L=CityOrLocality1, ST=StateOrProvince1, C=CountryCode1, EMAILADDRESS=email1@gmail.com" |
原文连接:命令行APK签名/查看apk签名/查看key签名
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。