ShizuStore

Shevery

HmnDev-Tech

14.1.0 · GitHub

Download APK
Shizuku implementations Android 7.0+ 1 day ago Apache-2.0 Dhizuku Recommended
806 ShizuStore
161.7k GitHub
1.2k Stars
8 MB Size

More about this app

Material 3 fork with autostart, TCP mode, Dhizuku, module support and a built-in terminal with AI integration

Shevery

Stars Forks Downloads Telegram

English | Русский | Қазақша | Qazaqşa (Latın) | Português | Español | العربية | 简体中文 | 日本語

Fork status

Important

Migration Action Required: Due to the App Signation (moe.shizuku.privileged.api -> com.hamondev.shevery), you MUST UNINSTALL any older official Shizuku Manager app from your device before installing Shevery. Otherwise, they will conflict. Upstream project reference: https://github.com/RikkaApps/Shizuku

Fork additions

  • Jetpack Compose manager UI with Material 3 Expressive components, motion, switches, and rounded icon treatment.
  • Device Owner Management & Integration: Full Device Owner management (app delegation scopes, ownership transfer, DPM-assisted ADB) inspired by and compatible with Dhizuku.
  • Biometric Security & Protection: Master switch to require biometric or device PIN/pattern/password authentication with configurable timeouts and granular action protection.
  • Dhizuku Experimental Support: Dedicated Device-Owner bridging system available inside Laboratory features.
  • Better shell/adb based "Comput" feature with Gemini Explaination, Macros and Commandium AI Command create.
  • Android 16/17 target work with current SDK/build tooling in this fork.
  • ADB Modules screen for installing and managing ZIP modules.
  • Module features: module.prop, banner, enable/disable switch, action.sh, policy-gated service.sh, local WebUI, delete, path checks, size limits, output limits, and last-run logs.
  • Module policy settings: Safe mode, Full access, and background action control.
  • Module Catalog with direct install.

Documentation

Background

When developing apps that requires root, the most common method is to run some commands in the su shell. For example, there is an app that uses the pm enable/disable command to enable/disable components.

This method has very big disadvantages:

  1. Extremely slow (Multiple process creation)
  2. Needs to process texts (Super unreliable)
  3. The possibility is limited to available commands
  4. Even if ADB has sufficient permissions, the app requires root privileges to run

Shizuku uses a completely different way. See detailed description below.

User guide & Download

https://shizuku.rikka.app/

Screenshots

Click to open Screenshots

Main Screen

Comput Console

ADB Modules

Settings

How does Shevery works?

First, we need to talk about how app use system APIs. For example, if the app wants to get installed apps, we all know we should use PackageManager#getInstalledPackages(). This is actually an interprocess communication (IPC) process of the app process and system server process, just the Android framework did the inner works for us.

Android uses binder to do this type of IPC. Binder allows the server-side to learn the uid and pid of the client-side, so that the system server can check if the app has the permission to do the operation.

Usually, if there is a "manager" (e.g., PackageManager) for apps to use, there should be a "service" (e.g., PackageManagerService) in the system server process. We can simply think if the app holds the binder of the "service", it can communicate with the "service". The app process will receive binders of system services on start.

Shizuku guides users to run a process, Shizuku server, with root or ADB first. When the app starts, the binder to Shizuku server will also be sent to the app.

The most important feature Shevery provides is something like be a middle man to receive requests from the app, sent them to the system server, and send back the results. You can see the transactRemote method in rikka.shizuku.server.ShizukuService class, and moe.shizuku.api.ShizukuBinderWrapper class for the detail.

So, we reached our goal, to use system APIs with higher permission. And to the app, it is almost identical to the use of system APIs directly.

Developer guide

API & sample

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

Migrating from pre-v11

Existing applications still works, of course.

https://github.com/RikkaApps/Shizuku-API#migration-guide-for-existing-applications-use-shizuku-pre-v11

