文章目录
如何查看签名信息
已有签名文件时
输入以下命令即可查看签名信息内容
keytool -v -list -keystore MyAppKey.jks
默认的签名文件是 debug.keystore
,位置在 $HOME/.android/debug.keystore
,使用上面的命令时,让你输入密码,默认的可以直接按回车,或者输入android
只有apk时
我们把 apk 放在D盘 test 文件夹下
在cmd输入以下命令即可查看签名信息里的内容
jarsigner -verify -verbose -certs D:\test\qunar.apk
jarsigner对未签名的apk签名
上传一些应用市场时,可能需要应用签名认领,例如上传魅族市场时,应用认领说明如下:
开发者应用认领说明
Flyme应用中心应用认领,采用Android的apk安装包签名机制来完成。如果你不清楚签名是什么,请联系开发人员协助您。
在Android平台发布应用程序之前,必须经过一个签名流程。现在您的密钥就是您的身份证明,您所要做的就是使用您的密钥,将我们提供给您的一款未经过签名的apk包签名后,发送给我们。
我们要做的就是,给市场提供的一个未经签名的apk重新签名。用的签名文件就是我们要上传的apk的签名文件
重新签名要用到 jarsigner 命令,使用如下:
命令格式:
jarsigner -verbose -keystore [keystorePath] -signedjar [apkOut] [apkIn] [alias]
命令格式及参数意义:
-verbose -> 输出签名过程的详细信息
-keystore [keystorePath] -> 密钥的库的位置
-signedjar [apkOut] -> 签名后的输出文件名
[apkIn] -> 待签名的文件名
[alias] -> 证书别名
演示一下:
在桌面新建一个文件夹 Demo,里面放上 未签名的apk 和 签名文件
在当前文件夹中执行 cmd
由于 cmd 命令是在当前文件夹中执行的,所以签名文件路径不用写,直接写签名文件名称
待签名 和 签名后输出文件名 都在当前路径,所以直接写名字
我的签名文件的别名是 Yi
jarsigner -verbose -keystore MyAppKey.jks -signedjar test-signed.apk test-unsigned.apk Yi
按回车键后,提示输入密码短语,输入是看不见的,输完按回车即可
结束后,Demo 文件中多了签好名的apk了
签名不对,请检查签名是否与开放平台上填写的一致
查看我的另一篇文章:传送门
使用 re-sign.jar 重新签名
re-sign.jar 工具可以将一个 apk 文件重签名,使用的是 android 自带的 debug 签名。可以通过re-sign.jar 工具,获得app的 packageName 和 main activity。用于自动化测试
下载地址
下载re-sign.jar
提取码:esmq
使用
1、运行报ANDROID_HOME错误
当打开re-sign.jar时弹出以下提示时
解决办法
新建环境变量ANDROID_HOME
,指向sdk安装路径
然后编辑path,新增ANDROID_HOME
具体新增环境变量的方法可以参考配置Gradle环境变量
再次双击运行re-sign.jar后,没有了刚才的提示,
2、将要重新签名的apk拖到这里,弹出以下
ERROR:Cannot run program “xx/zipalign”
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190919164618530.png
解决办法
在第一步下载的文件中有一个zipalign,放到提示的路径下即可
3、等一会儿,成功会弹出以下弹框
注意这里显示了包名和启动Activity,记住这些信息,自动化测试会用到
我们可以对比下前后签名信息
可以看到重新签名成功了
查看apk签名方式是V1还是V2
进入 Android SDK/build-tools/SDK版本, 在当前文件夹运行cmd 输入命令
apksigner verify -v --print-certs xxx.apk
运行结果如下:
参考:Android-APK签名工具-jarsigner和apksigner