用Python脚本执行安卓打包任务
这个样例是基于windows系统写的python打包安卓的脚本:
一、配置AndroidStudio下的打包任务
1.在Android项目根目录下的build.gradle文件配置生成Release包的任务:
task cleanAll(type: Delete) {delete rootProject.buildDirrootProject.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的脚本
相关文章:
用Python脚本执行安卓打包任务
这个样例是基于windows系统写的python打包安卓的脚本: 一、配置AndroidStudio下的打包任务 1.在Android项目根目录下的build.gradle文件配置生成Release包的任务: task cleanAll(type: Delete) {delete rootProject.buildDirrootProject.subprojects.e…...
制作安装k8s需要的离线yum源
制作安装k8s需要的离线yum源 添加docker在线源制作安装k8s命令行工具需要的离线yum源传到内网k8s节点,通过如下命令导出镜像: 要全内网环境安装docker、k8s和相关依赖,需要在内部提供安装k8s、docker需要的yum源 添加docker在线源 yum-confi…...
Node学习记录-events
来自:https://juejin.cn/post/7285915718666354723 和 https://nodejs.cn/api/events.html Nodejs核心API都是采用异步事件驱动架构,在该架构中,某些类型的对象(触发器)触发命名事件,导致调用Function对象(…...
Java Collection/Executor DelayedWorkQueue 总结
前言 相关系列 《Java & Collection & 目录》《Java & Executor & 目录》《Java & Collection/Executor & DelayedWorkQueue & 源码》《Java & Collection/Executor & DelayedWorkQueue & 总结》《Java & Collection/Executor &a…...
《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字
《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字 《TCP/IP网络编程》学习笔记 | Chapter 1:理解网络编程和套接字基本概念服务端客户端 基于 Linux 平台的 "Hello world!" 服务端和客户端基于 Linux 的文件操作打开文件关闭文件…...
服务端监控工具:Nmon使用方法
在性能测试过程中,对服务端的各项资源使用情况进行监控是很重要的一环。这篇博客,介绍下服务端监控工具:nmon的使用方法。 一、认识nmon 1、简介 nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,它能在系统运行…...
Java中的线程安全问题(如果想知道Java中有关线程安全问题的基本知识,那么只看这一篇就足够了!)
前言:多线程编程已经广泛开始使用,其可以充分利用系统资源来提升效率,但是线程安全问题也随之出现,它直接影响了程序的正确性和稳定性,需要对其进行深入的理解与解决。 ✨✨✨这里是秋刀鱼不做梦的BLOG ✨✨✨想要了解…...
基础设施即代码(IaC)在Python自动化运维中的应用探讨
基础设施即代码(IaC)在Python自动化运维中的应用探讨 目录 🌐 IaC概念与工具介绍🐍 使用Python实现基础设施自动化📦 版本控制与基础设施管理的最佳实践🔄 部署环境的一致性与可复现性 1. 🌐 …...
浅谈路由器
路由器是一种网络设备,它在网络中起着至关重要的作用,主要功能包括: 1、数据转发:路由器的主要任务是将数据包从一个网络转发到另一个网络。它根据数据包的目的地址来决定将数据包发送到哪个网络。 2、路径选择:路由器…...
openGauss数据库-头歌实验1-1 初识openGauss
一、历史与特性 任务描述 本关任务:了解openGauss的发展历史以及相关特性。 相关知识 为了完成本关任务,你需要掌握:1.openGauss的发展历程,2.openGauss的功能特性。 发展历程 2019年9月19日在华为全联接大会上,…...
QT找不到ffmpeg链接库解决方法
error: undefined reference to avformat_network_init() 一个神奇的报错,查了很久,检查步骤: 1、检查了 pro工程文件 2、链接库的真实性和正确性 在main.cpp中调用没有报错,在其它cpp文件中调用就报错。 破案了,…...
消息队列-Rabbitmq(消息发送,消息接收)
将来我们开发业务功能的时候,肯定不会在控制台收发消息,而是应该基于编程的方式。由于RabbitMQ采用了AMQP协议,因此它具备跨语言的特性。任何语言只要遵循AMQP协议收发消息,都可以与RabbitMQ交互。并且RabbitMQ官方也提供了各种不…...
2、顶点着色器之视图矩阵
1、作用:将物体从世界坐标系转换到相机坐标系,相当于从世界坐标系转换到相机的局部(本地)坐标系。 2、基于LookAt函数的视图矩阵: 相机位置eye:(ex,ey,ez),世界坐标系下的位置 目标位置center:(cx,cy,cz…...
crontab实现2026年开始每个月1号执行一次
要在 crontab 中设置一个任务,使其从 2026 年开始每个月的 1 号执行一次,可以使用以下格式: 0 0 1 * * <你的命令>这条规则的解释如下: 0 0:表示在每个月的 1 号的零点(00:00)执行。1&a…...
计算机网络803-(5)运输层
目录 一.运输层的两个主要协议:TCP 与 UDP 1.TCP/IP 的运输层有两个不同的协议: 2.端口号(protocol port number) (1)软件端口与硬件端口 (2)TCP 的端口 (3)三类端口 二.用户…...
八 MyBatis中接口代理机制及使用
八、MyBatis中接口代理机制及使用 实际上,第七章所讲内容mybatis内部已经实现了。直接调用以下代码即可获取dao接口的代理类: AccountDao accountDao (AccountDao)sqlSession.getMapper(AccountDao.class);使用以上代码的前提是:AccountMa…...
【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面
我因为python版本太过于混乱 (都是为了学习os) ,3.6—3.9版本我都安装了,指向关系也很混乱,本着“重装是最不会乱”的原则,我把全部版本都卸载了。然后装了3.9 发现终端打不开了,火狐浏览器的图…...
OpenEmbedded、yocto和poky是什么关系?
Yocto项目是基于OpenEmbedded构建系统发展而来的。Yocto采用了OpenEmbedded的许多核心概念和工具,比如BitBake构建工具。BitBake在这两个系统中都是用于解析和处理recipes文件,这些recipes文件包含了软件包构建的指令、依赖关系、安装步骤等内容。 它们…...
记录页面——一个蛮好看的登录页(uni-app)
效果图 <template><view class"container"><view class"flex-col login-box"><view class"flex-col" style"width: 80%"><view class"flex-col"><text class"welcome-text-font&qu…...
Android文件选择器[超级轻量级FilePicker测试没有问题][挣扎解决自带文件管理器获取不到绝对地址问题而是返回msf%3A1000038197]
超级轻量级FilePicker测试没有问题 本文摘录于:https://blog.csdn.net/gitblog_00365/article/details/141449437只是做学习备份之用,绝无抄袭之意,有疑惑请联系本人! 今天真的是发了疯的找文件管理器,因为调用系统自带的文件管理…...
Mi-Create:零基础打造个性化小米穿戴表盘的完整实战指南
Mi-Create:零基础打造个性化小米穿戴表盘的完整实战指南 【免费下载链接】Mi-Create Unofficial watchface creator for Xiaomi wearables ~2021 and above 项目地址: https://gitcode.com/gh_mirrors/mi/Mi-Create Mi-Create是一款专为小米穿戴设备用户打造…...
告别盲目复位!用KEIL5的.axf文件实现“热插拔”调试,保留MCU内存状态全记录
深入解析KEIL5调试黑科技:如何通过.axf文件实现MCU内存状态无损调试 调试嵌入式系统时,最令人沮丧的莫过于遇到偶发故障却无法复现现场。传统调试方式往往需要复位MCU,导致宝贵的运行时状态信息瞬间消失。这种"盲人摸象"式的调试体…...
如何在Linux系统中快速找到文件:FSearch终极文件搜索工具完整指南
如何在Linux系统中快速找到文件:FSearch终极文件搜索工具完整指南 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中寻找特定文件常常令人头疼…...
科大奥锐虚拟仿真实验避坑指南:从85分到95分,我的密度测量实验复盘与代码优化
科大奥锐虚拟仿真实验提分实战:从85分到95分的密度测量实验深度优化 第一次接触科大奥锐的密度测量虚拟仿真实验时,我和大多数同学一样,以为按照指导手册操作就能轻松拿高分。直到连续三次实验分数卡在85-87分之间,才意识到这个看…...
BiliBiliCCSubtitle:高效解决B站字幕处理难题全攻略
BiliBiliCCSubtitle:高效解决B站字幕处理难题全攻略 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 一、问题篇:字幕处理的真实困境与技术…...
终极CPU稳定性测试指南:CoreCycler单核心轮询测试完全教程
终极CPU稳定性测试指南:CoreCycler单核心轮询测试完全教程 【免费下载链接】corecycler Script to test single core stability, e.g. for PBO & Curve Optimizer on AMD Ryzen or overclocking/undervolting on Intel processors 项目地址: https://gitcode.…...
医疗AI智能体:从数据到关怀人文设计:告别冰冷精准,构建有温度的诊疗交互.131
一、智能体的人文设计医疗AI智能体以大模型为核心,串联医学知识图谱、实体识别模块、风险评估模块、话术生成模块、伦理审核模块五大核心组件,最终实现精准医学判断 人性化交互的双重目标。而在医疗场景中,用户的核心需求从来不是单纯的数据…...
Java开发必看:解决国密SM2算法报错‘Unknown named curve‘的完整指南(附Bouncy Castle配置)
Java开发实战:国密SM2算法Unknown named curve报错深度解析与Bouncy Castle最佳配置指南 金融级Java应用开发中,国密算法SM2的集成就像在钢筋森林里铺设光纤——看似简单却暗藏技术陷阱。当控制台突然抛出Unknown named curve: 1.2.156.10197.1.301这个看…...
显卡驱动彻底清理指南:用DDU解决90%的显示问题
显卡驱动彻底清理指南:用DDU解决90%的显示问题 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-drivers-uninstaller 当…...
忍者像素绘卷惊艳案例:生成支持CSS Sprite切片的像素角色动作序列图
忍者像素绘卷惊艳案例:生成支持CSS Sprite切片的像素角色动作序列图 1. 像素艺术的新纪元 在游戏开发领域,像素艺术始终保持着独特的魅力。忍者像素绘卷作为一款基于Z-Image-Turbo深度优化的图像生成工具,为开发者带来了革命性的解决方案。…...
