如何指定R.java文件的包名与应用程序包名不同?

4
我们的应用在AndroidManifest.xml文件中声明了包名为com.foo.app。出于某些特殊原因,我们想故意指定生成的R.java的包名为com.bar.resource,而不改变应用程序包名(仍保持为com.foo.app)。
例如,我使用com.foo.app作为我的应用程序包名,我希望生成的R.java的包名为com.bar.resource。在我的应用程序源代码中,我将使用类似com.bar.resource.id.btn_ok的引用。
我们知道不应该触碰R.java的内容。当然,我们可以手动更改它并构建最终应用程序,因为它只是一个具有常量的静态类。
但是,是否有ADT/Eclipse中的可配置选项来执行此操作的Android项目?
请停止告诉我如何通过Eclipse重构方法更改包名。请正确理解我的问题。 我正在询问如何指定自动生成的R.java的包名。 我希望它与AndroidManifest.xml中指定的应用程序包名不同

请查看以下内容:在Eclipse Android 项目中重命名包 - Paresh Mayani
谢谢您的信息,但我想要一个不同的包名用于R.java。 - Robin
R.java文件的不同包名是什么意思? - Paresh Mayani
例如,我有一个使用com.foo.app的应用程序,我希望生成的R.java包名称为com.bar.resource。在我的应用程序源代码中,我将使用类似com.bar.resource.id.btn_ok的引用。 - Robin
据我所知,您无法重命名或更改R.java及其内容。(如果尝试更改内容,它会发出警告并且不建议这样做) - Paresh Mayani
是的,我知道,这就是我来的原因。 - Robin
4个回答

2
我最近遇到了完全相同的问题,并找到了最佳解决方案,即创建一个较小的子项目,使用我想要的包名称进行引用。
我使用ADT,所以我有: |父项目|
-> |子项目|
我使用ADT,将子项目标记为库项目,并在Android、Java Build Path和Project Dependencies中引用它,然后父项目就可以引用其中所有资源,因此我可以给它任何包名称。
我在https://github.com/SixMinute/AndroidSeparatePackageResources上提供了一个简单粗暴的示例。
这不是绝对完美的设置,但肯定是我们最好、最容易的解决方案,希望能帮到你。

1

R.java包名取决于您在清单文件中定义的包名。


0

在包资源管理器中打开src文件夹,然后右键单击com.foo.resource,再点击重构,然后重新命名包名称,所有相关条目也将被重命名。


你误解了我的问题。我是在问如何更改自动生成的R.java源代码,而不是手动创建的资源包。 - Robin
尝试将gen文件夹重命名并删除先前的文件夹。 - ARK
谢谢,但这太琐碎了,因为每次Eclipse都会生成一个新的。而且我不想修改R.java代码,只想更改它的包名。 - Robin
您可以在项目菜单中取消勾选“自动构建”选项,以停止自动生成新的R文件。 - ARK

0

如果您正在使用Eclipse,请按照以下步骤更改包名:

  1. 右键单击包名。
  2. 选择“重构”>“重命名”
  3. 打开清单文件。在<manifest>标签中,更改包名称。
  4. 在相关类中导入已更改的包。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接