Android gradle 基本使用方法
gradle 的nb之处就不多说了,直接开始讲用法吧。
1. 基本使用 -- 打包单个工程
打包脚本如下:
/*
* Copyright (C) 2015 liangchao
*/
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.2.3'
}
}
apply plugin: 'android'
android {
compileSdkVersion 20
buildToolsVersion "22.0.1"
defaultConfig {
versionCode 12
versionName "2xyx"
minSdkVersion 8
targetSdkVersion 17
applicationId "com.example.SimpleGradleExample2"
proguardFile "proguard.cfg"
}
dependencies {
}
sourceSets { // 配置文件及文件夹路径
main {
manifest {
srcFile 'AndroidManifest.xml'
}
res {
srcDir 'res'
}
java {
srcDir 'src'
}
assets {
srcDir 'assets'
}
}
}
//签名配置
signingConfigs {
relaseConfig {
storeFile file("sge.keystore")
storePassword "sgesge"
keyAlias "sgesge"
keyPassword "sgesge"
}
}
buildTypes {
debug {
debuggable true //ddms里边可以看到进程,否则没法debug
jniDebuggable true
renderscriptDebuggable true
renderscriptOptimLevel 3
applicationIdSuffix ".debug"
versionNameSuffix ".debug"
zipAlignEnabled false
minifyEnabled true
proguardFile "proguard.cfg"
}
release {
minifyEnabled false
proguardFile 'proguard.cfg'
signingConfig signingConfigs.relaseConfig
}
}
}
1.1 apply plugin: 'android' 安卓工程,写成android。如果是library工程,则需要写成android-library
1.2 android { } 里边的内容,来定义android工程的一些选项。下面我们逐一解释一下。
1.2.1 compileSdkVersion , buildToolsVersion, defaultConfig 通过名字就可以知道是干什么的。
defaultConfig 中得applicationId单说一下,applicatinoId,如果不写,则默认为manifest中配置的。具体说明参见:http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
1.2.2 sourceSets 标明了 manifest , res , java , assets的存放位置。
1.2.3 signingConfigs 标明了签名的一些配置。由于一般是在release的情况下进行签名,因此只写了一个
relaseConfig。这里可以写多个config,以便于后面使用。
1.2.4 buildTypes 定义了build的一些属性。
debuggable 标示是否可以进行debug。如果写false,则在ddms中看不到进程,也就无法进行debug了。
minifyEnabled 为true,则标示进行代码的缩减,即code shrinking
zipAlignEnabled 是否zip对齐。zip align 据官网上说,是对apk一个很重要的优化,建议true吧。zipalign说明地址:http://developer.android.com/intl/zh-cn/tools/help/zipalign.html
renderscriptDebuggable RenderScript 可以进行RenderScript的debug。RenderScript的内容参见:http://developer.android.com/intl/zh-cn/guide/topics/renderscript/compute.html#access-rs-apis
applicationIdSuffix applicationId增加后缀,这样可以生成不同包名的apk。便于在手机上同时安装debug和release的。
proguardFile 混淆文件的地址
2. dependices 的详细解释
dependices主要是工程的依赖项。大概分为两个维度,依赖的东东和依赖的方式。
2.1 依赖jar包
compile files('libs/mathutil.jar')
compile 标示依赖的方式。files('libs/mathutil.jar')标示依赖的东东。
依赖的方式还可以是:
compile: 编译依赖,而且也导出
provided: 编译依赖,不导出
androidTestCompile: 测试工程
debugCompile: debug Build Type
releaseCompile: release Build Type.
2.2 依赖其他android-library
这个依赖,篇幅需要较多,再单独开一篇讲吧。
3. 速度优化 -- 使用gradle daemon
希望对大家有帮助,如果有不对地方,还请大家多谅解。
可以通过邮件交流。future_lc@126.com
参考文献:
1. http://tools.android.com/tech-docs/new-build-system/user-guide
2. http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
3. http://developer.android.com/intl/zh-cn/tools/help/zipalign.html
4. http://developer.android.com/intl/zh-cn/guide/topics/renderscript/compute.html#access-rs-apis
5. https://docs.gradle.org/2.6/userguide/gradle_daemon.html