Android和Eclipse 2个不同版本的相同应用

你好,我是一个开始使用Windows和Eclipse的IDE开发java android应用程序的开发android开发人员。我已经发布了一个游戏,但有一个免费版本的游戏和付费版本。 谷歌市场坚持认为不同的版本必须有不同的软件包名称。 到目前为止,我一直在用两个不同的名称重构包,并且每次构建不同的版本时都会更改R资源文件导入。 这两个版本的代码是99%相同的。是否有更好的方法?


你在这里和那里有关于这个话题的各种讨论,但基本上解决方案类似于复制项目。

例如(不基于日食):

这很难回答,因为我们不知道应用的免费和非免费版本之间有什么区别。

我会假设这种差异可以通过某种全球免费/非自由的国旗来解决。 我的意思是,相同的代码可以组成这两个版本的应用程序,并且启用或使用哪些部分将取决于某个公共静态数据成员:

if (SomeClass.IS_PAID_APP) { 
        // add more stuff to menu, etc. 
} 

如果你能以这种方式组织你的应用程序,那么你只需要一个代码库。
是否设置了构建您的应用程序的一种方式(免费或付费,您的选择)以及适用于该版本应用程序的清单中的适当软件包。
然后,添加一个执行以下操作的Ant任务:

  • 将项目目录树复制到临时位置
  • 通过搜索和替换将清单的副本切换到新的软件包名称
  • 将旧版包的R版的所有导入语句切换到新包,再次通过搜索和替换,并再次在副本上,而不是您的原件
  • 将您的IS_PAID_APP(或其他)更改为相反的值(复制中的搜索和替换)
  • 执行项目副本的Ant构建
  • 将该版本的二进制文件复制到主项目的bin /目录下(不会破坏APK的其他副本)
  • 删除步骤#1中的树副本
  • 如果Java有一个预处理器,这会更简单一些。 然而,我上面描述的基本技术已经使用了几十年了。 它笨重,但它可以工作,这意味着你只有一套源代码需要处理。 请注意,Ant <replace>任务将很好地处理您的搜索和替换内容。


    这是Android Market的失败之一,虽然我可以看出他们为什么这样做。 它只是没有为您的应用程序的免费和付费版本设计(他们声称24小时退货政策是这是什么,但这是用于盗版) - :

    无论如何,最简单的事情就是编写一个Ant构建脚本(或者你使用的任何脚本语言)。 通过所有.xml和.java文件进行搜索替换您的软件包名称。 然后在那里做你的应用程序的构建。 重构你的代码比它值得恕我直言更痛苦...

    链接地址: http://www.djcxy.com/p/975.html

    上一篇: Android & Eclipse 2 different versions of the same app

    下一篇: What's the easiest way to sort an EF4 EntityCollection<T>?