一、编译APK
二、查看证书别名
三、签名
四、签名APK校验
五、安装APK
开发完APK代码后,编译APK。
在获取到安卓代码签名证书之后,用keytool命令查看证书的别名:keytool -list -v –keystore [安卓代码签名证书文件名称]
1、检查签名用的文件
在经过上述一、二两个过程之后,得到了签名所需要的两个文件:代签名的APK文件、安卓代码签名证书文件。
2、签名
用jarsigner程序可以对APK进行签名,签名命令如下:jarsigner -verbose -keystore [证书文件名称] -signedjar [签名后的APK文件名称] [待签名的APK名称] [证书别名]
签名的文件和证书可以不存放在同一目录下,在jarsigner的文件名称属性中添加上绝对路径即可。
对APK进行签名有多种方式,这里的jarsigner是其中常用的一种方式。如何在IDE开发工具中配置证书,请参考相关的IDE工具手册。
3、签名完成
签名命令执行之后,程序会对APK中包含的文件进行签名,并将签名结果存在APK包的根目录META-INF文件下。其中RSA文件是#PKCS7格式的签名文件,SF和MF文件是APK包中的双重摘要验证文件。
4、错误处理
(1)签名错误
当出现如下图所示的错误【jarsigner: 无法对 jar 进行签名: java.util.zip.ZipException: invalid entry compressed size (expected 20041 but got 18863 bytes)】时,说明当前APK包中存在META-INF文件夹。该文件夹可能是调试过程中的临时证书生成的,或是已经经过签名的APK包。
出现这种情况时,可以移除APK中的META-INF文件夹后重新对APK进行签名。
(2)签名警告
当签名结束出现如下警告时,可以忽略此警告,或者更换为1.6版本JDK进行签名。
1、获取APK签名结果文件
将签名后的APK包中根目录下的META-INF目录下的RSA文件提取出来。
2、查看签名结果文件
将RSA文件的扩展名改为p7b。用windows自带的证书查看器直接打开文件即可查看签名内容。
如上图所示,APK签名文件中的证书链上有三个数字证书签名。其中,第一个签名China Root of WoSign是沃通电子认证服务有限公司的根证书签名;第二个签名WoSign OV Code Signing CA for Android是沃通电子认证服务有限公司的安卓代码签名证书的根证书签名,它是由第一个证书授予的信任;第三个证书XX科技股份公司是沃通电子认证服务有限公司颁发给该公司的安卓代码签名证书对APK的签名,它是由第二个证书授予的信任。
3、对比证书
鼠标双击图9中的证书,既可以查看该证书对应的公钥数字证书。打开第三个签名的公钥数字证书,与签名用的安卓代码签名证书对比可以查看签名工作的结果
1、安装
通过多种渠道将APK发送到用户手机上进行安装,安装结果如下图所示:
1、安装
通过多种渠道将APK发送到用户手机上进行安装,安装结果如下图所示:
3、安装APK的常见错误
(1)包名
安卓要求在同一设备上安装的APK中,包名相同、签名证书相同的APK才能正常升级安装。当安装APK过程中产生冲突时,多数是由于当前设备上存在相同包名,不同签名证书的APK。移除当前设备中的冲突APK,再重新尝试安装新的APK即可解决。
(2)版本
在多数安卓版本中都支持各个安卓系统版本兼容,当出现安装APK失败时,检查当前APK的编译版本是否与目标设备的安卓版本相兼容。