当前位置: 首页 > 知识库问答 >
问题:

如何在Gradle构建脚本(Android)中定义和使用常量?

黄毅
2023-03-14

我正在使用Gradle作为其构建系统的Android应用程序。

我的目标是使用一个值(包名)作为应用程序ID

productFlavors {
   orange {
      applicationId "com.fruits.android.orange"
      // ...

还可以通过BuildConfig公开它,以便Java代码可以访问它。

此访问必须来自flavor之外(即,应用程序的免费版本需要知道付费版本的软件包名称,以便能够提示用户在Play store中升级)。

所以我想这样做:

productFlavors {
   orange {
      applicationId orangeProPackage
      // ...


buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" // ?

只是我不知道如何定义orangerpackage,使其在整个构建中可见。格雷德尔并没有破坏剧本。

因为有几种不同的口味,如果我能以某种方式将所有这些常数分组(我猜?):

def proPackages = [
        orange: "..."
        apple: "..."
        banana: "..."
]

然后以清晰和描述性的方式引用它们,如proPackages。橙色等。

问题是,如何做到这一点?

这不是一个重复的变量。在Java中是否可以用Gradle声明一个变量?

我已经看到了这个问题(以及其他一些问题)。我知道如何声明buildConfigFields,我已经有很多了。我的问题是如何重用与buildConfigFieldapplicationId相同的值。

共有1个答案

陈扬
2023-03-14

只是我不确定如何定义orangeProPackage,使其在整个构建中可见。格雷德尔并没有破坏剧本。

你可以把它放在gradle里。项目根目录中的属性。像其他一样。属性文件,它只是一个键值存储:

ORANGE_PRO_PACKAGE=com.morawski.awesomeapp

然后在您的build.gradle中将其称为一个简单的全局字符串变量(ORANGE_PRO_PACKAGE):

buildConfigField 'String', 'ORANGE_PRO_PACKAGE', '"' + ORANGE_PRO_PACKAGE + '"'

如果我能以某种方式将所有这些常量分组,那将是最好的

任何涉及的事情。属性文件无法处理此问题。在这里,您可能会看到在顶级构建中定义globals。gradle文件只是普通的Groovy代码或其他东西。

 类似资料:
  • 我的问题是spring版本没有被识别为可变版本。那么我如何在字符串内部传递它呢?

  • 问题内容: 我有一个Gradle构建脚本,该脚本必须实例化Task中的Java类并在创建的对象上调用方法。目前,我有以下内容: 问题是找不到该类。我阅读了有关如何在Gradle中使用Groovy类的文章,但是我需要Java类来自外部JAR文件。如何将jar添加到构建源?似乎该块没有执行我期望的操作。谁能给我一个正确方向的提示? 问题答案: 该依赖关系作为项目依赖关系而不是脚本依赖关系本身添加。您需

  • 我有一个Gradle构建脚本,它必须在一个任务中实例化一个Java类,并在创建的对象上调用一个方法。目前,我有以下内容: 问题是找不到类。我阅读了这篇关于如何在Gradle中使用Groovy类的文章,但我需要我的Java类来自外部JAR文件。如何将jar添加到构建源中?似乎块没有完成我所期望的任务。谁能给我一个正确方向的提示吗?

  • Android新构建系统需要Gradle 1.10+版本。如何在内部配置?

  • 问题内容: 我正在尝试从Eclipse迁移项目,但是没有尝试过。在Eclipse中,我有3个项目(2个android应用程序项目和1个android库项目)。2个应用程序项目取决于库项目。当我执行gradle导出时,我得到3个无效的项目。我愿意对项目进行重组,但没有找到有关如何完成此工作的任何文档。 有没有办法使Eclipse导出的3个项目一起工作?我最好重新组织一下工作,如果可以的话,是否应该提

  • 主要内容:Gradle如何使用Groovy,Groovy的JDK方法,以下是纠正/补充内容:Gradle构建脚本文件用来处理两件事情:一个是项目和另一个的任务。每个生成表示一个或多个项目。一个项目表示一个JAR库或Web应用程序,也可能表示由其他项目产生的JAR文件组装的ZIP。简单地说,一个项目是由不同的任务组成。一个任务是指构建执行的一块工作。任务可能是编译一些类,创建一个,产生的或发布一些归档文件库。 注:Gradle使用Groovy语言编写脚本。 Gradle提供了一个域特定语言