Skip to content

About

Termux:API with Dhizuku Device Owner integration: silent install, owner provider, ownership transfer UI

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Termux:API-Dhizuku

Termux:API 的 Device Owner / Dhizuku 魔改版源码。

本项目的目标:让 Termux 终端不只是调用普通 Termux:API,而是可以通过 Dhizuku 的 Device Owner 能力完成静默安装、Device Owner 管理和转出。

这是修改版,不是 Termux 官方发布。上游项目:https://github.com/termux/termux-api

新增能力

  • 纯 Dhizuku 静默安装:通过 Dhizuku user service + PackageInstaller 安装 APK,不依赖 Shizuku 的 pm install。
  • Device Owner provider:content://com.termux.api.owner,供 owner CLI 调用。
  • Device Owner 转出 UI:Settings → Dhizuku / Device Owner,列出 active admins 并选择目标;仅执行转出,转回由 Dhizuku 自身完成。
  • Dhizuku 权限请求界面:DhizukuRequestActivity。
  • 静默安装结果回传:由 Termux:API 进程创建 PendingIntent,避免在 Dhizuku 用户服务进程中动态注册广播。
  • 动态 DPM 命令:通过 HiddenApiBypass + Dhizuku binder wrapper,让 DevicePolicyManager 公共 API 以 Dhizuku owner 身份执行,覆盖摄像头、USB、状态栏、用户、CA、密码策略、应用限制等 OwnDroid 功能。
  • 锁屏控制:owner -c dpm keyguard on|off 启用/禁用锁屏,owner -c dpm lock 立即锁屏。

已验证

在当前测试设备上已验证:

com.geofs.sr 2.0.17
INSTALL_SUCCEEDED: Session installed
lastUpdateTime = 2026-11-08 09:31:23

安装过程未调用 Shizuku pm install,由 Dhizuku Device Owner 的 PackageInstaller 完成。

官方 Termux:API 回归也通过:termux-battery-status、termux-toast、termux-notification、termux-clipboard-get、termux-camera-info 均正常。摄像头策略实测:启用时拍照约 5.9 MB,禁用时输出 0 字节。

版本

  • Base: Termux:API 0.53.0
  • versionCode: 1006
  • minSdk: 24
  • targetSdk: 28
  • compileSdk: 35

主要改动

静默安装

  • app/src/main/java/com/termux/api/dhizuku/DhizukuInstallService.java
  • app/src/main/java/com/termux/api/dhizuku/IDhizukuInstall.java
  • app/src/main/java/com/termux/api/dhizuku/OwnerBridge.java

流程:

owner CLI
  → com.termux.api.owner provider
  → OwnerBridge
  → Dhizuku user service
  → PackageInstaller.Session
  → PendingIntent 回到 Termux:API

关键点:

  • setRequireUserAction(2) 表示不需要用户操作。
  • 不在 Dhizuku 用户服务进程中 registerReceiver。
  • session.fsync(os) 使用实际的输出流,不能传 null。

Device Owner 转出

  • TransferOwnerActivity.java
  • DhizukuRequestActivity.java
  • TermuxAPISettingsActivity.java
  • sets__termux.xml
  • device_admin.xml
  • AndroidManifest.xml

device_admin.xml 已声明:

<support-transfer-ownership />

转出逻辑优先使用当前 owner 的 transferOwnership;当 Termux:API 不是 owner 时,通过 Dhizuku 的 device_policy transaction 288 执行。

Owner provider

OwnerProvider 的 authority 为:

com.termux.api.owner

manifest 中声明 exported="true",并使用 android.permission.DUMP 保护,供 Shizuku shell 侧的 content 命令访问。

构建

需要 Android SDK 35 和 JDK。

export ANDROID_HOME=/path/to/android-sdk
./gradlew :app:assembleDebug

产物:

app/build/outputs/apk/debug/termux-api-app_v0.53.0+debug.apk

如果是在 Termux 中构建,需要自行配置可用的 aapt2;本仓库不包含本机的 aapt2FromMavenOverride 路径。

证书

当前发布 APK 使用开发/测试签名:

  • DN: CN=APK Signer, OU=Earth, O=Earth
  • SHA-256: b6da01480eefd5fbf2cd3771b8d1021ec791304bdd6c4bf41d3faabad48ee5e1
  • SHA-1: 517955eabf69fc057c41c7d379dbbcef20ad85f2

发布 APK:Termux-API-Dhizuku-v0.53.0.apk
SHA-256: 9702c8af1d5d1bbd17c325cf81c34dab36fc72b43e87e6325bd9e02694f632f7

这是开发签名,不是生产 release 签名。若要正式发布,请使用自己的 release keystore 重新签名;更换签名后无法直接覆盖已安装版本。

安全说明

  • 本修改版增加了 Device Owner 相关入口,权限高于普通 Termux:API,请只在可信设备上安装。
  • OwnerProvider 使用 DUMP 权限保护,但仍应避免在不可信应用中暴露命令入口。
  • 转移 Device Owner 前请确认目标 admin 可信。
  • 本项目不提供 root,不修改系统分区。

License

基于 Termux:API,按其 GPL-3.0 许可证发布。上游版权归 Termux 项目及其贡献者所有;本修改版同样以 GPL-3.0 发布。第三方组件的声明见 NOTICE.md。

About

Termux:API with Dhizuku Device Owner integration: silent install, owner provider, ownership transfer UI

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages