Android设计/架构:从相同的代码库创建不同的应用程序
作者:互联网
我想从相同的代码库创建两个应用程序.它们的颜色不同,有些数据来自后端.情况就像,让我说我想创建应用程序App1和App2.两者都有类似的流程.我可以吗,
>如果是App1则选择标题颜色蓝色,为其他选择红色?
>在代码中,if(运行App == App1){执行此部分}否则{other
部分}?
>如果App是App1,请选择layout1.xml进行活动,否则选择
layout2.xml?
我不知道该如何解决这个问题.任何帮助都会很棒.
谢谢.
解决方法:
如果您使用的是Android Studio,那么您所描述的就是产品风格.引用the documentation:
A product flavor defines a customized version of the application build by the project. A single project can have different flavors which change the generated application.
出于本答案的目的,让我们假设您有一个具有两种产品风格的项目,flavorOne和flavorTwo.您的项目还有三个源集:
> src / main /,你的大部分东西都去了
> src / flavorOne /,其中包含一种口味的东西
> src / flavorTwo /,其他风味的东西
考虑到这一点…
Select a Header color Blue if it is App1 and Red for other?
在src / main / res / values / colors.xml中,定义一个名为header的颜色,并为其指定蓝色值.在src / flavorTwo / res / values / colors.xml中,定义一个名为header的颜色,并为其指定一个红色值.应用程序的其余部分引用标题颜色(例如,@ color / header,R.color.header).构建flavorOne时,将使用主要颜色.构建flavorTwo时,flavorTwo值将覆盖主值.
If App is App1 select layout1.xml for activity else select layout2.xml?
在src / main / res / layout / thingy.xml中,定义默认布局实现.在src / flavorTwo / res / layout / thingy.xml中,定义要用于flavorTwo的布局.您的Java代码将引用R.layout.thingy.构建flavorOne时,将使用主布局.构建flavorTwo时,flavorTwo布局将覆盖主布局.
In code, if(running App == App1) { execute this part} else {other part}?
这取决于你有多少代码变化.
如果它很重要,您可以使用策略模式:
>在src / flavorOne / java /中有一个StuffStrategy的实现
>在src / flavorTwo / java /中有另一个StuffStrategy实现
>在你的src / main / java代码中,参考StuffStrategy,它将根据你正在构建的风格引入正确的实现
如果代码变体非常简单,您可以使用buildConfigField为要添加到BuildConfig类的某个新字段(例如,STUFF)提供值,其中该值会因flavor而异. This Stack Overflow answer显示了详细信息.
标签:android,architecture,mobile-application,application-design 来源: https://codeday.me/bug/20190717/1489721.html