一键导入
adaptive-icons
Android adaptive icons and iOS app icon light/dark/tinted modes. Use this when creating or revising app launcher icons.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Android adaptive icons and iOS app icon light/dark/tinted modes. Use this when creating or revising app launcher icons.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Cross-platform icon pipeline — SVG source, Android VectorDrawable, SF Symbols, Flutter/RN delivery, sizing, and parity. Use this when adding or refactoring the icon set.
Scalable, theme-aware illustrations for mobile — pipeline, tokenization, and platform delivery. Use this when authoring or shipping illustrations.
Structuring a cross-platform component library into primitives, patterns, and compositions with predictable folder layout and public API. Use this when starting or reorganizing a component library.
Slots, compound components, and headless primitives for flexible mobile component APIs. Use this when a component needs to serve many callers without becoming a grab-bag of props.
Modeling component variants as a closed matrix of size × intent × state, with explicit enums and slot APIs. Use this when designing or refactoring a component's public API.
Docs-as-code for design systems — Zeroheight, Storybook, DocC/DokkaHtml/dartdoc, and API reference. Use this when establishing or revising the documentation site.
| name | adaptive-icons |
| description | Android adaptive icons and iOS app icon light/dark/tinted modes. Use this when creating or revising app launcher icons. |
The launcher icon is the first brand impression and the most abused asset. Modern mobile platforms require adaptive formats: Android Adaptive Icons (API 26+) and iOS app icon light/dark/tinted (iOS 18+). Treat them as first-class design system deliverables.
An adaptive icon is two layers: background and foreground, each authored at 108×108dp with a visible safe zone of 66×66dp (the system applies a mask — circle, rounded square, squircle — within that zone).
File layout:
res/
├── mipmap-anydpi-v26/
│ ├── ic_launcher.xml
│ └── ic_launcher_round.xml
├── drawable/
│ ├── ic_launcher_background.xml # tint/gradient only
│ └── ic_launcher_foreground.xml # the mark
└── values/
└── ic_launcher_background.xml # brand color token
<!-- ic_launcher.xml -->
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_monochrome"/>
</adaptive-icon>
As of iOS 18, ship three renditions in the asset catalog:
AppIcon.appiconset/
├── Contents.json
├── AppIcon.light.png
├── AppIcon.dark.png
└── AppIcon.tinted.png # grayscale; system applies a monochrome tint
Contents.json declares three images keyed by appearances:
{
"images": [
{ "idiom": "universal", "platform": "ios", "size": "1024x1024",
"filename": "AppIcon.light.png" },
{ "idiom": "universal", "platform": "ios", "size": "1024x1024",
"filename": "AppIcon.dark.png",
"appearances": [{ "appearance": "luminosity", "value": "dark" }] },
{ "idiom": "universal", "platform": "ios", "size": "1024x1024",
"filename": "AppIcon.tinted.png",
"appearances": [{ "appearance": "luminosity", "value": "tinted" }] }
]
}
Rules:
Never author a PNG. Author one master SVG per variant (light/dark/monochrome), render deterministically.
# Example using resvg or rsvg-convert
rsvg-convert -w 1024 -h 1024 appicon.light.svg -o AppIcon.light.png
rsvg-convert -w 1024 -h 1024 appicon.dark.svg -o AppIcon.dark.png
rsvg-convert -w 1024 -h 1024 appicon.tinted.svg -o AppIcon.tinted.png
Android generation is easier — keep foreground/background as .xml VectorDrawables, no rasterization.
Modern splash = a scaled-down app icon on a brand background. Use the same foreground asset:
windowSplashScreenAnimatedIcon reads a drawable; point it at the adaptive icon foreground.color.surface.default or a brand color.Flutter apps still need per-platform assets. Use flutter_launcher_icons with separate config for Android adaptive and iOS variants:
flutter_launcher_icons:
image_path: "assets/appicon/master.png"
android: true
adaptive_icon_background: "#4F46E5"
adaptive_icon_foreground: "assets/appicon/foreground.png"
adaptive_icon_monochrome: "assets/appicon/monochrome.png"
ios: true
# iOS dark/tinted require manual Contents.json until the tool supports them natively.
RN does not abstract app icons — generate native assets and commit them in android/app/src/main/res/ and ios/<App>/Images.xcassets/AppIcon.appiconset/. Ship a script (scripts/appicons.ts) that re-runs the same SVG → PNG pipeline described above.
Every new icon must be verified at:
Snapshot all five in CI if you can.
@1x, auto-upscaled to 3x by the build — ships blurry.appearances metadata.