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

是否包含自动重构?

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


当前回答

对我来说会很好的

Change Following.

步骤1:确保ApplicationId和PackageName相同。例子:

  android {
  defaultConfig {
                     applicationId "com.example.myapplication"
                 }
       }
 and package name the same. package="com.example.myapplication"

步骤2在我的案例中删除iml文件:

  Go To Project> >C:\Users\ashif\Documents\MyApplication  .iml file // delete 
if you forget Project Path Then Go To android Studio Right Click on app and go to  Show in Explorer you get your Project and remove .iml file

步骤3关闭项目

步骤4现在复制您的旧项目并粘贴任何其他根或复制项目文件夹并粘贴任何其他董事。

 Example C:\Users\ashif\Documents/MyApplication 

步骤5

Now open Android Studio and open Existing Project 
C:\Users\ashif\Documents/MyApplication 

试试看会奏效的

其他回答

在java目录中创建一个新的包,并将项目移动到该包中。就像您当前的项目id是com.testapp.user,您希望将其更改为xyz.testpp.user。然后在src/java目录中创建一个名为xyz的包,并将您的子包testapp.use移动到xyz中。最后,更新build.gradle和manifest项目id。

如果您的包名超过两个点分隔,请说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)重新生成并运行项目以查看其是否有效。然后使用“在路径中查找”来查找您要重命名的其他非接触名称。享受它。

我尝试了两个最热门的解决方案,但发现了一些问题,尽管这两个方案在某种程度上都有效。

列表项:新的包拖放方法保持一些不变,并产生一些不希望的效果列表项:重命名包仅更改包名称的最后一部分

经过一些实验,我发现下面的方法对我很有效。

如果您只需要更改包名的最后一部分,请使用GreyBeardedGeek概述的方法,即

右键单击“项目”窗格中的包。从上下文菜单中选择Refactor->Rename

如果需要更改整个包名,请执行以下操作。

右键单击“项目”窗格中的包。从上下文菜单中选择Refactor->Move

这将创建一个新的包文件夹(必要时),但将保留包名称的最后一部分。如果需要更改最后一个零件,请相应地进行重命名。

还请注意,您可能需要修改例如build.gradle、manifest和/或任何xml资源文件中的包名,甚至需要修改硬编码的代码中的包名称。之后,根据需要执行同步/清理/重建项目。

如果重命名的唯一原因是避免与具有相同包名的另一个构建(或系统应用程序)发生冲突,那么您可以改为仅重命名应用程序build.gradle文件中的applicationId。

示例:假设您已经安装了一个id为com.android.phone的应用程序(您希望保留它),请将app/build.gradle更改为:

android {
    defaultConfig {
        applicationId "com.android.phone.mymod"

}

也就是说,如果你已经有一个软件包名为com.android.phone的应用程序,并且不想/无法卸载它(例如,因为它是一个系统应用程序,设备没有根目录),那么上面的更改就是所有需要的,以便将你的应用程序与原始应用程序并排安装。在设备上,applicationId将被使用,而不是实际的包名。此外,您的应用程序数据将存储在/data/data/com.android.phone.mymod下,而不是/data/ddata/com.andrid.phone下。

没有。在某些情况下,您可能还需要重命名AndroidManifest.xml文件中的提供者和权限的名称。

参考:

https://developer.android.com/studio/build/application-id

在AndroidStudio中创建新项目时,applicationId与安装过程中选择的Java风格包名称完全匹配。但是,应用程序ID和包名称在此之外彼此独立。您可以更改代码的包名称(代码名称空间),这不会影响应用程序ID,反之亦然(不过,再次声明,发布应用程序后,您不应更改应用程序ID)。但是,更改包名还有其他后果,您应该注意,因此请参阅有关如何更改包名的部分。

我建议使用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!

仅此而已:)