引言
本文分享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。
- minifyEnabled
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"压缩。如果传入’’,则表明全部资源不会进行压缩
- additionalParameters
sourceSets
从Eclipse项目转换成AS项目时一般会用到,把Eclipse项目文件结构转换成AS项目结构-
adbOptions \
adb调试设置- timeOutInMs
设置adb执行超时的时间,单位毫秒 - installOptions
用于增加执行 adb install 的参数
- timeOutInMs
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
- additionalParameters
lintOptions
Lint 是Android Studio 提供的 代码扫描分析工具,它可以帮助我们发现代码结构/质量问题,
同时提供一些解决方案,而且这个过程不需要我们手写测试用例packagingOptions
当项目中依赖的第三方库越来越多时,有可能会出现两个依赖库中存在同一个(名称)文件。
如果这样,Gradle在打包时就会提示错误(警告)。那么就可以根据提示,然后使用以下方法将重复的文件剔除,
比较常用的是通过exclude去除重复的文件splits
主要是用于打包时的拆包compileOptions
配置Java插件的参数,比如jdk版本
更多Android技术分享可以关注我的Android技术圈子,也可以加入QQ群号:690347536,学习交流Android开发技能。