Android Studio重命名包

ramzixp 08/20/2017. 30 answers, 386.315 views
android android android-studio android-studio

如何在基于intelijj的新IDE Android Studio中重命名包?

是否包含自动重构?

我想进行批量重构,但我不知道如何。 我在eclipse和eclipse上工作了2年,这是一次单击操作。

2 Comments
Leigh 12/01/2014
在这里看到我的答案。 我已经成功设法使用我描述的步骤重命名我的项目。

30 Answers


Sheharyar 05/21/2017.

在Android Studio中,您可以这样做:

例如,如果您想将com.example.app更改为my.awesome.game ,那么:

  1. 在您的Project pane ,点击小齿轮图标( 齿轮图标

  2. 取消选中/取消选择Compact Empty Middle Packages选项

紧凑的空中间包

  1. 您的软件包目录现在将在各个目录中分解

  2. 单独选择要重命名的每个目录,并且:

    • 用鼠标右键单击它
    • 选择Refactor
    • 点击Rename
    • 在弹出对话框中,单击Rename Package而不是重命名目录
    • 输入新名称并点击Refactor
    • 点击底部的Do Refactor
    • 稍等片刻让Android Studio更新所有更改
    • 注意:在Android Studio中重命名com时,可能会发出警告。 在这种情况下,请选择 Rename All

在这里输入图像描述

  1. 现在打开你的Gradle Build Filebuild.gradle - 通常是appmobile )。 将applicationId更新为新的Package Name和Sync Gradle,如果它尚未自动更新:

重构目录

  1. Done! 无论如何,Android Studio需要使这个过程更简单一些。
5 comments
16 stevebot 03/20/2015
谢谢! 如此愚蠢的是,他们将这套作为默认设置。 为什么折叠软件包,所以用户不友好,这让我不高兴。
11 Sheharyar 04/11/2015
清洁和重建。
6 ricky.tribbia 04/17/2015
警告:如果在重命名“com”时选择“全部重命名”,则不仅会将所选模块中的内容重命名为所有模块,还会将其重命名为此项目
10 Richard 07/28/2015
@Antonio将com.example.test的文件拖动到com.example ,然后删除com.example.test
19 nevzo 07/31/2015
这个程序为我工作。 我还必须更改AndroidManifest.xml以反映新名称。 例如 - > package =“my.awesome.game”>

user10F64D4 01/18/2016.

另一个好方法是:首先通过右键单击java文件夹 - >新建 - >包创建一个具有所需名称的新包。

然后,选择并拖动所有类到新包。 AndroidStudio将在任何地方重构软件包名称。

最后,删除旧的包。

完成。

One more thing very important

如果您使用此方法,则必须手动将Android Manifest和gradle文件更改为新包。

5 comments
61 Richard 04/04/2014
如果使用此方法,您可能需要更新Android Manifest文件以引用新包。 非常简单的一步,但很好的解决方案
10 Christoph 04/17/2014
您可能必须重新启动Android Studio才能更新.idea / workspace.xml
21 Samik Bandyopadhyay 08/02/2014
您也可能需要更改您的build.gradle以反映新的软件包
30 baboo 09/11/2014
好的方法,但必须做2件事(除了更新清单文件),使其完全工作,首先必须在整个项目中更改/重命名R文件导入,其次appdebug使用旧包名(在工作室的运行窗口中可见) )在app build.gradle defaultconfig中添加了applicationId“com.packagename”。
5 CCJ 11/12/2014
这与'好'解决方案完全相反......

hwat 12/22/2015.

一步就可以轻松完成。 您不必触摸AndroidManifest。 而是执行以下操作:

  1. 右键单击项目的根文件夹。
  2. 点击“打开模块设置”。
  3. 转到Flavors选项卡。
  4. 将applicationID更改为所需的任何软件包名称。 按OK。

Package Name和Application ID的解耦在这里解释: http : //tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename

