From 03423d41dacca039dd739f46eb125b2e910f1048 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Mar 2026 07:34:21 +0000 Subject: [PATCH 1/2] Initial plan From 5de2ea458beb57c787e7d4231cb256a95606d61d Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 19 Mar 2026 07:36:51 +0000 Subject: [PATCH 2/2] Document AIDL usage in README Co-authored-by: Yorick-Ryu <86869116+Yorick-Ryu@users.noreply.github.com> --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index e2b18c2..1bf3bfc 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,12 @@ - 设置勿扰模式 - WIFI密码查看 - 满血充电MAX + +## AIDL 使用方式 + +本项目通过 Shizuku 与系统服务进行 Binder IPC,依赖 hidden-api 模块内的 AIDL 生成接口(非自定义 .aidl 文件)。主要流程如下: + +1. 在 `hidden-api/src/main/java/android/**` 中提供 `IPackageManager`、`IPackageInstaller`、`IPackageInstallerSession`、`IIntentSender` 等 AIDL 接口存根。 +2. 在 `app/src/main/java/com/yorick/cokotools/util/ShizukuSystemServerApi.kt` 中通过 `SystemServiceHelper.getSystemService("package")` 获取系统服务 `IBinder`,再用 `IPackageManager.Stub.asInterface(...)` 包装为 AIDL 接口。 +3. `InstallUtils.kt` 通过 `IPackageInstaller`/`IPackageInstallerSession` 完成安装会话并提交,`IIntentSenderAdaptor.kt` 实现回调以接收安装结果。 +4. `PackageInstallerUtils.kt` 和 `IntentSenderUtils.kt` 用反射将 AIDL 接口包装为公开 API 便于业务层调用。