Android V2签名,如何修复[INSTALL_PARSE_FAILED_NO_CERTIFICATES]

背景故事

最近公司要求集成华为安全认证,具体的集成过程就不说了,反正集成之后出现了标题中的那个错误,APK装不上了,所以就有了今天的这篇文章。

以下是问题截图:

问题截图

解决过程

当时经过百度之后发现证书没有正式的签名,这个很纳闷,按照华为开发者文档,这个apk必须先进行keystore或者jks的签名打包,然后使用华为的工具进行华为证书的打包,最后就可以使用了。 文档后面有个V2签名的介绍,但是V2具体该怎么做就没有细说。

这个问题,我首先使用了一个比较怂的办法,就是使用V1包进行打包签名,然后使用华为工具打包CER文件进入apk,这时候就成了。但是此时出了一个问题,现在涉及到一些用户在使用我V2签名的apk, V2签名不可以被V1签名的APK覆盖,如果这么搞,只能被祭天了。

后来在仔细的了解了V2签名的机制,V2签名可以使用android提供的工具apksigner来进行重新编译打包,可以把我们的keystore进行重新打入apk中,经过测试后可以安装成功了。

apksigner.jar的位置在AndroidSDK/build-tools/lib/apksigner.jar

具体代码

apksigner使用办法:
java -jar apksigner.jar sign          //执行签名操作
--ks 你的jks路径                      //签名证书路径
--ks-key-alias alias                //生成证书时指定的alias
--ks-pass pass:密码                 //KeyStore密码
--key-pass pass:密码               //签署者的密码,即生成jks时指定alias对应的密码
--out output.apk                  //输出路径
input.apk                        //被签名的apk

敲一堆命令很麻烦啊,华为安全认证比较麻烦的一部分就是必须每次都得使用release的包进行测试,所以我特意写了一个小工具来解放双手。

放一下我的工具链接: Python打包工具

工具使用方法

首先确保你电脑上有Python工具,然后你去我的Github中下载av2p.py和av2pConfig.json文件,具体使用方式可以查看README。

其他

如果你的问题不是华为认证搞出来的,但是在安装过程中也报上面的错误,大家也可以试试这个方法。有什么问题欢迎去github提Issues。 anyway ~


参考

APK signature scheme v2

你可能感兴趣的:(Android V2签名,如何修复[INSTALL_PARSE_FAILED_NO_CERTIFICATES])