最近做跟华为对接定制rom的事情,涉及到了签名问题,以前都是开发工具直接打出签名包,基本没怎么用命令行的形式进行签名,所以这次记录下,方便后期再遇到。
注意:对apk签名时,当前命令行所在的目录就是apk所在的目录(cd apk目录)
一、V1签名
直接在命令行输入
jarsigner -verbose -keystore 111 -signedjar 222 333 444
111:你的签名文件
222:签名成功后输出的apk的名字
333:需要签名的apk的名字
444:你的签名中的
Key alias
111 222 333 处其实是文件的路径+文件名字,但是我一般不写路径,直接写名字,所以成生成的apk直接会在当前文件夹下了,而且还要保证签名文件和待签名的apk所在同一个目录下。
Key alias是啥?
举例:
jarsigner -verbose -keystore uclass_starter.jks -signedjar uclass_starter.apk uclass_starter_update.apk my_class
- uclass_starter.jks(签名文件)
- uclass_starter.apk (希望签名成功之后的apk名字就叫uclass_starter)
- uclass_starter_update.apk(待签名的apk的名字是uclass_starter_update)
- my_class(uclass_starter.jks签名文件里的Key alias是my_class)
二、V1+V2签名
v1+v2签名跟单独的v1签名还是有区别的,v1+v2签名需要用到
apksigner
,而v1签名用的是jarsigner。在命令窗口输入jarsigner,是可以看到运行结果的,但是直接输入apksigner是不行的。
-
首先需要我们找到sdk目录中build-tools下,此时我们会看到很多版本
每个版本里都有个lib文件夹,从版本号24.0.3开始lib文件夹下都有一个apksigner.jar文件,因此我们需要命令窗口在当前lib路径下,执行命令
java -jar apksigner.jar sign --ks 111 --ks-key-alias 222 --out 333 444
111:签名文件路径
222:Key alias
333:签名后apk的路径
444:待签名的apk路径
如果想要验证是否签名成功可以执行
java -jar apksigner.jar verify -v --print-certs (apk地址)
版权声明:本文为qq_36356379原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。