github thejaustin/ShizukuPlus v13.6.0.r2129

latest releases: 13.7.0.r2862, 13.7.0.r2861, 13.7.0.r2853...
3 months ago

v13.6.0.r2129 — Android 17 (SDK 37) Support

This release makes Shizuku+ work on Android 17 and hardens wireless-debugging discovery on Android 16. Two independent OS changes broke Shizuku on the latest Android; both are now handled.

⚠️ Calling all Android 16/17 testers. These fixes are verified to compile and pass lint in CI, but on-device confirmation for A17 can only come from people running it. If you're on a Pixel 9a canary/stable or any Android 16+ device, please update and report back on #317 / #323.

🤖 What broke on Android 17 — and what's fixed

1. "No authorized apps show up / permission grants fail" — hidden-API deviceId change

Android 17 inserted a new deviceId parameter into the core package- and permission-manager methods Shizuku relies on (getPackageInfo, getApplicationInfo, checkPermission, grantRuntimePermission, revokeRuntimePermission), and changed the return type of getInstalledPackages. The hidden-API library Shizuku builds against compiles the pre-17 signatures, so on Android 17 every one of those privileged calls threw NoSuchMethodError — which is why the authorized-apps list came up empty and granting permissions silently failed.

Fix: new compatibility shims (Android17Compat, InstalledPackagesCompat) that call the normal path first and, on Android 17, fall back to the new method signature (splicing in deviceId = 0) via reflection. Works transparently across Android 7 → 17.

2. "Service starts but never connects / stays STOPPED" — Local Network Protection

Android 16+ gates mDNS discovery of the wireless-debugging service — and the loopback socket that pairing/connect use — behind new permissions. Without them, the service can start on the ADB side but the manager never finds it, so it silently stays STOPPED (often with a resolved port of -1).

Fix: Shizuku+ now requests the appropriate local-network permission before pairing/starting — ACCESS_LOCAL_NETWORK on Android 17, NEARBY_WIFI_DEVICES on Android 16 — with a tiered helper that picks the right one for your OS version.

3. More reliable wireless pairing host resolution

The mDNS resolver now surfaces a normalized resolvedHost, and the two wireless-pairing connect paths use it instead of assuming a fixed address. Loopback stays byte-identical (127.0.0.1); only a genuine non-loopback local-interface address is substituted when that's what discovery returns.

🙏 Credits

  • The Android 17 compatibility approach — the hidden-API deviceId reflection and Local Network Protection handling — originates with kerneldroid's Nightzuku fork, was ported and verified on a physical Android 17 device by LandonMoran into thedjchi's fork, and is adapted here from that lineage. Thank you all.
  • Thanks to @aragortsantiago6-beep and @Scoop2389 (Pixel 9a, Android 17) and @ConversionRituals (Xiaomi, Android 16) for the crash reports and logs that pinned down the root causes.

🔎 Technical notes

  • Commit c138d0e0 (main) + 03bacbc (ShizukuPlus-API submodule).
  • The two compat shims live in the :common module — the one module the manager, server, and server-shared all depend on — so a single copy covers every call site (~30 across 8 files). See af.shizuku.common.compat.Android17Compat / InstalledPackagesCompat.
  • Scope mirrors thedjchi's fork: getInstalledPackages routes through InstalledPackagesCompat everywhere; the deviceId-affected package/permission calls route through Android17Compat in the privileged server. getPackagesForUid is not A17-affected and is unchanged.
  • Two follow-ups were reviewed and deliberately deferred (tracked in #339 stealth-mode and #340 manager-resolution), to keep this release focused on A17 reliability.

🐛 Bug Fixes

  • Android 17 support — local-network permissions, hidden-API compat shims, and mDNS-resolved pairing host (c138d0e0).

📦 Recent Releases

📣 You're viewing an older release. Here are the current builds — update for the latest fixes:

🚀 Most recent major release — v13.6.0.r2603
App Backup overhaul: search/filter the app list by name or package, back up all apps at once with a single menu tap, toggle system-app visibility, and restore external data directly from any backup file (external.tar.gz). Each row now shows the app version name and a 'no-backup' badge when android:allowBackup=false, matching what Swift Backup and Neo Backup display. The SAF export directory is surfaced in the home card summary and in the completion Snackbar. After restoring ShizukuPlus settings a persistent Snackbar offers an immediate restart so theme/language changes apply without manually force-stopping the app.

🏛️ Major release of this build's era — v13.6.0.r2129 (this release) — Android 17 (SDK 37) support

⚠️ Most recent critical fix — v13.6.0.r2590
Fixed Settings import/export silently reading/writing the wrong storage file on Android 7+ (exports were empty; imports had no effect). Fixed Feature Hub crash (ClassCastException) caused by migrateAutomationTrustedNetworks reading the wrong SharedPreferences file. Fixed AutomationService double-firing network firewall rule, not starting the app monitor for auto-hide-only users, and not restarting correctly at boot on API 24-25. Fixed WatchdogService clearing watchdog setting on transient foreground-start rejections.

Release Highlight
v13.6.0.r2602 (latest) backup: add search filter to app backup list
v13.6.0.r2601 backup: add Backup All batch operation
v13.6.0.r2600 backup: show version name and allowBackup=false badge in app list
v13.6.0.r2598 Show restart Snackbar after settings restore
v13.6.0.r2597 backup: show configured export dir in App Backup home card summary

Full Changelog

Don't miss a new ShizukuPlus release

NewReleases is sending notifications on new releases.