重启Android Studio后出现:app:processDebugResources执行失败错误
解决Android Studio重启后ButterKnife引发的编译错误
你遇到的这个问题,核心是ButterKnife插件在处理自动生成的R类时触发了解析异常。从错误提示和堆栈跟踪能看出来,问题的本质是你的资源文件里存在带减号("-")的命名——这种命名会导致生成的R类包含非法的Java标识符,直接让ButterKnife的解析器崩溃。
为什么之前正常现在报错?
之前运行正常大概率是因为Android Studio缓存了旧的合法R类,重启后缓存被清空,重新生成R类时,资源命名的问题就暴露出来了。Java的变量名(也就是R类里的资源字段名)不允许包含减号,一旦出现public static final int ic-my-btn = ...这种代码,ButterKnife解析时就会抛出"Found '-', expected '('"的错误。
具体解决步骤
- 排查非法资源命名:打开项目的
Project视图,进入res目录,逐个检查drawable、layout、values等文件夹下的资源文件,找出所有名称带减号的资源(比如ic-my-icon.png、activity-main.xml这类)。 - 修改资源名称:把这些资源里的减号全部替换成下划线("_"),比如
ic-my-icon.png改成ic_my_icon.png,activity-main.xml改成activity_main.xml。同时要同步修改代码中引用这些资源的地方(比如布局里的@drawable/ic-my-icon要改成@drawable/ic_my_icon)。 - 清理重建项目:点击顶部菜单栏的
Build→Clean Project,完成后再点击Rebuild Project,让Android Studio重新生成合法的R类。 - 极端情况处理:如果清理重建后还是报错,可以删除项目根目录下的
.gradle文件夹和app模块下的build文件夹,然后点击File→Sync Project with Gradle Files重新同步项目。
按照这些步骤操作后,应该就能顺利解决这个编译错误了。
内容的提问来源于stack exchange,提问作者Alireza
相关产品推荐
相关产品推荐

