如何在基于 IntelliJ IDEA 的新 IDE Android Studio 中重命名包?
是否包含自动重构?
我想进行批量重构,但我不知道如何。我在 Eclipse 上工作了两年,在 Eclipse 中它是一键式操作。
如何在基于 IntelliJ IDEA 的新 IDE Android Studio 中重命名包?
是否包含自动重构?
我想进行批量重构,但我不知道如何。我在 Eclipse 上工作了两年,在 Eclipse 中它是一键式操作。
例如,如果要更改com.example.app
为my.awesome.game
,则:
在您的项目窗格中,单击小齿轮图标 ( )
取消选中该Compact Empty Middle Packages
选项
您的包目录现在将被分解为单独的目录
单独选择要重命名的每个目录,然后:
右键单击它
选择Refactor
点击Rename
在弹出对话框中,单击Rename Package
而不是重命名目录
输入新名称并点击重构
点击底部的Do Refactor
让 Android Studio 更新所有更改
注意:com
在 Android Studio 中重命名时,可能会出现警告。在这种情况下,选择 重命名全部
现在打开您的Gradle 构建文件(build.gradle
- 通常app
或mobile
)。如果尚未自动更新,请将applicationId
中的更新为您的新包名称和同步 Gradle:defaultConfig
您可能需要更改package=
清单中的属性。
清洁和重建。
完毕!不管怎样,Android Studio 需要让这个过程简单一点。
另一个好方法是:首先通过右键单击 Java 文件夹 →新建→包创建一个具有所需名称的新包。
然后,选择所有类并将其拖到新包中。Android Studio 将在任何地方重构包名称。
最后,删除旧包。
完毕。
很重要:
如果使用此方法,您必须手动将AndroidManifest.xml和build.gradle文件更改为新包。
更改应用程序 ID(现在独立于包名称)可以很容易地一步完成。您不必触摸 AndroidManifest。而是执行以下操作:
请注意,这不会更改包名称。Package Name 和 Application ID 的解耦在这里解释: http ://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename
我用来重命名包名的方法如下:-
第 1 步 :从 Android Studio 的左侧菜单中选择 Project 选项
第2步 :右键单击java并添加一个新包并设置所需的包名称
第 3 步 :输入您的新软件包名称
第 4 步 :复制旧包中的所有文件并粘贴到新包中
第五步 :重命名清单文件中的包名
第 6 步 :重命名 build.gradle 文件中的包名
第7步 :然后右键单击旧包并将其及其所有数据删除,并删除该目录
第 8 步 :然后重建您的项目
步骤9 :然后你会在你的项目中发现old import packagename的一些错误 在任何文件中选择旧包名并按 CTRL + Shift + R,在替换框中输入你的新包名,然后按find
第 10 步 :然后出现如下所示的弹出窗口并从中选择“所有文件”选项
第 11 步 :再次重建您的项目,宾果您的项目包名已更改 :)
右键单击Project Panel中的包。
从上下文菜单中选择重构 -> 重命名。
IntelliJ IDEA 有一个名为“Compact Empty Middle Packages”的选项。选择项目选项卡的选项图标并取消/激活它。
选择要重构的包。重构→移动→ “将xxx移动到新包”。
如果你的包名有两个以上的点分隔,比如说com.hello.world
and 而且,你没有在 and 中放任何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
简称)
重建并运行您的项目以查看它是否工作。并使用“在路径中查找”查找您想要重命名的其他非触摸名称。
一定要去看Sheharyar's great Answer。后面有很多答案和评论,很容易混淆和放弃,但不要。这个答案有效。
简而言之,你做了三件事:
(1) 取消选择Compact Empty Middle Packages
。
(2)Refactor
然后Rename
每个旧目录节点通过选择Change Package
( not Change Directory
) 来匹配新的包名。(请务必预览更改。)
(3) 编辑build.gradle
文件并APPLICATION_ID
匹配新的包名。
人们可能犯的常见错误是无法重命名包结构,即当尝试在com.name.android级别进行修改时,不可能将com.name.android更改为com.Renamed.android。
为了获得相同的期望更改,请上一级,即com.name,当您重构时将其更改为Renamed。这将永远有效。
我找到了一种更简单的方法来解决这个问题,它也改变了生成的导入com.test.testpackagechange.R
,只需要大约一分钟。
您的第一步是打开 Android Studio 并打开全部替换窗口(Mac:cmd + shift + R,Windows 我假设:ctrl + shift + R)。输入您的旧包名称和新包名称下方的名称。单击查找。这可能需要一段时间,因为它也在查看生成的项目。如果它有超过 1000 次点击,只需单击继续。
完成后,按 Replace All 以将旧包名称替换为新包名称。
现在关闭 Android Studio 并转到 Mac 上的 Finder 或 Windows 上的 Windows Explorer。将文件夹的名称更改为新的包名称,如下所示:
现在再次打开 Android Studio。Gradle 将同步,您的包名称应更改为新名称。
我发现这是最简单的一种,它涵盖了生成文件等所有领域。
包有两个目的。一种是在 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 和清单将使用这个新的包名称。
我尝试了两个投票最多的解决方案,但发现了一些问题,即使它们在某种程度上都有效。
经过一些实验,我发现以下方法对我很有效。
如果只需要更改包名的最后一部分,请使用 GreyBeardedGeek 概述的方法,即
右键单击“项目”窗格中的包。从上下文菜单中选择重构 -> 重命名
如果您需要更改整个包名,请执行以下操作。
右键单击“项目”窗格中的包。从上下文菜单中选择重构 -> 移动
这将创建一个新的包文件夹(必要时),但会像以前一样保留包名称的最后一部分。如果您需要更改最后一部分,请相应地进行重命名。
另请注意,您可能需要在 build.gradle、manifest 和/或任何 xml 资源文件中修改包名称,甚至在您的代码中(如果硬编码)。毕竟,根据需要执行同步/清理/重建项目。
更新答案:2015 年 5 月
好的,我一直在努力在 Android Studio 中克隆和重命名项目,但最终我实现了。以下是要遵循的步骤:
而已...
我在这里找到了另一种可行的方法或一些答案的额外步骤,特别是如果您也想更改域。它适用于 Android Studio 1.4。这就是我所做的:
build.gradle
文件并将 defaultConfig 中的 Application Id 更改为与清单中相同的名称并重建项目。因此,例如如果要将“com.example.app”重命名为“com.YourDomain.app”,请打开要重命名的包下的文件,在包面包屑中,将光标设置为域的“example”部分并点击Shift+F6并将包重命名为“YourDomain”。
您的包名称将从所有 Java 文件和清单文件中更改。您必须手动将包名称从build.gradle
.
第一部分包括在文件夹下创建一个新包,java
然后选择然后将所有源文件old package
从new package
. 之后,你需要rename the package name in android
manifest` 到新包的名称。
在第 2 步中,您需要执行以下操作。applicationId
除了build.gradle
更改manifest
. _ 所以总而言之,单击build.gradle
“AndroidManifest.xml”下方的哪个并将其值修改applicationId
为您的新包名称。
然后,在最顶部,在build
. clean
你的项目,然后rebuild
。从这里应该没问题。
最好的方法是编写新的包名并从旧的包名中拖动。
第二种方式,如果您单击Refactor then move 选项然后重命名包名称,它将重命名包名称然后重建。
在 Build.gradle 中你必须手动进行,如果你重构然后它不会在 Build.gradle 中重命名。
右键单击包-> 重构并更改名称。
您也可以在清单中更改它。有时,如果您更改包名称,但在创建 .apk 文件后,它会显示不同的包名称。那时检查build.gradle文件中的“applicationId”。
我建议使用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!
就这样:)
快速简便的方法:
1- 打开MainActivity.java
或任何可用的 java 文件。
在顶部有包声明,例如:
包 com。
example
.myapp;
选择要更改的包部分,然后按Shift+F6。我个人想改变example
.
在警告对话框中,选择重命名包,然后插入所需的包名称。
2-打开AndroidManifest.xml
和内部<manifest>
标签更改package
为所需的包名称。
3-打开build.gradle(Module: app)
并将其更改applicationId
为所需的包名称。
如何重命名com.example.app
为com.android.app
:
在包中com.example.app
选择示例
Shift+F6
选择rename package
将示例重命名为 android
确认do refactor
给出了很多答案,但我仍然在尝试。
第 2 步:选择 Compact Middle Packages 选项...
第 5 步:选择子包中的任何一个(在示例或 googledevsmsverify 中),然后单击 Shift+f6 按钮...
我选择了中间包示例,因此它将显示如上图简单重命名包并单击重构按钮
第6步:点击Refactor按钮后会看到如下画面,点击DO Refactor,等到build gradle...
第 7 步:转到 build.gradle(Mobile:app) 并更改 applicationID 的包名称,如图所示
第 8 步:只需检查 manifest.xml 文件中的包...
全部完成,包裹正在改变......@Ambilpura
我相信您正在寻找的是重构>移动。您也可以按 F6。
你会得到两个弹出窗口。确保在两者上都选择重命名包。之后,您将弹出一个窗口以放置新的包名称。
请注意,例如,如果您的包名称是 com.example.android.projectname,那么这将允许您将 com.example.android 更改为其他名称。
还有一件事,这也会更新 build.gradle 中的 applicationId。只需确保选中“搜索注释和字符串”和“搜索文本匹配项”复选框以使其正常工作。
ctrl++Shift一直R为我工作。简单地replace all
选择All Files
。
按Ctrl+ Shift+R
用新包替换旧包。
右键单击包名称。
Refactor
>Rename
并重命名为新的
请尝试以下步骤:
*******终于搞定了******
我认为这是一个新的。我试过了,它工作正常。如果以上对你不起作用。尝试这个。在我上面提到的网站上,还有其他两种方法与图像教程。我也查了。
首先,我将讨论更改包名称。在本例中,我们将包名“com.androidride.myapplication”更改为“info.xyz.yourapplication”。
完毕!
转到 AndroidManifest.xml 在那里你会发现包作为清单标签的属性。只需选择要更改的部分,右键单击->重构->重命名
也许早些时候它很难,但到今天,它不再是了。
您可能还想更改应用程序 ID
defaultConfig {
applicationId
}
短而甜
右键点击包名->折射器->重命名->输入包名->点击“折射器”。不要编辑“app”文件夹下的“build.gradle”以外的任何构建文件。
这对我来说非常有效,即使对于更改所有相关模块中的出现,对于我想要在包中修改的文件夹名称,但对我来说,只有当我完全遵循以下步骤时它才能正常工作:
在您按照这些技术之一重命名您的包后,您可能会开始看到错误。
如果/当您的 R.java 没有正确生成时,您的项目中会出现很多错误,error: cannot find symbol class R
而且error: package R does not exist
.
请记住检查您的应用程序清单 xml。清单包名称必须与实际包名称匹配。似乎 R.java 是从应用程序清单生成的,如果不匹配,可能会导致这些错误。
记得检查package
你的属性匹配<manifest package="com.yourcompany.coolapp">
在 Android Studio 中重命名包名,点击项目部分的设置图标,取消勾选Compact empty Middle Packages,之后包会拆分成多个文件夹名,然后在需要改名的文件夹上右击,点击refactor -> Rename ->在-> Refactor -> Refactor Directory中键入要更改的名称,然后在整个项目中导入 R.java 文件。为我工作。
转到您的 AndroidManifest.xml
它为我工作
我需要运行 File->Invalidate Caches/Restart... 来删除原始包的残余
问题问:
是否包含自动重构?
我想进行批量重构,但我不知道如何。我在 Eclipse 上工作了两年,在 Eclipse 中它是一键式操作。
好吧,几乎是一键式自动重构,但只是第一步,即创建新包的一小步。这是下面的完整解决方案。
您可以通过创建新包(包括所需的文件夹路径)来重命名包,然后从旧包拖放(并让 Android Studio 负责将各种引用从旧包重构到新包), 如下:
java
下app
。New
和Package
注意:由于最近应用程序 ID 和包名已解耦,请注意以上仅用于重命名包名。要更改应用程序 ID,您可以在build.gradle
.
如果您的包以 开头,mypackageold.something.test
那么您不能更改为mypackagenew.somethingnew.testnew
.
在这种情况下,如果我遵循上述接受的答案步骤,结果将是mypackageold.somethingnew.testnew
.
只有当您的包裹以新包裹开头时com....
,上述接受的答案才会起作用。
因此,如果您想从根级别更改包
build.gradle
和更新applicationId
。还有一个很好的键盘快捷键,只需单击n
选择Class / Package
要重命名的,然后按ALT + 两次 R 或 Shift+F6
这反映了:-> Refactor
Android Studio 中的菜单和Rename
功能。重命名现有包后,它会显示在底部,reflection / rename
如果单击Refector
按钮,它将改变Class name / Package name
整个项目中使用的位置。
例如,如果您想将包从 com.example.a 更改为 com.example.b
1)将项目样式文件夹从android更改为包(在项目端)
2)右键单击文件夹顶部,然后单击路径中的替换
3)在项目按钮中选择
4)在第一个输入写com.example.a
5) 在第二个输入中写入 com.example.b
6)当你看到警告选择全部替换以替换值
完成替换后你可以看到你的包名是 com.example.b
接受的答案对我不起作用。这是一个 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
对我来说,我只是更改了库模块的目录名称而不是包名称,然后单击底部的 Do refactor(例如:来自 com.reg.register -> com.reg1.register)。
之后,确保您更新了构建 gradle 文件和清单文件中的新目录名称。
重建项目。
package
在目录中创建一个新的java
并将您的项目移动到该包中。就像您当前的项目 ID 一样,com.testapp.user
并且您想更改它xyz.testapp.user
。然后在名为 xyz 的目录中创建一个包src/java
并将您的子包移动testapp.user
到 xyz。这个对我有用。最后,更新 build.gradle 和manifest
项目 id。
它对我来说很好用
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
试一试会奏效
如果您重命名的唯一原因是避免与具有相同包名的另一个构建(或系统应用程序)发生冲突,那么您可以只重命名应用程序applicationId
文件中的build.gradle
。
示例:假设您已经安装了一个带有 id 的应用程序com.android.phone
(您想保留它),请将您的更改app/build.gradle
为:
android {
defaultConfig {
applicationId "com.android.phone.mymod"
}
即,如果您已经有一个带有包名的应用程序com.android.phone
并且不想/不能卸载它(例如,因为它是一个系统应用程序并且设备没有root),那么上面的更改就是拥有您的应用程序所需要的全部与原始应用程序并排安装。在设备上applicationId
,将使用的是什么,而不是实际的包名称。此外,您的应用数据将存储在/data/data/com.android.phone.mymod
而不是/data/data/com.android.phone
.
注意。在某些情况下,您可能还需要重命名
AndroidManifest.xml
文件中的提供者和授权机构的名称。
参考:
当您在 Android Studio 中创建一个新项目时,它
applicationId
与您在设置期间选择的 Java 样式的包名称完全匹配。但是,应用程序 ID 和包名称在此之后相互独立。您可以更改代码的包名称(您的代码命名空间),它不会影响应用程序 ID,反之亦然(但同样,一旦发布应用程序,您不应更改应用程序 ID)。但是,更改包名还有其他后果您应该知道,因此请参阅有关如何更改包名的部分。
这很容易做到。只需遵循两个步骤:
右键单击根文件夹,然后单击打开模块设置。
在此之后转到风味选项卡并根据需要更改应用程序 ID。
对于那些认为这只会更改 build.gradle 文件中的应用程序 ID 的人:
谷歌写的是
在您构建的 .apk 清单中使用的最终包是“应用程序 ID”,即您的应用在您的设备和 Google Play 商店中的名称。
和
源代码中用于引用 R 类和解析任何相关活动/服务注册的包仍称为“包”。
您可以在http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename上阅读更多内容