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

是否包含自动重构?

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


当前回答

我没有看到任何人指出这一点,这就是为什么我要写这个答案。我会把这个答案添加为评论,因为它真的不应该是一个答案,但我在Stackoverflow上没有足够的信誉点来留下评论。

我想将我的包名从com.param.myapp更改为com.pvs.myapp。我在互联网上遵循了每一个解决方案,但忘记将android块build.gradle(:app)中的命名空间“com.param.miapp”更改为“com.pvs.myapp”。我不确定名称空间行是否需要存在,但它给了我错误。AndroidStudio使用旧包名生成类。

记住要检查一下!

其他回答

ctrl+Shift+R一直对我有效。只需替换所有文件并选择所有文件。

我没有看到任何人指出这一点,这就是为什么我要写这个答案。我会把这个答案添加为评论,因为它真的不应该是一个答案,但我在Stackoverflow上没有足够的信誉点来留下评论。

我想将我的包名从com.param.myapp更改为com.pvs.myapp。我在互联网上遵循了每一个解决方案,但忘记将android块build.gradle(:app)中的命名空间“com.param.miapp”更改为“com.pvs.myapp”。我不确定名称空间行是否需要存在,但它给了我错误。AndroidStudio使用旧包名生成类。

记住要检查一下!

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

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

顶部有包装声明,如:

包com.example.myapp;

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

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

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

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

对我来说会很好的

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 

试试看会奏效的

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