产品风格和源层次结构

时间:2017-06-21 22:06:49

标签: java android layout resources android-productflavors

我的应用有两种风格,简称为flavoraflavorb

    productFlavors {
        flavora {
            resValue "string", 'app_name', "App Name Flavor A"
            applicationIdSuffix ".flavora"
        }
        flavorb {
            resValue "string", 'app_name', "App Name Flavor B"
            applicationIdSuffix ".flavorb"
        }
    }

我希望这两种口味使用所有相同的布局,所有相同的Java代码,所有相同的资源等,除了我希望flavoraflavorb使用布局文件{{的不同实现1}}和Java类flavor_dependent_layout.xml

这是正确的方法:

FlavorDependentJavaClass

然后我只是创建必要的文件夹来放置相应的文件,它们自然会在那里工作吗?如果我尝试执行一个方法,它是如何知道我已经包含了两种风格的类,例如它只存在于一种风格中?

(另外,我是否必须明确提及资产文件夹?因为我还有`/ src / main / assets')

1 个答案:

答案 0 :(得分:1)

  

这是正确的方法:

没有

只需创建src/flavora/res/src/flavora/java/src/flavorb/res/src/flavorb/java/,然后将内容放入其中。它们将自动添加到适当的构建路径中。您无需调整srcDirs

  

如果我尝试执行某个方法并且仅存在一种风格,它是如何知道我已经包含了两种风味的类?例如?

这是构建错误。使用Java代码,如果你想要它的风格:

  • main
  • 中不能存在同一个班级
  • main引用的任何内容都必须同时存在flavoraflavorb

因此,举例来说,如果AdStrategy内某处src/flavora/java/以及src/flavorb/java/内某处有AdStrategy类,则 <\ n> src/main/java/main中。 AdStrategy flavora引用的任何内容(构造函数,方法等)都必须存在于flavorbAdStrategy {{1}的实现中}}。在构建时,当您构建flavora时,会自动使用src/main/java/src/flavora/java/树,而main中提到的任何内容都需要解析(同样适用于{{ 1}}构建)。