1

我已经在 SO 周围搜索并发现了一些东西,但我仍然不确定我是否完全理解,所以我请你澄清一下。

这是我需要的:

  • 有一个具有特定功能的项目:查询Web服务,以不同的视图显示结果

  • 拥有第二个、第三个和第四个项目,其功能与第一个项目完全相同,但图形元素不同,如启动画面图像、图标、名称、包名称。

所以,我有ProjectCore活动和功能。Project1 带有用于启动画面的汽车图标和汽车图像。Project2 带有飞机图标和用于启动画面的飞机图像。类似的东西。每个项目都有一个带有常量的类,例如'appId、appName、appServerURL"...所有的 Web 服务调用、数据显示都在 Core 中,因为它对于所有 prohects 都是相同的,只有从常量类中读取。

我正在考虑这种方法

  1. 使用 com.domain.core 和虚拟图像之类的包使 ProjectCore 成为库项目
  2. 制作 Project1,在其中添加对 ProjectCore 的引用,并使用 com.domain.code.project1 之类的包和资源文件夹中的资源文件夹,放置与核心项目中相同名称的图像
  3. 按照与 project1 相同的原理制作 Project2

这种方法会奏效吗?

谢谢。

稍后编辑。如前所述,我已经尝试过。例如,在 Core 项目中,我在 drawable 中有一个名为 splash.png 的文件。在 Project1 和 Project2 的可绘制文件夹中,我将 spash.png 文件与其他图像放在一起。这工作正常。在我的手机上运行 Project1 和 Project2,使用自己的图像启动每个应用程序。到目前为止,一切都很好。

然后,因为我需要在我的应用程序中使用不同的常量,我进入核心库项目并添加:

public class C {
    public static String SomeConstant = "Project core!";
}

问题来了,我需要在 Project1 和 Project2 中使用不同的常量值。因为在 Core 项目上,该类例如在 com.domain.core.utils 中......我不能在 Project1 和 Project2 中添加相同的包。如何添加类以便我可以更新它们的值并用于具有特定值的每个项目?

public class C {
    public static String SomeConstant = "Project 1 constant!";
}

public class C {
    public static String SomeConstant = "Project 2 constant!";
}

谢谢!

4

3 回答 3

1

您希望在 Library 项目中创建您的功能,然后让您的所有 Branded/OEM/3rdParty 项目由此扩展,在必要时覆盖图像和字符串资源。

当您需要使用“常量”时,您应该使用代码的单个“运行一次”部分(例如启动屏幕)从资源文件中加载这些字符串:

public static final String CONSTANT_ONE;

    public void onCreate() { CONSTANT_ONE = getResources().getString(R.String.CONSTANT_ONE); }

编辑

我不确定如何初始化最终值onCreate()。如果final不能正常工作,并且您担心在程序执行期间更改变量,则创建变量private(以便只有该类可以分配给它),然后创建一个public static String getConstantOne()函数。

于 2012-03-23T10:40:22.437 回答
1

是的。图书馆项目非常适合这一点,尤其是在资源不同的情况下。我已经使用了您成功概述的确切方法...

于 2012-03-22T19:26:35.620 回答
1

是的,这应该可以正常工作。我做了一些类似的事情,我发现偶尔你可能会遇到一些你想从你的库项目调用到你的应用程序项目的情况。在这些情况下,我使用了在库项目中定义但在应用程序项目中实现的接口/抽象类......

于 2012-03-22T19:35:14.270 回答