前置条件:

环境搭建,jenkins需要的插件看这里:

gitlab+jenkins自动化打包IOS

配置思路:

step1:

搭建sdk,gradle运行环境,参照:

CentOS7下安装安装android sdk & gradle

step2:

存在1个android项目(可以先自己创建一个helloworld工程,也可以用git clone一个项目至本地)

step3:

确认buildTypes,就是有几个测试环境,这需要和具体的开发沟通好

step4: 

测试打包环境可用:

首先cd到项目的app目录下

git克隆项目目录/trunk/5iwork/android/app

使用gradle clean命令清理一下环境

gradle clean

看到Successful的字样就成功了(这里我忘记截图)

step5:

使用gradle assmbleproRelease打包,打包成功,如图所示:

gradle assmbleproRelease

step6:

在app/build/outputs/文件下找到刚才生成的apk文件

运行pwd命令,记录下apk的目录地址(配置shell打包脚本的时候要用):

项目所在目录/trunk/5iwork/android/app/build/outputs/apk/pro/release

 

step7:

构建打包shell脚本

复制下面的gradle打包脚本,改一改目录地址,用sh build.sh运行,可以生成apk文件进行下1步

 

step8:

配置jenkins构建apk

注意,如果以前有配置过其它项目打包,这里可以直接复制1个job

修改点:

1.替换git仓库地址

2.shell脚本项目目录地址,换为jenkins项目目录;生成apk的目录

step8:

构建py脚本,用来把apk文件上传到蒲公英,参照

pytho脚本-上传apk至蒲公英

注意要改3个点,如图所示:

做完这些,构建Job,验证配置的结果,如图所示,就well done了

其它:

gradle打包脚本

 ## !/bin/sh
## 项目名
##使配置文件生效,否则会报gradle:命令找不到
source /etc/profile TARGET_NAME="AppFrameWork"
APKPATH="build/outputs/apk"
MODELGRADLEPATH="app"
BUILDTYPE=${ENV} ##打包版本,开发给测试打包默认是release的
APKVERSION="release"
##debug版本下,apk无需混淆,可以多一些打印日志的操作。
##release版本下,文件混淆,隐藏日志打印 ## 当前目录
SORCEPATH=${WORKSPACE} ##gradle目录(model级)
GRADLEWORKPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH} ## apk文件的存放路径
EXPORTPATH=${SORCEPATH}/${TARGET_NAME}/${MODELGRADLEPATH}/${APKPATH} ##apk文件的存放路径
EXPORTPATHAPK=${EXPORTPATH}/${BUILDTYPE}/${APKVERSION}/${MODELGRADLEPATH}-${BUILDTYPE}-${APKVERSION}.apk ## 新的apk名
APKNAME="XXXXAPP" ## 更名后apk路径
EXPORTPATHNEWAPK=${SORCEPATH}/${APKNAME}.apk ##切换到gradle工作目录
cd ${GRADLEWORKPATH} echo -e "============First Build Clean============"
## 清理缓存
gradle clean echo -e "============Export APK============" ## 导出APK包
gradle assemble${BUILDTYPE}Release echo -e "============Export APK SUCCESS============" ## 将APK复制到指定目录
cp ${EXPORTPATHAPK} ${EXPORTPATHNEWAPK}
echo -e "============APK Name: ${EXPORTPATHAPK}============"
echo -e "============APK Enviroment: ${BUILDTYPE}============"

如果想顺利的完成自动化打包(安卓)首先需要:

熟悉Gradle脚本(可以看成是一门独立的语言的),理解Task的概念

参考资料:

Gradle 构建基础

Gradle 入门--只此一篇

Tips:

查看build.gradle中共有多少个task::$ gradle tasks

另外对于构造不同测试环境的apk可以参照:

Gradle之构建变体(BuildVariant)

