Android Studio中Gradle基本配置详解
2018-04-10 本文已影响2人
翻译不了的声响

Android Studio 使用 Gradle 构建工具,而 Gradle 继承了强大、灵活的 Ant 和 Maven 丰富的依赖管理,配置管理简单,脚本编写方便灵活,插件模块化。Gradle 构建工具是任务驱动型的构建工具,并且可以通过各种 Plugin 插件扩展功能以适应各种构建任务。对应 Android 项目的 Gradle 插件就是 Android Gradle Plugin。
1. 版本配置
AS中项目所用的Gradle是由我们工程下面:gradle/wrapper/gradle-wrapper.properties
这个文件决定的。
wrapper.properties文件:
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.3-all.zip
最后一行的distributionUrl
决定了这个项目使用的Gradle版本,不同的项目使用的Gradle版本也不同,我们可以通过修改distributionUrl
来修改Gradle版本。
2. 基本配置
- app下的 build.gradle:
AS 3.0之前:
//说明module的类型,com.android.application为程序,com.android.library为库
apply plugin: 'com.android.application'
android {
//编译的 SDK 版本
compileSdkVersion 25
//编译的 Tools 版本
buildToolsVersion "25.0.2"
//默认配置
defaultConfig {
//应用程序的包名
applicationId "com.example.activitytest"
//支持 SDK 的最低版本
minSdkVersion 15
//支持 SDK 的目标版本
targetSdkVersion 25
//版本号
versionCode 1
//版本名
versionName "1.0"
}
//lint配置
lintOptions {
//默认true 表示当执行lint过程中发现错误 就停止构建
abortOnError true
//检测出错误时 输出绝对路径
absolutePaths true
//执行检查的报告 是否需要生成 htmlOutput报告 默认true
htmlReport false
//执行检查的报告 是否需要生成xml报告 默认true
xmlReport false
//是否输出文不报告 默认false
textReport false
//是否忽略警告 只报告错误
ignoreWarnings true
}
//build 类型
buildTypes {
release {
//proguard 优化是否开启,true的时候会进行代码混淆, 并优化代码去掉多余无用的资源
minifyEnabled true
//移除无用资源文件,和minifyEnabled配合使用,必须开启混淆才可以减少apk的大小
shrinkResources true
//Zipalign优化
zipAlignEnabled true
//加载默认混淆配置文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
//在这里进行库的依赖
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
//v7库
compile 'com.android.support:appcompat-v7:25.1.0'
//设计风格库
compile 'com.android.support:design:25.1.0'
//测试库
testCompile 'junit:junit:4.12'
}
AS 3.0之后:
//在这里进行库的依赖
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
//v7库
implementation 'com.android.support:appcompat-v7:25.1.0'
//设计风格库
implementation 'com.android.support:design:25.1.0'
//测试库
testImplementation 'junit:junit:4.12'
}
- 根目录下的 build.gradle:
AS 3.0之前:
//构建脚本
buildscript {
repositories {
//依赖的仓库
jcenter()
}
dependencies {
//项目依赖的Gradle版本
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
AS 3.0之后:
//构建脚本
buildscript {
repositories {
google()
//依赖的仓库
jcenter()
}
dependencies {
//项目依赖的Gradle版本
classpath 'com.android.tools.build:gradle:3.0.1'
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
3. 全局配置
- 根目录下的 build.gradle:
ext {
compileSdkVersion = 25
buildToolsVersion = "25.0.2"
targetSdkVersion = 22
versionCode = 60
versionName = "1.0"
supportLibVer = "25.1.0"
}
- app下的 build.gradle:
AS 3.0之前:
android {
compileSdkVersion rootProject.ext.compileSdkVersion
buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
applicationId "com.example.activitytest"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode rootProject.ext.versionCode
versionName rootProject.ext.versionName
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
compile "com.android.support:appcompat-v7:$rootProject.ext.supportLibVer"
compile "com.android.support:design:$rootProject.ext.supportLibVer"
}
AS 3.0之后:
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation "com.android.support:appcompat-v7:$rootProject.ext.supportLibVer"
implementation "com.android.support:design:$rootProject.ext.supportLibVer"
}