早些年Eclipse时代Android打包采用的ant,现在AndroidStudio时代采用的Gradle,目前的开发模式都是采用敏捷开发,如果仍采用手动打包给QA提测未免太耽误事了,目前众多公司采用的是自动化打包策略+自动化测试,本文是Jenkins自动化构建的第一篇,玩转Android项目的自动化打包,来自早些时候个人整理的有道云笔记,不对之处请指出。前方高能,巨图众多!

jenkins工作流程

Android 命令打包开机动画zip包 android 自动化打包_构建

jenkins安装

一般公司自动化构建都会将jenkins配置到Tomcat下,无论是jenkins还是tomcat都需要jdk。

准备工作

1.Java jdk下载

java jdk下载、安装、配置环境变量,安装过程忽略。

2.Tomcat下载

tomcat下载,安装,配置环境变量,安装过程忽略。

需要注意,tomcat默认端口8080,此端口很容易被其他服务占用,可根据自己需求修改tomcat端口号。

3.jenkins下载

jenkins下载有多种类型,主要看当前的系统环境。一般我们选war包形式下载,后续结合tomcat进行安装。

Android 命令打包开机动画zip包 android 自动化打包_jenkins_02

jenkins安装

这里还是以war包结合tomcat来说,安装过程很简单,直接放到tomcat根目录webapps下,tomcat启动时会自动解压出一个jenkins文件夹。

jenkins home位置修改

jenkins安装后默认在C盘User下会生成个工作区(.jenkins),将来的插件、配置,以及创建的jobo都在此文件夹下,默认是不需要环境变量的,但是有些时候我们需要将此文件夹放到一个安全的位置,防止系统损坏或者重装系统这些配置丢失。这个时候就要修改工作区的环境变量了。

Android 命令打包开机动画zip包 android 自动化打包_构建_03

jenkins启动

启动tomcat, 输入jenkins的服务器地址http://xxx.xxx.xxx.xxx:8080/jenkins/,一路下来按照提示进行操作,设置root用户信息,安装相关插件(刚开始不建议完全安装推荐的插件,可以选择跳过,你也可以看一下推荐的插件有哪些,选择性安装),然后就回到主页了:

Android 命令打包开机动画zip包 android 自动化打包_tomcat_04

安装插件

汉化: Localization: Chinese (Simplified)

问题:jenkins无法安装插件

找到插件管理最后一项:

Android 命令打包开机动画zip包 android 自动化打包_android_05


滑到最下边找到Upload Site,将默认的https改为http,保存修改:http://updates.jenkins-ci.org/update-center.json

Android 命令打包开机动画zip包 android 自动化打包_jenkins_06

如果一直下载失败,可全局开启vpn(个人建议),当然也可以将上边的地址切换为国内镜像:
http://mirror.xmission.com/jenkins/updates/current/update-center.json

jenkins角色配置

1. 添加用户

路径:Manage Jenkins->Manage Users

Android 命令打包开机动画zip包 android 自动化打包_构建_07


默认是你自己的超级用户root,你可以在此处添加第二个,第三个用户。

2. 设置用户权限

2.1 安装插件

Role-based Authorization Strategy

2.2 授权策略

路径:Manage Jenkins->Configure Global Security

Android 命令打包开机动画zip包 android 自动化打包_自动化_08

保存。

2.3 角色管理和分配角色

路径:Manage Jenkins->Manage and Assign Roles

Android 命令打包开机动画zip包 android 自动化打包_tomcat_09

  • 管理角色:就是把角色分一下类,例如超级管理员有哪些、QA有哪些、普通用户有哪些。
  • 分配角色:就是把上边的角色分配到个人。

2.3.1 管理角色

Android 命令打包开机动画zip包 android 自动化打包_jenkins_10


这里配置三种权限角色:管理员模式、普通模式和匿名模式(Anonymous),配置项如上,将来普通模式可以分配给QA供打包测试,匿名模式可以分配给不登录模式下查看项目,当然如果有别的角色需要我们还可以再进行添加。

2.3.2 分配角色

Android 命令打包开机动画zip包 android 自动化打包_tomcat_11


这一步就是将权限分配到个人,Anonymous分配匿名模式下的权限。

以上只是基本的,我们还可以实现某人可以看到某些项目,或者针对某个项目有固定的权限等,这里就不说了。

简单了解系统设置

使用Html展示消息

1.安装插件

OWASP Markup Formatter Plugin

2.标记格式器

路径:Manage Jenkins->Configure Global Security

Android 命令打包开机动画zip包 android 自动化打包_tomcat_12


3.添加Html通知体

Android 命令打包开机动画zip包 android 自动化打包_tomcat_13

创建项目

安装插件:

  1. Git,因为我们的代码是git管理的。
  2. Gradle

配置构建环境

配置JDK、Git、Gradle相关变量,路径:Manage Jenkins->Global Tool Configuration

Android 命令打包开机动画zip包 android 自动化打包_jenkins_14

准备创建项目

1.创建项目

Android 命令打包开机动画zip包 android 自动化打包_jenkins_15


