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
- Overview
- Features
- What's Included
- Compatibility
- Installation
- Architecture & Boot Lifecycle
- Script Details
- Project Structure
- OEM Emoji Support
- Meta / Facebook Emoji Fix
- Known Limitations
- OTA Updates
- Troubleshooting
- Changelog
- Credits
Sound_And_Emoji_IOS is a comprehensive Android root module that systemlessly replaces:
- All system sounds (UI, ringtones, notifications, alarms) with authentic iOS audio
- System-wide emojis with the latest iOS emoji font (including OEM-specific replacements)
- 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.
| 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 |
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 |
| 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'sPaint.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.ttfto Meta apps (Facebook, Messenger, etc.) directly intoapp_ras_blobs/FacebookEmoji.ttfat runtime (chmod 644), while Instagram safely utilizes the system font to maintain 100% Story reply stability.
| Weight | Regular | Italic |
|---|---|---|
| Ultralight | β | β |
| Thin | β | β |
| Light | β | β |
| Regular | β | β |
| Medium | β | β |
| Semibold | β | β |
| Bold | β | β |
| Heavy | β | β |
| 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 | 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.* |
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 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.
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.
- Download the latest
Sound_And_Emoji_IOS.zipfrom Releases - Open your root manager (Magisk Manager, KernelSU Manager, or APatch)
- Flash the
.zipvia the Modules β Install from storage option - Reboot your device
- 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.
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
| 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 |
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.propinspection, 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 withoutpm 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_overlayfsfor restricted partitions - SELinux Enforcement: Applies
u:object_r:system_file:s0context to all installed files
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
Runs AFTER module files are mounted (pre-boot stage).
- Lightning-Fast SELinux Relabeling: Uses fast recursive
chcon -R u:object_r:system_file:s0across 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.logwith automatic log rotation (>100KB rollover)
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 soundresetpropon 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/dataand/data/user/) forandroidx.emoji2/EmojiCompatdownloaded stock fonts infiles/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.ttfwith legitimate user ownership (chmod 644), while skipping Instagram to protect Story reply stability - GMS Font Provider Deactivation: Disables
FontsProviderandUpdateSchedulerServicein 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 reportN/A (AOSP / Not HyperOS β not required)without false warnings - Media Scanner (Magisk): Broadcasts
MEDIA_SCANNER_SCAN_FILEintents for all audio files so they appear in Android's sound picker
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.logand automatically exports to/sdcard/Download/Sound_And_Emoji_IOS_diagnostic.logfor easy sharing
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 viaresetprop(with OEM camera exclusions for OPPO, OnePlus, and Realme devices) - Triggers media scanner for ringtones, notifications, and alarms
Custom SEPolicy rules that allow:
mediaserverandaudioserverto 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
Declares default ringtone, notification, and alarm properties. Kept for backwards compatibility with older Android versions where system.prop is reliably applied during boot.
Removes the module directory from /data/adb/modules/ on uninstallation.
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
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 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
| App | Package | Method | Status |
|---|---|---|---|
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 |
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 |
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 has its own emoji rendering system that can be configured in-app. Check Settings β Chat Settings β Emoji to use system emojis.
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
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, matchedbuild.propentries, 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 mappingspost-fs-data.logβ Pre-mount cache clearing and font directory immutable lockspost-mount.logβ Recursive SELinux context relabelingservice.logβ Runtime properties, app emoji deployments, and daemon statusboot-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.shSnapchat or Gboard emoji panel still showing stock Google emojis (Issue #12)
- Apps using
androidx.emoji2orEmojiCompat(such as Snapchat and Gboard's emoji keyboard drawer) can dynamically download stock Google emoji fonts into their internalfiles/fonts/cache orno_backup/directory, overriding system fonts. - 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). - 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
- Check the diagnostic report to verify
compat_fonts=0in Gboard's status line.
Sounds not changing after reboot
- Check if the diagnostic report exists:
/sdcard/Download/Sound_And_Emoji_IOS_diagnostic.logor inside/data/adb/modules/Sound_And_Emoji_IOS/diagnostic_report.log(andservice.log) - Verify that
resetpropis working: rungetprop ro.config.ringtoneβ it should showIOSDefaultRingtone.ogg - On Android 14+, the system may override
system.propβ the module usesresetpropas fallback viaservice.shandboot-completed.sh - Clear your Settings app cache and check sound settings again
Emojis not changing in Gboard
- Clear Gboard app cache: Settings β Apps β Gboard β Storage β Clear Cache
- Reboot the device
- Check if
/data/fonts/files/directory was cleaned and locked withchattr +i(it should have 0 files inside) - Verify the module is enabled in your root manager
Facebook/Instagram still showing old emojis
- Force-stop the app
- Check
service.logordiagnostic_report.logfor deployment status - 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 - Note: Instagram safely uses native system font fallback directly to guarantee 100% Story editor and keyboard stability
- If not, reboot β the module re-applies on every boot
Sounds/Ringtones not appearing in Settings picker
- The module triggers MediaScanner after boot β wait ~15 seconds after reboot
- If still not visible, check if your ROM reads from
/system/product/media/audio/or/system/media/audio/ - Try clearing the MediaProvider cache: Settings β Apps β Media Storage β Clear Data β Reboot
KernelSU: Nothing is working
- You MUST install a metamodule (e.g.,
meta-overlayfsx/ OverlayFS Enhanced,meta-hybrid_mount,meta-overlayfs, orNanoMount) for KernelSU to mount files into/system/ - The installer will show a warning if no metamodule is detected
- 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:
- Install DisableMiFontOverlay β a Zygisk module that disables Xiaomi's font override
- Enable Zygisk in your root manager (Magisk β Settings β Zygisk ON, or install ZygiskNext for KernelSU/APatch)
- Reboot the device
- If emojis still don't change, also clear Xiaomi Themes cache: Settings β Apps β Themes β Clear Data
- Run the diagnostic tool to check status:
su -c sh /data/adb/modules/Sound_And_Emoji_IOS/dump_logs.sh - Look for
MiFontOverlayandfonts_custom.xmllines 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,
MiFontOverlayis 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:
- Install a metamodule β
meta-overlayfsx(OverlayFS Enhanced),meta-hybrid_mount,meta-overlayfs, orNanoMountis required for OverlayFS to work - Check kernel OverlayFS support:
su -c "cat /proc/filesystems | grep overlay"β if empty, your kernel lacksCONFIG_OVERLAY_FS - Try switching mount method in KernelSU Manager β Settings β try toggling between OverlayFS and Magic Mount
- Check KSU logs:
su -c "cat /data/adb/ksud.log | tail -50"β look for mount errors - Run the diagnostic:
su -c sh /data/adb/modules/Sound_And_Emoji_IOS/dump_logs.shand attach to your GitHub issue - Note: On KernelSU Next, seeing
verifiedbootstate=greenis 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
- In V2.0.12+, the neutral yellow skin tone option has been completely restored via OpenType Format 14 CMAP (UVS).
- If your keyboard was previously locked to a skin tone, long-press any hand or person emoji.
- Select the first option (the neutral yellow emoji).
- Due to Gboard's native One-Tap Skin Tone Preference feature, Gboard will immediately apply the yellow color globally across all compatible emojis.
- 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 clearto preserve offline Faster Voice Typing).
Gboard: Handshake or multi-person emojis show grey figures
- Emojis with two people or hands (e.g. handshake π€, couples π―) use Gboard's native 2-step selection matrix.
- 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).
- 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
- In V2.0.13, the module's boot cleaner and installer have been completely overhauled to protect on-device speech models (
superpacks/speechandondevice_recognizer). - 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)
- This issue has been fully resolved since V2.0.7.
- 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.
See the full changelog at update_metada/CHANGELOG.md.
- 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, anddump_logs.sh:- Layer 1 (Property Service): Queries
ro.crdroid.*,ro.lineage.*,ro.axion.*,ro.evolution.*,ro.build.description,ro.build.flavor, andro.modversion. - Layer 2 (Direct Filesystem
build.propInspection): Directly scans/system/build.prop,/system_ext/build.prop,/product/build.prop, and/vendor/build.propon 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 packagesfororg.crdroid.settings,org.lineageos.settings,org.axion, etc.
- Layer 1 (Property Service): Queries
- ROM Identification Audit in Diagnostics: Added section
[1b. ROM IDENTIFICATION AUDIT]in bothservice.shanddump_logs.sh, logging all raw queried ROM properties, matchedbuild.proplines, 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.
- 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 ROMentry to the Executive Health Summary in bothservice.shanddump_logs.sh, reporting the specific custom ROM name alongside OEM hardware metrics.
- Dynamic Metamodule Discovery: Upgraded metamodule detection in
service.shanddump_logs.shfrom hardcoded static paths to dynamic discovery (metamodule=1inmodule.propand pattern matchingmeta-*,*overlayfs*), ensuring metamodules likemeta-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
MiFontOverlaystatus check to only run when HyperOS or MIUI framework properties are active; on AOSP ROMs, it reportsN/A (AOSP / Not HyperOS β not required)instead of a false warning. - Pre-mount EmojiCompat Early Defense: Added
files/fonts/,no_backup/*emoji*, andfiles/emoji_metadata*cleanup topost-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.
- Remove Canoe False Positive Detection: Removed
green boot state + rootheuristic from canoe detection. KernelSU NEXT preservesro.boot.verifiedbootstate=greenwithout breaking verified boot, which is standard behavior β NOT an indicator ofgbl_root_canoe. Detection now relies solely on concrete evidence:efisppartition and canoe module directory presence.
- 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/EmojiCompatdownloaded fonts infiles/fonts/andno_backup/*emoji*. - Global EmojiCompat Cache Cleanup: Added
clean_emojicompat_caches()acrossservice.sh,customize.sh, andpost-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_fontscount to the Gboard diagnostic report.
- 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.xmlOverlay: Implemented dynamic XML generation for/product/etc/fonts_customization.xmlwith 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_fileandzygoteβsystem_file.
- 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.shautomatically 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.
- 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.xmlPriority): In Xiaomi HyperOS, the system font configuration (/system/etc/fonts.xml) definesMiuiColorEmoji.ttfas the primary font in the<family lang="und-Zsye">fallback chain beforeNotoColorEmoji.ttf. Previous module builds only linkedMiuiEmoji.ttf, leavingMiuiColorEmoji.ttfstock and unreplaced. - Complete OEM Emoji Mapping: Explicitly mapped both
MiuiColorEmoji.ttfandMiuiEmoji.ttfincustomize.shand 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.shandservice.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.ttfandMiuiEmoji.ttfacross/system/fontsand/product/fontsinservice.log.
- 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) andmeta-hybrid_mount(Hybrid Mount) with error 22 (EINVAL) or path conflict errors. - Intelligent Partition Reconciliation (Anti-Collision): Eliminates nested mount collisions between
$MODPATH/system/productand$MODPATH/productby 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), guaranteeingMiuiEmoji.ttfis always mapped in both/system/fontsand/product/fonts.
- 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 destructivepm 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.
- 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'sPaint.hasGlyph()validation. - Disable GMS Fonts Provider: In
service.sh, permanently disabledcom.google.android.gms.fonts.provider.FontsProviderandUpdateSchedulerServiceacross 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) incustomize.shexclusively 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.
- 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
cmapFormat 14 (UVS) for0xFE0F. When missing, Minikin returnsfalseforhasGlyph, 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
cmapFormat 14 subtable (platformID=0, platEncID=5) mapping all Unicode emoji variation sequence bases for0xFE0F.
- iOS Flag Emojis & Authentic Apple Styling (Issue #8): Replaced all flag bitmaps inside
NotoColorEmoji.ttfwith genuine Apple iOS flag bitmaps sourced fromAppleColorEmoji.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.shmirrors the complete font to all partitions, andpost-fs-data.sh/service.shlock/data/fonts/files/(chattr +i).
- OxygenOS / ColorOS Camera Fix (Issue #7): Native camera app (OplusCamera) broke when
resetpropoverrode camera sound properties on OPPO/OnePlus/Realme. - Runtime OEM Detection: Added detection logic via
ro.oplus.image.my_manifest,ro.product.manufacturer(oppo/oplus), andro.product.brand(oneplus/realme). - Conditional Camera Property Override: Camera sound
resetpropcalls are now skipped on OPPO/OnePlus/Realme devices, keeping native camera stability while all other iOS sounds work normally.
- Flag Emoji Fix (Issue #8): Locked
/data/fonts/files/withchattr +ito prevent Google Play Services from re-downloading stockNotoColorEmojiFlags.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.
- Touch Sound Preference Preserved (Issue #9): Removed forced
sound_effects_enabled=1anddtmf_tone=1fromservice.shandboot-completed.sh. The module no longer overrides user settings on reboot. - Emoji Persistence (Issue #8): Extended the background Emoji Watcher Daemon in
service.shto monitor and clean/data/fonts/files/, wipe Google Play Services font caches, and continuously re-apply iOS emojis across apps without CPU overhead.
- 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.shandpost-mount.shexecution, complete lowercase keypress audio aliases, and dual-phaseSettingsProviderandresetpropinjection. - Gboard & Font Protection: Preserves keyboard preferences (including Sound on Keypress) while clearing dynamic emoji packs and preventing Google Play Services OTA font rollbacks.
- Absolute Keyboard Flicker Fix: Replaced the Instagram
FacebookEmoji.ttfwith a standard text font (Roboto-Regular) to safely bypass a nativeEmojiCompatcrash when replying to Stories, gracefully forcing the app to fall back to the system iOS emojis.
- 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.
- HyperOS Instagram Stories Crash Fix: Changed permissions of
FacebookEmoji.ttfto644to prevent an unhandled permission exception during Instagram's font validation checks. - Meta Emoji Watcher Daemon: Added an ultra-lightweight background daemon to
service.shthat actively watches for Instagram's attempts to revert the iOS emojis and silently restores them.
- Stories Keyboard Crash Fix: Changed the SELinux context of the Instagram emoji font from
app_data_filetosystem_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.
| 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!