一.ionic 自动签名的好处与坏处(ionic build android/ios)
好处在于:可以直接安装手机上进行安装测试,也可以上传Android或者iOS平台
不好的地方在于:你的电脑环境变了换电脑了,再打包出来的签名就会不一样了,再打包出来的app就无法覆盖之前的版本,会报签名不一样的问题
二.不采用自动签名
关于签名官网提供了一种新的方式,参加官网https://ionicframework.com/docs/intro/deploying/
1.打包运行 命令 (安卓为例)
ionic build android -release
2.生成证书文件
keytool -genkey -v -keystore test.keystore -alias demo.alias -keyalg RSA -validity 20000
命令运行之后会让你填写密钥库口令,
再次确认,之后是一些相关的个人以及公司信息,没输入完一次,回车就行,
之后还会有一个密钥库的口令,可以和密钥库的一样或者重新写;
keytool是工具名称,-genkey意味着执行的是生成数字证书操作,-v表示将生成证书的详细信息打印出来;
-keystore test.keystore 证书的文件名;
-alias sign.alias表示证书的别名;
-keyalg RSA 生成密钥文件所采用的算法;
-validity 20000 该数字证书的有效期,单位天;
出现的问题:
(1).keytool不是内部或可用命令,这里需要把这个路径配置到这个工具的上级文件夹,
比如我的keytool.exe是在Java\jdk1.8.0_121\bin\这个文件下,配置目录到
Java\jdk1.8.0_121\bin\;最后这个\不要丢掉,配置的时候注意;(分号)没有了要加上;
(2).输入密钥库口令的时候输入但并不在窗口上展示,其实已经输上了;3.对生成的未签名的apk进行签名
jarsigner -verbose -keystore /yourpath/demo.keystore -signedjar signafter.apk android-release.apk sign.alias
jarsigner是工具名称,-verbose表示将签名过程中的详细信息打印出来;
-keystore /yourpath/test.keystore 之前生成的证书 找到证书的位置
signafter.apk 签名后的apk
android-release.apk 需要签名的apk
sign.alias证书的别名
注意的问题:
(1).配置的变量目录要和上边的类似,否则也会报命令不可用的问题.
位于jdk1.6.0_24\bin\目录下
(2).运行这个命令的时候需要切换目录到你需要签名的apk的目录,否则会报错jar文件无法打开
(3).如果你是在你签名证书存放的目录下运行的这个命令,那么你需要把你要签名的apk复制到这个目录下,否则也会报错jar文件无法打开
(4)有些情况下会提示未提供 tsa 或 tsacert(其实不影响apk的使用)
可以再命令后加上 -tsa https://timestamp.geotrust.com/tsa
4.对签名过的apk进行优化,可以不优化
zipalign -v 4 signafter.apk signend.apk
1)zipalign是工具名称,-v表示在DOS窗口打印出详细的优化信息;
2) 表示对已签名文件signafter.apk进行优化,优化后的文件名为 signend.apk
5.查看apk签名
1)
Mac下,把apk的后缀改为zip打开,然后查看META-INF下的.RSA文件
Windows下,用winner打开apk,同样查看.RSA文件
执行命令
keytool -printcert -file META-INF/CERT.RSA
注意后面文件的名称与路径即可,可以查看到签名信息,主要是查看Certificate fingerprints下的MD5与SHA1,这两个不同就代表着签名不同
2)查看证书文件的签名(keystore)
keytool -list -v -keystore 你自己的打包用到的keystore的路径
例如 keytool -list -v -keystore F:\workappusekey\test.keystore
6.利用证书文件当换电脑打包同一个app时,使app签名不变
利用生成的数字证书和包名可以保证签名不变,生成的数字证书文件和包名要保存好;
如果对包名有要求,在对项目签名前,确定包名;
在 start 命令创建项目的时候,后边加上 -i或者--id来设置包名,可以避免创建项目之后再去修改包名
希望有问题的地方,看到的大神帮补充一下,谢谢