android - 更新到 'com.android.tools.build:gradle:4.1.0' 后缺少 BuildConfig.VERSION_CODE

标签 android gradle android-gradle-plugin build.gradle

我有一个多模块应用程序,由于某种原因,VERSION_CODE 生成的字段已从除根模块之外的所有模块中消失,我已经在另一个项目上对其进行了测试,并且它的行为相同。现在我只是降级到 4.0.1,但这只是一种解决方法。
我需要使用 gradle tools 4.1.0 在所有模块中恢复 BuildConfig.VERSION_CODE
将不胜感激任何帮助。
默认配置示例:

buildFeatures {
    buildConfig = true
}

defaultConfig {
    minSdkVersion global["androidMinSdkVersion"]
    targetSdkVersion global["androidTargetSdkVersion"]

    versionCode global["versionString"]

    javaCompileOptions {
        annotationProcessorOptions {
            includeCompileClasspath true
        }
    }
}
这是 4.0.1 上的 BuildConfig 代码
public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "app";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "flavour";
  public static final int VERSION_CODE = 107;
  public static final String VERSION_NAME = "6.0.0";
  // Field from build type: debug
  public static final String AMQP_URL = "url";
  // Field from build type: debug
  public static final String API_VERSION_SUFFIX = "V_04_04_09";
  // Field from build type: debug
  public static final String BASE_URL = "url";
  // Field from product flavor: flavour
  public static final String BUILD_FLAVOR = "flavour";
  // Field from build type: debug
  public static final int DB_VERSION = 53;
}
这里是 4.1.0
public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLICATION_ID = "app";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "flavour";
  public static final String VERSION_NAME = "6.0.0";
  // Field from build type: debug
  public static final String AMQP_URL = "url";
  // Field from build type: debug
  public static final String API_VERSION_SUFFIX = "V_04_04_09";
  // Field from build type: debug
  public static final String BASE_URL = "url";
  // Field from product flavor: flavour
  public static final String BUILD_FLAVOR = "flavour";
  // Field from build type: debug
  public static final int DB_VERSION = 53;
}

最佳答案

添加 buildConfigFieldbuildTypes在模块 build.gradle 文件中

buildConfigField("long", "VERSION_CODE", "${defaultConfig.versionCode}")        
buildConfigField("String","VERSION_NAME","\"${defaultConfig.versionName}\"")
例子,
buildTypes {
    debug{
        buildConfigField("long", "VERSION_CODE", "${defaultConfig.versionCode}")
        buildConfigField("String","VERSION_NAME","\"${defaultConfig.versionName}\"")

        //..
    }
    release {
        buildConfigField("long", "VERSION_CODE", "${defaultConfig.versionCode}")
        buildConfigField("String","VERSION_NAME","\"${defaultConfig.versionName}\"")

        //...
    }
}
defaultConfig.versionCodedefaultConfig.versionName值为
defaultConfig {
    minSdkVersion 16
    targetSdkVersion 29
    versionCode 1
    versionName "1.0"

    //..
}
在你的模块 build.gradle
您可以在 BuildConfig 中创建字段通过写 buildConfigField模块 build.gradle 中的方法。该方法第一个参数是创建字段类型,第二个是字段名,第三个是值。
安卓工作室 4.1

关于android - 更新到 'com.android.tools.build:gradle:4.1.0' 后缺少 BuildConfig.VERSION_CODE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64333763/

相关文章:

android - 如何解决多个 D8 警告 : <Class X> was not found, 它是 default 或静态接口(interface)方法 desugaring <Class Y> 所必需的?

android - Eclipse中mnt/sdcard/File Explorer下的文件和文件夹

android - 按照教程创建flutter app失败

android - 如何在独立的Android SDK中使用Gradle?

Android Gradle Multidex - 无法最小化 classes.dex,始终包含最大引用

android - 从网络下载 Artifact 时,Gradle发生了错误

android - 在 Android 上将循环设置为 -1 时不播放声音

java - 如何修复OutOfMemoryError android studio

安卓 AlarmManager 不工作

spring - 从Spring依赖管理插件中提取依赖版本