Android studio-gradle

当我们创建一个新的工程,Android studio会默认为我们创建三个gradle文件,两个build.gradle,一个settings.gradle,build.gradle分别放在了根目录和moudle目录下,下面是gradle文件的构成图:

MyApp
   ├── build.gradle
   ├── settings.gradle
   └── app
       └── build.gradle

module:app中的build.gradle

apply plugin: 'com.android.application'
//Android plugin提供了所有需要去构建和测试的应用。
// 插件用于扩展gradle脚本的能力,在一个项目中使用插件,这样该项目的构建脚本就可以定义该插件定义好的属性和使用它的tasks。
//注意:当你在开发一个依赖库,那么你应该使用'com.android.library',并且你不能同时使用他们2个,这将导致构建失败,
// 一个模块要么使用Android application或者Android library插件,而不是二者。
// Gradle 所引入的插件,插件里面包含了 Android 项目相关的所有工具。
//由google的Android开发团队编写的插件,能够提供所有关于Android应用和依赖库的构建,打包和测试。
//以apply plugin: 'com.android.application'作为主程序的标识
//以apply plugin: 'com.android.library'标识为Android Library

//        minSdkVersion <= targetSdkVersion <= compileSdkVersion
//        minSdkVersion <= buildToolsVersion <= compileSdkVersion

