理解Gradle文件
根目录的setting.gradle
文件在初始化时被执行,定义了要构建的模块,同时定义了Settings
对象:
include ':app'
根目录所对应的rootProject
的build.gradle
实际构建配置在buildscript
,allprojects
声明用于所有模块的属性
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.0'
}
}
allprojects {
repositories {
jcenter()
}
}
模块层的构建文件可以覆盖顶层build.gradle
的任何属性,首先应用android application
插件提供构建Android应用所需。android
代码块包含Android特有配置,必须的属性包括compileSdkVersion
和buildToolsVersion
,defaultConfig
配置应用核心属性,可全面覆盖AndroidManifest.xml
。applicationId
定义了应用唯一识别符,而资源代码和R类继续使用AndroidManifest.xml
中的包名。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "24.0.2"
defaultConfig {
applicationId "chenyummy.douban250"
minSdkVersion 21
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "String", "API_URL","\"http://api.abc.com\""
resValue "String" "app_name" "Name"
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.android.support:appcompat-v7:25.1.0'
}
任务入门
Android插件使用了Java基础插件(定义了check和build任务),Java基础插件又使用了基础插件(定义了assemble和clean任务,仅定义约定,不实现)
- assemble :打包项目的输出
- clean :清理项目的输出
- check : 运行所有测试,包括单元和集成测试
- build:运行assemble和check
对于Android插件
- assemble :为每个构建版本构建一个apk,依赖于assembleDebug合assembleRelease
- clean :清理项目的输出
- check : 运行Lint检查
- build:运行assemble和check
自定义构建
BuildConfig和资源
可以通过BuildConfig.API_URL
引用常量还可以配置资源值(不加转义双引号)。
项目范围的设置
allprojects {
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "24.0.2"
}
}
实现这种方式的更好方法是在顶层构建文件中定义值,然后将它们应用到模块,任何Project对象上都能定义额外属性
ext{
compileSdkVersion 25
buildToolsVersion "24.0.2"
}
android{
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
}
项目属性可以通过如下方式设定
- ext代码块
-
gradle.property
文件 - -P命令行参数