引言
本文分享AndroidStudio中Android插件配置的完整介绍及作用
一、最重要的Android节点配置
-
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开发技能。