Android icons are more complicated than one file. You ship a density ladder inside the app, adaptive layers that launchers reshape, and a separate icon for the Play Store with its own rules. Here is the whole set.
The launcher icon density ladder
Inside your app, the launcher icon ships at five densities, all based on a 48dp baseline:
- mdpi — 48 × 48 px (1×)
- hdpi — 72 × 72 px (1.5×)
- xhdpi — 96 × 96 px (2×)
- xxhdpi — 144 × 144 px (3×)
- xxxhdpi — 192 × 192 px (4×)
These live in res/mipmap-*/, not res/drawable-*/. The distinction matters: mipmap resources are kept even when a density is otherwise stripped from the build, because launchers may request a higher-density icon than the device itself.
Adaptive icons, and the safe zone that bites
Since Android 8.0, launchers composite two layers — a foreground and a background — and apply their own mask: circle, squircle, rounded square, teardrop, depending on the device.
Both layers are 108 × 108 dp. But only the central 72 × 72 dp is guaranteed to survive masking. The outer 18dp on each side is reserved for the mask and for parallax and scaling effects.
This is why a logo that fills the whole square gets its edges clipped on circular-mask launchers. Keep meaningful content inside the centre two-thirds, and let the background layer carry the colour to the edges.
The layers are wired up in res/mipmap-anydpi-v26/ic_launcher.xml:
<adaptive-icon>
<background android:drawable="@color/ic_launcher_background" />
<foreground android:drawable="@mipmap/ic_launcher_foreground" />
</adaptive-icon>
The Play Store icon is a different file
The 512 × 512 icon you upload in Play Console is not taken from your app. Its rules:
- 512 × 512 px, 32-bit PNG, under 1 MB.
- No alpha transparency. Play composites its own shape; a transparent background can render as black.
- No baked-in rounded corners or drop shadow. Play applies its own, and yours will show through as a double edge.
- Keep meaningful content away from the outer ~10% so shape masks do not clip it.
Upload errors and what they mean
- "Image has an alpha channel" — re-export flattened onto an opaque background.
- "File too large" — the 1 MB ceiling; run it through a PNG optimiser.
- "Wrong dimensions" — it is not exactly 512 × 512.
Design notes that survive scale
- One idea. At 48px on a home screen, a detailed illustration is mud. A single distinctive shape is not.
- Avoid text. Anything beyond one or two letters is unreadable at launcher size.
- Use solid shapes over thin strokes. A 2px stroke on a 192px canvas disappears at 48px.
- Check it on both light and dark wallpapers before committing.
The icon generator takes one square image and emits the full ladder, the round variants, adaptive foreground layers inset to the safe zone, the anydpi XML, and the flattened 512px Play icon — as a res/ folder you can drop straight into the project.