【Android】Android批量重签名
2020-02-04 本文已影响0人
MaxJCheung
在MBA大师Android端APP4.8.0版本发布的时候,我们发现乐固的PC工具下线了,所以我们只能在线上进行加壳操作,再在本地进行重新签名。由于渠道包很多,所以参考了网上的脚本,修改了一个Mac环境下适用的Python脚本
BeanTech Desktop
使用
在使用脚本前,你需要进行如下操作:
配置Python2.7
Mac默认已经安装了Python2.7版本,在你的终端中输入
python
就可以查看当前Python的版本
如果没有Python2的话可以使用brew安装Python2
brew install python
创建脚本
你最好新建一个文件夹,再创建一个文件,我们可以命名为
mutilSign.py
而后,将如下代码拷贝到文件中并保存
#!/usr/bin/python
#coding:UTF-8
import shutil
import os
jksFile = ''
storePassword = ''
keyAlias = ''
keyPassword = ''
# 获取当前目录中所有的apk源包
src_apks = []
# python3 : os.listdir()即可,这里使用兼容Python2的os.listdir('.')
originApkdir=os.getcwd()+'/originApks/'
output_dir = 'output/'
# 目录不存在则创建
if not os.path.exists(output_dir):
os.mkdir(output_dir)
else:
shutil.rmtree(output_dir,True)
os.mkdir(output_dir)
for file in os.listdir(originApkdir):
if os.path.isfile(os.path.join(originApkdir,file)):
extension = os.path.splitext(file)[1][1:]
if extension in 'apk':
src_apks.append(os.path.join(originApkdir,file))
try:
for src_apk in src_apks:
# file name (with extension)
src_apk_file_path = os.path.abspath(src_apk)
# file name (with extension)
src_apk_file_name = os.path.basename(src_apk)
# 分割文件名与后缀
temp_list = os.path.splitext(src_apk_file_name)
# name without extension
src_apk_name = temp_list[0]
# 后缀名,包含. 例如: ".apk "
src_apk_extension = temp_list[1]
# 创建生成目录
#目标文件路径
target_apk = output_dir + src_apk_name + src_apk_extension
#签名后的文件路径
signer_apk_path = output_dir + src_apk_name + '_signed' + src_apk_extension
#拼装签名命令
# signer_str = 'cmd.exe /k apksigner sign --ks ' + jksFile + ' --ks-pass pass:' + storePassword + ' --ks-key-alias ' + keyAlias + ' --key-pass pass:' + keyPassword + ' --out ' + signer_apk + ' ' + src_apk
signer_str = 'jarsigner -verbose -keystore '+ jksFile + ' -storepass '+storePassword+' -signedjar '+ ' ' + signer_apk_path + ' ' + src_apk_file_path +' '+keyAlias
# print signer_str
print 'sign '+src_apk_file_name+' waiting...'
#执行签名命令
signer_result = os.popen(signer_str)
#输出签名命令执行结果
if(signer_result.read() != ''):
print 'signer_result:\t', 'success'
else:
print 'signer_result:\t', 'fail result: '+signer_result
except Exception, e:
print 'Exception:\t', repr(e)
print 'All done! Any key to exit'.decode('UTF-8').encode('GBK')
#等待输入
raw_input()
很简单对吗?
配置签名信息
将你的Keystore文件放到这个目录中来,修改脚本中的 jksFile storePassword keyAlias keyPassword字段为对应值
创建源文件目录
在刚才的文件夹里新建一个文件夹,并命名为"originApks",将待签名的Apk文件统统放进来吧
签名
打开终端,运行
python mutilSign.py
不出意外的话,运行完毕后会在目录中生成一个'output'文件夹,签完名的Apk就在这个文件夹中了
PS:每次开始签名都会自动删除之前的output,所以不用手动删除哦