5 comments
3 Jacob R 03/23/2015
这只会改变gradle中的名称,而不会改变其他地方的名称。
3 sud007 06/09/2015
这是一个圣杯答案! 很聪明!
3 Sa Qada 06/29/2015
这需要被选作一个正确的答案,因为它是非常简单和快速的方式。
5 RunLoop 07/10/2015
这对我不起作用
3 Inder Kumar Rathore 10/25/2015
这需要被接受,其他答案是漫长的,你不能改变com.example.sample com.example使用其他答案

GreyBeardedGeek 10/03/2015.

右键单击Project Panel的包。

从上下文菜单中选择重构 - >重命名。

5 comments
1 physphil 04/05/2014
这对我很好,也不得不更新AndroidManifest文件。
104 GilliMonsta 05/16/2014
重构>重命名只允许我重命名包的最后部分,例如com.example.mypackage.app中的应用程序
1 Dharmik 11/12/2014
我这样做,但现在它说班级在发布时不存在。 你是如何改名的?
Erwinus 04/25/2015
我使用了“重构”主菜单并点击“重命名”。
Taranmeet 11/24/2015
@GilliMonsta你可以在右侧面板中选择你的应用程序文件夹点击设置,并取消选中压缩空中间包

Prince Jayakumar 01/28/2016.
  1. 转到您的AndroidManifest.xml。
  2. 将光标放在包名称中,如下所示,不要选择只放置它。

在这里输入图像描述

  1. 然后按shift+F6您将看到一个弹出窗口,如下所示选择Rename package

在这里输入图像描述

  1. 输入您的新名称并选择Refactor 。 (请注意,因为我的光标在“某事”上,所以只有某些东西被重命名。)

就这样完成了。

3 comments
1 Shan Xeeshi 03/07/2016
感谢Android Studio 1.5.1的工作它自动更改包无需创建新包和拖放文件并删除旧包Blah Blah Blah
Prabs 12/28/2016
@Jayakumar王子,你的'don't select it just place it'声明是混乱。 只需放置鼠标光标,shft + f6将不起作用。 如果光标位于文件的其他位置,则必须单击包名称,然后shft + f6才能起作用
Mark A. 05/31/2017
谢谢。 为我工作。

alhamdi 07/23/2015.

(1)

打开文件:

app >>清单>> AndroidManifest.xml

在这里输入图像描述

突出显示要修改的软件包名称中的每个部分(不要突出显示整个软件包名称),然后:

  • 鼠标右键单击>>重构>>重命名>>重命名包
  • 键入新名称并按(重构)

在包名的每个部分执行这些步骤

在这里输入图像描述

(2)

打开(Gradle脚本)>>(build.gradle(Modul:app))

并将applicationId更新为您的软件包名称

在这里输入图像描述

(3)

打开菜单(构建)并选择(重建项目)

5 comments
Rob Rose 07/24/2015
我试图这样做,我碰到了一个障碍。 我试图将com.example.android.package更改为我自己的域(以.net结尾)。 我可以改变'example'和'package',但我不能改变'com'。 它也不会重命名任何目录。 有小费吗?
The Original Android 08/14/2015
@RobertRose,我有你的问题的解决方案。 你还在努力吗?
Rob Rose 08/15/2015
我把它放在一边,然后就离开了。 这不是生产。 为了将来的参考,你提出了什么?
Jemshit Iskenderov 08/22/2015
如果我有“xxx.mydomain.com”类包装,则第一个不起作用)
AlleyOOP 12/26/2015
美丽。 第二步是必不可少的,并且通常在大多数答案中查看。

Mehroz Munir 06/21/2017.

我用来重命名包名的方法很简单,如下所示: -

Step 1 :从Android Studio的左侧菜单中选择项目选项

在这里输入图像描述

Step 2 :右键单击Java并添加一个新包并设置所需的包名

在这里输入图像描述

Step 3 :输入新的软件包名称

在这里输入图像描述

Step 4 :复制旧包中的所有文件并粘贴到新包中

在这里输入图像描述

Step 5 :重命名清单文件中的软件包名称

在这里输入图像描述

Step 6 :在build.gradle文件中重命名包名

在这里输入图像描述

