OpenCode AI e9899d2e6d
Some checks failed
Android CI Build / check (push) Has been cancelled
Android CI Build / package-apks (push) Has been cancelled
Docs Deploy / build (push) Has been cancelled
Module Market Check / Validate modules/ (push) Has been cancelled
Module Market Publish / Generate submissions.json (push) Has been cancelled
Docs Deploy / deploy (push) Has been cancelled
Initial DruksCode V2: fresh fork of web-to-app (f3b488e) with DruksCode identity
- Package rename com.webtoapp -> br.com.drukstech.codeapp
- Product rename WebToApp/web-to-app -> DruksCode/drukscode
- Design system Wta* -> Dkc*
- applicationId br.com.drukstech.codeapp (.play for gplay flavor)
- rootProject.name DruksCode
- Fresh git history (upstream kept as remote for sync)
2026-09-12 02:42:02 +02:00

2.9 KiB

开发者文档

本节面向参与 DruksCode 本身开发的人 —— 贡献者、深度定制者和 AI 编码代理。它解释代码库如何组织,以及两个最容易让人栽跟头的机制实际如何工作:导出管线和 shell 同步。

::: tip 权威参考 仓库根目录的 AGENTS.md 是面向 AI 代理和深度贡献者的权威指南。这些页面在其基础上提供更多背景。 :::

仓库布局

路径 角色
app/ 完整构建器宿主:编辑器 UI、导出管线、运行时、预览。主应用模块。
shell/ 运行时模板。通过 :shell:assembleRelease + :app:syncShellTemplateApk 构建为 app/src/main/assets/template/webview_shell.apk。
clone-host/ 宿主侧 APK 克隆 / 身份重塑支持库(编译为 DEX 资源)。
modules/ 模块市场目录(registry.json + 各模块文件夹)。
scripts/ 构建辅助与门禁(check_config_field_drift.py)。
docs/ 本文档站点。

运行时 Kotlin 在 app/ 下编写,由 syncShellRuntimeSources 同步进 shell/。只在 app/ 源码处编辑一次;不要在 shell/ 下永久分叉副本。

三个 Gradle 模块

  • :app —— 构建器。applicationId = br.com.drukstech.codeapp,compileSdk = 36,minSdk = 23,targetSdk = 35,buildConfigField SHELL_RUNTIME_ONLY = false。
  • :shell —— 嵌入生成 APK 的运行时模板。compileSdk/minSdk/版本与 :app 相同,但 targetSdk = 28(生成应用保持低 targetSdk 以支持 fork+exec 运行时),且 SHELL_RUNTIME_ONLY = true。其源码从 app/ 同步。
  • :clone-host —— 一个极简的 com.android.library(命名空间 br.com.drukstech.codeapp.clone),无依赖,编译为供 AppCloner 使用的 DEX 资源。

包结构(app/src/main/java/br/com/drukstech/codeapp)

  • core/* —— 约 53 个业务/运行时逻辑子包:apkbuilder、shell、webview、engine、extension、crypto、nodejs、php、python、golang、wordpress、linux、port、dns、network、adblock、agent 等。
  • data/* —— 持久化:Room DAO、数据库、类型转换器,以及 WebApp 模型 + 嵌套的 *Config 类。
  • ui/* —— Jetpack Compose 界面、组件、设计系统和 shell UI。
  • di/ —— Koin 依赖注入。
  • util/ —— 辅助工具与常量。

原生 C++ 位于 app/src/main/cpp/(加密、完整性、反调试、node_bridge、node_launcher、go_exec_loader)。

接下来读什么