Jenkins+Gradle实现android开发持续集成、打包
来源:互联网 发布:c语言后缀表达式求值 编辑:程序博客网 时间:2024/05/30 23:10
原文:http://my.oschina.net/uboluo/blog/157483#OSC_h2_5
请参考:android-downloader :https://github.com/snowdream/android-downloader
Jenkins简介
Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上。同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性。Jenkins 的前身是Hudson是一个可扩展的持续集成引擎。
Jenkins安装与配置
下载地址:http://mirrors.jenkins-ci.org/war/latest/jenkins.war。将下载的jenkins.war包直接放到tomcat下的webapps目录,启动tomcat即可安装完成。
编码问题:进入jenkins系统管理页面,会出现如图提示,可修改tomcat的server.xml配置,在Connector 标签添加上 URIEncoding="UTF-8" 。
安全配置:如图
首先的先添加一个administer用户作为超级管理员,全部权限都打勾,如图boluo用户。保存,重启。用刚刚添加的超级管理员作为帐号名注册一个帐号,即可拥有超级管理员权限。
JDK、gradle如果系统环境变量设置的话就不用再设置,用默认的就行。
邮件通知:系统管理>系统设置 如图
Jenkins gradle插件安装
系统管理>管理插件>可选插件 选中Jenkins Gradle plugin插件安装重启即可。
安装慢的话,可以把插件下载下来,手动上传插件或设置代理。如图
Jenkins新建任务
点击新Job,输入任务名称选中构建一个自由风格的软件项目,点击OK,跳到配置页面
源码管理:如图。
Repository URL: svn 的 的地址,如果输入的地址需要输入用户名和密码,将自动跳出红色的提示信息,点击"enter credential" 进入设置svn 用户名。
构建触发器:如图
Build periodically:周期进行项目构建(它不关心源码是否发生变化)
Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
这里我选Poll SCM,(H/5 H(9-23) * * *)
第一个参数代表的是分钟 minute,取值 0~59;
第二个参数代表的是小时 hour,取值 0~23;
第三个参数代表的是天 day,取值 1~31;
第四个参数代表的是月 month,取值 1~12;
最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。
如H/5 * * * * 表示的就是每5分钟检查一次源码变化。
构建:添加Invoke Gradle script,配置如图
Switches :即gradle 后面所接的命令。上面相当于执行gradle clean build命令。
构建后操作:构建失败可以发送邮件通知,如图
gradle 介绍
Gradle 是以 Groovy 语言为基础,面向Java应用为主.基于DSL(领域特定语言)语法的自动化构建工具。现在已是android的默认构建工具了。
android build.gradle配置
01
buildscript {
02
repositories {
03
mavenCentral()
04
}
05
dependencies {
06
classpath
'com.android.tools.build:gradle:0.5.6'
//依赖
07
}
08
}
09
10
apply plugin:
'android'
11
12
dependencies {
13
compile fileTree(dir:
'libs'
, include:
'*.jar'
)
//添加android依赖libs
14
}
15
16
android {
17
compileSdkVersion
17
18
buildToolsVersion
"17.0.0"
19
//签名
20
signingConfigs {
21
myConfig {
22
storeFile file(
"debug.keystore"
)
23
storePassword
"android"
24
keyAlias
"androiddebugkey"
25
keyPassword
"android"
26
}
27
}
28
29
defaultConfig {
30
versionCode
1
31
versionName getVersionName()
32
minSdkVersion
8
33
targetSdkVersion
17
34
}
35
36
//渠道
37
productFlavors {
38
google{
39
40
}
41
tantai{
42
43
}
44
}
45
46
buildTypes{
47
release {
48
signingConfig signingConfigs.myConfig
49
runProguard true
50
proguardFile
'proguard.cfg'
51
}
52
}
53
54
sourceSets {
55
main {
56
manifest {
57
srcFile
'AndroidManifest.xml'
58
}
59
java {
60
srcDir
'src'
61
}
62
res {
63
srcDir
'res'
64
}
65
assets {
66
srcDir
'assets'
67
}
68
resources {
69
srcDir
'src'
70
}
71
aidl {
72
srcDir
'src'
73
}
74
}
75
}
76
}
77
78
79
tasks.withType(Compile) {
80
options.encoding =
"UTF-8"
81
}
82
//替换AndroidManifest.xml的UMENG_CHANNEL_VALUE字符串为渠道名称
83
android.applicationVariants.all{ variant ->
84
variant.processManifest.doLast{
85
copy{
86
from(
"${buildDir}/manifests"
){
87
include
"${variant.dirName}/AndroidManifest.xml"
88
}
89
into(
"${buildDir}/manifests/$variant.name"
)
90
91
filter{
92
String line -> line.replaceAll(
"UMENG_CHANNEL_VALUE"
,
"$variant.name"
)
93
}
94
95
variant.processResources.manifestFile = file(
"${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml"
)
96
}
97
}
98
}
遇到的问题:tomcat下gradle 构建如果遇到Could not load Logmanager "org.apache.juli.ClassLoaderLogManager"
解决:注释掉catalina.bat里面的set JAVA_OPTS=%JAVA_OPTS% %LOGGING_MANAGER%即可
- Jenkins+Gradle实现android开发持续集成、打包
- Jenkins+Gradle实现android开发持续集成、打包
- Jenkins+Gradle实现android开发持续集成、打包
- Jenkins+Gradle实现android开发持续集成、打包
- Jenkins+Gradle实现android开发持续集成、打包
- Jenkins+Gradle实现android开发持续集成、打包
- android开发之Jenkins+Gradle实现android开发持续集成、多渠道打包
- Android开发之Jenkins+Gradle实现持续集成、apk多渠道打包
- Android Jenkins+Git+Gradle持续集成打包
- Jenkins+Gradle实现android开发持续集成问题汇总
- Jenkins+Gradle实现android开发持续集成问题汇总
- Jenkins 持续集成实现 Android 自动化打包
- Jenkins+Gradle+Git+Centos 实现android持续集成、打包(超详细)
- 学习jenkins+git+gradle实现Android持续集成心得总结
- jenkins:使用 Jenkins 实现持续集成 (Android)
- Jenkins+Gradle实现android开发 自动打包 上传蒲公英
- [置顶] Jenkins+Gradle实现android开发 自动打包 上传蒲公英
- Jenkins+svn_Gradle实现android开发持续集成问题笔记
- My97 DatePicker普通调用
- 学习一下改变人生的32句励志名言:
- 值类型和引用类型区别
- 宽字符处理函数函数与普通函数对照表
- python获取文件及文件夹大小
- Jenkins+Gradle实现android开发持续集成、打包
- 编写自定义的字符串一致性匹配方法,只要两个字符串包含同样的字符, 不管字符的顺序如何,都认为两个字符串一致,如:”aabbcc”和”abcabc”被认为是一致的
- Xcode配置Appledoc并生成项目文档
- 《程序员面试宝典》学习笔记-1
- hadoop多文件格式输入
- Lingo2
- ubuntu 12.04编译及调试linux-0.11
- 4Sum
- Lingo教程3