用Python脚本执行安卓打包任务
这个样例是基于windows系统写的python打包安卓的脚本:
一、配置AndroidStudio下的打包任务
1.在Android项目根目录下的build.gradle文件配置生成Release包的任务:
task cleanAll(type: Delete) { delete rootProject.buildDir rootProject.subprojects.each { subproject -> delete subproject.buildDir } } task qudao1Release dependsOn( cleanAll, ':app:assemble千年血战篇_officialOfficialRelease', )
1.1 cleanAll : 任务是打包前清空项目缓存的,直接copy就行
1.2 qudao1Release : 任务就是我们打包任务的名称,
1.3 :app:assemble千年血战篇_officialOfficialRelease 任务是我们gradlew执行的生成apk的指令,
这个指令可以在AndroidStudio里右侧窗口gradle树里找到,如下图:
1.4 如下图 :
assemble千年血战篇_officialOfficialRelease 就是我们要执行的release打包任务
1.5 把这个任务copy出来配置在上面1.3讲的位置就好
1.6 在androidStudio下的终端 执行我们的任务:qudao1Release, 执行命令时需要加前缀:.\gradlew。任务回车即可执行打包
二:利用python启动打包任务,我这里用的Python2.7.2版本
1.首先写一个可执行的doc文件,新建一个txt文本,内如如下:
@echo off @REM 安卓项目路径 cd /d "D:\app\as_project\new_version\GameDemo" .\gradlew qudao1Release pause
1.2 D:\app\as_project\new_version\GameDemo: 为我们安卓项目的路径
1.3 .\gradlew qudao1Release :就是我们上面执行的任务指令
1.4 保存后修改文件名尾缀:.bat ,然后保存,如下图所示:
1.5 其实这里我们直接双击这个buildApk文件,就可以执行安卓自动打包了,也不用打开AndroidStudio。但是如果你需要自己写一个完成流程的自动打包脚本,还需要监听这个打包任务是否执行完成,就需要用到python了。
2. 利用python启动这个doc文件:
""" 编译生成apk 参数: :bat: 可执行文件 """ def build_apk(bat): try: # 获取当前脚本的目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 构建.bat文件的完整路径 bat_file_path = os.path.join(script_dir, bat) result = subprocess.call([bat_file_path]) # 判断任务是否执行成功 if result == 0: print("build apk 任务执行成功") else: print("任务执行失败,退出状态码为:", result) except subprocess.CalledProcessError as e: print("The command failed with return code "+e.returncode) print("Standard Error:"+e.stderr)
2.1 这个build_apk方法里的bat参数就是我们上面建的bat文件的文件名,例如我的是buildApk.bat。
2.2 在python文件里的main方法里调用 : build_apk('buildApk.bat'),切记这里要使用单引号。
2.3 把buildApk.bat文件放在python文件的同级目录下,这样你的python脚本才能调用到他。
2.4 通过终端进入到你的python文件下,输入:python xx.py。你的脚本就可以执行了,如下图
2.5 其实到2.4就完成了这个打包任务,这在构建自动打包平台时最关键的流程就通了,启动任务时只需要启动你的脚本就可以了
2.6 如果你的项目放在git上,希望每次打包时保证项目是最新的代码,那么在打包之前,也可以Python执行git pull 方法,再进行build_apk任务
def git_pull(repo_directory): """ 在指定的仓库目录中执行 git pull 命令。 :param repo_directory: 包含Git仓库的本地目录路径 """ try: # 更改当前工作目录到指定的Git仓库目录 os.chdir(repo_directory) # 执行 git pull 命令 result = subprocess.call(['git', 'pull']) # 判断任务是否执行成功 if result == 0: print("build apk 任务执行成功") else: print("任务执行失败,退出状态码为:", result) except subprocess.CalledProcessError as e: # 如果 git pull 命令失败,则捕获异常并打印错误信息 print("Error executing git pull: {e}") except Exception as e: # 捕获其他可能的异常并打印错误消息 print("An unexpected error occurred: {e}")
源码链接:
Python脚本: 用pyhton写的打包安卓APK的脚本