The ultimate iOS-style icon pack for Android. Every iOS generation in one app — pick and choose which era's icons to apply per-app.
Obtainium (recommended — auto-updates):
- Install Obtainium
- Tap this link on your phone:
obtainium://add/https://github.com/SysAdminDoc/iOSIconPack - Install the latest APK and apply the icon pack in your launcher
Manual: Download the APK from Releases, install, then select the pack in your launcher's icon pack settings.
- 6 iOS Eras — iOS 14, 15, 16, 17, 18, and iOS 26 Liquid Glass
- Mix & Match — Apply different generations to different apps
- 367 Icons + 671 appfilter entries — 342 era variants across iOS 14, 15, 16, 17, 18, and iOS 26 Liquid Glass, plus 25 exact third-party icons
- 367 Material You themed vectors — Android 13+ dynamic themed-icon support across every era
- 30+ Launcher Support — Nova, Lawnchair, Smart Launcher, OnePlus, Samsung, Niagara, Microsoft Launcher, POCO, Pixel, and more
- AMOLED Dark Theme — Native dark mode dashboard
- Icon Requests — Request icons for apps not yet covered
- Free & Open Source — No ads, no tracking, no IAP
| Era | Style | Icons |
|---|---|---|
| iOS 14 | Flat + gradient backgrounds | 57 |
| iOS 15 | Flat, subtle shadows | 57 |
| iOS 16 | Bold colors, refined squircle | 57 |
| iOS 17 | Refined flat | 57 |
| iOS 18 | Tinted/dark mode, refined gradients | 57 |
| iOS 26 | Liquid Glass — frosted translucent | 57 |
The pack applies iOS 18 by default. Contributors can switch the active era at build time:
python3 scripts/set_era.py --list # see active era
python3 scripts/set_era.py ios17 # switch to iOS 17
python3 scripts/set_era.py ios26 # iOS 26 Liquid Glass (partial)
python3 scripts/set_era.py ios18 # reset to defaultNova, Lawnchair, Apex, Smart Launcher, OnePlus, Samsung One UI, LG Home, Sony, Projectivy, GO Launcher, ADW, Holo, Niagara, and 20+ more.
JAVA_HOME="C:/Program Files/Android/Android Studio/jbr" ./gradlew assembleDebug
JAVA_HOME="C:/Program Files/Android/Android Studio/jbr" ./gradlew assembleReleaseassembleRelease uses the committed development keystore only for local sanity
builds. Official publish builds must set IOSICONS_PUBLISH_RELEASE=1,
IOSICONS_KEYSTORE_PATH, IOSICONS_STORE_PASSWORD, IOSICONS_KEY_ALIAS,
IOSICONS_KEY_PASSWORD, and the documented IOSICONS_RELEASE_CERT_SHA256, then
run:
JAVA_HOME="C:/Program Files/Android/Android Studio/jbr" ./gradlew assembleRelease
python3 scripts/icontool.py publish-checkUse icontool — it wires all XML files in one command:
# Add a new iOS stock icon (PNG must already be in drawable-xxxhdpi/):
python3 scripts/icontool.py add ios18_appname \
-c "com.example.app/com.example.app.MainActivity"
# Add a third-party icon:
python3 scripts/icontool.py add tp_appname \
-c "com.example.app/com.example.app.MainActivity"
# Validate appfilter, drawables, and release metadata:
python3 scripts/icontool.py check
# Validate only release metadata and tag alignment:
python3 scripts/icontool.py release-checkSee CONTRIBUTING.md for the full workflow, naming conventions, and PR checklist.
- Dashboard: Blueprint by Jahir Fiquitiva
- Built with Kotlin and the Android SDK
MIT — see LICENSE.