Gradle配置详解系列(二)--Android插件配置详解

引言

本文分享AndroidStudio中Android插件配置的完整介绍及作用

一、最重要的Android节点配置
android节点配置.png
  • compileSdkVersion
    编译时使用的AndroidSDK版本

  • buildToolsVersion
    编译时使用的构建工具版本

  • defaultConfig
    项目的基本信息配置

    • applicationId
      应用的唯一ID(默认就是你的包名),虽然编译后与清单文件中package的值相同,
      但是作用是完全不同的,
      清单文件中的包名作用只是告诉编译器配置的组件属于哪个包(编译时会把 . 替换成package的值),
      而applicationId则是Android系统进行签名验证等一系列安全管理的依据,只要你applicationId相同就会被认为是同一个应用,
      无论你源码是否一致。

    • minSdkVersion
      项目兼容的最低SDK版本

    • targetSdkversion
      项目的目标SDK版本,表示在该目标版本上已经做过充分测试,系统会为该应用启动一些对应该目标系统的最新功能特性,
      Android系统平台的行为变更,只有targetSdkVersion的属性值被设置为大于或等于该系统平台的API版本时,
      才会生效。例如,若指定targetSdkVersion值为22,则表示该程序最高只在Android5.1版本上做过充分测试,
      在Android6.0系统上(对应targetSdkVersion为23)拥有的新特性如系统运行时权限等功能就不会被启用。

    • versionCode
      项目版本号

    • versionName
      项目版本名称

  • productFlavors
    用于配置自定义的Build Variant,通过Build Variant就可以编译不同的版本的apk ,通常在适配多个渠道的时候,
    需要为特定的渠道做部分特殊的处理,比如设置不同的包名、应用名等。
    场景:当我们使用友盟统计时,通常需要设置一个渠道ID,那么我们就可以利用productFlavors来生成对应渠道信息的包

  • variantFilter
    过滤变体的作用,一般来说如果配置了不同的Flavors节点就会自动生成相应的Build Variant

  • buildTypes
    指定生成安装文件的主要配置,一般包含两个子闭包,一个是debug闭包,
    用于指定生成测试版安装文件的配置,可以忽略不写;
    另一个是release闭包,用于指定生成正式版安装文件的配置。

    • minifyEnabled
      表明是否对代码进行混淆,true表示对代码进行混淆,false表示对代码不进行混淆,默认的是false
    • proguardFiles
      指定混淆的规则文件,这里指定了proguard-android.txt文件和proguard-rules.pro文件两个文件,
      proguard-android.txt文件为默认的混淆文件,里面定义了一些通用的混淆规则。
      proguard-rules.pro文件位于当前项目的根目录下,可以在该文件中定义一些项目特有的混淆规则
    • buildConfigField
      用于解决Beta版本服务和Release版本服务地址不同或者一些Log打印需求控制的。
      例如:配置buildConfigField("boolean", "LOG_DEBUG", "true"),
      这个方法接收三个非空的参数,第一个:确定值的类型,
      第二个:指定key的名字,
      第三个:传值,调用的时候BuildConfig.LOG_DEBUG即可调用
    • debuggable
      表示是否支持断点调试,release默认为false,debug默认为true
    • jniDebuggable
      表示是否可以调试NDK代码,使用lldb进行c和c++代码调试,release默认为false
    • signingConfig
      设置签名信息,通过signingConfigs.release或者signingConfigs.debug,
      配置相应的签名,但是添加此配置前必须先添加signingConfigs闭包,添加相应的签名信息。
    • renderscriptDebuggable
      表示是否开启渲染脚本就是一些c写的渲染方法,默认为false。
    • renderscriptOptimLevel
      表示渲染等级,默认是3。
    • pseudoLocalesEnabled
      是否在APK中生成伪语言环境,帮助国际化的东西,一般使用的不多。
    • applicationIdSuffix
      和defaultConfig中配置是一的,这里是在applicationId 中添加了一个后缀,一般使用的不多。
    • versionNameSuffix
      表示添加版本名称的后缀,一般使用的不多。
    • zipAlignEnabled
      表示是否对APK包执行ZIP对齐优化,减小zip体积,增加运行效率,release和debug默认都为true。
  • externalNativeBuild
    与defaultConfig 同级的externalNativeBuild节点用于配置NDK的构建文件,而内部的externalNativeBuild则用于指导NDK构建

  • aaptOptions
    aapt 全称为 Android Asset Packaging Tool,即为Android资源打包工具。可以通过其来进行配置打包的细节

    • additionalParameters
      给 aapt 执行时添加额外参数
      比如打包时修改包名--rename-manifest-package,'com.helloworld''
    • cruncherProcesses
      设置打包时的线程数量
    • failOnMissingConfigEntry
      设置是否无法找到配置条目,则强制aapt返回错误
    • ignoreAssets
      设置打包时忽略的Assets下对应资源
    • ignoreAssetsPattern
      设置打包时忽略res下对应资源
    • noCompress
      是否对资源进行压缩,默认不对"jpg"、"png"压缩。如果传入’’,则表明全部资源不会进行压缩
  • sourceSets
    从Eclipse项目转换成AS项目时一般会用到,把Eclipse项目文件结构转换成AS项目结构

  • adbOptions \
    adb调试设置

    • timeOutInMs
      设置adb执行超时的时间,单位毫秒
    • installOptions
      用于增加执行 adb install 的参数
  • dataBinding
    是否启用dataBinding

  • dexOptions
    用于控制代码编译打包成dex的细节

    • additionalParameters
      用于添加 dex 的命令比如指定那些类被打包到主dex中
    • javaMaxHeapSize
      设置运行 dx 的最大内存
    • jumboMode
      每个 dex 的字符串索引也有限制,正常情况下为 2^16 个。
      但开启jumboMode 模式,可以支持到 2^32。但是值得注意的是,这个并不是 64K方法数量限制问题的一种方案
    • keepRuntimeAnnotatedClasses
      将所有带有运行时注解的类保留在主dex中。默认开启,
      主要是解决java.lang.reflect.Field.getDeclaredAnnotations导致无法获取崩溃问题
    • maxProcessCount
      可用于dex的最大并发进程数,默认为4。值得注意的是,dx使用的内存大小将为 maxProcessCount*javaMaxHeapSize
    • preDexLibraries
      预编译 dex 库。在我们build的时候会快些,但clean时便会慢,默认开启
    • threadCount
      运行dx时使用的线程数。 默认为4
  • lintOptions
    Lint 是Android Studio 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量问题,
    同时提供一些解决方案,而且这个过程不需要我们手写测试用例

  • packagingOptions
    当项目中依赖的第三方库越来越多时,有可能会出现两个依赖库中存在同一个(名称)文件。
    如果这样,Gradle在打包时就会提示错误(警告)。那么就可以根据提示,然后使用以下方法将重复的文件剔除,
    比较常用的是通过exclude去除重复的文件

  • splits
    主要是用于打包时的拆包

  • compileOptions
    配置Java插件的参数,比如jdk版本

更多Android技术分享可以关注我的Android技术圈子,也可以加入QQ群号:690347536,学习交流Android开发技能。

你可能感兴趣的:(Gradle配置详解系列(二)--Android插件配置详解)