android - 管理 Android 应用商店(谷歌/亚马逊/等)的代码/构建?

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

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

诚然,我不是 Eclipse/Java 专家,所以请随意指导我。

我在解决方案中寻找什么:

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

这是您专门针对 Android 应用程序或其他基于 Java/Eclipse 的项目解决的问题吗?建议从哪里开始?

最佳答案

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

  1. 创建一个新的 Android 项目 (proj-A)
  2. 进入Project->Properties,选择Android,勾选“Is Library”
  3. 将所有常用代码移至proj-A,导入所有必要的库
  4. 为 Google Play 创建一个新的 Android 项目 (proj-B)
  5. 进入 Project->Properties,选择 Android,然后将 Proj-A 添加到库中
  6. 亚马逊版本重复 #4&5

如果您有一些变量应该为每个子项目设置不同(即 bool 型 GOOGLE_PLAY_VERSION 以启用 Google Play 特定功能),您必须创建另一个项目来包含这些值,因为您不能拥有引用一个的项目-另一个以循环方式。您可以通过添加以下步骤来解决此问题:

  1. 将所有子项目特定变量放入一个或多个类中,这些类仅用作这些变量的容器
  2. 创建一个“虚拟”Java 项目(dummy)
  3. 配置proj-Adummy
  4. 的bin目录添加一个新的Source链接
  5. 在每个子项目中添加配置类,并针对项目进行更改
  6. 利润!

注意dummy中的变量不能设置为final,否则会覆盖子项目的设置。

这似乎是一项相当多的前期工作,但就版本控制而言,这对我来说效果很好。

编辑: 现在随着 Google 迁移到 Android Studio 和 Gradle,如果您要开始一个新项目,如果您想支持多个 APK,那么迁移到它可能会更好,请参阅 Android 开发网站的 Building Your Project with Gradle#Work with build variants。 .在决定之前评估该选项绝对没有什么坏处。

https://stackoverflow.com/questions/9815038/

相关文章:

java - 在应用程序中显示构建时间戳

c# - WPF 应用程序中的间歇性构建问题

maven - 在 Android Studio 中优化构建时间

qt - qmake 和 QT_INSTALL_PREFIX。如何为 Qt 库选择新位置?

c - 在配置脚本中处理 CFLAGS 的最佳实践?

delphi - 在 Delphi 中编译和构建有什么区别?

.net - 内容文件更改后 Visual Studio 未重建

qt - 如何在 Qt 子目录项目中设置构建顺序

android - 通过 TeamCity 为 Android 持续集成。首选工具?

java - 如何让 Maven 自动重试(从失败的模块恢复)?