Android设计架构:从相同的代码库创建不同的应用程序

Android设计架构:从相同的代码库创建不同的应用程序,第1张

概述我想从相同的代码库创建两个应用程序.它们的颜色不同,有些数据来自后端.情况就像,让我说我想创建应用程序App1和App2.两者都有类似的流程.我可以吗,>如果是App1则选择标题颜色蓝色,为其他选择红色?>在代码中,if(运行App==App1){执行此部分}否则{other部分}?>如果App是App1,请选择

我想从相同的代码库创建两个应用程序.它们的颜色不同,有些数据来自后端.情况就像,让我说我想创建应用程序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设计/架构:从相同的代码库创建不同的应用程序全部内容,希望文章能够帮你解决Android设计/架构:从相同的代码库创建不同的应用程序所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存