当前位置: 首页 > news >正文

用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 中设置一个任务&#xff0c;使其从 2026 年开始每个月的 1 号执行一次&#xff0c;可以使用以下格式&#xff1a; 0 0 1 * * <你的命令>这条规则的解释如下&#xff1a; 0 0&#xff1a;表示在每个月的 1 号的零点&#xff08;00:00&#xff09;执行。1&a…...

计算机网络803-(5)运输层

目录 一.运输层的两个主要协议&#xff1a;TCP 与 UDP 1.TCP/IP 的运输层有两个不同的协议&#xff1a; 2.端口号(protocol port number) &#xff08;1&#xff09;软件端口与硬件端口 &#xff08;2&#xff09;TCP 的端口 &#xff08;3&#xff09;三类端口 二.用户…...

八 MyBatis中接口代理机制及使用

八、MyBatis中接口代理机制及使用 实际上&#xff0c;第七章所讲内容mybatis内部已经实现了。直接调用以下代码即可获取dao接口的代理类&#xff1a; AccountDao accountDao (AccountDao)sqlSession.getMapper(AccountDao.class);使用以上代码的前提是&#xff1a;AccountMa…...

【解决】Ubuntu18.04 卸载python之后桌面异常且终端无法打开,重启后进入tty1,没有图形化界面

我因为python版本太过于混乱 &#xff08;都是为了学习os&#xff09; &#xff0c;3.6—3.9版本我都安装了&#xff0c;指向关系也很混乱&#xff0c;本着“重装是最不会乱”的原则&#xff0c;我把全部版本都卸载了。然后装了3.9 发现终端打不开了&#xff0c;火狐浏览器的图…...

OpenEmbedded、yocto和poky是什么关系?

Yocto项目是基于OpenEmbedded构建系统发展而来的。Yocto采用了OpenEmbedded的许多核心概念和工具&#xff0c;比如BitBake构建工具。BitBake在这两个系统中都是用于解析和处理recipes文件&#xff0c;这些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测试没有问题 本文摘录于&#xff1a;https://blog.csdn.net/gitblog_00365/article/details/141449437只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 今天真的是发了疯的找文件管理器,因为调用系统自带的文件管理…...

Mi-Create:零基础打造个性化小米穿戴表盘的完整实战指南

Mi-Create&#xff1a;零基础打造个性化小米穿戴表盘的完整实战指南 【免费下载链接】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调试黑科技&#xff1a;如何通过.axf文件实现MCU内存状态无损调试 调试嵌入式系统时&#xff0c;最令人沮丧的莫过于遇到偶发故障却无法复现现场。传统调试方式往往需要复位MCU&#xff0c;导致宝贵的运行时状态信息瞬间消失。这种"盲人摸象"式的调试体…...

如何在Linux系统中快速找到文件:FSearch终极文件搜索工具完整指南

如何在Linux系统中快速找到文件&#xff1a;FSearch终极文件搜索工具完整指南 【免费下载链接】fsearch A fast file search utility for Unix-like systems based on GTK3 项目地址: https://gitcode.com/gh_mirrors/fs/fsearch 在Linux系统中寻找特定文件常常令人头疼…...

科大奥锐虚拟仿真实验避坑指南:从85分到95分,我的密度测量实验复盘与代码优化

科大奥锐虚拟仿真实验提分实战&#xff1a;从85分到95分的密度测量实验深度优化 第一次接触科大奥锐的密度测量虚拟仿真实验时&#xff0c;我和大多数同学一样&#xff0c;以为按照指导手册操作就能轻松拿高分。直到连续三次实验分数卡在85-87分之间&#xff0c;才意识到这个看…...

BiliBiliCCSubtitle:高效解决B站字幕处理难题全攻略

BiliBiliCCSubtitle&#xff1a;高效解决B站字幕处理难题全攻略 【免费下载链接】BiliBiliCCSubtitle 一个用于下载B站(哔哩哔哩)CC字幕及转换的工具; 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBiliCCSubtitle 一、问题篇&#xff1a;字幕处理的真实困境与技术…...

终极CPU稳定性测试指南:CoreCycler单核心轮询测试完全教程

终极CPU稳定性测试指南&#xff1a;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智能体以大模型为核心&#xff0c;串联医学知识图谱、实体识别模块、风险评估模块、话术生成模块、伦理审核模块五大核心组件&#xff0c;最终实现精准医学判断 人性化交互的双重目标。而在医疗场景中&#xff0c;用户的核心需求从来不是单纯的数据…...

Java开发必看:解决国密SM2算法报错‘Unknown named curve‘的完整指南(附Bouncy Castle配置)

Java开发实战&#xff1a;国密SM2算法Unknown named curve报错深度解析与Bouncy Castle最佳配置指南 金融级Java应用开发中&#xff0c;国密算法SM2的集成就像在钢筋森林里铺设光纤——看似简单却暗藏技术陷阱。当控制台突然抛出Unknown named curve: 1.2.156.10197.1.301这个看…...

显卡驱动彻底清理指南:用DDU解决90%的显示问题

显卡驱动彻底清理指南&#xff1a;用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切片的像素角色动作序列图

忍者像素绘卷惊艳案例&#xff1a;生成支持CSS Sprite切片的像素角色动作序列图 1. 像素艺术的新纪元 在游戏开发领域&#xff0c;像素艺术始终保持着独特的魅力。忍者像素绘卷作为一款基于Z-Image-Turbo深度优化的图像生成工具&#xff0c;为开发者带来了革命性的解决方案。…...