- Merge VK login/link/check and Review test buttons from dev_rustore - Unify Rustore/GooglePlay SKU format via ChannelHelpers.normalizeSkuList() - Fix ChannelConfig runtime sync: Java InitSDK sets channel from ChannelHelpers.CHANNEL - Fix AndroidMinSdkVersion 25→26 for tuyoosdk compatibility - Fix Flexion AndroidManifest tools:replace missing fullBackupContent value - Add [CHANNEL-VERIFY] debug logs for channel verification Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.9 KiB
4.9 KiB
合并记录: dev_rustore 测试内容 → dev_flexion
日期: 2026-04-30
源分支: dev_rustore (c105818)
目标分支: dev_flexion (66aa7a9)
已合并的文件
1. sdk-intergration/Assets/Scripts/SDKTest.cs
新增 VK 登录/绑定/检查 和 Review 测试按钮及事件处理:
新增字段:
_loginVkBtn— VK 登录按钮_linkVkBtn— VK 绑定按钮_checkVkBtn— VK 检查绑定按钮_reviewBtn— 应用评价按钮
新增监听 (Start):
_loginVkBtn.onClick.AddListener(() => OnLogin(EAccoutType.hwVkid));
_linkVkBtn.onClick.AddListener(OnLinkVkId);
_checkVkBtn.onClick.AddListener(OnCheckVKId);
_reviewBtn.onClick.AddListener(OnReview);
新增方法:
private async void OnLinkVkId() // VK 绑定 → TYSdkFacade.Instance.LinkAccount(EAccoutType.hwVkid)
private async void OnCheckVKId() // VK 检查 → TYSdkFacade.Instance.LinkCheck(EAccoutType.hwVkid)
private void OnReview() // 评价 → UnityBridgeFunc.Review()
2. sdk-intergration/Assets/Scenes/SampleScene.unity
直接从 dev_rustore 检出完整文件,包含新增 UI 按钮 GameObject:
- VK Login 按钮
- VK Link 按钮
- VK Check 按钮
- Review 按钮
3. sdk-intergration/ProjectSettings/ProjectSettings.asset
修复构建错误,将 AndroidMinSdkVersion 从 25 提升到 26:
- 原因:
tuyoosdk_1.0.0.aar声明 minSdkVersion 26,低于此版本会 manifest 合并失败 - 影响: 全局生效,所有渠道统一 minSdk 26
跳过的文件 (dev_flexion 已有更完善的实现)
TYSdkModel.cs — 跳过
- dev_rustore: 硬编码
AccountInfo.hwPayType = "rustore.global.app", SKUDetail 写死 Rustore 格式 - dev_flexion: 使用
ChannelConfig.Channel动态区分渠道,同时兼容 Google/Rustore/Flexion - 理由: dev_flexion 的
ChannelConfig抽象更成熟,无需降级
TYSdkFacade.cs — 跳过
- dev_rustore: 硬编码
Channel = "hwVkid", 超时 120s - dev_flexion: 已有
Channel => ChannelConfig.Channel, 动态LoginTimeoutSeconds - 理由: dev_flexion 已包含 VK 映射
{"vk.global.app", EAccoutType.hwVkid}, 且抽象更优
TYSdkFacade_Pay.cs — 跳过
- dev_rustore:
var pType = tysdk.AccountInfo.hwPayType(硬编码 rustore) - dev_flexion:
var pType = ChannelConfig.PayType(动态配置) - 理由: dev_flexion 的方案已覆盖 rustore 支付类型
UnityBridgeFunc.cs — 跳过
- dev_rustore: 仅代码格式重排,无功能变更
- dev_flexion: 已包含
Review()等方法声明
构建错误修复
Error: uses-sdk:minSdkVersion 25 cannot be smaller than version 26
declared in library [:tuyoosdk_1.0.0:]
修复: ProjectSettings.asset → AndroidMinSdkVersion: 25 → 26
替代方案分析:
tools:overrideLibrary="com.tuyoo.gamesdk"(rustore AndroidManifest 已有) 只能绕过 manifest 合并冲突- 无法绕过 gradle 层
processReleaseMainManifesttask 的 minSdkVersion 检查 - 改 ProjectSettings 是唯一可行方案
SKU 列表格式统一
问题: Rustore 和 GooglePlay 返回的商品列表 JSON 字段不同,C# 端用同一个 SKUDetail 类反序列化。
方案: 在 Java 端 ChannelHelpers.normalizeSkuList() 中统一格式,C# 端不做渠道判断。
数据流
SDK API → defaultThirdExtend() → ChannelHelpers.normalizeSkuList(msg) → Unity SKUListResult → DeserializeObject<List<SKUDetail>>
变更文件
1. ExtraPluginCfgs/Android/rustore/ChannelHelpers.java — 新增 normalizeSkuList
// 将 Rustore 原始格式转为统一格式:
// price: "199" (戈比) → "₽1.99"
// 新增 price_amount_micros: "199" * 10000 = "1990000"
// 新增 price_currency_code: ← currency 字段
2. ExtraPluginCfgs/Android/googleplay/ChannelHelpers.java — 新增 normalizeSkuList
// GooglePlay 格式已是标准,直接原样返回
public static String normalizeSkuList(String msg) { return msg; }
3. ExtraPluginCfgs/Android/flexion/ChannelHelpers.java — 新增 normalizeSkuList
// Flexion 有自己的 SDKHelper.queryProducts(),不走 defaultThirdExtend,编译需要方法存在
public static String normalizeSkuList(String msg) { return msg; }
4. SDKManager.java — defaultThirdExtend 调用 normalizeSkuList
// 回调成功时: result.put("respObj", ChannelHelpers.normalizeSkuList(msg));
5. TYSdkModel.cs — SKUDetail 简化
// 去掉 Normalize() 方法和 normalized 字段
// 属性直接用统一字段:
// ProdPrice => float.Parse(price_amount_micros) / 1000000
// ProdPriceStr => price
6. TYSdkFacade_Pay.cs — SKUListResult 去掉 Normalize 调用
// 反序列化后直接赋值,不再调 sku.Normalize()
扩展新渠道
添加新渠道时只需:
- 创建
ExtraPluginCfgs/Android/{channel}/ChannelHelpers.java - 实现
normalizeSkuList()将该渠道 SKU JSON 转为统一格式 - C# 端无需改动