Java 如何维护应用程序的付费和免费版本
我已经建立了一个游戏应用程序的免费版本,现在市面上有一个名字像com.mycompany.myfreegame。现在我想制作一个付费版本。毫无疑问,在未来的几年里,这两个版本都需要进行调整和bug修复,因此我希望以尽可能紧凑的方式封装免费和付费信息的编码,以便我可以同时修复这两个版本中的bug 如果在运行时处理了两个版本之间的所有差异,那么我可以在源代码中设置一个标志,这将是问题的结束。不幸的是,还有另外两件事要考虑,Java 如何维护应用程序的付费和免费版本,java,android,eclipse,Java,Android,Eclipse,我已经建立了一个游戏应用程序的免费版本,现在市面上有一个名字像com.mycompany.myfreegame。现在我想制作一个付费版本。毫无疑问,在未来的几年里,这两个版本都需要进行调整和bug修复,因此我希望以尽可能紧凑的方式封装免费和付费信息的编码,以便我可以同时修复这两个版本中的bug 如果在运行时处理了两个版本之间的所有差异,那么我可以在源代码中设置一个标志,这将是问题的结束。不幸的是,还有另外两件事要考虑, 两个版本之间的包名称需要不同 有些xml需要不同。例如,免费版需要线性布局来
实现这个目标最简单的方法是什么?我想我要尝试的第一种方法是在Eclipse中使用3个项目:一个用于游戏的任一版本,一个包含所有共享代码的库项目。库项目将是你核心游戏的所有代码所在,版本特定的项目管理加载不同的布局,在免费版本中放置广告,以及在付费版本中添加级别/功能/帽子
使用ant任务,您可能可以通过编译器标志实现单个代码库的目标,但这超出了我的能力范围。我想您需要的是一个库项目 从该网页:
如果您正在创建免费和付费版本的应用程序。将两个版本共用的应用程序部分移动到库项目中。两个具有不同包名的依赖项目将引用库项目,并且只提供两个应用程序版本之间的差异。
另一个与此非常相似的问题似乎有一个像样的讨论和答案:
编辑:这里有一个关于如何实现库项目的链接
对于稍有不同的版本,一个库项目可以容纳。首先生成库项目,然后最后生成父项目(使用库的项目),并将它们合并在一起。两个项目都可以定义相同的资源标识符,最后生成的项目(父项目)获得优先级(覆盖)。因此,本质上,您可以覆盖父/调用应用程序中的字符串/布局(可能更多,不确定?)
例如:假设您有两个项目,免费和付费。您可以使用默认实现(免费版本)创建一个字符串,并在付费版本(父应用)中覆盖它
共享库Strings.xml文件中的代码:
<string name="AppName">My Application (Free)</string>
<string name="AppName">My Application Premium</string>
我的应用程序(免费)
父app Strings.xml文件中的代码:
<string name="AppName">My Application (Free)</string>
<string name="AppName">My Application Premium</string>
My Application Premium
我想您正在寻找类似的产品:
基本上,这里最简单的方法是使用两个不同的清单文件和两个不同的主活动,并使用Ant切换编译,尽管后者是可选的
希望能有帮助。我同意。可以定义包含三个子项目的父项目,例如:
- 普通的
- 支付
- 免费的
编辑:我刚刚发现,你有一个for maven,还有一些很酷的功能也许现在最好的方法就是使用Android Studio+gradle。 本例允许在控制台中使用一个命令构建付费和免费版本。
更多详细信息见本文:处理应用程序的注册状态不是更容易吗?这将允许你有一个单一的项目,你所要做的就是简单地“隐藏”广告,如果它是付费版本。或者使用市场的
应用程序内购买
?+1-我使用Maven来管理我的android应用程序的构建步骤和依赖关系管理。。。最初配置起来有点困难,但现在我已经全部安装好了,效果很好。这是我过去一直追求的解决方案。虽然现在,我会认真考虑在应用程序购买升级。作为一个这样做的人,Gradle集成在Android工作室(特别是Mac OS版本)是片状的,不可靠的,远,远,远离beta质量。现在还不要使用它。它将到达那里,但它还没有到达那里。是的,还有很多bug,但它可以在生产中使用。例如,Android Studio在生产中成功地与我们的产品一起使用。该产品是由Gradle一步建成的付费、免费和一些合作伙伴版本。但是我们必须使用menifest的模板和一些java文件。