java - 动态(编译时生成)Java 包名称

标签 java android build-process

我正在开发一个通用的 Android 游戏引擎,它将在我的许多 Android 应用程序中用作基本系统。问题是,在我所有的 Java 文件中,我目前必须像这样硬编码包名称:

package com.example.mygameengine;

但是因为我想在许多不同的应用程序中使用我的通用游戏引擎的代码,我需要找到一种方法在编译时为 Java 文件指定包名,因为我不想保留我的多个副本Java源代码只是因为包名的不同。我想要一个中央源代码树,并且包名称应该可以动态更改,具体取决于我将要编译的应用程序。

那么有没有办法做这样的事情:

package $(PACKAGE_NAME)

在 Java 源代码中,$(PACKAGE_NAME) 在编译时将被替换为真实的包名称?也许 javac 有一个选项允许我为它传递的文件指定一个包名而不是从文件本身获取它?请注意,我使用的不是 Eclipse,而是准系统命令行工具,例如 ant 和 make。

编辑:我不明白为什么这被标记为重复。我问了一个基本问题,关于 Java 语言中的“package”指令是否需要一个硬编码的字符串参数在源代码中,或者是否也可以在编译时设置这个包名称使用编译器指令。这是一个完全与此处链接的问题不同的问题,该问题被认为是“原始”问题,后者与 Android 构建系统的联系更为紧密。我的问题是关于 Java 语言的基础知识,而不是关于 Android 构建系统。

最佳答案

您能否将您的通用游戏引擎代码构建到一个独立的 JAR 中。

然后您可以将它作为依赖项包含到每个使用它的 Android 应用程序中。

通过适当的版本控制,您将只有一个存储此代码的中心位置。

关于java - 动态(编译时生成)Java 包名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14628458/

相关文章:

Java如何将字符串转换为整数名称

android - 如何创建 Android 系统级服务

javascript - 如何处理开源 GitHub 存储库中的构建任务?

java - 无法使用 "Install New Software"在使用 ubuntu 14.04 的 eclipse 上添加 cdt

java - 使用接口(interface)声明时,子类中新添加的方法无法被调用

java - JSON 响应包含表示为小数的字符

java - 通过 JENKINS 进行构建时出现错误 "com.ibm.etools.ejbdeploy.batch_extension"无法在注册表中找到

从不同的驱动器号运行时 C++ DLL 失败

java - 如何在 Eclipse Mars 中构建和运行 BIRT 源代码

java - 获取 DefaultListModel 以使用 LinkedList