转换库中的Android项目以复制应用程序,只需进行一些更改

时间:2014-03-02 14:00:53

标签: android reusability

我有很多疑问,经过两天的搜索,我仍然没有找到解决问题的好方法。

我有一个应用程序的项目已经在商店中,这个项目有很多活动,碎片,服务,IntentServices,布局和资源(图像,字符串,整数,颜色,样式,原始,drawables等。 )。

现在,我需要实现一个新的应用程序几乎是第一个应用程序的副本,我只需要更改背景,一些资源(但几乎99%保持不变),也许在一个或两个片段中我将需要更改一些代码(实现不同的逻辑语句)。

我决定并且我认为在图书馆项目中转换所有项目是很自然的。

我做了:

1º创建一个名为framework的新项目并配置为库。将原始项目中的所有代码和资源(资产文件夹除外)复制到此处。 2º在原始项目中,我只保留manifest,proguard文件。我更改了manifest和proguard文件以引用新库的类。

我测试了应用程序,看看它是否仍在运行,而且还可以。直到现在我才进行了分离。

现在,出现了问题。我需要创建一个可重用的解决方案,并为该库提供标量,允许我在不同的应用程序中使用它。

在我的原始项目中,我创建了一个Application类的子类,用于全局变量。

没有任何其他想法,我决定如下: 1º在抽象类中转换MyApplication类。此外,我创建了一个接口ApplicationInterface,其中包含一些方法,如isBackgroundOverlayed()或getBackgroundResource(),我在片段中使用它来更改背景或最初定义的任何其他逻辑。 2º在App的项目中,我创建了一个新的Application类,它扩展了抽象类MyApplication并实现了ApplicationInterface接口,并在清单文件的Application标签中声明。

结论:这一切都有效,我能够有两个应用程序的项目,具有不同的背景和其他图像,如徽标甚至更改一些代码逻辑。一个例子是在原始App中当用户按下某个按钮时,App会显示一个对话框选项。在新应用中,当用户按下按钮时,它会执行一个片段(无选择)。

我的担忧:我认为这不是问题或最佳做法或良好“模式”的最佳解决方案。

你有什么想法吗?

提前谢谢!

ps:对不起,如果我没有正确使用这个论坛。我寻找答案,但我没有找到答案。

1 个答案:

答案 0 :(得分:1)

我认为你已经实现了你想要的,但这是一个漫长而耗时的过程。我还想提一件事,你不应该为不同的应用程序更改库项目

正如Android开发人员指南所说:

图书馆项目包含可在Android项目中引用的可共享的Android源代码和资源。当您拥有要重用的公共代码时,这非常有用。

您可以从here

了解更多信息

此外,您必须弄清楚,哪些lib正在执行哪些工作,以防您忘记所做的更改

我建议您保留原始项目的单独副本,然后将其导入Eclipse中的新工作区(通过将复制项目检入当前工作空间以便您拥有项目的新副本)并考虑更改其包获得新项目的名称

您可以在link上查看ans以了解如何更改包名称