Step 7 :然后右键单击旧包并将其全部数据删除,并删除该目录

在这里输入图像描述

Step 8 :然后重建您的项目

在这里输入图像描述

Step 9 :然后在项目中找到旧导入包名的一些错误在任何文件中选择旧包名并按下 CTRL + Shift + R ,然后在替换框中输入新包名,然后按查找

在这里输入图像描述

Step 10 :然后弹出如下,并从中选择所有文件选项

在这里输入图像描述

Step 11 :重新构建你的项目,宾果你的项目包名已被更改:)

5 comments
Osama Ibrahim 06/01/2017
Thanxxx男人这是最适合我的实践
ralphspoon 06/21/2017
替换路径不再可用在Android studio 2.3.3 tru Shift + R,突出显示旧路径,转到编辑 - >查找 - >替换路径。 另外请确保更新您的Gradle文件。 干杯
Jevgenij Kononov 08/09/2017
谢谢..良好的解决方案
user3760100 08/15/2017
旧包名没有出现任何错误。 所以,在第9步之后不必做任何事情。谢谢!
Mehroz Munir 08/17/2017
如果你没有得到任何错误,那么不要去执行第9步

Matus F. 05/23/2017.

Intelli J有一个名为“Compact Empty Middle Packages”的选项。 选择项目选项卡的选项 - 图标并取消/激活。

请参阅: 我如何更改IntelliJ中的顶级包名称

4 comments
1 Chris Nevill 08/12/2014
这很有用。 在'取消激活'这个功能之后,事情变得更加清晰了,我可以删除空的软件包
beretis 02/11/2015
@ChrisNevill,你是如何删除这些空包的?
Chris Nevill 02/11/2015
我想我只是选择他们,并按下删除。 目前我无法重现此问题,因此无法准确记住它。
iaindownie 12/17/2015
我同意,这是非常有用的。 应该包含在我见过的关于这个主题的所有次标准答案中。

hoot 10/06/2014.

选择包将被重构,重构 - >移动 - >“将xxx移动到新包”

2 comments
droid kid 02/03/2015
这是一个简单的方法
3 Jose Manuel Abarca Rodríguez 06/23/2015
不起作用,将我的包从“com.company.oldname”更改为“com.company.newname.oldname”。 看到? 此方法不允许更改名称的最后一个组件(并且我尝试了几次)。

dongxu 06/07/2013.

如果您的软件包名称是两个以上的点分隔的,请说com.hello.world ,而且,您没有将任何内容放在com/com/hello/ 。 所有的类都放到com/hello/world/ ,你可以按照以下步骤在Android Studio或IntelliJ中重构你的包名:

  • [FIRST]在你的目录下添加一些东西( com/com/hello/ )。 你可以通过首先添加两个文件来包装com.hello.world来实现这一点,比如说
com.hello.world.PackageInfo1.java
   com.hello.world.PackageInfo2.java 

然后通过将它们分别移动到com和com.hello来重构它们。 您将在项目中看到com和com.hello( Alt+1或快捷键Command+1 ),并重命名目录重构正在等待您的预期。

  • 重构重命名一个或多个这些目录以达到您的目标。 你应该注意到的唯一的事情就是当对话问你时,你必须选择目录而不是包。

  • 如果您的项目中有很多类,则需要等待自动扫描和重命名。

  • 此外,您需要手动重命名AndroidManifest.xml中的包名称,我猜,这样文件中的其他名称可以使前缀受益。

  • [ALSO] ,它可能需要您将所有com.hello.world.R替换为新的XXX.XXX.XXX.RCommand+Shift+R

  • 重建并运行你的项目,看它是否工作。 然后使用“在路径中查找”来查找您想要重命名的其他非触摸名称。

  • 好好享受。

Jorgesys 09/15/2016.

我已经看到了最高票数的答案,但我发现有点不同,我尝试做最完整的教程。

从Android Studio中点击齿轮图标( 齿轮图标 ),然后选择"Compact Empty Middle Packages"选项,查看以树状视图分隔的文件夹。

