Why use a dedicated export tool?
Android expects the same bitmap filename in five density-qualified folders under res/. Doing this manually in Figma or Photoshop means five exports per icon, strict naming rules, and easy mistakes — it is very common to accidentally skip hdpi or mislabel xhdpi as xxhdpi.
App Image Kit renders every scale from one canvas definition so dimensions stay mathematically consistent across buckets. There is no manual calculation, no separate export dialogue per density, and no post-export renaming. The ZIP structure mirrors exactly what Android Studio expects in app/src/main/res/.
If you need background on density buckets first, read What is DPI? and the drawable sizes reference.
Prerequisites
Before you begin, make sure you have:
- A source image at the highest density you intend to support. For a standard 48 dp launcher icon, you need a 192×192 px file (xxxhdpi, 4×).
- The file in PNG or WebP format with a transparent background (unless you want a solid colour behind the icon).
- Android Studio open with your project, so you can immediately verify the result after import.
You do not need to install App Image Kit. It runs entirely in your browser — open appimagekit.com and you are ready to go.
Step 1 — Prepare your source image
Design your icon at the xxxhdpi pixel size — that is 4× the dp size. For a standard 48 dp launcher icon, export a 192×192 px PNG from your design tool. Use a transparent background unless you intentionally want a coloured tile.
- Keep important artwork inside the central 66% safe zone if you later migrate to adaptive icons.
- Name the file meaningfully in your design tool — for example
ic_launcher. This name carries through to the ZIP output. - Avoid upscaling a low-resolution image; always start large and scale down. Upscaling produces blurry assets at higher density tiers.
| Density | Scale | Size for 48 dp icon | Size for 24 dp icon |
|---|---|---|---|
| mdpi | 1× | 48×48 px | 24×24 px |
| hdpi | 1.5× | 72×72 px | 36×36 px |
| xhdpi | 2× | 96×96 px | 48×48 px |
| xxhdpi | 3× | 144×144 px | 72×72 px |
| xxxhdpi | 4× | 192×192 px | 96×96 px |
Step 2 — Import and set canvas size
Open App Image Kit, upload your PNG, and select it in the sidebar. In the Adjust panel on the right, set the canvas to your mdpi (1×) dimensions — for a 48 dp icon, enter 48×48 for both width and height. Position and scale the artwork so it fills the preview the way you want on a device.
The canvas size is the baseline App Image Kit multiplies for hdpi (1.5×), xhdpi (2×), xxhdpi (3×), and xxxhdpi (4×). Setting it at mdpi means your output files will be exactly the right pixel sizes at every tier with no rounding errors.
Common mistake: Do not set the canvas to your source image pixel size (192×192 for a 192 px PNG). Set it to the mdpi / dp size (48×48). App Image Kit will upscale the canvas dimensions for higher-density outputs — not upscale a small source, which would produce blurry results.
Step 3 — Export as Android ZIP
- Check the image thumbnail checkbox for export (the checkbox to the left of the thumbnail in the sidebar).
- Click the Export button in the toolbar.
- In the export dialog, choose platform Android.
- Leave all five densities selected unless you intentionally target a subset of devices.
- Click Download ZIP to save
android-export.zip.
The archive contains:
drawable-mdpi/ic_launcher.png ← 48×48 px drawable-hdpi/ic_launcher.png ← 72×72 px drawable-xhdpi/ic_launcher.png ← 96×96 px drawable-xxhdpi/ic_launcher.png ← 144×144 px drawable-xxxhdpi/ic_launcher.png ← 192×192 px
Step 4 — Import into Android Studio
Unzip android-export.zip and copy the drawable-* folders into app/src/main/res/, merging with existing directories. Android Studio picks up the new files on project sync (File → Sync Project with Gradle Files).
For launcher icons, Android expects them in mipmap-* folders rather than drawable-*. Before copying the files, rename each folder from drawable-mdpi to mipmap-mdpi, and so on for all five density tiers. See the mipmap vs drawable guide for an explanation of why launcher icons use mipmap folders.
After importing, run the app on an emulator. Use the AVD Manager to create devices at different API levels and screen densities (a Nexus 5 at xhdpi and a Pixel 9 at xxxhdpi are a good starting pair) to verify that the icon appears crisp on both.
Common mistakes and how to avoid them
Setting the canvas to source pixel size instead of dp size
The canvas represents your mdpi (1×) baseline in dp. For a 48 dp icon, set 48×48 — not 192×192. App Image Kit multiplies up from this value.
Forgetting to rename the sidebar label before export
The filename in the sidebar becomes the asset name inside the ZIP (e.g. "image1" → "image1.png" in every folder). Rename it to the final resource name like "ic_launcher" before clicking Export.
Placing launcher icons in drawable/ instead of mipmap/
If your manifest references @mipmap/ic_launcher, the icon must be in mipmap-* folders. Rename the folders after unzipping, or Android Studio will silently not find the correct asset.
Starting from a low-resolution source image
Upscaling a 48×48 source to produce a 192×192 xxxhdpi variant adds no detail and produces blurry output. Always design at the highest density size and scale down.
Not testing on multiple emulator densities
A quick visual check on an mdpi and an xxxhdpi emulator catches density mismatches before shipping. One minute of testing can save hours of debugging layout issues on user devices.
Batch exporting multiple icons at once
If your app has many icons — action bar icons, bottom navigation icons, notification icons — you can upload all of them to App Image Kit in a single session. Drag and drop the entire folder of source PNGs into the upload area. Each file appears as a separate entry in the sidebar.
Adjust the canvas size and background settings for each image individually, then check all the thumbnails for export using the master checkbox at the top of the sidebar. One click on Export generates all density variants for all selected images and packages them into a single ZIP with the correct folder structure.
This is especially useful when preparing a full icon set at the start of a project or when updating a set of branding assets. See the dedicated guide on batch-exporting a full icon set for a complete walkthrough.
Verifying your export in Android Studio
After importing the density folders into your project, use Android Studio's built-in resource viewer to confirm that every density variant is present and correctly sized:
- Open the Resource Manager panel (View → Tool Windows → Resource Manager).
- Switch to the Drawable or Mipmap tab depending on where you placed the files.
- Click the icon asset. The panel should show five density variants side-by-side.
- Hover over each variant to confirm the pixel dimensions match the expected values.
If any variant is missing, Android will silently fall back to a neighbour density and scale at runtime, which wastes memory on lower-density devices. It is worth spending a minute to confirm the full set is in place.
Next steps
For adaptive launcher icons with separate foreground and background layers, see Android adaptive icons. For many icons at once, follow batch export for a full icon set. If you need Nine-Patch drawables for stretchable button backgrounds, see the Nine-Patch workflow guide.
Ready to export your assets?
App Image Kit generates all density variants from a single source image — free, private, and instant.