Android项目apk自动打包方案

一、需求说明

对于Android项目,随着项目迭代次数和需求的增加,很多时候一个项目需要维护多个版本的代码(至于多版本代码如何管理,参考之前的文章:gradle多版本源码管理及打包),那么对于打包apk来说就变得较为繁琐和麻烦了,从自动化的角度,我们当然希望这些重复劳动都用机器自动来完成,对于Android项目的apk多版本打包也是一样的,下面开始说说如何从测试的角度去完成apk的自动打包吧。

二、设计构思

既然是从测试的角度出发,那就得考虑测试的需求了,比如下面这个场景:“开发小哥提交了新的代码到Android项目代码仓库(就算gitHub吧),然后新建了对应版本的提测单转给了测试阿黄,阿黄看了下提测功能点,测试范围有点大,一个人在规定时间内搞不完,还需要测试阿花协助测试,那么阿黄和阿花想要完成这个提测单的测试,首先还是得拉取代码库的最新代码,再编译打包一个apk出来安装,才能开始测试……之前都是开发小哥直接打包apk的,但是这次开发小哥实在太忙了,就对测试阿黄说:以后你们自己拉代码打包apk吧!哥这次真帮不了你们了”。
好了就是这样一个场景,测试阿黄该如何设计apk的打包方案呢?那我们先来分析下:

  1. 阿黄编码能力有限,好像不能直接基于git去写一个比较牛叉的脚本,来拉取、编译、打包、输出一步到位,但是他知道这个Android项目是基于Android Studio的,可以用gradle的gradlew系列命令来编译和打包,ok,那就先定了gradlew command line;
  2. 阿黄想万一哪天我请假了呢?这个打包工作对于阿花也可以无障碍操作才行啊!咦,这不就是持续集成嘛,Jenkins这货不就干这个的,ok,那利用Jenkins来构建打包任务;
  3. 好像还有个问题,gradlew命令打包的apk默认输出路径貌似不太好找,再说打包好了我还得发给其他人,还是不太省心啊,还不如搞个共享目录,打包完后拷贝到共享目录下,让他们自取好了。

三、实现过程

说干就干,基于上面的分析后,这个apk自动打包方案就是采用Gradle 命令行 + Jenkins + Batch 命令行来实现anyone、anywhere、anytime打包apk了。
1. Jenkins新建任务job

Android项目apk自动打包方案_第1张图片
Paste_Image.png

2. 源码管理选择Git,输入代码库地址和用户名密码即可

Android项目apk自动打包方案_第2张图片
Paste_Image.png

**3.构建脚本中选择Execute Windows batch command **


Android项目apk自动打包方案_第3张图片
Paste_Image.png

a.构建命令输入gradlew的编译打包脚本:

@echo off
set rootDriver=E:
set workspacePath=%Jenkins_workspace%"项目名称"
%rootDriver%
cd %workspacePath%
rem clean build
::gradlew clean

@echo on
rem 打包所有版本
gradlew assembleRelease
rem 打包v1版本
::gradlew assembleV1Release
rem 打包v2版本
::gradlew assembleV2Release

b. 打包完后拷贝apk到指定目录:

rem 复制apk到共享目录
@echo off
set sharedPath="XXXX"
IF EXIST %apkOutput%*.* ( 
    %sharedDriver%
    cd %sharedPath%
    md %apkFolder%  
) ELSE ( 
    echo Not found any apks in %apkOutput%.
    GOTO EOF
)

IF EXIST %apkFolder% (
    @echo on
    copy %apkOutput%\*.* %apkFolder%
) ELSE (
    echo %apkFolder% is missing.
)
:EOF
echo end.

4. 利用Jenkins的邮件提醒功能发送构建结果给干系人

Paste_Image.png

填写发送邮箱账号和密码,输入邮件内容(HTML格式,自己写个吧,大致包含:构建结果、apk包的路径、构建log路径等)。
至此,这样就实现了一个简单的apk支持多版本自动打包方案了。文章看起来貌似偏移主题,变成Jenkins的实践了,其实我更想传达的是一个方案的分析和设计思路,具体实现可繁可简,就看对工具和编程的掌握程度了。

PS: 更多原创技术好文和资料,请关注下方公众号:“测试开发栈”公众号是由具有多年测试、开发经验的老兵们共同管理和运营,旨在分享原创测试、开发相关技术,包括但不限于:测试方向:Web自动化测试、移动端自动化测试、Web服务端测试、接口测试等;开发方向:Java开发、Android开发、前端开发等;
期望我们的经验和技术分享能让你每天都成长和进步,早日成为技术大牛~
欢迎大家分享和转发我们的文章(分享转发请保留文章出处),以便让更多的朋友关注我们,同时也欢迎加入我们的QQ群交流和提问:427020613


Android项目apk自动打包方案_第4张图片

你可能感兴趣的:(Android项目apk自动打包方案)