ShizuStore

FrameX

MaheshSharan

1.5.25 · GitHub

Download APK
Development utilities Android 8.0+ 1 week ago MIT
151 ShizuStore
26.7k GitHub
161 Stars
6 MB Size

More about this app

Real-time performance overlay for Android

FrameX

FrameX Banner

Rootless Android performance overlay featuring live FPS metering, thermal diagnostics, and privileged gaming optimization via Shizuku.

Total Downloads Version Min API Kotlin License


Note

Gaming Performance Mode adapts dynamically based on your device hardware:

  • Generic / Non-Vivo Devices: Applies standard AOSP optimizations (RAM cache purge, CPU process priority locks, network/doze bypass, and display/touch boosts).
  • Vivo / iQOO (Hardware Optimizations ON): Activates the verified OriginOS/FuntouchOS hardware suite (1080p @ 120Hz Mode 4 lock, RMS display arbitration, touch boost, and OEM daemon whitelisting).
  • Vivo / iQOO (Hardware Optimizations OFF): Safely executes only non-invasive baseline tweaks (RAM cache purge, background app suspension, and DND). Generic AOSP display/thermal overrides are deliberately bypassed to protect against 60Hz lockouts and RMS arbitration conflicts.

Important

Encountering "Parse Failed" or "Unsupported Hardware"?

If thermal monitoring displays "Parse Failed" or "Unsupported Hardware" on your device:

  1. Clone the repository and install the Debug APK (./gradlew installDebug) or download FrameX-v1.5.16-debug.apk. (Release builds strip diagnostic logs via ProGuard).
  2. Open the Thermal Diagnostics screen in FrameX.
  3. Run the following ADB commands to capture complete diagnostics:
    # 1. Capture FrameX internal thermal logs
    adb logcat -d | grep -E "ThermalMonitor|CmdRunner"
    
    # 2. Capture raw system thermal HAL dump
    adb shell dumpsys thermalservice
    
    # 3. Capture sysfs thermal zones (if dumpsys is empty/HAL Ready: false)
    adb shell "for z in /sys/class/thermal/thermal_zone*; do echo \"\$(cat \$z/type 2>/dev/null):\$(cat \$z/temp 2>/dev/null)\"; done"
    
    (On Windows PowerShell for Step 1: adb logcat -d | Select-String -Pattern "ThermalMonitor|CmdRunner")
  4. Open a GitHub Issue attaching the outputs above along with your device model, SoC, and Android/ROM version.

What it does

FrameX displays a fully customizable, low-overhead overlay on top of any application or full-screen title.

Category Telemetry & Features
Real-Time Telemetry FPS · CPU Frequencies · Thermals (CPU/GPU/Skin/NPU/Battery) · RAM Usage · Network Speed · Ping
System Optimization • Crash-Safe Snapshots: Automatic pre-game setting capture & auto-revert on exit
• Process Management: Background app suspension & Doze CPU whitelisting
• Emergency Safety: One-swipe reset slider to purge overrides back to stock OS defaults
OEM Hardware Locks • Vivo OriginOS Engine: Forces hardware Mode 4 (\(1080 \times 2400\) @ 120Hz) lock
• Triple Whitelisting: Automatic injection across 4 native OriginOS game-booster daemons

Requirements

  • Android 8.0 (API 26) or higher
  • Shizuku installed and running
  • Activate via Wireless Debugging (no PC needed on Android 11+) or ADB
  • Works with the Sui module on rooted devices

Screenshots


Onboarding 1

Onboarding 2

Dashboard (No Setup)

Dashboard (Running)

System Setup

Overlay Config

Appearance Settings

Performance Mode

Thermal Diagnostics

About & Legal

How FPS is measured

FrameX measures frame rates directly at the Android OS compositor layer using privileged IPC calls to SurfaceFlinger --timestats. Because telemetry is gathered directly from the display pipeline, it adds zero overhead to game rendering threads or GPU pipelines.

