无法重命名资源(布局)文件(已安装 Android Studio 3.0 Beta 3)
Posted
技术标签:
【中文标题】无法重命名资源(布局)文件(已安装 Android Studio 3.0 Beta 3)【英文标题】:Can't rename resource (layout) files (Android Studio 3.0 Beta 3 is installed) 【发布时间】:2018-02-03 09:43:30 【问题描述】:Beta 3 不允许重命名资源文件,例如布局文件。它确实显示了重命名对话框,但在尝试应用更改时会显示以下错误消息:
Refactoring cannot be performed
File .../myapplication/R.java is read-only
我在邻居目录中也有 Beta 2 版本,重命名工作完美。任何想法如何解决这个问题?
统一更新: 我报告了这个错误(#65079508),现在它被标记为重复 65032914 https://issuetracker.google.com/issues/65032914
所以,这个问题更广泛,如果我理解得很好,这个错误将在 Studio 的一些即将发布的版本中得到修复。
UPD#2: Beta 4 已发布。该错误仍未修复。
UPD#3 已在 Beta 5 中修复。
【问题讨论】:
我从 Beta2 升级到 Beta3 后出现同样的问题,我也无法再从 AS 中删除目录或文件。 问题在这里打开:issuetracker.google.com/issues/65032914 - 请加注星标 ;-) 【参考方案1】:我也有同样的问题。 我解决了这个问题
文件 --> 使缓存无效并重新启动 --> 无效并重新启动。
然后再尝试重命名。
希望对您有所帮助。 快乐编码:)
【讨论】:
【参考方案2】:清洁并不适用于所有事情。例如,重命名视图是不可能的,因为 R.java 文件会自动重新生成。我尝试禁用 Instant Run,但这也无济于事。最终我不得不在布局文件中手动重命名视图。
来自https://issuetracker.google.com/issues/65032914 错误票证上的 cmets,修复将在 android Studio 的 beta 5 版本中。
【讨论】:
【参考方案3】:嗯,只需删除生成的文件 && 然后重构。
Gradle --> app --> build --> clean。
【讨论】:
清理构建文件夹确实允许重命名文件,但是没有 R.java 文件就无法进行重构 同意。如果 R 类不存在,则重构资源不起作用。完成 gradle clean 并重构(或重命名)您感兴趣的资源后,您必须重新构建项目。 仅供参考:通过重构,我的意思是转到允许您重命名资源的选项(在 Android Studio 中)⇧F6 (macOS)。问题是 Android Studio 测试版不允许重命名。 工作了,但清洗了三四次!无论如何工作!【参考方案4】:我可以通过将我的 R.java
文件移动到我的 src
目录来临时解决它。例如,如果您的包名称是 com.example.sample
,请将您的 R.java
文件从 app/build/generated/source/r/debug/com/example/sample/R.java
移动到 app/src/main/java/com/example/sample/R.java
。重构完成后一定要删除它,它会在构建过程中重新生成。
【讨论】:
【参考方案5】:我在 Android Studio 3.0 Beta 3 上遇到了同样的问题。我通过以下方式解决了这个问题:
-
退出 Android Studio
导航到保存布局文件的文件夹(CLI 或 GUI)
将文件重命名为您希望调用重构文件的任何名称。
重新打开 Android Studio。
显然,这迫使您必须手动重构对旧文件的引用,但我尝试了大约十几种不同的方法(更改 R.java 权限、Gradle 清理、无效缓存等),但都没有奏效。
遇到此问题的其他人应在 Android Studio 中使用帮助 > 提交反馈提交此错误。
另外,您是否也有可能像我一样使用multiple layouts folders?
【讨论】:
不,我不使用多个布局文件夹。感谢您的建议 - 我已经报告了错误 issuetracker.google.com/issues/65079508以上是关于无法重命名资源(布局)文件(已安装 Android Studio 3.0 Beta 3)的主要内容,如果未能解决你的问题,请参考以下文章
重命名布局元素的 ID 不会重命名 viewBinding 引用
Android studio 无法解析 ActionBarActivity