Modules / zygisk-sui

Zygisk - Sui

Fork by XiaoTong. Modern superuser interface implementation for Android root apps.

README

Sui

🇨🇳中文README | 🇯🇵日本語README

Modern super user interface (SUI) implementation for Android. The name, Sui, also comes from a character.

Introduction

Sui provides Java APIs, namely Shizuku API, for root / shell apps. It mainly provides two abilities:

  1. Use Android Framework APIs directly, almost as if calling system APIs from Java as root or shell.
  2. Start an app-defined AIDL-style Java service under root or shell.

This makes privileged Android app development much more comfortable.

Another advantage is that Sui does not add binaries to PATH and does not install a standalone manager app. This means we no longer need to spend a huge amount of time fighting apps that detect them.

To be clear, the full implementation of “root” is far more than su itself. There is a lot of hard work to be done before it. Sui is not a full root solution. It requires an existing root environment and runs as a Zygisk module.

Why "su" is unfriendly for app development

su, a “shell” running as root, is too far from the Android world.

To explain this, we need to briefly talk about how system APIs work. For example, we can use PackageManager#getInstalledApplications to get the app list. This is actually an inter-process communication (IPC) process between the app process and the system_server process. The Android Framework just hides the details for us.

Android uses Binder for this type of IPC. Binder allows the server side to learn the uid and pid of the client side, so system_server can check whether the app has permission to perform the operation.

Back to su. In a su environment, we usually only have commands provided by the Android system. In the same example, to get the app list with su, we have to run pm list. This is painful:

  1. Text-based output: there is no structured data like PackageInfo in Java. You have to parse text.
  2. Slow: running a command means at least one new process is started, and PackageManager#getInstalledApplications is still called inside pm list.
  3. Limited ability: commands only cover a small part of Android APIs.

Although it is possible to use Java APIs as root with app_process through libraries such as libsu or librootjava, transferring Binder objects between the app process and the root process is painful. If you want the root process to run as a daemon, once the app process restarts, there is no cheap way to get the Binder of the root process again.

In fact, for Magisk and other root solutions, making su work is not as easy as some people think. Both su itself and the communication between su and the manager app involve a lot of unpleasant work behind the scenes.

User guide

Note: the behavior of existing apps that only support su will NOT change.

Install

You can install Sui directly in KernelSU or another compatible root manager such as Magisk or APatch. Or download the zip from release and use Install from storage in your root manager.

Sui requires a compatible root environment. On Magisk, this means Magisk 24.0+ with Zygisk enabled. On KernelSU or APatch, it additionally requires a separate Zygisk implementation such as Zygisk Next, ReZygisk, or NeoZygisk. Do not add SystemUI or Settings to Zygisk DenyList, otherwise the injected management UI may not work properly.

Management UI

  • Long press the System Settings icon on the home screen to see the Sui shortcut
  • In the Sui management interface, tap the menu button in the top-right corner and select Add shortcut to home screen
  • Enter *#*#784784#*#* in the default dialer app
  • Open the Sui management interface via the Action button in KernelSU/Magisk manager

Note: On some systems, the Sui shortcut may not appear when long-pressing Settings.
Additionally, to avoid disturbing users, newer versions have removed the feature that automatically prompts to add a shortcut when entering Developer options.

Permission modes

Sui stores permission states by UID. The main modes are:

  • Ask / default: the app can connect to Sui and request permission through the normal flow.
  • Allow root: the app will be routed to the root backend.
  • Allow shell: the app will be routed to the shell backend.
  • Deny: deny the app from using Sui.
  • Hide: hide Sui from the target app. When Hide is enabled, the target app UID is intercepted in the Native Binder execTransact stage. Its Sui bridge transaction is swallowed before it can enter BridgeService and obtain the Sui Binder.

When the permission state changes, Sui may force-stop affected apps to cut off old Binder handles and make them obtain the correct backend on the next launch.

Interactive shell

Sui provides an interactive shell.

Since Sui does not add files to PATH, the required files need to be copied manually. See /data/adb/sui/post-install.example.sh to learn how to do this automatically.

After the files are correctly copied, use rish as sh to start an interactive shell.

adb root

Sui also provides optional adb root support. When enabled, Sui sets up an adbd wrapper plus preload hook so that adbd can run under the current root implementation’s SELinux domain while keeping the expected adbd socket label.

This feature is disabled by default. Enable it by creating one of the following marker files from a root shell, then reboot so Sui can apply the setup during post-fs-data:

  • Enable for the next boot only:

    touch /data/adb/sui/enable_adb_root_once
    
  • Enable persistently for every boot:

    touch /data/adb/sui/enable_adb_root
    

