在 Android 项目开发中,自动化构建和打包是提高效率的重要手段。本文将介绍如何在 macOS 上通过 Jenkins 实现 Android 项目的自动化构建,并在构建完成后通过钉钉发送通知,其中包含扫码下载 APK 的二维码。
一、环境准备
在开始 Jenkins 的安装和配置之前,我们需要准备好必要的软件环境。以下是详细步骤:
1.1 安装 Homebrew
首先,安装 macOS 包管理工具 Homebrew,这可以帮助我们安装 Jenkins 和其他依赖工具:
bash
复制代码
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
1.2 安装 Java
Jenkins 运行需要 Java 环境,使用以下命令安装 Java:
bash
复制代码
brew install openjdk@11
配置 Java 环境变量:
bash
复制代码
sudo ln -sfn /usr/local/opt/openjdk@11/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk
export PATH="/usr/local/opt/openjdk@11/bin:$PATH"
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
验证安装:
bash
复制代码
java -version
1.3 安装 Android SDK
使用 Homebrew 安装 Android SDK 以支持 Android 项目:
bash
复制代码
brew install --cask android-sdk
配置 Android SDK 环境变量:
bash
复制代码
export ANDROID_HOME=/usr/local/share/android-sdk
export PATH=$PATH:$ANDROID_HOME/tools
export PATH=$PATH:$ANDROID_HOME/platform-tools
1.4 安装 Gradle
Android 项目构建通常使用 Gradle,使用以下命令安装:
bash
复制代码
brew install gradle
验证安装:
bash
复制代码
gradle -v
二、Jenkins 安装与配置
2.1 安装 Jenkins
使用 Homebrew 安装 Jenkins:
bash
复制代码
brew install jenkins-lts
启动 Jenkins 服务:
bash
复制代码
brew services start jenkins-lts
打开浏览器,访问 Jenkins 控制台:http://localhost:8080
2.2 初次登录 Jenkins
首次登录 Jenkins 时,需要输入管理员密码。该密码存储在以下文件中:
bash
复制代码
cat /Users/$(whoami)/.jenkins/secrets/initialAdminPassword
按提示完成初次配置。
三、安装必要插件
在 Jenkins 控制台,点击 "Manage Jenkins" > "Manage Plugins" > "Available",搜索并安装以下插件:
- Android Emulator Plugin: 用于管理 Android 模拟器。
- Gradle Plugin: 用于执行 Gradle 构建任务。
- Git Plugin: 用于从 Git 仓库拉取代码。
- DingTalk Plugin: 用于发送钉钉通知。
四、创建 Jenkins 构建任务
4.1 创建任务
在 Jenkins 首页,点击 "New Item",输入任务名称,选择 "Freestyle project" 类型,点击 "OK" 进入任务配置页面。
4.2 配置源码管理
在 "Source Code Management" 部分,选择 "Git",并填写项目的 Git 仓库 URL 和凭据。
4.3 配置构建触发器
在 "Build Triggers" 部分,选择触发器方式,例如 "Poll SCM" 或 "Build periodically"。
4.4 配置构建环境
在 "Build Environment" 部分,选择 "Use Gradle Wrapper" 或者直接指定 Gradle 命令,并选择 Gradle 版本。
4.5 配置构建步骤
在 "Build" 部分,选择 "Invoke Gradle script",在 "Tasks" 中输入打包命令:
bash
复制代码
clean assembleRelease
五、生成并发送二维码下载链接
为了方便用户扫码下载构建生成的 APK 文件,我们需要生成下载链接的二维码并将其包含在钉钉通知中。
5.1 生成二维码
首先,通过 Homebrew 安装 qrencode 工具:
bash
复制代码
brew install qrencode
然后在 Jenkins 构建脚本中生成二维码,并保存为图片文件。例如:
groovy
复制代码
task generateQrCode(type: Exec) {
def apkDownloadUrl = "http://yourserver.com/downloads/app-release.apk"
def qrCodeFilePath = "${buildDir}/outputs/apk/release/qrcode.png"
commandLine 'qrencode', '-o', qrCodeFilePath, apkDownloadUrl
}
5.2 上传二维码图片
生成二维码图片后,将其上传到服务器以供外部访问。你可以使用 curl 命令将图片上传:
groovy
复制代码
task uploadQrCode(type: Exec) {
def qrCodeFilePath = "${buildDir}/outputs/apk/release/qrcode.png"
def uploadUrl = "http://yourserver.com/upload"
commandLine 'curl', '-F', "file=@${qrCodeFilePath}", uploadUrl
}
5.3 在钉钉通知中包含二维码
在钉钉通知中,我们可以使用 Markdown 格式发送消息,将生成的二维码图片嵌入到通知内容中:
groovy
复制代码
task notifyDingTalk {
doLast {
def buildStatus = project.hasProperty('buildStatus') ? project.buildStatus : 'UNKNOWN'
def message = """
## Jenkins 构建结果: ${buildStatus}
- **构建编号**: #${env.BUILD_NUMBER}
- **项目**: ${env.JOB_NAME}
- **详情**: [点击查看](${env.BUILD_URL})
- **APK 下载链接**: [点击下载](${apkDownloadUrl})

"""
def webhookUrl = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
def payload = [
"msgtype": "markdown",
"markdown": [
"title": "Jenkins 构建通知",
"text": message
]
]
def process = ['curl', '-X', 'POST', webhookUrl, '-H', 'Content-Type: application/json', '-d', new groovy.json.JsonBuilder(payload).toString()].execute()
process.waitFor()
}
}
六、任务串联与执行
最后,将各个任务串联起来,使得在生成 APK 后,自动生成二维码、上传二维码,并发送钉钉通知。
groovy
复制代码
buildApk.finalizedBy(generateQrCode, uploadQrCode, notifyDingTalk)
总结
本文详细介绍了在 macOS 上如何使用 Jenkins 实现 Android 项目的自动化打包,并通过钉钉通知用户扫码下载生成的 APK。通过自动化构建、二维码生成和消息推送,能够大大提高开发和测试的效率。希望这些步骤能帮助你在实际项目中顺利实现 CI/CD 流程。