这个问题可能是主观的,但我认为 Stackoverflow 仍然是最好的提问场所:
问题域是“高级 Android 编程”。我不需要有关如何设置单个 Android 项目、如何使用库项目或如何使用 ANT 构建普通项目的信息。
假设你有一个正在运行的应用程序,一个由 Jenkins / Ant / Proguard 构建的普通 Android 项目(选择的 IDE 是 IntelliJ,但这并不重要)。此构建的结果是您将放入 Play 商店的最终 APK。
现在想象一下,您需要这个应用程序作为免费和付费版本。到目前为止没问题,只需将所有共享代码放入一个库项目中,并创建两个子项目,一个带有 App.java 启用许可证检查,另一个例如限制使用。
现在想象一下,你也想瞄准亚马逊,也许有一个新闻稿版本,等等。所以你的代码开始出现分歧,仍然有很多东西共享,但某些部分是特定于你的目标市场的。
在 C# 中有“条件编译语句”,例如“IF PLAY_STORE ...”。Java / Android有类似的东西吗?此外,它们是否与 ANT 和构建过程配合得很好。
但我不限于条件编译。“每个市场一个项目”的方法是不同的。我只是想了解您如何以可持续的方式管理这些不同的“构建配置”。这意味着它适用于 15 个项目,针对 2 种口味(免费和付费)的 3 个市场。我希望你明白我在暗示什么。所有应用程序的代码都非常相似,但是在上面的示例中,我将拥有 90 个不同的 APK - 有了这些数字,“在源代码中手动注释仅在此构建中需要等”就不再适用了。
因此,任何提示、工具、搜索词、这些问题域的经验(例如,MAVEN,它会帮助我解决任何问题,还是生成 build.xml 的 ANT + 脚本会更好)。另一个例子,如果我有一个适用于所有目标市场的“真正的”Android 项目,那么我几乎可以做任何事情。但当然,不利的一面是,如果我在最低级别添加一个新页面(例如印记页面),我需要进入 90 Manifest.xml 来添加页面......
感谢您对此的任何帮助,克里斯
PS:我会在底部添加一些我找到的关于这个主题的链接,如果有人在没有答案的情况下遇到这个问题,这可能是“第一次阅读这个”部分
http://www.asyncdev.net/2011/02/android-dev-prod-builds/
http://www.slf4j.org/ (在“将JAR放入提供IMPL”方式中相关)
(SLF4J 只是一种减少依赖关系并在部署期间提供配置的好方法 - 通过简单地添加不同的 JAR。使用这样的东西对于您自己的项目可能是矫枉过正,但这是一种方式。例如,用于许可证写入接口和一些类似 SLF4J 的代码,然后在构建期间在 Lib 文件夹中提供 PressRelease.jar 或 Productive.jar,从而更改应用程序的行为方式......)