Android笔记之Gradle

前言

Gradle是Android编译应用资源和源代码,然后将它们打包成 APK的一个自动化构建工具,他能够自动化管理资源和执行构建,类似于Linux中的make工具。

Android Studio就是基于Gradle来完成APK的构建的。当然我们也可以单独地使用Gradle来构建我们的Android应用工程。当然我们最常用的还是Android Studio下对他的使用,因此我们主要对Android Studio中的Gradle的使用作出说明。

Gradle

Gradle作为一种高级的构建工具,可以帮助开发者实现自定义的构建过程,使用Gradle可以实现的功能包括;
构建类型、产品风味、构建变体、清单条目、依赖项、签署、ProGuard、APK 拆分等

Android Studio中的Gradle文件

在Android的视图下,我们可以看到Gradle Scripts目录下的文件都是Gradle文件,他是基于Java 虚拟机 (JVM) 的动态语言 Groovy来编写的。

构建文件

1. setting.gradle
include ‘:app’

该文件的内容十分简单,就是包含构建APK时所包含的module即可,默认该工程下建立了多少module都会被包含进去。

2. build.gradle(Project)
/**
 * buildscript中包含的是Gradle工具的仓库和依赖
 */
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.1'
    }
}

/**
 * allprojects 标签内包含的是整个工程,也就是所有的module的 repositories and
 * dependencies,例如第三方插件或者库。
 */
allprojects {
   repositories {
       jcenter()
   }
}
3. build.gradle(Module)
/**
 * 应用插件
 */
apply plugin: 'com.android.application'

/**
 * 所有Android特性相关的注册
 */
android {
  /**
   *  compileSdkVersion  Gradle用来编译App的Android Api版本
   *
   *  buildToolsVersion  Gradle使用的build工具的版本
   */
  compileSdkVersion 25
  buildToolsVersion "25.0.2"

  /**
   * defaultConfig  
   */

  defaultConfig {

    /**
     * applicationId 唯一标识
     */
    applicationId 'com.example.myapp'

    // 运行App的最小Api
    minSdkVersion 15

    // 制定测试App的Api
    targetSdkVersion 25

    // 版本号
    versionCode 1

    // 用户友好的版本名称
    versionName "1.0"
  }

  /**
   * 构建类型,包括debug版本和release版本
   */

  buildTypes {
    /**
     * By default, Android Studio configures the release build type to enable code
     * shrinking, using minifyEnabled, and specifies the Proguard settings file.
     */
    release {
        minifyEnabled true // Enables code shrinking for the release build type.
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
  }

  /**
   * 产品风味代表您可以发布给用户的不同应用版本,例如免费和付费的应用版本
   */
  productFlavors {
    free {
      applicationId 'com.example.myapp.free'
    }
    paid {
      applicationId 'com.example.myapp.paid'
    }
  }

  /**
   * 屏幕适配相关的
   */

  splits {
    // Screen density split settings
    density {

      // Enable or disable the density split mechanism
      enable false

      // Exclude these densities from splits
      exclude "ldpi", "tvdpi", "xxxhdpi", "400dpi", "560dpi"
    }
  }
}

/**
 *  包含这个module所有的依赖项
 */
dependencies {
    compile project(":lib")
    compile 'com.android.support:appcompat-v7:25.3.1'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
4. gradle.properties

Gradle相关的配置,例如内存大小等

5. local.properties

为构建系统配置本地环境属性,例如 SDK 安装路径。

你可能感兴趣的:(Android笔记之Gradle)