有没有办法检测我运行项目的环境。
像这样:
构建.gradle
def usingIntelliJ = ...
def usingAndroidStudio = ...
if (usingIntelliJ) {
buildConfigField "String", "IDE_ENV", "IDEA"
} else if (usingAndroidStudio) {
buildConfigField "String", "IDE_ENV", "AndroidStudio"
}
最佳答案
为了确定您的构建是否由 IDE 触发,Android 构建链将设置一个特定的属性:
def isIdeBuild() {
return project.properties['android.injected.invoked.from.ide'] == 'true'
}
在我们的构建中,我们使用此方法为我们的 IDE build设置静态 versionCode
,但保持所需的行为以在我们的构建服务器上自动增加它:
def getNumberOfGitCommits() {
def text = 'git rev-list --count HEAD'.execute().text.trim()
return text == '' ? 0 : text.toInteger()
}
def calculateVersionCode() {
return isIdeBuild() ? 123456789 : getNumberOfGitCommits()
}
android {
defaultConfig {
// ...
versionCode calculateVersionCode()
}
}
这解决了我们遇到的两个问题:
- 以前,新提交会有效地禁用 Instant Run。由于
versionCode
已自动更新,Manifest 已更改 – 这会触发 Instant Run 中的完整重建。 - 以前,当我们切换 Git 分支时,
versionCode
经常变小(降级),所以我们不得不重新安装应用程序。现在我们所有的 IDE 构建都有相同的版本代码。
关于android - 使用 Gradle 检测 IDE 环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25324880/