Sag*_*gar 3 architecture android application-design mobile-application
我想从相同的代码库创建两个应用程序.它们的颜色不同,有些数据来自后端.情况就像,让我说我想创建应用程序App1和App2.两者都有类似的流程.我可以吗,
我不知道该如何解决这个问题.任何帮助都会很棒.
谢谢.
如果您使用的是Android Studio,那么您所描述的就是产品风格.引用文档:
产品风格定义项目构建的应用程序的自定义版本.单个项目可以有不同的风格,可以更改生成的应用程序.
出于这个答案的目的,让我们假设你有一个项目有两种产品风格,flavorOne
和flavorTwo
.您的项目还有三个源集:
src/main/
,你的大部分东西都去了src/flavorOne/
,一种口味的东西去src/flavorTwo/
,其他味道的东西去考虑到这一点...
选择标题颜色蓝色(如果是App1)和红色是否为其他?
在src/main/res/values/colors.xml
,定义一个名为的颜色header
,并给它一个蓝色值.在src/flavorTwo/res/values/colors.xml
,定义一个名为的颜色header
,并为其指定一个红色值.应用程序的其余部分引用header
颜色(例如@color/header
,R.color.header
).构建时flavorOne
,main
将使用颜色.构建时flavorTwo
,该flavorTwo
值将覆盖该main
值.
如果App是App1,选择layout1.xml进行活动,那么选择layout2.xml?
在src/main/res/layout/thingy.xml
,定义您的默认布局实现.在src/flavorTwo/res/layout/thingy.xml
,定义要用于的布局flavorTwo
.您的Java代码将引用R.layout.thingy
.构建时flavorOne
,main
将使用布局.构建时flavorTwo
,flavorTwo
布局将覆盖main
布局.
在代码中,如果(运行App == App1){执行此部分}否则{其他部分}?
这取决于你有多少代码变化.
如果它很重要,您可以使用策略模式:
有一个执行StuffStrategy
中src/flavorOne/java/
有另一种实现方式StuffStrategy
中src/flavorTwo/java/
在您的src/main/java
代码中,请参阅StuffStrategy
,它将根据您正在构建的风格引入正确的实现
如果代码变体实际上是微不足道的,那么您可以使用buildConfigField
为某个新字段(例如STUFF
)提供一个值来添加到BuildConfig
类中,其中该值会因风格而异.此Stack Overflow答案显示详细信息.
归档时间: |
|
查看次数: |
1101 次 |
最近记录: |