Gradle文件结构介绍

Android Studio 项目中,会存在多个 .gradle 文件。其中, project 目录下存在一个build.gradle 文件和一个settings.gradle文件;每一个module会存在一个build.gradle文件。

(1)project目录下的Gradle文件

默认的 project 目录下的 build.gradle 文件内容:

buildscript {
    repositories {
        jcenter()//这是构建插件所使用的远程库
    }

    dependencies{
        classpath 'com.android.tools.build:gradle:1.3.0'
        //这是项目所使用的 Android gradle 版本
    }
}

allprojects {
    repositories {
        jcenter()(http://jcenter.bintray.com/)
         //这是使用远程库依赖的时候的远程库
    }
}

()buildscript :用于设置驱动构建过程的代码。

jcenter():声明使用maven仓库。表示依赖从Bintary’sJCenter Maven仓库中获取。
mavenCentral() (老版本中):表示依赖从 Central Maven 2 仓库中获取
mavenLocal():表示依赖从本地的Maven仓库中获取

dependencies :声明了使用 Android Studio gradle 插件版本。一般升级AS或者导入从Eclipse中生成的项目时需要修改下面gradle版本。

()allprojects:设置每一个 module 的构建过程。在此例中,设置了每一个 module 使用 maven 仓库依赖。

(2)project 目录下的 settings.gradle 文件

默认的 project 目录下的 settings.gradle 文件内容:

include ':app'

()include ‘:app’:表示当前 project 下有一个名称为app的module 。

如果你的一个 module 并不是 project 根目录下,你可以这么设置。
project(‘:app2’).projectDir = new File(‘path/to/app2’)

(3)module目录下的Gradle文件

完整的module目录下的build.gradle文件内容:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    lintOptions {
        abortOnError false
    }

    defaultConfig {
        applicationId "com.hhb"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 481
        versionName "4.7.3"
        // dex突破65535的限制
        multiDexEnabled true
    }

    signingConfigs {
        release {
            storeFile file('hhb')
            storePassword 'hhb'
            keyAlias 'hhb'
            keyPassword 'hhb'
        }
        debug {
            storeFile file('hhb')
            storePassword 'hhb'
            keyAlias 'hhb'
            keyPassword 'hhb'
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            zipAlignEnabled true
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

    debug {
            signingConfig signingConfigs.debug
            minifyEnabled true
            zipAlignEnabled true
            shrinkResources false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    productFlavors {
        yaowang_yaodian{
            manifestPlaceholders = [channel:'yaodian', debuggable: 'false', loggable: 'false']
        }

    }
}
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.0'
}

()apply plugin: ‘com.android.application’
表示这是一个 android application module 。

如果是com.android.library
表示这是一个 android library module 。

()android:配置所有android构建过程需要的参数。

compileSdkVersion:用于编译的 SDK 版本。

buildToolsVersion:用于 Gradle 编译项目的工具版本。

lintOptions :执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉

defaultConfig:Android 项目默认设置。

applicationId:应用程序包名。

minSdkVersion:最低支持 Android 版本。

targetSdkVersion:目标版本。

versionCode:版本号。

versionName:版本名称。

signingConfigs:设置签名文件信息

buildTypes:编译类型(打包类型)。默认有两个: release 和 debug 。我们可以在此处添加自己的 buildTypes 。

signingConfig :配置签名文件

minifyEnabled:是否使用混淆。

zipAlignEnabled:Zipalign优化

shrinkResources:删除无效的Resource
shrinkResources依赖于minifyEnabled,必须和minifyEnabled一起用,这样生成的APK会小很多.

proguardFiles:使用的混淆文件,一个是系统默认的混淆文件,它位于sdk\tools\proguard\proguard-android.txt。proguard-rules.pro文件是项目中自定义的混淆文件。

productFlavors :渠道配置

()dependencies:用于配制引用的依赖。

compile fileTree(dir: ‘libs’, include: [‘*.jar’])
引用当前 module 目录下的 libs 文件夹中的所有 .jar 文件。

compile’com.android.support:appcompat-v7:23.0.0’
引用23.0.0版本的 appcompat-v7(appcompat-v7指的是v7 library 项目)。

compile分为三部分 groupdId:artifactId:version
com.android.support:对应groupId
appcompat-v7对应 artifactId
23.0.0对应 version

参考资料:
Android Studio 中文社区 http://www.android-studio.org

你可能感兴趣的:(AndroidStudio)