Android自动打包-通过Jenkins
来源:互联网 发布:java中的迭代器是什么 编辑:程序博客网 时间:2024/06/08 06:51
安装Jenkins:
从Jenkins官网下载安装包或war包。
通过安装包安装
正常安装后,通过浏览器访问http://localhots:8080即可
通过war包安装
修改安装路径
jenkins默认安装在c盘 C:\Users\Administrator.jenkins下
新建一个系统变量:JENKINS_HOME,值为D:\jenkins,或者其他目录。再将此路径添加至Path里。
Jenkins的启动方法有两种:
- 第一种是使用tomcat直接打开:
把jenkins.war放入tomcat下的 webapps目录下,当启动jenkins时,就会自动在webapps下建立jenkins目录。然后通过浏览器访问http://localhost:8080/jenkins即可。 - 另一种方法是通过命令行:
首先要确保系统中安装了jdk,并且配置了环境变量,检测方法就是在命令行输入java回车后有多行的命令符提示。
直接在命令行输入java -jar %jenkins.war所在文件夹%/jenkins.war
即可启动jenkins,默认会运行在8080端口,然后通过浏览器访问http://localhots:8080即可。
安装Jenkins插件:
系统管理->插件管理->管理插件->可选插件
按照下面的插件列表,搜索并勾选下载安装。务必不要缺失,造成后续配置缺少参数选项和部分功能缺失。
必要的插件列表:
Branch API Pluginbuild timeout pluginbuild-name-setterCredentials Binding Plugindescription setter pluginDynamic Parameter Plug-inEnvironment Injector Plugin Subversion Plug-inSubversion Release Manager pluginGIT server PluginGradle PluginGit Parameter Plug-InPipeline: Basic StepsPipeline: Build StepPipeline: Input StepPipeline: Nodes and ProcessesPipeline: Stage StepScriptlerWorkspace Cleanup PluginPost-Build Script Plug-inEmail Extension PluginSSH Slaves pluginTimestamper
手动下载插件
有些插件从可选插件中找不到,可以手动下载安装:http://mirror.xmission.com/jenkins/plugins/
PS:安装Dynamic Parameter Plug-in要先手动安装 Scriptler Plugin 这个插件,然后在手动安装 Dynamic Parameter 这个插件。
Jenkins配置-重点
环境配置:
主界面->系统管理->Global Tool Configuration
: 配置好JDK与Gradle。
JDK :
别名=随意。
JAVA_HOME=即环境变量中JAVA_HOME中的内容Gradle:
别名=随意
GRADLE_HOME= gradle的安装目录路径xx/gradle\gradle-2.14.1
(可以直接配置android studio 安装目录中的gradle,也可以是 .gradle\wrapper\dist目录下。
gradle可以配置多个,兼容不同编译版本。)
打包配置
主界面->新建->构建一个自由风格的项目->ok
,进入到新建项目后,填写名称及说明。
- 选择→源码管理
- 选择→构建插件,我们准备的是gradle,所以选择 Invoke Gradle script
选择配置的gradle的版本,在 taks 栏输入 命令:clean assembleRelease --stacktrace --debug
点击保存!
无属性构建
点击立即构建,在 build history可看到任务执行。
任务前有个蓝色小圆点,如果项目构建失败,任务前的小圆点为红色,构建成功依然为蓝色。
同时在Console Output中可查看构建日志, 日志最后出现Finished: SUCCESS,即构建成功。
如果出现 Finished:Failed构建失败,日志内容比较多,直接全局搜索error查看报错信息。
进入→**工作空间**中可看到和工程目录一样的结构,找到apk包。
以上就完成了简单的部署和构建。
自定义属性配置
使用自定义属性,我们需要使用到gradle文件和properties文件
配置需要使用的自定义属性
.properties文件
APP_VERSION = 1.0.1IS_JENKINS = falseBUILD_TYPE = debugPRODUCT_FLAVORS = xiaomiALIAS_PASSWORD = androidSTORE_PASSWORD = androidBUILD_PATH_JENKINS = E\:\\JenkinsApkBUILD_PATH_LOCAL = D:\\AS_PROJECT\\TestJenkinsBUILD_TIME= 1970-1-1APPNAME = JKApp
.gradle文件
apply plugin: 'com.android.application' def getDate() { def date = new Date() def formattedDate = date.format('yyyyMMddHHmm') return formattedDate } def verCode = 14 android { //渠道Flavors productFlavors { xiaomi { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] } wandoujia { manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } } compileSdkVersion 23 buildToolsVersion "25.0.0" signingConfigs { release { keyAlias 'androiddebugkey' keyPassword ALIAS_PASSWORD storeFile file('sinkkey.keystore') storePassword STORE_PASSWORD } } defaultConfig { applicationId "zsw.testjenkins" minSdkVersion 16 targetSdkVersion 23 versionCode verCode versionName "1.0" versionName APP_VERSION testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release } debug { signingConfig signingConfigs.release } }//修改生成的apk名字及输出文件夹 applicationVariants.all { variant -> variant.outputs.each { output -> //新名字 def newName //时间戳 def timeNow //输出文件夹 def outDirectory //是否为Jenkins打包,输出路径不同 if ("true".equals(IS_JENKINS)) { //BUILD_PATH为服务器输出路径 timeNow = BUILD_TIME outDirectory = BUILD_PATH_JENKINS //JKApp-v1.0.1-xiaomi-release.apk newName = APPNAME+"-v"+APP_VERSION + '-' + variant.productFlavors[0].name + '-' + variant.buildType.name + '.apk' } else { //本机打包输出在本机路径 timeNow = getDate() outDirectory = BUILD_PATH_LOCAL newName = APPNAME+"-v"+APP_VERSION + '-' + variant.productFlavors[0].name + '-' + variant.buildType.name + '.apk' } output.outputFile = new File(outDirectory+"/"+timeNow, newName) } }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:23.0.0' testCompile 'junit:junit:4.12'}
上面我们配置了、渠道包、签名文件、版本号、apk命名、apk输出文件夹,在.properties文件中需要 一 一 与之对应。
下面我们进入到Jenkins对上述参数进行对应配置。
Jenkins对应参数配置
找到 参数化构建过程选项→打勾
选择→添加参数
选项参数使用 Choice
字符输入参数使用 String Parameter
时间参数使用 Dynamic Parameter
在添加参数时,配置Name的值必须与.properties文件中定义的参数名称相同。
我们需要用到的仅这三个,具体输入如下图。
参数类型 参数名 值
1.0.2
1.0.3 PRODUCT_FLAVORSxiaomi
wandoujia BUILD_TYPErelease
debug IS_JENKINStrueDynamicBUILD_TIMEreturn new Date().format('yyyyMMdd-HHmm')StringAPPNAME
JKApp
将需要的参数按类别添加即可。
参数引用
找到上面我们使用Gradle 插件的 Invoke Gradle script
修改tasks命令clean assemble${PRODUCT_FLAVORS}${BUILD_TYPE} --stacktrace --debug
,应用上面的参数。(PRODUCT_FLAVORS
和BUILD_TYPE
即我们上面配置的参数,务必保持一致)
并勾选Pass job parameters as Gradle properties选项。如下图。
点击保存,回到项目首页。
就可以看到,原先的立即构建已经变成了Build with Parameter
点击参数构建,就可以看到如下上面我们配置的参数。
等待构建完成,前往在.Gradle文件中配置的路径中即可找到我们配置的命名apk。
修改构建名称
原命名只是构建编号,无辨识度
进入项目配置找到→构建环境→勾选Set build Name 设置参数
重新打包,如上图我们使用了BUILD_NUMBER 自带参数,以及 APPNAME、APP_VERSION、BUILD_TYPE ,最后效果如下图。
二、生成二维码
RT:生成二维码还没实践过……
相关知识
Jenkins提供的全局变量
这些变量可以在写脚本,包括gradle脚本以及python脚本的时候可以调用,我们也可以自己通过插件来配置一些变量,用来进行构建不同的渠道包,下面选取了一些常用的:
Jenkins登陆无效解决方案
当关掉jenkins的网页,再重新打开的时候,会让你重新登录,但是当你输入正确的用户名跟密码的时候,却会提示你登陆无效,解决方案如下:
1.找到安装目录下的config文件
2.找到useSecurity节点,将true改为false
<useSecurity>false</useSecurity>
3、找到authorizationStrategy跟securityRealm节点,删除这两个节点
4、重启jenkins,不知道怎么重启的,直接重启电脑,再次启动jenkins即可。
简单的Groovy语法
普通标识符:以字母、美元符号$或下划线_开始,不能以数字开始
def date = new Date()
引号标识符:使用单引号括住的字符串
def name = 'android'
括号{}:表示引用
美元符号$:表示拼接
assemble${PRODUCT_FLAVOR}${BUILD_TYPE}//相当于assembleWandoujiaRelease
基本的gradle命令
引用:
Android-解放双手告别测试-使用Jenkins自动化打包
利用Jenkins玩转Android自动打包发包
Jenkins安装修改默认路径和端口的方法
当 jenkins遇上Android Studio 3.0
- Android自动打包-通过Jenkins
- Jenkins Android 自动打包配置
- Jenkins Android 自动打包配置
- Jenkins搭建Android自动打包
- Jenkins实现Android自动打包
- Jenkins实现Android自动打包
- Android+jenkins自动打包教程
- Android:利用jenkins实现Android自动打包
- 用Jenkins搭建Android自动打包环
- 用jenkins搭建android自动打包环境
- 用jenkins搭建android自动打包环境
- jenkins+gradle+android 定时自动打包
- Jenkins+gradle+SVN+Android 定时自动打包
- 用Jenkins搭建Android自动打包环境
- 用jenkins搭建android自动打包环境
- 用Jenkins搭建Android自动打包环境
- Jenkins Android自动打包平台配置
- Android自动打包发包 利用Jenkins
- python学习---第四天
- 这是在csdn的第一天
- Presto内存管理源码分析
- [UESTC876]爱管闲事
- 第12章 电子商务网站用户行为分析及服务推荐
- Android自动打包-通过Jenkins
- 5.7 对象上的转型对象(略)
- bzoj3564 信号增幅仪【最小圆覆盖+坐标变换】
- 35.开源项目--git发起一个公开项目
- 5.8 继承与多态
- java反射学习笔记(3)---使用Class来获取方法、成员变量、构造函数信息
- 安卓 SurfaceView 和 View 的区别和使用方法
- 抽象工厂
- [BZOJ4397]Breed Counting-前缀和乱搞