M3 补全:移除 EchoSample 样板 + getcompareCode 接版本决策 + app_gamename

- 移除 EchoSampleProvider(组装根/导出/文件):M3 全部 Provider 已就位,
  getTime 由 DeviceProvider 提供;样板回显仅 M1 测试页用,生产无依赖
- getcompareCode:启动期 StartupOrchestrator 把网络 App 版本(VersionDecision.appVersion)
  存 KvStore(KV_KEY_NET_APP_VERSION),DeviceProvider 同步读出与本地 config.appversion 比较,
  本地>网络→'1' 否则'0'(对齐 Android apputil.code 语义)
- app_gamename:VersionXml.parse 解析子 <game name>;ResourceManager.localGameName 暴露;
  AppDataInjector.buildValues 接 gameName 参数;大厅/子游戏两处注入均填入

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
lanterngamescn
2026-06-26 07:33:13 +08:00
co-authored by Claude Opus 4.8
parent cc5db07ddd
commit 01e4c0e99e
10 changed files with 72 additions and 53 deletions
@@ -13,7 +13,8 @@ import { wifiManager } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { BridgeController } from 'feature_bridge';
import { InboundHandlers, OutboundHandlers, PhoneInfoBean, WifiLevelResp } from 'contracts';
import { ConfigManager, AppConfig } from 'domain_resource';
import { ConfigManager, AppConfig, KV_KEY_NET_APP_VERSION } from 'domain_resource';
import { KvStore } from 'platform';
import { Logger } from 'common';
import { CapabilityContext, CapabilityProvider } from '../core/CapabilityProvider';
@@ -22,10 +23,12 @@ export class DeviceProvider implements CapabilityProvider {
private readonly log: Logger = Logger.tag('DeviceProvider');
private bridge: BridgeController | undefined = undefined;
private config: ConfigManager | undefined = undefined;
private kv: KvStore | undefined = undefined;
register(bridge: BridgeController, ctx: CapabilityContext): void {
this.bridge = bridge;
this.config = ctx.config;
this.kv = ctx.kv;
bridge.registerHandler(InboundHandlers.GetTime, (_d: string, cb: (resp: string) => void) => {
cb(Date.now().toString());
@@ -43,8 +46,12 @@ export class DeviceProvider implements CapabilityProvider {
cb(this.lookupConfig(data));
});
bridge.registerHandler(InboundHandlers.GetCompareCode, (_d: string, cb: (resp: string) => void) => {
// TODO(M3)1=本地 appversion>网络 app_version/0=否,需接 StartupOrchestrator 的版本决策;暂安全返回 '0'
cb('0');
// 契约:本地 App 版本 > 网络版本 → '1',否则 '0'(对齐 Android apputil.code)。
// 网络版本由 StartupOrchestrator 启动期算出存入 KvStore;本地版本为 config.appversion。
const localVer: number = parseInt(this.local().appversion, 10);
const local: number = isNaN(localVer) ? 0 : localVer;
const net: number = this.kv?.getNumber(KV_KEY_NET_APP_VERSION, 0) ?? 0;
cb(local > net ? '1' : '0');
});
bridge.registerHandler(InboundHandlers.GetBattery, (_d: string, _cb: (resp: string) => void) => {
this.pushBattery();
@@ -1,23 +0,0 @@
/**
* 示例能力(M2 脚手架)。验证 CapabilityProvider 插件模式可注册并被桥分发,
* 对接最小回显 H5test_echo.html 用 getTime/nativeEcho)。
*
* ⚠ M3 用真实 ProviderDeviceProvider 等)替换: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)');
}
}