{"id":29557681,"url":"https://github.com/ansgrb/iconsync","last_synced_at":"2025-10-25T07:20:28.108Z","repository":{"id":303194670,"uuid":"1014344569","full_name":"ansgrb/iconsync","owner":"ansgrb","description":"A Gradle plugin to automatically sync Android launcher icons to the iOS part of a Kotlin Multiplatform project.","archived":false,"fork":false,"pushed_at":"2025-07-06T08:28:50.000Z","size":713,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-06T09:30:55.264Z","etag":null,"topics":["gradle-plugin","kmp","kotlin"],"latest_commit_sha":null,"homepage":"https://central.sonatype.com/artifact/io.github.ansgrb/iconsync","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ansgrb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-05T14:34:59.000Z","updated_at":"2025-07-06T08:28:53.000Z","dependencies_parsed_at":"2025-07-06T09:30:57.352Z","dependency_job_id":"0c808eea-5594-4f16-ba94-d1a4697cd7b0","html_url":"https://github.com/ansgrb/iconsync","commit_stats":null,"previous_names":["ansgrb/iconsync"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ansgrb/iconsync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansgrb%2Ficonsync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansgrb%2Ficonsync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansgrb%2Ficonsync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansgrb%2Ficonsync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ansgrb","download_url":"https://codeload.github.com/ansgrb/iconsync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ansgrb%2Ficonsync/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265748175,"owners_count":23822060,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gradle-plugin","kmp","kotlin"],"created_at":"2025-07-18T11:16:07.145Z","updated_at":"2025-10-25T07:20:28.028Z","avatar_url":"https://github.com/ansgrb.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# KMP iOS IconSync Plugin\n\n[![Maven Central](https://img.shields.io/maven-central/v/io.github.ansgrb/iconsync?style=for-the-badge)](https://search.maven.org/artifact/io.github.ansgrb/iconsync)\n[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg?style=for-the-badge)](https://www.apache.org/licenses/LICENSE-2.0)\n\nA simple Gradle plugin that automates the generation of iOS app icons from your Android launcher icons in a Kotlin\nMultiplatform project.\n\nSay goodbye to opening Xcode just to update your app icons! This plugin uses your high-resolution Android launcher icon\nas a single source of truth, creating and placing all the required iOS icons and the necessary `Contents.json` file\ndirectly into your iOS project directory.\n\n## Features\n\n* **Single Source:** Uses your existing Android `ic_launcher` icon.\n* **Fully Automated:** Generates all required icon sizes for iOS, from the smallest 20pt icon to the 1024pt marketing\n  icon.\n* **Xcode Ready:** Creates the `Contents.json` manifest file required by Xcode.\n* **Effortless:** Avoids the tedious manual process of resizing and dragging icons into the asset catalog.\n\n---\n\n## How to Use\n\nFollow these simple steps to get up and running.\n\n### Step 1: Create Your Android Launcher Icon\n\nThis plugin uses the standard Android launcher icon as its source.\n\n1. In Android Studio, open the **Resource Manager** panel.\n2. Click the plus sign **Add resources to the module** button.\n3. Select **Image Asset** from the drop menu. \n4. In the **Configure Image Asset** windows, configure your app's icon.\n\n   ![Asset Studio Screenshot](docs/new-image-asset-studio.png)\n   **Important:** For best results, use a high-resolution source image (at least **1024x1024 pixels**). The plugin needs\n   this to generate the largest iOS marketing icon. The plugin will automatically find the highest quality\n   `ic_launcher.webp` or `ic_launcher_foreground.webp` from your `mipmap-` directories.\n\n### Step 2: Apply the Plugin\n\nIn your project's root `build.gradle.kts` file, add the plugin to your `plugins` block:\n\n```kotlin\n// build.gradle.kts\n\nplugins {\n\t// ... other plugins\n\tid(\"io.github.ansgrb.iconsync\") version \"1.0.1\"\n}\n```\n\n### Step 3: Run the Sync Task\n\nThat's it for setup! Now, just run the `iconsync` task from your terminal.\n\n```bash\n\n./gradlew iconsync\n\n```\n\nThe plugin will execute the following steps:\n\n* Find the best-quality Android icon.\n* Generate all necessary iOS icon sizes as PNG files.\n* Place the generated icons and a `Contents.json` file into the `iosApp/iosApp/Assets.xcassets/AppIcon.appiconset`\n  directory.\n\nYou're done! The next time you build your project in Xcode, your new icons will be there.\n\n---\n\n## Configuration (Optional)\n\nThe plugin works out-of-the-box for standard KMP project structures. If your directory names are different, you can\neasily configure the input and output paths.\n\nAdd the following to your root `build.gradle.kts` to override the default paths:\n\n```kotlin\n// build.gradle.kts\n\ntasks.withType\u003cio.github.ansgrb.iconsync.IconSyncTask\u003e {\n\t// Path to the directory containing your mipmap-* folders\n\tandroidResDir.set(project.file(\"composeApp/src/androidMain/res\"))\n\n\t// Path to the iOS AppIcon.appiconset directory\n\tiosAssetsDir.set(project.file(\"iosApp/iosApp/Assets.xcassets/AppIcon.appiconset\"))\n}\n```\n\n---\n\n## License\n\nThis plugin is licensed under the Apache License, Version 2.0. You can find the full license\ntext [here](https://www.apache.org/licenses/LICENSE-2.0.txt).\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansgrb%2Ficonsync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansgrb%2Ficonsync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansgrb%2Ficonsync/lists"}