如何定义共享构建变量?

How to define a shared build variable?

我正在尝试为每种构建类型设置自定义变量。

我的 build.gradle 文件如下所示:

buildTypes {
    each {
        buildConfigField "string", "SHARED_URL", "https://whosebug.com/"
    }
    debug {
        buildConfigField "string", "PRIVATE_URL", "https://debugoverflow.com/"
    }
    release {
        buildConfigField "string", "PRIVATE_URL", "https://releaseoverflow.com/"

        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
}

而且我想在调试和发布版本中通过 final String sharedUrl = BuildConfig.SHARED_URL; 访问我的代码中的 SHARED_URL。那么,我怎样才能实现这个目标呢?

P.S。我知道我可以在两个版本中复制变量 SHARED_URL,但我不想样板化。

你可以把你的普通 buildConfigField 放在 defaultConfig:

android {
  defaultConfig {
    buildConfigField "string", "SHARED_URL", "https://whosebug.com/"
  }

  buildTypes {
      debug {
        buildConfigField "string", "PRIVATE_URL", "https://debugoverflow.com/"
      }
      release {
        buildConfigField "string", "PRIVATE_URL", "https://releaseoverflow.com/"

        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
      }
  }
}

SHARED_URL 现在可用于所有构建变体。