Skip to content

Latest commit

 

History

History
123 lines (86 loc) · 5.1 KB

File metadata and controls

123 lines (86 loc) · 5.1 KB

DPIS

GitHub Release License

中文说明 | English

DPIS is an LSPosed/Xposed-based Android module for per-app display tuning (virtual width + font size) without changing global system display settings.

Core Capabilities

  • Configure per-app virtual width (dp)
  • Configure per-app font scale (50-300%)
  • Both width and font support Emulation and Replacement modes
  • App list search and filtering (All apps / Configured apps)
  • System-layer hook toggle and safe mode

Requirements

  • Android 8.0+ (minSdk 26)
  • Rooted device
  • LSPosed/Xposed installed and enabled

Quick Start

  1. Enable the DPIS module in LSPosed.
  2. Select the target app in scope. In regular cases you do not need system.
  3. Open DPIS and configure:
    • Virtual width (dp)
    • Font scale (50-300%)
    • Width mode and font mode (Emulation / Replacement)
  4. Save, then restart the target app process. Reboot the device if needed.

If you use Emulation, also enable system scope in LSPosed. Replacement usually does not need it.

Modes

Mode Characteristics Best for Notes
Emulation Closer to native system behavior, usually more natural System-like rendering consistency Depends on system-layer hooks; some apps do not support it
Replacement Direct field rewrite, more immediate Most regular apps May cause layout drift or scaling glitches

System-Layer Hook and Safe Mode

  • Off: only uses in-process overrides for the target app. Recommended with Replacement.
  • On: enables the full system_server path, useful for debugging and comparison.
  • On + Safe mode: limits hooks to lower-risk entries (activity-start), recommended as the default.

If you use Emulation, make sure LSPosed scope includes system. Replacement can usually work with only the target app selected.

Logs and Diagnostics

  • Log output is recommended off by default to reduce overhead.
  • When enabled, high-frequency system_server entries are sampled and deduplicated.
  • Font debug stats and overlay are diagnostic tools only and are not required for the normal apply path.

Build and Test

./gradlew :app:assembleModern101Debug :app:assembleCompat100Debug
./gradlew :app:testAllDebugUnitTests

Optional install commands (Windows PowerShell):

./gradlew :app:assembleModern101Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/modern101/debug/app-modern101-debug.apk" }
./gradlew :app:assembleCompat100Debug; if ($LASTEXITCODE -eq 0) { adb install -r "app/build/outputs/apk/compat100/debug/app-compat100-debug.apk" }

Project Structure

app/                      Main Android module
  src/main/java/          Shared production code
  src/main/res/           Shared resources and UI
  src/modern101/java/     libxposed API 101 specific code
  src/compat100/java/     Legacy Xposed compatibility code
  src/test/java/          Unit tests
docs/                     Active documentation
docs/archive/             Historical archived documentation
refs/                     Local references (LSPosed / AOSP / libxposed)

Version Notes

Variant File name Environment
Standard DPIS_{version}.apk LSPosed (libxposed API 101+)
Legacy DPIS_{version}_legacy.apk Classic Xposed / frameworks without libxposed API 101 support

Both variants target the same user-facing feature set. The main differences are framework integration, download entry, and update behavior. Prefer the standard build and only use the legacy build when the standard one cannot load.

For the legacy build, always follow the main repo Releases page. The LSPosed / Xposed module repository only syncs the standard APK.

The standard and legacy builds cannot coexist. They share the same package name, so cross-installing them overwrites the other one and may reset existing state or configuration.

Documentation

License

DPIS is released under GPL-3.0-or-later.

References and Thanks

DPIS references ideas and implementation patterns from the following open-source projects:

Disclaimer

DPIS runs in a Root/LSPosed environment and carries stability and compatibility risks. Back up important data first and evaluate the risks before use.