赞
踩
Version 2.3.0
介绍
这是Android Gradle 插件的 DSL参考.通过这篇文章可以找到插件的正确扩展类型。
扩展类型
下边的列表展示了Gradle的扩展类型。
类型 | 描述 |
---|---|
AppExtension | android应用扩展 |
LibraryExtension | android库扩展 |
TestExtension | android测试扩展 |
配置块
下边列出的是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
属性
属性 | 描述 |
---|---|
aaptOptions | aapt选项,打包资源的工具 |
adbExecutable | 编译SDK可执行的adb |
adbOptions | Adb选项 |
buildToolsVersion | 必须设置,build tools的版本 |
buildTypes | 项目类型(debug、release) |
compileOptions | 编译选项,指定java jdk版本等 |
compileSdkVersion | 必须设置,编译的sdk版本 |
dataBinding | 数据绑定选项 |
defaultConfig | 默认配置,所有flavors共享 |
defaultPublishConfig | 用于构建此项目的默认工件的配置的名称 |
dexOptions | dex选项 |
externalNativeBuild | 外部本地构建选项 |
flavorDimensionList | flavor名称 |
generatePureSplits | 是否拆成多个APK |
jacoco | jacoco 选项 |
lintOptions | lint选项 |
ndkDirectory | NDK目录 |
packagingOptions | packaging选项 |
productFlavors | 项目的所有flavors |
publishNonDefault | 是否发布所有配置的artifacts |
resourcePrefix | 创建新资源时要使用的前缀,用于Android Studio |
sdkDirectory | sdk目录 |
signingConfigs | 签名配置 |
sourceSets | 所有资源的集合。值得注意的是,Android插件使用源设置它自己的实现,AndroidSourceSet |
splits | APK 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的选项列表 |
timeOutInMs | adb操作的超时时间 |
BuildType
属性 | 描述 |
---|---|
applicationIdSuffix | 应用程序ID后缀 |
consumerProguardFiles | 混淆器规则文件包含在AAR发布 |
debuggable | 对应的类型是否生成可调试的apk |
embedMicroApp | Android wear设备是否可以使用此build类型 |
javaCompileOptions | 配置java编译选项 |
jniDebuggable | 此build 类型是否可以配置成调试本地代码的apk |
manifestPlaceholders | manifest占位符(多渠道打包时可用) |
minifyEnabled | 用来控制是否运行混淆 |
multiDexEnabled | 是否开启生成多个dex文件 |
multiDexKeepFile | 文本文件,指定额外的类,将编译成主dex文件。文件中指定的class通过aapt添加到主dex。格式为每行一个类,例如:com/example/MyClass.class |
multiDexKeepProguard | 文本文件,附加混淆器规则,用于确定哪些类编译成主dex文件,如果设置了,会和构建系统的默认规则结合使用 |
name | build type 名称 |
proguardFiles | 返回混淆器要使用的配置文件。有2个默认的规则文件,proguard-android.txt和proguard-android-optimize.txt。这两个文件位于SDK,使用getDefaultProguardFile(字符串文件名)将返回文件的完整路径,除了启用优化,这两个文件是相同的 |
pseudoLocalesEnabled | 是否支持本地化 |
renderscriptDebuggable | 是否开启 renderscript 断点调试 |
renderscriptOptimLevel | Optimization 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
属性 | 描述 |
---|---|
encoding | Java源文件编码 |
incremental | 是否打开增量编译 |
sourceCompatibility | java源码的版本 |
targetCompatibility | 生成的Java字节码版本 |
DexOptions
属性 | 描述 |
---|---|
additionalParameters | 传递给dex列表的额外参数 |
javaMaxHeapSize | 指定java堆内存大小 |
jumboMode | 是否支持大工程模式 |
keepRuntimeAnnotatedClasses | 在主dex中保留所有类的运行时注解 |
maxProcessCount | dex的最大并发数量,默认是4 |
preDexLibraries | 是否开启预编译,提高增量构建,clear build可能会变慢 |
threadCount | 运行dex的线程数量,默认是4个 |
ExternalNativeBuild
属性 | 描述 |
---|---|
cmake | CMake构建选项.属性path:CMakeLists.txt构建脚本的的相对路径, |
ndkBuild | ndk-build选项 |
块 | 描述 |
:————-: | |
cmake | 配置CmakeOptions |
ndkBuild | 配置NdkBuildOptions选项 |
LintOptions
属性 | 描述 |
---|---|
abortOnError | 如果发现错误,是否终止编译,默认为true |
absolutePaths | lint是否展示错误输出的完整路径,默认是从lint调用的相对路径 |
check | 检查指定的问题,如果没有指定,会检查任何问题。 |
checkAllWarnings | 是否检查所有的警告,包括默认警告 |
checkReleaseBuilds | 在构建release版本时,是否检查致命错误。默认是true,如果找到问题严重性“致命”错误,将停止构建 |
disable | 禁止检查给定的问题id,调用者可以修改这个集合 |
enable | 检查给定的问题id,调用者可以修改这个集合 |
explainIssues | lint是否返回问题错误的解释 |
htmlOutput | HTML报告写入的路径,可选 |
htmlReport | 我们是否应该写一个HTML报告,默认为true,位置可LintOptions.getHtmlOutput配置 |
ignoreWarnings | lint是否忽略警告,只检查错误 |
lintConfig | 默认的配置文件,用来回退 |
noLines | 错误信息输出中是否包含代码的行数,默认为true |
quiet | 是否写消息报告 |
severityOverrides | 可选的问题严重性覆盖率集合,包括”fatal”, “error”, “warning”, or “ignore” |
showAll | lint是否返回所有是输出 |
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
属性 | 描述 |
---|---|
aidl | Android AIDL源目录 |
assets | Android Assets目录 |
compileConfigurationName | 编译配置的名称 |
java | java编译器编译的java源码的输出目录 |
jni | Android JNI的源码目录 |
jniLibs | Android JNI libs的目录 |
manifest | Android Manifest文件,包含name和srcFile两个属性 |
name | source set的名称 |
packageConfigurationName | source set在运行时配置的名称 |
providedConfigurationName | source set在编译时配置的名称 |
renderscript | Android RenderScript 源目录 |
res | Android Resources目录包含filter(从源目录选择源的过滤器)、name(一个简洁的源目录的名称)、sourceFiles(source列表文件)、srcDirs(解析后的目录) |
resources | Java资源复制到javaResources输出目录 |
方法 | 描述 |
---|---|
setRoot(path) | source sets设置根目录,source sets的所有项都在根目录下 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。