2020-04-27

# Android打包jenkins教程

### 主要内容

* 基于SVN或Git [测试项目连接](http://10.96.163.81/Wenzhi/fiberhomecolor.git)

* Android项目参数化自动构建

* 自动将APK上传至蒲公英 https://www.pgyer.com

* 自动发Email到指定邮箱提示构建结果

上图

![cdaf6daac0713208041d277c6bc4807a.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p139)

### 安卓必备插件下载

安装插件:

| 插件名 | 作用 |

| --- | --- |

| build-name-setter  | 修改构建名称 |

| description setter plugin | 修改构建目录的描述|

| Email Extension Template Plugin | Email模板编辑 |

| Locale plugin | 修改Jenkins默认语言 |

| Timestamper | 动态获取时间 |

| Upload to pgyer | 将APK上传到蒲公英 |

* 安装插件

* * *

![0b0a4a99ef0dbc1b3226ba5edd83b081.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p99)

选择

![c02ceed72d07c21ba264afea0feb1599.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p102)

#### 两种方法安装

1.选择可选插件安装

![8571b0966fcbb5543239bd528e1b5a2f.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p103)

搜索之后直接点击直接安装就行

![226673d620d627c2e5f014b9c62cbc96.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p104)

* * *

2.如果出现代理错误,或者安装失败可以通过jenkins镜像网站下载

jenkins镜像网站[连接地址](http://mirror.xmission.com/jenkins/plugins/)

下载完成的后缀是hpi文件

![424279d75db21bc186b22f48bebb12ab.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p105)

下载完成之后点击高级上传本地插件即可

![afe7af273ce1a2eba25cbf3ef58883fc.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p106)

系统管理员的邮箱一定要设置,这是个坑,要是不设置,你的邮箱怎么配置都不会触发,Jenkins URL则是访问地址安装的时候会要求设置,我这里是设置成本机电脑ip,这样局域网内别的电脑也可以访问。

![923b236e9821d8ba685ba7f268ce48d7.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p136)

![24f94ef3e9ac947bb8c6b4bbf00f4846.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p137)

但是服务器好像有bug 不知道为什么暂时未解决

![3633c1c179eb123af0f685fba2eae133.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p138)

**备注这些插件我都已经安装了**

## 开始构建项目

首先环境变量的设置

设置服务器端安卓的环境变量已经设置

![f5fc52b89acca3c104c1f928d64b1946.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p110)

如果你的项目需要跟新android SDK 可以登录服务器运行

```

android list sdk --all

```

如下

![e75c81d9cb38a0d844faee1a94899f79.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p111)

选择你需要

如果需要安装多个软件包进行更新安装,比如:

```

android update sdk -u -a -t 1,2,3,4,..,n

```

* 选择自由项目,输入项目名字

* ![0755b3cd49dc4065618d193d1fed2d32.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p112)

配置项目开始

1. 选择源码管理,填入你的git项目地址

![b221ae37a1c6e52728388b2b41a97959.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p113)

2.然后配置构建,选择Invoke Gradle script

![6578dc2d72687113e2a6be543f3c3d49.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p117)

3. 点击展开Tasks,然后输入

```

clean

assembleDebug

--stacktrace

--debug

```

4. 输入完上面内容后,展开高级内容,勾选![cd1543a9a456e08bc8893f65597096ba.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p118)

windows一定要勾选,不然构建失败,这个选项就相当于Android Studio的Gradle的缓存目录,如果项目多,懒得勾选,则可以在第一步的系统设置中的环境变量中配置GRADLE_USER_HOME环境,本地找个文件夹即可(最好使用Android Studio的Gradle默认缓存目录)

如下

![bd3e481ca7e5b9fb52856a453c913ba8.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p119)

5.点击应用,保存,然后点击![ef6e78d4315c2de306003b754149e963.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p120)

即可进行构建,如图构建成功,可以进去查看日志,或者到工作空间去查看生成的apk包

### 配置参数化构建

选择![c4e0e4bab7291545dcbefcc0e1a64d7a.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p121)

这里可自由配置任何参数

![f07a8ac8acb21d874baca56e38bc52c9.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p122)

部分参数的翻译

| 参数名 | 翻译 |

| --- | --- |

| Boolean Parameter | bool值 true或者false|

| Choice Parameter |可以选择的参数,一定要注意每个选项换行 |

| String Parameter | 字符串参数|

6. 参数配置完成,可以自己持续添加自己需要的参数,也可以自己更改参数名称,但是更改的参数名称要和Android项目中gradle.properties文件中的参数名对应,有些需要默认参数,签名文件为了安全尽量不要填写默认密码

例如哥伦比亚项目gradle.properties配置如下与你设置的参数进行一一对应

![f42990d7d7d380a77cc8a23d98764583.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p123)

7. 在构建中,把Tasks中的Debug改成${BUILD_TYPE}调用刚刚配置的参数,勾选Pass all job paramenters as Project properties 把参数注入到项目中

![2b9d24c2af194fdb9d4863e51d8c22d8.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p124)

注意:如果不勾选这个,jenkins不会注入所设置的参数

8. 点击应用,保存,会发现项目首页的立即构建变成了Build with Parameters,点击则出现右侧参数列表,选择release尝试构建。

![1a605ceee5988601da72770617283ae4.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p125)

9. 继续优化配置 设置构建触发器SCM

![027ecdb93ad9b2654d4a95726881f15c.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p126)

每隔10分钟检查资源库是否有提交更新,有更新则进行构建

*/10 * * * *

10. 将APK包上传到蒲公英https://www.pgyer.com

![dbaed8e7ac7d247f9db915726343fea6.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p128)

![1bbe2291360b23c6a29cdf141a750908.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p127)

输入你的蒲公英的userkey和appkey

![da771c6b9e2996cc0b1b05983b398551.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p129)

打包目录和文件

![c22d504678542d1a8d9c5103d9b770dd.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p130)

支持通配符搜索。

上面表示,在工作目录下面app目录下build目录下outputs目录下apk目录下

文件名

xxx/xxxxxxxxxxx.apk

11. 输入参数

![a0e7937d1d7d3b883504b24567132368.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p133)

12. 设置构建完成之后的显示二维码

![fad41f4837a58f52638811965f104a46.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p132)

填入下面

```HTML

<br> ${appName}_ ${appVersion} </br> <img src=${appQRCodeURL}/> <br>下载地址:<a href=${appPgyerURL}>APK下载链接</a></br>

```

可以使用的参数

![158181b37c9a393f2c9c9bfd0b8dc885.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p134)

13. 建完成后发邮件

  在构建后操作添加Editable Email Notification,默认部分不需要更改,因为内容在配置系统设置的时候已经配置好,如果要动态增加接收人的邮箱,在Project Recipient List 中加入邮箱即可用 ,隔开,点击底部的Advanced Settings设置触发条件。即可发送邮件到指定邮箱。可以根据自己的需要配置邮箱触发事件,如果不配置则不会发送邮箱

![b9162fca16ae5920c82f2e8eb5f942e6.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p135)

## 最好使用阿里云镜像进行设置maven

![901641a217b58955287dfa125519bb9c.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p131)

不然很多时候编译日志会爆404 或者超时

配置安卓gradle

![87cebc0ebce3d20b48266bbd4008a62c.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p141)

build文件

![5c4a11a6faaa19dce20feea289295b4b.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p142)

## 上传keystore文件到服务器

使用

```

//local_folder 本地文件夹路径 remote_username 远程服务器登录的账户 root , remote_ip 服务器ip, remote_folder服务

//器上传的路径

scp -r local_folder remote_username@remote_ip:remote_folder

```

目前我已经在这个路径/media/new/fiberhomekey下上传了一个key

![27e39c5f649792f644f7853cb4020c2f.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p143)

可以直接使用

```

storePassword 'smartnetwork'

keyAlias = 'smartnetwork'

keyPassword 'smartnetwork'

```

![ac36b1a7907450a22cc0f51836758358.png](evernotecid://2F5C6CF8-0D7E-48CF-9680-88B84D6B037D/appyinxiangcom/13318295/ENResource/p148)

### 教程🔚

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

推荐阅读更多精彩内容

  • 安装 关于旧版本 Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。 如果你已经全局安装了旧版...
    追寻1989阅读 459评论 0 0
  • 前言 最近公司需求,需要部署jenkins方便运营自己打包不同渠道的apk去发布,我自己是在网上找了很多博客,最终...
    文武锅阅读 2,630评论 0 0
  • 1引言 随着币市成熟生态形成,数字资产流通变的日益频繁,而数字资产流通又促使交易平台爆炸式发展,这让很多币市淘金人...
    刘杰辉阅读 1,216评论 0 1
  • 坚持目标【原创】分享第825天2019.5.4同课异构好处多,可以从不同的视角,打开不同的思路,茅塞顿开。关于赞美...
    坚定目标阅读 163评论 0 1
  • 记忆就像是水流一样,从掌心里无力地滑落,再无痕迹。但是手中还会残留着那一刻的温凉。这份凉凉的感觉会静静地躺在心里边...
    叶流凡阅读 279评论 0 3