2.设置源码源

Android 命令打包开机动画zip包 android 自动化打包_tomcat_16

这里的凭据,如果项目地址在域里面,并且登录人是域用户,可以不用设置凭据了。

3.设置Gradle构建

Android 命令打包开机动画zip包 android 自动化打包_构建_17


主要关注两点:

  1. gradle版本:建议和项目gradle版本保持一致。
  2. 设置gradle打包命令,图上给的只是简单的。
clean:每次构建前clean一下项目;
assembleDebug:构建debug包
-stacktrace-debug:输出日志栈,打印日志信息。

更多gradle打包命令,可以进行百度,这里就不多说了。

4.构建后操作

Android 命令打包开机动画zip包 android 自动化打包_自动化_18


构建后主要用于打包产物的输出、存档。

  1. 选择Archive the artifacts,匹配构建后的输出产物。
  2. 打包后我们会在项目首页看到最后一次构建成功后产物的归档。

5.项目构建

回到项目首页,点击Build Now,即可看到构建过程:

Android 命令打包开机动画zip包 android 自动化打包_tomcat_19


点击构建条,进到项目中可以查看日志输出:

Android 命令打包开机动画zip包 android 自动化打包_tomcat_20

6.自动清除历史构建

Android 命令打包开机动画zip包 android 自动化打包_android_21

参数化构建

下载插件:

  1. Build With Parameters
  2. Persistent Parameter

说明:安装Build With Parameters Plugin为了实现参数化构建,安装Persistent Parameter Plugin为了实现构建时默认参数值取自上次构建的参数(当然如果要实现该功能,应该需要添加该插件对应的参数)

Android 命令打包开机动画zip包 android 自动化打包_android_22

1. 设置构建类型

选择Choice Parameter

Android 命令打包开机动画zip包 android 自动化打包_tomcat_23


在gradle构建类型地方进行替换

Android 命令打包开机动画zip包 android 自动化打包_tomcat_24

2. 设置构建分支

选择Git Parameter

Android 命令打包开机动画zip包 android 自动化打包_自动化_25


在源码管理的地方进行替换

Android 命令打包开机动画zip包 android 自动化打包_构建_26

当然你也可以选择Choice Parameter,类似设置构建类型一样,自己发挥咯。我自己就是用这种方式实现的。

放一张主页的截图:

Android 命令打包开机动画zip包 android 自动化打包_android_27

展示二维码

为了展示二维码,需要知道二维码存放的具体路径,然后二维码的扫描出来的结果必须是apk的具体路径,所以需要经过以下几步:

  1. 将构建后的apk重命名,方便生成二维码(明确将来的apk存放地址)
  2. 将构建生成的apk,拷贝到服务器具体路径下,我这里的服务器就是我本机。
  3. 根据apk的服务器路径生成二维码,并存放在服务器某个位置。

生成二维码需要用到二维码生成库包,我这里分享一个:

QRCode.jar

生成二维码的命令:

java -jar [存放生成jar包的路径/QRCode.jar] url=[二维码扫描结果字符串] image=[二维码的名字.jpg] save=[二维码存放的位置]

window脚本

1.我们按照上边的过程将其写成window脚本命令,打开window batch command窗口

Android 命令打包开机动画zip包 android 自动化打包_jenkins_28


2.输入脚本内容:

set buildApk=app\build\outputs\apk\%BuildFlavor%\%BuildType%\*.apk
set apkName=ehistore_%BuildBranch%_%BuildFlavor%_%BuildType%_%BUILD_ID%
set jenkinsBuildDir=F:\Workspaces\project_other\tomcat-8.5.39\webapps\jenkins_build
set jenkinsBuildResDir=%jenkinsBuildDir%\res
set jenkinsBuildApkDir=%jenkinsBuildDir%\apks
set apkDownLoadUrl=http://192.xxx.x.xxx:8080/jenkins_build/apks/%apkName%.apk

ren %buildApk% %apkName%.apk
copy %buildApk% %jenkinsBuildApkDir%
java -jar %jenkinsBuildResDir%\QRCode.jar url=%apkDownLoadUrl% image=%apkName%.jpg save=%jenkinsBuildApkDir%

3.下载插件:Build Name and Description Setter

该插件主要用于修改构建名字和构建描述展示,利用描述内容我们来展示二维码。

添加插件部件:

Android 命令打包开机动画zip包 android 自动化打包_jenkins_29


Changes build description添加描述内容:

<img src="http://192.xxx.x.xxx:8080/jenkins_build/apks/ehistore_${BuildBranch}_${BuildFlavor}_${BuildType}_${BUILD_ID}.jpg" height="180" width="180"/>

4.具体设置如下

Android 命令打包开机动画zip包 android 自动化打包_构建_30

生成效果如下:

Android 命令打包开机动画zip包 android 自动化打包_tomcat_31

最后

本文主要带你玩转Jenkins中实现Android项目自动化打包,这是第一篇,后续还有二、三篇,如果喜欢顺便点赞+关注哦