Android Gradle 3.1常用属性

对于gradle的属性,大家可以自行查看文档,我主要从文档中总结一些常用的。
文档:http://google.github.io/android-gradle-dsl/
现在的Android Studio 3.0版本以上已经使用了3.0以上的gradle插件,所以直接看最新的文档。注意:本文的属性不管是application还是library都是android{}下的。只有极少数的属性是只在library有效的。

一 aaptOptions
property Description
additionalParameters 指定aapt的参数,具体可通过aapt –help查看
cruncherEnabled 3.1已经遗弃,由 BuildType.isCrunchPngs() 代替
cruncherProcesses 指定压缩图片的进程数
failOnMissingConfigEntry 不明觉厉,应该是找apk的config的入口如果报错会返回,知道大神麻烦评论告知一下
ignoreAssets/ignoreAssets 这两个调用的是同一个方法,没有区别,忽略assets的文件,可以用通配符
noCompress 指定不压缩的文件,指定为”“将会尝试关闭所有文件压缩
二、adbExecutable

一个返回File的方法,具体是adb.exe的路径,感觉没什么卵用。

三、adbOptions
property Description
installOptions 安装apk时的参数,可通过adb –help查看
timeOutInMs adb操作的超时时间
四、applicationVariants

项目的所有构建变体,简单查看

  applicationVariants.all{
        println it.name
    }
五、buildToolsVersion

SDK构建工具的版本,3.1可以不用指定,默认使用的是27.0.3,不知道是不是我的电脑的最新版本是27.0.3.

六、buildTypes

关于构建变体,官网上的文档写的十分详细,我就不解释了,直接上车https://developer.android.com/studio/build/build-variants.html#build-types,只说一下其他属性。

property Description
applicationIdSuffix applicationId添加的后缀
consumerProguardFiles 添加混淆文件
crunchPngs 是否压缩图片
debuggable 是否允许调试
jniDebuggable 是否允许调试jni代码
manifestPlaceholders 清单文件占位符
matchingFallbacks 这是3.0.0之后才有的属性,指定对应的buildType。例如:app模块有一个stage的buildType,然后library没有stage的buildType,就会报错。Unable to resolve dependency for ‘:app@stage/compileClasspath’: Could not resolve project :library.这时候可以通过这个属性来指定。
minifyEnabled 开启混淆优化
multiDexEnabled/multiDexKeepFile/multiDexKeepProguard 多dex的属性指定,参考官网: https://developer.android.com/studio/build/multidex
postprocessing 文档没说,直说以后可能会改变,不管
proguardFiles 指定混淆文件,默认这两个proguard-android.txt proguard-android-optimize.txt
postprocessing 文档没说,直说以后可能会改变,不管
pseudoLocalesEnabled 可以为本地化的语言文字对应调整UI,比如文字左对齐或者右对齐
renderscriptDebuggable/renderscriptOptimLevel 渲染脚本相关,反正没用过
shrinkResources 压缩资源,必须开启minifyEnabled才有用
signingConfig 签名配置
testCoverageEnabled 测试覆盖率
useProguard 使用instant run的时候可以用此变量关闭混淆
versionNameSuffix 版本名后缀
zipAlignEnabled 优化对齐,可以减少apk内存使用
method usage
void buildConfigField(String type, String name, String value) 为生成的BuildConfig类添加属性,一般来说一个module都会生成一个BuildConfig类,可以参考https://blog.csdn.net/a568478312/article/details/74989722
BuildType consumerProguardFiles(Object… proguardFiles) 往application project传递proguard文件,该属性只在library project有效
ExternalNativeBuildOptions externalNativeBuild(Action action) native参数配置,后面说
DefaultBuildType initWith(BuildType that) 复制传递的buildType所有属性
BuildType proguardFiles(Object… files) 添加新的proguard文件
void resValue(String type, String name, String value) 添加新的生成资源
BuildType setProguardFiles(Iterable proguardFileIterable) 设置混淆文件
1、externalNativeBuild

注意这里是buildType下面的属性,通过文档看这个和android{}下的有区别。

property Description
cmake cmake配置参数
ndkBuild ndk-build配置参数

这两个的属性都是下面几个

  • abiFilters 指定cpu架构
  • arguments 指定对应的参数
  • cFlags c编译的flags
  • cppFlags c++编译的flags
  • targets 指定需要编译的可执行文件
七、 compileOptions
property usage
encoding java的编码
incremental java编译是否使用gradle的增量模型
sourceCompatibility java原文件的语言版本
targetCompatibility java字节码的语言版本
八、compileSdkVersion

指定编译的api 版本

九、dataBinding

一个xml绑定数据的库,参考https://developer.android.com/topic/libraries/data-binding/

(十) defaultConfig

这里有部分和buildType想同,所以只列出特有的部分。

