Android插件DSL参考



Version 2.3.0

介绍
这是Android Gradle 插件的 DSL参考.通过这篇文章可以找到插件的正确扩展类型。

扩展类型
下边的列表展示了Gradle的扩展类型。

类型描述
AppExtensionandroid应用扩展
LibraryExtensionandroid库扩展
TestExtensionandroid测试扩展

配置块
下边列出的是android可用的配置块

描述
aaptOptions { }配置aapt选项
adbOptions { }配置adb选项
buildTypes { }配置build类型
compileOptions { }配置编译选项
dataBinding { }配置数据绑定选项
defaultConfig { }默认的配置,如果有定义的话,所有的product flavors会继承这些配置
dexOptions { }配置dex 选项
externalNativeBuild { }配置外部本地生成选项(例如:ndk开发时使用)
jacoco { }配置jacoco选项
lintOptions { }配置lint选项
packagingOptions { }配置packaging 选项(排除不想添加到apk中的文件)
productFlavors { }配置项目的不同版本(例如,收费版,免费版)
signingConfigs { }配置 签名配置
splits { }配置apk
testOptions { }配置测试选项

基础扩展
android插件基础扩展
这些不会被直接用到,相反,
- 插件com.android.application用AppExtension
- 插件 com.android.library用LibraryExtension
- 插件com.android.test uses用TestExtension
- 插件com.android.atom uses用AtomExtension
- 插件Plugin com.android.instantapp用InstantAppExtension

属性

属性描述
aaptOptionsaapt选项,打包资源的工具
adbExecutable编译SDK可执行的adb
adbOptionsAdb选项
buildToolsVersion必须设置,build tools的版本
buildTypes项目类型(debug、release)
compileOptions编译选项,指定java jdk版本等
compileSdkVersion必须设置,编译的sdk版本
dataBinding数据绑定选项
defaultConfig默认配置,所有flavors共享
defaultPublishConfig用于构建此项目的默认工件的配置的名称
dexOptionsdex选项
externalNativeBuild外部本地构建选项
flavorDimensionListflavor名称
generatePureSplits是否拆成多个APK
jacocojacoco 选项
lintOptionslint选项
ndkDirectoryNDK目录
packagingOptionspackaging选项
productFlavors项目的所有flavors
publishNonDefault是否发布所有配置的artifacts
resourcePrefix创建新资源时要使用的前缀,用于Android Studio
sdkDirectorysdk目录
signingConfigs签名配置
sourceSets所有资源的集合。值得注意的是,Android插件使用源设置它自己的实现,AndroidSourceSet
splitsAPK splits 选项
variantFilter控制哪个variants被排除

方法

方法描述
flavorDimensions(dimensions)指定flavor尺寸的名称
useLibrary(name)要求使用库,库被添加到类路径
useLibrary(name, required)要求使用库,库被添加到类路径

属性详解
AaptOptions aaptOptions

