M2(容器+能力骨架+启动接线): CapabilityProvider/Registrar/AppModule + BridgeGameContainer 完整化 + Splash 接编排

T-M2-13 能力插件框架骨架:CapabilityProvider/CapabilityContext 接口、CapabilityRegistrar(批量注册+生命周期转发)、
        组装根 AppModule.buildCapabilities()(唯一知道全部能力处)、EchoSampleProvider 样板
T-M2-10 BridgeGameContainer 完整化:经 Registrar 注册能力(替换内联 handler)、首次进度 100% 推 appservice/setPostUrl、
        加载 params.entryUrl(回退 test_echo)、前后台 EventBus 联动、aboutToDisappear 全量清理;getContext→getHostContext 去弃用
SplashPage:进入即跑 StartupOrchestrator,完成 replace 进大厅、showmessage 阻断弹公告、进度条
内置测试大厅 rawfile/gamehall_builtin.zip(gamehall/index.html+data/test.json+version.xml,正斜杠标准 zip),
  作 M2 端到端 + V2(file:// XHR) 离线验证页;真实大厅由远程 zip 在生产下发

devecocli build 通过。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lanterngamescn
2026-06-25 18:36:59 +08:00
parent d2da223c8d
commit 2b0bd1f392
8 changed files with 254 additions and 39 deletions
@@ -0,0 +1,23 @@
/**
* 示例能力(M2 脚手架)。验证 CapabilityProvider 插件模式可注册并被桥分发,
* 对接最小回显 H5(test_echo.html 用 getTime/nativeEcho)。
*
* ⚠ M3 用真实 Provider(DeviceProvider 等)替换:buildCapabilities() 删除本行即可,
* 桥核心与容器零改动。
*/
import { BridgeController } from 'feature_bridge';
import { CapabilityContext, CapabilityProvider } from '../core/CapabilityProvider';
export class EchoSampleProvider implements CapabilityProvider {
readonly name: string = 'echo(sample)';
register(bridge: BridgeController, ctx: CapabilityContext): void {
bridge.registerHandler('getTime', (_data: string, cb: (resp: string) => void) => {
cb(Date.now().toString());
});
bridge.registerHandler('nativeEcho', (data: string, cb: (resp: string) => void) => {
cb(data);
});
ctx.log.i('echo sample registered (getTime/nativeEcho)');
}
}