【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,所以不用手动删除哦

上一篇下一篇

猜你喜欢

热点阅读