1.其实我们在app中的build.gradle中填写配置信息的时候,经常看到它,
如果你按ctrl+鼠标左键对着android{},点击进去就知道了,其实android{…}表示的就是AppExtension这个类。
除了AppExtension之外还有2个类与之相似,LibraryExtension和TestExtension,如果是module项目作为lib使用,那么lib下的build.gradle中的android对应的是LibraryExtension;
AppExtension的属性
- aaptOptions:aapt是一个可以将资源文件编译成二进制文件的工具。aaptOptions表示aapt工具设置的可选项参数。
- adbExecutable:adb从编译sdk时执行
- adbOptions:adb的可选项参数
- applicationVariants:应用变体列表
- ==buildToolsVersion==:构建工具版本(必要的)
- buildTypes:构建类型(一般是release和debug,还可以自定义)
- compileOptions:编译可选项参数
- ==compileSdkVersion==:编译sdk版本(必要的)
- dataBinding:Data Binding可选项参数(关于DataBinding的使用)
- defualtConfig:默认配置,对于所有的打包项目
- defualtPublishConfig:默认是release。使用参考
- dexOptions:Dex可选项参数。
- externalNativeBuild:native编译支持。参考
- flavorDimensionList:
- generatePureSplits:是否拆成多个APK
- jacoco:JaCoCo可选项参数
- lintOptions:Lint工具可选项参数
- ndkDirectory:ndk目录(一般在local.properties中)
- packagingOptions:packaging的可选参数
- productFlavors:项目所有flavor
- publishNonDefualt:不仅仅使用默认的publish artifacts。可参考defualtPublishConfig。
- resourcePrefix:创建新资源时使用的前缀。
- sdkDirectory:sdk目录(一般在local.properties中)
- signingConfigs:签名文件的可选项参数
- sourceSets:资源文件目录指定(Android中有自己的AndroidSourceSets,这个一般用于assets,jin等目录)
- splits:splits类型。
- testBuildType:测试构建类型
- testOptions:测试可选项参数
- testVariants:测试变体
- unitTestVariants:单元测试变体
- variantFilter:变体过滤器
其中的每一条的用法可以看一下:gradle属性方法
2.1.看一下各属性的用法和配置:
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 14
targetSdkVersion 24
versionCode 3
versionName "1.2"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
checkReleaseBuilds false
}
}
各属性分别对应如下:
//声明是android 程序
apply plugin: 'com.android.application'
android {
//编译SDK版本
compileSdkVersion 23
// build tools的版本
buildToolsVersion "23.0.1"
defaultConfig {
//该应用的包名
applicationId "com.example.zhang.myapplication"
//最低运行版本
minSdkVersion 21
//最佳运行(目标版本)
targetSdkVersion 23
//versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户。
versionCode 1
//versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显示给用户。
versionName "1.0"
}
buildTypes { //编译项
release
//是否进行混淆
minifyEnabled false
// 混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
apply plugin: 'com.android.application'
android {
//编译SDK版本
compileSdkVersion 23
// build tools的版本
buildToolsVersion "23.0.1"
defaultConfig {
//该应用的包名
applicationId "com.example.zhang.myapplication"
//最低运行版本
minSdkVersion 21
//最佳运行(目标版本)
targetSdkVersion 23
//versionCode:主要是用于版本升级所用,是INT类型的,第一个版本定义为1,以后递增,这样只要判断该值就能确定是否需要升级,该值不显示给用户。
versionCode 1
//versionName:这个是我们常说明的版本号,由三部分组成<major>.<minor>.<point>,该值是个字符串,可以显示给用户。
versionName "1.0"
}
buildTypes { //编译项
release
//是否进行混淆
minifyEnabled false
// 混淆文件的位置
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
2.2
dependencies 指明的就是一些需要用到的第三方库
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
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:24.2.1'
testCompile 'junit:junit:4.12'
}