在用AIR做的安卓项目发布的时候会自己进行签名。无论是flash builder 还是 flash cs 之类的。但这些只是一般情况下。在特殊情况下我们可能会对打好的包再次进行签名。比如上传某平台需要下载一个空包签名后进行签名验证。这个以前是遇到过,另一种我遇到的 则是

以前的apk上传google play的时候没有接入gp 的SDK,而最近需要接入gp的SDK,并且我们是易接首选,自己接入次之,这样快一些。所以按照以前的流程用易接打好包之后上传,结果出现签名不一致。最终发现 易接在打包过程中是有签名选项的。一共有三种

即 默认签名(易接自己的签名)  无签名  导入自己的签名(此签名需要的是keystore格式的 但是我们用的是p12) 几经寻找,终于完成签名。现记录在下

 

查找签名文件,找到别名

查找别名在后续的语句中会用到,使用的工具是JDK的KeyTool,语句格式如下:

进入到安装的JDK目录  的bin里面 按住shift  并鼠标右键 打开cmd (原谅我不会用命令 不过感觉这样方便点)

keytool -list -storetype PKCS12 -keystore d:/soft/xx.p12

其中:“d:/soft/xx.p12”是签名文件。

sign1

对文件进行签名操作

使用JDK的工具jiasigner,语句格式如下:

jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -storetype PKCS12 -signedjar d:/soft/Signed.apk -keystore d:/soft/xx.p12 d:/soft/ab.apk “1”

sign2

sign3看到这样的 那就是签名成功啦

其中:“d:/soft/Signed.apk”是签名后的结果文件,“d:/soft/xx.p12”是签名文件,“d:/soft/ab.apk”是原始文件,“1”是上面查到的别名。

需要注意的是:

注意:参数“-sigalg MD5withRSA -digestalg SHA1”是平台要求的,不同平台可能会有所不同,只要照抄就行;参数“-storetype PKCS12”是为了说明签名文件是PKCS12(.P12)格式,必须这样写。

 

出现异常:

上面说过 在用易接进行打包SDK时 他会有几个签名选项,如果使用的是 默认签名 或者 自己导入的其他格式的签名 那么用此方法进行p12签名是可能会出现下面的异常

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

解决方法是 去掉签名。生成一个无签名的包,那么在易接工具里面就选择 无签名选项 再次打包 即可

 

 

 

补充 查看apk签名信息 命令行

jarsigner -verify -verbose -certs  apk_path.apk

可以查看签名证书的一些信息 比如 公司 持有者 起始日期 到期日期等

 

 

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Free Web Hosting