Attention

  1. ADB permissions are limited

    ADB has limited permissions and different on various system versions. You can see permissions granted to ADB here.

    Before calling the API, you can use ShizukuService#getUid to check if Shizuku is running user ADB, or use ShizukuService#checkPermission to check if the server has sufficient permissions.

  2. Hidden API limitation from Android 9

    As of Android 9, the usage of the hidden APIs is limited for normal apps. Please use other methods (such as https://github.com/LSPosed/AndroidHiddenApiBypass).

  3. Android 8.0 & ADB

    At present, the way Shizuku service gets the app process is to combine IActivityManager#registerProcessObserver and IActivityManager#registerUidObserver (26+) to ensure that the app process will be sent when the app starts. However, on API 26, ADB lacks permissions to use registerUidObserver, so if you need to use Shizuku in a process that might not be started by an Activity, it is recommended to trigger the send binder by starting a transparent activity.

  4. Direct use of transactRemote requires attention

    • The API may be different under different Android versions, please be sure to check it carefully. Also, the android.app.IActivityManager has the aidl form in API 26 and later, and android.app.IActivityManager$Stub exists only on API 26.

    • SystemServiceHelper.getTransactionCode may not get the correct transaction code, such as android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages does not exist on API 25 and there is android.content.pm.IPackageManager$Stub.TRANSACTION_getInstalledPackages_47 (this situation has been dealt with, but it is not excluded that there may be other circumstances). This problem is not encountered with the ShizukuBinderWrapper method.

Developing Shizuku itself

Build

  • Clone with git clone --recurse-submodules
  • Run gradle task :manager:assembleDebug or :manager:assembleRelease

The :manager:assembleDebug task generates a debuggable server. You can attach a debugger to shizuku_server to debug the server. Be aware that, in Android Studio, "Run/Debug configurations" - "Always install with package manager" should be checked, so that the server will use the latest code.

How "Start(via Dhizuku)" works?

  • First, you need to start Shevery by PC/OTG or Wireless Debugging.
  • Next, start Dhizuku.
    • Do not start Shevery via Dhizuku first.

License

All code files in this project are licensed under Apache 2.0

Credits

And...

Now, you can publish your ADB module! Follow this steps:

  • Create your module.
  • Create GH Repository for this module.
  • Add topic "shevery-modules"
  • Add sources and Release with module.

Caution

Free App Notice

Shevery is a completely free app. Do not pay any third-party file managers or cloud services to download this application.

Close

How Shizuku is used

Can run shell commands, run module scripts, install helper app and manage app access via `sh -c` through Shizuku.

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

Shevery uses Shizuku to run privileged shell commands and system lookups for its console, modules, helper install and access control.

  • Run shell commands: type any command in the built in console and run saved macros, executed as a privileged shell with sh -c through Shizuku and shown with output and exit status.
  • Run module scripts: install modules from ZIP files and run their action and background service scripts with sh -c through Shizuku, including commands sent from a module Web UI.
  • Install helper package: install and uninstall the companion stub package using pm install and pm uninstall through Shizuku.
  • Keep wireless debugging on: reapply the wireless debugging flag with the settings put global adb_wifi_enabled shell command through Shizuku.
  • Manage app access: view installed apps and users and grant or revoke Shizuku access for other apps using the system package, permission and user services through Shizuku.

Android APIs or commands used

  • sh -c
  • pm install
  • pm uninstall
  • settings put global adb_wifi_enabled
  • IPackageManager.getInstalledPackages
  • IPackageManager.getPackageInfo
  • IPackageManager.getApplicationInfo
  • IPermissionManager.grantRuntimePermission
  • IPermissionManager.revokeRuntimePermission
  • IPermissionManager.checkPermission
  • IUserManager.getUsers

Notable details

The built in console treats host side adb install, adb push and adb pull as unsupported inside the on device shell and suggests on device equivalents such as pm install and cp or mv.

Close

Changelog

What's new for version 14.1.0

What's Changed

New Contributors

Full Changelog: https://github.com/HmnDev-Tech/shevery/compare/14.0.0...14.1.0

Close

Permissions

21 permissions requested

  • android.permission.RECEIVE_BOOT_COMPLETED
  • android.permission.FOREGROUND_SERVICE
  • android.permission.FOREGROUND_SERVICE_SPECIAL_USE
  • android.permission.INTERNET
  • android.permission.NEARBY_WIFI_DEVICES
  • android.permission.ACCESS_LOCAL_NETWORK
  • android.permission.USE_LOOPBACK_INTERFACE
  • android.permission.POST_NOTIFICATIONS
  • android.permission.WRITE_SECURE_SETTINGS
  • android.permission.CHANGE_WIFI_MULTICAST_STATE
  • android.permission.ACCESS_NETWORK_STATE
  • android.permission.REQUEST_INSTALL_PACKAGES
  • android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
  • android.permission.QUERY_ALL_PACKAGES
  • moe.shizuku.manager.permission.MANAGER
  • moe.shizuku.manager.permission.API_V23
  • com.hamondev.shevery.DYNAMIC_RECEIVER_NOT_EXPORTED_PERMISSION
  • android.permission.USE_BIOMETRIC
  • android.permission.USE_FINGERPRINT
  • android.permission.WAKE_LOCK
  • com.rosan.dhizuku.permission.API
Close