Skip to content

About

A KernelSU / KernelSU Next and Magisk-compatible module that replaces default Android system sounds and emojis with custom or iOS-style assets. Designed for full compatibility across rooted devices without modifying the system partition, offering a seamless and clean customization experience.

Topics

Resources

Stars

30 stars

Watchers

1 watching

Forks

Repository files navigation

🍎 Sound & Emoji iOS β€” Magisk / KernelSU / KernelSu Next Module

Version Android License

Magisk KernelSU KernelSU Next

A high-performance system-level module that brings the complete iOS auditory and visual experience to any rooted Android device.

iOS Sounds β€’ iOS Emojis β€’ SF Pro Display Font β€’ Multi-Root Support


πŸ“‹ Table of Contents


πŸ” Overview

Sound_And_Emoji_IOS is a comprehensive Android root module that systemlessly replaces:

  1. All system sounds (UI, ringtones, notifications, alarms) with authentic iOS audio
  2. System-wide emojis with the latest iOS emoji font (including OEM-specific replacements)
  3. System typography with Apple's SF Pro Display font family

The module uses an intelligent multi-stage boot pipeline to ensure 100% persistence across reboots, ROM updates, and aggressive Google Play Services font re-downloads.


✨ Features

Feature Description
πŸ”Š Complete iOS Sound Set 43 audio files covering UI, ringtones, notifications, alarms, camera, NFC, charging, and more
πŸ˜€ iOS Emoji Replacement System-wide emoji override with latest iOS emoji font (~33MB high-res)
🚩 Authentic Apple Flags 270 genuine iOS flag bitmaps replacing stock Google flags (territories, regional & special flags)
🎨 UVS Format 14 CMAP Native OpenType Format 14 (371 UVS records) restoring default yellow skin tones and missing BMP emojis
πŸ”€ SF Pro Display Font 16 font weights (Regular to Ultralight, with Italic variants)
🏭 OEM Detection Auto-detects Samsung, Xiaomi, LG, HTC, OnePlus, Huawei emoji fonts
πŸ” 4-Layer ROM Identification Deep detection engine for crDroid, LineageOS, Axion OS, Evolution X, PixelOS, etc., via props, direct build.prop files, priv-app hubs, and package manager
πŸ“· OxygenOS / ColorOS Guard Dynamic OEM detection skipping camera resetprop on OPPO/OnePlus/Realme to avoid crashes
πŸ“± Dual-Path Installation Installs to both /system/product/ and /system/media/ for max ROM compatibility
πŸ”’ SELinux Compliant Full u:object_r:system_file:s0 context enforcement + custom SEPolicy rules
πŸ”„ Anti-Revert System Blocks Google Play Services from re-downloading stock emoji fonts
🧹 Zero-Config Gboard Setup Non-destructive emoji cache & DB purge (bundled_emoji_provider.db) β€” restores emojis without wiping settings or voice models
πŸ›‘οΈ EmojiCompat & App Sweep Cleans androidx.emoji2 / EmojiCompat font caches across all apps, fixing Gboard emoji tray and Snapchat (Issue #12)
πŸ“˜ Meta App Fix Replaces Facebook, Instagram, and Messenger emoji with iOS versions
πŸͺ΅ Unified Diagnostic Suite Multi-stage logging (install.log, post-fs-data.log, service.log), automated diagnostic bundle export to /sdcard/Download, on-demand dump_logs.sh, and technical ROM identification audit
♻️ Metamodule & OverlayFS Dynamic metamodule discovery supporting meta-overlayfsx (OverlayFS Enhanced), Hybrid Mount, NanoMount
⚑ Optimized Boot Pipeline Instant recursive SELinux relabeling (chcon -R) cutting post-mount staging time down to ~15ms
πŸ” Auto-Update In-app update support via updateJson

πŸ“¦ What's Included

πŸ”Š Sounds (37 base files + dynamic OEM aliases)

UI Sounds (24 base files + aliases)
Sound Base File Common Dynamic Aliases & OEM Links
Lock Screen Lock.ogg lock.ogg
Unlock Screen Unlock.ogg unlock.ogg
Keyboard Standard KeypressStandard.ogg keypress_standard.ogg
Keyboard Spacebar KeypressSpacebar.ogg keypress_spacebar.ogg
Keyboard Delete KeypressDelete.ogg keypress_delete.ogg
Keyboard Return KeypressReturn.ogg keypress_return.ogg
Keyboard Invalid KeypressInvalid.ogg keypress_invalid.ogg
Camera Click camera_click.ogg CameraClick.ogg, camera_shutter.ogg
Camera Focus camera_focus.ogg CameraFocus.ogg
Screenshot screenshot.ogg Screenshot.ogg
Video Record Start VideoRecord.ogg video_record.ogg
Video Record Stop VideoStop.ogg video_stop.ogg
Charging Started ChargingStarted.ogg WirelessChargingStarted.ogg
Charging Stopped ChargingStopped.ogg charging_stopped.ogg
Low Battery LowBattery.ogg low_battery.ogg
NFC Success NFCSuccess.ogg nfc_success.ogg
NFC Failure NFCFailure.ogg nfc_failure.ogg
NFC Transfer Complete NFCTransferComplete.ogg nfc_transfer_complete.ogg
NFC Transfer Initiated NFCTransferInitiated.ogg nfc_transfer_initiated.ogg
NFC Initiated NFCInitiated.ogg nfc_initiated.ogg
Smart Lock (Trusted) Trusted.ogg trusted.ogg
Volume Incremental VolumeIncremental.ogg volume_incremental.ogg, Media_Volume.ogg
Effect Tick Effect_Tick.ogg effect_tick.ogg, Dock.ogg, Undock.ogg
In-Call Notification InCallNotification.ogg in_call_notification.ogg
Notifications (7 files)
Sound File
Default Message IOSDefaultMessageNotification.ogg
Calendar Alert IOSCalendarAlert.ogg
New Mail IOSNewMail.ogg
Reminder Alert IOSReminderAlert.ogg
Sent Message IOSSentMessage.ogg
iOS Notification 0 IOSNotification0.ogg
iOS Notification 1 IOSNotification1.ogg
Ringtones (3 files)
Sound File
Default (Reflection) IOSDefaultRingtone.ogg
Reflection IOSReflection.ogg
Sashimi IOSSashimi.ogg
Alarms (3 files)
Sound File
Default Alarm IOSDefaultAlarm.ogg
Bedtime IOSBedtimeAlarm.ogg
Nightstand IOSNightstandAlarm.ogg

πŸ˜€ Emoji Fonts

Font Size Purpose
NotoColorEmoji.ttf ~33.6 MB System-wide iOS emoji replacement with authentic Apple flags, Format 14 CMAP (UVS) & OEM mappings

Note

Advanced OpenType & Apple Styling Highlights:

  • Authentic iOS Flags: All 270 flag emojis (including country flags, 10 outlying territories, and 11 special flags) use genuine Apple bitmaps centered at optical coordinates (4, 0) with zero Google assets remaining.
  • OpenType CMAP Format 14 (UVS): Features 371 default Unicode Variation Sequence records for 0xFE0F, fully conforming to Android Minikin's Paint.hasGlyph() validation. Restores the default neutral yellow skin tone in Gboard's variant popup across all single and multi-person emojis.
  • BMP Emoji Restorations: Complete character mapping for Basic Multilingual Plane emojis (❀️ U+2764, ☠️ U+2620, ⁉️ U+2049) guaranteeing visibility in both keyboard layouts and search.
  • Dynamic Meta Deployment: The module dynamically deploys NotoColorEmoji.ttf to Meta apps (Facebook, Messenger, etc.) directly into app_ras_blobs/FacebookEmoji.ttf at runtime (chmod 644), while Instagram safely utilizes the system font to maintain 100% Story reply stability.

πŸ”€ SF Pro Display (16 font weights)

Weight Regular Italic
Ultralight βœ… βœ…
Thin βœ… βœ…
Light βœ… βœ…
Regular βœ… βœ…
Medium βœ… βœ…
Semibold βœ… βœ…
Bold βœ… βœ…
Heavy βœ… βœ…

πŸ”§ Compatibility

Root Solutions

Platform Version Status
Magisk 20.0+ βœ… Full Support
KernelSU All βœ… Full Support (requires metamodule)
KernelSU Next 20000+ βœ… Full Support (requires metamodule)
APatch All βœ… Full Support

Android Versions

Android API Status Notes
Android 11 API 30 βœ… Legacy path (/system/media/audio)
Android 12 API 31 βœ… Product path (/system/product/media/audio)
Android 12L API 32 βœ… β€”
Android 13 API 33 βœ… β€”
Android 14 API 34 βœ… resetprop fallback for ro.config.*
Android 15 API 35 βœ… resetprop fallback for ro.config.*
Android 16 API 36 βœ… resetprop fallback for ro.config.*

Tested ROMs

Works on AOSP, Pixel, LineageOS, crDroid, EvolutionX, AxionOS, PixelOS, RisingOS, Project Matrixx, DerpFest, Paranoid Android (AOSPA), ArrowOS, Havoc-OS, CalyxOS, GrapheneOS, MIUI, HyperOS, OneUI, OxygenOS, ColorOS, and more.

Important

KernelSU / KernelSU Next users: You MUST install a metamodule (e.g., meta-overlayfsx / OverlayFS Enhanced, meta-hybrid_mount, meta-overlayfs, or NanoMount) for the module to mount files into /system/. The installer will warn you if none is detected.

Xiaomi HyperOS 3/4 β€” Special Requirements

Xiaomi HyperOS implements a proprietary MiFontOverlay service that forcefully overrides system fonts at the Zygote level, ignoring any file-level replacements. To make iOS emojis work on HyperOS devices, you need an additional module:

Requirement Details
DisableMiFontOverlay YuKongA/DisableMiFontOverlay β€” Zygisk module that disables Xiaomi's font override
Zygisk / ZygiskNext Required for DisableMiFontOverlay to function
Metamodule (KSU/APatch) meta-overlayfsx, meta-overlayfs, Hybrid Mount, or NanoMount

Note

Sounds and SF Pro font work normally on HyperOS without any extra modules. Only emoji replacement requires DisableMiFontOverlay. On AOSP custom ROMs (such as crDroid, Axion OS, or LineageOS) running on Xiaomi/POCO/Redmi hardware, MiFontOverlay is not used, so DisableMiFontOverlay is not required.

The module installer will automatically detect HyperOS and warn you if DisableMiFontOverlay is missing.

gbl_root_canoe (Fake Locked Bootloader)

For devices rooted via gbl_root_canoe (Snapdragon 8 Gen5 / 8 Elite with fake locked bootloader):

Requirement Details
Metamodule Required β€” meta-overlayfsx, meta-overlayfs, or Hybrid Mount (OverlayFS must mount module files)
Kernel OverlayFS Kernel must have CONFIG_OVERLAY_FS=y (check: cat /proc/filesystems | grep overlay)
DisableMiFontOverlay Required for emoji on HyperOS (same as above)

The installer automatically detects gbl_root_canoe environments and provides specific warnings. Note that KernelSU Next naturally preserves verifiedbootstate=green without breaking verified boot; the module distinguishes this cleanly from canoe to prevent false alarms.


πŸš€ Installation

  1. Download the latest Sound_And_Emoji_IOS.zip from Releases
  2. Open your root manager (Magisk Manager, KernelSU Manager, or APatch)
  3. Flash the .zip via the Modules β†’ Install from storage option
  4. Reboot your device
  5. Enjoy the iOS experience! πŸŽ‰

Note

The module clears the Gboard emoji cache during installation. You may notice a brief delay on the first keyboard launch after reboot while Gboard rebuilds its emoji index.


πŸ—οΈ Architecture & Boot Lifecycle

The module uses a sophisticated multi-stage boot pipeline to ensure everything works across all root solutions and Android versions:

graph TD
    subgraph INSTALL["πŸ“₯ Installation (customize.sh)"]
        I1[Detect Root Environment] --> I2[4-Layer ROM Identification]
        I2 --> I3[Dynamic Metamodule Discovery]
        I3 --> I4[Mirror Audio Across Partitions]
        I4 --> I5[Map OEM & Flag Fonts]
        I5 --> I6[Clean Gboard & EmojiCompat Caches]
        I6 --> I7[Apply SELinux Contexts & Permissions]
    end

    subgraph BOOT1["πŸ”’ post-fs-data.sh (Pre-Mount)"]
        B1["Nuke font caches & locks:<br/>/data/fonts/files (chattr +i)<br/>GMS & Messenger caches<br/>Gboard DB & EmojiCompat<br/>HyperOS theme caches"]
    end

    subgraph BOOT2["πŸ“ post-mount.sh (After Mount)"]
        B2["Fast Recursive chcon -R<br/>(Refresh SELinux contexts on<br/>/system, /product, /system_ext)"]
    end

    subgraph BOOT3["βš™οΈ service.sh (Late Start)"]
        B3[Wait for boot_completed] --> B4[Force resetprop & SettingsProvider]
        B4 --> B5[Universal Meta Emoji Deployment]
        B5 --> B6[Disable GMS FontsProvider]
        B6 --> B7[Global EmojiCompat Sweep & Snapchat Reload]
        B7 --> B8[Start Emoji Watcher Daemon]
        B8 --> B9[Generate Diagnostic Bundle & Export]
    end

    subgraph BOOT4["βœ… boot-completed.sh (KSU/APatch)"]
        B10["Re-apply ro.config.* props"] --> B11[Media Scanner broadcast]
    end

    INSTALL --> BOOT1
    BOOT1 --> BOOT2
    BOOT2 --> BOOT3
    BOOT3 --> BOOT4

    style INSTALL fill:#1a1a2e,stroke:#e94560,color:#fff
    style BOOT1 fill:#16213e,stroke:#0f3460,color:#fff
    style BOOT2 fill:#16213e,stroke:#533483,color:#fff
    style BOOT3 fill:#16213e,stroke:#e94560,color:#fff
    style BOOT4 fill:#0f3460,stroke:#00b4d8,color:#fff
Loading

Why Multiple Stages?

Stage Timing Purpose
post-fs-data.sh Before module mount Clean caches & lock /data/fonts/files BEFORE system reads them
post-mount.sh After OverlayFS mount Lightning-fast recursive SELinux context relabeling (chcon -R) in ~15ms
service.sh Late start (boot completed) Force sound properties, deploy Meta emojis, disable GMS font provider, sweep EmojiCompat, start watcher, compile diagnostic bundle
boot-completed.sh After sys.boot_completed=1 (KSU/APatch) Re-apply sound properties that system may have overwritten and trigger media scanner

πŸ“œ Script Details

customize.sh β€” Installation Engine

The installation script adapts to the device environment:

  • Root Detection: Identifies Magisk, KernelSU, KernelSU Next, or APatch
  • Dynamic Metamodule Discovery: Scans running metamodules dynamically (meta-overlayfsx / OverlayFS Enhanced, meta-hybrid_mount, NanoMount, meta-overlayfs) instead of relying on hardcoded paths
  • 4-Layer Deep ROM Identification: Accurately identifies custom ROMs (crDroid, LineageOS, Axion OS, Evolution X, PixelOS, etc.) across 4 layers: property service, direct filesystem build.prop inspection, priv-app control hubs, and package manager (pm list packages)
  • Hardware vs ROM Skin Separation: On custom ROMs running on Xiaomi, POCO, Redmi, Samsung, or OPPO hardware, the installer provides full OEM font and audio compatibility mappings without false HyperOS or OneUI labeling
  • API-Based Path Selection: Uses /system/product/ for Android 12+ or mirrors to /system/media/ for Android 11
  • OEM Emoji Detection: Scans /system/fonts/ for manufacturer-specific emoji fonts and creates replacements only for fonts that actually exist
  • Surgical Gboard Emoji DB Reset: Purges bundled_emoji_provider.db, layout textures, and emoji superpacks across all profiles without pm clear, preserving user dictionary, custom layouts, microphone permissions, and offline Faster Voice Typing models
  • Global EmojiCompat Sweep: Scans installed apps during installation to purge cached stock emoji fonts (files/fonts/), forcing apps to use system iOS emojis
  • OverlayFS Integration: Detects and supports magisk_overlayfs for restricted partitions
  • SELinux Enforcement: Applies u:object_r:system_file:s0 context to all installed files

post-fs-data.sh β€” Pre-Mount Cache Nuker

Runs BEFORE the module is mounted. Has a strict 10-second timeout.

  • Deletes /data/fonts/ (system font updates)
  • Cleans GMS font provider caches
  • Clears Gboard emoji caches, databases, and early-boot EmojiCompat caches (files/fonts/, no_backup/*emoji*, files/emoji_metadata*)
  • Removes Messenger font download directories

post-mount.sh β€” SELinux Context Enforcer (KSU/APatch)

Runs AFTER module files are mounted (pre-boot stage).

  • Lightning-Fast SELinux Relabeling: Uses fast recursive chcon -R u:object_r:system_file:s0 across module partitions (/system, /product, /system_ext), slashing pre-boot staging time from ~4000ms down to ~15ms while keeping early boot 100% safe against timeout bootloops
  • Rotated Stage Logging: Logs execution status to $MODDIR/post-mount.log with automatic log rotation (>100KB rollover)

service.sh β€” Late Start Service (Universal)

The main runtime script. Waits for sys.boot_completed=1 before executing.

  • resetprop: Force-sets 25+ ro.config.* sound properties that Android 14+ may overwrite during boot
  • OxygenOS / ColorOS Camera Protection: Dynamically checks OEM properties (ro.oplus.image.my_manifest, ro.product.manufacturer, ro.product.brand) to skip camera sound resetprop on OPPO, OnePlus, and Realme devices, preventing native camera validation crashes while keeping all iOS UI sounds active
  • Global emoji replacement: Scans ALL app directories for emoji font files and replaces them
  • Global EmojiCompat / emoji2 Cache Cleaner: Scans all user apps (/data/data and /data/user/) for androidx.emoji2 / EmojiCompat downloaded stock fonts in files/fonts/, forcing apps like Snapchat and Google Messages to render system iOS emojis
  • Universal Meta Emoji Deployment: Deploys iOS emoji directly to Facebook, Messenger, and Lite variants in app_ras_blobs/FacebookEmoji.ttf with legitimate user ownership (chmod 644), while skipping Instagram to protect Story reply stability
  • GMS Font Provider Deactivation: Disables FontsProvider and UpdateSchedulerService in Google Play Services across all user profiles to prevent stock emoji font re-downloads or Google metadata injection
  • Boot-time Gboard Emoji Cache Purge: Clears Gboard layout, expression, and emoji superpacks (files/superpacks/emoji*) during boot so the keyboard re-indexes the system iOS font while keeping offline voice recognition models intact
  • Automated Diagnostic Bundle: Consolidates an Executive Health Summary, partition layout, overlay mount audit, font comparison table, technical ROM identification audit, and stage logs into diagnostic_report.log, auto-exported to /sdcard/Download/Sound_And_Emoji_IOS_diagnostic.log
  • AOSP-Guarded Checks: Guards HyperOS checks (MiFontOverlay) so AOSP ROMs correctly report N/A (AOSP / Not HyperOS β€” not required) without false warnings
  • Media Scanner (Magisk): Broadcasts MEDIA_SCANNER_SCAN_FILE intents for all audio files so they appear in Android's sound picker

dump_logs.sh β€” On-Demand Diagnostic Tool

Standalone root utility script included in the module root.

  • Can be executed anytime from Termux or ADB (su -c sh /data/adb/modules/Sound_And_Emoji_IOS/dump_logs.sh)
  • Re-runs the full diagnostic inspection suite on demand
  • Saves internal log to /data/adb/modules/Sound_And_Emoji_IOS/diagnostic_report.log and automatically exports to /sdcard/Download/Sound_And_Emoji_IOS_diagnostic.log for easy sharing

boot-completed.sh β€” Post-Boot Hook (KSU/APatch)

KernelSU and APatch support this hook natively. Provides a clean way to re-apply properties after the system is fully booted.

  • Re-applies all ro.config.* sound properties via resetprop (with OEM camera exclusions for OPPO, OnePlus, and Realme devices)
  • Triggers media scanner for ringtones, notifications, and alarms

sepolicy.rule β€” SELinux Policy

Custom SEPolicy rules that allow:

  • mediaserver and audioserver to read module-mounted audio files
  • Untrusted apps (Facebook/Messenger) to read bind-mounted emoji fonts
  • Platform apps (Gboard) and GMS to read system emoji fonts

system.prop β€” System Properties

Declares default ringtone, notification, and alarm properties. Kept for backwards compatibility with older Android versions where system.prop is reliably applied during boot.

uninstall.sh β€” Clean Removal

Removes the module directory from /data/adb/modules/ on uninstallation.


πŸ“‚ Project Structure

Sound_And_Emoji_IOS/
β”œβ”€β”€ META-INF/                          # Flashable ZIP metadata
β”‚   └── com/google/android/
β”‚       β”œβ”€β”€ update-binary             # Magisk module installer
β”‚       └── updater-script            # Required (empty marker)
β”‚
β”œβ”€β”€ system/
β”‚   β”œβ”€β”€ fonts/                         # Font replacements
β”‚   β”‚   β”œβ”€β”€ NotoColorEmoji.ttf        # iOS emoji font (system-wide)
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Regular.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Bold.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Medium.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Semibold.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Light.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Thin.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Heavy.ttf
β”‚   β”‚   β”œβ”€β”€ SF-Pro-Display-Ultralight.ttf
β”‚   β”‚   └── ... (+ italic variants)
β”‚   β”‚
β”‚   └── product/media/audio/          # iOS sound files
β”‚       β”œβ”€β”€ ui/                        # 24 UI sounds (+ aliases)
β”‚       β”œβ”€β”€ notifications/             # 7 notification sounds
β”‚       β”œβ”€β”€ ringtones/                 # 3 ringtones
β”‚       └── alarms/                    # 3 alarm sounds
β”‚
β”œβ”€β”€ webroot/
β”‚   └── index.html                    # Module manager web UI redirect
β”‚
β”œβ”€β”€ update_metada/
β”‚   β”œβ”€β”€ update.json                   # OTA update manifest
β”‚   └── CHANGELOG.md                  # Full version history
β”‚
β”œβ”€β”€ customize.sh                      # Installation script
β”œβ”€β”€ dump_logs.sh                      # On-demand diagnostic tool
β”œβ”€β”€ post-fs-data.sh                   # Pre-mount cache cleaner
β”œβ”€β”€ post-mount.sh                     # Post-mount SELinux relabeler (KSU/APatch)
β”œβ”€β”€ service.sh                        # Late start service (universal)
β”œβ”€β”€ boot-completed.sh                 # Post-boot hook (KSU/APatch)
β”œβ”€β”€ sepolicy.rule                     # Custom SELinux policies
β”œβ”€β”€ system.prop                       # Default sound properties
β”œβ”€β”€ uninstall.sh                      # Cleanup on removal
└── module.prop                       # Module metadata

🏭 OEM Emoji Support

The module automatically detects and replaces manufacturer-specific emoji fonts. It only creates replacement files for fonts that actually exist on your device:

OEM Font File Devices
Samsung SamsungColorEmoji.ttf Galaxy S, A, Note, Z series
Xiaomi MiuiColorEmoji.ttf Mi, Redmi, POCO (MIUI/HyperOS)
LG LGNotoColorEmoji.ttf LG V, G series
HTC HTC_ColorEmoji.ttf HTC U, Desire series
OnePlus OnePlusEmoji.ttf OnePlus, OPPO, Realme
Huawei HuaweiColorEmoji.ttf Huawei, Honor
AOSP/Pixel NotoColorEmoji.ttf Pixel, AOSP-based ROMs

πŸ“˜ Meta / Facebook Emoji Fix

Meta apps (Facebook, Instagram, Messenger) use their own bundled emoji font (FacebookEmoji.ttf) instead of the system font. The module uses an aggressive multi-layer approach to force iOS emojis:

graph LR
    A["πŸ” Find ALL *emoji*.ttf<br/>in /data/data/ & /data/user/0/"] --> B["πŸ“ Replace with<br/>iOS emoji font"]
    B --> C["πŸ”’ Apply permissions<br/>(chmod 644)"]
    C --> D["🚫 Block Messenger<br/>font downloads<br/>(chmod 000)"]
    D --> E["β›” Disable GMS<br/>FontsProvider"]
    E --> F["πŸ”„ Force-stop<br/>Meta apps"]

    style A fill:#1877f2,stroke:#fff,color:#fff
    style B fill:#e94560,stroke:#fff,color:#fff
    style C fill:#533483,stroke:#fff,color:#fff
    style D fill:#0f3460,stroke:#fff,color:#fff
    style E fill:#16213e,stroke:#fff,color:#fff
    style F fill:#1a1a2e,stroke:#fff,color:#fff
Loading

Targeted Apps

App Package Method Status
Facebook com.facebook.katana Dynamic FacebookEmoji.ttf injection (chmod 644) βœ… iOS Emojis
Messenger com.facebook.orca Dynamic injection + download block βœ… iOS Emojis
Facebook Lite com.facebook.lite Dynamic FacebookEmoji.ttf injection βœ… iOS Emojis
Messenger Lite com.facebook.mlite Dynamic FacebookEmoji.ttf injection βœ… iOS Emojis
Instagram com.instagram.android Native system font fallback (Story crash protection) βœ… iOS Emojis
InstaPro com.instapro.android Native system font fallback (Story crash protection) βœ… iOS Emojis

⚠️ Known Limitations

WhatsApp Emojis

WhatsApp does not use the system emoji font (NotoColorEmoji.ttf). Instead, WhatsApp bundles its own proprietary emoji set directly inside the APK to maintain visual consistency across Android, iOS, and Web platforms. This is a deliberate architectural decision by Meta.

What this means:

  • βœ… System UI, Gboard, SMS, Chrome, and most apps β†’ iOS emojis work perfectly
  • βœ… Facebook, Instagram, Messenger β†’ iOS emojis work (replaced via module)
  • ❌ WhatsApp β†’ uses its own emojis (cannot be changed without modifying the APK)

Note

This is not a bug in the module β€” it is a WhatsApp limitation. The only way to change WhatsApp's emojis would be to use a modified APK (which violates WhatsApp's Terms of Service and may result in account suspension).

Telegram

Telegram has its own emoji rendering system that can be configured in-app. Check Settings β†’ Chat Settings β†’ Emoji to use system emojis.


πŸ”„ OTA Updates

The module supports in-app updates via the updateJson mechanism. Your root manager will automatically check for new versions.

Update URL: https://raw.githubusercontent.com/antoniomalheirs/Sound_And_Emoji_IOS/main/update_metada/update.json


πŸ”§ Troubleshooting

πŸ“Š Diagnostic Report (Attach to GitHub Issues)

The module automatically generates a comprehensive diagnostic report on every boot:

  • Saved on device (Zero-Root Export): /sdcard/Download/Sound_And_Emoji_IOS_diagnostic.log (also at /sdcard/Sound_And_Emoji_IOS_diagnostic.log)
  • Internal module report (Root / Termux): /data/adb/modules/Sound_And_Emoji_IOS/diagnostic_report.log
  • Zero-root access required: You can find the exported file directly inside your phone's default Files or Downloads app without needing root explorers!
  • Attach to Issues: If you experience any issues, simply open a new issue on GitHub and attach this file. It contains the complete status of partitions, metamodules, font sizes, audio paths, Gboard cache, technical ROM identification audits, and boot stage logs.
  • Technical ROM Audit: Includes section [1b. ROM IDENTIFICATION AUDIT] detailing raw queried properties, matched build.prop entries, custom ROM packages, and priv-app directories.
  • Dedicated Stage Logs: Each lifecycle stage preserves its own log file inside /data/adb/modules/Sound_And_Emoji_IOS/:
    • install.log β€” Installer actions, partition choices, and OEM mappings
    • post-fs-data.log β€” Pre-mount cache clearing and font directory immutable locks
    • post-mount.log β€” Recursive SELinux context relabeling
    • service.log β€” Runtime properties, app emoji deployments, and daemon status
    • boot-completed.log β€” Post-boot property enforcement

To generate a fresh diagnostic report on demand from a root terminal (Termux / ADB):

su -c sh /data/adb/modules/Sound_And_Emoji_IOS/dump_logs.sh

Snapchat or Gboard emoji panel still showing stock Google emojis (Issue #12)
  1. Apps using androidx.emoji2 or EmojiCompat (such as Snapchat and Gboard's emoji keyboard drawer) can dynamically download stock Google emoji fonts into their internal files/fonts/ cache or no_backup/ directory, overriding system fonts.
  2. In V2.0.18+, the module includes an automated global cache cleaner that purges these internal font caches during installation, pre-mount (post-fs-data.sh), and runtime (service.sh).
  3. If stock emojis reappear after an app update:
    • Force-stop the app: Settings β†’ Apps β†’ Snapchat (or Gboard) β†’ Force Stop
    • Clear app cache: Storage β†’ Clear Cache
    • Reboot the device so the module sweeps the caches and forces fallback to system iOS emojis
  4. Check the diagnostic report to verify compat_fonts=0 in Gboard's status line.
Sounds not changing after reboot
  1. Check if the diagnostic report exists: /sdcard/Download/Sound_And_Emoji_IOS_diagnostic.log or inside /data/adb/modules/Sound_And_Emoji_IOS/diagnostic_report.log (and service.log)
  2. Verify that resetprop is working: run getprop ro.config.ringtone β€” it should show IOSDefaultRingtone.ogg
  3. On Android 14+, the system may override system.prop β€” the module uses resetprop as fallback via service.sh and boot-completed.sh
  4. Clear your Settings app cache and check sound settings again
Emojis not changing in Gboard
  1. Clear Gboard app cache: Settings β†’ Apps β†’ Gboard β†’ Storage β†’ Clear Cache
  2. Reboot the device
  3. Check if /data/fonts/files/ directory was cleaned and locked with chattr +i (it should have 0 files inside)
  4. Verify the module is enabled in your root manager
Facebook/Instagram still showing old emojis
  1. Force-stop the app
  2. Check service.log or diagnostic_report.log for deployment status
  3. Verify that the emoji file in Facebook has valid permissions: ls -l /data/data/com.facebook.katana/app_ras_blobs/FacebookEmoji.ttf β€” should show -rw-r--r-- (644) with the app's user ownership
  4. Note: Instagram safely uses native system font fallback directly to guarantee 100% Story editor and keyboard stability
  5. If not, reboot β€” the module re-applies on every boot
Sounds/Ringtones not appearing in Settings picker
  1. The module triggers MediaScanner after boot β€” wait ~15 seconds after reboot
  2. If still not visible, check if your ROM reads from /system/product/media/audio/ or /system/media/audio/
  3. Try clearing the MediaProvider cache: Settings β†’ Apps β†’ Media Storage β†’ Clear Data β†’ Reboot
KernelSU: Nothing is working
  1. You MUST install a metamodule (e.g., meta-overlayfsx / OverlayFS Enhanced, meta-hybrid_mount, meta-overlayfs, or NanoMount) for KernelSU to mount files into /system/
  2. The installer will show a warning if no metamodule is detected
  3. Install the metamodule β†’ Reboot β†’ Re-flash this module β†’ Reboot again
Xiaomi HyperOS: Emojis not changing (still showing Xiaomi emojis)

HyperOS has a proprietary MiFontOverlay service that forces original fonts at the Zygote level, overriding any file replacements. To fix:

  1. Install DisableMiFontOverlay β€” a Zygisk module that disables Xiaomi's font override
  2. Enable Zygisk in your root manager (Magisk β†’ Settings β†’ Zygisk ON, or install ZygiskNext for KernelSU/APatch)
  3. Reboot the device
  4. If emojis still don't change, also clear Xiaomi Themes cache: Settings β†’ Apps β†’ Themes β†’ Clear Data
  5. Run the diagnostic tool to check status: su -c sh /data/adb/modules/Sound_And_Emoji_IOS/dump_logs.sh
  6. Look for MiFontOverlay and fonts_custom.xml lines in the report

Note: Sounds and SF Pro font work normally without DisableMiFontOverlay. Only emoji replacement requires it. On AOSP custom ROMs (such as crDroid, Axion OS, LineageOS) running on Xiaomi hardware, MiFontOverlay is not present and DisableMiFontOverlay is not required.

gbl_root_canoe: Module not working at all

Devices rooted via gbl_root_canoe (fake locked bootloader) have extra requirements:

  1. Install a metamodule β€” meta-overlayfsx (OverlayFS Enhanced), meta-hybrid_mount, meta-overlayfs, or NanoMount is required for OverlayFS to work
  2. Check kernel OverlayFS support: su -c "cat /proc/filesystems | grep overlay" β€” if empty, your kernel lacks CONFIG_OVERLAY_FS
  3. Try switching mount method in KernelSU Manager β†’ Settings β†’ try toggling between OverlayFS and Magic Mount
  4. Check KSU logs: su -c "cat /data/adb/ksud.log | tail -50" β€” look for mount errors
  5. Run the diagnostic: su -c sh /data/adb/modules/Sound_And_Emoji_IOS/dump_logs.sh and attach to your GitHub issue
  6. Note: On KernelSU Next, seeing verifiedbootstate=green is normal behavior and NOT a canoe indicator; the module cleanly distinguishes standard KernelSU Next from canoe environments.
Gboard: Missing yellow skin tone or emojis locked to light skin
  1. In V2.0.12+, the neutral yellow skin tone option has been completely restored via OpenType Format 14 CMAP (UVS).
  2. If your keyboard was previously locked to a skin tone, long-press any hand or person emoji.
  3. Select the first option (the neutral yellow emoji).
  4. Due to Gboard's native One-Tap Skin Tone Preference feature, Gboard will immediately apply the yellow color globally across all compatible emojis.
  5. If the menu still shows only 5 colors, re-flash the module in your root manager (the installer performs a non-destructive emoji database and superpack reset) or clear Gboard cache in Settings β†’ Apps β†’ Gboard β†’ Storage β†’ Clear Cache, then reboot (avoid pm clear to preserve offline Faster Voice Typing).
Gboard: Handshake or multi-person emojis show grey figures
  1. Emojis with two people or hands (e.g. handshake 🀝, couples πŸ‘―) use Gboard's native 2-step selection matrix.
  2. The grey figures are visual placeholders waiting for your selection:
    • Row 1: Selects the tone for the left figure (right figure is grey/placeholder).
    • Row 2: Selects the tone for the right figure (left figure is grey/placeholder).
  3. To select the default yellow combination for both, simply tap the dual-yellow emoji in the bottom row.
Gboard: Faster Voice Typing (DigitaΓ§Γ£o por voz mais rΓ‘pida) disappeared or not working
  1. In V2.0.13, the module's boot cleaner and installer have been completely overhauled to protect on-device speech models (superpacks/speech and ondevice_recognizer).
  2. If your Gboard had voice typing affected by a previous version, follow these simple steps to re-enable it:
    • Microphone Permission: Go to Settings β†’ Apps β†’ Gboard β†’ Permissions and make sure Microphone is set to Allow.
    • Download Offline Speech Model: Open Gboard β†’ Tap the Settings (gear) icon on the keyboard toolbar β†’ Voice typing β†’ Toggle on Faster voice typing (or Offline speech recognition). Ensure you are connected to Wi-Fi so Gboard can download the local speech pack (~85MB).
    • Android System Intelligence: Ensure that the system app Android System Intelligence (or Device Personalization Services) is enabled and allowed to run in the background.
Camera app crashes on OnePlus, OPPO, or Realme (OxygenOS / ColorOS)
  1. This issue has been fully resolved since V2.0.7.
  2. The module automatically identifies OPPO/OnePlus/Realme devices and skips overriding camera properties (ro.config.camera_*), preserving full native OplusCamera stability while keeping all iOS UI and system sounds active.

πŸ“ Changelog

See the full changelog at update_metada/CHANGELOG.md.

Latest: v2.0.22

  • 4-Layer Deep ROM Identification Engine: Upgraded custom ROM identification from single-property lookups to a deep 4-layer detection engine across customize.sh, service.sh, and dump_logs.sh:
    • Layer 1 (Property Service): Queries ro.crdroid.*, ro.lineage.*, ro.axion.*, ro.evolution.*, ro.build.description, ro.build.flavor, and ro.modversion.
    • Layer 2 (Direct Filesystem build.prop Inspection): Directly scans /system/build.prop, /system_ext/build.prop, /product/build.prop, and /vendor/build.prop on disk, bypassing any SELinux property context restrictions or unexported prop definitions.
    • Layer 3 (Priv-App Control Hubs): Checks for presence of ROM-specific control hubs (e.g. crDroidSettings, LineageParts, AxionSettings, Evolver).
    • Layer 4 (Package Manager): Scans installed system packages via pm list packages for org.crdroid.settings, org.lineageos.settings, org.axion, etc.
  • ROM Identification Audit in Diagnostics: Added section [1b. ROM IDENTIFICATION AUDIT] in both service.sh and dump_logs.sh, logging all raw queried ROM properties, matched build.prop lines, installed ROM package IDs, and priv-app directories for 100% technical transparency.
  • Zero Regressions: Preserves all existing hardware mappings, audio paths, and emoji font overlays.

Previous: v2.0.21

  • Dynamic Custom AOSP ROM Name Detection: Replaced static installer labels with granular dynamic detection across major AOSP custom ROMs (crDroid, LineageOS, Axion OS, Evolution X, PixelOS, RisingOS, Project Matrixx, DerpFest, Paranoid Android / AOSPA, ArrowOS, Havoc-OS, CalyxOS, GrapheneOS, etc.), eliminating misleading Axion OS labeling on crDroid and other ROMs.
  • Custom ROM Metric in Diagnostic Reports: Added a dedicated Custom ROM entry to the Executive Health Summary in both service.sh and dump_logs.sh, reporting the specific custom ROM name alongside OEM hardware metrics.

Previous: v2.0.20

  • Dynamic Metamodule Discovery: Upgraded metamodule detection in service.sh and dump_logs.sh from hardcoded static paths to dynamic discovery (metamodule=1 in module.prop and pattern matching meta-*, *overlayfs*), ensuring metamodules like meta-overlayfsx (OverlayFS Enhanced) are recognized accurately.
  • AOSP vs Hardware OEM Separation: In customize.sh, separated genuine OEM skin detection from device hardware mapping. On custom ROMs running on Xiaomi, POCO, Redmi, Samsung, or OPPO hardware, the installer logs hardware compatibility mapping without mislabeling the AOSP ROM as "Xiaomi/MIUI/HyperOS" or "Samsung/OneUI".
  • Guarded MiFontOverlay Check: Guarded MiFontOverlay status check to only run when HyperOS or MIUI framework properties are active; on AOSP ROMs, it reports N/A (AOSP / Not HyperOS β€” not required) instead of a false warning.
  • Pre-mount EmojiCompat Early Defense: Added files/fonts/, no_backup/*emoji*, and files/emoji_metadata* cleanup to post-fs-data.sh.
  • Instant Post-Mount SELinux Relabeling: Replaced slow sequential find-exec loop with recursive chcon -R, reducing pre-boot staging time from ~4000ms down to ~15ms.

Previous: v2.0.19

  • Remove Canoe False Positive Detection: Removed green boot state + root heuristic from canoe detection. KernelSU NEXT preserves ro.boot.verifiedbootstate=green without breaking verified boot, which is standard behavior β€” NOT an indicator of gbl_root_canoe. Detection now relies solely on concrete evidence: efisp partition and canoe module directory presence.

Previous: v2.0.18

  • Fix Gboard Emoji Panel & Snapchat (Issue #12): Resolved critical issue where Gboard's emoji picker panel and Snapchat displayed Google stock emojis via androidx.emoji2 / EmojiCompat downloaded fonts in files/fonts/ and no_backup/*emoji*.
  • Global EmojiCompat Cache Cleanup: Added clean_emojicompat_caches() across service.sh, customize.sh, and post-fs-data.sh, scanning apps in /data/data/ and /data/user/ and purging cached emoji fonts to enforce system iOS emoji fallback.
  • Diagnostic Metrics: Added compat_fonts count to the Gboard diagnostic report.

Previous: v2.0.17

  • HyperOS 3/4 (MIUI 15+) Compatibility: Added support and detection for HyperOS 3/4, instructing users to install companion module DisableMiFontOverlay + Zygisk to bypass Xiaomi's Zygote-level font override.
  • Safe fonts_customization.xml Overlay: Implemented dynamic XML generation for /product/etc/fonts_customization.xml with 6-layer validation (backup, sed substitution, XML well-formedness, font reference check, size check, auto-rollback).
  • gbl_root_canoe Compatibility: Added detection and support for Snapdragon 8 Gen5 / 8 Elite fake locked bootloader rooting.
  • HyperOS Deep Cache Cleanup: Added clearing of /data/fonts/config/, Xiaomi Theme Manager caches, and theme font directories.
  • Additive SEPolicy Rules: Added SELinux rules for system_server β†’ product_file and zygote β†’ system_file.

Previous: v2.0.16

  • Unified Logging & Diagnostic System: Upgraded the module's entire diagnostic logging infrastructure across all lifecycle stages (customize.sh, post-fs-data.sh, post-mount.sh, boot-completed.sh, service.sh).
  • Automated Diagnostic Bundle: service.sh automatically compiles a unified diagnostic report (diagnostic_report.log) with an executive health summary, device hardware fingerprint, partition and symlink matrix, overlay mount status, and font size audits.
  • Zero-Root File Sharing: Automatically exports the diagnostic bundle directly to /sdcard/Download/Sound_And_Emoji_IOS_diagnostic.log, allowing users to attach the log to GitHub issues using their standard phone Files app without needing root access.
  • On-Demand Tool (dump_logs.sh): Added a root terminal helper (/data/adb/modules/Sound_And_Emoji_IOS/dump_logs.sh) to regenerate and export the diagnostic report anytime on demand.

Previous: v2.0.15

  • Fix for Xiaomi HyperOS Primary Emoji Font (MiuiColorEmoji.ttf) & Gboard Database Re-indexing (Issue #11): Resolved issue where Xiaomi HyperOS devices continued displaying stock Android emojis across Gboard, Google Messages, Google Voice, and system UI while emojis only worked in Facebook Messenger.
  • Root Cause (HyperOS fonts.xml Priority): In Xiaomi HyperOS, the system font configuration (/system/etc/fonts.xml) defines MiuiColorEmoji.ttf as the primary font in the <family lang="und-Zsye"> fallback chain before NotoColorEmoji.ttf. Previous module builds only linked MiuiEmoji.ttf, leaving MiuiColorEmoji.ttf stock and unreplaced.
  • Complete OEM Emoji Mapping: Explicitly mapped both MiuiColorEmoji.ttf and MiuiEmoji.ttf in customize.sh and mirrored across all partition layers (/system/fonts, /product/fonts, /system_ext/fonts). Added complete fallback mappings for LG, OnePlus, Huawei, and HTC.
  • Gboard Database Re-indexing: In post-fs-data.sh and service.sh, added boot-time cleanup of Gboard's SQLite emoji database (databases/bundled_emoji_provider*), forcing Gboard to compile its emoji palette directly from the freshly mounted iOS font while strictly preserving Faster Voice Typing speech models (superpacks/speech*, ondevice_recognizer*).
  • Xiaomi Theme Manager Cache Cleanup: Added automated cache clearing and replacement for Xiaomi Theme Manager font directories (/data/system/theme/fonts, /data/system/theme_magic/fonts), ensuring active themes cannot override the system iOS emoji font.
  • Expanded Boot Diagnostics: Added verification and file size logging for MiuiColorEmoji.ttf and MiuiEmoji.ttf across /system/fonts and /product/fonts in service.log.

Previous: v2.0.14

  • Fix for KernelSU / APatch / Meta-OverlayFS / Hybrid Mount Collision & Xiaomi HyperOS (Issue #11): Resolved critical mounting failure where modules failed to mount on modern metamodules like meta-overlayfs (OverlayFS MetaModule) and meta-hybrid_mount (Hybrid Mount) with error 22 (EINVAL) or path conflict errors.
  • Intelligent Partition Reconciliation (Anti-Collision): Eliminates nested mount collisions between $MODPATH/system/product and $MODPATH/product by dynamically adapting module tree: on KernelSU/APatch, standalone partition trees (/product, /system_ext, /system) are cleanly separated without conflicting nested folders; on Magisk, files are unified under $MODPATH/system/.
  • Xiaomi HyperOS Emoji Guarantee: Expanded Xiaomi/MIUI/HyperOS detection to verify manufacturer and brand flags (xiaomi, redmi, poco), guaranteeing MiuiEmoji.ttf is always mapped in both /system/fonts and /product/fonts.

Previous: v2.0.13

  • Fix for Gboard Faster Voice Typing & Non-Destructive Emoji Cache Cleanup: Resolved critical regression where offline Faster Voice Typing disappeared or stopped functioning in Gboard.
  • Root Cause & Superpacks Protection: In service.sh, restricted boot-time cache cleaning to emoji superpacks (files/superpacks/emoji*), completely preserving offline neural speech models (speech / ondevice_recognizer, ~85MB) and neural language typing models (delight5).
  • Surgical Installation Engine: In customize.sh, removed destructive pm clear com.google.android.inputmethod.latin. Now purges only emoji database and rendering caches (bundled_emoji_provider.db, files/emoji*, files/superpacks/emoji*), ensuring iOS emojis and neutral skin tones activate instantly without revoking microphone permissions, wiping user dictionary, custom settings, or voice models.

Previous: v2.0.12

  • Definitive Fix for Yellow Skin Tone & Missing Emojis (Issue #8): Completely restored default yellow skin tone options for all hand emojis (πŸ–οΈ, ✌️, ☝️, ✍️), person in suit levitating (πŸ•΄οΈ), bunny people (πŸ‘―β€β™‚οΈ, πŸ‘―β€β™€οΈ), and restored missing standalone emojis like red heart (❀️), skull and crossbones (☠️), and exclamation question mark (⁉️) in Gboard.
  • Clean CMAP Format 14 Integration: Replaced CMAP tables with the official OpenType standard layout: Table 0 as Format 14 (Unicode Variation Sequences, 371 default UVS records for 0xFE0F) and Table 1 as Format 12 (platformID=3, platEncID=10), fully passing Android Minikin's Paint.hasGlyph() validation.
  • Disable GMS Fonts Provider: In service.sh, permanently disabled com.google.android.gms.fonts.provider.FontsProvider and UpdateSchedulerService across all users to stop Google Play Services from serving Google's stock emoji metadata to Gboard.
  • Gboard Complete Storage Data Wipe on Install: Added complete storage data wipe (pm clear com.google.android.inputmethod.latin + full directory purge) in customize.sh exclusively during module installation, ensuring Gboard builds a clean index with all colors and emojis out-of-the-box.
  • Automatic Gboard Cache Flush on Boot: Added automatic clearing of Gboard layout, superpacks, and emoji caches during boot in service.sh.

Previous: v2.0.11

  • Restored Default Yellow Skin Tones & Unicode Variation Sequences (UVS Format 14): Fixed hand emojis and person emojis displaying only 5 light-to-dark skin tones in Gboard's popup with the default yellow option missing.
  • Root Cause & Minikin Validation: Identified that Android Minikin queries OpenType cmap Format 14 (UVS) for 0xFE0F. When missing, Minikin returns false for hasGlyph, causing Gboard to assume the font cannot render the yellow base emoji and hiding it from the variant popup.
  • OpenType Format 14 CMAP Injection: Embedded an OpenType cmap Format 14 subtable (platformID=0, platEncID=5) mapping all Unicode emoji variation sequence bases for 0xFE0F.

Previous: v2.0.10

  • iOS Flag Emojis & Authentic Apple Styling (Issue #8): Replaced all flag bitmaps inside NotoColorEmoji.ttf with genuine Apple iOS flag bitmaps sourced from AppleColorEmoji.ttf.
  • Optical Sizing & Alignment: All Apple 96Γ—96 emoji assets uniformly resized to 128Γ—128 (exact 4/3 ratio matching regular Apple emojis) and placed on the standard 136Γ—128 transparent canvas at horizontal offset (4, 0). Preserves 100% of Apple's original proportions, margins, baselines, and wave curves without distortion.
  • Territory Mappings & Special Flags: All 10 outlying territories (UM, CP, EA, DG, AC, TA, HM, SJ, BV, MF) mapped to authentic iOS equivalents. All 11 special flags (England, Scotland, Wales, Rainbow, Transgender, Pirate, Chequered, Triangular, Crossed, White, Black) updated β€” 270 total flags replaced (0 Google flags remaining).
  • Cleanup: Removed separate pre-built NotoColorEmojiFlags.ttf; customize.sh mirrors the complete font to all partitions, and post-fs-data.sh / service.sh lock /data/fonts/files/ (chattr +i).

Previous: v2.0.7

  • OxygenOS / ColorOS Camera Fix (Issue #7): Native camera app (OplusCamera) broke when resetprop overrode camera sound properties on OPPO/OnePlus/Realme.
  • Runtime OEM Detection: Added detection logic via ro.oplus.image.my_manifest, ro.product.manufacturer (oppo/oplus), and ro.product.brand (oneplus/realme).
  • Conditional Camera Property Override: Camera sound resetprop calls are now skipped on OPPO/OnePlus/Realme devices, keeping native camera stability while all other iOS sounds work normally.

Previous: v2.0.6

  • Flag Emoji Fix (Issue #8): Locked /data/fonts/files/ with chattr +i to prevent Google Play Services from re-downloading stock NotoColorEmojiFlags.ttf. Flag emojis now persist as iOS style across reboots.
  • APEX Font Cache Cleaning: Watcher daemon now also cleans Android 14+ Mainline font caches that can override system emoji fonts.

Previous: v2.0.5

  • Touch Sound Preference Preserved (Issue #9): Removed forced sound_effects_enabled=1 and dtmf_tone=1 from service.sh and boot-completed.sh. The module no longer overrides user settings on reboot.
  • Emoji Persistence (Issue #8): Extended the background Emoji Watcher Daemon in service.sh to monitor and clean /data/fonts/files/, wipe Google Play Services font caches, and continuously re-apply iOS emojis across apps without CPU overhead.

Previous: v2.0.4

  • Universal Android 11~16 & AOSP Support: Full compatibility with Android 16 (Baklava), Axion AOSP, and custom ROMs without bootloop risks.
  • Safe Pre-Boot & Audio Aliases: Zero-mount safe post-fs-data.sh and post-mount.sh execution, complete lowercase keypress audio aliases, and dual-phase SettingsProvider and resetprop injection.
  • Gboard & Font Protection: Preserves keyboard preferences (including Sound on Keypress) while clearing dynamic emoji packs and preventing Google Play Services OTA font rollbacks.

Previous: v1.4.9

Previous: v1.4.8

  • Absolute Keyboard Flicker Fix: Replaced the Instagram FacebookEmoji.ttf with a standard text font (Roboto-Regular) to safely bypass a native EmojiCompat crash when replying to Stories, gracefully forcing the app to fall back to the system iOS emojis.

Previous: v1.4.7

  • Keyboard Flicker Fix (AOSP/Custom ROMs): Excluded keyboard apps (SwiftKey, Gboard) from internal font replacement. This stops the keyboard from crashing when opening the emoji panel to reply to an Instagram Story.

Previous: v1.4.6

  • HyperOS Instagram Stories Crash Fix: Changed permissions of FacebookEmoji.ttf to 644 to prevent an unhandled permission exception during Instagram's font validation checks.
  • Meta Emoji Watcher Daemon: Added an ultra-lightweight background daemon to service.sh that actively watches for Instagram's attempts to revert the iOS emojis and silently restores them.

Previous: v1.4.5

  • Stories Keyboard Crash Fix: Changed the SELinux context of the Instagram emoji font from app_data_file to system_file. This allows third-party keyboards (like SwiftKey/Gboard) to read the font when passed by the Instagram Stories editor, preventing the keyboard from crashing and flickering.
  • HyperOS/Dual Apps Support: Scans all user profiles (/data/user/*) to ensure Instagram and other Meta apps in Dual Apps have their emojis replaced correctly.
  • Messenger font block: Blocks the font download directory (files/fonts) for Messenger across all user profiles (/data/user/*) to prevent silent redownloads.
  • Crash Fix: Removed chattr +i (immutable flag) from emoji files to prevent Instagram from crashing.

πŸ‘ Credits

Contributor Contribution
topjohnwu Creator of Magisk
tiann Creator of KernelSU
TheGabrielHoward Original iOS sounds and module inspiration
dtingley11 OEM font replacement code

Sentinel Data Solutions | Mobile Experience Engineering
Developed by Zeca

⭐ If this module improved your Android experience, consider giving the repo a star!

About

A KernelSU / KernelSU Next and Magisk-compatible module that replaces default Android system sounds and emojis with custom or iOS-style assets. Designed for full compatibility across rooted devices without modifying the system partition, offering a seamless and clean customization experience.

Topics

Resources

Stars

30 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages