Gradle其他好处就不多说,在android应用发布的时候,如果要统计多个渠道,gradle 批量打包的好处就显示出来了,发现确实比Ant打包会方便很多,就说下本篇Gradle作用吧

主要功能:
多渠道自动打包
beta /debug/relese /多版本打包
dex突破65535的限制
打包自动命名,提交测试时方便识别,不用每次打包测试 ,重命名啦!
自动移除程序LOG_DEBUG调试
自动移除无用资源文件,为APK瘦身
混淆代码
更多强大功能探索中……

Gradle 基本概念

首先我们学习几个gradle 的脚步语法,掌握了这几个语法,你就能非常简单的用gradle构建打包android项目了。 首先,我们来看下一个最简单android build.gradle。

apply plugin: ‘android’//声明构建的项目类型,这里当然是android了
buildscript{} //设置脚本的运行环境
repositories{}支持java 依赖库管理(maven/ivy),用于项目的依赖
dependencies{}//依赖包的定义。支持maven/ivy,远程,本地库,也支持单文件
android{}编译android项目的参数

废话不多说,来一份我在项目中使用的完整的gradle文件配置吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
android {
compileSdkVersion 22
buildToolsVersion "22.0.1"
defaultConfig {
applicationId "com.rtmap.sample"
minSdkVersion 9
targetSdkVersion 22
versionCode 10
versionName "1.3"
// dex突破65535的限制
multiDexEnabled true
manifestPlaceholders = [channel_param: "official"]
}
//----begin 是为了兼容Eclipse 可忽略
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
//----end
buildTypes {
release {
// 不显示Log
buildConfigField "boolean", "LOG_DEBUG", "false"
minifyEnabled true
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// signingConfig signingConfigs.release
}
beta {
// 不显示Log
// buildConfigField "boolean", "LOG_DEBUG", "false"
versionNameSuffix "-beta"
// minifyEnabled true
zipAlignEnabled true
// 移除无用的resource文件
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// signingConfig signingConfigs.release
}
debug {
versionNameSuffix "-debug"
zipAlignEnabled true
// 移除无用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
// signingConfig signingConfigs.release
}
applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (variant.buildType.name.equals('release')) {
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// erdoushop_v1.1_release_201508101027
def fileName = "erdoushop_v${defaultConfig.versionName}_release_${getDate()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
if (variant.buildType.name.equals('beta')) {
if (outputFile != null && outputFile.name.endsWith('.apk')) {
// erdoushop_v1.1_beta_201508101027
def fileName = "erdoushop_v${defaultConfig.versionName}_beta_${getDate()}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
}
}
def getDate() {
def date = new Date()
def formattedDate = date.format('yyyyMMddHHmm')
return formattedDate
}

文章目前只讲到了打包,时间喘促,先写到这里,最近都比较忙,没时间写博客,后期博客会整理一下,现在就当作笔记一下 ,怕以后忘记了。