项目 logo 张冠李戴:Tauri 的 src-tauri/icons 经常是兄弟项目的占位
给个人站搭项目墙,把本地几个 Tauri 桌面项目的 app 图标各拷一份当封面 logo。上线一看——一个茶主题的应用「拾叶」,封面赫然是另一个项目「Quay」的霓虹「Q」。
现象
- 从每个项目的
src-tauri/icons/icon-source-1024.png拷出来当 logo - 「拾叶」(云南/全国茶探索)的卡片,显示的却是「Quay」(开发命令码头)的品牌图标
- 项目本身的代码、名字、主题色都对,唯独图标是别的 app 的
新 Tauri 项目常从隔壁项目复制脚手架起步。如果某个项目从没设计过自己的图标,它的 src-tauri/icons/ 里就一直躺着当初拷进来的兄弟项目占位图标。你把它当 logo 用,就张冠李戴了。
根因
shiye/src-tauri/icons/icon-source-1024.png 和 quay/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/。
第三步,要是项目压根没有真图标,生成一个,别默默把错的品牌发出去。
最终图标的 hash 唯一(或只与该项目自己的候选稿一致),视觉核对一眼——主题对得上。
一句话外卖
Tauri 的
src-tauri/icons经常是从兄弟项目拷来的占位,拿它当 logo 会张冠李戴;用前先md5跨项目比对,真图标常藏在.icon-candidates/、.cache/这些草稿目录里。