Linux gradle编译安卓,Linux+Jenkins+Gradle构建Android参数化自动打包(一)

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

前言

最终结果

最终我们要实现的是实现Jenkins上面配置应用版本号、Git分支、应用渠道、请求基地址、应用环境等参数,进行一键参数化构建打包上传至蒲公英并发送邮件通知给自定义的接收者

最终实现参数化配置大致如下所示:

bf5c5d2385850a7efaef35caa88fae75.png

发送邮件(邮件内容较长,进行了相应缩小)

环境搭建

所需环境新版Jenkins(需能安装参数化构建插件)

Tomcat

新版Jenkins

Android SDK

Android NDK

aapt

Git

Gradle

其它(视自身项目所需)

CenterOS64位已有环境Jdk1.7

Tomcat

旧版Jenkins

1. Jdk安装及配置

由于Android开发使用的 Jdk1.8,因此不能复用服务器上现有的Jdk

首先去Oracle Downloads下载 Jdk for Linux.笔者下载的是jdk-8u131-linux-x64.tar.gz

上传到服务器,进入相关目录解压1tar -zxvf jdk-8u131-linux-x64.tar.gz

可将目录移至其他目录.其实最好在解压前就将压缩包移至目标目录

Jdk环境变量配置(可选)

由于后台使用了JAVA_HOME、JENKINS_HOME等一系列环境变量名,所以服务器上默认调用的会是他们的环境变量,我们开发的一套只能在自己的Tomcat、Jenkins中进行指定,具体下文会进行说明

2. Tomcat安装及配置

首先去Tomcat Download选择版本进行下载.这里笔者选择的是apache-tomcat-7.0.79.tar.gz

上传到服务器,进入相关目录解压1tar -zxv -f apache-tomcat-7.0.79.tar.gz

a.端口修改

由于常规tomcat端口被已有tomcat占用,因此我们需要修改端口

进入conf目录下的server.xml修改,此处笔者是用Vim修改.不会用的同学请出门左转度娘🤔

主要修改的是,设置为自定义端口号Tomcat admin port 即文件最上面的端口号

Http/1.1 port 连接访问的端口号

AJP/1.3 port

b.环境配置

指定Tomcat运行时环境,在bin目录下修改setclasspath.sh 以下是笔者的环境,请自行替换路径1

2

3export JAVA_HOME=/usr/android/java/jdk1.8.0_131

export JRE_HOME=/usr/android/java/jdk1.8.0_131/jre

export JENKINS_HOME=/home/android/jenkins

3. Gradle安装及配置

首先去Gradle Download下载对应Gradle版本,笔者使用到的是gradle-3.3-all.zip

上传到指定目录解压1unzip gradle-3.3-all.zip

然后添加环境变量vim /etc/profile,在环境变量配置处增加一句1export GRADLE_HOME=/home/gradle-3.3/bin

4. Android Sdk For Linux 安装及更新

这里下载Sdk解压都不是难点.难点在于安装之后更新的问题.

65adf47391fa3495c67f143957178fec.png

用AS或者Eclipse的同学肯定接触过Sdk Manager,此处选择更新后要手动点Accept License才能启动更新.但是在Linux下没有界面化的勾选可用.因此需要用脚本来更新.网上有说复制License的方法笔者试了无效,也许是姿势不对吧,此处也是踩了很久的坑才搜出来的解决方法:

更新Sdk方法传送门 这里先感谢下该作者👏

这里也为不愿跳传送门的同学说明一下,就几个步骤.

a.查看可更新列表

在Sdk的tools目录使用./android list sdk --all查看远程服务器提供的Sdk包的序号,记录想要更新的Sdk序号

b.编辑脚本1

2

3

4

5

6

7#!/usr/bin/expect

set timeout -1

spawn /usr/local/android-sdk-linux/tools/android update sdk -u -a -t 1,2,3,24,25,26,27,28,30,95,96,102,103,104,105,106,107

expect {

"Do you accept the license" { exp_send "yr" ; exp_continue }

eof

}

此处1,2,3,...为需要下载的Sdk序号

c.运行脚本

待脚本跑完,sdk就更新完毕了注意此处脚本用到了expect,需要在服务器上安装,此处提供expect安装传送门

5. Ndk for Linux安装

安装较简单,后续需配置Jenkins系统变量,下文会进行说明项目因用到了Jni,需要安装Ndk,可是后期发现在项目里每次均去编译jni导致项目的compile sdk不能使用高于23的,致使Instant Run等功能使用,很影响开发效率.后期改在项目外编译好了静态库然后放入项目中,这样不会限制项目自身的SDK版本,因此若未使用JNI的项目,则可跳过此步骤

6. Git安装及环境变量配置

下载安装并配置环境变量1export GIT_HOME=/usr/android/git-2.12.2/bin

7. Jenkins安装及配置

a. 下载

下载Jenkins将war包放入Tomcat的webapps目录下,启动tomcat

然后在地址栏输入路径http://localhost:/8777 其中8777为第二步中自定义的端口号

b. 插件安装

然后安装插件(基本参考网上的)1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

231.Branch API Plugin

2.build timeout plugin

3.build-name-setter

4.Credentials Binding Plugin

5.description setter plugin

6.Dynamic Parameter Plug-in

7.Environment Injector Plugin

9.Git plugin

10.GIT server Plugin

11.Gradle Plugin

12.Git Parameter Plug-In

13.Pipeline: Basic Steps

14.Pipeline: Build Step

15.Pipeline: Input Step

16.Pipeline: Nodes and Processes

17.Pipeline: Stage Step

18.Scriptler

19.Workspace Cleanup Plugin

20.Post-Build Script Plug-in

21.Email Extension Plugin

22.SSH Slaves plugin

23.Timestamper

(不明为什么少8)

因为Jenkins版本不同,实际使用中发现缺失不少

以下附上笔者所安装的所有插件(若无问题的可跳过)

ace16e99f5541caef9a555ee89a6d0a5.png

7f69c9027b2f5198a06013bb009120e5.png

5955418e18b6c3e657d3eaa9e6b2d427.png

43c34c863ebeaa90d9370be6c6fc76fb.png

d4a5eaee49c3539cebf14087e145f87e.png

b94862317426e120a177c25b9b9c57fc.png

fb752a1ccc172a6ca6b8fb7e1e124e31.png

3eb5d90d534ba7ffce4749f281ac14fa.png

c. 环境变量配置

环境变量

首先点击系统管理->系统设置配置Jdk、Android Sdk、Gradle、Android Ndk环境变量(此处也可配置Git目录,笔者是将Git目录配置在Linux环境变量中了)

020924ff79c7c308893a6ad07449b694.png

其它如邮件相关配置的在下篇会说明

至此环境大体上配置已经完成,下篇即可进入项目相关配置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值