1

我正在使用 Eclipse + Subversion 进行 Android 开发。我曾经用广告创建我的应用程序的免费版本,而另一个没有广告的应用程序付费,所以我将它们保存在 subversion 的两个单独的分支中。

我发现的问题是,由于它们是 Google Play 和其他市场的两个不同应用程序,它们必须具有不同的包名称。所以我有,例如:

com.package.game com.package.gamefree

当我对游戏的免费版本进行一些更改并希望将它们与 subversion 合并到付费分支时,我发现自己遇到了麻烦,因为免费游戏的源文件在 com/package/gamefree 下,而在 com/ 下付费包/游戏

我最终做了一个“手动”合并,逐个源文件进行源文件的差异,但我还必须检查那些已添加到另一个目录中的文件和那些已被删除的文件。浪费时间。

那么,有什么方法可以让 subversion 知道一个分支中的 com/package/game 与另一个分支中的 com/package/gamefree 是“相同”目录?

非常感谢提前,

4

2 回答 2

1

我猜在这里,但也许你可以trunkcom.package.gamefree包中安装免费应用程序。

在分支上,您可以让另一个导入在主干上开发的一个作为依赖库,并用打包在下面的启动器类包装它com.package.game,添加许可证内容......

这样,您只需修改一次代码,并构建 2 个应用程序。

于 2012-07-09T18:31:15.410 回答
0

在深入谷歌搜索之后,我发现我更好的机会只有两个:

  • 以任何方式使用 ANT,可在构建时自动切换免费版本和付费版本。
  • 使用在两个版本之间共享的 Android 库项目。

我已经看到大多数使用 ANT 的人前一段时间都在这样做,因为缺少其他选项,但由于 Eclipse/ADT 上有 Android 库项目,因此这是此类事情的首选方式。即使在 Android 的开发文档中,也说:

http://developer.android.com/tools/projects/projects-eclipse.html#SettingUpLibraryProject

如果您正在创建一个同时存在免费和付费版本的应用程序。您将两个版本共有的应用程序部分移动到库项目中。两个依赖项目,具有不同的包名称,将引用库项目并仅提供两个应用程序版本之间的差异。

这对我来说似乎是最好的方法,因为我从未使用过 ANT,并且鉴于库选项,没有理由学习它。

所以我这样做了:我的项目现在被拆分为 MyGameCore,这是一个库项目,其中包含 MyGameFree 和 MyGamePay 项目的所有通用文件,现在只有最小的类需要具有不同的主包名称,因此 Google Play 知道它们是不同的应用程序,加上根据 Google Docs 无法将原始资产文件夹移动到库中。无论如何,这些都是二进制文件,当它们被更改时,我只是将它们从一个版本复制到另一个版本,这种情况并不常见。

所以从现在开始,大部分时间我只需要在 MyGameCore 项目上工作,所做的更改对 MyGameFree 和 MyGamePay 项目都有直接影响,而无需合并分支。

这将为我节省大量时间,并且我将从第一个代码行开始在我的进一步项目中使用它。

于 2012-07-19T10:01:45.320 回答