Android Studio中如何通过十六进制资源ID查找对应Drawable?
如何通过十六进制资源ID定位对应的Drawable
解析资源ID结构
Android的32位十六进制资源ID可拆分为三部分:- 前2位
0x7f:标记为应用私有资源(系统资源为0x01) - 中间2位
08:对应资源类型,这里正好是drawable类型的ID(不同类型对应不同数值,比如layout是0x03) - 最后4位
029f:该类型下的资源序号
- 前2位
从本地构建产物或APK中查找对应资源
- 若保留了发布版本的
R.txt文件(路径通常为app/build/intermediates/runtime_symbol_list/release/),直接搜索0x7f08029f,即可找到对应Drawable名称,格式示例:int drawable target_drawable_name 0x7f08029f - 若没有
R.txt,可解压发布版APK(将后缀改为.zip),在res/values/public.xml中搜索该十六进制ID,通过name属性获取Drawable名称
- 若保留了发布版本的
排查仅Nexus 5X(Android 8.1.0)出现问题的原因
Nexus 5X属于xxhdpi密度设备,可能的触发点:- 该Drawable仅存在于部分密度目录(如xxxhdpi),xxhdpi目录下缺失,且Android 8.1的资源 fallback 机制未正常生效
- 资源文件名包含特殊字符,或被R8等混淆工具误移除,仅在该系统版本下暴露问题
- 若使用矢量Drawable,需确认是否为Android 8.1配置了正确的兼容支持,避免兼容问题导致资源加载失败
内容的提问来源于stack exchange,提问作者Begmyrat Mammedov
相关产品推荐
相关产品推荐

