Android Studio中Gradle基本配置详解

《Android Studio中Gradle基本配置详解》 Gradle

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"    
}
4. 自定义配置

AS多渠道打包和自定义APK打包名称

5. 添加依赖配置

AS添加依赖方式

6. 依赖配置项变化

AS Gradle依赖项配置

    原文作者:翻译不了的声响
    原文地址: https://www.jianshu.com/p/a7464be10343
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