Android Jenkins 自动化打包构建
前言
在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的。因此在这种情况下,开发通常都会搭建一个简单的自动化打包平台(Jenkins),自动化构建打包或者上传到蒲公英,firm等分发平台。作为测试也需要了解相关的知识,用以优化提高开发测试效率。
涉及技术点:
- Jenkins的搭建配置,任务构建
- Android开发环境配置
- Android gradle的配置使用
内容包含:
- Java环境配置
- Android环境配置
gradle配置
- 下载gradle
- 配置环境变量
Jenkins配置
- 插件管理
- 系统设置
- 全局工具配置
- 构建任务配置
多渠道打包,360加固(废弃,直接开发设置gradle脚本)
- 360加固,多渠道打包介绍
- 360打包加固脚本(待优化)
上传蒲公英,显示下载二维码
- 添加插件upload to pyger
- 添加插件description setter plugin
- 配置上传蒲公英参数和显示二维码
参数化构建之选择分支构建
- 添加插件Git Parameter
- 配置参数化构建,选择Git Parameter
- 构建时选择分支
Java环境配置
下载jdk,安装即可
Android环境配置
下载安装配置Android SDK
gradle配置
下载gradle
下载地址:http://services.gradle.org/distributions/
选择与项目相对应的gradle版本
也可以直接使用brew安装
配置环境变量
打开终端:
- open -e ~/.bash_profile,使用文本编辑打开它
#gradle的目录地址
GRADLE_HOME=/Users/louchengwang/Library/gradle-4.10.1
export GRADLE_HOME export PATH=$PATH:$GRADLE_HOME/bin
2. source ~/.bash_profile 更新文件
3. gradle -version 查看gradle 版本
Jenkins配置
Jenkins的安装部署就不说了,一路next就好
插件管理
插件搜索
gradle
gitlab plugin
系统设置
设置全局属性,配置android home
全局工具配置
配置gradle
也可以使用自动安装,但是容易超时,所以还是自己下载安装好了直接使用
构建任务配置
- 源码管理选择 git,输入git账号密码,选择分支
- 触发构建器自行选择
- 构建选择Invoke Gradle script
clean: 清理项目 assembleRelease: 打包项目,生成的apk包路径在 /Android项目/app/build/outputs/apk
高级-设置Root Build script和Build file
这里也可以不设置,如果不设置的话,默认项目目录是在 /Users/louchengwang/.jenkins/workspace
还需要注意的点,Jenkins提供了一些可用的公共变量,例如${WORKSPACE},就是当前项目的目录地址
多渠道打包,360加固(废弃,直接开发设置gradle脚本)
使用360加固宝对安装包进行加固,并且进行多渠道打包。
360加固,多渠道打包介绍
在GitHub中已经将360加固宝文件上传上去,就在Android项目的根目录中,我们使用命令行的方式进行打包加固
360命令行加固打包介绍:
- 使用帮助 java -jar jiagu.jar -help
- 登录 java -jar jiagu.jar -login <username> <password>
- 签名配置,导入签名keystore信息 java -jar jiagu.jar -importsign <keystore_path> <keystore_password> <alias> <alias_password>
- 渠道配置,导入渠道信息 java -jar jiagu.jar -importmulpkg <mulpkg_path> 这个需要看下项目是使用什么样的方式进行渠道划分
- 配置加固服务 查看当前加固服务配置 java -jar jiagu.jar -showconfig
- 应用加固,如果不是高级用户服务,普通的加固服务配置就可以 java -jar jiagu.jar -jiagu <inputAPKpath> <outputpath> -autosign -automulpkg
360打包加固脚本(待优化)
apks=${WORKSPACE}/app/build/outputs/apk channel=("official" "tencent") DEST=${WORKSPACE}/reinforce/ for chan in ${channel[@]} do file=$apks"/"$chan/release/sjk_v1.2.0_$chan.apk file=${WORKSPACE}/app/build/outputs/apk"/"$chan/release/sjk_v1.2.0_$chan.apk java -jar ${WORKSPACE}/jiagu/jiagu.jar -login 15154111005 lou4871768 java -jar ${WORKSPACE}/jiagu/jiagu.jar -importsign ${WORKSPACE}/sjk.jks sanjieke.comsjk sanjieke.com java -jar ${WORKSPACE}/jiagu/jiagu.jar -showsign echo $file java -jar ${WORKSPACE}/jiagu/jiagu.jar -jiagu ${file} ${DEST} -autosign done
待优化的点
- 现在打包渠道是固定死的,应该自动识别apk目录下的包并进行打包加固
- 打包完成后,可以增加压缩打包并邮件发出等服务
保存,点击构建,如果构建失败查看log,看是哪里的问题。
上传蒲公英,显示下载二维码
添加插件upload to pyger
添加插件description setter plugin
配置上传蒲公英参数和显示二维码
配置完成效果
参数化构建之选择分支构建
添加插件Git Parameter
配置参数化构建,选择Git Parameter
返回文档
构建时选择分支
Android Jenkins 自动化打包构建的更多相关文章
- iOS Jenkins 自动化打包构建
前言 在测试app项目过程中,通常都是需要开发打测试包给到测试,但是无论是iOS还是Android的打包过程都是相当漫长的,频繁的回归测试需要频繁的打包,对于开发同学影响还是蛮大的.因此在这种情况下, ...
- gitlab+jenkins自动化打包APK
前置条件: 环境搭建,jenkins需要的插件看这里: gitlab+jenkins自动化打包IOS 配置思路: step1: 搭建sdk,gradle运行环境,参照: CentOS7下安装安装and ...
- Android Jenkins自动打包纪录
关于Jenkins自动打包Android的apk包,网上官方的太多,这里简单纪录一下博主的经历和打包的参数纪录 (本篇文章需要对Jenkins有最基本的基础了解) 博主所在公司曾负责app测试过程中发 ...
- gitlab+jenkins自动化打包IOS-jenkins配置
实现的效果如图: 构建界面: 完成效果: 功能说明: 根据选择的代码分支,执行构建打包 构建成功后根据ipa/apk生成二维码,并可在历史构建列表中展示各个版本的二维码,通过手机扫描二维码可直接安装 ...
- 搭建Jenkins自动化持续构建和部署系统
什么是Jenkins? Jenkins是一个持续集成和持续交付的java应用程序,可以处理任何类型的构建或持续集成.集成Jenkins可以用于一些测试和部署技术.简单得说就是一款自动化构建测试和部署的 ...
- iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App
继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...
- jenkins自动化打包报错:gradle: 未找到命令
shell脚本如下: cd /home/wangju/gitProject/Automation echo "************************开始清理环境********** ...
- Jenkins自动化打包配置
具体流程不细讲,教程很多 * 环境配置: * xmapp安装 * Jenkins.war丢到Tomcat目录中,配置Jenkins * 宿主机安装jdk,gradle,配置环境变量(在Jenkins的 ...
- jenkins自动化打包部署
请参考: http://m.blog.csdn.net/article/details?id=50518959 1.启动 jenkins.war ,打开首页 192.168.158.129:8080 ...
随机推荐
- BZOJ2555 SubString(后缀自动机+LCT)
询问串放在SAM上不跳fail跑到的节点的|right|即为答案.用LCT维护parent树即可.可以直接维护子树信息,也可以转化为路径加.注意强制在线所使用的mask是作为参数传进去的. #incl ...
- 区间dp最长回文子序列问题
状态转移方程如下: 当i > j时,dp[i,j]= 0. 当i = j时,dp[i,j] = 1. 当i < j并且str[i] == str[j]时,dp[i][j] = dp[i+1 ...
- (三)调用web服务
(二)发布第一个WebService服务与DSWL文档解析讲解了如何发布一个web服务,本章主要讲述如何调用一个web服务. 这里有三种方式: 使用代理模式调用,需要将服务端的接口类拷贝到客户端中.( ...
- [C#] LINQ之SelectMany和GroupJoin
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- SSL Virtual Servers
SSL Virtual Servers 来源 https://www.carlstalhood.com/ssl-virtual-servers-netscaler-12/ SSL Virtual Se ...
- Unity 自定义"=="操作符 [翻译来源blogs.unity3d,2014/05]
主要内容来源 https://blogs.unity3d.com/cn/2014/05/16/custom-operator-should-we-keep-it/ 在我们代码里,如果有这样的代码: i ...
- JS有关引用对象的拷贝问题
JS中有关引用对象的拷贝问题 问题描述:在开发过程中,拷贝一个对象数组给另一个数组的时候,改变新数组中对象的属性值,原数组中的对象属性值也跟着改变了. 例如新定义一个数组arr1,里面有两个对象,然后 ...
- js入门之函数
一. 函数 函数可以封装一段特定功能的代码,然后通过函数名可以重复调用 1 .函数的定义 funcation 函数名 (){ 函数体 } 函数名() 调用函数 2. 函数的参数 funcation f ...
- 二分法:从一个只包含数字的list中查找某个数
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/4/10 19:03 # @Author : MnCu # @Site : # ...
- ES使用org.elasticsearch.client.transport.NoNodeAvailableException: No node available
1) 端口错 client = new TransportClient().addTransportAddress(new InetSocketTransportAddress(ipAddress, ...