gpt4 book ai didi

安卓设计/架构 : Create different Apps from same code base

转载 作者:太空宇宙 更新时间:2023-11-03 11:49:04 25 4
gpt4 key购买 nike

我想从相同的代码库创建两个应用程序。它们的颜色不同,一些数据来自后端。情况就像,假设我想创建应用程序 App1 和 App2。两者都有相似的流量。我可以吗,

  1. 如果是 App1 选择标题颜色蓝色,其他选择红色?
  2. 在代码中,if(running App == App1) { 执行这部分} else {other部分}?
  3. 如果 App 是 App1,则选择 layout1.xml 作为 Activity ,否则选择layout2.xml?

我不知道该怎么做。任何帮助都会很棒。

谢谢。

最佳答案

如果您使用的是 Android Studio,那么您描述的是产品 flavor 。引用 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.

为了回答这个问题,让我们假设您有一个项目有两种产品风格,flavorOneflavorTwo。您的项目还将具有三个源集:

  • 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的颜色,并赋予它红色值。应用的其余部分引用 header 颜色(例如,@color/headerR.color.header)。当您构建 flavorOne 时,将使用 main 颜色。当您构建 flavorTwo 时,flavorTwo 值将覆盖 main 值。

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 时,将使用 main 布局。当您构建 flavorTwo 时,flavorTwo 布局将覆盖 main 布局。

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 为要添加到 的一些新字段(例如,STUFF)提供一个值BuildConfig 类,其中该值会因风格而异。 This Stack Overflow answer显示详细信息。

关于安卓设计/架构 : Create different Apps from same code base,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29265032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com