After reboot, use adb root normally.

To disable the persistent mode again:

rm /data/adb/sui/enable_adb_root

This feature depends on your root implementation and SELinux policy. Sui checks the required setcurrent, dyntransition, and setsockcreate permissions before enabling it. Existing app behavior does not change. This only affects the device adbd path. If your device uses a heavily customized adbd implementation, compatibility may vary.

Application development guide

Sui app development should still primarily follow the upstream Shizuku API documentation:

https://github.com/RikkaApps/Shizuku-API

Apps are recommended to use rikka.shizuku.Shizuku as the unified compatibility layer. Do not maintain a Sui-only code path. In this way, one wrapper can support both Shizuku and Sui.

In the normal integration pattern, you only need ShizukuProvider plus the regular Shizuku API flow. ShizukuProvider already attempts Sui initialization automatically, so app code usually does not need to import or call rikka.sui.Sui directly.

If you intentionally disable ShizukuProvider’s automatic Sui initialization, you can still call Sui.init(packageName) manually inside your wrapper. If it receives a Binder, it passes it to the Shizuku API layer; if not, the app can continue with the normal Shizuku flow.

Example pattern with the normal auto-initialization flow:

import android.content.pm.PackageManager
import android.content.pm.IPackageManager
import rikka.shizuku.Shizuku
import rikka.shizuku.ShizukuBinderWrapper
import rikka.shizuku.SystemServiceHelper

fun initPrivilegedApi() {
    Shizuku.addBinderReceivedListener {
        checkShizukuPermission()
    }

    if (Shizuku.pingBinder()) {
        checkShizukuPermission()
    }
}

fun checkShizukuPermission() {
    if (Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) {
        val binder = SystemServiceHelper.getSystemService("package")
            ?: return

        val pm = IPackageManager.Stub.asInterface(
            ShizukuBinderWrapper(binder)
        )

        pm.isPackageAvailable("android", 0)
    } else {
        Shizuku.requestPermission(0)
    }
}

If you want manual initialization instead, add import rikka.sui.Sui and call Sui.init(packageName) before waiting for the binder.

Common APIs include:

  • Shizuku.pingBinder()
  • Shizuku.checkSelfPermission()
  • Shizuku.requestPermission(requestCode)
  • Shizuku.getUid(), which can be used to check the current backend identity, for example 0 for root and 2000 for shell
  • SystemServiceHelper.getSystemService(name)
  • ShizukuBinderWrapper, used to wrap Android Framework service binders
  • bindUserService(), used to start an app-defined Java service running as root or shell

Build

Note: Clone the repository with submodules, otherwise required API projects will be missing.

git clone --recurse-submodules https://github.com/XiaoTong6666/Sui.git

Gradle tasks:

BuildType could be Debug or Release.

  • :module:assemble<BuildType>

    Build the module. After assemble finishes, the flashable module zip will be generated to out.

  • :module:zip<BuildType>

    Generate the flashable module zip to out.

  • :module:push<BuildType>

    Push the zip with adb to /data/local/tmp.

  • :module:flash<BuildType>

    Install the zip with adb shell su -c magisk --install-module.

  • :module:flashWithKsud<BuildType>

    Install the zip with adb shell su -c ksud module install.

  • :module:flashAndReboot<BuildType>

    Install the zip and reboot the device.

  • :module:flashWithKsudAndReboot<BuildType>

    Install the zip with ksud and reboot the device.

For example:

./gradlew :module:assembleRelease
./gradlew :module:zipRelease
./gradlew :module:flashRelease

Troubleshooting

Capture Sui logs

adb logcat -v time | grep -i sui

How to report problems

If you need to report a problem, please provide logs reproduced on a debug build.

  • Install or flash a debug build of Sui and reproduce the issue.
  • If you use KernelSU or APatch, export logs from the root manager first. These logs are usually more complete for module mounting, Zygisk injection, SELinux, and early boot/runtime issues.
  • Also capture Sui logs.
  • Include basic environment information:
    • root implementation and version
    • Zygisk implementation and version
    • Android version / ROM
    • whether SystemUI or Settings is in DenyList
    • exact reproduction steps

If the issue cannot be reproduced on the debug build and only happens on release builds, include a short description of the release-only behavior and the exact reproduction steps.

Cannot access the Sui management interface

  • Your root environment is supported (Magisk with Zygisk enabled, or KernelSU/APatch with a compatible Zygisk implementation).
  • SystemUI and Settings are not included in the Zygisk DenyList.
  • The device has been rebooted after installing or updating Sui.