FPS Architecture Diagram


Build

Standard Android Gradle project. Requires JDK 17 and Android SDK 34.

git clone https://github.com/MaheshSharan/FrameX-Android.git
cd FrameX-Android
./gradlew assembleDebug

Permissions

Permission Why
Draw over other apps Display the overlay on top of games
Foreground service Keep the overlay alive while the screen is on
Wake lock Prevent CPU sleep during an active session
PACKAGE_USAGE_STATS Identify which game is in the foreground
REQUEST_IGNORE_BATTERY_OPTIMIZATIONS Survive aggressive OEM background-kill policies
Receive boot completed Auto-restart overlay after reboot if it was active
Internet Ping measurement to 8.8.8.8 (Google Public DNS) only
Kill background processes Used to purge cached background apps during Gaming Mode activation
Access notification policy Required to toggle Do Not Disturb mode automatically
Modify system settings Required to deploy per-game brightness, volume, and rotation overrides
Foreground service (Special Use) Ensures Gaming Mode stays active on Android 14+
Post Notifications (Android 13+) Display session status & quick-control notification controls
QUERY_ALL_PACKAGES Load installed games and apps for Game Launcher optimization
Shizuku Privileged API High-precision FPS metering (SurfaceFlinger), multi-sensor thermal diagnostics (IThermalService), ART RAM heap compaction, and OriginOS Esports hardware engine

Security & Privacy

  • No data collection — nothing is sent anywhere
  • No analytics — no Firebase, no Crashlytics, no tracking SDKs
  • No accounts — FrameX has no sign-in or user identity
  • No ads — ever
  • All data stays on-device

Full Privacy Policy


Known Limitations

A small number of metrics depend on data some device vendors don't expose. See KNOWN_LIMITATIONS.md for confirmed cases and affected devices.


Credits

  • Shizuku by RikkaW — the privileged API bridge that makes rootless system access possible. FrameX would not exist without it.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Close

How Shizuku is used

Can boost games, freeze background apps, free RAM and show live FPS, CPU, thermal and ping stats via Shizuku shell commands

This is an AI-assisted analysis of Shizuku-related usages in the app's public source code. It is best effort, so it may not catch every single usage.

How this app uses Shizuku

FrameX uses Shizuku to run privileged shell commands and system queries that power its gaming mode and live performance overlay.

  • Show live frame rate: reads the on screen frame average and missed frames with dumpsys SurfaceFlinger --timestats through Shizuku for the FPS overlay.
  • Show CPU usage: reads total CPU time via the privileged /proc/stat path through Shizuku and parses system wide usage, plus lists hot apps with dumpsys cpuinfo through Shizuku.
  • Show temperatures: reads sensor data through the privileged service using the thermal service, dumpsys thermalservice and thermal sysfs plus getprop sys.thermal.status through Shizuku for CPU, GPU, skin and battery temps.
  • Show ping: runs ping through Shizuku to measure latency to 8.8.8.8 for the overlay.
  • Freeze background apps: suspends and unsuspends selected background packages with cmd package suspend and cmd package unsuspend through Shizuku when gaming mode starts and stops.
  • Apply gaming tweaks: tunes memory, thermals, CPU priority, network and power with pm trim-caches, am compact, cmd thermalservice override-status and reset, cmd activity set-bg-restriction-level, am set-standby-bucket, cmd netpolicy, cmd deviceidle, cmd power set-fixed-performance-mode-enabled and cmd pinner through Shizuku.
  • Lock refresh rate and touch: saves current values with settings get then applies and restores peak_refresh_rate, min_refresh_rate, touch_response_speed and user_preferred_display_mode_id with settings put and settings delete through Shizuku.
  • Tune Vivo and iQOO phones: writes Vivo power, display, gyro, touch, scheduler and game list settings with content insert, content query and content delete, plus cmd device_config, pidof, dumpsys package and pm compile through Shizuku.
  • Free RAM on demand: clears caches with pm trim-caches, stops non whitelisted user apps with am force-stop and purges background processes with am kill-all through Shizuku from the manual boost action.

