无法解析不同口味的Android工作室的方法'getAllUserGroupByName()'
考虑到我在我的Android项目中有两种产品风格,分别名为“本地”和“国际”。我只是在给出我的情况的骨架,所以请忽略其他错误。考虑到我已经为不同的口味设置了不同的源代码。
现在,在我的“本地”风格中,我只需要下面提到的一种方法。
// local flavor file
interface UserDao {
List<User> getAllUser();
}
虽然在我的国际风格中,我还需要额外的功能来按其名称将用户放入组中。所以有两种方法。
// international flavor file
interface UserDao {
List<User> getAllUser();
List<User> getAllUserGroupByName();
}
但问题是,我从调用该方法的位置有一个活动。当我从活动中调用方法时,如果当前风格是“国际”,它将编译,但它不会编译“本地”风格,因为它不包含该方法。getAllUserGroupByName()
我尝试通过包装如下条件来调用此方法,
// BuildUtils is my helper class to get current flavor check easily.
if (BuildUtils.isInternational()) {
getAppDatabase().UserDao().getAllUserGroupByName();
}
但它也不起作用。
我不想要以下解决方案。
- 每种口味两种活动。
- 我已经通过将两个接口组合在一个接口中解决了这个问题。(这也是有效的,因为它不包含任何实现)。
更新
经过一些研究和@manouti给出的答案
问题在于 Java 是一种静态类型的语言,因此放置 if 条件并不意味着编译器将避免使用 getAllUserGroupByName 调用来检查代码。
那么,有没有办法让构建系统根据代码编译的风格忽略特定的代码呢?
或
任何Android工作室IDE工具或功能,它将根据风格丢弃特定代码进行编译。