介绍如何描述图片

现在选择文件夹,单击右键打开上下文菜单,选择Refactor ,然后Rename

介绍如何描述图片

你会被建议重构包装:

介绍如何描述图片

然后一个窗口会显示该项目内的巧合,选择"Do Refactor"

介绍如何描述图片

我们不需要手动更改AndroidManifest.xml或build.gradle文件,重构包就能完成这项工作!


Sebastian Breit 05/15/2015.

Updated answer: May 2015

好的,我一直在Android Studio中克隆和重命名项目,但最终我实现了它。 以下是要遵循的步骤:

  1. 复制项目文件夹,重命名并使用Android Studio打开它
  2. 从资源管理器重命名模块目录
  3. 重命名projectName.iml和内容
  4. 重命名idea / .name内容
  5. 在你的项目窗格中,点击小齿轮图标 - >取消选中“Compact Empty Middle Package”
  6. 为新包名称重新命名src目录(重命名包,“不重命名目录”)
  7. 在build.gradle重命名应用程序ID
  8. settings.gradle重命名模块

而已...


我尝试了两个顶级投票解决方案,但发现一些问题,即使两者都在一定程度上起作用。

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

经过一些实验后,我发现以下方法适合我。

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

在“项目”窗格中右键单击包。 从上下文菜单中选择重构 - >重命名

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

在“项目”窗格中右键单击包。 从上下文菜单中选择重构 - >移动

这将创建一个新的包文件夹(必要时),但会像以前一样保留包名的最后一部分。 如果您需要更改最后一部分,请相应地重命名。

还要注意,你可能需要修改例如build.gradle,manifest和/或任何xml资源文件中的软件包名称,如果硬编码的话甚至可以在你的代码中修改软件包名称。 毕竟,根据需要进行同步/清理/重建项目。


Shivanand T 04/30/2015.

人们可能犯的常见错误是无法重命名包结构,即当com.name.android级别尝试修改com.name.android为com.Renamed.android时,无法将其更改为com.name.android。

为了有相同的期望的变化去一级,即com.name和这里当你重构改变它重命名。 这将始终工作


rajlaxmi_jagdale 05/11/2015.

右键单击包 - >重构并更改名称。 您也可以在清单中更改它。 有时如果你改变软件包名称,但创建apk之后,它会显示当时不同的软件包名称,请检查build.gradle文件中的“applicationId”。


irobotxxx 10/16/2015.

我发现了另一种方法,或者对这里的某些答案采取额外步骤,特别是如果您还想更改域名。 适用于Android Studio 1.4。 这就是我所做的:

  1. 打开Manifest.xml并将软件包名称更改为所需内容。
  2. 打开您的应用程序build.gradle文件,并将defaultConfig中的应用程序标识更改为与清单中相同的名称并重建该项目。
  3. 如果仍然存在问题,请打开包名称下的文件,进入包裹面包屑(即文件头部的包装声明),并将光标设置到您想要更改的域并点击“Shift + F6”,它会出来一个包含多个使用警告的对话框,点击“Rename packages”,然后点击“Do Refactor”,它应该重命名包括R.Java文件在内的所有内容。

例如,如果您想要将“com.example.app”重命名为“com.YourDomain.app”,请在程序包breadcrumbs中打开包名称下的文件,将光标设置为域的“示例”部分然后按Shift + F6并将程序包重命名为“YourDomain”。

希望这可以帮助 :)


user3295929 08/24/2014.

第一部分包括在“java”文件夹下创建一个新软件包,然后选择,然后将所有源文件从旧软件包拖到这个新软件包中。 之后,您需要将Android清单中的软件包名称保留为新软件包的名称。

在第2步中,您需要做些什么。您需要更改android studio中模块“build.gradle”下的“applicationId”中的旧软件包名称,以及更改清单中的软件包名称。 总之,点击“AndroidManifest.xml”下面的“build.gradle”,然后将“applicationId”的值修改为新的软件包名称。

然后,在最上面的“构建”下。 清理你的项目,然后重建。 从这里应该没问题。


