当前位置: 移动技术网 > IT编程>移动开发>Android > Android签名V1V2,签名对齐实现方法

Android签名V1V2,签名对齐实现方法

2018年10月30日  | 移动技术网IT编程  | 我要评论

密山先锋网,吞假药自杀被喊醒,商界

android签名v1v2,签名对齐实现方法。

jdk签名,需要切换到jdk\bin目录,签名之后只有v1签名

jarsigner -verbose -keystore 签名文件 -signedjar 输出文件 输入文件 签名文件别名

例:jarsigner -verbose -keystore appkey.keystore -signedjar app_signed.apk app.apk appkeykey

例:jarsigner -digestalg sha1 -sigalg md5withrsa -verbose -keystore appkey.keystore -signedjar app_signed.apk app.apk appkeykey

android sdk签名,需要切换到sdk\build-tools\25.+\lib目录,签名之后有v1v2签名

java -jar apksigner.jar sign --ks 签名文件 --ks-key-alias 签名文件别名 --ks-pass pass:keystore密码 --key-pass pass:生成jks时指定alias对应的密码 --out 输出文件 需要签名的apk

例:java -jar apksigner.jar sign --ks appkey.keystore --ks-key-alias appkeyalias --ks-pass pass:password --key-pass pass:aliassword --out app_signed.apk app.apk

检查apk是否已经签名,需要切换到sdk\build-tools\25.+\lib目录

例:java -jar apksigner.jar verify -v app_signed.apk

使用android sdk中的zipalign - 对齐操作 - 优化

1、需要切换到sdk\build-tools\25.+\lib目录,(这里如果没有这个文件夹,那说明你的sdk需要更新了)

2、执行命令:zipalign -v 4 [待优化.apk路径] [优化后.apk路径]

zipalign [-f] [-v] input.apk output.apk

例:zipalign -v 4 app_signed.apk app_signed_align.apk

3、验证一个apk文件是否对齐的方法如下:

zipalign -c -v existing.apk

例:zipalign -c -v 4 existing.apk

zipalign命令选项不多:

-f : 输出文件覆盖源文件

-v : 详细的输出log

-p : outfile.zip should use the same page alignment for all shared object files within infile.zip

-c : 检查当前apk是否已经执行过align优化。

指的是字节对齐参数,一般来说这个参数的值均为4,否则它起不到任何作用。

一定可行的方案: 只使用 v1 方案

不一定可行的方案:同时使用 v1 和 v2 方案

对 7.0 以下一定不行的方案:只使用 v2 方案

1,如果要支持 android 7.0 以下版本,那么尽量同时选择两种签名方式,但是一旦遇到签名问题,可以只使用 v1 签名方案

2,如果需要对签名后的信息做处理修改,那就使用v1签名方案

3,如果最后遇到各种不同的问题,可以不勾选v1和v2,直接打包签名

问题描述(v1和v2)

android 7.0中引入了apk signature scheme v2,v1是jar signature来自jdk

v1:应该是通过zip条目进行验证,这样apk 签署后可进行许多修改 - 可以移动甚至重新压缩文件。

v2:验证压缩文件的所有字节,而不是单个 zip 条目,因此,在签名后无法再更改(包括 zipalign)。正因如此,现在在编译过程中,我们将压缩、调整和签署合并成一步完成。好处显而易见,更安全而且新的签名可缩短在设备上进行验证的时间(不需要费时地解压缩然后验证),从而加快应用安装速度。

问题说白了就是:

v1: 旧的验证方式

v2: android7.0以后新的验证方式

可以只勾选v1,但是在android7.0以上不会应用新的签名方式。如果只勾选v2,android7.0以下的机子将无法安装apk!

解决方案一

v1和v2的签名使用

1)只勾选v1签名并不会影响什么,但是在7.0上不会使用更安全的验证方式

2)只勾选v2签名7.0以下会直接安装完显示未安装,7.0以上则使用了v2的方式验证

3)同时勾选v1和v2则所有机型都没问题

解决方案二

在app的build.gradle的android标签下加入如下

signingconfigs {

debug {

v1signingenabled true

v2signingenabled true

}

release {

v1signingenabled true

v2signingenabled true

}

}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网