-
Notifications
You must be signed in to change notification settings - Fork 2
Terminal Sdk Boundary
AceGuru-mjh edited this page Oct 1, 2026
·
4 revisions
📑 本页目录
platform/terminal已经源级达到 SDK 质量,但物理 Gradle 拆分被刻意推迟。 来源:docs/terminal/TERMINAL_SDK_BOUNDARY.md。
| 检查 | 结果 |
|---|---|
Kotlin 源中 android.* / androidx.* import |
0 处(145 文件全量扫描) |
| 反向依赖(terminal → app / Compose / Activity / UI) |
无,严格 app → platform:terminal
|
| Android 触点隔离 | 全部经构造注入:Context.filesDir / nativeLibraryDir(PRootHostEnvironment)、Build.SUPPORTED_ABIS(RootfsTarget / PRoot ABI),由 app 的 TerminalModule 提供 |
| 测试替身泄漏 |
已修:FakeNativePty / FakeLinuxRuntime / FakePackageManager 从 src/main 迁到 src/test(~645 行不再进 release 产物;androidTest 零引用已验证) |
| 无用构建依赖 |
已剪:core:tool-registry(零 import,TerminalTool 是本地桥接接口)与 core.ktx(零使用) |
可写成 CI gate 的三条验收:
rg "^import (android|androidx)\." platform/terminal/src/main # 期望 0
scripts/compile_terminal_jvm.sh # 纯 JVM 类型检查
rg "Fake" platform/terminal/src/main # 期望 0| 面 | 为什么必须保留 |
|---|---|
com.android.library + NDK/CMake |
libapex_terminal.so 从源码构建 |
jniLibs 预置 PRoot 工具链 |
libproot / libtalloc / libandroid-shmem 需要 legacy 打包才能在 nativeLibraryDir 可执行 |
C++ 侧 #include <android/log.h>
|
唯一的 Android 依赖(hostTest 已有 shim,桌面验证可行) |
| Hilt / KSP 插件 | 模块内无 @Inject 使用,仅与 app 构建图协作(拆分时可去) |
| 未来模块 | 来源包 |
|---|---|
:terminal:api |
api/(TerminalSdk + P60 冻结契约) |
:terminal:emulator |
terminal-emulator(已是独立 Gradle 模块,纯 JVM) |
:terminal:core |
runtime/ session/ job/ io/ input/ state/ wait/ observation/ events/ buffer/ screen/ process/ control/ compat/ policy/ intelligence/ errors/ di/ protocol/
|
:terminal:pty |
pty/ + src/main/cpp + NativePty.kt(JNI 面) |
:terminal:linux |
linux/ proot/ ubuntu/ pkg/ environment/ network/ workspace/ fs/ bridge/ health/ reliability/persistence
|
:terminal:tools |
tools/(Agent 工具 JSON 契约) |
Note
物理拆分推迟到出现第二个消费方。原则:没有消费者的拆分是投机结构。
-
api不 import 任何实现包; -
core不 importlinux/proot/ubuntu(经ExecutionBackend抽象反转); - 任何包不 import
android.*/androidx.*(Android 触点只在 app DI); -
tools只依赖runtime门面 +TerminalTool本地桥(不依赖 tool-registry)。
app ──▶ platform:terminal ──▶ terminal-emulator(纯 JVM)
platform/terminal 另依赖:kotlinx-coroutines / kotlinx-serialization(纯 JVM)
+ NDK + jniLibs(libapex_terminal.so + PRoot 工具链)
app 另依赖:core:* / plugin-sdk(与 terminal 无关)
- 终端 API 契约 · 终端运行时
- VT100/ANSI 模拟器(已是独立模块)
- PRoot 二进制溯源
-
MCP 生态总览
新 - (沙箱 MCP · 官方 Hub · 逆向 Host · 门控语义)
- 终端运行时
- 终端 API 契约
- SDK 边界
- Termux 能力矩阵
- Ubuntu rootfs 供给
- Ubuntu 生命周期
- PRoot 二进制溯源
- VT100/ANSI 模拟器
- 终端性能
- 终端迁移
- 原生层 C++/JNI