如何对apk进行重签名,来进行第三方SDK的调试

问题

当我们在进行第三方SDK的接入和调试的时候,往往第三方SDK要求我们必须使用在他们的平台上设置好签名,并且在打包输出的时候使用这个签名,才能够使用第三方SDK的相关功能,比如说微信的认证和分享功能。

但是,在实际的生产环境中,签名文件本身是一个比较重要的机密文件,只存在于打包机上,不会分发到开发小哥哥们的机器上。对于有的平台来说,会提供一个专门的debug keystore来让大家进行测试,但是由于不可考证的原因,这个keystore也遗失了(wtf)…

所以在过去我们曾经经历过,为了调试第三方相关内容,每写一段代码,就放到远程build一回,再用release包查看效果,不仅效率低下,而且还不能够断点调试。

解决方案

其实这个问题很简单,我们只要使用现有的keystore,生成一个debug专用的keystore,然后在打包机上新建一个任务,每次只要上传debugApk,然后使用debug专门用的keystore进行重签名,这样就可以快速的测试第三方SDK相关的内容了。

第一步:制作keystore

1)将release的keystore拷贝一份,我们命名为my.keystore

2)修改keystore密码

keytool -storepasswd -keystore my.keystore
复制代码

这时会提示输入旧密码,和新密码,新密码改为android

3)修改keystore的alias

keytool -changealias -keystore my.keystore -alias my_name -destalias androiddebugkey
复制代码

my_name是旧的alias的名字,注意替换
这一步是将alias改成androiddebugkey
这里会提示输入keystore的密码和alias的密码,注意,keystore的密码已经在上一步改成了android,而alias的密码还是旧的

4)修改alias的密码

keytool -keypasswd -keystore my.keystore -alias androiddebugkey
复制代码

这里会提示输入keystore密码,alias密码,新的alias密码,注意,keystore密码已经是android,而alias的密码还是旧的
我们这里要将alias的密码也改成android

这样就完成了keystore的制作

第二步:重新签名

因为我们的编译环境是部署在jenkins上的,所以这里针对的是jenkins的job,对于其他的CI环境来说应该也是类似的。

新建了一个job,添加一个File Parameter,用来进行debugApk的上传,参数名叫做source.apk。这个文件上传后,会存放在${Wordspace}/source.apk的位置

job编译执行以下脚本

unzip source.apk -d workdir
cd workdir
rm -rf META-INF
zip -r ../target.apk *
cd ..

jarsigner -digestalg SHA1 -sigalg MD5withRSA  -keystore /your/path/to/my.keystore -storepass android -keypass android target.apk androiddebugkey
复制代码

注意替换脚本中的keystore路径

这样就会产生一个target.apk文件,就是签过名的apk,就可以愉快的调试了

参考链接

blog.csdn.net/qq_31046737…

www.yeetrack.com/?p=973

转载于:https://juejin.im/post/5b493e0f6fb9a04fc436b128

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值