管理Android应用商店(Google/Amazon/etc)的代码/构建?

psy*_*tik 18 ant android build amazon-appstore

我有一个主要从Android Market(现在是Google Play)下载的Android应用.我们对源进行了一些调整,并提交给亚马逊应用商店,以了解它获得了什么样的牵引力.我现在正在寻找一种可持续发展方式,从一个通用的代码库开发,然后构建,以便我可以提交给两个/两个.

亚马逊的商店对可用的API有一些限制,因此我想有条件地删除/修改该版本的功能.由于Java不支持传统的条件编译,并且在Eclipse中有条件地包含文件似乎并不简单(甚至可能吗?),我想问其他人正在做些什么来解决这个问题.

不可否认,我不是Eclipse/Java专家,所以请随意上学.

我正在寻找解决方案:

  • 使用Eclipse构建/调试.
  • 静态代码文件,环境/设置切换以控制要构建的内容.
  • 代码中没有重复的代码或条件逻辑来在运行时选择代码流

这是您为Android应用专门解决的问题,还是其他基于Java/Eclipse的项目?建议从哪里开始?

Kai*_*Kai 10

在最新版本的ADT(版本17)中很容易做到,尽管我发现它使编译时间更长:

  1. 创建一个新的Android项目(proj-A)
  2. 转到Project-> Properties,选择Android,然后选中"Is Library"
  3. 将所有常用代码移动到proj-A,导入所有必需的库
  4. 为Google Play创建一个新的Android项目(proj-B)
  5. 转到项目 - >属性,选择Android,然后将Proj-A添加到库中
  6. 对Amazon版本重复#4和5

如果你有一些变量应该为每个子项目设置不同(即boolean GOOGLE_PLAY_VERSION以启用Google Play特定功能),你必须创建另一个项目来包含这些值,因为你不能有一个项目在一个项目中相互引用循环时尚.您可以通过添加以下步骤来解决此问题:

  1. 将所有子项目特定变量拉入一个或多个类,这些类仅用作这些变量的容器
  2. 创建一个"虚拟"Java项目(虚拟)
  3. 配置proj-A以将新的Source链接添加到dummy的bin目录
  4. 使用特定于项目的更改在每个子项目中添加config Classes
  5. 利润!

请注意,在变量假人应该被设置为最后的,否则它将覆盖子项目的设置.

这可能看起来像是一些前期工作,但就版本控制而言,对我来说效果很好.

编辑: 现在谷歌转向Android Studio和Gradle,如果你想支持多个APK,如果你要开始一个新项目,可能会更好,请参阅Android开发网站使用Gradle构建项目#使用构建变体.在决定之前评估该选项肯定没有坏处.


Spa*_*rky 0

我还没有真正尝试过,但这是我考虑过的事情。

如何使用 Eclipse 链接到工作区之外的目录中的文件的功能?

从一个 Eclipse 项目开始:为了便于讨论,假设它是 Google Play 版本。

现在构建第二个项目,首先要求 Eclipse 链接(而不是复制)第一个项目中的源文件。

要开发第二个项目,请添加原始项目的子类类以实现您的修改。对于资源,您可以使用包含、属性覆盖和选择器的某种组合。

如果无法子类化或扩展,那么显然您必须复制原始源文件并对其进行破解。如果您确实对此有强迫症,您可能只需维护一个补丁集而不是整个冗余文件集。

你觉得怎么样,会起作用吗?