Android 图标包在系统层面是个摇摆不定的状态,一开始的支持似乎也并不是 Android 官方开始的,而是一批第三方的 Launcher 做出来的,后来 Android 自己开始跟进,如果查看 Launcher3 的原代码,你是可以看到有一些相关代码的。有趣的是,最近的几个版本(从 Android 10 开始)又开始不再对图标包予以支持了。
图标包的规范,似乎从来未曾明确(可以参考这篇文章),有的只是一种业界实践过程中的平衡。需要主动选择兼容哪些Launcher。总体上,图标包的特征可以总结为:1. 是一个可以安装的 apk 包;2. 包内有一个描述性的文件,其中有对所有图标资源的罗列;3. 另有一个描述文件 appfilter.xml,其中描述了图标资源与目标应用的对应关系。仅此而已,具体实现是多种多样的,本人曾见过一个图标包,其中的 xml 文件是原始文本格式而非编译过的 Android 资源格式。
上文提及的参考文章中提到过一个 Wiki,业已不存。另一个是图标包制作模板,也多年前即已不再维护,好在遗骸还在,可以略做参考。至于如何从图标包中加载图标,可以看一下这个帖子,事实上理解了组织结构,自己实现也不算困难。