14

我有一个适用于 Android 的应用程序,它有两种形式:试用版和付费“专业版”。这两个版本在 Android Market 中并存,并且具有不同的包名称(我们称它们为 com.app.trial 和 com.app.pro)。它们共享相同的代码库。当我必须在 Eclispe 中的试用版和专业版之间切换时,我每次编辑代码都必须花费不少于 20 分钟以使其构建正确的版本。我的程序如下所示:

  1. 重命名 AndroidManifest.xml 中的包名称(也重命名应用程序版本名称和版本代码)。

  2. 单击主包名称“com.app.pro”(如果 pro 是最新构建,现在我想进行试用构建)并选择 Refactor->Rename(检查“更新引用”和“重命名子包”)并让 Eclipse进行重命名。

  3. 在这之后是困难的部分:在我的代码中,许多文件仍然导入“旧”包名称“com.app.pro”,而不是自动更改为“com.app.trial”。在某些情况下,Eclipse 在重命名期间添加了这些引用,原因不明(在给定的 Java 文件中没有对这个特定包的引用)。我必须手动编辑所有实例。

我的问题是:

如何减少此过程的耗时?我也一直在使用 NetBeans,其中有对#ifdefs(又名能力)的方便支持,这确实使构建之间的切换变得轻而易举。遗憾的是,Eclipse 不支持(至少没有内置支持)#ifdefs。

任何建议将不胜感激。

PS 作为参考,我使用的是 Eclipse Ganymede 版本 3.4.2,但也尝试了更新的版本,它也是如此。

4

1 回答 1

22

一个很好的解决方案是将您的应用程序分成三个项目:

  • 一个库项目,将包含所有通用代码
    • 实际上,创建一个应用程序的两个版本(精简版和付费版)是本页讨论的常见场景之一;-)
  • 试用版的一个项目,
  • 和一个专业版项目。

每个试用版和专业版将:

  • 引用库项目(包含几乎所有代码)
  • 定义试用版或专业版的特定内容(如清单、一些字符串、一些附加代码……)

这样,构建试用版或专业版就像构建一个项目或另一个项目一样简单:无需更改任何内容!


几个可能有帮助的链接:

于 2011-03-26T17:32:56.093 回答