Jenkins 自动化打包 Android

为什么

Android程序员常常需要打包给测试进行逻辑和界面测试,在新的项目模块开发中,我司使用了 Scrum敏捷开发;有优点也有缺点,在第一次尝试过程中,发现测试在最后的环节才参与到开发中,导致项目周期延长了几天;最后项目总结,提出测试不能参与到开发环节上的原因主要是 开发无法实时提供测试包

客户端开发总是觉得只有当逻辑和界面开发完成之后才能提供完整的测试包,这样的想法和做法自然是错误的,所以就有了今天的主题 Jenkins 自动化打包 Android

怎么做

当提出一个问题后,应该有大致的解决方法,如果没有,那就 谷歌 吧~

很长一段时间,网上有很多教程说起jenkins多么多么牛,可以释放你的左右手~ 一直没有去尝试,一个是没有时间,另外一个是没有实践的项目

下面开始动手操作吧,需要:

  • linux服务器一台
  • Git版本控制
  • JDK安装
  • Gradle,并配置环境变量
  • Android SDK,并配置环境变量
  • 安装、配置Jenkins
2.1. linux 服务器

如果需要梯子,可以买国外的服务器:

不需要可以使用:

等等,当然,如果觉得价格太贵,可以选择配置虚拟机来实现;买好服务器之后,就可以连接了,

  • windows用户可以使用 XShell, 其中还包含xftp
  • mac用户可以直接使用终端来连接服务器

值得注意的是, 为了方便后续的操作,需要把服务器的ssh 的端口修改为 22(如果默认端口不是22):

##连接服务器之后输入该命令
vi /etc/ssh/sshd_config

滑动到最后,修改port为22

服务器修改端口

2.2.Git 版本控制

yum install git

查看git版本:

查看Git版本.png

2.3. JDK安装

由于官网的jdk下载需要接受协议,所以只能下载到本地之后上传到服务器;

scp 本地文件 root@服务器地址:/路径

拷贝文件到服务器.png

解压:

tar -zxvf jdk.tar.gz

配置环境变量:

vi /etc/profile

加入如下代码:

export JAVA_HOME=/usr/local/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

source /etc/profile ## 使得更改生效


配置jdk环境变量.png

2.4. Gradle 安装

Gradle版本尽量和项目中使用的版本一致,不要引起不必要的错误;我项目中使用的版本是4.10.1,所以下载对应的版本:

wget https://downloads.gradle.org/distributions/gradle-4.10.1-all.zip

这样是直接下载到你当前所在的目录的,可以移动到某一个特定的目录,接下来就是解压:

unzip gradle-5.0-all.zip

如果没有该命令则说明没有安装 zip unzip, 使用 yum install zip unzip安装即可
解压之后打开/etc/profile文件,配置和jdk类似的环境变量:

配置gradle.png

我的gradle放到了 /usr/ellison/目录下

source /etc/profile ## 使得更改生效

2.5. SDK 安装

sdk下载到本地,使用上面同样的方式上传到服务器,Android SDK 下载地址,选择 Download Options 找到Command line tools only:

sdk下载地址.png

然后将文件上传到服务器,这里不再赘述; 接着配置sdk环境变量

vi /etc/profile

配置sdk环境变量.png

上面我是将文件放到了 /opt/androidSDK目录下,各位可以随便放到服务器哪个目录都可以,只需配置环境变量 然后使得生效即可:

source /etc/profile

配置好sdk环境变量之后,输入sdkmanager命令就可以来获取到sdk版本以及build-tools版本了;输入sdkmanager --list命令来获取所有的信息:

获取build-tools版本.png

可以看到最新的 build-tools版本是29.0.0-rc1, 可以根据项目中使用的build-tools版本来下载,我这边使用的是28.0.3; 下载命令为:

sdkmanager "build-tools;28.0.3"

安装好 build-tools之后,还需要安装必须的sdk版本,同样的也是根据项目中使用的下载需要的sdk:

获取所有的sdk版本.png

sdkmanaager "system-images;android-28;default;x86_64"

等待下载完成后,sdk就安装完了; 到此所有的 Android环境就安装完了。接下来就是jenkins安装了

3.1. Jenkins 安装

wget -O /etc/yum.repos.d/jenkins.repo http://jenkins-ci.org/redhat/jenkins.repo
rpm –import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins

安装的时候在国内会出现公钥未安装的情况,yum install --nogpgcheck 取消验证即可。

安装完之后,还不能启动 jenkins,因为jenkins默认的配置并不能找到你本机的jdk配置,打开jenkins的配置文件:

vim /etc/init.d/jenkins

找到如下位置之后,修改java文件的位置,即为本机安装的jdk环境位置:

修改jenkins启动.png

接下来就可以启动jenkins了:

sudo service jenkins start

启动jenkins

sudo service jenkins stop

停止jenkins

3.2. 启动Jenkins 创建新任务

启动jenkins之后,在浏览器上面输入<ip地址>:8080就可以打开jenkins主页,进入第一个页面会让输入初始密码:

cat <浏览器上提示的目录地址>

获取密码之后输入登录创建一个新任务:

jenkins创建新任务.png

输入任务的名称,选择 构建一个自由风格的软件项目 ,点击 确定 即创建了一个新的任务,正常情况下,会选择插件安装,笔者使用国外的服务器安装的时候一路畅通提示安装插件,但是国内的服务器却提示 jenkins服务器已经离线 ,如果出现这种问题,则需要在浏览器上输入如下地址进行修改:

http://<服务器IP地址>:8080/pluginManager/advanced , 找到 升级站点 ,将url中的 https修改为http, 这样就能正常安装需要的插件了:

修改jenkins已经离线.png

3.3. 配置jenkins全局环境

安装完插件之后,就来到了jenkins主面板

jenkins主面板.png

配置环境变量在 系统管理->全局工具配置, 将之前配置的 GitJDKGradle设置好:
配置环境.png

3.3. 配置项目

3.3.1 配置 General 构建化参数

添加项目之后,进入项目的系统设置:


配置构建化参数.png

首先看到的是 General, 这个是配置我们一些常用见的构建时候配置,多变体打包;多变体打包涉及到资源文件的设置等,这里的设置关系到后面的编译语句,所以要和application模块中的build.gradle文件相同,这样才能打出我们需要的版本包;这里给出一个实例:

配置构建化过程参数.png

在上面,我添加了buildType,这个名称是随便填写的,后面编译语句需要引用这个字段,这个参数我添加了debugrelease两个打包的版本;然后还添加了一个多变体buildFlavor参数,选项为xiaomitencent两个应用市场的包,所以需要在build.gradle中设置这两个市场的数据,怎么设置请各位自行谷歌~

3.3.2 配置 源码管理

现在项目一般都是由Git来版本控制,同样的,我们配置源码管理的时候选择用Git来版本控制:

配置源码管理.png

输入项目url,认证则需要点击添加按钮,选择账号密码方式或者ssh秘钥方式都是可以的:
添加凭据.png

3.3.3 配置 构建名称及构建

当我们构建的时候,jenkins主面板名称会显示#1, #2, #3,这样的构建名称,显然不是很友好,这里构建环境可以设置构建名称:

配置构建环境.png

配置构建语句:
构建脚本.png

这里 clean assemble${buildFlavor}${buildType} 这里的buildFlavorbuildType就是添加的构建参数。

保存上面的设置之后,进入项目的面板, 选择Build with Parameters开始构建:

build开始构建.png

到此,所有的jenkins配置和构建就结束了。

总结:

  1. 服务器的配置
  2. Android环境的配置
  3. Jenkins的配置
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容