重命名 Android 包名称 IOException

问题描述

我正在尝试解决无效的包名称,目前我的包看起来像这样:

-com

--域

---应用

----域名

所以包名是 com.domain.app.domain

它必须是 com.domain.app,我试图将 ----domain 的内容移动到 ---app 中,但我收到 IOException 并被告知某些目录无法移动?

我首先收到警告多个目录对应于包,这些目录将被移动并更改所有引用,我选择“是”,然后我选择重构,我看到重构预览,我选择做重构,我得到 java.io .IOException: 无法移动“以及对此处第一个目录的引用”。

如果我无法移动文件删除包,我还能如何解决这个问题?

解决方法

我认为您会发现手动移动它们并使用“在文件中查找/替换”工具替换包名称会更快/更简单:

  1. 使用文件管理器/资源管理器将 com/domain/app/domain 的内容移动到 com/domain/app 并删除现在为空的“域”叶目录

  2. 使用文件中的查找/替换功能(在任何像样的文本编辑器中)来替换 'package com.domain.app.domain' 和 'package com.domain.app' 在所有源文件中。

  3. 更改 app/build.gradle 和 AndroidManifest.xml 中的 applicationId(如果您愿意 - 它们不需要与源中的实际包名称相同)

  4. 回到你真正想做的事情上......

我一直发现在 AS 中进行重构比它的价值更麻烦。