zafirk 09/18/2014.

包有两个目的。 一种是在Google Play商店中唯一标识您的应用。 另一个是命名您生成项目时生成的R.java类的包。 您可以将第一个用途看作是外部软件包,将第二个用作内部软件包。 假设您想更改外部软件包,以便您可以在Play商店中识别,则可以使用这种方法。

在Android Studio中,选择“文件”>“项目结构”>“选择您的应用程序的模块”>单击“风味”选项卡>更改应用程序ID。 现在,当你建立你的项目时,你的APK和清单将使用这个新的包名称。


phxhawke 03/24/2015.

我相信你在寻找的是Refactor> Move。 您也可以按F6键。

你会得到两个弹出窗口。 确保你选择了重命名包。 之后,你会弹出一个新的包名称。

请注意,如果您的软件包名称是com.example.android.projectname,那么这会让您将com.example.android更改为其他内容。

还有一件事,它会更新build.gradle中的applicationId。 只要确保选中“在评论和字符串中搜索”和“搜索文本发生”复选框都可以使用。


Ajay Keshri 03/26/2015.

编写新软件包名称并从旧软件包名称拖放的最佳方法。 第二种方法是,如果您单击重构,然后移动选项,然后重命名包名称,它将重命名包名称然后重新生成。

在Build.gradle你必须手动完成,如果你重构那么它将不会在Build.gradle中重命名。


DSlomer64 07/03/2015.

一定要回到Sheharyar开始的答案In Android Studio, you can do this:因为它很棒。 有这么多的答案和评论,它会容易混淆和放弃,但不。 该答案有效。

总之,你做了三件事:

取消选择Compact Empty Middle Packages

Refactor通过选择CHANGE PACKAGEnot目录)来Rename每个旧目录节点以匹配新的包名称。 (请务必预览更改。)

编辑build.gradle文件并使APPLICATION_ID与新的软件包名称匹配。

1 comments
2 DSlomer64 10/20/2015
谁真正降低了这一点是错过了一些东西,因为我的答案是Sheharyar的答案的简介,我所做的就是简化它,因为它看起来如此牵扯(它不是)。 一些短视的,触发快乐的人的神经。 愿意看到downvote的理由。 毫无疑问,我不会看到它。

Darush 11/16/2016.

快速简单的方法:

1-打开MainActivity.java或任何可用的java文件。

在顶部有包声明,如:

package com.example.myapp;

选择要更改的包部分,然后按Shift+F6 。 我个人想改变这个example

在警告对话框中,选择Rename package ,然后插入所需的包名称。

2-打开AndroidManifest.xml并在标签内将package更改为所需的软件包名称。

3-打开build.gradle(Module: app)并将applicationId更改为所需的软件包名称。

1 comments
Ishwor Khanal 08/19/2017
谢谢。 这非常简单直接。

himanshu.tiwari 03/17/2017.
  1. 在Java文件夹中选择包名称。
  2. Shift + F6
  3. 更改软件包名称并单击确定。

您的软件包名称将从所有Java文件和清单文件中更改。 您必须手动更改build.gradle中的软件包名称

1 comments
Uncaught Exception 03/10/2016
如果Shift + F6不适合你,那么你可以尝试Alt + Shift + R来重构这个包。 其余的程序是相同的

Kevin van Mierlo 03/20/2017.

我发现了一个更简单的方法来解决这个问题,它也改变了像com.test.testpackagechange.R这样的生成的导入,只需要大约一分钟。

你的第一步是打开Android Studio并打开替换所有窗口(Mac:cmd + shift + R,Windows我假设:ctrl + shift + R)。 输入您的旧软件包名称,并在新软件包名称下方输入。 点击查找。 这可能需要一段时间,因为它也在查看生成的项目。 如果它有超过1000次点击,请点击继续。

在这里输入图像描述

完成之后,请按全部替换以将新包名替换为新包名。

在这里输入图像描述

现在关闭Android Studio并转到Mac上的Finder或Windows上的Windows资源管理器。 将文件夹的名称更改为新的软件包名称,如下所示:

