运行Android项目App后代码文件变为无效字符,求技术解决方案
解决XML/Java文件变成无效二进制字符的问题
嘿,你遇到的这个情况一看就不对劲——你贴出来的内容明显是Java编译后的.class字节码文件内容(能看到Code、LineNumberTable这类字节码特有的标识),说明你的源码文件(XML/Java)大概率被错误覆盖成了编译后的二进制文件。试试下面这些针对性的解决步骤:
先确认文件状态与编码
打开Android Studio,选中乱码的文件,看右下角的编码显示是不是项目默认的UTF-8(或者你之前用的编码)。如果编码不对,改成正确编码试试。另外可以右键文件→Open With→Hex Editor,如果看到大量非文本的十六进制值,那基本实锤文件被二进制内容覆盖了。优先恢复源码文件
- 如果你用了Git、SVN这类版本控制工具,直接从远程仓库拉取对应的XML/Java文件,这是最快捷的恢复方式。
- 没有版本控制也别急,Android Studio有本地历史记录功能:右键乱码文件所在的目录→
Local History→Show History,找到之前正常的版本,右键选择Revert就能恢复。
彻底清理缓存与构建目录
之前的Clean和Build可能没清理干净残留的错误文件,试试更彻底的操作:- 关闭Android Studio,删除项目根目录下的
.gradle、build文件夹,以及每个模块目录下的build文件夹。 - 重新打开AS,点击
File→Invalidate Caches...,勾选Invalidate and Restart,让AS彻底清理缓存并重启。
- 关闭Android Studio,删除项目根目录下的
排查构建脚本与依赖问题
有时候自定义Gradle任务或者第三方插件会误操作覆盖源码:- 检查项目和模块级的
build.gradle文件,看看有没有把编译后的.class文件复制到源码目录的奇怪任务。 - 你用到的
android/support/customview是旧版支持库,可能和当前AS版本不兼容,建议换成AndroidX对应的依赖(比如androidx.customview:customview:1.2.0),同步后再重新构建。
- 检查项目和模块级的
如果以上步骤都没用,那可能是磁盘文件系统出现了错误,试试扫描修复磁盘,或者把项目备份后重新克隆/拷贝到新的目录下。
内容的提问来源于stack exchange,提问作者Vimi SR Vimal
相关产品推荐
相关产品推荐

