ionic android apk签名以及重签名

1.使用keytool 生成数字证书

keytool -genkey -v -keystore myApp.keystore -alias myApp.keystore -keyalg RSA -validity 36500

  • keytool是工具名称-genkey意味着执行的是生成数字证书操作
  • -v表示将生成证书的详细信息打印出来,显示在dos窗口中
  • -keystore myApp.keystore表示生成的数字证书的文件名为“myApp.keystore”(myApp可以取自己的名字)
  • -alias myApp.keystore表示证书的别名为“myApp.keystore”,可以不和上面的文件名一样
  • -keyalg RSA表示生成密钥文件所采用的算法为RSA
  • -validity 36500 表示该数字证书的有效期为36500天,意味着36500天之后该证书将失效

执行该命令过程会要求输入密钥口令以及其他信息,看着填就行。

2.使用jarsigner为app签名

jarsigner -verbose -keystore myApp.keystore -signedjar /Users/*****/myApp.apk  /Users/*******/android-release-unsigned.apk myApp.keystore

  • -verbose 表示将签名过程中的详细信息打印出来,显示在控制台窗口中
  • -keystore myApp.keystore 表示签名所使用的数字证书所在位置
    -signedjar (后面的路径是你要签名apk的路径)表示给Apk工程目录下的android-armv7-release-unsigned.apk文件签名,签名后的文件为该路径下的myApp.apk
  • myApp.keystore 表示证书的别名,对应于生成数字证书时-alias参数后面的名称

3.由于ionic cordova build android命令打包出来的apk文件已经被默认的debug.keystore文件签名过了,所以在用以上命令进行签名的时候。会报这样的错误

jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 21213 but got 20064 bytes)

这是由于对一个已经签名了的apk进行签名的原因,网上的一些方法,比如改后缀名等等,我自己测试,没有生效

后来,我执行ionic cordova build android --release,对这个命令生成的apk进行签名,才可以正常签,大概是这个apk没有默认的签名吧。

4.使用zipalign工具优化已签名的apk(非必须但建议这么做)

 zipalign -v 4 notsigned.apk signed.apk

说明:

  • zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
  • notsigned.apk signed.apk 表示对已签名文件notsigned.apk进行优化,优化后的文件名为signed.apk

如果命令不生效,需要cd到zipalign所在的文件夹地址,可执行一下命令

find ~/Library/Android/sdk/build-tools -name "zipalign"

然后执行./zipalign -v 4 notsigned.apk signed.apk,即可对文件进行签名,但是我对debug.apk如此操作的时候,每次签名都失败,但是对ionic cordova build android --release 生成的apk进行签名,可以签名成功,但是也不能正常安装运行。

最后,我用的3中所说的方法,签名成功了。

参考博文:https://blog.csdn.net/xqq580231/article/details/78930497

你可能感兴趣的:(ionic android apk签名以及重签名)