Optional features do not work as expected

  • Reboot once after changing Sui module files or marker files.
  • If needed, export logs from KernelSU / APatch and capture Sui logs.
  • If needed, also inspect the files under /data/adb/sui/ to confirm marker files and generated artifacts are present.

Internals

Sui requires Zygisk. Zygisk allows us to inject into system_server, SystemUI, Settings and related app processes.

Overall, there are five main parts, and an optional adb root path:

  • Root process

    This is a root process started by the root implementation during the post-fs-data stage. It starts a Java server that implements Shizuku API and private APIs used by other parts.

    The root server is the main source of permission configuration. It maintains the UID permission database and syncs hidden, root allowed, shell allowed, denied and default mode states to system_server.

  • Shell process

    The shell server runs as shell and serves apps granted with shell permission.

    It loads UID permission states from the configuration file mirrored by the root server. When the shell backend needs to show a permission confirmation window, it delegates the request to the root server, which then triggers the SystemUI confirmation UI.

  • SystemServer inject

    • Hooks Binder#execTransact to intercept the dedicated Binder transaction used by Sui inside system_server
    • Keeps the root binder, shell binder, and permission caches for hidden/root allowed/shell allowed/denied/default mode
    • Chooses which backend Binder to return based on the UID’s effective permission: root gets the root binder, shell gets the shell binder
    • For hidden UIDs, blocks the Sui bridge request directly; for ask/deny, still returns the root binder so the client can continue through the normal permission or denial result flow
  • SystemUI inject

    • Opens the Sui APK fd from Sui service and loads Sui Resources plus the permission dialog class
    • Attaches to the service and shows permission confirmation dialogs on callback
    • Registers secret-code style entry points and, when triggered, launches the Sui management UI hosted in the Settings process
  • Settings inject

    • Opens the Sui APK fd from Sui service and loads Sui Resources plus SuiActivity
    • Replaces ActivityThread instrumentation during Settings process startup
    • Maintains dynamic/pinned shortcuts and handles pinned-shortcut requests relayed from SystemUI
    • When the target Activity intent carries the Sui extra and token, instantiates and displays SuiActivity instead
  • adbd wrapper / preload (optional)

    • During post-fs-data, when adb root support is enabled, Sui prepares an adbd wrapper and preload library for /apex/com.android.adbd/bin/adbd or /system/bin/adbd
    • The wrapper rewrites --root_seclabel=... to the current root implementation’s SELinux domain and injects LD_PRELOAD
    • The preload hook intercepts selinux_android_setcon() / setcon() so adbd can switch into the root domain while restoring sockcreate to the expected adbd label

License

Sui is licensed under GPL-3.0-or-later.

Release History

v516-3463311

Published on July 15, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (516-3463311-release)
  • VersionCode: 516
  • Commit: 3463311
  • Build time: 2m 47s
  • SHA256: da46b4b36403afccf66658e88ad051431233c8b849a3189a05b57adb5a02c55d

Message

fix(ci): 统一模块仓库发布 Tag 检查,避免重复删

v514-82077dd

Published on July 15, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (514-82077dd-release)
  • VersionCode: 514
  • Commit: 82077dd
  • Build time: 4m 07s
  • SHA256: c05ab30f410bc6e4ef5bc65dee0035470a6fa3ab9bb8dc0de25d3940f515db4b

Message

chore(deps): 更新 AGP 9.3.0 和 Kotlin 2.4.10

v513-7ca7d93

Published on July 14, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (513-7ca7d93-release)
  • VersionCode: 513
  • Commit: 7ca7d93
  • Build time: 5m 37s
  • SHA256: 1b95b6ea1cc1330aa1448ee018772d12d361aeec472c65448aeebedd07cc0dd4

Message

ci: 更新 GitHub Actions 依赖引用

v510-855fc84

Published on July 13, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (510-855fc84-release)
  • VersionCode: 510
  • Commit: 855fc84
  • Build time: 4m 22s
  • SHA256: 8f79ba567eac9c269f4dd6d7d01db38f76856144ff98e48f74637380b0dacf31

Message

