返回博客

项目 logo 张冠李戴:Tauri 的 src-tauri/icons 经常是兄弟项目的占位

给个人站搭项目墙,把本地几个 Tauri 桌面项目的 app 图标各拷一份当封面 logo。上线一看——一个茶主题的应用「拾叶」,封面赫然是另一个项目「Quay」的霓虹「Q」。

现象

  • 从每个项目的 src-tauri/icons/icon-source-1024.png 拷出来当 logo
  • 「拾叶」(云南/全国茶探索)的卡片,显示的却是「Quay」(开发命令码头)的品牌图标
  • 项目本身的代码、名字、主题色都对,唯独图标是别的 app 的
坑:脚手架克隆自兄弟项目时,src-tauri/icons 会原样带过来占位

新 Tauri 项目常从隔壁项目复制脚手架起步。如果某个项目从没设计过自己的图标,它的 src-tauri/icons/ 里就一直躺着当初拷进来的兄弟项目占位图标。你把它当 logo 用,就张冠李戴了。

根因

shiye/src-tauri/icons/icon-source-1024.pngquay/src-tauri/icons/icon-source-1024.png 逐字节相同——拾叶的图标就是 Quay 的占位,从来没换过。

更阴的是:Tauri 在编译期把 icons/ 烤进二进制(tauri::generate_context!),所以占位图标能在打包好的 app 里跟着跑很久都没人发现——直到你把它单独拎出来放到别处展示。

一行 md5 就能照妖:

md5 -r */src-tauri/icons/icon-source-1024.png   # macOS
# 或:md5sum **/src-tauri/icons/icon-source-1024.png

任意两个项目共享同一个 hash → 至少有一个是占位。

正解

用图标前先哈希比对,再去项目里找真正的图标。

第一步,跨项目比对,揪出雷同:

md5 -r quay/.../icon-source-1024.png shiye/.../icon-source-1024.png glean/.../icon-source-1024.png
# shiye 与 quay 同 hash → shiye 用的是占位

第二步,对图标是占位的项目,别急着放弃——真正设计的图标往往不在 src-tauri/icons,而在 gitignore 的草稿目录里:

find "$proj" \( -ipath '*node_modules*' -o -ipath '*/vendor/*' \
  -o -ipath '*src-tauri/icons*' \) -prune -o \
  -type f \( -iname '*.png' -o -iname '*.svg' \) -print
# 重点看:scripts/.icon-candidates/、.cache/、assets/、public/

拾叶的真图标就躺在 scripts/.icon-candidates/c2.png(一片金线嫩芽,茶绿底)——选定稿还没被「提拔」进 src-tauri/icons/

第三步,要是项目压根没有真图标,生成一个,别默默把错的品牌发出去。

正解:md5 跨项目比对照妖,再去 .icon-candidates/.cache 找真稿

最终图标的 hash 唯一(或只与该项目自己的候选稿一致),视觉核对一眼——主题对得上。

一句话外卖

Tauri 的 src-tauri/icons 经常是从兄弟项目拷来的占位,拿它当 logo 会张冠李戴;用前先 md5 跨项目比对,真图标常藏在 .icon-candidates/.cache/ 这些草稿目录里。