给荣耀手机自定义一套线条图标主题
不知道有没有人像我一样,喜欢极简的风格,而手机上花花绿绿的图标让人看起来很是混乱。
好在 Android 往往提供图标自定义功能,我们可以选择第三方图标库来替换掉默认的。但这些图标库往往不能覆盖所有应用,这就导致有些应用图标还是原来的彩色样式。另外就是商店里的图标库不一定满足自己的想法,有的太小,有的太大。针对这个场景,我开始自己研究做一个图标库。
我想保留荣耀自带的桌面,就找了一套现成的线条图标打底,再给常用应用补图。图稿按 Android 包名导成 PNG,最后打成荣耀主题能单独应用的 .hnt 图标包。
先选一套线条图库
找素材时,我主要看了下面四个地方。
| 图标资源 | 有什么图 |
|---|---|
| Arcticons | 细线风格的 Android 图标包,有 SVG 原图和应用包名映射。 |
| Lawnicons | Lawnchair 的 Android 图标包,也提供 SVG 和应用映射,线条更粗一些。 |
| IconPark | 通用图标库,里面有一些品牌图标,适合单独找某个标识。 |
| Iconfont | 可以按应用名或品牌名搜索作者上传的图稿,样式和许可要看具体条目。 |
先拿微信和支付宝这些熟悉的图标对比一下。放在一样大的画布上,Arcticons 的微信气泡用的是细线,Lawnicons 的线条更粗,气泡里的小圆点也是实心的。支付宝的「支」字同样看得出这个差别。我更喜欢 Arcticons 这种细一点的线条。想看 Lawnicons 的具体描边规格,可以翻它的 图标绘制规范。
![]()
我们再看一下这些图标库对常见应用的适配情况。我整理了一份 312 项应用清单,取了小米应用商店榜单的前三页、应用宝的流行榜和热门游戏榜、360 软件榜的前 90 项,也参考了 vivo 的常用应用专题和 App Store 中国免费榜里能找到 Android 对应产品的应用,最后手动补了一些常见的工作、金融和出行应用。清单按 Android 包名去重。
用这份清单核对原始映射,Arcticons 15.3.2 命中 149 项,Lawnicons 2.19.0 命中 105 项。有些包名对应的是通用替代图,点开看才知道是不是该应用自己的图标。完整结果见两库应用对照弹窗。
我最后用了 Arcticons 打底。遇到缺图时,先看看库里有没有同一品牌的线稿能借用,再去 Lawnicons、IconPark 或 Iconfont 找参考。比如百度极速版可以用百度的线稿,给极速版的包名单独加一条映射就行。
下载图标包并应用到手机
Arcticons 的 appfilter.xml 里记录了每张图对应的应用和桌面入口。我用它和自己补的映射生成了白线主题,图案居中放进 192×192 透明画布,大小设为 60%。想直接用这套图标,可以 下载荣耀图标包 v0.1.0。
- 解压下载的 ZIP,把里面的
.hnt复制到手机内部存储的Honor/Themes/。压缩包里的源码 ZIP 可以留着,手机上只需要.hnt。 - 完全退出并重新打开荣耀主题 App,在「我的下载」的图标资源里选中「Arcticons 白线 60% · 常用应用」并应用。
- 回到桌面,看看微信这类常用应用有没有换成白线图标。
要是在「我的下载」里找不到包,先检查目录和 .hnt 后缀。还可以把 荣耀独立图标样包 解压,取出里面的 .hnt 放到同一个目录试一下。如果样包能显示,自制包却没出现,就可以从导出类型和文件完整性查起。
其他手机的图标素材
如果手边是其他品牌的手机,也可以用这批线稿做自己的主题。下面的小米包里有一份静态图标 MTZ 小样,另外四个 ZIP 装的是图标素材和映射,解压后按里面的说明导入对应工具。它们按公开文档整理,手机上的应用效果还待核对。
| 下载 | 解压后怎么用 |
|---|---|
| 小米 / Redmi | ZIP 内有一份 168×168 静态图标 .mtz 小样,可以用小米主题编辑器打开。 |
| vivo / iQOO | 常用应用的四种尺寸 PNG,可以按包名在 i 主题的设计师工具里配图。 |
| OPPO / ColorOS | 192×192 PNG 和图标映射。按包名合并进 ColorOS 主题编辑器的 icons 模板。 |
| 华为 HarmonyOS 4.2 | 192×192 透明 PNG,可以在混搭 DIY 里逐个选图,也可以用作 Theme Studio 的素材。 |
| 华为 HarmonyOS 5 / 6 | 54 个第三方应用的 256×256 前景和背景,按鸿蒙应用包名分组,供对应版本的官方工具导入。 |
这些包默认使用前面那份 312 项常用应用清单。鸿蒙 5 和 6 的应用标识要另对一遍,那个 ZIP 收录的是已经对应到鸿蒙包名的应用。想换清单或调大小,可以从源码运行 pnpm platform:icons --platform all,只做某个品牌时把 all 换成对应的平台名。
想自己换图或调大小
如果只想换两三个图标,可以用荣耀主题制作工具。以微信为例,把线稿居中放在 192×192 的透明画布上,导出为 com.tencent.mm.png。文件名用的是 Android 包名。把 PNG 导入「图标」模块,生成预览图,导出时只勾选图标即可。具体按钮位置见 荣耀主题制作工具指南。
如果想在这套主题上继续补图,可以用我写的转换工具。首次下载图稿、构建和打包的命令见 GitHub 仓库的 README。跑通后,下面的操作都在项目根目录进行。
查包名,换成自己的图稿
主题应用后,桌面上可能还留着几个彩色图标。这时可以先查应用的包名。有些应用有多个桌面入口,还会看到对应的 Activity,也就是点图标后打开的入口。想一次查出手机上的缺口,可以按 ADB 指南连接并授权手机,等 adb devices 显示设备状态为 device。
运行 pnpm device:audit 后,打开 private/audit.json。missing 里是还没有映射的包名,旁边的 activities 是扫描到的桌面入口。如果应用已经换了图,只是图案不合适,可以在 outputs/mapping.json 里查它现在用的 drawable。
拿脉脉举例,把自己的线稿存成 data/overrides/icons/maimai.svg,再到 data/overrides/manifest.json 的 entries 里找到 com.taou.maimai,把 drawable 改成 maimai。如果原本没有这条包名,就新加一条。下面的 .MainActivity 是脉脉用过的入口,给其他应用配图时,填你查到的实际入口。
{
"label": "脉脉",
"package": "com.taou.maimai",
"drawable": "maimai",
"source": "local",
"activities": [".MainActivity"],
"status": "draft"
}
像百度极速版这样能直接借用上游图稿的应用,source 填 upstream,drawable 填 baidu,也就是 baidu.svg 去掉扩展名。两种补图都写在这份清单里,下次更新 Arcticons 时还能继续用。
调整留白和线宽
我用的是 60%,比 75% 那版多留了一点空。想调大小,可以改 theme.config.json 里的 artworkScale。
{
// 输出 PNG 的边长,单位是像素。这里保持 192×192 透明画布。
"canvasSize": 192,
// SVG 视口占画布的比例。0.6 表示居中缩放到画布中央的 60%。
// 图稿本身带有留白时,实际可见图形会比这块区域小。
"artworkScale": 0.6,
}
上面是带注释的字段节选。项目读取标准 JSON,在原文件里改数值即可。
图里的细线稿是让 Codex 对照品牌标识和已有 SVG 直接重画路径。比如脉脉,原先沿字形的外轮廓描,线条一挨近就显得重。沿笔画中心重画后,月字旁和右边的短横还在,字里面也有了空隙。33IQ 则把双弧和开口方框画细,保留了实心的眼点和右下角的小方块。
图稿以 48×48 视口、1.2 单位的 SVG 描边为参考。前后两稿都用同一个渲染器,画布和 60% 的缩放也相同。想用 Agent 改自己的图标,可以参考这段SVG 改稿提示词弹窗。
![]()
从原始图标补一张线稿
自己补图时,我一般先找应用平时用的标识。比如天猫的商店图如果带双十一横幅,可以找之前用的猫头和字标。手边只有彩色 App 图标时,也可以用上面的提示词,让 Codex 对照原图画一张 SVG,「当前图稿」留空就行。
手边没有 Agent,也可以用 Iconfont。我给个人主题补图时,用它的 AI 工作台生成过一批图标,有些保留了原标识的轮廓,稍作调整就能用。打开 Iconfont 首页,点「AI 生成图标」进入万相营造工作台,选「从图片生成」,上传原始图标,风格选「纤巧线性」。挑一张还能认出品牌的,导出 SVG。
我在 2026 年 11 月试用时,新账号的工作台显示有 500 积分,页面上叫「算力」,图生图当时每张用 3 算力。现在想试的话,可以先看看登录后的余额和生成按钮旁标的消耗。
SVG 里有文字的话,可以在导出时把字形转成路径,避免换台电脑后因为缺字体变样。把选好的 SVG 加进映射后,运行 pnpm icons:preview,打开 outputs/icon-preview.html 放大看看有没有丢笔画,再看桌面大小下还能不能认出来。
重新打包
改完后运行 pnpm theme,把新包复制到手机,再应用一次。想同时留着两个版本对比,打包前可以给 title 和 outputName 换个好认的名字,分别用作主题 App 的显示名称和导出文件名。也可以用 pnpm catalog:audit 核对项目清单里哪些包名有映射,再用 pnpm device:audit 查自己手机上的应用。
想更新图库时,可以先用 pnpm upstream:check 看有没有新版本,确定后再运行 pnpm upstream:update --ref main,也可以把 main 换成指定提交。更新报告的 shadowedOverrides 会列出上游也开始支持的包名,可以打开两份图稿,选自己更喜欢的一张。
Arcticons 与 Lawnicons 的包名对照
统计固定在 Arcticons 15.3.2 和 Lawnicons 2.19.0,按完整包名核对 312 项应用。对照页可按名称或包名筛选,也可查看关联到通用替代图稿的条目。
用 Agent 绘制或调整 SVG 线稿
请根据应用的常驻品牌图标画一份白色 SVG 线稿。有旧稿时,参考它的构图和需要改进的细节。
输入
- 原始品牌图标:<图片路径或官方来源>
- 当前图稿(可选):<现有 SVG 路径,没有就留空>
- 参考线宽:<主题中一张看起来合适的 SVG 路径>
先看原图,找出认这个图标时会看哪些轮廓、笔画、空隙和小实心点。有旧稿时,对照一下它保留了哪些特征。原图有节日横幅或渠道角标时,先找同一产品的常驻标识。
保留原构图和必要细节。外轮廓叠在一起显得粗时,沿实际笔画的中心重新画路径。白线用 fill="none" 和 stroke="#fff",在 viewBox="0 0 48 48" 下先试 stroke-width="1.2",端点和连接处用圆角。眼点等识别细节可保留实心。字标保留正确的笔画和内孔,普通文字可排版后转成路径。
输出自包含 SVG,字形和图形都保存在文件里。先另存新稿,用项目渲染器导出 192×192 透明 PNG,缩放设为 60%。把原图和新稿并排摆放,有旧稿也按同样的尺寸放进去,分别看放大细节和桌面尺寸。说明保留了哪些特征,哪里还需要核对,等我选定后再更新图稿和包名映射。