gpt4 book ai didi

java - 产品风格和来源层次结构

转载 作者:行者123 更新时间:2023-12-02 12:48:15 25 4
gpt4 key购买 nike

我的应用有两种风格,为简单起见,将其称为 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 使用不同的布局文件 flavor_dependent_layout.xml 和 Java 类 FlavorDependentJavaClass 的实现。

这是正确的方法吗:

sourceSets {
main {
res.srcDirs = ['src/main/res']
java.srcDirs = ['src/main/java']
}
flavora {
res.srcDirs = ['src/flavora/res', 'src/main/res']
java.srcDirs = ['src/flavora/java', 'src/main/java']
}
flavorb {
res.srcDirs = ['src/flavorb/res', 'src/main/res']
java.srcDirs = ['src/flavorb/java', 'src/main/java']
}
}

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

(另外,我是否必须明确提及 Assets 文件夹?因为我也有“/src/main/assets”)

最佳答案

Is this the correct way to do it:

没有。

只需创建 src/flavora/res/ , src/flavora/java/ , src/flavorb/res/ ,和src/flavorb/java/ ,然后把东西放进去。它们将自动添加到适当的构建路径中。不需要调整srcDirs .

How does it know that I've included the class for both flavors in case I try to perform a method and it only exists for one flavor, for example?

这是一个构建错误。对于 Java 代码,如果您想拥有它的风格:

  • 同一个类不能存在于 main
  • 引用自 main 的任何内容必须同时存在于 flavora 中和flavorb

例如,如果您有 AdStrategy类里面的某处src/flavora/java/和里面的某个地方src/flavorb/java/ ,您不会AdStrategysrc/main/java/ 。以及任何main指的是AdStrategy (构造函数、方法等)必须同时存在于 flavora 中和flavorb AdStrategy 的实现。在构建时,当您构建flavora时,src/main/java/src/flavora/java/树会自动使用,无论您在main中引用什么内容需要解决(对于 flavorb 版本也是如此)。

关于java - 产品风格和来源层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com