Gradle教程–基础篇

Gradle教程–基础篇Gradle是什么Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。安装Gradle在AndroidStudio中新建项目成功后会下载Gradle,貌似这个过程不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。那么下载的Gradle到什么地方呢,或者说Gradle的本

大家好,又见面了,我是你们的朋友全栈君。

Gradle 是什么

Gradle是一种依赖管理工具,基于Groovy语言,面向Java应用为主,它抛弃了基于XML的各种繁琐配置,取而代之的是一种基于Groovy的内部领域特定(DSL)语言。

安装Gradle

在 Android Studio 中新建项目成功后会下载Gradle,貌似这个过程不翻墙也是可以下载,但是访问特别慢,建议翻墙下载。那么下载的 Gradle 到什么地方呢,或者说Gradle的本地目录在什么地方呢

  • Mac上会默认下载到 /Users/<用户名>/.gradle/wrapper/dists 目录
  • Win平台会默认下载到 C:\Documents and Settings\<用户名>.gradle\wrapper\dists 目录

你会看到这个目录下有个 gradle-x.xx-all 的文件夹, 如果下载实在太慢,可以自己手动到Gradle官网下载对应的版本,然后将下载的.zip文件(也可以解压)复制到上述的gradle-x.xx-all 文件夹下。

Gradle基本概念

我个人理解是 Gradle 在 Android Studio 中有三个意思

  • Gradle plugin(Gradle 插件及插件版本)
  • Gradle(Gradle 的版本)
  • Gradle wrapper(安装辅助工具)

下面我用一个开源项目开详细分析一下,加深自己对 Gradle 理解,首先这个项目有两个Moudle,一个是应用程序模块,一个是库模块

9GAG

1. 9GAG/build.gradle(Gradle plugin)

buildscript { repositories { jcenter() }
    dependencies { classpath 'com.android.tools.build:gradle:1.0.0' }
}

allprojects { repositories { jcenter() }
}

这个文件是整个项目的gradle基础配置文件,内容主要包含了两个方面:一个是声明仓库的源,这里可以看到是指明的jcenter(),jcenter可以理解成是一个新的中央远程仓库,兼容maven中心仓库,而且性能更优。另一个是声明了 Gradle Plugin 的版本,这个dependencies中的gradle:1.0.0代表的就是使用Gradle 插件版本 1.0.0。在编译过程中,如果Gradle插件版本与Gradle版本不匹配,编译就会失败。

目前一些的Gradle与Gradle Plugin版本的对应关系如下:

Gradle Plugin 版本 Gradle 版本
2.3.0+ 3.3+
2.1.3 – 2.2.3 2.14.1+
2.0.0 2.10 – 2.13
1.5.0 2.2.1 – 2.13
1.2.0 – 1.3.1 2.2.1 – 2.9
1.0.0 – 1.1.3 2.2.1 – 2.3

Android Plugin for Gradle Release Notes

值得注意的是,你的AndroidStudio 版本越高,你的Gradle插件版本越高,目前Android Studio 2.3.2的版本对应的是Gradle Plugin 版本是2.3.2

2. 9GAG/app/build.gradle(Gradle)

// 声明是Android程序
apply plugin: 'com.android.application'

android {
    // 编译SDK的版本
    compileSdkVersion 21
    // build tools的版本
    buildToolsVersion "21.1.1"
    defaultConfig {
        // 应用的包名
        applicationId "me.storm.ninegag"
        minSdkVersion 14
        targetSdkVersion 21
        versionCode 1
        versionName "1.0.0"
    }
    // java版本
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        debug {
            // debug模式
        }
        release {
            // 是否进行混淆
            minifyEnabled false
            // 混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    // 移除lint检查的error
    lintOptions {
      abortOnError false
    }
}

dependencies {
    // 编译libs目录下的所有jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:support-v4:21.0.2'
    compile 'com.etsy.android.grid:library:1.0.5'
    compile 'com.alexvasilkov:foldable-layout:1.0.1'
    // 编译extras目录下的ShimmerAndroid模块
    compile project(':extras:ShimmerAndroid')
}

这里需要说明几点:

  • 文件开头apply plugin是最新gradle版本的写法,
    • 应用程序的声明是apply plugin: ‘com.android.application’
    • 模块的声明是apply plugin: ‘com.android.library’
  • buildToolsVersion这个需要你本地安装该版本才行,很多人导入新的第三方库,失败的原因之一是build version的版本不对,这个可以手动更改成你本地已有的版本或者打开 SDK Manager 去下载对应版本。
  • compileOptions是指java的版本,android 5.0开始默认安装jdk1.7才能编译,但是mac系统自带jdk的版本是1.6,所以需要手动下载jdk1.7并配置。
  • proguardFiles这部分有两段,前一部分代表系统默认的android程序的混淆文件,该文件已经包含了基本的混淆声明,免去了我们很多事,这个文件的目录在 /tools/proguard/proguard-android.txt , 后一部分是我们项目里的自定义的混淆文件,目录就在 app/proguard-rules.txt , 如果你用Studio 1.0创建的新项目默认生成的文件名是 proguard-rules.pro , 这个名字没关系,在这个文件里你可以声明一些第三方依赖的一些混淆规则,由于是开源项目,9GAG里并未进行混淆。
  • compile project(‘:extras:ShimmerAndroid’)这一行是因为9GAG中存在其他Module。
  • 以上文件里的内容只是基本配置,其实还有很多自定义部分,如自动打包debug,release,beta等环境,签名,多渠道打包等,后续会单独拿出来讲解。

3. 9GAG/gradle/wrapper.properties(Gradle wrapper)

#Thu Dec 18 16:02:24 CST 2014
//distributionBase 是解压 gradle-2.14.1-all.zip 的文件的存放位置
distributionBase=GRADLE_USER_HOME

//distributionPath 是 distributionBase 指定的目录下的子目录
distributionPath=wrapper/dists

//zipStoreBase 是下载的 gradle-2.14.1-all.zip 所存放的位置
zipStoreBase=GRADLE_USER_HOME

//zipStorePath 是 zipStoreBase 指定的目录下的子目录
zipStorePath=wrapper/dists

//distributionUrl 是要下载的 gradle 的地址,使用哪个版本的 gradle,就在这里修改
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

这里需要说明几点:

  • 下载位置可以和解压位置不一样。

  • zipStoreBase 和distributionBase 有两种取值:GRADLE_USER_HOME 和 PROJECT。

    • 其中,GRADLE_USER_HOME 表示用户目录。在 windows 下是 %USERPROFILE%/.gradle,例如C:\Users\.gradle\;在 Linux下是 $HOME/.gradle,例如~/.gradle。
    • PROJECT 表示工程的当前目录,即 gradlew 所在的目录。

4. 9GAG/settings.gradle

include ':app', ':extras:ShimmerAndroid'

文件中的 app, extras:ShimmerAndroid 都是module,如果还有其他module都需要按照如上格式加进去

版本变更方法–使用 Android Studio

  • 修改 build.gradle 插件版本号
    dependencies { classpath 'com.android.tools.build:gradle:1.0.0' }
  • 修改使用的 Gradle 版本(gradle wrapper 中 distributionUrl 修改 gradle版本与插件版本匹配)

gradle wrapper 中 distributionUrl 修改 gradle版本与插件版本匹配

distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
  • 或者直接在图形界面中修改

Gradle图形界面.png


本文大量参考引用以下两篇文章,包括图片和代码,感谢两位作者

http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/

http://hucaihua.cn/2016/09/27/Gradle_upgrade/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154153.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号