Android Gradle 3.1常用属性

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

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

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

三、adbOptions
propertyDescription
installOptions安装apk时的参数,可通过adb –help查看
timeOutInMsadb操作的超时时间
四、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,只说一下其他属性。

propertyDescription
applicationIdSuffixapplicationId添加的后缀
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内存使用
methodusage
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{}下的有区别。

propertyDescription
cmakecmake配置参数
ndkBuildndk-build配置参数

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

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

指定编译的api 版本

九、dataBinding

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

(十) defaultConfig

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

propertyDescription
applicationId应用的id
dimension风味维度,这个参考上面的构建变体结合使用
javaCompileOptions这里只能配置annotationProcessorOptions 注解处理器的参数,然而文档里直接什么都没有写,不明所以
ndk只能指定abifilter
testApplicationId/testApplicationId/testApplicationId/testApplicationId/testInstrumentationRunnerArguments几个测试的,没有怎么用过,不了解
vectorDrawables构建vectorDrawalbe的支持,有两个属性。generatedDensities:指定生成PNG的屏幕密度;useSupportLibrary:使用运行时的库对vectorDrawable的支持。
versionCode版本号
versionName版本名
versionNameSuffix版本名后缀
methodusage
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
propertyDescription
additionalParametersdx命令的参数
javaMaxHeapSize指定虚拟机的-Xmx参数,例如 2048m
jumboMode该模式会将字符串数量由2^16增大到2^32
keepRuntimeAnnotatedClasses保留运行时的注解
maxProcessCountdex的最大进程数,默认4
preDexLibraries预编译库
threadCountdx的线程数,默认4
十三、externalNativeBuild

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

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

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

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

配置gradle使用的ndk目录

十七、packagingOptions

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

propertyDescription
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'
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值