Commit Graph
14 Commits
Author SHA1 Message Date
lanterngamescnandClaude Opus 4.8 206db9730a M1: 桥引擎核心(T-M1-01~04)
100% 复刻 lzyzsd/JsBridge(对照原 Android com.tagmae.jsbridge 逐字):
- IWebController + WebviewControllerAdapter(emitter UI 线程守卫,§5.5) + FakeWebController(单测用)
- Message(5字段,undefined省略) + MessageCodec(toJson/toArray + dispatchMessage 两次正则转义逐字复刻)
- HandlerRegistry + 空实现 DefaultHandler 兜底(H5 调用永不报错最后防线)
- BridgeController:onLoadIntercept(decode→yy://return/yy://)/callHandler/send/onPageEnd/
  flushMessageQueue(_fetchQueue 经 yy://return 回传,非 runJavaScript 返回值)/handleReturnData/
  启动队列补发;对能力零感知、纯逻辑可测
- build 编译通过(ArkTS 严格)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:51:11 +08:00
lanterngamescnandClaude Opus 4.8 9280c00809 计划进度更新机制 + 标记 M0 完成
- CLAUDE.md 工作约定新增「及时更新计划进度」:按 Plan 实施时主动更新
  01_任务分解WBS 任务状态,与代码提交同节奏
- 01_任务分解WBS 新增「进度总览」:M0 全部 7 任务标记完成 ☑,M1~M6 未开始;
  记录 M0 期间确立的项目决策(包名/横屏/验证策略/devecocli 无 test)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:40:24 +08:00
lanterngamescnandClaude Opus 4.8 82459c708c 横屏改为 auto_rotation_landscape:横屏两朝向跟随传感器旋转,不进竖屏
- module.json5:landscape → auto_rotation_landscape(横屏正/反向 180° 跟随重力
  感应自动旋转,但不进入竖屏),build 校验取值合法、安装启动通过
- 同步契约 §7 与框架 §7.4:'不跟随传感器' 修正为 '横屏两朝向内跟随旋转'
- H5 显式方向控制(含竖屏)仍由 setPreferredOrientation 保留,零改动不变

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:38:05 +08:00
lanterngamescnandClaude Opus 4.8 dbc416a940 entry: EntryAbility 配 orientation:landscape,脚手架默认横屏
落地横屏项目约束(契约 §7 / 框架 §7.4):module.json5 配默认横屏、
不随传感器自动旋转;H5 显式方向控制留待 M3 用 setPreferredOrientation 动态实现。
模拟器验证:启动即横屏(2856x1320),SplashPage 布局正常。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:34:34 +08:00
lanterngamescnandClaude Opus 4.8 3a333bfe32 docs: 补充横屏项目约束(默认横屏、不支持竖屏自动旋转)
- 契约规范 §7:新增屏幕方向约束——默认横屏、不跟随传感器自动旋转;
  但遵守 H5 零改动铁律,保留 orientation/SwitchOverGameData webtype/通用网页
  orientation 三处 H5 显式方向控制(含竖屏),与原 Android 一致
- 框架指南 §7.4:实现落地——module.json5 orientation:landscape 默认横屏 +
  运行时 window.setPreferredOrientation 按 H5 请求动态切换
- 经核对原 Android:上述三处确为真实竖屏切换(非死代码),故定调为
  '默认横屏 + 不破坏 H5 方向控制'

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:26:40 +08:00
lanterngamescnandClaude Opus 4.8 300f6d9b80 更改应用包名 com.example.gamelobby → com.lobby.daoqi
- AppScope/app.json5 bundleName 更新
- build 通过,产物 pack.info bundleName 已生效
- 注:代码无硬编码包名;原 DevEco 默认签名材料(default_gamelobby_*)按旧包名生成,
  日后配真机/自动签名需重新生成

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:15:04 +08:00
lanterngamescnandClaude Opus 4.8 dca926df5b M0: 构建/签名/CI(T-M0-03)
- 构建:build-profile 已有 debug/release buildMode,多模块 build 通过
- 签名:本期暂不配(模拟器调试已验证可装可跑);真机/release 时由 DevEco
  自动签名写入 build-profile.signingConfigs
- CI:scripts/ci.sh 平台无关校验脚本(devecocli build debug/release),任何 CI 可调;
  单测运行待 M1 桥引擎单测落地后启用(devecocli 当前无 test 子命令)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 08:05:18 +08:00
lanterngamescnandClaude Opus 4.8 7fb0c194f7 M0: App 入口与路由壳(T-M0-07)
框架 §4 路由骨架,Navigation + NavPathStack:
- AppRoutes:路由名(Splash/BridgeGame/GenericWeb)、容器参数类型、前后台事件名
- Index:@Entry 导航宿主,初始进 Splash,navDestination 按名分发
- SplashPage:启动引导壳(weclomeactivity1),replacePathByName 进大厅
- BridgeGameContainer:大厅容器壳(webviewActivity),pushPathByName+onPop 演示
  打开通用网页并接收 101 回传
- GenericWebContainer:通用网页容器壳(openwebActivity1),pop(result) 模拟
  backgameData 带数据返回(§11.2 结果码 101 语义)
- EntryAbility:onForeground/onBackground 经 EventBus 广播应用前后台事件
  (M3 容器订阅后 callHandler('appservice','1'/'2'))
- build 编译通过

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 07:44:57 +08:00
lanterngamescnandClaude Opus 4.8 f89275ea4b M0: 引入桥 JS(T-M0-06)
- WebViewJavascriptBridge.js 原样复刻到 feature_bridge/src/main/resources/rawfile
  (与原 Android assets 去尾随空白后逐字一致,lzyzsd 协议 100% 复刻)
- BridgeJsLoader:从 rawfile 读取桥 JS(getRawFileContentSync + TextDecoder)并缓存,
  供 M1 BridgeController 在 onPageEnd 注入;HarmonyOS 走 runJavaScript 无需去注释
- 经 build smoke 验证 rawfile 读取 API 签名与编译通过

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 07:41:11 +08:00
lanterngamescnandClaude Opus 4.8 f7f208e6c8 M0: common 公共设施(T-M0-05)
框架 §10 横切层:
- Logger:基于 HiLog 的分级日志(d/i/w/e/f),业务域 0x9527,tag 截断 31B
- BridgeTracer:桥消息 traceId 自增 + 阶段打点,可还原全链路
- EventBus:封装 @ohos.events.emitter(on/once/emit/off,string eventId)
- DIContainer:轻量 DI,支持单例/懒单例工厂注册与泛型解析
- ErrorCenter:异常收敛 + 处置策略(Notify/Silent/Report/Block),UI 处置经 sink 注入
- 经 entry 临时 smoke 验证编译通过(含 common→contracts 跨 HAR 引用)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 07:12:44 +08:00
lanterngamescnandClaude Opus 4.8 26299c06ce M0: contracts 契约类型 SSOT(T-M0-04)
落地《契约规范》§8/§9/§12,全工程唯一来源:
- InboundHandlers 枚举:45 入站 handler 名,原样拼写(finsh/canclevibrator/opensaoma 等)
- OutboundHandlers 枚举:21 出站 handler 名,含命名陷阱(getphoneinfo≠getphoneInfo、
  getBattery≠getbattery、backgameData-末尾连字符)
- PayloadType:入站/出站 raw|json 标注表 + 入站同步返回类型 + 查询函数
- DTO interface ×17(§12 字段同名同义):Sharetype/Maplocation/PhoneInfo/savephoto/
  videoinfo/Othervideoinfo/GamePay/PayState/ShareLogin/ShareSuccess 等
- Result<T> + Errors(ErrorKind/LocationErrorCode/AppError)
- 经 entry 临时 smoke 全量引用,CompileArkTS 编译通过

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 07:09:17 +08:00
lanterngamescnandClaude Opus 4.8 424c5f4d94 M0: 忽略 hvigor 生成物 BuildProfile.ets(保持仓库干净)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 06:59:12 +08:00
lanterngamescnandClaude Opus 4.8 6de9038a54 M0: 搭建多模块工程骨架(T-M0-01/T-M0-02)
- 在 entry 基础上新增 6 个 HAR:contracts/common/platform/domain_resource/feature_bridge/feature_capabilities(框架§4 工程结构)
- 依赖单向向下、无环、无传递依赖(T-M0-02):
  contracts←common←platform←domain_resource;feature_bridge←(contracts,common);
  feature_capabilities←(全部下层);entry←(全部下层)
- 各 HAR 含 build-profile/hvigorfile(harTasks)/module.json5(type:har)/Index.ets 导出入口
- devecocli build(debug) 全模块编译通过,entry 打包 HAP 成功

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 06:58:29 +08:00
joywayer 561af47817 first commit 2026-06-25 06:25:30 +08:00