美文网首页
【Android】Android批量重签名

【Android】Android批量重签名

作者: MaxJCheung | 来源:发表于2020-02-04 19:59 被阅读0次

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

    相关文章

      网友评论

          本文标题:【Android】Android批量重签名

          本文链接:https://www.haomeiwen.com/subject/ngdtextx.html