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.1 KiB

扩展开发

DruksCode 在应用发布后仍可扩展。你可以添加四类扩展,它们都由同一个 ExtensionManager 管理,并由 WebView 在页面生命周期钩子处注入:

类型 是什么 适用场景
JS 模块 module.json 清单 + main.js(+ 可选 CSS) 带配置 UI 和浮动面板的自定义功能
CSS 模块 纯样式覆盖(仍需 main.js 桩) 主题化、重设样式、夜间模式
油猴脚本 Tampermonkey/Greasemonkey 风格 .user.js 移植现有油猴脚本;GM_* API
Chrome MV3 Manifest V3 Chrome 扩展 移植浏览器扩展;chrome.* API

注入如何工作

四种类型都被归一化为一个内部 ExtensionModule 模型。运行时,WebViewManager 在每个模块配置的运行时机注入它:

运行时机 触发于
DOCUMENT_START onPageStarted
DOCUMENT_END onPageFinished(DOMContentLoaded)
DOCUMENT_IDLE 加载后(默认)
CONTEXT_MENU 上下文菜单时
BEFORE_UNLOAD 卸载前

每个模块还带有 URL 匹配规则(Chrome 风格 glob 或正则),决定它在哪些页面运行。

::: warning 重要的准确性说明 有些行为与其他扩展平台的暗示不同。这些在相关页面有说明,但值得预先了解:

  • 油猴脚本的 GM_* 函数不按 @grant 门控 —— 全部无条件暴露。
  • Chrome 的 ISOLATED 与 MAIN world 并非真正隔离 —— Android WebView 只有单一 JS 上下文;隔离是模拟的。
  • GM_notification 仅记录日志;MV3 的"后台 service worker"是一个隐藏的 WebView,而非真正的 service worker。 :::

接下来去哪