gitlab+jenkins自动化打包APK的更多相关文章

  1. gitlab+jenkins自动化打包IOS-jenkins配置

    实现的效果如图:  构建界面: 完成效果: 功能说明: 根据选择的代码分支,执行构建打包 构建成功后根据ipa/apk生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装 ...

  2. Android Jenkins 自动化打包构建

    前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下, ...

  3. iOS Jenkins 自动化打包构建

    前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下, ...

  4. Jenkins自动化打包(Gitlab)并上传蒲公英

    整个过程详见:https://www.jianshu.com/p/91e8f571fc2b 以下是遇到的问题及解决过程 一.安装homebrew(网速很慢很慢……被墙了) /usr/bin/ruby ...

  5. gitlab+jenkins=自动化构建

    jenkins:运维持续集成工具,靠着丰富的插件挑大梁. gitlab:git代码管理仓库web版,功能强大且丰富. 本文是记录自己工作中从搭建到使用~ 前提是会点git~可以去廖老师的网站学习:ww ...

  6. Jenkins自动化打包配置

    具体流程不细讲,教程很多 * 环境配置: * xmapp安装 * Jenkins.war丢到Tomcat目录中,配置Jenkins * 宿主机安装jdk,gradle,配置环境变量(在Jenkins的 ...

  7. iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App

    继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...

  8. gradle自动化打包apk

    前堤是要在安卓项目中配置好gradle.build脚本 ## !/bin/sh ## 项目名 ##使配置文件生效,否则会报gradle:命令找不到 source /etc/profile TARGET ...

  9. jenkins自动化打包部署

    请参考: http://m.blog.csdn.net/article/details?id=50518959 1.启动 jenkins.war ,打开首页  192.168.158.129:8080 ...

随机推荐

  1. linux--初识别

    镜像网站 下载系统镜像 http://mirrors.163.com/ http://mirrors.sohu.com https://www.netcraft.com/ 命令大全 https://m ...

  2. vue—拖拽

  3. 2018年牛客多校寒假 第四场 F (call to your teacher) (图的连通性)

    题目链接 传送门:https://ac.nowcoder.com/acm/contest/76/F 思路: 题目的意思就是判断图的连通性可以用可达性矩阵来求,至于图的存储可以用邻接矩阵来储存,求出来可 ...

  4. 模块管理常规功能自己定义系统的设计与实现(15--进一步完好"省份"模块)

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jfok/article/details/24737483 "省份"模块的进一步完 ...

  5. LeetCode Lect7 堆及其应用

    概述 堆是一颗完全二叉树.分为大根堆(父节点>=所有的子节点)和小根堆(父节点<=所有的子节点). 插入.删除堆顶都是O(logN),查询最值是O(1). 完全二叉树(Complete B ...

  6. Log4Net 之走进Log4Net (四)

    原文:Log4Net 之走进Log4Net (四) 一.Log4net的结构 log4net 有四种主要的组件,分别是Logger(记录器), Repository(库), Appender(附着器) ...

  7. Log4Net 之将自定义属性记录到文件中 (三)

    原文:Log4Net 之将自定义属性记录到文件中 (三) 即解决了将自定义属性记录到数据库之后.一个新的想法冒了出来,自定义属性同样也能记录到文件中吗?答案是肯定的,因为Log4Net既然已经考虑到了 ...

  8. 【JAVA】input.next().charAt(0);的含义

    接收键盘输入的字符串,并且取出它的第一个字符. 分析: Scanner scan=new Scanner(System.in); String s=scan.next(); //返回一个String ...

  9. JDK 8 中Stream流中的去重的方法

    JDK 8 中Stream流中去重的方法 1.简单的去重,可以使用distinct()方法去重,该方法是通过比较equals和hashcode值去去重, 2.复杂的去重, 例如,在一个JavaBean ...

  10. sort对数组排序

    描述  Array的sort方法用于对原数组进行排序,不会产生新的数组.排序默认的规则是按照数组元素的字符编码进行排序.如果要按照自己的意愿对数组进行升序或者降序排序,就需要对sort传入一个比较函数 ...