Gradle 属性配置
源:Gradle 官方文档 - Build Environment
Gradle 属性文件用于配置构建环境,包括 JVM 参数、Android 专用属性、项目属性等。
属性文件位置
gradle.properties
Gradle 按以下顺序查找属性文件(后者覆盖前者):
系统级(全局):
~/.gradle/gradle.properties (macOS/Linux)
C:\Users\<username>\.gradle\gradle.properties (Windows)项目级:
project-root/gradle.properties常用 Gradle 属性
JVM 参数配置
properties
# JVM 堆内存大小
org.gradle.jvmargs=-Xmx4g
# 设置 Metaspace 大小
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g
# 使用并行 GC
org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC
# 完整推荐配置
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 -XX:+UseParallelGCGradle Daemon
properties
# 启用 Daemon(默认启用)
org.gradle.daemon=true
# Daemon 空闲超时(毫秒)
org.gradle.daemon.idletimeout=3600000并行与缓存
properties
# 启用并行构建
org.gradle.parallel=true
# 启用构建缓存
org.gradle.caching=true
# 启用配置缓存
org.gradle.configuration-cache=true
# 配置缓存问题仅警告
org.gradle.configuration-cache.problems=warn构建日志
properties
# 日志级别:quiet, warn, lifecycle, info, debug
org.gradle.logging.level=lifecycle
# 显示完整堆栈跟踪
org.gradle.logging.stacktrace=all
# 控制台输出类型:auto, plain, rich, verbose
org.gradle.console=richAndroid 专用属性
性能优化
properties
# 非传递性 R 类
android.nonTransitiveRClass=true
# 非常量 R 类
android.nonFinalResIds=true
# 禁用 Jetifier(已迁移到 AndroidX)
android.enableJetifier=false
# 使用 AndroidX
android.useAndroidX=trueR8 优化
properties
# 优化的资源缩减(AGP 8.1.2+)
android.r8.optimizedResourceShrinking=true
# 完整 R8 模式
android.enableR8.fullMode=true构建功能
properties
# 启用 Build Features
android.defaults.buildfeatures.buildconfig=true
android.defaults.buildfeatures.aidl=false
android.defaults.buildfeatures.renderscript=false
android.defaults.buildfeatures.resvalues=true
android.defaults.buildfeatures.shaders=false其他配置
properties
# 抑制警告
android.suppressUnsupportedCompileSdk=34
# 启用实验性功能
android.experimental.enableScreenRecordingForProfilerBuilds=true项目自定义属性
在 gradle.properties 中定义自定义属性:
properties
# 自定义属性
MY_API_KEY=abc123
MY_BASE_URL=https://api.example.com
VERSION_MAJOR=1
VERSION_MINOR=0在 build.gradle.kts 中读取:
kotlin
android {
defaultConfig {
buildConfigField("String", "API_KEY", "\"${project.property("MY_API_KEY")}\"")
buildConfigField("String", "BASE_URL", "\"${project.property("MY_BASE_URL")}\"")
val versionMajor = project.property("VERSION_MAJOR").toString().toInt()
val versionMinor = project.property("VERSION_MINOR").toString().toInt()
versionCode = versionMajor * 100 + versionMinor
}
}环境变量
使用系统环境变量:
properties
# 从环境变量读取
MY_SECRET=${env.MY_SECRET}在 build.gradle.kts 中:
kotlin
val mySecret = System.getenv("MY_SECRET") ?: "default_value"最佳实践
敏感信息管理:
将包含敏感信息的 gradle.properties 添加到 .gitignore:
bash
# .gitignore
gradle.properties
local.properties提供示例文件:
bash
gradle.properties.example推荐配置模板:
properties
# JVM 配置
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParallelGC
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.configuration-cache=true
# Android 优化
android.nonTransitiveRClass=true
android.nonFinalResIds=true
android.enableJetifier=false
android.useAndroidX=true
# 项目信息(示例)
VERSION_NAME=1.0.0
VERSION_CODE=1