重命名生成R.java的包

时间:2011-03-30 14:28:24

标签: java android eclipse r.java-file

我正在使用eclipse并且我创建了一个测试android项目,包含R.java的“gen”文件夹中的包当前被称为com.something.test(我以为我只是测试但是构建我的整个应用程序在它!)

加载应用时会引用此选项,手机有时会显示它,因此我需要重命名它。我通过点击重构尝试了这个,但它用旧名称再次重新生成它!

我可以重命名吗?

7 个答案:

答案 0 :(得分:85)

右键单击您的项目,然后右键单击Android工具 - >重命名应用程序名称:

enter image description here

或者,如果您想手动执行此操作,请转到清单文件,更改程序包名称,然后进行项目清理。

答案 1 :(得分:20)

检查AndroidManifest.xmlpackage顶级元素上有<manifest>个属性。这就是生成R.java的地方,你应该小心地重命名它。

答案 2 :(得分:3)

对于那些尝试手动更改它的人来说,R.java文件链接的语句是正确的。如果您只是在清单中更改它,您将在引用资源的整个java文件中得到一长串“R无法解析”错误。要纠正这一点,您需要在每个文件中为R类添加导入。

因此,如果您的软件包最初为:“com.mycomp.myapp.android”并将其更改为“com.mynewcomp.myapp.android”,则需要进入每个java类文件并添加:

import com.mynewcomp.myapp.android.R;

如果您在项目上运行最初建议的重命名命令,则会自动为您完成。

答案 3 :(得分:2)

它被命名为您应用的根包。如果您将应用程序的root包更改为其他内容,则R.java现在将存在于该包中。

答案 4 :(得分:2)

要检查的另一件事是,您是否拥有包含xml命名空间的自定义视图。我花了一分钟才意识到我必须更改xmlns属性。

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:myxmlnamespace="http://schemas.android.com/apk/res/com.mynew.packagename"
    ...

答案 5 :(得分:2)

我知道这是一个老问题,但我现在需要它,也许其他人也需要它。 我使用的是Android Studio 2.1.1

为了让它发挥作用,我不得不改变:

  • package - 在AndroidManifest.xml上
  • applicationId - 在app文件夹的build.gradle上

这样就不需要在每个java类上导入 R

重要的是要记住,这不是通常的改变,不应该每次都这样做。

链接applicationId vs. package name解释了它们之间的区别以及不应更改它们的原因。

答案 6 :(得分:0)

我使用Right Click-&gt; Refactor和Android Manifest.XML逐个重构我的包。我的R文件仍然是基于旧的包名。

关闭并打开项目解决了这个问题,但我需要对我的所有java文件进行手动更改。