跳到正文

给荣耀手机自定义一套线条图标主题

不知道有没有人像我一样,喜欢极简的风格,而手机上花花绿绿的图标让人看起来很是混乱。

好在 Android 往往提供图标自定义功能,我们可以选择第三方图标库来替换掉默认的。但这些图标库往往不能覆盖所有应用,这就导致有些应用图标还是原来的彩色样式。另外就是商店里的图标库不一定满足自己的想法,有的太小,有的太大。针对这个场景,我开始自己研究做一个图标库。

我想保留荣耀自带的桌面,就找了一套现成的线条图标打底,再给常用应用补图。图稿按 Android 包名导成 PNG,最后打成荣耀主题能单独应用的 .hnt 图标包。

先选一套线条图库

找素材时,我主要看了下面四个地方。

图标资源 有什么图
Arcticons 细线风格的 Android 图标包,有 SVG 原图和应用包名映射。
Lawnicons Lawnchair 的 Android 图标包,也提供 SVG 和应用映射,线条更粗一些。
IconPark 通用图标库,里面有一些品牌图标,适合单独找某个标识。
Iconfont 可以按应用名或品牌名搜索作者上传的图稿,样式和许可要看具体条目。

先拿微信和支付宝这些熟悉的图标对比一下。放在一样大的画布上,Arcticons 的微信气泡用的是细线,Lawnicons 的线条更粗,气泡里的小圆点也是实心的。支付宝的「支」字同样看得出这个差别。我更喜欢 Arcticons 这种细一点的线条。想看 Lawnicons 的具体描边规格,可以翻它的 图标绘制规范。

微信、支付宝、QQ、淘宝、京东和小红书的图稿对照,每组左侧 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。

  1. 解压下载的 ZIP,把里面的 .hnt 复制到手机内部存储的 Honor/Themes/。压缩包里的源码 ZIP 可以留着,手机上只需要 .hnt。
  2. 完全退出并重新打开荣耀主题 App,在「我的下载」的图标资源里选中「Arcticons 白线 60% · 常用应用」并应用。
  3. 回到桌面,看看微信这类常用应用有没有换成白线图标。

要是在「我的下载」里找不到包,先检查目录和 .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,在原文件里改数值即可。

同一 PNG 画布中 75% 与 60% 的图形大小对照

图里的细线稿是让 Codex 对照品牌标识和已有 SVG 直接重画路径。比如脉脉,原先沿字形的外轮廓描,线条一挨近就显得重。沿笔画中心重画后,月字旁和右边的短横还在,字里面也有了空隙。33IQ 则把双弧和开口方框画细,保留了实心的眼点和右下角的小方块。

图稿以 48×48 视口、1.2 单位的 SVG 描边为参考。前后两稿都用同一个渲染器,画布和 60% 的缩放也相同。想用 Agent 改自己的图标,可以参考这段SVG 改稿提示词弹窗。

脉脉、33IQ、下厨房和邮储银行的细线稿修改前后对照,均按 60% 缩放

从原始图标补一张线稿

自己补图时,我一般先找应用平时用的标识。比如天猫的商店图如果带双十一横幅,可以找之前用的猫头和字标。手边只有彩色 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 的包名对照

打开原文件 library-comparison.json

统计固定在 Arcticons 15.3.2 和 Lawnicons 2.19.0,按完整包名核对 312 项应用。对照页可按名称或包名筛选,也可查看关联到通用替代图稿的条目。

打开 312 项图稿对照

用 Agent 绘制或调整 SVG 线稿
请根据应用的常驻品牌图标画一份白色 SVG 线稿。有旧稿时,参考它的构图和需要改进的细节。

输入
- 原始品牌图标:<图片路径或官方来源>
- 当前图稿(可选):<现有 SVG 路径,没有就留空>
- 参考线宽:<主题中一张看起来合适的 SVG 路径>

先看原图,找出认这个图标时会看哪些轮廓、笔画、空隙和小实心点。有旧稿时,对照一下它保留了哪些特征。原图有节日横幅或渠道角标时,先找同一产品的常驻标识。

保留原构图和必要细节。外轮廓叠在一起显得粗时,沿实际笔画的中心重新画路径。白线用 fill="none" 和 stroke="#fff",在 viewBox="0 0 48 48" 下先试 stroke-width="1.2",端点和连接处用圆角。眼点等识别细节可保留实心。字标保留正确的笔画和内孔,普通文字可排版后转成路径。

输出自包含 SVG,字形和图形都保存在文件里。先另存新稿,用项目渲染器导出 192×192 透明 PNG,缩放设为 60%。把原图和新稿并排摆放,有旧稿也按同样的尺寸放进去,分别看放大细节和桌面尺寸。说明保留了哪些特征,哪里还需要核对,等我选定后再更新图稿和包名映射。