一、准备工作
-
环境配置
-
安装 JDK 8+
-
配置Java环境变量,已配置请忽略,AS自带Java环境,基本都可以忽略此项:
JAVA_HOME=C:\Program Files\Java\jdk-1.8 PATH=%JAVA_HOME%\bin;C:\Program Files\Git\bin
-
项目目录结构
D:\AndroidProjects\MyApp\ ├── .git/ ├── app/ │ └── build.gradle └── gradlew.bat
二、创建批处理脚本(.bat)
在项目根目录下创建 auto_build.bat,内容如下:
@echo off
setlocal enabledelayedexpansion
:: 项目目录
set PROJECT_DIR=D:\AndroidProjects\MyApp
:: 日志文件路径
set LOG_FILE=%PROJECT_DIR%\auto_build_log.txt
:: 进入项目目录
cd /d %PROJECT_DIR% || (
echo %date% %time% - 项目目录不存在 >> %LOG_FILE%
exit /b 1
)
:: 拉取 master 分支最新代码
echo %date% %time% - 开始拉取 master 分支 >> %LOG_FILE%
git checkout master || (
echo %date% %time% - 切换到 master 分支失败 >> %LOG_FILE%
exit /b 1
)
git pull origin master || (
echo %date% %time% - 拉取 master 分支失败 >> %LOG_FILE%
exit /b 1
)
:: 切换到 domestic-test-app 分支并合并 master
echo %date% %time% - 开始合并 master 到 domestic-test-app >> %LOG_FILE%
git checkout domestic-test-app || (
echo %date% %time% - 切换到 domestic-test-app 分支失败 >> %LOG_FILE%
exit /b 1
)
git merge master || (
echo %date% %time% - 合并 master 分支失败,请手动解决冲突 >> %LOG_FILE%
exit /b 1
)
:: 执行打包命令
echo %date% %time% - 开始执行 assembleDebug 任务 >> %LOG_FILE%
call gradlew.bat assembleDebug || (
echo %date% %time% - 打包失败 >> %LOG_FILE%
exit /b 1
)
echo %date% %time% - 打包成功!APK 路径:%PROJECT_DIR%\app\build\outputs\apk\debug\ >> %LOG_FILE%
endlocal
三、配置 Windows 任务计划程序
-
打开任务计划程序
- 按
Win + R,输入taskschd.msc,回车。
- 按
-
创建任务
- 点击 创建任务(不是 “创建基本任务”)。
-
常规选项卡
- 名称:
AndroidAutoBuild - 安全选项:选择 无论用户是否登录都运行,并勾选 使用最高权限运行。
- 名称:
-
触发器选项卡
- 点击 新建,选择 每周。
- 设置:每周三,上午 9:00。
- 勾选 启用。
-
操作选项卡
- 点击 新建,选择 启动程序。
- 程序或脚本:浏览选择
auto_build.bat文件。 - 起始于:填写项目根目录(如
D:\AndroidProjects\MyApp)。
-
条件选项卡
- 勾选 唤醒计算机运行此任务(可选,防止电脑休眠导致任务不执行)。
-
设置选项卡
- 勾选 允许任务按需运行。
- 其他选项保持默认。
-
保存任务
- 点击 确定,输入 Windows 管理员密码(若有)。
四、测试任务
-
手动触发测试
- 在任务计划程序中,右键点击
AndroidAutoBuild,选择 运行。 - 查看
auto_build_log.txt日志,确认步骤是否执行成功。
- 在任务计划程序中,右键点击
-
检查 APK 输出
-
打包成功后,APK 文件会生成在:
D:\AndroidProjects\MyApp\app\build\outputs\apk\debug\
-
五、注意事项
-
Git 凭证
- 若 Git 仓库需要密码,建议配置 SSH 密钥或使用 Git Credential Manager 保存凭证。
-
合并冲突
- 若
master与domestic-test-app分支合并时出现冲突,脚本会失败并记录日志,需手动解决冲突后重新运行。
- 若
-
Gradle 缓存
-
若打包速度慢,可在
gradle.properties中配置国内镜像:properties
org.gradle.daemon=true org.gradle.configureondemand=true org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-
-
日志查看
- 若任务执行失败,优先查看
auto_build_log.txt和 Windows 事件查看器(eventvwr.msc)中的错误信息。
- 若任务执行失败,优先查看