中文说明 | English
DPIS is an LSPosed/Xposed-based Android module for per-app display tuning (virtual width + font size) without changing global system display settings.
- Configure per-app virtual width (
dp) - Configure per-app font scale (
50-300%) - Both width and font support
EmulationandReplacementmodes - App list search and filtering (
All apps/Configured apps) - System-layer hook toggle and safe mode
- Android 8.0+ (
minSdk 26) - Rooted device
- LSPosed/Xposed installed and enabled
- Enable the DPIS module in LSPosed.
- Select the target app in scope. In regular cases you do not need
system. - Open DPIS and configure:
- Virtual width (
dp) - Font scale (
50-300%) - Width mode and font mode (
Emulation/Replacement)
- Virtual width (
- 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.
| 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 |
Off: only uses in-process overrides for the target app. Recommended withReplacement.On: enables the fullsystem_serverpath, 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.
Log outputis recommended off by default to reduce overhead.- When enabled, high-frequency
system_serverentries are sampled and deduplicated. - Font debug stats and overlay are diagnostic tools only and are not required for the normal apply path.
./gradlew :app:assembleModern101Debug :app:assembleCompat100Debug
./gradlew :app:testAllDebugUnitTestsOptional 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" }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)
| 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.
- Chinese README: ../README.md
- Active docs: README.md
- Archived docs: archive/README.md
DPIS is released under GPL-3.0-or-later.
DPIS references ideas and implementation patterns from the following open-source projects:
DPIS runs in a Root/LSPosed environment and carries stability and compatibility risks. Back up important data first and evaluate the risks before use.