【问题标题】:Android & Eclipse 2 different versions of the same appAndroid & Eclipse 2 同一个应用程序的不同版本
【发布时间】:2010-05-16 09:12:00
【问题描述】:

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

【问题讨论】:

    标签: android eclipse


    【解决方案1】:

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

    例如(不是基于eclipse):

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

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

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

    如果您可以这样组织您的应用,那么您只需要一个代码库。
    将其设置为以一种方式(免费或付费,由您选择)构建您的应用,并在清单中为该版本的应用使用适当的包。
    然后,添加执行以下操作的 Ant 任务:

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

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

    【讨论】:

      【解决方案2】:

      这是 Android Market 的失败之一,尽管我明白他们为什么这样做。它只是不是为您的应用程序的免费和付费版本而设计的(他们声称 24 小时退货政策是为了这个,但它却被用于盗版)-:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-19
        • 2019-11-18
        相关资源
        最近更新 更多