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

是否包含自动重构?

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


当前回答

转到AndroidManifest.xml文件。将光标放在软件包名称中,如下所示。不要选择它,只需放置它。然后按Shift+F6,您将看到一个弹出窗口,如下所示。选择重命名包。输入新名称并选择Refactor。(注意:由于我的光标位于“something”上,因此只有something被重命名。)

完成了。

其他回答

包装有两个目的。一个是在Google Play商店中唯一识别您的应用程序。另一个是为构建项目时生成的R.java类命名包。您可以将第一个目的看作外部包,第二个目的看作内部包。假设您想更改外部包,以便在Play商店中进行识别,有一种方便的方法可以做到这一点。

在Android Studio中,

 choose File -> Project Structure -> Choose your app's module -> Click on the 
 Flavors tab -> change the Application id.

现在,当您构建项目时,您的APK和清单将使用此新的包名称。

在使用这些技术之一重命名包之后,可能会开始看到错误。

如果/当你的R.java没有正确生成时,你会在项目中收到很多错误,比如错误:找不到符号类R,以及错误:包R不存在。

记住检查应用程序清单xml。清单包名称必须与实际包名称匹配。R.java似乎是从应用程序清单生成的,如果不匹配,可能会导致这些错误。

记住检查<manifestpackage=“com.yourcompany.coolapp”>中的package属性匹配

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

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

例如,如果要将com.example.app更改为my.awesome.game,则:

在项目面板中,单击小齿轮图标()取消选中“压缩空中间包”选项您的程序包目录现在将被分解为单独的目录单独选择要重命名的每个目录,然后:

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

现在打开Gradle Build文件(Build.Gradle-通常是应用程序或手机)。如果尚未自动更新,请将defaultConfig中的applicationId更新为新的Package Name和Sync Gradle:您可能需要更改清单中的package=属性。清洁并重建。完成!无论如何,Android Studio需要让这个过程简单一点。

这对我来说非常有效,即使是更改所有相关模块中的引用,也可以更改我想在包中修改的文件夹名称,但对我来说,只有完全按照以下步骤操作,这才有效:

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