Python实现gradle打包和360加固

2,811 阅读2分钟

安卓项目日渐稳定,遂学了一周的python(小菜鸡一个)。想找个项目,无奈网上的项目都不符合我实用的需求(看不懂...)。刚好最近安卓的项目频繁需要打包,于是就有了今天的这个标题,最后在不懈的努力(百度),只花了50行左右代码就搞定了。 代码写的很菜,大家见谅就是发出来交流下,目前还没有实现多渠道分包和自动上传蒲公英或者fir,有需要大家可以自己补上。

注意:进行了优化,不要单独把python代码跑起来啦,直接用AndroidStudio就可以

准备工作

  1. 配置好gradle环境变量

    • 你的项目模块的grale中添加:

      	task releaseAndJg(type: Exec) {
      	workingDir './'
      	commandLine "python", "demo2.py", rootProject.projectDir.absolutePath
      }
      

      添加一个AndroidStudiogradle任务直接点击右边的绿色三角运行就可以了,demo2.py就是下面贴的python代码,要放在项目的根目录。这样做的优点是不再需要配置grale命令了,不需要离开AndroidStudio,不需要运行的时候输入项目路径了,更加加简单高效。

    • 你的项目app模块中的gradle要配置好打包签名,这样才能用gradle打签名包

      android {
          signingConfigs {
              config {
                 //省略部分
              }
          }
      
          buildTypes {
              debug {
                 //省略部分
                 signingConfig signingConfigs.config
              }
       
              release {
                //省略部分
                signingConfig signingConfigs.config
              }
          }
        
      }
      
  2. 安装python

    • 安装python3.x.x版本
    • 选一个你喜欢的文本编辑器

脚本代码

  • 具体实现看代码,如有不行大家见谅(语言能力不行啊),主要的流程就是先利用gradle打包后用360加固

  • 360加固打包命令官方地址大家有需要可以看看

  • gradle命令代码里有大家可以百度

  • 成功截图

    image-20210116120054883

"""
Python 自动打包签名后加固
"""

import os
import sys

# 加固路径
jgPath = 'D:\\你的360加固的地址\\jiagu\\' #记得替换
output_path = 'C:\\你要输入的地址\\Desktop' #记得替换

# 获取gradle的参数:项目路径
input_path = sys.argv[1]


# 查找当前目录apk文件
def get_apk_path(path):
    dirs = os.listdir(path)
    for f in dirs:
        print('遍历文件:', f)
        if f.endswith('.apk'):
            return f
    return None


# 启动加固
def auto_360_jg():
    print('开始编译文件')
    # 进入项目地址
    os.chdir(input_path)
    # 执行编译命令
    r = os.system('gradlew assembleRelease')
    if r == 0:
        # 安装包地址
        build_path = input_path + '\\app\\build\\outputs\\apk\\release'
        apk_path = get_apk_path(build_path)
        if apk_path:
            print('开始加固文件')
            # 进入加固目录
            os.chdir(jgPath)
            # 执行加固命令
            os.system('java -jar jiagu.jar -showconfig')
            cmd = 'java -jar jiagu.jar -jiagu ' + build_path + '\\' + apk_path + ' ' + output_path + ' -autosign'
            os.system(cmd)
            print('恭喜,加固apk放置到桌面')
            path = output_path + '\\' + apk_path
        else:
            print('哦哦,没有找到apk文件')
    else:
        print('哦哦,编译apk失败')


if input_path:
    auto_360_jg()
else:
    print('请输入apk地址')


运行脚本

在点击AndroidStudio点击运行即可