Android& Eclipse 2同一个应用程序的不同版本

时间:2010-05-16 09:12:00

标签: android eclipse

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

2 个答案:

答案 0 :(得分:2)

您对此主题herethere进行了各种讨论,但基本上解决方案类似于重复项目。

例如(不是基于eclipse):

  

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

     

我将假设差异可以通过某种全局免费/非免费标志来处理。通过这种方式,我的意思是相同的代码将构成应用程序的两个版本,并且启用或使用哪些部分将依赖于某个公共静态数据成员:

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

如果您可以通过这种方式整理应用,那么您只需要一个代码库   让它设置为以一种方式构建您的应用程序(免费或付费,您的选择),并在您的清单中为该应用程序版本提供适当的软件包。
  然后,添加执行以下操作的Ant任务:

     
      
  1. 将项目目录的树形副本复制到临时位置
  2.   
  3. 通过a将清单的副本切换到新的包名   搜索和替换
  4.   
  5. 将旧包的R版本的所有import语句切换为   新的包,再次通过搜索和替换,再次在副本上,   不是你原来的
  6.   
  7. 将您的IS_PAID_APP(或其他)更改为相反的值   (在副本中搜索和替换)
  8.   
  9. 为项目副本执行Ant构建
  10.   
  11. 将该构建中的二进制文件复制到主项目的bin /   不同名称下的目录(因此它不会破坏您的其他副本   的APK)
  12.   
  13. 删除在步骤#1中创建的树拷贝
  14.         

    如果Java有预处理器,这会更简单一些。但是,我上面描述的基本技术已经使用了几十年了。它很笨重,但它有效,这意味着你只需要一套源代码来处理。   请注意,Ant <replace>任务可以很好地处理您的搜索和替换内容。

答案 1 :(得分:1)

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

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