题 Android Studio重命名包


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

是否包括自动重构?

我想进行批量重构,但我不知道如何。我在eclipse工作了2年,在eclipse中工作了一次。


920
2018-05-29 01:24


起源


请看我的答案 这里。我已成功设法使用我描述的步骤重命名我的项目。 - Leigh
可能重复 在Android Studio上更改项目名称 - Leigh
逐步更改包名称的过程... stackoverflow.com/a/46945668/6915572 - Shubham Soni


答案:


在Android Studio中,您可以执行以下操作:

例如,如果要更改 com.example.app 至 my.awesome.game, 然后:

  1. 在你的 项目窗格,点击小齿轮图标( Gears icon )

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

Compact Empty Middle Packages

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

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

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

enter image description here

  1. 现在打开你的 Gradle构建文件 (build.gradle  - 通常 app 要么 mobile)。更新 applicationId 到新的Package Name和Sync Gradle,如果它尚未自动更新:

Refactor Directories

  1. 您可能需要更改 package= 清单中的属性。

  2. 清洁和重建。

  3. 完成! 无论如何,Android Studio需要使这个过程更简单一些。


1981
2018-03-17 06:32



谢谢!如此愚蠢,他们将此设置为默认值。为什么崩溃包,所以用户不友好它让我心烦意乱。 - stevebot
清洁和重建。 - Sheharyar
警告:如果在重命名“com”时选择“全部重命名”,它不仅会将所有内容重命名为所选模块,还会将所有模块重命名为此项目 - ricky.tribbia
@Antonio将文件拖入 com.example.test 至 com.example 然后删除 com.example.test。 - Dick Lucas
这个程序对我有用。我还必须更改AndroidManifest.xml以反映新名称。例如 - > package =“my.awesome.game”> - nevzo


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

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

最后,删除旧包。

完成。

还有一件非常重要的事情

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


445
2017-09-05 12:57



如果您使用此方法,则可能需要更新Android Manifest文件以引用新包。虽然非常简单,但很棒的解决方案。 - Dick Lucas
您可能必须重新启动Android studio才能更新.idea / workspace.xml - Christoph
您还可能需要更改build.gradle以反映新包 - Samik Bandyopadhyay
好的方法,但不得不做更多的事情(除了更新清单文件)使其完全工作,首先必须更改/重命名整个项目中的R文件导入,其次appdebug使用旧包名称(在工作室的运行窗口中可见) )在app build.gradle defaultconfig中添加了applicationId“com.packagename”.. - baboo
这与“好”解决方案完全相反...... - CCJ


改变了 申请ID (现在独立于包名称)可以一步完成。 您不必触摸AndroidManifest。 而是执行以下操作:

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

请注意这一点  更改包名称。此处解释了包名称和应用程序ID的分离: http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename


149
2018-02-05 04:42



这只会改变gradle中的名称,而不是其他地方。 - Jacob R
这是一个圣杯的答案!很聪明! - sud007
这需要被选为正确的答案,因为它是非常简单和快速的方法。 - Sa Qada
这对我不起作用 - RunLoop
这需要被接受,其他答案很长,你不能改变 com.example.sample 至 com.example 使用其他答案 - Inder Kumar Rathore


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

步骤1 :从Android Studio的左侧菜单中选择“项目”选项

enter image description here

第2步 :右键单击java并添加一个新包并设置所需的包名称

enter image description here

第3步 :输入新的包名称

enter image description here

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

enter image description here

第5步 :重命名清单文件中的包名称

enter image description here

第6步 :在build.gradle文件中重命名包名称

enter image description here

第7步 :然后右键单击旧包并删除它的所有数据,并删除该目录

enter image description here

第8步 :然后重建您的项目

enter image description here

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

enter image description here

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

enter image description here

第11步 :重新建立你的项目,bingo你的项目包名已被更改:)


42
2017-09-26 11:34



在Android工作室2.3.3中,替换In Path不再可用tru Shift + R,突出显示旧路径,转到编辑 - >查找 - >替换路径。还要确保更新gradle文件。干杯 - ralphgabb
旧包名没有出现任何错误。所以,在第9步之后没有做任何事情。谢谢! - user3760100
如果您没有收到任何错误,请不要再执行第9步 - Mehroz Munir
错误:任务':app:compileDebugAidl'的执行失败。 > java.io.IOException:com.android.ide.common.process.ProcessException: - Pablo Cegarra


