我正在开发一个通用的 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/