ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退

前言:可能很多人不知道为什么app打包成apk之后需要签名,之前我就不是很清楚。在直接使用指令
cordova build android打包之后的apk被默认命名为了 app-debug.apk 文件。这种文件不支持安卓商店上架使用,只有经过打包、签名之后的apk文件才能正常的上架,同时才能正常使用微信、QQ、支付宝等平台的登录、分享、支付等功能。

1.生成未签名的apk文件

ionic cordova build android --release

使用这个指令生成未签名的apk文件,会在当前路径下
D:\project\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退

2.为了实现签名,你先得有一个签名的工具

keytool:该工具位于jdk安装路径的bin目录下;
jarsigner:该工具位于jdk安装路径的bin目录下;
zipalign:该工具位于Android-sdk-windows/tools/目录下;
其中博主用到的生成数字证书的工具 是 keytool

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

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

输入指令后根据提示完成操作,如图所示
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退
提示:生成的spilledyear.keystore 会在项目的根目录下 打开里面是一些二进制代码 包含了你刚才录入的信息等

3.使用jarsigner为app签名

jarsigner -verbose -keystore spilledyear.keystore -signedjar test.apk android-release-unsigned.apk spilledyear.keystore

jarsigner  是工具名称 
-verbose   表示将签名过程中的详细信息打印出来,显示在dos窗口中
-keystore spilledyear.keystore   表示签名所使用的数字证书所在位置,没有写路径表示在当前目录下
-signedjar zmjj.apk android-release-unsigned.apk   表示给android-release-unsigned.apk文件签名,签名后的文件名称为zmjj.apk 
spilledyear.keystore   表示证书的别名,对应于生成数字证书时-alias参数后面的名称

提示:
其中test.apk和android-release-unsigned.apk需要修改成详细的路径地址,
D:\test.apk
D:\project\platforms\android\app\build\outputs\apk\release\app-release-unsigned.apk
这样就会在系统D盘的根目录下生成一个test.apk文件,它是由之前你的未签名的app-release-unsigned.apk用证书签名之后得到的。
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退
由于之前的设置,现在可去D盘根目录找到刚才已经签名好的test.apk文件,如在分享到微信等第三方app的时候提示签名不一致的问题,需要你去相关平台重新设置你的app签名(例如博主的app就是在微信开放平台上注册过的)
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退
这里的包名就是你的app开发项目中config.xml里面的id
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退
应用签名 则来自于微信官方提供的工具(GenSignature)查询app的id所获得的 应用签名
ionic3安卓打包apk签名,实现微信分享或打开其他app不闪退
如果都填写正确了,使用微信等第三方的功能不会再出现闪退,签名不一致等错误提示了。