属性描述
additionalParameters传递给aapt的额外的参数列表
cruncherEnabled如果返回true,png类型的图片会被处理
cruncherProcesses使用大量的处理器,处理器越多,文件运行的越快,但是需要更多的内存和GPU
failOnMissingConfigEntry如果不能找到一个条目配置,aapt会返回一个错误
ignoreAssets描述asset被忽略的模式
ignoreAssetsPattern描述asset被忽略的模式
noCompress扩展文件不会以压缩的形式存储到apk。添加一个空的扩展,即。,设置noCompress”将禁用压缩所有文件。例如:aaptOptions {//不用压缩的文件noCompress ‘pak’, ‘dat’, ‘bin’
方法描述
 :————-:
additionalParameters(param)将额外的参数传递给aapt
additionalParameters(params)将多个额外的参数传递给aapt
noCompress(noCompress)设置不会以压缩的形式存储到apk的扩展文件
noCompress(noCompress)设置不会以压缩的形式存储到apk的多个扩展文件

AdbOptions

属性描述
installOptions安装apk的选项列表
timeOutInMsadb操作的超时时间

BuildType

属性描述
applicationIdSuffix应用程序ID后缀
consumerProguardFiles混淆器规则文件包含在AAR发布
debuggable对应的类型是否生成可调试的apk
embedMicroAppAndroid wear设备是否可以使用此build类型
javaCompileOptions配置java编译选项
jniDebuggable此build 类型是否可以配置成调试本地代码的apk
manifestPlaceholdersmanifest占位符(多渠道打包时可用)
minifyEnabled用来控制是否运行混淆
multiDexEnabled是否开启生成多个dex文件
multiDexKeepFile文本文件,指定额外的类,将编译成主dex文件。文件中指定的class通过aapt添加到主dex。格式为每行一个类,例如:com/example/MyClass.class
multiDexKeepProguard文本文件,附加混淆器规则,用于确定哪些类编译成主dex文件,如果设置了,会和构建系统的默认规则结合使用
namebuild type 名称
proguardFiles返回混淆器要使用的配置文件。有2个默认的规则文件,proguard-android.txt和proguard-android-optimize.txt。这两个文件位于SDK,使用getDefaultProguardFile(字符串文件名)将返回文件的完整路径,除了启用优化,这两个文件是相同的
pseudoLocalesEnabled是否支持本地化
renderscriptDebuggable是否开启 renderscript 断点调试
renderscriptOptimLevelOptimization level to use by the renderscript compiler
shrinkResources移除未使用的资源,默认为false
signingConfig签名配置 属性1keyAlias:key的别名;属性2keyPassword:Key密码;属性3storeFile:签名用的文件;属性4storePassword:签名用的文件的密码;属性5storeType:签名用的文件类型;属性6v1SigningEnabled:是否开启JAR signature scheme v1签名;属性7v2SigningEnabled:是否开启APK Signature Scheme v2签名,https://raw.githubusercontent.com/mcxiaoke/packer-ng-plugin/master/compatibility.md
testCoverageEnabled是否支持这种构建测试覆盖率
versionNameSuffix版本名称后缀
zipAlignEnabled是否开启zip压缩
方法描述
 :————-:
buildConfigField(type, name, value)添加一个新字段生成BuildConfig类,生成的字段为 = ;这意味着每个值都是有效内容,如果类型是String,value应该包含引号,例如buildConfigField “String”,”version”,”\”1.0\”“,在BuildConfig会生成 public static final String version = “1.0”;
consumerProguardFile(proguardFile)添加一个混淆器规则文件包含在AAR发布,任何包含了此AAR的应用程序项目将使用这种混淆器规则文件(如果混淆开启),允许AAR指定一些规则,只对library工程有效。可参考:http://blog.csdn.net/maxtung14/article/details/53288846?utm_source=itdadao&utm_medium=referral
consumerProguardFiles(proguardFiles)添加多个混淆器规则文件,同上
externalNativeBuild(action)配置本地构建选项
initWith(that)从指定的build type复制所有属性,例如:android.buildTypes {customBuildType {initWith debug// customize…}}
proguardFile(proguardFile)添加一个新的混淆配置文件
proguardFiles(files)添加多个混淆配置文件
resValue(type, name, value)添加一个新生成的资源,相当于在res/valuees指定资源
setProguardFiles(proguardFileIterable)设置多个混淆文件

CompileOptions

属性描述
encodingJava源文件编码
incremental是否打开增量编译
sourceCompatibilityjava源码的版本
targetCompatibility生成的Java字节码版本

DexOptions

属性描述
additionalParameters传递给dex列表的额外参数
javaMaxHeapSize指定java堆内存大小
jumboMode是否支持大工程模式
keepRuntimeAnnotatedClasses在主dex中保留所有类的运行时注解
maxProcessCountdex的最大并发数量,默认是4
preDexLibraries是否开启预编译,提高增量构建,clear build可能会变慢
threadCount运行dex的线程数量,默认是4个

ExternalNativeBuild

属性描述
cmakeCMake构建选项.属性path:CMakeLists.txt构建脚本的的相对路径,
ndkBuildndk-build选项
描述
 :————-:
cmake配置CmakeOptions
ndkBuild配置NdkBuildOptions选项

LintOptions

属性描述
abortOnError如果发现错误,是否终止编译,默认为true
absolutePathslint是否展示错误输出的完整路径,默认是从lint调用的相对路径
check检查指定的问题,如果没有指定,会检查任何问题。
checkAllWarnings是否检查所有的警告,包括默认警告
checkReleaseBuilds在构建release版本时,是否检查致命错误。默认是true,如果找到问题严重性“致命”错误,将停止构建
disable禁止检查给定的问题id,调用者可以修改这个集合
enable检查给定的问题id,调用者可以修改这个集合
explainIssueslint是否返回问题错误的解释
htmlOutputHTML报告写入的路径,可选
htmlReport我们是否应该写一个HTML报告,默认为true,位置可LintOptions.getHtmlOutput配置
ignoreWarningslint是否忽略警告,只检查错误
lintConfig默认的配置文件,用来回退
noLines错误信息输出中是否包含代码的行数,默认为true
quiet是否写消息报告
severityOverrides可选的问题严重性覆盖率集合,包括”fatal”, “error”, “warning”, or “ignore”
showAlllint是否返回所有是输出
textOutput可选路径,可以将文本输出写入此文件。
warningsAsErrors是否把所有的警告当作错误
xmlOutput可选路径,将xml输出写入此文件
xmlReport是否写XML报告,默认为true,位置由LintOptions.getXmlOutput()控制
方法描述
 :————-:
check(id)将id添加到检查的问题的集合
check(ids)将多个id添加到检查的问题的集合
disable(id)将id添加到禁用的问题集合
disable(ids)将多个id添加到禁用的问题集合
enable(id)将id添加到启用的问题集合
enable(ids)将多个id添加到启用的问题集合

PackagingOptions
打包选项包含三部分:first-picks, merges and excludes。
First-pick:符合first-pick模式的,打包的时候将包含在apk中。
Merge:合并文件,打包进apk。
Exclude:排除一些文件,不会打包到apk。
指定路径的算法如下:
1.如果apk中不包含first-pick中配置的路径对应的文件,把文件添加到apk中
2.如果first-pick中配置的路径已经包含在apk中,不会再次添加到apk
3.如果apk中不包含merge中配置的路径,将它添加到apk中
4..如果apk中已经包含merge中配置的路径,将该文件的内容合并到apk中已经存在的文件中
5.如果有文件匹配exclude配置的路径,不会添加到apk中
6.如果文件路径没有匹配以上三种模式,并且apk中不包含此文件,会被添加到apk中
7.如果文件路径没有匹配以上三种模式,并且已经被添加到apk中,构建时会报路径重复的错误
这些模式的默认值为:
Pick first:无
Merge:/META-INF/services/**
Exclude:
/META-INF/LICENCE
/META-INF/LICENCE.txt
/META-INF/NOTICE
/META-INF/NOTICE.txt
/LICENCE
/LICENCE.txt
/NOTICE
/NOTICE.txt
/.svn/ (all .svn directory contents)
/CVS/ (all CVS directory contents)
/SCCS/ (all SCCS directory contents)
*/. (all UNIX hidden files)
/.*/ (all contents of UNIX hidden directories)
*/~ (temporary files)
**/thumbs.db
**/picasa.ini
**/about.html
**/package.html
**/overview.html
*/_
/_*/

属性描述
doNotStrip本地库的模式列表,禁止开启debug
excludes要排除的文件路径
merges需要合并的文件路径
pickFirsts配置需要打包在apk中的文件路径
方法描述
exclude(pattern)添加一个exclude模式
merge(pattern)添加一个merge模式
pickFirst(pattern)添加一个first-pick模式

AndroidSourceSet

属性描述
aidlAndroid AIDL源目录
assetsAndroid Assets目录
compileConfigurationName编译配置的名称
javajava编译器编译的java源码的输出目录
jniAndroid JNI的源码目录
jniLibsAndroid JNI libs的目录
manifestAndroid Manifest文件,包含name和srcFile两个属性
namesource set的名称
packageConfigurationNamesource set在运行时配置的名称
providedConfigurationNamesource set在编译时配置的名称
renderscriptAndroid RenderScript 源目录
resAndroid Resources目录包含filter(从源目录选择源的过滤器)、name(一个简洁的源目录的名称)、sourceFiles(source列表文件)、srcDirs(解析后的目录)
resourcesJava资源复制到javaResources输出目录
方法描述
setRoot(path)source sets设置根目录,source sets的所有项都在根目录下
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值