在这里输入图像描述

现在再次打开Android Studio。 Gradle将同步,您的软件包名称应该更改为新名称。

我发现这是最简单的一个,涵盖生成文件等所有领域。


我建议使用Sublime Text(或Notepad ++)。 在... \ Projects [MyProject]中替换com.one.lastname - > com.two.newname和com / one / lastname - > com / two / newname。 并且不要忘记重命名... \ Projects \ MyProject \ app \ src \ main \ java \ com \ one \ lastname,... \ Projects \ MyProject \ app \ src \ test \ java \ com \ one \ lastname和... \ Projects \ MyProject \ app \ src \ androidTest \ java \ com \ one \ lastname! 就这样:) 截图


Dess64 05/23/2017.

对于我来说,即使是在所有相关模块中更改事件,对于我想在包中修改的文件夹名称,对于我而言,这对我而言都非常好,但对于我来说, only遵循以下步骤only正常工作:

  • A - 如果要更改根文件夹的名称(换句话说,文件夹的名称是包中主要用于包含主要活动的文件夹名称),则可以after执行以下步骤(B到C) beforeafter执行退出“Android Studio”并手动重命名此根文件夹。 点击“导入项目...”,然后点击项目的新名称(此导入过程将自动使用项目文件重新调整'Gradle'文件。)
  • B - before下面的C步骤before ,不要忘记通过在以下3个文件中更改它们来手动修改要在包中更改的文件夹名称:'AndroidManifest.xml','MainActivity.java'(或您的名称最终选择你的第一个活动)和'build.gradle(Module:app)'文件。
  • C - 按照上述步骤1至6(“在项目窗格中,单击小齿轮图标...”) - > https://stackoverflow.com/a/29092698/2001610
  • D - 仅当您想要现在更改根文件夹的名称时,您可以按照上述的'A'过程进行操作。

Dhiraj Gupta 08/23/2016.

在按照其中一种技术重新命名包之后,您可能会看到错误。

如果您的R.java没有正确生成,您会在项目中看到很多错误,说error: cannot find symbol class R ,也error: package R does not exist

请记住检查您的应用程序清单xml。 清单包名称must match实际的包名称must match 。 看起来,R.java是从应用程序清单生成的,如果不匹配,可能会导致这些错误。

请记得检查package属性匹配


ShivBuyya 03/17/2017.
  1. 选择选项 在这里输入图像描述

  2. 取消选中Compact Empty Middle Packages选项。

  3. 选择要更改的目录(我选择了步骤6中显示的'crl')。
  4. Shift + F6
  5. 重命名包
  6. 将目录crl重命名为crl1 在这里输入图像描述

  7. 最后点击下图中标记的Do Refactor按钮 在这里输入图像描述 在此处输入代码

  8. 完成更改后 在这里输入图像描述


ramzixp 06/20/2016.

3年后的附加答案,当然如果以前不适合你,因为“某些事情”。

  • 转到项目路径>你在哪里找到java文件和包
  • 创建新的文件夹,例如com> super_package>活动
  • Android Studio将刷新项目结构
  • 将所有Java文件移动到新文件夹
  • 删除旧的文件夹
  • 编辑>查找>替换路径:
  • 将旧的软件包名称更改为新的
  • 在清单中也会改变并建立gradle

完成!


Raghavendra B 07/15/2016.

如果您的软件包以mypackageold.something.test开头,那么您不能更改为mypackagenew.somethingnew.testnew

在这种情况下,如果我遵循以上接受的答案步骤,结果将是mypackageold.somethingnew.testnew

只有当你的软件包以com....开头到新软件包时,以上接受的答案才有效。

所以如果你想从根级更改包

  1. 更改清单内的必需软件包名称,
  2. 在Android选项卡中删除旧的包和Crate New Package,
  3. 将所有文件从旧软件包拖到新软件包,
  4. 清单内部还更改这些文件的软件包名称,
  5. 清洁项目,
  6. 打开build.gradle并更新applicationId

Related questions

Hot questions

Language

Popular Tags