在Android中处理一个核心项目及其派生的多个项目

在Android中处理一个核心项目及其派生的多个项目,android,eclipse,core,library-project,Android,Eclipse,Core,Library Project,我已经四处搜索,找到了一些东西,但我仍然不确定我是否完全理解,所以我要求你们澄清 以下是我需要的: 有一个具有特定功能的项目:查询web服务,在不同视图中显示结果 第二个、第三个和第四个项目的功能与第一个项目完全相同,但只有不同的图形元素,如启动屏幕图像、图标、名称和软件包名称 因此,我有了带有活动和功能的ProjectCore。带有汽车图标和splashscreen汽车图像的Project1。带有飞机图标和飞溅屏幕的飞机图像的Project2。差不多吧。每个项目都有一个带有常量的类,如“a

我已经四处搜索,找到了一些东西,但我仍然不确定我是否完全理解,所以我要求你们澄清

以下是我需要的:

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

  • 第二个、第三个和第四个项目的功能与第一个项目完全相同,但只有不同的图形元素,如启动屏幕图像、图标、名称和软件包名称

因此,我有了带有活动和功能的
ProjectCore
。带有汽车图标和splashscreen汽车图像的Project1。带有飞机图标和飞溅屏幕的飞机图像的Project2。差不多吧。每个项目都有一个带有常量的类,如“appId、appName、appServerURL”…所有web服务调用、数据显示都在核心中,因为所有项目都是相同的,只是读取常量类

我在考虑这种方法

  • 使用com.domain.core和虚拟映像等包使ProjectCore成为库项目
  • 制作Project1,在其中添加对ProjectCore的引用,并使用类似com.domain.code.Project1的包,在resources文件夹中,放置与core项目同名的图像
  • 按照与project1相同的原则制作Project2
  • 这种方法有效吗

    谢谢

    稍后编辑。我已经像前面提到的那样尝试过了。例如,在Core project中,我在drawable中有一个名为splash.png的文件。在Project1和Project2的drawable文件夹中,我将spash.png文件与其他图像放在一起。这很好。在我的手机上运行Project1和Project2,用自己的图像启动每个应用程序。到目前为止,一切都很好

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

    public class C {
        public static String SomeConstant = "Project core!";
    }
    
    问题来了,我需要在Project1和Project2之间有不同的常量值。因为在Core project上,类位于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!";
    }
    

    谢谢!

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

    是的,这应该很好。我做了一些类似的事情,我发现有时您可能会在某些情况下希望从图书馆项目调用应用程序应用程序项目。在这些情况下,我使用了库项目中定义但在应用程序项目中实现的接口/抽象类…

    您希望在库项目中创建功能,然后让所有品牌/OEM/第三方项目从此扩展,必要时覆盖图像和字符串资源

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

    public static final String CONSTANT_ONE;
    
        public void onCreate() { CONSTANT_ONE = getResources().getString(R.String.CONSTANT_ONE); }
    
    编辑


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

    作为替代,值得一读。哈哈,我叫mine CoreLibrary;)