【问题标题】:Minor changes in code or preprocess in Java for different builds?Java 中针对不同构建的代码或预处理的微小变化?
【发布时间】:2015-12-19 02:08:36
【问题描述】:

我正在开发名为 Flat Out Hockey 的 Android 游戏,使用 Eclipse 作为 IDE、Java 和本机 C++。 我的问题是代码的 Java 部分。 因为我需要为 FireTV、Google Play 和 OUYA 构建我的游戏,所以我有不同的方法来处理每个平台上的游戏手柄输入。 一个问题是,FireTV 使用的“项目构建目标”与 Google Play 和 OUYA 不同,后者是亚马逊专门为 FireTV 制作的。

这意味着我需要使用在一个构建目标下可用但在另一个构建目标下不可用的导入和类,并在为每个平台构建时不断在它们之间切换。

问题是,据我所知,Java 中没有预处理器? 所以我不能像在 C++ 中那样做#ifdef。 这使得我需要注释/取消注释或更改值的代码量超出了应有的水平。

我所做的一个“技巧”是为 Amazon 游戏手柄类创建一种模拟类,因此我只需更改导入并创建一个名称相同但功能不同的类。

但还有其他问题,例如仅在 Android OS 5 上可用的 Immersive 属性。 和其他东西。

所以也许我错过了 Java 中的一些功能,但我真的很想只需要在一个地方设置一个值来在不同的构建之间切换。

在 Java/eclipse 中有类似的东西吗?

【问题讨论】:

  • 在 Android Studio 中,您可以为构建定义风格,您可以在其中放置特定代码。通常这用于开发/发布版本,但它可以用于各种事情,包括那个。

标签: java android eclipse preprocessor


【解决方案1】:

一种方法是将您的项目拆分为几个组件:一个“核心”模块,它根据公共接口(它定义)定义主要实现,然后每个目标的一个模块声明这些接口的实现。

例如,您的核心模块可能会定义一个 GamePad 接口,然后您的 FireAdapter 模块将依赖核心和 Fire 的 API 来创建一个 FireGamePad(它实现了 GamePad)。

然后每个模块都成为它自己的构建,具有自己的交付物。

【讨论】:

  • 如何在 Eclipse 中为每个构建制作不同的 AndroidManifest?或者换句话说,我将如何在一个地方为所有 3 个版本更改版本和版本号?
  • 我对 AndroidManifest 或 Eclipse 不是很熟悉,抱歉。
【解决方案2】:

你可以尝试使用 java Comment Preprocessor https://github.com/raydac/java-comment-preprocessor ,我对 Android https://github.com/raydac/java-comment-preprocessor/wiki/AndroidGradlePreprocessing 的用法做了一些实验,但不是很深入,预处理器是在 2002 年专门针对 J2ME 项目中的小改动开发的,以避免大量的具有相同功能的类,但供应商特定部分的差异很小

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-08
    • 1970-01-01
    • 2012-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-21
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多