我正在开发一个通用的Android游戏引擎,将在我的许多Android应用程序中用作基本系统。问题是,在我所有的Java文件目前,我有硬编码这样的包名:动态(编译时生成的)Java程序包名称
package com.example.mygameengine;
但因为我想用我的通用游戏引擎的代码在许多不同的应用程序,我需要找到一种在编译时指定Java文件的包名的方法,因为我不想仅仅因为包名称的不同而保留我的Java源的多个副本。我想要一个中央源代码树,根据我即将编译的应用程序,包名应该可以动态更改。
那么,有没有办法做这样的事情:
package $(PACKAGE_NAME)
在Java源代码其中$(PACKAGE_NAME)是在编译时与真正的包名被取代?也许javac有一个选项,允许我为它传递的文件指定一个包名称,而不是从文件本身获取它?请注意,我没有使用Eclipse,而是准备了像ant和make这样的命令行工具。
编辑:我不明白为什么这被标记为重复。我问了一个关于Java语言中的“包”指令是否需要源代码中的硬编码字符串参数或者是否可以在编译时使用编译器指令来设置此包名的基本问题。这是相当于这个问题与此处链接的问题不同,它与Android构建系统密切相关的推测性“原始”问题。我的问题是关于Java语言的基础知识,而不是关于Android构建系统。
这是一个非常糟糕的主意。只要在任何地方使用相同的软件包名称,并将相同的类捆绑到不同的应用程序中。这不像你将在每个应用程序中为'java.util'使用不同的包名,是吗? –
我希望你实际上没有使用'com.example'作为你的包前缀。 –