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

为同一类的不同版本构建口味

陶裕
2023-03-14
project/
   |
   |---src/
        |---flavorA2/
        |      |
        |      |---java/
        |      |     |---com.abc.flavorA.mk2
        |      |                 |-----classA.java
        |      |                 |-----classB.java
        |      |---res/
        |      |---AndroidManifest.xml
        |
        |---main
        |      |---java/
        |      |     |---com.abc.flavorA
        |      |                 |-----classA.java
        |      |                 |-----classB.java
        |      |                 |-----classC.java
        |      |                 |-----classD.java
        |      |---res/
        |      |    |---drawable/
        |      |    |---layout/
        |      |    |---values/
        |      |         
        |      |---AndroidManifest.xml
        |
        |---flavorA
...
buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
    productFlavors {
        flavorA2 {
            packageName "com.abc.flavorA.mk2"
            versionCode 2
            versionName "1.0.1"
        }

        flavorA {
            packageName "com.abc.flavorA"
        }
    }
...

我通过选择构建变体到flavora2来运行代码。然而,运行结果显示,分级程序仍然从main中选择类(classaclassb),而不是在flavora2中使用更改后的版本。

我是不是漏掉了什么?

共有1个答案

龚奇逸
2023-03-14

因为你有两个不同的包下的类,这是完全不同的类。所以这些类不会互相替换。

使用口味,您不能重写类文件。因此,实现所需目标的一种方法是将这些类从main移到flavora中。

所以你会有这样的东西:

project/
   |
   |---src/
        |---flavorA2/
        |      |
        |      |---java/
        |      |     |---com.abc
        |      |                 |-----classA.java
        |      |                 |-----classB.java
        |      |---res/
        |      |---AndroidManifest.xml
        |
        |---main/
        |      |---java/
        |      |     |---com.abc.flavorA
        |      |                 |-----classC.java
        |      |                 |-----classD.java
        |      |---res/
        |      |    |---drawable/
        |      |    |---layout/
        |      |    |---values/
        |      |         
        |      |---AndroidManifest.xml
        |
        |---flavorA/
        |      |---java/
        |      |     |---com.abc
        |      |                 |-----classA.java
        |      |                 |-----classB.java
 类似资料:
  • 在NPM 包的dist/目录你将会找到很多不同的 Vue.js 构建版本。这里列出了它们之间的差别: UMD CommonJS ES Module 完整版 vue.js vue.common.js vue.esm.js 只包含运行时版 vue.runtime.js vue.runtime.common.js vue.runtime.esm.js 完整版 (生产环境) vue.min.js - -

  • 前言:这不是一个关于如何在一个Android应用中使用构建类型和产品口味的问题。我理解其中涉及的基本概念。这个问题更多的是试图理解在构建类型中应该指定哪个配置,在产品风味中应该指定哪个配置,以及实际上是否有必要进行任何区分。 本周,我学习了更多关于Android应用程序的分级配置。我最初认为自己对构建类型和产品风格有很好的把握,但我对文档越深入,就越意识到这两者之间的区别对我来说根本不清楚。 既然

  • 问题内容: 有没有一种方法可以使用一个版本的JRE构建我的应用程序,但是我的源代码符合另一个版本? 我想使用1.6在本地调试我的应用程序,因为OS X 1.6优于1.4.2,但是由于向后兼容的原因,我们实际上使用1.4.2进行了调试。 问题答案: 您可以通过“运行配置”选项进行管理。创建一个新的Run Configuration-> Java Application,然后您可以指定要用于该配置的J

  • 我对GitHub操作(以及一般的持续集成)是新手。我刚刚阅读了使用Node.js with GitHub操作,我在Node.js工作流模板中找到了这个片段: 上面提到 该模板包括一个矩阵策略,它用三个Node.js版本构建和测试代码:8.x、10.x和12.x。“x”是一个通配符,它与某个版本可用的最新次要版本和补丁版本相匹配。数组中指定的每个Node.js版本都创建一个运行相同步骤的作业。 我的

  • 问题内容: 我目前在“开发”框中安装了Jenkins实例。这样可以很好地构建并且可以毫无问题地部署到我们的开发环境中。 在构建过程中,我的项目使用了一个包含诸如数据库连接URL之类的详细信息的属性文件(诸如此类的详细信息显然会因我所指向的环境而异)。 我想知道的是配置项目的最佳方法是什么,以便当我想将Jenkins构建的WAR文件发布到Production中时,它包含Production属性而不是

  • 问题内容: 我试图使用通常的方式运行Maven构建: 我收到一连串的错误,内容如下: 执行构建时如何使用-source 5。我的JAVA_HOME指向JDK 1.6。 问题答案: 将此添加到您的pom.xml中: 它也记录在Maven FAQ中。 有关更多信息,请参阅Compiler Plugin文档。