gradle.properties是Gradle项目中用于声明全局变量和设置行为开关的核心配置文件,它通过分离配置与逻辑提升构建稳定性、安全性与可维护性;支持用户级与项目级双位置配置,自动按优先级加载,键值对格式定义属性后可在build.gradle中读取、注入BuildConfig或资源,还可直接配置org.gradle.*等运行时参数优化构建性能。

gradle.properties 是 Gradle 项目中用于定义全局构建属性的核心配置文件,它不写逻辑、不执行任务,只负责“声明变量”和“设置行为开关”。它的作用不是替代 build.gradle,而是把可变的、易变的、敏感的或跨模块复用的值抽离出来,让构建更稳定、安全、易维护。
一、在哪放?怎么生效?
Gradle 会按优先级顺序加载多个 gradle.properties 文件:
-
用户级:位于
~/.gradle/gradle.properties(Linux/macOS)或%USERPROFILE%\.gradle\gradle.properties(Windows),影响当前用户所有 Gradle 项目; -
项目级:位于项目根目录(与
settings.gradle同级),仅对本项目生效,最常用;
两者可以共存,项目级属性会覆盖同名的用户级属性。文件内容是纯 key-value 格式,支持注释(以 # 开头)。
二、怎么定义和读取普通构建属性?
在 gradle.properties 中直接写:
minSdkVersion=21
appVersionName=2.5.0
isReleaseBuild=true
在 build.gradle(如 app/build.gradle)中通过 project.property("key") 或简写 project.key 读取:
compileSdk project.sdkVersion.toInteger()
defaultConfig {
minSdk project.minSdkVersion.toInteger()
versionName project.appVersionName
}
}
注意:字符串值需手动转类型(如 .toInteger()、.toBoolean()),否则会报错。
三、怎么注入到代码或资源中?
如果想让 Java/Kotlin 代码或 XML 布局能访问这些值,需借助 buildConfigField 或 resValue:
defaultConfig {
buildConfigField "String", "API_BASE_URL", "\"https://api.example.com/\""
buildConfigField "boolean", "IS_DEBUG", project.isReleaseBuild.toBoolean() ? "false" : "true"
resValue "string", "app_name", "\"MyApp v${project.appVersionName}\""
}
}
之后就能在 Java 中用 BuildConfig.API_BASE_URL,在布局中用 @string/app_name。
四、怎么配置 Gradle 自身行为?
这类属性以 org.gradle. 或 android. 开头,Gradle 运行时自动识别,无需在 build.gradle 中显式读取:
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
android.enableBuildCache=true
# 防止内存溢出
org.gradle.jvmargs=-Xmx4096m -XX:MaxMetaspaceSize=512m -Dfile.encoding=UTF-8
android.jvmargs=-Xmx2048m
这些配置直接影响构建速度、稳定性,建议大型 Android 项目必配。


















