fat*_*ire 106 java android gradle android-studio android-buildconfig
在带有 org.jetbrains.kotlin (1.8.0-Beta) 插件和 8.0.0-alpha09 gradle 插件的新版本 Android Studio (Flamingo | 2022.2.1 Canary 9) 中,新版本突然出现此错误:
构建类型“release”包含自定义 BuildConfig 字段,但该功能已禁用。
有办法让它消失吗?
fat*_*ire 134
回答我自己的问题——有一个快速的解决方案。尝试添加以下行gradle.properties
,问题应该不会再困扰您(目前):
android.defaults.buildfeatures.buildconfig=true\n
Run Code Online (Sandbox Code Playgroud)\n或者,根据 @Scott_AGP\'s 的回答,最好将其添加到build.gradle
而不是更改gradle.properties
:
android {\n buildFeatures {\n buildConfig = true\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n此问题是由于弃用了(来自 android.packageBuildConfig),如本提交中buildConfigField
所述。
22 年 12 月 12 日更新:
\n根据下面Roar Gr\xc3\xb8nmo的注释,有一种比我在 2014 年建议的方法BuildConfig.java
更新的方法可以将时间戳隐藏到文件中。
要使用此较新的方法,请首先删除当前build.gradle
(或build.gradle.kts
)文件中如下所示的任何行:
buildConfigField("String", "BUILD_TIME", "\\"" + System.currentTimeMillis().toString() + "\\"")\n
Run Code Online (Sandbox Code Playgroud)\n相反,首先将以下内容添加到您的顶部build.gradle.kts
:
import com.android.build.api.variant.BuildConfigField\n
Run Code Online (Sandbox Code Playgroud)\nandroid { ... }
并在部分之外build.config.kts
添加以下内容:
androidComponents {\n onVariants {\n it.buildConfigFields.put(\n "BUILD_TIME", BuildConfigField(\n "String", "\\"" + System.currentTimeMillis().toString() + "\\"", "build timestamp"\n )\n )\n }\n}\n
Run Code Online (Sandbox Code Playgroud)\n您不必对主代码库进行任何新的更改——仍然可以在 Kotlin 中访问时间戳,如下所示:
\nprivate val buildDate = Date(BuildConfig.BUILD_TIME.toLong())\nLog.i("MyProgram", "This .apk was built on ${buildDate.toString()}");\n
Run Code Online (Sandbox Code Playgroud)\n就是这样!gradle.properties
请注意,这仍然需要对上述进行更改,否则您将看到变量 ____ 中的访问值 buildConfigFields 无效,因为 buildConfig 功能被禁用。警告。
可能仍然有更好的方法来做到这一点而不使用BuildConfigField
,但如果是这样,我不知道。如果有人有更永久的解决方案,请告诉我(我们)。
Sco*_*AGP 95
避免添加android.defaults.buildfeatures.buildconfig=true
到您的gradle.properties
文件中,因为该属性在 AGP 8.0 中已弃用,并计划在 AGP 9.0 中删除。
build.gradle
相反,使用以下命令将以下内容添加到每个模块的每个模块文件中BuildConfig
:
android {
buildFeatures {
buildConfig = true
}
}
Run Code Online (Sandbox Code Playgroud)
将这些行添加到您的 gradle.properties 中:
android.buildConfig=true
API_KEY=0000
Run Code Online (Sandbox Code Playgroud)
这些到 build.gradle(module):
buildFeatures {
buildConfig = true
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56729 次 |
最近记录: |