让终端直接使用 Device Owner。
这个项目的出发点很简单:让 Termux 里的终端命令,借用 Device Owner 的权限完成普通 shell 做不到的事,而不是必须先 root 或长期依赖电脑 ADB。
它不是 root 工具,也不修改系统分区。运行时由 Dhizuku 担任 Device Owner,由 Shizuku 提供无 root 的 shell 通道,owner 负责把两者接起来。
Termux
│ ~/dex/owner
▼
app_process + own.dex (sysr.Main)
│
├─ Shizuku rish ──► Android shell (uid 2000)
│ pm / appops / settings / cmd
│
└─ Dhizuku ────────► Device Owner
install / uninstall / DPM / transfer
- Termux:命令入口。
- Shizuku:提供 uid 2000 的 shell 复用通道。
- Dhizuku:实际持有 Device Owner 权限。
- owner:本项目的 CLI 和 dex,负责命令分发、Dhizuku 调用和静默安装。
本仓库只包含 owner 自身的源码和现有产物:
owner/
owner # CLI 脚本
own.dex # 现有构建产物
src/sysr/Main.java # 命令入口、shell/Dhizuku 分发
src/sysr/Owner.java # Dhizuku/Device Owner 调用
src/sysr/Observer.java
Shizuku、Dhizuku、Termux:API 都是独立项目;本仓库不包含它们的完整源码。
own.dex 是现有构建产物。重新构建 owner 源码需要 Android framework 的 android.jar 以及 Shizuku 的 rish bootstrap 类;仓库只保留 owner 自身源码,不内置这些第三方依赖。
Termux:API 的魔改源码在另一个仓库:
https://github.com/httpspycharmhelpers/Termux-API-Dhizuku
Release 页面提供三个文件:
| 文件 | 说明 |
|---|---|
Termux-Owner-v1.0.0.zip |
owner 脚本 + own.dex |
Termux-API-Dhizuku-v0.53.0.apk |
带 Dhizuku/Device Owner 集成的 Termux:API |
Shizuku-v13.6.0.apk |
第三方 Shizuku 安装包,原样分发 |
SHA256SUMS 也在 Release 中。
mkdir -p ~/dex
unzip Termux-Owner-v1.0.0.zip -d ~/dex
chmod +x ~/dex/owner
~/dex/owner -c admins前置条件:
- Termux 已安装。
- Shizuku 已启动,Termux 已获授权。
- Dhizuku 已取得 Device Owner。
- 已安装
Termux-API-Dhizuku,并打开过一次应用,让com.termux.api.ownerprovider 处于可用状态。 - Termux:API 已获得 Dhizuku API 权限。
# 查看 Device Owner / active admins
~/dex/owner -c admins
# 纯 Dhizuku 静默安装(不需要 Shizuku 的 pm install)
~/dex/owner -c install /sdcard/Download/app.apk
# 通过 Shizuku shell 执行
~/dex/owner shell 'pm list packages | head'
# 冻结、解冻、强制停止
~/dex/owner freeze com.example.app
~/dex/owner unfreeze com.example.app
~/dex/owner force-stop com.example.app
# Device Owner 管理(动态 DPM,借用 Dhizuku owner 身份)
~/dex/owner -c dpm status
~/dex/owner -c dpm camera off # 禁用摄像头
~/dex/owner -c dpm camera on # 启用摄像头
~/dex/owner -c dpm keyguard on # 启用锁屏
~/dex/owner -c dpm keyguard off # 禁用锁屏
~/dex/owner -c dpm lock # 立即锁屏
~/dex/owner -c dpm user-list
~/dex/owner -c dpm grant com.example.app android.permission.SOME_PERMISSION
~/dex/owner dpm transfer com.example/.AdminReceiver
~/dex/owner install-existing com.example.app完整用法:
~/dex/owner help发布 APK 的签名证书已核对:
- DN:
CN=APK Signer, OU=Earth, O=Earth - SHA-256:
b6da01480eefd5fbf2cd3771b8d1021ec791304bdd6c4bf41d3faabad48ee5e1 - SHA-1:
517955eabf69fc057c41c7d379dbbcef20ad85f2
这是开发/测试签名。要发布正式版,应使用自己的 release keystore 重新签名;更换签名后旧版本无法直接覆盖安装。
- DN:
CN=Rikka - SHA-256:
268b5590e868fb08bae7e0ac413564cd1ff88f5ccff74af9dbd0dc918e30db30 - SHA-1:
2900b8e762737549d63c41056906b5cdaeef6e18
该 APK 为已安装版本的原样副本,未做二次签名。
fcb7a7ccdbf48d8251f6a53e6f7390eddc3613530903f4beeaf186874fc9983a Termux-Owner-v1.0.0.zip
9702c8af1d5d1bbd17c325cf81c34dab36fc72b43e87e6325bd9e02694f632f7 Termux-API-Dhizuku-v0.53.0.apk
6e273ab0e991c4e79bc8b1bbb9b9dd739ccac1a8712a541a214078886b7b790f Shizuku-v13.6.0.apk
owner的能力来自 Device Owner 和 Shizuku;请只在你信任的设备和应用上使用。owner -c会通过com.termux.api.ownerprovider 执行命令;该 provider 使用android.permission.DUMP保护。- 不要在不可信脚本中传入未知包名或未知 Device Owner 组件。
- 本工具不提供 root,不修改系统分区,也不绕过 Android 的签名校验。
本仓库中 owner 自身代码以 GPL-3.0 发布。第三方组件保留各自许可证,见 NOTICE.md。