android {
    compileSdkVersion 25 //当前向前兼容sdk的版本:编译该app时候,你想使用到的api版本。
    buildToolsVersion "25.0.2" //构建工具的版本
    //defaultConfig方法包含了该app的核心属性,该属性会重写在AndroidManifest.xml中的对应属性。
    defaultConfig {
        applicationId "com.example.administrator.myapplication" //应用程序的id,在市场上使用的包名
        minSdkVersion 15 //最小sdk版本支持,最小支持api。
        targetSdkVersion 25 //目标sdk版本
        //versionCode将会作为版本号标示,而versionName毫无作用。
        versionCode 1 //应用程序版本号
        versionName "1.0" //应用程序版本名称
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    //buildTypes定义了如何构建不同版本的app
    buildTypes {
        release {
            minifyEnabled false //混淆是否开启
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies { //依赖外部的类库
    //如果你有任何依赖的jar包,你需要告诉gradle它在哪儿,假设jar包会在一个叫做libs的文件夹内,那么你应该这么配置:
    //该行意为:将libs文件夹中所有的jar文件视为依赖包。
    compile fileTree(dir: 'libs', include: ['*.jar'])
    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:25.1.0'
    testCompile 'junit:junit:4.12'
}

//模块内的gradle文件只对该模块起作用,而且其可以重写任何的参数来自于根目录下的gradle文件。

gradle下的gradle-wrapper.properties:

#Sat Apr 08 18:40:35 CST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

#解压位置
#distributionBase 和 distributionPath 组合在一起,是解压 gradle-2.14.1-all.zip 之后的文件的存放位置。
#distributionPath 是 distributionBase 指定的目录下的子目录。

#下载位置
#zipStoreBase 和 zipStorePath 组合在一起,是下载的 gradle-2.14.1-all.zip 所存放的位置。
#zipStorePath 是 zipStoreBase 指定的目录下的子目录。

#下载位置可以和解压位置不一样。
#zipStoreBase 和distributionBase 有两种取值:GRADLE_USER_HOME 和 PROJECT。
#其中,GRADLE_USER_HOME 表示用户目录。
#在 windows 下是 %USERPROFILE%/.gradle,例如C:\Users\<user_name>.gradle\。
#在 Linux下是 $HOME/.gradle,例如~/.gradle。
#PROJECT 表示工程的当前目录,即 gradlew 所在的目录。

#下载地址URL
#distributionUrl 是要下载的 gradle 的地址,使用哪个版本的 gradle,就在这里修改。
#gradle 有 3 种版本:(当然这个不了解也没关系)
#gradle-xx-all.zip 是完整版,包含了各种二进制文件,源代码文件,和离线的文档。
#       例如,https://services.gradle.org/distributions/gradle-2.14.1-all.zip
#gradle-xx-bin.zip 是二进制版,只包含了二进制文件(可执行文件),没有文档和源代码。
#       例如,https://services.gradle.org/distributions/gradle-2.14.1-bin.zip
#gradle-xx-src.zip 是源码版,只包含了 Gradle 源代码,不能用来编译你的工程。
#       例如,https://services.gradle.org/distributions/gradle-2.14.1-src.zip
#如果只是为了编译,可以不用完整版,只需要二进制版即可,例如,gradle-2.14.1-bin.zip。

#你可以改变该url来改变你的gradle版本。

#此文件用于保存 gradle 下载路径的配置文件位置,用于没有gradle环境的环境初始化使用。
#gradle 文件夹包括如下:
#gradle-wrapper.propertes      //gradle-wrapper 配置文件:下载URL、下载位置、解压位置
#gradle-wrapper.jar            //gradle-wrapper 核心 jar

project:myapplication中的gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {//构建脚本:包括仓库和依赖

    repositories {//1、仓库
        jcenter()//声明中央远程仓库的源,兼容maven中心仓库
        //jcenter是maven中心库的一个分支
    }

    dependencies {//2、依赖
        classpath 'com.android.tools.build:gradle:2.4.0-alpha4'
        //Android构建工具,这个就是Android plugin的来源之处。

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

//buildscript方法是定义了全局的相关属性,
// repositories定义了jcenter作为仓库。一个仓库代表着你的依赖包的来源,例如maven仓库。
// dependencies用来定义构建过程。这意味着你不应该在该方法体内定义子模块的依赖包,
// 你仅仅需要定义默认的Android插件就可以了,
// 因为该插件可以让你执行相关Android的tasks。


allprojects {
    repositories {
        jcenter()
    }
}
//allprojects方法可以用来定义各个模块的默认属性,你可以不仅仅局限于默认的配置,
// 未来你可以自己创造tasks在allprojects方法体内,这些tasks将会在所有模块中可见。

task clean(type: Delete) {
    delete rootProject.buildDir
}

settings.gradle

include ':app'

//当你的app只有一个模块的时候,你的setting.gradle将会如上所示

//setting.gradle文件将会在初始化时期执行

//setting.gradle是针对多模块操作的,所以单独的模块工程完全可以删除掉该文件。

gradle.properties

# Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.

#项目范围 Gradle 设置。
# IDE(例如Android Studio)用户:
# Gradle 设置通过 IDE 配置 *将会覆盖*
#任何设置在该文件中指定。
#更多细节关于如何配置您的构建环境的访问
# http://www.gradle.org/docs/current/userguide/build_environment.html
#指定 JVM 参数用于守护进程。
#这个 setting 尤其有用的调整内存的设置。

#配置全局的管理文件。
#配置 gradle 运行环境的文件,比如配置 gradle 运行模式,运行时 jvm 虚拟机的大小。
org.gradle.jvmargs=-Xmx1536m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

#配置时,它将运行在孵化并行模式。
#这个选项应该只被用于分离的项目。更多细节,请访问
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html秒:decoupled_projects
# org.gradle.parallel = true

local.properties

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Tue Feb 28 00:55:39 CST 2017
sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\Sdk


#Android Studio 自动创建的工程中,IDE 自动配备了本地配置文件,并且设置了 sdk.dir 属性。
#也就是配置了 Android_Home 环境变量,所以 IDE 能够自动生成这个配置文件。
#一般情况都不用修改这个配置文件,除非你一定要重新制定一个 SDK 路径。

参考:

你真的了解 Gradle 吗?

Android Studio中gradle介绍(一)

Android Studio中Gradle使用详解

Gradle for Android 第一篇( 从 Gradle 和 AS 开始 )

Gradle for Android 第二篇( Build.gradle入门 )

Gradle for Android 第三篇( 依赖管理 )

Gradle for Android 第四篇( 构建变体 )

Gradle for Android 第五篇( 多模块构建 )

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值