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

是否包含自动重构?

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


当前回答

例如,如果您希望将包从com.example.a更改为com.example.b

1) 将项目样式文件夹从android更改为package(在项目端)

2) 右键单击文件夹顶部,然后单击路径中的替换

3) “在项目中选择”按钮

4) 在第一输入write com.example.a

5) 在第二输入中写入com.example.b

6) 当您看到警告时,选择“全部替换”以替换值

完成替换后,您可以看到您的包名为com.example.b

其他回答

我也很难更改项目的包名。特别是大型项目。有很多事情要做,但这些工作真的很无聊。我一直在IntelliJ IDEA和Android Studio上开发插件。它将帮助您自动更改软件包名称。它叫做Android软件包重命名器

安装

使用IDE内置插件系统:设置/首选项>插件>市场>搜索“Android软件包重命名器”>安装插件手动:下载最新版本并使用手动安装设置/首选项>插件>⚙️ > 从磁盘安装插件。。。

用法

打开项目。单击->文件->重命名包输入要更改的程序包。单击“确定”。将项目与渐变文件同步或使缓存无效

如果此插件对您有帮助或有错误,请通过以下[GitHub]与我联系(

在Android Studio中更改包名的3种方法

我想这是一个新的。我试过了,效果很好。如果上述方法不适用于您。试试这个。在我上面提到的网站上,还有两种其他的图像教程方法。我也检查了一下。

首先,我将讨论更改包名称。在本例中,我们将包名“com.androidride.myapplication”更改为“info.xyz.yourapplication”。

右键单击要更改的包名称,然后选择Refactor->Move。此时会出现一个新对话框,选择将包“com.androidride.myapplication”移动到另一个包,然后单击“确定”。出现警告对话框,单击yes。在新对话框中输入新包名称。但只有“info.xyz”离开你的应用程序。现在,您将看到一个警告对话框,显示Package info.xyz不存在。是否要创建它?单击yes。单击“Do Refactor”。现在,您的包名已更改为info.xyz.myapplication。右键单击info.xyz.myapplication和Refactor->Rename。单击重命名包。重命名对话框:将myapplication更改为您的应用程序。单击Do refactor。删除旧的包名目录并更改build.gradle中的应用程序id,将其更改为info.xyz.yourapplication。这就是全部。

打开文件:应用程序→ 舱单→ AndroidManifest.xml突出显示要修改的包名称中的每个部分(不要突出显示整个包名称),然后:鼠标右键单击→ 重构(Refactor)→ 重命名→ 重命名程序包键入新名称并按(Refactor)在包名称的每个部分执行这些步骤。打开(Gradle脚本)>>(build.Gradle(Modul:app))并将applicationId更新为包名打开菜单(构建)并选择(重建项目)。

快速简便的方法,分为3个步骤:

1-打开MainActivity或任何其他java或Kotlin文件。

顶部有包装声明,如:

包com.example.myapp;

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

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

2-打开AndroidManifest.xml,并在<manifest>标记内将包更改为所需的包名称。

3-打开build.gradle(模块:app)并将applicationId更改为所需的包名。

接受的答案对我不起作用。这里有一个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

蟒蛇3要点