右键单击包中的 项目小组

从上下文菜单中选择Refactor - > Rename。


37
2018-05-29 02:03



这对我很有用,也不得不更新AndroidManifest文件。 - physphil
Refactor> Rename只允许我重命名包的最后一部分,例如com.example.mypackage.app中的应用程序 - GilliMonsta
我是这样做的,但是现在说它在发布时不存在。你是怎么改名的? - Dharmik
我使用了“Refactor”主菜单并单击“重命名”。 - Codebeat
@GilliMonsta您可以在右侧面板单击设置中选择您的应用程序文件夹,然后取消选中Compact Empty Middle Packages - Taranmeet


  1. 转到你的AndroidManifest.xml。
  2. 将光标放在包名称中,如下所示,不要选择它只是放置它。

enter image description here

  1. 然后按 shift+F6 您将看到如下所示的弹出窗口选择 重命名包

enter image description here

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

就是这样。


28
2018-01-28 09:28



感谢您使用Android Studio 1.5.1自动更改软件包无需创建新软件包并拖放文件并删除旧软件包Blah Blah Blah - Shan Xeeshi
@Prince Jayakumar,你的 '不要选择它只是放置它' 声明令人困惑。只需放置鼠标光标,shft + f6就不起作用。如果插入符号在文件中的其他位置,那么您必须单击包名称,然后shft + f6将起作用 - Prabs
更改包名称的最简单方法! - Timo Schuck


(1)

打开文件:

app >> manifests >> AndroidManifest.xml

enter image description here

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

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

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

enter image description here

(2)

打开(Gradle Script)>>(build.gradle(模块:app))

并更新 的applicationID  到你的包名

enter image description here

(3)

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


19
2017-07-07 12:38



我试过这样做,我遇到了麻烦。我正在尝试将com.example.android.package更改为我自己的域(以.net结尾)。我可以改变'example'和'package',但我不能改变'com'。它也不会重命名任何目录。有小费吗? - Rob Rose
@RobertRose,我有一个解决你的问题的方法。你还在努力吗? - The Original Android
我把它放在一边然后继续离开它。这不是生产。为了将来的参考,你想出了什么? - Rob Rose
如果我有“xxx.mydomain.com”类型的包,第一个不起作用) - Jemshit Iskenderov
美丽。第二步是必不可少的,通常在大多数答案中都会查看。 - AlleyOOP


Intelli J有一个名为“Compact Empty Middle Packages”的选项。选择项目选项卡的选项图标,然后取消激活它。

看到: 如何更改IntelliJ中的顶级包名称


13
2017-07-28 14:26



这很有用。在“停用”此功能后,事情变得更加清晰,我可以删除空的包 - Chris Nevill
@ChrisNevill你怎么删除那些空包? - beretis
我想我只是选择了它们并按下删除。我现在无法重现这个问题所以不能完全记住它。 - Chris Nevill
我同意,这真的很有用。应该包括在我看过的关于这个主题的所有不合标准的答案中。 - iaindownie


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


13
2017-10-06 10:50



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


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

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

introducir la descripción de la imagen aquí

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

introducir la descripción de la imagen aquí

建议您重构包裹:

introducir la descripción de la imagen aquí

然后一个窗口将显示proyect内部的巧合,选择 "Do Refactor"

introducir la descripción de la imagen aquí

我们不必手动更改AndroidManifest.xml或build.gradle文件,重构包将完成工作!


9
2017-09-15 21:25





如果您的包名称超过两个点,请说 com.hello.world 而且,你没有放任何东西 com/com/hello/。你的所有课程都在投入 com/hello/world/,您可以执行以下步骤在Android Studio或IntelliJ中重构您的包名称:

  • [第一] 在目录下添加一些东西(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中的包名,这样该文件中的其他名称可以使前缀受益。

  • [也],它可能需要你替换所有 com.hello.world.R 新的 XXX.XXX.XXX.RCommand+Shift+R 简而言之)

  • 重建并运行您的项目以查看它是否有效。并使用“在路径中查找”查找您要重命名的其他非触摸名称。

  • 好好享受。

8
2018-06-07 16:20