N J*_*N J 1 android android-studio build.gradle android-gradle-plugin android-build-flavors
我的项目结构如下所示
+ src
+ main // this is my common code
+ java
- LoginScreen // depending on condition launch screen from flavor1 or flavor2
+ res
+ flavor1
+ java
+ res
+ flavor2
+ java
+ res
Run Code Online (Sandbox Code Playgroud)
根据条件,我在main/src 中有 Login 类,必须从flavor1 或flavor2 启动屏幕。
例如:
class LoginScreen{
......
if(true){
// launch ScreenUser from Flavor1 reset of screen flows from falvour1
}else{
// launch ScreenOTP from Flavor2 reset of screen flows from falvour2
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如果我为 flavor1 进行构建,它会显示 falvor2 类的错误,反之亦然。
两种口味都有不同的 applicationId,如applicationIdSuffix ".flavor1"
这可能吗?如果不是,我怎么能做到这一点?
当我完成这类事情时,我使用了接口和依赖注入(我使用了dagger)。就像是:
public interface LoginBehaviour {
void goToNextScreen(Context context);
}
Run Code Online (Sandbox Code Playgroud)
然后在每个风格中定义一个实现,其中包含启动下一个屏幕的代码。就像是:
public class FlavourOneLoginBehaviour implements LoginBehaviour {
@Override
public void goToNextScreen(Context context) {
context.startActivity(new Intent(context, ScreenUser.class));
}
}
Run Code Online (Sandbox Code Playgroud)
和:
public class FlavourTwoLoginBehaviour implements LoginBehaviour {
@Override
public void goToNextScreen(Context context) {
context.startActivity(new Intent(context, ScreenOTP.class));
}
}
Run Code Online (Sandbox Code Playgroud)
您需要在每种风格中设置依赖注入容器,以便它引用本地实现(这将取决于您使用的框架)。完成后,您可以使用主项目中的容器在运行时获得 LoginBehaviour 接口的正确实现,并且您可以在其上调用 goToNextScreen 来进行导航。依赖注入是一种非常方便的方法,可确保您无需进行重大重构即可换出部分代码,并且在重用和灵活性方面有很大帮助。希望有帮助!
| 归档时间: |
|
| 查看次数: |
1190 次 |
| 最近记录: |