在macOS应用上使用液态玻璃图标保姆级教程
序言
2025年苹果发布了macOS Tahoe,引入了新的液态玻璃设计,同时也对图标进行了升级,可以进行更多的自定义,但是对于非Xcode项目而言,要成功应用这一套新的图标有不少阻碍,本文介绍一种方案,可以帮助大部分非Xcode项目在macOS上也可以用上液态玻璃图标。
原理
这里使用一个流程图进行表示macOS 26+系统的图标获取过程(请启用JS,加载它需要一点时间,并且内容可能会有点不严谨)
graph TD
A["请求图标"] -- "读取Info.plist" --> n1@{ label: "Info.plist是否存在CFBundleIconName" }
n1 -- 是 --> C{"是否存在Assets.car"}
n1 -- 否 --> n3@{ label: "Info.plist是否存在CFBundleIconFile" }
n3 -- 是 --> n4["是否存在<br />指定的icns"]
n3 -- 否 --> n2[/"加载占位图标"/]
n4 -- 否 --> n2
n4 -- 是 --> E[/"加载icns"/]
C -- 是 --> n5["是否可以按照<br />Info.plist数据获取图标"]
n5 -- 是 --> D[/"加载Assets.car数据,<br />合成液态玻璃图标"/]
C -- 否 --> n3
n5 -- 否 --> n3
可以看到,要实现液态玻璃图标,关键在于Assets.car
文件,.icns
图标与Assets.car
中的图标互不冲突
开始
准备
- 耐心(毕竟各种奇奇怪怪的情况总会意外阻止你前进,被迫重新开始)
- 白苹果Mac(Windows下的虚拟机会异常卡顿,并且还有概率会引发Kernel Panic导致重头再来,另外生成液态玻璃图标必须使用完整的Xcode,单纯的Xcode命令行工具无法完成,更卡)
- macOS 26及更新版本(在macOS 15没有成功,可能是不支持,即便Xcode 26和Icon Composer均可以运行在macOS 15上)
- Xcode 26及更新版本 + macOS 26 SDK及更新SDK
- Icon Composer(WWDC 2025版本,用于制作液态玻璃图标,如果愿意也可以手搓不用它,这里不进行讲解)
须知
- 如果你的项目已经包含了
Assets.car
,您可以取其中一部分参考,这里默认认为你没有Assets.car
- 使用液态玻璃图标的硬性要求是App Bundle,这也代表着Java JAR或者Unix可执行文件不进行打包无法使用液态玻璃图标
- 如果软件在使用过程中会使用已有资源替代Dock上的图标,那么在Dock中你所创建的图标会被替代
过程
1. 创建一个液态玻璃图标
使用您下载的Icon Composer创建一个液态玻璃图标,这里不详细描述,若有需要,请查阅以下网站:
注意,如果你希望分发保存的项目,请别忘记先压缩一下,
.icon
为后缀的文件本质上也是一个文件夹!
2. 新建Xcode项目
创建新项目,模板请选择”App”
然后的Xcode会要求你提供软件的名称,随便填写,组织对于第一次使用的用户而言随便填写一个即可,其他图方便均选”None”即可
如果你想探索一下在macOS 15上处理的可行性(毕竟是不是真的无法生成我也拿不准),可能会多出两个选项:”Interface”和”Language”
对于这两个选项,我个人建议分别选用”SwiftUI”和”Swift”,就像图中那样,毕竟macOS 26虽然不可见但默认选择的就是这么一套
至此,你已经成功完成了项目的创建!
3. 引入并提取图标
请先把.icon
文件更名为AppIcon.icon
,不然依旧是占位图标:
直接将图标文件拖到文件树导入,弹出的提示窗口在确保唯一的项目是被选中的前提下点击Finish完成导入
直接运行然后退出,然后在顶栏选择”Product”->”Show Build Folder in Finder”,这将在访达中打开Debug构建所在位置
进入Debug目录,你会发现那个.app
文件正在静静地躺在那里
如果你遇到了在访达中看起来依旧在使用占位图标的问题,你可以在选中应用然后按下Space,打开Quicklook,在这里你可以确定它是否成功应用了你自己设计的新图标
至此,图标资源的生成工作已经完成!
现在右键这个程序,选择“显示包内容”,导航到/Contents/Resources
下,你所需要的两个文件就在这里了
把这两个文件复制出来,提取工作也告一段落
4. 应用新图标
现在到你所开发的软件这里,同样的打开包文件,定位到/Contents/Resources
下,将上面复制的文件替换进去(或者单一的Assets.car
)
我在前面提到,macOS 26+在读取过程中会使用Assets.car
中的文件合成液态玻璃图标,但我没提到这个.icns
文件是为了保证对老系统(macOS 15及更老版本)的兼容而保留的,所以如果你希望在这些老系统不要应用液态玻璃图标,上图中的AppIcon.icns
无需复制进来
然后需要做的就是让macOS认出来,用文本编辑器打开包中/Contents/Info.plist
(不太推荐使用Xcode,它会使用自然语言来解释那些晦涩的东西,虽然更容易看懂但是更加麻烦)
在dict
中添加…
1 |
|
保存后,现在你的应用的液态玻璃图标在macOS 26+应该可以被正确识别了!
如果你希望修改.icns
图标,你可以选择直接改名字去替换Resources
目录下已有的图标,或者把新图标放进去然后修改Info.plist
:
1 |
|
意为把App Bundle的图标更换为生成的AppIcon.icns
至此,一切大功告成,如果系统看起来没有更新图标,你可以选择重启一下设备~
附加
这个Assets.car里面有什么?
看图:
关于CI/CD
目前用命令行还没有研究出个所以然,我也不清楚该怎么办,您可以期待一下后来人的实现