如何在基于IntelliJ IDEA的新IDE Android Studio中重命名包?
是否包含自动重构?
我想进行批量重构,但我不知道如何。我在Eclipse工作了两年,在Eclipse中工作了一次。
答案 0 :(得分:2368)
例如,如果您想将com.example.app
更改为my.awesome.game
,那么:
在 项目窗格 中,点击小齿轮图标()
取消选中/取消选择Compact Empty Middle Packages
选项
您的包目录现在将在各个目录中分解
单独选择要重命名的每个目录,并且:
Refactor
Rename
Rename Package
而不是重命名目录com
时,可能会发出警告。在这种情况下,请选择 重命名全部
现在打开 Gradle Build File (build.gradle
- 通常是app
或mobile
)。如果尚未自动更新,请将applicationId
中的defaultConfig
更新为新的套餐名称和同步套餐:
您可能需要更改清单中的package=
属性。
清理并重建。
完成! 无论如何,Android Studio需要让这个过程更简单。
答案 1 :(得分:503)
另一个好方法是:首先通过右键单击Java文件夹→新建→包来创建一个具有所需名称的新包。
然后,选择并将所有类拖到新包中。 Android Studio将在任何地方重构包名称。
最后,删除旧包。
完成。
非常重要:
如果您使用此方法,则必须手动将 AndroidManifest.xml 和 build.gradle 文件更改为新包。
答案 2 :(得分:179)
更改应用程序ID (现在独立于程序包名称)可以在一个步骤中轻松完成。 您无需触摸AndroidManifest。 而是执行以下操作:
请注意,这将不更改包名称。这里解释了包名称和应用程序ID的分离: http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
答案 3 :(得分:60)
我用于重命名包名称的方法很简单,如下所示: -
第1步 :从Android Studio的左侧菜单中选择“项目”选项
第2步 :右键单击java并添加一个新包并设置所需的包名称
第3步 :输入新的包名称
第4步 :复制旧包中的所有文件并粘贴到新包中
第5步 :重命名清单文件中的包名称
第6步 :在build.gradle文件中重命名包名称
第7步 :然后右键单击旧包并删除它的所有数据,并删除该目录
第8步 :然后重建你的项目
第9步 :然后,您将在项目中找到旧导入包名称的一些错误 在任意文件中选择旧包名称,然后按 CTRL + Shift + R ,然后在替换框中输入新包名称,然后按查找
第10步 :然后弹出如下所示,并从中选择所有文件选项
第11步 :重新构建项目,宾果项目包名已更改:)
答案 4 :(得分:41)
右键单击项目面板上的包。
选择重构 - >从上下文菜单重命名。
答案 5 :(得分:36)
答案 6 :(得分:22)
答案 7 :(得分:14)
IntelliJ IDEA有一个名为“Compact Empty Middle Packages”的选项。选择项目选项卡的选项图标,然后取消激活它。
请参阅: How can I change top level package name in IntelliJ IDEA?
答案 8 :(得分:14)
选择要重构的包。 重构→移动→"将xxx移至新包" 。
答案 9 :(得分:11)
我已经看到了最高投票的答案,但我发现这样做有点不同,我尝试做最完整的教程。
在Android Studio中点击齿轮图标(),然后选择选项:"Compact Empty Middle Packages"
,以查看树状视图中分隔的文件夹。
现在选择文件夹,点击右键打开上下文菜单,选择 Refactor
,然后选择 Rename
建议您重构包裹:
然后窗口会显示项目中的巧合,选择 "Do Refactor"
:
我们无需手动更改AndroidManifest.xml或build.gradle文件,重构软件包即可完成工作!
答案 10 :(得分:8)
如果您的包裹名称超过两个点,请说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中的包名称,我猜,此文件中的其他名称可以使前缀受益。
[ALSO] ,可能需要您将所有com.hello.world.R
替换为新XXX.XXX.XXX.R
(简称Command+Shift+R
)
重建并运行您的项目以查看它是否有效。并使用“在路径中查找”查找您要重命名的其他非触摸名称。
答案 11 :(得分:5)
我找到了一种更容易解决此问题的方法,它也改变了生成的导入,如com.test.testpackagechange.R
,只需要大约一分钟。
您的第一步是打开Android Studio并打开替换所有窗口(Mac:cmd + shift + R,Windows我假设:ctrl + shift + R)。输入旧包名称和新包名称下面的名称。单击查找。这可能需要一段时间,因为它也在查看生成的项目。如果它有超过1000次点击,只需点击“继续”。
完成后,按“全部替换”将旧包名替换为新包名。
现在关闭Android Studio并转到Mac上的Finder或Windows上的Windows资源管理器。将文件夹的名称更改为新的包名称,如下所示:
现在再次打开Android Studio。 Gradle将同步,您的包名称应更改为新名称。
我发现这是最简单的一个,也涵盖了生成文件等所有领域。
答案 12 :(得分:5)
更新回答:2015年5月
好的,我一直在努力克隆&在Android Studio中重命名项目,但最后我实现了它。以下是要遵循的步骤:
那是......
答案 13 :(得分:4)
我找到了另一种方法,或者在这里解决了一些额外的步骤,特别是如果你想改变域名的话。它适用于Android Studio 1.4。这就是我所做的:
build.gradle
文件,将defaultConfig中的Application Id更改为与manifest中相同的名称,然后重建项目。因此,例如,如果要将“com.example.app”重命名为“com.YourDomain.app”,请打开要重命名的包下的文件,在包breadcrumbs中,将光标设置为“example”部分域名并点击 Shift + F6 并将包重命名为“YourDomain”。
答案 14 :(得分:4)
3 Methods to change package name in Android Studio
我认为这是新的。我试过了,它正在工作。如果以上都不适合您。尝试这个。我在上面提到的站点中,图像教程也有2种其他方法。我也检查了。
首先,我将讨论更改软件包名称。在此示例中,我们将包名称“ com.androidride.myapplication”更改为“ info.xyz.yourapplication”。
答案 15 :(得分:4)
可以犯的一个常见错误是无法重命名包结构,即无法将 com.name.android 更改为 com.Renamed.android 一个人试图在 com.name.android 级别进行修改。
为了获得相同的所需更改,请升级一级,即 com.name ,此时重构时将其更改为重命名。这将始终有效。
答案 16 :(得分:4)
我尝试了两个最高投票的解决方案,但发现了一些问题,尽管两者都在某种程度上有效。
经过一些实验,我发现以下方法适合我。
如果您只需要更改包名称的最后一部分,请使用GreyBeardedGeek概述的方法,即
右键单击“项目”窗格中的包。选择重构 - >从上下文菜单重命名
如果您需要更改整个包名称,请执行以下操作。
右键单击“项目”窗格中的包。选择重构 - >从上下文菜单中移动
这将创建一个新的包文件夹(必要时),但会像以前一样保留包名的最后一部分。如果您需要更改最后一部分,请相应地重命名。
另请注意,您可能需要修改包名称,例如: build.gradle,manifest和/或任何xml资源文件,甚至在硬编码的代码中。毕竟,根据需要进行同步/清理/重建项目。
答案 17 :(得分:3)
右键单击包 - >重构并更改名称。
您也可以在清单中更改它。有时,如果更改包名称,但在创建.apk文件后,它会显示不同的包名称。那时检查" applicationId"在 build.gradle 文件中。
答案 18 :(得分:3)
请务必转到Sheharyar's great Answer。随之而来的答案和评论很多,很容易让人感到困惑和放弃,但不要。答案有效。
简而言之,你做三件事:
(1)取消选择Compact Empty Middle Packages
。
(2)Refactor
然后Rename
每个旧目录节点选择Change Package
( not Change Directory
)以匹配新的包名称。 (务必预览更改。)
(3)编辑build.gradle
文件并使APPLICATION_ID
与新包名匹配。
答案 19 :(得分:3)
请尝试以下步骤:
*******最后它完成了******
答案 20 :(得分:3)
我相信你要找的是Refactor>移动。您也可以按F6。
你会得到两个弹出窗口。确保在两者上选择重命名包。之后,您将弹出一个新的包名称。
请注意,如果您的软件包名称是com.example.android.projectname,那么您可以将com.example.android更改为其他名称。
还有一件事,这将更新build.gradle中的applicationId。只需确保选中"在评论和字符串中搜索"和"搜索文本事件"检查它是否正常工作。
答案 21 :(得分:2)
ctrl + Shift + R 一直对我有用。
只需replace all
并选择All Files
。
答案 22 :(得分:2)
第一部分包括在java
文件夹下创建一个新包,然后选择将所有源文件从old package
拖到此new package
。之后,您需要remane
android manifest
中的包名称为新包的名称。
在第2步中,您需要执行此操作。除了更改包之外,您还需要更改android studio中模块applicationId
下的build.gradle
中的旧包名称manifest
中的名称。总而言之,点击“AndroidManifest.xml”下方的build.gradle
,然后将applicationId
的值修改为新的包名。
然后,在最顶层,build
下。 clean
您的项目,然后是rebuild
。从这里开始应该没问题。
答案 23 :(得分:2)
按 Ctrl + Shift + R
用新的包替换旧包。
右键单击包名称。
Refactor
> Rename
并重命名为新的
答案 24 :(得分:2)
快捷方便:
1- open MainActivity.java
或任何可用的java文件。
在顶部有包声明,例如:
package com。
example
。myapp;
选择要更改的包裹部分,然后按 Shift + F6 。我个人想要更改example
。
在警告对话框中,选择重命名包,然后插入所需的包名称。
2-打开AndroidManifest.xml
并在<manifest>
标记内将package
更改为所需的包名称。
3-打开build.gradle(Module: app)
并将applicationId
更改为所需的包名称。
答案 25 :(得分:2)
包有两个目的。一种是在Google Play商店中唯一标识您的应用。另一种是为构建项目时生成的 R.java class
命名包。您可以将第一个目的视为外部包,第二个目标视为内部包。假设您想要更改外部包以便在Play商店中识别,那么这是一种方便的方法。
在Android Studio中,
choose File -> Project Structure -> Choose your app's module -> Click on the
Flavors tab -> change the Application id.
现在,当您构建项目时, 你的APK和清单将使用这个新的包名。
答案 26 :(得分:2)
答案 27 :(得分:2)
如何将com.example.app
重命名为com.android.app
:
在软件包com.example.app
中选择示例
Shift + F6
选择rename package
将示例重命名为android
确认do refactor
答案 28 :(得分:2)
最好的方法是编写新的包名并从旧的包名中拖动。
第二种方法,如果您单击 Refactor 然后移动选项,然后重命名包名称,它将重命名包名称,然后重建。
在Build.gradle中你必须手动完成,如果你重构,那么它将不会在Build.gradle中重命名。
答案 29 :(得分:2)
完成!
答案 30 :(得分:2)
您的软件包名称将从所有Java文件和清单文件中更改。您必须从build.gradle
手动更改包名称。
答案 31 :(得分:1)
右键单击包名称 - &gt;折射器 - &gt;重命名 - &gt;输入包的名称 - &gt;单击“Refractor”。 不要编辑除“app”文件夹下的“build.gradle”之外的任何构建文件。
答案 32 :(得分:1)
给出了很多答案,但我仍在试用。...
第5步: 选择子包中的任何一个(例如或示例或googledevsmsverify),然后单击Shift + f6按钮...
我选择了中间包示例,因此它将如图所示 简单地重命名程序包,然后单击“重构”按钮
步骤6: 单击“重构”按钮,单击“ DO重构”,然后等待,直到构建gradle,您将看到以下屏幕。
步骤7: 转到build.gradle(Mobile:app)并更改applicationID的包名称,如下所示
步骤8: 只需检查manifest.xml文件中的包...
所有完成的包裹都已更改... @ Ambilpura
答案 33 :(得分:1)
问的问题:
是否包含自动重构?
我想进行批量重构,但是我不知道如何做。我在Eclipse工作了两年,在Eclipse中是一键式操作。
嗯,几乎具有自动重构的一键式操作,但是首先只有一小步,即创建新软件包的一小步。这是下面的完整解决方案。
您可以通过创建新软件包(包括所需的文件夹路径)来重命名软件包,然后将其从旧软件包中拖放(并让Android Studio负责从旧软件包中重构各种引用)到新版本),如下所示:
java
下的app
。 New
和Package
注意:由于应用程序ID和程序包名称最近已分离,因此请注意,以上内容仅用于重命名程序包名称。要更改应用程序ID,您可以在build.gradle
中进行操作。
答案 34 :(得分:1)
在您使用其中一种技术重命名包之后,您可能会开始看到错误。
如果您的R.java未正确生成,您的项目中会出现很多错误error: cannot find symbol class R
和error: package R does not exist
。
请记得检查您的应用程序清单xml。清单包名称必须匹配实际包名称。似乎R.java是从Application Manifest生成的,如果不匹配会导致这些错误。
请务必检查package
<manifest package="com.yourcompany.coolapp">
属性匹配项
答案 35 :(得分:1)
转到AndroidManifest.xml 在那里你会发现package作为manifest标签的属性。 只需选择要更改的部分, 右键单击 - &gt;重构 - &gt;重命名
也许早些时候它很难,但截至今天它已经不复存在了。
您可能还想更改
中的应用IDdefaultConfig {
applicationId
}
简短&amp;甜
答案 36 :(得分:1)
要在Android studio中重命名包名称,请单击项目部分中的设置图标并取消选中压缩空中间包,然后将包拆分为多个文件夹名称,然后右键单击在您需要更改名称的文件夹上,单击重构 - &gt;的重命名强> - &GT; 在中键入要更改的名称 - &gt; 重构 - &gt; 重构目录,然后在整个项目中导入R.java文件。为我工作
答案 37 :(得分:1)
我建议使用Sublime Text(或Notepad++)。替换com.one.lastname - &gt; com.two.newname和com / one / lastname - &gt; com / two / newname in ... \ Projects [MyProject]。并且不要忘记重命名... \ 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!
全部:)
答案 38 :(得分:1)
对我来说非常有效,即使是在所有相关模块中更改了我想要在包中修改的文件夹名称,但对我来说,它只能 我完全遵循以下步骤:
答案 39 :(得分:0)
转到AndroidManifest.xml
这对我有用
答案 40 :(得分:0)
有两件事-软件包名称和应用程序ID。
对我来说,最简单,最令人满意的方式是
您能看到突出显示行“ vijayjangid”吗,它以前是“ example”。 我所做的一切都使用Refractor重命名为example,而android studio完成了所有工作。
第一部分完成。
现在将defaultConfig括号中的应用程序ID重命名为您重命名示例文件夹的名称。确保您在Firebase,Aws,领域等云服务中重命名程序包名称和ID。
就这样,您完成了,最不赞成的答案是旧的,我们需要更新答案。
答案 41 :(得分:0)
如果,重命名的唯一原因是避免与具有相同程序包名称的另一个内部版本(或系统应用程序)冲突,那么您可以改为仅重命名{ {1}}在您应用的 applicationId
文件中。
示例:假设您已经安装了ID为build.gradle
(想要保留)的应用,请将com.android.phone
更改为:
app/build.gradle
即如果您已经拥有一个软件包名称为android {
defaultConfig {
applicationId "com.android.phone.mymod"
}
的应用程序,并且不想/无法将其卸载(例如,因为它是系统应用程序且该设备未植根),则上述更改为 all em>,以便将您的应用程序与原始应用程序并排安装。在设备上将使用com.android.phone
,而不是实际的软件包名称。同样,您的应用数据将存储在applicationId
下,而不是/data/data/com.android.phone.mymod
下。
注意。在某些情况下,您可能还需要重命名
/data/data/com.android.phone
文件中提供者和授权者的名称。
参考:
在Android Studio中创建新项目时,
AndroidManifest.xml
与您在设置过程中选择的Java样式包名称完全匹配。但是,此之后,应用程序ID和程序包名称是相互独立的。您可以更改代码的程序包名称(您的代码名称空间),它不会影响应用程序ID,反之亦然(不过,再次,发布应用程序后,您不应更改应用程序ID)。但是,更改程序包名称还会带来其他后果,因此请参见有关如何change the package name的部分。
答案 42 :(得分:0)
对我来说很好
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步 现在复制您的旧项目并粘贴任何其他根目录或复制项目文件夹并粘贴任何 其他Dir。
Example C:\Users\ashif\Documents/MyApplication
第5步
Now open Android Studio and open Existing Project
C:\Users\ashif\Documents/MyApplication
尝试一下即可
答案 43 :(得分:0)
在package
目录中创建一个新的java
,并将您的项目移至该软件包中。就像您当前的项目ID是com.testapp.user
,而您想更改它xyz.testapp.user
。然后在src/java
目录中创建一个名为xyz的包,并将子包testapp.user
移到xyz中。这个对我有用。最后,更新build.gradle和manifest
项目ID。
答案 44 :(得分:0)
对我来说,我只是更改了目录名称而不是库模块的程序包名称,然后单击底部的“执行重构”(例如:来自com.reg.register-> com.reg1.register )。
之后,请确保您在构建gradle文件和清单文件中更新了新目录名称。
重建项目。
答案 45 :(得分:0)
接受的答案对我不起作用。 这是一个Python脚本,用于直接在源文件上更改程序包名称。
"""
Notes:
1 - This script it for python3
2 - Create a backup first
3 - Place on the root folder of the android project you want to change
4 - run `python change_android_studio_pkg_name.py`
5 - Type the old package name
6 - Type the new package name
7 - Clean and Rebuild on Android Studio
8 - SRC folder names won't be changed but app will work
"""
import os, glob, traceback
from pathlib import Path
def rwf(fp, mode="r", data="" ):
if mode == "r":
with open(fp, "r", encoding='utf8') as f:
return(f.read())
elif mode == "w":
with open(fp, "w", encoding='utf8') as f:
f.write(data)
old_pkg = input("Old PKG\n").strip()
new_pkg = input("New PKG\n").strip()
if not old_pkg or not new_pkg:
exit("Args Missing")
dirname, filename = os.path.split(os.path.abspath(__file__))
file_types = ['xml', 'txt', 'json', 'gradle', 'java']
_fs = glob.iglob(f"{dirname}/**", recursive=True)
for file_path in _fs:
ext = Path(file_path).suffix.replace(".", "").lower()
if os.path.isfile(file_path) and ext in file_types:
try:
content = rwf(file_path)
new_content = content.replace(old_pkg, new_pkg)
rwf(file_path, "w", new_content)
except:
print(traceback.format_exc())
pass
答案 46 :(得分:0)
更改程序包名称
要重命名包名,只需要做的是转到AndroidManifest.xml
文件,将鼠标光标放在要更改的包名部分的前面。
右键单击>重构>重命名
在新窗口中,按重命名程序包
更改名称并按“重构”
...,然后按底部的“执行重构”。
您的软件包名称通常采用com.domain.appname格式,在此示例中,我们更改了appname部分,但是您也可以对域执行相同的步骤。
完成!您更改了包裹名称!
答案 47 :(得分:0)
如果您的包裹以mypackageold.something.test
开头,那么您无法更改为mypackagenew.somethingnew.testnew
。
在这种情况下,如果我按照上面接受的答案步骤,结果将为mypackageold.somethingnew.testnew
。
仅当您的软件包以com....
开头的新软件包时,上面接受的答案才有效。
因此,如果您想从根级别更改包
build.gradle
并更新applicationId
。答案 48 :(得分:0)
例如,如果您想将com.example.a中的包更改为com.example.b
1)将项目样式文件夹从android更改为package(在项目端)
2)右键单击文件夹顶部,然后单击路径中的替换
3)在项目按钮中选择
4)在第一个输入中写入com.example.a
5)在第二个输入中写入com.example.b
6)当您看到警告时,选择全部替换以替换值
完成替换后,您可以看到您的包名是com.example.b
答案 49 :(得分:0)
我需要运行File-&gt; Invalidate Caches / Restart ...来删除原始包的残余
答案 50 :(得分:0)
还有一个好的键盘快捷键,只需点击n
选择要重命名的Class / Package
,然后按 ALT +两次 R 或 Shift + F6
反映了:Android Studio中的 - &gt; Refactor
菜单和Rename
功能。重命名现有软件包后,如果您点击reflection / rename
按钮,则会在底部显示此Refector
的效果,它将更改整个项目中使用的Class name / Package name
。
答案 51 :(得分:-1)
这很容易做到。只需按照两个步骤操作:
右键单击根文件夹,然后单击打开模块设置。
在此之后转到flavor选项卡并根据需要更改应用程序ID。
对于那些认为这只会改变build.gradle文件中的应用程序ID的人:
由Google撰写
您构建的.apk清单中使用的最终包,是您的应用在您的设备和Google Play商店中所知的包,是“应用ID”。
和
源代码中用于引用R类并解析任何相关活动/服务注册的包继续被称为“包”。
您可以在http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
上阅读更多内容