property Description
applicationId 应用的id
dimension 风味维度,这个参考上面的构建变体结合使用
javaCompileOptions 这里只能配置annotationProcessorOptions 注解处理器的参数,然而文档里直接什么都没有写,不明所以
ndk 只能指定abifilter
testApplicationId/testApplicationId/testApplicationId/testApplicationId/testInstrumentationRunnerArguments 几个测试的,没有怎么用过,不了解
vectorDrawables 构建vectorDrawalbe的支持,有两个属性。generatedDensities:指定生成PNG的屏幕密度;useSupportLibrary:使用运行时的库对vectorDrawable的支持。
versionCode 版本号
versionName 版本名
versionNameSuffix 版本名后缀
method usage
versionCode 版本号
versionName 版本名
versionNameSuffix 版本名后缀
void maxSdkVersion(int maxSdkVersion) 最大支持的api版本
void minSdkVersion(int minSdkVersion) 最小支持的api版本
void missingDimensionStrategy(String dimension, String requestedValue) gradle3.0.0以上版本才有,指定维度缺失策略,也就是说app有的Dimension而library里没有找到对应的时候,就靠这个来指定策略,可以在productFlavors设置来单独覆盖
void resConfig(String config) 指定可选的资源来进行保留,用来排除某些不需要的语言资源等
void targetSdkVersion(int targetSdkVersion) 指定target的api版本,比如如果设置小于23,那么动态申请权限将不会应用
十一、defaultPublishConfig

指定发布到远程仓库的版本名,不指定默认发布release,如果设置了productFlavors,则需要明确指出。本地模块不需要指定此属性。

十二、dexOptions
property Description
additionalParameters dx命令的参数
javaMaxHeapSize 指定虚拟机的-Xmx参数,例如 2048m
jumboMode 该模式会将字符串数量由2^16增大到2^32
keepRuntimeAnnotatedClasses 保留运行时的注解
maxProcessCount dex的最大进程数,默认4
preDexLibraries 预编译库
threadCount dx的线程数,默认4
十三、externalNativeBuild

注意这个快是在android{}下面的,属性如下:

1.cmake
  • buildStagingDirectory 指定native编译输出目录
  • path         指定cmakeLists.txt的相对路径
  • version       指定使用CMake的版本呢
2.ndkBuild
  • buildStagingDirectory 指定native编译输出目录
  • path         指定Android.mk的相对路径
十四、flavorDimensionList

通过使用flavorDimensions指定维度列表,参考buildType的变体构建,结合使用。

十五、lintOptions
property Description
abortOnError 发现错误是否停止
absolutePaths 错误输出是否显示完整路径
check 指定需要检查的id,可以通过lint –list查看所有支持的id
checkAllWarnings 是否检查所有警告
checkReleaseBuilds 是否检查releast的构建
disable 禁止对应id的检查
enable 使能对应id的检查
explainIssues 是否需要错误解释,注意html和xml报告是无条件有解释的,忽略这个设置的。
htmlOutput html报告的输出路径
htmlReport 是否需要html报告
ignoreWarnings 是否忽略警告
lintConfig 配置默认lint配置文件,可以参考https://developer.android.com/studio/write/lint#pref
noLines 是否包含资源行号
quiet 是否使用安静模式,例如不输出路径或者报告文件等
severityOverrides 覆盖默写id的等级,比如原本资源id为error的覆盖成fatal
showAll 是否需要包含所有输出
textOutput text报告输出路径
textReport 是否需要text报告
warningsAsErrors 是否将警告置为错误来处理
xmlOutput xml报告路径
xmlReport 是否需要xml报告
Methods Description
check 添加需要检查的id
disable 添加禁用的id
enable 添加使能id
error 将指定id的等级改为error
fatal 将指定id的等级改为fatal
ignore 将指定id的等级改为ignore
warning 将指定id的等级改为warning
十六、ndkDirectory

配置gradle使用的ndk目录

十七、packagingOptions

这个主要是处理打包时候的一些文件冲突。

property Description
excludes 排除文件
merges 合并发现的冲突文件
pickFirsts 发现冲突首选第一次找到的文件
十八、productFlavors

同样参考构建变体。

十九、resourcePrefix

指定资源前缀,主要是用来防止library的资源和其他module产生冲突的时候使用。

二十、sdkDirectory

配置Gradle使用的SDK目录。

二十一、signingConfigs

配置签名,这个就不展开说了,搜一下一堆。

二十二、sourceSets

配置各种文件的目录,平时用到都是默认目录,可以使用gradlew sourceSet查看默认目录。这个看需求来定是否需要配置,也不展开说了,直接百度一堆。

二十三、splits

配置apk拆分选项,可以通过区分api,density,language等来减少apk大小。具体使用可以参考
https://developer.android.com/studio/build/configure-apk-splits
https://developer.android.com/topic/instant-apps/guides/config-splits

二十四、variantFilter

配置Android插件需要保留或者排除的变体。其实就是过滤变体罢了。

android {
    ...
    variantFilter { variant ->

        def buildTypeName = variant.buildType*.name
        def flavorName = variant.flavors*.name

        if (flavorName.contains("dev") && buildTypeName.contains("release")) {
            // Tells Gradle to ignore each variant that satisfies the conditions above.
            setIgnore(true)
        }
    }
}
二十五、useLibrary

在classpath指定library,基本上没什么卵用。

android {
    // Adds a platform library that ships with the Android SDK.
    useLibrary 'org.apache.http.legacy'
}

猜你喜欢

转载自blog.csdn.net/a568478312/article/details/80076104