Android APIs or commands used

  • dumpsys SurfaceFlinger --timestats
  • cat /proc/stat
  • /proc/stat
  • android.os.ServiceManager.getService
  • android.os.IThermalService
  • dumpsys thermalservice
  • getprop sys.thermal.status
  • /sys/class/thermal/thermal_zone*
  • /sys/class/thermal/cooling_device*
  • dumpsys cpuinfo
  • ping
  • cmd package suspend
  • cmd package unsuspend
  • pm trim-caches
  • am compact
  • cmd pinner repin
  • cmd thermalservice override-status
  • cmd thermalservice reset
  • cmd activity set-bg-restriction-level
  • am set-standby-bucket
  • cmd netpolicy
  • cmd deviceidle whitelist
  • cmd deviceidle force-idle
  • cmd deviceidle unforce
  • cmd power set-fixed-performance-mode-enabled
  • cmd game reset
  • settings get
  • settings put
  • settings delete
  • content insert
  • content query
  • content delete
  • cmd device_config put
  • pidof
  • dumpsys package
  • pm compile
  • am force-stop
  • am kill-all

Notable details

CPU, ping and thermal overlays keep working in limited form without Shizuku by reading local proc files directly, running a local ping or socket probe, or using the normal thermal status API. Manual RAM boost still runs garbage collection without Shizuku. App updates install without Shizuku via a PackageInstaller session plus the unknown app sources settings screen. The privileged app ops control helper is present but has no active callers, so no related capability is exposed.

Close

Changelog

What's new for version 1.5.25

FrameX v1.5.25 (BETA)

⚠️ Beta build. If you hit any problem, please open an issue and include the Audit Console log (Performance screen).

What's new

  • Thermal throttling override is now fully opt-in. A new "Execution Center" section (About screen) shows exactly what privileged overrides Gaming Mode will apply, with a clear on/off switch and safety notes before anything touches your device's thermal limits. (#85)
  • Quick Settings tile: toggle the overlay on/off directly from your notification shade, no need to open the app. (#80)
  • Overlay: battery %, clock, and session timer are now available as overlay modules, each with its own icon. (#82)
  • Overlay: mute the "CPU hot" warning. You can now disable the high-temperature popup from settings if you don't want to be interrupted. (#82)
  • Overlay layout rebuilt for multi-metric setups:
    • Expanded mode no longer stretches across the screen with large gaps — width is now bounded and columns stay aligned. (#77)
    • Minimal and Compact modes no longer balloon in height when 4+ metrics are enabled; overlay wraps cleanly into rows instead of overflowing or breaking layout. (#77)
    • Fixed CPU Clusters label/value taking up excessive space in the overlay.

Improvements

  • Accessibility improvements across Dashboard, Onboarding, Permissions, Appearance, Overlay Customization, and About screens (better screen-reader labels, touch targets).
  • Smoother entrance animations on Onboarding and About/Splash screens.
  • Fixed a bug where freed memory (MB) was reported incorrectly after RAM cleanup on the Performance screen
Close

Permissions

19 permissions requested

  • android.permission.SYSTEM_ALERT_WINDOW
  • android.permission.PACKAGE_USAGE_STATS
  • android.permission.WRITE_SETTINGS
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK
  • android.permission.FOREGROUND_SERVICE_DATA_SYNC
  • android.permission.POST_NOTIFICATIONS
  • moe.shizuku.manager.permission.API_V23
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.WAKE_LOCK
  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.KILL_BACKGROUND_PROCESSES
  • android.permission.ACCESS_NOTIFICATION_POLICY
  • android.permission.QUERY_ALL_PACKAGES
  • android.permission.REQUEST_INSTALL_PACKAGES
  • android.permission.REQUEST_DELETE_PACKAGES
  • android.permission.INTERNET
  • com.framex.app.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
Close