• Android Gradle 学习笔记(七):Android Gradle 插件


    我们知道Android Gradle其实就是一个Gradle的一个第三方插件,它是由Google的Android团队开发的,基于Gradle构建的,和Android Studio完美搭配。相比于旧的构建系统(比如:Eclipse + Ant),它更灵活,更容易配置,还能方便的创建衍生的版本,也就是我们常用的多渠道包。

    下面是Android 官方对它的介绍:

    (1) 可以很容易地重用代码和资源。

    (2) 可以很容易的创建应用的衍生版本,比如:创建多个apk、创建不同功能的应用。

    (3)可以很容易地配置、扩展以及自定义构建过程。

    (4)能和IDE无缝整合。

    一、Android Gradle 插件分类

    Android Gradle插件的分类就是根据Android工程的属性分类的。在Android中有3类工程,一类是App工程,它可以生成一个可运行的apk应用。一类是Library库工程,它可以生成AAR包给其他的App工程公用,就和我们的jar包一样,但是它包含了Android的资源等信息,是一个特殊的jar包。最后一类是Test测试工程,用于对App工程或者Library库工程进行单元测试。

    App 插件 id :com.android.application

    Library 插件 id : com.android.library

    Test 插件 id:com.android.test

    通过应用以上三种不同的插件,就可以配置我们的工程是一个Android App工程,还是一个Android Library工程,或者是一个Android Test测试工程。然后我们就可以配合着Android Studio,对它们进行编译、测试、发布等操作。

    二、应用 Android Gradle 插件

    Android Gradle 插件作为Gradle的第三方插件,它托管在Jcenter上,在应用之前,我们要先配置依赖classpath,这样我们在应用插件的时候,Gradle才能找到它们:

    buildscript {
        repositories {
            jcenter()
            
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:3.4.0'
            
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
        }
    }

    我们配置仓库为jcenter,这样当我们配置依赖的时候,Gradle就会去这个仓库寻找我们的依赖。然后我们在dependencies{}配置里声明,我们需要的是Android Gradle 3.4.0版本的插件。

    buildscript{} 这部分配置可以写到根工程的build.gradle脚本文件中,这样所有的子工程就不用重复配置了。以上配置好之后,我们就可以应用我们的Android Gradle插件了:

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 28
    }

    android {} 是 Android 插件提供的一个扩展类型,可以让我们自定义Android Gradle工程。

    以上的例子是一个App工程插件,应用Android Library插件和Android Test插件也是类似的,只需要换成其相应的id即可。

    三、Android Gradle 使用配置

    1. compileSdkVersion 

    compileSdkVersion 是配置编译Android工程的SDK的版本。

    2. buildToolsVersion

    buildToolsVersion 是 Android 构建工具的版本。此工具可以在Android SDK目录里面找到,它是一个工具包,包括appt、dex等工具。

    3. defaultConfig

    defaultConfig 是默认配置。它是一个ProductFlavor。ProductFlavor允许我们根据不同的情况同时生成多个不同的APK包,比如多渠道打包。如果不针对我们自定义的ProductFlavor单独配置的话,会为这个ProductFlavor使用默认的defaultConfig的配置。主要包含以下的配置字段:

    • applicationId:配置的包名。
    • minSdkVersion:最低支持的Android API Level。
    • targetSdkVersion:基于的某个指定Android版本开发。
    • versionCode:App 应用内部版本号,一般用于控制APP升级。
    • versionName:App应用的版本名称。

    4. buildTypes

    buildTypes是一个域对象。我们可以在buildTypes{}里新增任意多个我们需要构建的类型,比如debug,Gradle会帮我们自动创建一个对应的buildTypes,名字就是我们定义的名字。

    常见的构建类型:

    • minifyEnabled:是否为该构建类型启用混淆,false 表示不启用,需要启用可以设置为true。
    • proguardFiles:当我们启用混淆时,所使用proguard的配置文件,我们可以通过它配置我们如何进行proguard混淆,比如混淆的级别,哪些类和方法不进行混淆等。它对应BuildType的proguardFiles方法,可以接受一个可变参数。

    四、Android Gradle 任务

    Android 插件是基于Java的插件,基本上包含了所有Java插件的功能,包括继承的任务,比如assemble、check、build等。除此之外,Android在大类上还添加了connectedCheck、deviceCheck、lint、install、uninstall等任务,这些都是属于Android特有的功能。其中:

    • connectedCheck:在所有连接的设备或者模拟器上运行check检查。
    • deviceCheck:通过API连接远程设备运行checks。
    • lint:在所有的ProductFlavor上运行lint检查。
    • install & uninstall :可以直接在我们已连接的设备上安装或者卸载你的APP。

    一般我们常用的任务就是:build、assemble、clean、lint、check。

    补充(一):多渠道打包

    1. 签名方式 V1 和 V2 的区别

    Android 7.0 以前,使用v1签名方式,是jar signature,源自于JDK。

    Android 7.0 以后,使用v2签名方式,是Android独有的apk signature。      

    使用区别:

    • 只使用v2方式打包,7.0以下版本安装失败。
    • 只使用v1方式打包,7.0和7.0以下的版本都没问题。  

    推荐:V1+V2 ,兼容最好且安全性更高。

    2. 多渠道打包方式

    1). Gradle原生打包方式:在build.gradle中配置productFlavors。

    2). 美团网批量打包工具 walle。

  • 相关阅读:
    Shell 基础
    史上最全储能系统优缺点梳理
    IEEE文章分类
    【能源常识】如何理解“电力电量平衡”
    最优化基础(五)
    最优化基础(四)
    json
    python基础知识之zip
    Python sendmail
    指定的结尾换行
  • 原文地址:https://www.cnblogs.com/renhui/p/10961999.html
Copyright © 2020-2023  润新知