如何在基于IntelliJ IDEA的新IDE Android Studio中重命名软件包?

是否包含自动重构?

我想进行大规模重构,但我不知道怎么做。我在Eclipse工作了两年,在Eclipse中它是一个一键操作。


当前回答

更改应用程序ID(现在独立于包名)可以在一个步骤中轻松完成。你不必接触AndroidManifest。相反,请执行以下操作:

右键单击项目的根文件夹。单击“打开模块设置”。转到“口味”选项卡。将applicationID更改为所需的任何包名称。按OK(确定)。

注意,这不会更改包名称。包名称和应用程序ID的解耦在这里解释:http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename

其他回答

对我来说,我只是更改了库模块的目录名而不是包名,并单击了底部的Do refactor(示例:从com.reg.register->com.reg1.register)。

之后,确保更新了buildgradle文件和manifest文件中的新目录名。

重建项目。

在使用这些技术之一重命名包之后,可能会开始看到错误。

如果/当你的R.java没有正确生成时,你会在项目中收到很多错误,比如错误:找不到符号类R,以及错误:包R不存在。

记住检查应用程序清单xml。清单包名称必须与实际包名称匹配。R.java似乎是从应用程序清单生成的,如果不匹配,可能会导致这些错误。

记住检查<manifestpackage=“com.yourcompany.coolapp”>中的package属性匹配

最好的方法是编写新的包名,然后从旧的包名中拖动。

第二种方法是,如果单击Refactor then move选项,然后重命名包名,它将重命名包名并重新生成。

在Build.gradle中,您必须手动执行,如果重构,则不会在Build.ggradle中重命名。

如果您的包名超过两个点分隔,请说com.hello.world,而且您没有在com/和com/hello/中输入任何内容。您的所有类都放入了com/hello/world/中,您可以在Android Studio或IntelliJ中执行以下步骤来重构包名:

[FIRST]在目录(com/,com/hello/)下添加一些内容。你可以通过首先向com.hello.world包中添加两个文件来实现这一点

com.hello.world.PackageInfo1.javacom.hello.world.PackageInfo2.java

然后通过将它们分别移动到com和com.hello来重构它们。你会看到com和com.hello坐在项目中(Alt+1或命令+1表示快捷方式),重命名目录重构是正如你所期望的那样在那里等待。

重构以重命名一个或多个目录以达到您的目标。在这里您唯一应该注意的是,当对话框询问您时,您必须选择目录而不是包。如果你的项目中有很多类,那么你需要一段时间来等待它的自动扫描和重命名。此外,我想,您需要手动重命名AndroidManifest.xml中的包名,以便该文件中的其他名称可以使用前缀。[同时],它可能需要您将所有com.hello.world.R替换为新的XXX.XXX.XXX.R(简称Command+Shift+R)重新生成并运行项目以查看其是否有效。然后使用“在路径中查找”来查找您要重命名的其他非接触名称。享受它。

我建议使用Sublime Text(或Notepad++)。替换com.one.lastname->com.two.newname和com/one/lastname->com/two/newname。。。\项目[MyProject]。别忘了重命名。。。\项目\MyProject\app\src\main\java\com\one\lastname。。。\Projects\MyProject\app\src\test\java\com\one\lastname和。。。\项目\MyProject\app\src\androidTest\java.com\one\lastname!

仅此而已:)