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 便于业务层调用。