我正在使用Gradle来构建我的Android应用程序.我试图使用基于构建类型(发布或调试)的一些标志.
我的Gradle文件如下所示:
android {
buildTypes {
debug {
buildConfigField 'boolean', 'PREPROD', 'true'
buildConfigField 'boolean', 'STAGING', 'false'
}
release {
buildConfigField 'boolean', 'PREPROD', 'false'
buildConfigField 'boolean', 'STAGING', 'false'
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我试图打电话BuildConfig.PREPROD或BuildConfig.STAGING我得到一个"无法解决符号"错误.Gradle同步成功,所以我不知道是否忘记了一些步骤才能使用此功能?
生成的BuildConfig.java文件如下(in build/source/buildConfig/debug/com.example.myapp):
package com.example.myapp;
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String PACKAGE_NAME = "com.example.myapp";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我在核心模块中定义了许多字符串。升级到 gradle 8 后,我发现我现在需要引用 R 文件。
例如,如果我在核心模块中定义一个字符串并希望从主模块访问它(主模块当然包括核心模块),我会看到以下行为:
前
com.my.package.main.R我可以通过和从主模块内的核心模块访问字符串(以及所有其他资源)com.my.package.core.R
后
现在我只能再从确切的模块访问字符串,所以我需要com.my.package.core.R在主模块内部使用从核心模块访问字符串......
com.google.android.material.R对于来自和 的属性也会发生同样的情况androidx.appcompat...
我错过了迁移步骤吗?或者这真的应该是这样吗?
将这段代码添加到 settings.gradle.kts 后,不会生成 BuildConfig 文件。
pluginManagement {
repositories {
google()
gradlePluginPortal()
mavenCentral()
}
}
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Banking"
include(":app")
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它再次生成?但我需要将代码保留在settings.gradle.kts 中。
编辑:我已经尝试过使缓存无效并重新加载项目。