Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何维护应用程序的付费和免费版本_Java_Android_Eclipse - Fatal编程技术网

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

Java 如何维护应用程序的付费和免费版本,java,android,eclipse,Java,Android,Eclipse,我已经建立了一个游戏应用程序的免费版本,现在市面上有一个名字像com.mycompany.myfreegame。现在我想制作一个付费版本。毫无疑问,在未来的几年里,这两个版本都需要进行调整和bug修复,因此我希望以尽可能紧凑的方式封装免费和付费信息的编码,以便我可以同时修复这两个版本中的bug 如果在运行时处理了两个版本之间的所有差异,那么我可以在源代码中设置一个标志,这将是问题的结束。不幸的是,还有另外两件事要考虑, 两个版本之间的包名称需要不同 有些xml需要不同。例如,免费版需要线性布局来

我已经建立了一个游戏应用程序的免费版本,现在市面上有一个名字像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切换编译,尽管后者是可选的

    希望能有帮助。

    我同意。可以定义包含三个子项目的父项目,例如:

    • 普通的
    • 支付
    • 免费的
    Maven允许拥有不同的配置文件,同时拥有相同的代码库

    例如,我目前有一个项目,其中使用了两个数据库,因此所有应用程序配置文件都保留在一个公共项目中,其中数据库配置文件和类保留在每个项目文件夹中。当我在父级中进行构建时,每个子项目都被构建,单元测试通过,等等

    此外,这只是maven的一千个优点之一


    编辑:我刚刚发现,你有一个for maven,还有一些很酷的功能

    也许现在最好的方法就是使用Android Studio+gradle。 本例允许在控制台中使用一个命令构建付费和免费版本。
    更多详细信息见本文:

    处理应用程序的注册状态不是更容易吗?这将允许你有一个单一的项目,你所要做的就是简单地“隐藏”广告,如果它是付费版本。或者使用市场的
    应用程序内购买
    ?+1-我使用Maven来管理我的android应用程序的构建步骤和依赖关系管理。。。最初配置起来有点困难,但现在我已经全部安装好了,效果很好。这是我过去一直追求的解决方案。虽然现在,我会认真考虑在应用程序购买升级。作为一个这样做的人,Gradle集成在Android工作室(特别是Mac OS版本)是片状的,不可靠的,远,远,远离beta质量。现在还不要使用它。它将到达那里,但它还没有到达那里。是的,还有很多bug,但它可以在生产中使用。例如,Android Studio在生产中成功地与我们的产品一起使用。该产品是由Gradle一步建成的付费、免费和一些合作伙伴版本。但是我们必须使用menifest的模板和一些java文件。