You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio 报已删除未引用资源resource not found错误

问题描述

替换Android OptionsMenu图标资源、删除旧测试图标后,AAPT编译报错提示找不到已删除的旧图标资源drawable/ic_baseline_pause_24,全局搜索无该资源引用,重启IDE、执行Invalidate Caches and Restart后问题仍存在,且修改图标后界面仍显示旧图标。

相关代码

MainActivity.java 菜单相关逻辑

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

    View view = findViewById(R.id.action_item_two);

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_item_one) {
        // Do thing one
        return true;
    }
    if (id == R.id.action_item_two) {
        // Do thing two
        return true;
    }

    return super.onOptionsItemSelected(item);
}

res/menu/main.xml 菜单配置

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_item_one"
        android:icon="@drawable/ic_help"
        app:showAsAction="always"
        android:title="Hilfe">
    </item>
    <item
        android:id="@+id/action_item_two"
        android:icon="@drawable/ic_forward_30_48px"
        app:showAsAction="always"
        android:title="Sekunden">
    </item>

</menu>

解决方案

按以下顺序排查,绝大多数同类缓存/残留引用问题都能解决:

  • 先做全量构建清理:点Android Studio顶部菜单栏的Build > Clean Project,执行完成后再点Build > Rebuild Project。别直接点运行按钮走增量构建,增量构建会复用之前编译好的中间资源,经常出现代码改了但打包进去的还是旧资源的情况。
  • 排查所有资源路径下的同名菜单文件:你当前查看的是主目录下的res/menu/main.xml,但如果项目开了多构建变体(debug、release、不同渠道包),或者有适配不同系统版本的资源目录(比如res/menu-v21/、src/debug/res/menu/这类路径),这些位置下的同名main.xml大概率还保留着旧的图标引用。报错提示问题在main.xml第4行,刚好和你贴的代码里第一个item的icon属性行位置对应,优先排查这类其他路径的同名文件。
  • 手动彻底清理本地缓存:关闭Android Studio,直接删除项目根目录下的.gradle、.idea文件夹,还有app模块里的build文件夹,删完再重新打开项目等Gradle同步完成后再构建。这步比点Invalidate Caches清理得彻底得多,能把IDE和构建工具存储的所有本地缓存都清掉。
  • 检查新图标有没有间接引用旧资源:如果你新替换的ic_help、ic_forward_30_48px是xml格式的矢量图,打开对应的资源文件,看看里面有没有写错属性引用到旧的ic_baseline_pause_24;如果是png、webp这类位图资源,确认文件名没拼写错误,存放在了有效的drawable目录下。
  • 清理设备端残留:如果编译通过但界面还是显示旧图标,先把模拟器或者真机上安装的旧版本应用彻底卸载,再安装新构建的安装包,避免系统拉取旧应用的缓存资源。

容易遗漏的点:如果项目有多个library模块,也要检查其他模块里有没有同名的main.xml菜单文件,或者同名drawable的引用冲突,资源合并阶段很容易把其他模块的旧引用带进来。


内容的提问来源于stack exchange,提问作者R D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 16:33:26