关于gradle:Gradle系列之Android-Gradle插件

38次阅读

共计 4009 个字符,预计需要花费 11 分钟才能阅读完成。

原文发于微信公众号 jzman-blog,欢送关注交换。

通过后面几篇文章学习了 Gradle 基础知识以及 Gradle 插件相干的常识,对于 Gradle 及其插件相干常识请先浏览上面几篇文章:

  • Gradle 系列之初识 Gradle
  • Gradle 之 Groovy 根底篇
  • Gradle 系列之构建脚本根底
  • Gradle 系列之意识 Gradle 工作
  • Gradle 系列之 Gradle 插件
  • Gradle 系列之 Java Gradle 插件

学习 Gradle 的目标次要是为了更好的在 Android 开发中应用 Gradle,这篇文章的次要内容是 Android Gradle 插件的相干常识,次要内容如下:

  1. 理解 Android Gradle 插件
  2. Android Gradle 插件分类
  3. 应用 Android Gradle 插件
  4. Android Gradle 工程目录
  5. Android Gradle 根本配置
  6. Android Gradle 工作

理解 Android Gradle 插件

顾名思义,Android Gradle 插件就是一个用于 Android 构建我的项目的一个 Gradle 插件,该插件有 Google Android 开发团队开发,而且 Android 开发 IDE Android Studio 就采纳 Gradle 构建我的项目,上面是 Android Gradle 插件的劣势:

  1. 不便重用代码和资源;
  2. 可更不便的创立利用的衍生版本,如多渠道打包;
  3. 配置不便。能够扩大,还能够自定义构建过程
  4. Android Studio 与 Gradle 深度交融

Android Gradle 插件分类

Android 插件的分类是依据 Android 工程的属性进行分类的,Android 工程分为三类,具体如下:

  1. App 利用工程:可生成可运行的 apk;
  2. Library 库工程:可生成 aar 共其余 App 利用工程应用,应用形式和 jar 一样,外面有相干的 Android 资源文件
  3. Test 测试工程:用于 App 利用过程或 Library 工程进行测试。

对应的就有三种不同的 Android Gradle 插件,三类插件别离是 App 插件、Library 插件和 Test 插件,其插件 id 如下:

//App 插件 id
com.android.application
//Library 插件 id
com.android.library
//Test 插件
com.android.test

应用最多的必定就是 App 插件和 Library 插件,应用这几个插件在 Android Studio 中就能够构建 Android 工程了。

应用 Android Gradle 插件

Gradle 插件应用时以插件的 id 作为惟一标识,如果是第三方的插件,还必须在 buildscript{} 中指定其 classpath,Android Gradle 插件就属于第三方插件,应用时要指定其 classpath,Android Gradle 插件托管到 jcenter 上,所以应用时要指定对应仓库,具体参考如下:

buildscript {
    // 配置插件仓库
    repositories {google()
        jcenter()}
    // 配置依赖
    dependencies {classpath 'com.android.tools.build:gradle:3.0.1'}
}

配置好第三方插件的仓库和依赖,而后应用 apply 应用该插件,具体如下:

// 应用 App 插件
apply plugin: 'com.android.application'

android {
    // 编译所依赖的 Android SDK 的版本
    compileSdkVersion 26
    // 构建工具的版本
    buildToolsVersion '26.0.2'
    //...
}

dependencies {//...}

在 Android 开发中个别将插件的仓库和依赖配置到根我的项目下的 build.gradle 文件中,其子 Module 我的项目将不须要在配置了,可间接应用,这里仅仅是 App 插件的应用,当然 Libray 插件的应用和 Test 插件的应用也是一样,应用时指定对应的 plugin id 即可。

Android Gradle 工程目录

上面是 Android Studio 创立 Android 工程的 Module 的目录,这也是 Android 工程的根本目录构造,参考如下:

app
├─libs
├─proguard-rules.pro
├─build.gradle
└─src
    ├─androidTest
    │  └─java
    │   
    ├─main
    │  ├─AndroidManifest.xml
    │  ├─java
    │  └─res
    │     
    └─test
        └─java

上述目录中 src 上面的 main、androidTest、test 是三个 SourceSet,main 示意 App 的源代码及资源目录,android 和 test 示意 Android 相干测试代码目录,此外 proguard-rules.pro 是以后我的项目的混同文件,libs 用于寄存 jar、aar 等库文件,build。gradle 文件用于以后配置文件。

Android Gradle 根本配置

为了介绍 Android Gradle 插件根本配置,应用 Android Studio 创立一个 Android 我的项目,上面的 app 的一个配置文件,具体如下:

// 应用 Android Gradle 插件
apply plugin: 'com.android.application'
//android{} 是 Android 工程配置的入口
android {
    /**
     * 指定编译依赖的 Android SDK 的版本, 同
     * compileSdkVersion android-26
     * android.compileSdkVersion = 26
     * android.compileSdkVersion = 'android-26'
     */
    compileSdkVersion 26
    // 指定构建工具的版本, 也能够应用属性值 buildToolsVersion 设置其版本
    buildToolsVersion '26.0.2'
    /**
     * 默认配置,defaultConfig 是一个 ProductFlavor, 可依据不同需要生成不同的 Apk
     * 如果不自定义 ProductFlavor 进行独自配置,则该 productFlavor 会采纳默认配置生成 Apk
     * 这些具体配置,如 applicationID 都是 ProductFlavor 的属性
     */
    defaultConfig {
        // 配置惟一包名
        applicationId "com.manu.androidgradleplugin"
        // 最低反对的 Android 零碎版本
        minSdkVersion 19
        // 配置利用的指标 Android 零碎版本
        targetSdkVersion 26
        // 用于管制利用降级的版本号
        versionCode 1
        // 用户看到的版本名称
        versionName "1.0"
        // 测试时用到
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    /**
     * buildTypes 是一个 NamedDomainObjectContainer 类型,是一个域对象,相似 SourceSet(源集)
     * buildTypes 中可自定义须要构建的类型,Gradle 会主动创立一个相应的 BuildType, 如默认的 release、debug
     */
    buildTypes {
        release {
            // 设置是否为构建类型启用混同
            minifyEnabled false
            // 如果启用混同则应用相应的混同文件
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {}}
// 依赖配置
dependencies {implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation files('libs/plugin.jar')
}

上述配置文件中曾经标注了一些 Android Gradle 插件须要配置的中央,也算是对 Android Gradle 插件及我的项目配置文件 build.gradle 的一次了解与学习,对于 Android Gradle 插件的根本配置就到此为止,当前陆续补充。

Android Gradle 工作

Android Gradle 插件基于 Android Gradle 插件,Android Gradle 插件中蕴含了 Java Gradle 插件的一些工作,如 assembile、check、build 等工作,此外,Android Gradle 插件还增加一些新工作,如 connectedCheck、deviceCheck、lint、install、unInstall 等 Android 开发特有的工作,可在 Android Studio 上查看 Android 开发中一些工作,选中 Android Studio 右侧标签 Gradle 就可查看,参考如下:

这篇算是初步从学习 Gradle 的角度理解了 Android Gradle 插件相干常识,前面的文章中会持续 Android Gradle 的学习。能够关注公众号:躬行之(jzman-blog),一起交流学习。

正文完
 0