“release”构建类型包含自定义BuildConfig字段,但该功能已禁用。
有没有办法解决这个问题?
“release”构建类型包含自定义BuildConfig字段,但该功能已禁用。
有没有办法解决这个问题?
回答自己的问题——有一个快速解决方案。尝试在gradle.properties
中添加以下行,希望问题能得到解决(目前为止):
android.defaults.buildfeatures.buildconfig=true
或者,根据 @Scott_AGP 的答案,将此项更改添加到 build.gradle
而不是更改 gradle.properties
可能会更好:
android {
buildFeatures {
buildConfig = true
}
}
这个问题是由于buildConfigField
(来自android.packageBuildConfig)的弃用引起的,详见此提交。
2022年12月12日更新:
根据下面Roar Grønmo的说明,有一种新方法可以将时间戳嵌入BuildConfig.java
文件中,详见我在2014年提出的建议之外的方法。
要使用这种新方法,请首先删除当前build.gradle
(或build.gradle.kts
)文件中类似于以下内容的任何行:
buildConfigField("String", "BUILD_TIME", "\"" + System.currentTimeMillis().toString() + "\"")
相反,首先将以下内容添加到您的build.gradle.kts
的顶部:
import com.android.build.api.variant.BuildConfigField
在build.config.kts
文件的android { ... }
部分之外添加以下内容:
androidComponents {
onVariants {
it.buildConfigFields.put(
"BUILD_TIME", BuildConfigField(
"String", "\"" + System.currentTimeMillis().toString() + "\"", "build timestamp"
)
)
}
}
您不需要在主代码库中进行任何新更改-- 在 Kotlin 中,可以像这样访问时间戳:
private val buildDate = Date(BuildConfig.BUILD_TIME.toLong())
Log.i("MyProgram", "This .apk was built on ${buildDate.toString()}");
就是这样!请注意,如果您不遵循上面所述的更改gradle.properties
,则会看到一个在变体____中访问buildConfigFields值没有效果,因为feature buildConfig已禁用。警告。
可能仍有更好的方法来执行此操作,而无需使用BuildConfigField
,但如果有的话,我不知道。如果有人有更持久的解决方案,请告诉我(我们)。
android.defaults.buildfeatures.buildconfig=true
添加到您的 gradle.properties
文件中,因为该属性已在 AGP 8.0 中被 弃用,并计划在 AGP 9.0 中删除。BuildConfig
的模块,请将以下内容添加到每个单独的 build.gradle
文件中:android {
buildFeatures {
buildConfig = true
}
}
android.defaults.buildfeatures.buildconfig=true
添加到您的 gradle.properties
中即可解决此问题。将以下行添加到您的gradle.properties文件中:
android.buildConfig=true
API_KEY=0000
以及这些添加到 build.gradle(module) 文件中:
buildFeatures {
buildConfig = true
}
android.defaults.buildfeatures.buildconfig=true
不会在构建项目时产生错误,但尚未检查其他影响。 - Roar Grønmo