如何维护应用的付费和免费版本

2022-09-03 02:22:09

我已经构建了一个游戏应用程序的免费版本,该应用程序现已上市,其名称类似于com.mycompany.myfreegame。现在我想做一个付费版本。毫无疑问,未来几年将需要对这两个版本进行调整和错误修复,因此我想以尽可能紧凑的方式封装免费与付费信息的编码,以便我基本上可以同时修复两个版本中的错误。

如果两个版本之间的全部差异都是在运行时处理的,那么我可以在源代码中设置一个标志,这将是问题的结束。不幸的是,还有另外两件事需要考虑,

  1. 两个版本之间的包名称需要不同。
  2. 某些 xml 需要有所不同。例如,免费版本需要线性布局来持有广告,付费版本则不需要。

实现这一目标的最简单方法是什么?


答案 1

我认为我尝试的第一种方法是在Eclipse中使用3个项目:一个用于游戏的任一版本,以及一个包含所有共享代码的库项目。库项目将是您核心游戏玩法的所有代码的所在地,特定于版本的项目管理加载不同的布局,将广告放入免费版本,并在付费版本中添加级别/功能/帽子。

你也许能够使用ant任务的编译器标志来实现单个代码库的目标,但这超出了我的范围。


答案 2

我认为你正在寻找的是一个图书馆项目 http://developer.android.com/guide/developing/projects/index.html#LibraryProjects

从该网页:

If you are creating an application that exists in both free and paid versions. You move the part of the application that is common to both versions into a library project. The two dependent projects, with their different package names, will reference the library project and provide only the difference between the two application versions.

另一个问题,与这个问题非常相似,似乎有一个不错的讨论和答案:具有共享代码库的多个应用程序。

编辑:这是有关如何实现库项目的链接。http://developer.android.com/guide/developing/projects/projects-eclipse.html

对于不同的版本略有不同,库项目可以容纳。首先生成库项目,然后最后生成父项目(使用库的项目),并将它们合并在一起。两个项目都可以定义相同的资源标识符,最后构建的项目(父项目)将获得优先级(覆盖)。因此,从本质上讲,您可以在父/调用应用程序中覆盖字符串/布局(可能更多,不确定?)。

例如:假设您有两个项目,免费和付费。您可以使用默认实现(免费版本)创建一个字符串,并在付费版本(父应用)中覆盖它。

共享库中的代码 字符串.xml文件:

<string name="AppName">My Application (Free)</string>

父应用字符串.xml文件中的代码:

<string name="AppName">My Application Premium</string>

推荐