目录


  • 目录
  • 前言
  • Gradle简介
  • Gradle安装
  • Gradle构建项目
  • XYALLappbuildgradle模块gradle配置文件
  • XYALLbuildgradle整个项目的gradle配置文件
  • XYALLgradlewrappergradle-wrapperpropertiesgradle版本统一管理文件
  • settingsgradle项目模块引用配置文件
  • 编译



前言

由于生产力很大一部分取决于生产工具的使用,为了紧跟时代的潮流,我也从Eclipse切换到Android Studio来进行Android开发。

使用Android Studio的时候,最先遇到的难点应该就是Gradle的安装、配置和使用。这篇文章就针对我遇到的坑讲解一下如何在Android Stduio中配置Gradle。


Gradle简介

Gradle与Ant、Maven类似,是一种项目构建工具,之前使用的Eclipse是使用Ant来实现项目构建的。

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


Gradle安装

在Android Studio中第一次创建项目的时候,会自动下载Gradle。但是,由于国内互联网大环境影响,所以一般不使用代码的话,下载都会失败。所以这里介绍一种如何让Android Stuido使用已经下载好的gradle版本的方法。

首先,File->Settings->搜索gradle,将gradle的默认下载目录指定为:~/.gradle。同时,不要着急立刻将从网上下载的最新的gradle版本放到这个目录下,因为Android Studio对目录结构是有要求的。

Android 安装gradle非常慢 gradle安装与配置 android studio_配置文件

Ubuntu下,Gradle默认的目录结构如下:

Android 安装gradle非常慢 gradle安装与配置 android studio_配置文件_02

可以看到,其中有串很诡异的无规律的字符串,这个是Android Studio自动生成的,你从网上下载的zip包必须要放到这个目录下才行。所以我推荐的做法是:

  1. 让Android Studio先自行下载一会Gradle,这样可以确定Gradle的安装目录和Gradle的版本。
  2. 从Gradle的官网上下载指定的版本(不一定是最新的,我安装的Android Studio需要的是gradle-2.4版本),然后将下载的zip包扔到那个无规律字符串目录下。记住:不需要解压,android studio自己会去解包
  3. 在你自己的.bashrc文件里,配置一下GRADLE_PATH,如下:
# add gradle path
export GRADLE_PATH=/home/wzy/.gradle/wrapper/dists/gradle-2.4-all/6r4uqcc6ovnq6ac6s0txzcpc0/gradle-2.4
export GRADLE_USER_HOME=/home/wzy/.gradle
export PATH=$GRADLE_PATH/bin:$PATH

××××

Gradle构建项目

使用Gradle来构建项目的时候,需要对Gradle的配置文件有个大概的了解,以我的一个测试应用项目为例,Gradle的配置文件主要有:

  1. 每个模块的gradle配置文件。
  2. 整个项目的gradle配置文件。
  3. 统一管理gradle的gradle-wrapper配置文件。
  4. 整个项目的模块引用配置文件。

如下图所示:

Android 安装gradle非常慢 gradle安装与配置 android studio_gradle_03

接下来,我根据上述标记的红色部分进行逐一讲解。


XYALL/app/build.gradle(模块gradle配置文件)

我们首先来看一下这个配置文件的内容:

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

android {
    // 编译SDK的版本
    compileSdkVersion 23
    // build tools的版本
    buildToolsVersion "23.0.1"

    defaultConfig {
        // 应用包名
        applicationId "com.example.wzy.xyall"
        // 支持最低设备sdk的版本
        minSdkVersion 19
        // 支持目标设备sdk的版本
        targetSdkVersion 23
        // 应用版本号
        versionCode 1
        // 应用版本名称
        versionName "1.0"
    }

    buildTypes {
        release {
            // 是否进行混淆
            minifyEnabled false
            // 混淆文件的位置
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    // 移除lint检查的error,防止编译终止
    lintOptions {
        abortOnError false
    }
}

dependencies {
    // 编译libs目录下所有的jar包
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
}

有几点需要说明:

  1. 文件开头apply plugin,如果是编译apk,值为’com.android.application’,如果编译的是库,则需要改为’com.android.library’。
  2. buildToolsVersion必须是你本地安装的版本,可以通过SDK MANAGER来进行查看。这个值配置不对,会造成编译错误。

XYALL/build.gradle(整个项目的gradle配置文件)

文件内容如下:

buildscript {
    repositories {
        // gradle插件下载中心为jcenter
        jcenter()
    }
    // gralde插件的具体版本。
    dependencies {
        classpath 'com.android.tools.build:gradle:1.3.0'
    }
}

// 项目中使用到的库、jar包的下载中心
allprojects {
    repositories {
        jcenter()
    }
}

XYALL/gradle/wrapper/gradle-wrapper.properties(gradle版本统一管理文件)

文件内容如下:

#Mon Sep 21 12:15:49 CST 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip

gradle-wrapper的作用就是使用统一的方式来管理gradle,保证gradle使用的是统一的版本。说明几点:

  1. android studio首先从distributionBase/distributionPath查找gradle。
  2. 然后,从zipStoreBase/zipStorePath查找gradle。
  3. 如果上述都没有找到合适的gradle,则从distributionUrl指定的url去下载gradle。

注意:这里需要在.bashrc中增加GRADLE_USER_HOME的变量定义。


settings.gradle(项目模块引用配置文件)

这个是全局的项目配置文件,里面主要声明一些需要加入gradle的模块。

include ':app'

示例项目的配置表示只要app模块的build.gradle加入到编译中。


编译

上述配置完成后,就可以使用gradle编译项目了。常用的构建命令如下:

  1. gradle clean: 清除之前的构建。
  2. gradle test:执行测试。
  3. gradle compileJava:编译java。
  4. gradle check:代码检查。
  5. gradle build:构建打包。

最后再提示一下,构建打包完成后,编译出来的apk位于:$项目/app/build/outputs/apk/目录下。