build(deps): bump org.bouncycastle:bcutil-jdk18on from 1.84 to 1.85 (#78)

Co-authored-by: xiaotong6666 <xiaotong6666@users.noreply.github.com>

v509-7a063e8

Published on July 8, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (509-7a063e8-release)
  • VersionCode: 509
  • Commit: 7a063e8
  • Build time: 2m 41s
  • SHA256: 8d53aea0b8635379ff22a9b722d21fd911ace002524b0217d7da78c11dacbbcb

Message

fix(ci): 模块仓库版发布前创建空提交,确保每个 Tag 指向独立 Commit

v508-f8735e4

Published on July 4, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (508-f8735e4-release)
  • VersionCode: 508
  • Commit: f8735e4
  • Build time: 3m 47s
  • SHA256: 091aa6fc9ed126805060791b4ae113381861a024ebe471b513dec064f65edf6a

Message

refactor(ui/build): 移除冗余依赖以减小应用体积

- 移除 Rikkax,迁移至 AndroidX
- 移除一些第三方库,新增本地工具类作为替代
- 优化并精简 ProGuard 混淆规则
- 优化构建脚本打包逻辑喵

v505-c7a1b79

Published on July 4, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (505-c7a1b79-release)
  • VersionCode: 505
  • Commit: c7a1b79
  • Build time: 4m 40s
  • SHA256: c930daa48a9ea215619d29f5aeff56d0e73c4c8a8fc589411a32884fc0afa64d

Message

refactor(build): 迁移所有模块的构建脚本至 Kotlin DSL
- 将 ui, module 模块的 `build.gradle` 重构为 `build.gradle.kts`
- 重构 Groovy 语法为 Kotlin DSL

v504-65dbe41

Published on July 4, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (504-65dbe41-release)
  • VersionCode: 504
  • Commit: 65dbe41
  • Build time: 4m 07s
  • SHA256: 3b281381a93350259e2c2e0b730358c789573de8b16532af2f5031cc3a38a7a3

Message

build(deps): bump com.diffplug.spotless from 8.7.0 to 8.8.0 (#74)

Bumps com.diffplug.spotless from 8.7.0 to 8.8.0.

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.8.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dependabot[bot] <xiaotong6666@users.noreply.github.com>

v503-812b88a

Published on June 29, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (503-812b88a-release)
  • VersionCode: 503
  • Commit: 812b88a
  • Build time: 1m 20s
  • SHA256: 205c5fb5d06732413b92a87e234d6591f3d5fb27233d1e7402468f4a0d4bb861

Message

build(deps): bump gradle-wrapper from 9.6.0 to 9.6.1 (#73)

Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.6.0 to 9.6.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.6.0...v9.6.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

v502-5110aac

Published on June 21, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (502-5110aac-release)
  • VersionCode: 502
  • Commit: 5110aac
  • Build time: 2m 31s
  • SHA256: 65d53271a8fbc78b7839f70532ab902f53a54d5c9d44e3c552478af7fc74d53c

Message

fix(api): 使用监听器快照分发回调并兼容 API 23

v501-3a5788f

Published on June 21, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (501-3a5788f-release)
  • VersionCode: 501
  • Commit: 3a5788f
  • Build time: 3m 08s
  • SHA256: f691ea6d0331eb677f336a256f3a8a7dfba3a5d9879a9c66cc3b89146643e20e

Message

refactor(module): 优化旧版本兼容性并清理 lint 警告

- 使用 RequiresApi 替换 TargetApi
- 替换不兼容旧版本的 Java API 用法
- 添加 hidden API 调用 lint 抑制
- 优化快捷方式处理逻辑

v499-5b16450

Published on June 20, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (499-5b16450-release)
  • VersionCode: 499
  • Commit: 5b16450
  • Build time: 1m 13s
  • SHA256: 23357b4fbc756167d786ddadab36d7e7d659a9a05eea6a2a4a0d8d15a34df8d1

Message

fix: 修复权限委托回调冲突并统一 effective flags 状态

- 将 delegated permission callback key 纳入 requestCode,避免相同 uid/pid 请求互相覆盖
- 在 AppInfo 中保存实际生效权限状态,避免 UI 层重复推导权限逻辑
- 保持 Parcelable 数据兼容旧版本权限字段格式
- 同步管理页面状态更新逻辑,统一使用 effectiveFlags

v498-e8e633d

Published on June 19, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (498-e8e633d-release)
  • VersionCode: 498
  • Commit: e8e633d
  • Build time: 4m 18s
  • SHA256: db5bb5cd441ff10396a64dcf43e4dba230f445f031df0d2155f14eb36103fb49

Message

build(deps): bump gradle-wrapper from 9.5.1 to 9.6.0 (#71)

Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.5.1 to 9.6.0.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.5.1...v9.6.0)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XiaoTong6666 <XiaoTong6666@users.noreply.github.com>

v497-d74a34e

Published on June 18, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (497-d74a34e-release)
  • VersionCode: 497
  • Commit: d74a34e
  • Build time: 3m 34s
  • SHA256: 22687f005161811648a21aa400cb7622725876cfdac3573832867bec76426e9e

Message

build(deps): bump lifecycle from 2.10.0 to 2.11.0 (#70)

Bumps `lifecycle` from 2.10.0 to 2.11.0.

Updates `androidx.lifecycle:lifecycle-viewmodel-ktx` from 2.10.0 to 2.11.0

Updates `androidx.lifecycle:lifecycle-livedata-ktx` from 2.10.0 to 2.11.0

---
updated-dependencies:
- dependency-name: androidx.lifecycle:lifecycle-viewmodel-ktx
  dependency-version: 2.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.lifecycle:lifecycle-livedata-ktx
  dependency-version: 2.11.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XiaoTong6666 <XiaoTong6666@users.noreply.github.com>

v496-743e9c3

Published on June 17, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (496-743e9c3-release)
  • VersionCode: 496
  • Commit: 743e9c3
  • Build time: 4m 25s
  • SHA256: 3fe75ad0c02fb2a3c96afe511e426ab1eec0c87945777b307ba71f14863995ee

Message

build(deps): bump com.diffplug.spotless from 8.6.0 to 8.7.0 (#69)

Bumps com.diffplug.spotless from 8.6.0 to 8.7.0.

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.7.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: XiaoTong6666 <110387028+XiaoTong6666@users.noreply.github.com>

v495-b3c27cc

Published on June 8, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (495-b3c27cc-release)
  • VersionCode: 495
  • Commit: b3c27cc
  • Build time: 3m 20s
  • SHA256: 1db7fe6a93f8158a7caa084515e419887082d869652484b8d96ea46542ab51f5

Message

fix: 修复默认隐藏未进入 binder 拦截链路 (#68)

v494-fde2611

Published on June 5, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (494-fde2611-release)
  • VersionCode: 494
  • Commit: fde2611
  • Build time: 3m 46s
  • SHA256: 5516a7ab3c446d9e221aef49a1dbe5f9411aaa9f760a973c7df6271c351e1a15

Message

build(deps): bump core from 1.18.0 to 1.19.0 (#66)

Bumps `core` from 1.18.0 to 1.19.0.

Updates `androidx.core:core` from 1.18.0 to 1.19.0

Updates `androidx.core:core-ktx` from 1.18.0 to 1.19.0

---
updated-dependencies:
- dependency-name: androidx.core:core
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: androidx.core:core-ktx
  dependency-version: 1.19.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

v493-7804f7b

Published on June 3, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (493-7804f7b-release)
  • VersionCode: 493
  • Commit: 7804f7b
  • Build time: 4m 06s
  • SHA256: b484a4f2056e6e6e1235a06ad12f581ba435cbfc7b33855637b3806c4512a021

Message

build(deps): bump org.jetbrains.kotlin.android from 2.3.21 to 2.4.0 (#67)

Bumps [org.jetbrains.kotlin.android](https://github.com/JetBrains/kotlin) from 2.3.21 to 2.4.0.
- [Release notes](https://github.com/JetBrains/kotlin/releases)
- [Changelog](https://github.com/JetBrains/kotlin/blob/master/ChangeLog.md)
- [Commits](https://github.com/JetBrains/kotlin/compare/v2.3.21...v2.4.0)

---
updated-dependencies:
- dependency-name: org.jetbrains.kotlin.android
  dependency-version: 2.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

v492-11af908

Published on June 2, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (492-11af908-release)
  • VersionCode: 492
  • Commit: 11af908
  • Build time: 3m 13s
  • SHA256: 3e79057035436ee82678e3586e0c33822fe558b14baf18247397f40bc7187384

Message

fix: 兼容 Android TV settings 包名回退 #65

- 新增 SettingsPackages,统一维护 TV settings 与普通 settings 的候选包名
- 安装阶段优先解析实际存在的 settings 包,并将其应用信息写回原有 canonical 文件名
- SuiService 改为支持多个 settings 包名候选,避免仅识别 com.android.settings
- ManagerProcess 与 SuiShortcut 改为按候选包名选择 settings 目标
- Uninstaller 卸载时同时清理两个 settings 包下的动态快捷方式

v491-f07da10

Published on June 1, 2026
Download

同步自 主仓库 构建产物喵

  • Version: v13.5.4.3 (491-f07da10-release)
  • VersionCode: 491
  • Commit: f07da10
  • Build time: 2m 57s
  • SHA256: 36e002f391801860f8b15860e50fbdfc6076d452c9882db2e9980c97e6b02882

Message

fix(build): 修复 ktlint rule 禁用格式以适配 ktlint 1.x

Module Details

Module ID
zygisk-sui
559
Stars
20
Releases

Latest Version

v516-3463311
Released 7/15/2026
Download Now