https://github.com/ansgrb/iconsync
A Gradle plugin to automatically sync Android launcher icons to the iOS part of a Kotlin Multiplatform project.
https://github.com/ansgrb/iconsync
gradle-plugin kmp kotlin
Last synced: 9 months ago
JSON representation
A Gradle plugin to automatically sync Android launcher icons to the iOS part of a Kotlin Multiplatform project.
- Host: GitHub
- URL: https://github.com/ansgrb/iconsync
- Owner: ansgrb
- Created: 2025-07-05T14:34:59.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-06T08:28:50.000Z (about 1 year ago)
- Last Synced: 2025-07-06T09:30:55.264Z (about 1 year ago)
- Topics: gradle-plugin, kmp, kotlin
- Language: Kotlin
- Homepage: https://central.sonatype.com/artifact/io.github.ansgrb/iconsync
- Size: 696 KB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# KMP iOS IconSync Plugin
[](https://search.maven.org/artifact/io.github.ansgrb/iconsync)
[](https://www.apache.org/licenses/LICENSE-2.0)
A simple Gradle plugin that automates the generation of iOS app icons from your Android launcher icons in a Kotlin
Multiplatform project.
Say goodbye to opening Xcode just to update your app icons! This plugin uses your high-resolution Android launcher icon
as a single source of truth, creating and placing all the required iOS icons and the necessary `Contents.json` file
directly into your iOS project directory.
## Features
* **Single Source:** Uses your existing Android `ic_launcher` icon.
* **Fully Automated:** Generates all required icon sizes for iOS, from the smallest 20pt icon to the 1024pt marketing
icon.
* **Xcode Ready:** Creates the `Contents.json` manifest file required by Xcode.
* **Effortless:** Avoids the tedious manual process of resizing and dragging icons into the asset catalog.
---
## How to Use
Follow these simple steps to get up and running.
### Step 1: Create Your Android Launcher Icon
This plugin uses the standard Android launcher icon as its source.
1. In Android Studio, open the **Resource Manager** panel.
2. Click the plus sign **Add resources to the module** button.
3. Select **Image Asset** from the drop menu.
4. In the **Configure Image Asset** windows, configure your app's icon.

**Important:** For best results, use a high-resolution source image (at least **1024x1024 pixels**). The plugin needs
this to generate the largest iOS marketing icon. The plugin will automatically find the highest quality
`ic_launcher.webp` or `ic_launcher_foreground.webp` from your `mipmap-` directories.
### Step 2: Apply the Plugin
In your project's root `build.gradle.kts` file, add the plugin to your `plugins` block:
```kotlin
// build.gradle.kts
plugins {
// ... other plugins
id("io.github.ansgrb.iconsync") version "1.0.1"
}
```
### Step 3: Run the Sync Task
That's it for setup! Now, just run the `iconsync` task from your terminal.
```bash
./gradlew iconsync
```
The plugin will execute the following steps:
* Find the best-quality Android icon.
* Generate all necessary iOS icon sizes as PNG files.
* Place the generated icons and a `Contents.json` file into the `iosApp/iosApp/Assets.xcassets/AppIcon.appiconset`
directory.
You're done! The next time you build your project in Xcode, your new icons will be there.
---
## Configuration (Optional)
The plugin works out-of-the-box for standard KMP project structures. If your directory names are different, you can
easily configure the input and output paths.
Add the following to your root `build.gradle.kts` to override the default paths:
```kotlin
// build.gradle.kts
tasks.withType {
// Path to the directory containing your mipmap-* folders
androidResDir.set(project.file("composeApp/src/androidMain/res"))
// Path to the iOS AppIcon.appiconset directory
iosAssetsDir.set(project.file("iosApp/iosApp/Assets.xcassets/AppIcon.appiconset"))
}
```
---
## License
This plugin is licensed under the Apache License, Version 2.0. You can find the full license
text [here](https://www.apache.org/licenses/LICENSE-2.0.txt).