我可以在库模块中为不同的应用程序模块使用不同的类(使用风格)吗?



我有两个应用程序:应用程序模块 A应用程序模块 B。它们都使用库模块 X

库模块 X中,我有一些不同的行为,具体取决于哪个应用程序正在使用库。我大概有三种选择来解决这个问题。

硬编码提及应用程序。someClass将由应用程序注入或只是检查包。(我认为最糟糕的一个(:

if (someClass.isApplicationA()) {
doThis()
} else {
doThat()
}

硬编码提及即将要做的事情。someClass将由应用程序注入。(我也不太喜欢它(:

if (someClass.shouldDoThis()) {
doThis()
} else {
doThat()
}

3º 使用香精。我将为应用程序模块A 定义一个风格A,为应用程序模块B 定义一个风格B。在库模块 X中,我将定义这两种风格。因此,我会将自定义代码放在一些特定的类中,这些类对每种口味都有不同的版本。

customClassByFlavor.justDoIt()

到处我只看到口味用于单个应用程序。这是它的正确用法吗?

实现这一目标的优雅方法是

  1. 要求应用在其清单中指定标识符/密钥
  2. 要求应用在其 build.gradle 文件中指定变量
defaultConfig {
resValue "string", "identifier", "identifierConstant"      
}

在应用中使用该变量,就像使用字符串常量一样

context.getString(R.string.identifier);
  1. 从build.gradle文件的默认应用程序ID中选择应用程序的包名称
defaultConfig {
applicationId "com.google.example"            
}

最新更新