@leonxin/meetgames 0.1.8 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/meet-sdk-regression/SKILL.md +93 -0
- package/.cursor/mcp.example.json +16 -0
- package/.cursor/mcp.json +11 -0
- package/.cursor/skills/meetgames-mcp/SKILL.md +48 -0
- package/.vite/vitest/results.json +1 -0
- package/README.md +36 -13
- package/{meetsdk-android.json → config/meetsdk-android.json} +2 -1
- package/config/meetsdk-ios.json +15 -0
- package/dist/android/adapter.d.ts.map +1 -1
- package/dist/android/adapter.js +2 -2
- package/dist/android/adapter.js.map +1 -1
- package/dist/android/detect.d.ts +2 -2
- package/dist/android/detect.d.ts.map +1 -1
- package/dist/android/detect.js +36 -8
- package/dist/android/detect.js.map +1 -1
- package/dist/cache.d.ts +44 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +101 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +181 -49
- package/dist/cli.js.map +1 -1
- package/dist/config/meetSdkDefaultConfig.d.ts +19 -2
- package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
- package/dist/config/meetSdkDefaultConfig.js +69 -6
- package/dist/config/meetSdkDefaultConfig.js.map +1 -1
- package/dist/config/meetSdkIosConfig.d.ts +21 -0
- package/dist/config/meetSdkIosConfig.d.ts.map +1 -0
- package/dist/config/meetSdkIosConfig.js +68 -0
- package/dist/config/meetSdkIosConfig.js.map +1 -0
- package/dist/config/meetSdkRemoteConfig.d.ts +19 -1
- package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
- package/dist/config/meetSdkRemoteConfig.js +64 -25
- package/dist/config/meetSdkRemoteConfig.js.map +1 -1
- package/dist/contracts/types.d.ts +27 -6
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/core/doctor.d.ts +17 -0
- package/dist/core/doctor.d.ts.map +1 -0
- package/dist/core/doctor.js +444 -0
- package/dist/core/doctor.js.map +1 -0
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +0 -15
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/platform.d.ts +12 -0
- package/dist/core/platform.d.ts.map +1 -0
- package/dist/core/platform.js +40 -0
- package/dist/core/platform.js.map +1 -0
- package/dist/core/previewPatches.d.ts +1 -1
- package/dist/core/previewPatches.js +2 -2
- package/dist/core/previewPatches.js.map +1 -1
- package/dist/core/reporter.js +1 -1
- package/dist/core/reporter.js.map +1 -1
- package/dist/core/workspace.d.ts +2 -2
- package/dist/core/workspace.d.ts.map +1 -1
- package/dist/core/workspace.js +6 -5
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/ios/channelConfig.d.ts +1 -0
- package/dist/ios/channelConfig.d.ts.map +1 -1
- package/dist/ios/channelConfig.js +82 -0
- package/dist/ios/channelConfig.js.map +1 -1
- package/dist/ios/codeUtils.d.ts +1 -0
- package/dist/ios/codeUtils.d.ts.map +1 -1
- package/dist/ios/codeUtils.js +11 -2
- package/dist/ios/codeUtils.js.map +1 -1
- package/dist/ios/detect.d.ts +2 -2
- package/dist/ios/detect.d.ts.map +1 -1
- package/dist/ios/detect.js +49 -10
- package/dist/ios/detect.js.map +1 -1
- package/dist/ios/entitlements.d.ts +4 -0
- package/dist/ios/entitlements.d.ts.map +1 -0
- package/dist/ios/entitlements.js +53 -0
- package/dist/ios/entitlements.js.map +1 -0
- package/dist/ios/fileManager.d.ts.map +1 -1
- package/dist/ios/fileManager.js +3 -2
- package/dist/ios/fileManager.js.map +1 -1
- package/dist/ios/infoPlist.d.ts +1 -1
- package/dist/ios/infoPlist.d.ts.map +1 -1
- package/dist/ios/infoPlist.js.map +1 -1
- package/dist/ios/integrate.d.ts.map +1 -1
- package/dist/ios/integrate.js +214 -39
- package/dist/ios/integrate.js.map +1 -1
- package/dist/ios/pbxprojEditor.d.ts +2 -0
- package/dist/ios/pbxprojEditor.d.ts.map +1 -1
- package/dist/ios/pbxprojEditor.js +250 -6
- package/dist/ios/pbxprojEditor.js.map +1 -1
- package/dist/ios/pluginConfig.d.ts +1 -0
- package/dist/ios/pluginConfig.d.ts.map +1 -1
- package/dist/ios/pluginConfig.js +36 -4
- package/dist/ios/pluginConfig.js.map +1 -1
- package/dist/ios/sdkBundle.d.ts +1 -6
- package/dist/ios/sdkBundle.d.ts.map +1 -1
- package/dist/ios/sdkBundle.js +47 -17
- package/dist/ios/sdkBundle.js.map +1 -1
- package/dist/ios/template.d.ts +1 -0
- package/dist/ios/template.d.ts.map +1 -1
- package/dist/ios/template.js +14 -1
- package/dist/ios/template.js.map +1 -1
- package/dist/ios/types.d.ts +2 -2
- package/dist/ios/types.d.ts.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +22 -15
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service.d.ts +11 -6
- package/dist/mcp/service.d.ts.map +1 -1
- package/dist/mcp/service.js +61 -18
- package/dist/mcp/service.js.map +1 -1
- package/dist/ops/handlers.d.ts.map +1 -1
- package/dist/ops/handlers.js +34 -23
- package/dist/ops/handlers.js.map +1 -1
- package/dist/remote/sdkHomeDownload.d.ts +65 -0
- package/dist/remote/sdkHomeDownload.d.ts.map +1 -0
- package/dist/remote/sdkHomeDownload.js +229 -0
- package/dist/remote/sdkHomeDownload.js.map +1 -0
- package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -1
- package/dist/remote/topsdkDownloadSdkConfig.js +11 -1
- package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -1
- package/dist/shared/errors.d.ts +7 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +16 -0
- package/dist/shared/errors.js.map +1 -0
- package/docs/API.md +246 -32
- package/docs/CLI.md +291 -0
- package/docs/INTEGRATION.md +116 -0
- package/docs/MCP.md +86 -0
- package/docs/README.md +18 -10
- package/docs/{api → archive/api}/downloadSDKConfig.md +9 -7
- package/docs/{api → archive/api}/getChannelConfig-meetgames.md +2 -2
- package/docs/archive/ios-migration.md +2139 -0
- package/docs/{ → archive/product/}/346/212/200/346/234/257/346/226/271/346/241/210/350/260/203/347/240/224.md +7 -7
- package/docs/{ → archive/product/}/351/234/200/346/261/202/346/226/207/346/241/243.md +16 -15
- package/package.json +7 -36
- package/recipes/android-default.yaml +0 -5
- package/recipes/integrate-default.yaml +0 -5
- package/src/android/adapter.ts +9 -0
- package/src/android/assembleIntegrationJson.ts +33 -0
- package/src/android/detect.ts +132 -0
- package/src/android/downloadGoogleServicesJson.ts +56 -0
- package/src/android/gradle.ts +116 -0
- package/src/android/manifest.ts +50 -0
- package/src/android/meetSdkRemoteGradle.ts +837 -0
- package/src/cache.ts +164 -0
- package/src/cli.ts +496 -0
- package/src/config/fetchConfigWrite.ts +30 -0
- package/src/config/loadAndroidIntegration.ts +41 -0
- package/src/config/loadManifest.ts +40 -0
- package/src/config/meetSdkDefaultConfig.ts +100 -0
- package/src/config/meetSdkIosConfig.ts +89 -0
- package/src/config/meetSdkRemoteConfig.ts +1215 -0
- package/src/config/topsdkFeatureModules.ts +92 -0
- package/src/contracts/types.ts +129 -0
- package/src/core/doctor.ts +485 -0
- package/src/core/patch.ts +64 -0
- package/src/core/pipeline.ts +107 -0
- package/src/core/platform.ts +47 -0
- package/src/core/previewPatches.ts +23 -0
- package/src/core/reporter.ts +24 -0
- package/src/core/workspace.ts +31 -0
- package/src/entry.ts +7 -0
- package/src/index.ts +140 -0
- package/src/ios/channelConfig.ts +128 -0
- package/src/ios/codeUtils.ts +160 -0
- package/src/ios/detect.ts +105 -0
- package/src/ios/entitlements.ts +61 -0
- package/src/ios/fileManager.ts +48 -0
- package/src/ios/infoPlist.ts +55 -0
- package/src/ios/integrate.ts +517 -0
- package/src/ios/pbxprojEditor.ts +450 -0
- package/src/ios/pluginConfig.ts +97 -0
- package/src/ios/reserved.ts +8 -0
- package/src/ios/sdkBundle.ts +59 -0
- package/src/ios/template.ts +36 -0
- package/src/ios/types.ts +65 -0
- package/src/mcp/server.ts +176 -0
- package/src/mcp/service.ts +253 -0
- package/src/mcp-entry.ts +7 -0
- package/src/ops/fileStore.ts +56 -0
- package/src/ops/handlers.ts +308 -0
- package/src/remote/fetchJson.ts +22 -0
- package/src/remote/sdkHomeDownload.ts +295 -0
- package/src/remote/topsdkDownloadSdkConfig.ts +93 -0
- package/src/remote/topsdkGetSdkConfig.ts +122 -0
- package/src/remote/topsdkSign.ts +10 -0
- package/src/shared/errors.ts +16 -0
- package/tests/assemble.test.ts +12 -0
- package/tests/doctor.test.ts +91 -0
- package/tests/downloadGoogleServicesJson.test.ts +47 -0
- package/tests/fetch-remote.test.ts +23 -0
- package/tests/fetchConfigOverrides.test.ts +28 -0
- package/tests/fetchConfigWrite.test.ts +54 -0
- package/tests/fixtures-hosts.test.ts +78 -0
- package/tests/gradle.test.ts +33 -0
- package/tests/integration-json.test.ts +29 -0
- package/tests/ios.codeUtils.test.ts +23 -0
- package/tests/ios.sdkBundle.test.ts +21 -0
- package/tests/loadManifest.test.ts +15 -0
- package/tests/manifest-xml.test.ts +30 -0
- package/tests/mcp.e2e.ts +214 -0
- package/tests/mcp.service.test.ts +53 -0
- package/tests/meetSdkRemoteConfig.test.ts +481 -0
- package/tests/meetSdkRemoteGradle.test.ts +414 -0
- package/tests/pipeline.android.test.ts +95 -0
- package/tests/pipeline.integration-json.test.ts +58 -0
- package/tests/pipeline.ios.test.ts +392 -0
- package/tests/pipeline.preview.patch.test.ts +85 -0
- package/tests/platformSelection.test.ts +77 -0
- package/tests/sdkHomeDownload.test.ts +124 -0
- package/tests/sdkVersionConfig.test.ts +131 -0
- package/tests/topsdk.test.ts +53 -0
- package/tests/topsdkDownloadSdkConfig.test.ts +81 -0
- package/tests/topsdkFeatureModules.test.ts +116 -0
- package/tsconfig.json +19 -0
- package/vitest.config.ts +9 -0
- package/vitest.mcp.config.ts +11 -0
- package/bundled/android/sample.txt +0 -1
- package/docs/ANDROID.md +0 -133
- package/docs/CURSOR-MCP-SETUP.md +0 -72
- package/docs/MCP-SKILL.md +0 -63
- package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +0 -123
- package/fixtures/meetsdk-remote-config.download-shape.json +0 -20
- package/fixtures/meetsdk-remote-config.mock.json +0 -69
- package/fixtures/recipes/android-default.fixture.yaml +0 -15
- package/fixtures/recipes/android-integration.fixture.json +0 -29
- package/fixtures/topsdk-config-reference.json +0 -39
- /package/docs/{api → archive/api}/getSDKConfig.md +0 -0
package/docs/CLI.md
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# meetgames CLI 参数说明
|
|
2
|
+
|
|
3
|
+
本文档说明 `meetgames` CLI 的子命令、参数和环境变量。实现以 `src/cli.ts` 为准。
|
|
4
|
+
|
|
5
|
+
## 子命令
|
|
6
|
+
|
|
7
|
+
| 子命令 | 作用 | 是否写文件 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `fetch-config` | 请求 `downloadSDKConfig`,将响应原文写入 `~/.cache/meet-sdk-tool` | 是 |
|
|
10
|
+
| `download-ios-sdk` | 请求 sdk-home 版本和下载接口,下载 iOS SDK zip 并解压到 `~/.cache/meet-sdk-tool/sdk/ios` | 是 |
|
|
11
|
+
| `integrate` | 读取本地配置并接入 Android 或 iOS SDK;Android 会请求 sdk-home 最新版本并更新 `config/meetsdk-android.json` | 默认写;`--dry-run` 时不写宿主工程文件 |
|
|
12
|
+
| `setup` | 先执行 `fetch-config`;iOS 工程会再执行 `download-ios-sdk`;最后执行 `integrate`;Android 集成阶段会请求 sdk-home 最新版本并更新 `config/meetsdk-android.json` | 是;集成阶段受 `--dry-run` 影响 |
|
|
13
|
+
| `doctor` | 先执行 `fetch-config`,再检查当前工程 SDK 接入是否正确;Android 检查阶段会请求 sdk-home 最新版本并更新 `config/meetsdk-android.json` | 是,会刷新缓存中的 `meetsdk-remote-config.json` |
|
|
14
|
+
|
|
15
|
+
`doctor`、`setup`、`integrate` 都要求传入 `--project-root`。工具会根据该路径自动识别 Android 或 iOS,并且只执行对应平台逻辑。
|
|
16
|
+
Android `integrate` / `setup` / `doctor` 会调用 sdk-home `version` 接口读取最新 Android SDK 版本,写入 `config/meetsdk-android.json`,并写入或校验 Gradle 中的 `topsdk_version`。
|
|
17
|
+
`download-ios-sdk` 面向本机缓存的 iOS SDK 资源,不需要传 `--project-root`。
|
|
18
|
+
|
|
19
|
+
## 通用示例
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
node dist/entry.js setup \
|
|
23
|
+
--app-id <APP_ID> \
|
|
24
|
+
--app-secret '<APP_SECRET>' \
|
|
25
|
+
--channel-type GOOGLE \
|
|
26
|
+
--project-root /path/to/project \
|
|
27
|
+
--env test \
|
|
28
|
+
--verbose
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
iOS 多 App target 工程建议显式指定 target:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
node dist/entry.js setup \
|
|
35
|
+
--app-id <APP_ID> \
|
|
36
|
+
--app-secret '<APP_SECRET>' \
|
|
37
|
+
--channel-type APPLE \
|
|
38
|
+
--project-root /path/to/ios-project \
|
|
39
|
+
--app-target GameRelease \
|
|
40
|
+
--env test \
|
|
41
|
+
--verbose
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Android 多 application module 工程建议显式指定 app module:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
node dist/entry.js setup \
|
|
48
|
+
--app-id <APP_ID> \
|
|
49
|
+
--app-secret '<APP_SECRET>' \
|
|
50
|
+
--channel-type GOOGLE \
|
|
51
|
+
--project-root /path/to/android-project \
|
|
52
|
+
--app-target :app \
|
|
53
|
+
--env test \
|
|
54
|
+
--verbose
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
node dist/entry.js doctor \
|
|
59
|
+
--app-id <APP_ID> \
|
|
60
|
+
--app-secret '<APP_SECRET>' \
|
|
61
|
+
--channel-type GOOGLE \
|
|
62
|
+
--project-root /path/to/project \
|
|
63
|
+
--env test \
|
|
64
|
+
--verbose
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
刷新工具内置 iOS SDK:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
node dist/entry.js download-ios-sdk --verbose
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
指定版本或插件组合:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
node dist/entry.js download-ios-sdk \
|
|
77
|
+
--version 1.6.0.5 \
|
|
78
|
+
--plugins guest,facebook,google,apple,apple_pay,dataAppsFlyer \
|
|
79
|
+
--package-type native \
|
|
80
|
+
--verbose
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 参数
|
|
84
|
+
|
|
85
|
+
| 参数 | `fetch-config` | `integrate` | `setup` | `doctor` | 说明 |
|
|
86
|
+
|---|---:|---:|---:|---:|---|
|
|
87
|
+
| `--project-root <path>` | 可选 | 必填 | 必填 | 必填 | 宿主工程目录;iOS 可传工程目录或 `.xcodeproj` 目录 |
|
|
88
|
+
| `--app-target <target>` | 否 | 可选 | 可选 | 可选 | 统一指定要接入/检查的 App 目标;Android 传 application module(如 `:app` / `app`),iOS 传 App target 名 |
|
|
89
|
+
| `--app-id <id>` | 必填* | 可选 | 必填* | 必填* | 应用 ID;也可用 `TOPSDK_APP_ID`;`integrate` 中用于选择缓存配置 |
|
|
90
|
+
| `--app-secret <secret>` | 必填* | 否 | 必填* | 必填* | 用于计算接口签名;也可用 `TOPSDK_APP_SECRET` |
|
|
91
|
+
| `--channel-type <type>` | 必填* | 可选 | 必填* | 必填* | 渠道类型,如 `GOOGLE` / `APPLE`;也可用 `TOPSDK_CHANNEL_TYPE`;`integrate` 中用于选择缓存配置 |
|
|
92
|
+
| `--env prod|pre|test` | 是 | 可选 | 是 | 是 | 默认 `prod` |
|
|
93
|
+
| `--dry-run` | 忽略 | 是 | 是 | 否 | 只预览集成改动,不写工程文件;`setup` 的 fetch 步骤仍会写配置 |
|
|
94
|
+
| `--patch-file <path>` | 忽略 | 是 | 是 | 否 | 输出 dry-run patch |
|
|
95
|
+
| `--report-file <path>` | 忽略 | 是 | 是 | 否 | 输出 JSON report |
|
|
96
|
+
| `--sdk-api-base-url <url>` | 否 | Android 可选 | Android 可选 | Android 可选 | 覆盖 sdk-home API 根地址;用于 Android 最新版本查询,也用于 `download-ios-sdk` |
|
|
97
|
+
| `--verbose` | 是 | 是 | 是 | 是 | 输出详细日志 |
|
|
98
|
+
|
|
99
|
+
`*` 表示如果本地已有可解析配置或环境变量提供对应值,可以不在命令行显式传入。`appSecret` 不会从本地 `meetsdk-remote-config.json` 读取。
|
|
100
|
+
|
|
101
|
+
### download-ios-sdk 专用参数
|
|
102
|
+
|
|
103
|
+
| 参数 | 说明 |
|
|
104
|
+
|---|---|
|
|
105
|
+
| `--version <version>` | 指定下载的 iOS SDK 版本;不传时先调用 sdk-home `version` 接口读取最新 iOS 版本 |
|
|
106
|
+
| `--plugins <csv>` | 逗号分隔插件列表;默认 `guest,facebook,google,apple,apple_pay,dataAppsFlyer`,与下载页 iOS 默认选择一致 |
|
|
107
|
+
| `--package-type native|unity|cocos` | 包类型 / 引擎;默认 `native` |
|
|
108
|
+
|
|
109
|
+
该命令会把 zip 保存为:
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
~/.cache/meet-sdk-tool/sdk/ios/<package-type>/<version>/<plugins-hash>/topSDK-ios--V{version}.zip
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
并把压缩包内容解压到:
|
|
116
|
+
|
|
117
|
+
```text
|
|
118
|
+
~/.cache/meet-sdk-tool/sdk/ios/<package-type>/<version>/<plugins-hash>/extracted
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## 环境变量
|
|
122
|
+
|
|
123
|
+
| 环境变量 | 作用 |
|
|
124
|
+
|---|---|
|
|
125
|
+
| `TOPSDK_API_BASE_URL` | 覆盖 API 根地址,例如 `http://127.0.0.1:8081/` |
|
|
126
|
+
| `TOPSDK_APP_ID` | `fetch-config` / `setup` / `doctor` 默认 appId |
|
|
127
|
+
| `TOPSDK_APP_SECRET` | 默认 appSecret |
|
|
128
|
+
| `TOPSDK_CHANNEL_TYPE` | 默认 channelType |
|
|
129
|
+
| `MEETGAMES_SDK_HOME_API_BASE_URL` | sdk-home API 根地址;用于 Android 最新版本查询和 `download-ios-sdk` |
|
|
130
|
+
|
|
131
|
+
## 环境地址
|
|
132
|
+
|
|
133
|
+
| `--env` | 默认 Base URL |
|
|
134
|
+
|---|---|
|
|
135
|
+
| `prod` | `https://api-sdk-gameplus.meetsocial.com/` |
|
|
136
|
+
| `pre` | `https://pre-api-sdk-gameplus.meetsocial.com/` |
|
|
137
|
+
| `test` | `https://test-api-sdk-gameplus.meetsocial.com/` |
|
|
138
|
+
|
|
139
|
+
`TOPSDK_API_BASE_URL` 优先级最高。
|
|
140
|
+
|
|
141
|
+
## 子命令说明
|
|
142
|
+
|
|
143
|
+
### fetch-config
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
node dist/entry.js fetch-config \
|
|
147
|
+
--app-id <APP_ID> \
|
|
148
|
+
--app-secret '<APP_SECRET>' \
|
|
149
|
+
--channel-type GOOGLE \
|
|
150
|
+
--project-root /path/to/project \
|
|
151
|
+
--env test
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
调用:
|
|
155
|
+
|
|
156
|
+
```text
|
|
157
|
+
GET {baseUrl}/console/openSDK/downloadSDKConfig
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
并将响应 bytes 原样写入缓存:
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
~/.cache/meet-sdk-tool/configs/<env>/<appId>/<channelType>/meetsdk-remote-config.json
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### integrate
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
node dist/entry.js integrate \
|
|
170
|
+
--project-root /path/to/project \
|
|
171
|
+
--dry-run \
|
|
172
|
+
--verbose
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
读取缓存中的 `meetsdk-remote-config.json` 和内置 recipe:
|
|
176
|
+
|
|
177
|
+
```text
|
|
178
|
+
recipes/integrate-default.yaml
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
根据 `--project-root` 识别平台,只执行 Android 或 iOS 的接入步骤。
|
|
182
|
+
|
|
183
|
+
Android 接入会先调用:
|
|
184
|
+
|
|
185
|
+
```text
|
|
186
|
+
GET https://business-api.meetgames.com/sdk/home/version
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
用途:读取 `data.result.android.ver` / `date`,写入 `config/meetsdk-android.json` 的 `topsdk.version` / `topsdk.date`,并作为 Gradle 中的 `topsdk_version`。`config/meetsdk-android.json` 同时保留 Maven 仓库、依赖坐标、Firebase Gradle plugin 等固定配置。
|
|
190
|
+
|
|
191
|
+
当 Android 工程中存在多个 application module 时,如果未传 `--app-target`,命令会报出候选 module 列表;传入后会把 Gradle、Manifest、`google-services.json` 等写到选中的 module 下。
|
|
192
|
+
|
|
193
|
+
传入 `--app-target` 时会校验目标是否存在:Android 校验目标 application module,iOS 校验目标 App target。
|
|
194
|
+
|
|
195
|
+
### download-ios-sdk
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
node dist/entry.js download-ios-sdk --verbose
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
执行顺序:
|
|
202
|
+
|
|
203
|
+
1. 调用 sdk-home 版本接口:
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
GET https://business-api.meetgames.com/sdk/home/version
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
用途:读取下载中心当前 iOS 最新版本,即 `data.result.ios.ver` / `date`。
|
|
210
|
+
|
|
211
|
+
2. 调用 sdk-home 下载接口:
|
|
212
|
+
|
|
213
|
+
```text
|
|
214
|
+
GET https://business-api.meetgames.com/sdk/home/sdk-download/getDownLoadUrl
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
默认 query:
|
|
218
|
+
|
|
219
|
+
```text
|
|
220
|
+
version=<version接口返回的iOS版本>
|
|
221
|
+
platform=ios
|
|
222
|
+
plugins=guest,facebook,google,apple,apple_pay,dataAppsFlyer
|
|
223
|
+
packageType=native
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
用途:获取短期有效的 SDK zip 下载 URL。
|
|
227
|
+
|
|
228
|
+
3. 下载 zip 并解压到缓存目录:
|
|
229
|
+
|
|
230
|
+
```text
|
|
231
|
+
~/.cache/meet-sdk-tool/sdk/ios/<package-type>/<version>/<plugins-hash>/extracted
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
后续 `integrate` / `doctor` 的 iOS 流程会从缓存目录读取 `sdk/` 和 `plugins/`。
|
|
235
|
+
|
|
236
|
+
下载和解压成功后,命令会更新:
|
|
237
|
+
|
|
238
|
+
```text
|
|
239
|
+
config/meetsdk-ios.json
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
用途:记录当前缓存 iOS SDK 对应的版本、发布日期、包类型和插件组合。
|
|
243
|
+
|
|
244
|
+
### setup
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
node dist/entry.js setup \
|
|
248
|
+
--app-id <APP_ID> \
|
|
249
|
+
--app-secret '<APP_SECRET>' \
|
|
250
|
+
--channel-type APPLE \
|
|
251
|
+
--project-root /path/to/ios-project \
|
|
252
|
+
--env test \
|
|
253
|
+
--verbose
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
执行顺序:
|
|
257
|
+
|
|
258
|
+
1. `fetch-config`
|
|
259
|
+
2. `integrate`
|
|
260
|
+
|
|
261
|
+
### doctor
|
|
262
|
+
|
|
263
|
+
```bash
|
|
264
|
+
node dist/entry.js doctor \
|
|
265
|
+
--app-id <APP_ID> \
|
|
266
|
+
--app-secret '<APP_SECRET>' \
|
|
267
|
+
--channel-type APPLE \
|
|
268
|
+
--project-root /path/to/ios-project \
|
|
269
|
+
--env test \
|
|
270
|
+
--verbose
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
执行顺序:
|
|
274
|
+
|
|
275
|
+
1. `fetch-config`
|
|
276
|
+
2. 自动识别 Android / iOS
|
|
277
|
+
3. 执行对应平台详细校验
|
|
278
|
+
|
|
279
|
+
Android doctor 会检查仓库、依赖、`resValue`、`google-services.json` 等。
|
|
280
|
+
iOS doctor 会检查 SDK 文件、Xcode 引用、`GoogleService-Info.plist`、`Info.plist` 参数、插件参数、URL Scheme 是否写入、Delegate 注入等。
|
|
281
|
+
|
|
282
|
+
## 退出码
|
|
283
|
+
|
|
284
|
+
| 退出码 | 含义 |
|
|
285
|
+
|---:|---|
|
|
286
|
+
| `0` | 成功 |
|
|
287
|
+
| `2` | 参数错误 |
|
|
288
|
+
| `3` | 工程识别或工程结构错误 |
|
|
289
|
+
| `4` | 配置或 doctor 校验失败 |
|
|
290
|
+
| `5` | 集成 pipeline 失败 |
|
|
291
|
+
| `6` | 网络请求失败 |
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# SDK 接入说明
|
|
2
|
+
|
|
3
|
+
本文档说明 `meet-sdk-tool` 当前支持的 Android / iOS 原生工程接入流程。历史迁移资料已归档到 [`archive/`](./archive/)。
|
|
4
|
+
|
|
5
|
+
## 支持范围
|
|
6
|
+
|
|
7
|
+
| 平台 | 支持情况 | 说明 |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| Android 原生工程 | 支持 | Groovy `build.gradle` / `settings.gradle`;不支持 Kotlin DSL `.kts` 自动改写 |
|
|
10
|
+
| iOS 原生工程 | 支持 | `.xcodeproj`;支持传工程目录或 `.xcodeproj` 目录作为 `--project-root` |
|
|
11
|
+
| Unity / Cocos / LayaNative / Unreal | 不支持 | 当前工具只面向原生 Android / iOS 工程 |
|
|
12
|
+
|
|
13
|
+
## 配置文件
|
|
14
|
+
|
|
15
|
+
工具使用两类配置和一个版本接口:
|
|
16
|
+
|
|
17
|
+
| 来源 | 类型 | 作用 |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `~/.cache/meet-sdk-tool/configs/<env>/<appId>/<channelType>/meetsdk-remote-config.json` | `downloadSDKConfig` 接口拉取后落盘 | 每个游戏/渠道不同的业务参数,例如 `appId`、登录渠道 `clientId/secret/redirect/scheme/name` |
|
|
20
|
+
| `config/meetsdk-android.json` | 工具内置文件 | Android 固定 SDK 集成配置,例如 SDK 版本、Maven 仓库、依赖坐标、Firebase Gradle plugin |
|
|
21
|
+
| `config/meetsdk-ios.json` | 工具内置文件 | iOS 固定 SDK 集成配置,例如当前缓存 SDK 版本、发布日期、包类型、插件组合 |
|
|
22
|
+
| `GET https://business-api.meetgames.com/sdk/home/version` | sdk-home 接口 | Android 接入/检查时读取 `data.result.android.ver` 并写入 `config/meetsdk-android.json`;iOS 下载时读取 `data.result.ios.ver` 并写入 `config/meetsdk-ios.json` |
|
|
23
|
+
|
|
24
|
+
`meetsdk-remote-config.json` 由 `fetch-config`、`setup`、`doctor` 拉取并原样写入 `~/.cache/meet-sdk-tool`,不会写入游戏工程根目录。
|
|
25
|
+
`integrate` 读取缓存配置并执行接入;Android 接入会额外请求 sdk-home 版本接口获取最新 SDK 版本,并同步写回 `config/meetsdk-android.json`,不会重新拉取 `meetsdk-remote-config.json`。
|
|
26
|
+
|
|
27
|
+
## 推荐流程
|
|
28
|
+
|
|
29
|
+
### 一步接入
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
node dist/entry.js setup \
|
|
33
|
+
--app-id <APP_ID> \
|
|
34
|
+
--app-secret '<APP_SECRET>' \
|
|
35
|
+
--channel-type GOOGLE \
|
|
36
|
+
--project-root /path/to/project \
|
|
37
|
+
--env test \
|
|
38
|
+
--verbose
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### 接入后校验
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
node dist/entry.js doctor \
|
|
45
|
+
--app-id <APP_ID> \
|
|
46
|
+
--app-secret '<APP_SECRET>' \
|
|
47
|
+
--channel-type GOOGLE \
|
|
48
|
+
--project-root /path/to/project \
|
|
49
|
+
--env test \
|
|
50
|
+
--verbose
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
`doctor` 会先重新拉取远程配置,再根据当前工程类型执行 Android 或 iOS 的详细校验。
|
|
54
|
+
|
|
55
|
+
## 本地 console 联调
|
|
56
|
+
|
|
57
|
+
如果本地启动了 gp-sdk console:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
TOPSDK_API_BASE_URL=http://127.0.0.1:8081/ \
|
|
61
|
+
node dist/entry.js setup \
|
|
62
|
+
--app-id 791251136341225472 \
|
|
63
|
+
--app-secret 'YOUR_APP_SECRET' \
|
|
64
|
+
--channel-type APPLE \
|
|
65
|
+
--project-root ./fixtures/ios-test-project/tooltest \
|
|
66
|
+
--env test \
|
|
67
|
+
--verbose
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
`TOPSDK_API_BASE_URL` 会覆盖 `--env` 对应的默认域名。
|
|
71
|
+
|
|
72
|
+
## Android 接入内容
|
|
73
|
+
|
|
74
|
+
Android 接入时会根据 `meetsdk-remote-config.json` 和内置默认配置检查/写入:
|
|
75
|
+
|
|
76
|
+
- Application module 默认自动检测;如果工程存在多个 application module,需要通过 `--app-target <module>` 指定,例如 `:app` 或 `launcher`。
|
|
77
|
+
- sdk-home `version` 接口中的 `data.result.android.ver` / `date`,用于更新 `config/meetsdk-android.json` 并生成 App Module `build.gradle` 里的 `topsdk_version`。
|
|
78
|
+
- `settings.gradle` 或根 `build.gradle` 中的 Maven 仓库。
|
|
79
|
+
- 根 `build.gradle` 中的 Gradle plugin 声明,例如 Firebase google-services。
|
|
80
|
+
- App Module `build.gradle` 中的 SDK 依赖。
|
|
81
|
+
- App Module `defaultConfig` 中的 `resValue` 参数。
|
|
82
|
+
- `google-services.json` 下载和落盘。
|
|
83
|
+
- 默认 recipe 中声明的其他资源拷贝。
|
|
84
|
+
|
|
85
|
+
`doctor` 会校验仓库、依赖、`resValue`、Firebase 文件等是否已正确接入。
|
|
86
|
+
|
|
87
|
+
## iOS 接入内容
|
|
88
|
+
|
|
89
|
+
iOS 接入时会根据缓存 iOS SDK 中的 `config.t.json` 执行:
|
|
90
|
+
|
|
91
|
+
- 复制 framework / xcframework / bundle / lib / source 到 `topSDK/`。
|
|
92
|
+
- 启用 Firebase 时,从 `meetsdk-remote-config.json` 中的 `sdkModules.analytics.firebase.firebaseUrl` 下载 `GoogleService-Info.plist` 到和 `Info.plist` 同级的 App target 目录,不要求缓存 SDK 内置该 plist。
|
|
93
|
+
- 修改 `.xcodeproj/project.pbxproj`,加入 framework、资源、系统库、build settings、copy files 等配置。
|
|
94
|
+
- 修改 `Info.plist`,写入 `TOPSDK`、三方 SDK 参数、URL Scheme、Queries Schemes。
|
|
95
|
+
- 启用 Apple Sign In 时创建/更新 entitlements。
|
|
96
|
+
- 注入 Objective-C `AppDelegate` / `SceneDelegate` 回调代码:启动初始化保留在 `AppDelegate`;存在唯一 `SceneDelegate` 时,URL、Universal Link、前后台回调写入 `SceneDelegate`。
|
|
97
|
+
|
|
98
|
+
`doctor` 会校验 SDK 文件、Xcode 引用、`GoogleService-Info.plist`、`Info.plist` 参数、插件参数、URL Scheme 是否按配置写入,以及 Delegate 注入是否完整。
|
|
99
|
+
|
|
100
|
+
`download-ios-sdk` 默认把 iOS SDK zip、解压内容和 metadata 写入 `~/.cache/meet-sdk-tool/sdk/ios`。iOS 接入的具体文件复制和参数模板以缓存 SDK 内的 `sdk/`、`plugins/` 配置为准。
|
|
101
|
+
|
|
102
|
+
## iOS 插件模板字段
|
|
103
|
+
|
|
104
|
+
iOS 缓存 SDK 插件中的 `config.t.json` 是接入规则来源:
|
|
105
|
+
|
|
106
|
+
| 字段 | 作用 |
|
|
107
|
+
|---|---|
|
|
108
|
+
| `requireConfigs` | 声明插件必需的远程配置字段,缺失时接入/doctor 失败 |
|
|
109
|
+
| `pluginParams` | 写入 `Info.plist -> TOPSDK -> Plugins -> params` |
|
|
110
|
+
| `infoParams` | 写入 `Info.plist` 顶层字段,供三方 SDK 读取 |
|
|
111
|
+
| `urlScheme` | 写入 `Info.plist -> CFBundleURLTypes -> CFBundleURLSchemes` |
|
|
112
|
+
| `queriesSchemes` | 写入 `Info.plist -> LSApplicationQueriesSchemes` |
|
|
113
|
+
| `frameworks` / `libs` / `sources` | 声明需要复制并加入 Xcode 工程的资源 |
|
|
114
|
+
| `appDelegateCodes` / `sceneDelegateCodes` | 声明要注入 Delegate 的代码片段 |
|
|
115
|
+
|
|
116
|
+
例如 `"{$C.FACEBOOK.scheme}"` 表示从远程配置 `sdkModules.login.facebook.scheme` 构建出的 `C.FACEBOOK.scheme` 取值。
|
package/docs/MCP.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# MCP 使用说明
|
|
2
|
+
|
|
3
|
+
本文档说明 `meet-sdk-tool` 的 MCP server 及 Cursor 配置方式。
|
|
4
|
+
|
|
5
|
+
## 构建
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
cd /Users/work/Workspace/Projects/meet-sdk-tool
|
|
9
|
+
npm run build
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## 启动 MCP server
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm run mcp:stdio
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
或直接:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
node dist/mcp-entry.js
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## 暴露工具
|
|
25
|
+
|
|
26
|
+
| MCP 工具 | 作用 |
|
|
27
|
+
|---|---|
|
|
28
|
+
| `meetgames_doctor` | 拉取配置并检查 Android / iOS 接入是否正确 |
|
|
29
|
+
| `meetgames_fetch_config` | 调用 `downloadSDKConfig` 并写入 `~/.cache/meet-sdk-tool` 下的 `meetsdk-remote-config.json` |
|
|
30
|
+
| `meetgames_integrate_dry_run` | 只生成接入预览,不写工程文件 |
|
|
31
|
+
| `meetgames_integrate_apply` | 执行接入并写工程文件 |
|
|
32
|
+
| `meetgames_setup` | 先 fetch-config,再 integrate |
|
|
33
|
+
|
|
34
|
+
所有 integrate 类工具都使用内置 recipe:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
recipes/integrate-default.yaml
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
与 CLI 一样,多入口工程可显式指定目标:
|
|
41
|
+
|
|
42
|
+
| 参数 | 适用平台 | 说明 |
|
|
43
|
+
|---|---|---|
|
|
44
|
+
| `appTarget` | Android / iOS | 统一指定要接入/检查的 App 目标;Android 传 application module(如 `:app` / `app`),iOS 传 App target 名 |
|
|
45
|
+
|
|
46
|
+
传入 `appTarget` 时会校验目标是否存在:Android 校验目标 application module,iOS 校验目标 App target。
|
|
47
|
+
|
|
48
|
+
## 推荐调用顺序
|
|
49
|
+
|
|
50
|
+
一次性接入:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
meetgames_setup(dryRun=false)
|
|
54
|
+
meetgames_doctor()
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
需要先审查 diff:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
meetgames_fetch_config()
|
|
61
|
+
meetgames_integrate_dry_run()
|
|
62
|
+
meetgames_integrate_apply()
|
|
63
|
+
meetgames_doctor()
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Cursor 配置
|
|
67
|
+
|
|
68
|
+
将 `.cursor/mcp.example.json` 中的 server 配置复制到 Cursor MCP 配置中。
|
|
69
|
+
|
|
70
|
+
推荐本地开发配置:
|
|
71
|
+
|
|
72
|
+
```json
|
|
73
|
+
{
|
|
74
|
+
"mcpServers": {
|
|
75
|
+
"meetgames-mcp-local-node": {
|
|
76
|
+
"command": "node",
|
|
77
|
+
"args": [
|
|
78
|
+
"/Users/work/Workspace/Projects/meet-sdk-tool/dist/mcp-entry.js"
|
|
79
|
+
],
|
|
80
|
+
"cwd": "/Users/work/Workspace/Projects/meet-sdk-tool"
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
如果已经全局安装 npm 包,也可以使用全局 bin 方式;开发阶段建议使用本地 `dist/mcp-entry.js`,避免版本不一致。
|
package/docs/README.md
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
# meet-sdk-tool 文档索引
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
|
6
|
-
|
|
7
|
-
| [
|
|
8
|
-
| [
|
|
9
|
-
| [
|
|
10
|
-
| [
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
当前日常使用只需要优先查看根目录下的文档:
|
|
4
|
+
|
|
5
|
+
| 文档 | 用途 |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [CLI.md](./CLI.md) | `meetgames` 命令、参数、环境变量和退出码 |
|
|
8
|
+
| [INTEGRATION.md](./INTEGRATION.md) | Android / iOS SDK 自动接入流程、doctor 校验内容、发版前测试方式 |
|
|
9
|
+
| [API.md](./API.md) | `downloadSDKConfig` 接口、签名、落盘 JSON 结构 |
|
|
10
|
+
| [MCP.md](./MCP.md) | MCP server、Cursor 配置和 Agent 调用顺序 |
|
|
11
|
+
|
|
12
|
+
历史资料已归档到 [`archive/`](./archive/):
|
|
13
|
+
|
|
14
|
+
| 目录 / 文件 | 内容 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| [archive/ios-migration.md](./archive/ios-migration.md) | iOS Python 工具迁移到 TypeScript 的完整历史记录 |
|
|
17
|
+
| [archive/api/](./archive/api/) | 旧接口、对照接口和旧版详细接口文档 |
|
|
18
|
+
| [archive/product/](./archive/product/) | PRD、技术调研等过程文档 |
|
|
19
|
+
|
|
20
|
+
实现细节以代码为准;如果文档和代码不一致,以 `src/cli.ts`、`src/core/doctor.ts`、`src/ios/`、`src/android/` 当前实现为准。
|
|
@@ -38,7 +38,7 @@ meetgames fetch-config --app-id 791251136341225472 --app-secret YOUR_APP_SECRET
|
|
|
38
38
|
|
|
39
39
|
- **Content-Type**:`application/json`(附件下载头 `Content-Disposition: meetsdk-remote-config.json`)
|
|
40
40
|
- **Body**:即为 `meetsdk-remote-config.json` 全文(pretty JSON),**不是** `{ code, result }` 包装
|
|
41
|
-
- **落盘**:`fetch-config` / MCP `meetgames_fetch_config` 将响应 **bytes 原样写入**
|
|
41
|
+
- **落盘**:`fetch-config` / MCP `meetgames_fetch_config` 将响应 **bytes 原样写入** `~/.cache/meet-sdk-tool`,不注入 `dependencies`/`repositories`/`topsdk.version` 等字段;这些固定 SDK 配置仅在 `integrate` 时从内置 [`config/meetsdk-android.json`](../../config/meetsdk-android.json) 合并。
|
|
42
42
|
|
|
43
43
|
### 服务端数据来源(gp-sdk MySQL)
|
|
44
44
|
|
|
@@ -48,15 +48,17 @@ meetgames fetch-config --app-id 791251136341225472 --app-secret YOUR_APP_SECRET
|
|
|
48
48
|
| `channel` | `channel.channel_type` | 枚举名如 `GOOGLE` / `APPLE` |
|
|
49
49
|
| `devicePlatform` | `channel.device_platform` | 小写,如 `android` / `ios` |
|
|
50
50
|
| `topsdk.appId` / `topsdk.appSecret` | `app` | |
|
|
51
|
-
| `sdkModules.login.*` | `channel_auth
|
|
51
|
+
| `sdkModules.login.*` | `channel_auth` | key 直接使用 `authType` 小写,如 `guest` / `email` / `google` / `snapchat`;参数使用 `DTOChannelAuth` 字段名 |
|
|
52
52
|
| `sdkModules.payment.*` | `channel_payment` + 部分 `channel_auth` | IAP 平台 |
|
|
53
|
-
| `sdkModules.analytics.*` | `channel_third_data_platform` | AppsFlyer / Firebase / Adjust |
|
|
54
|
-
| `sdkModules.analytics.firebase.
|
|
55
|
-
| `sdkModules.analytics.firebase.
|
|
53
|
+
| `sdkModules.analytics.*` | `channel_third_data_platform` | AppsFlyer / Firebase / Adjust;参数使用 `ChannelThirdDataPlatform` 字段名 |
|
|
54
|
+
| `sdkModules.analytics.firebase.firebaseUrl` | `channel_third_data_platform.firebase_url` | MG 经 **uploadV2** 上传后多为 OSS **objectKey**;组装 JSON 时经 `AliYunOssUtil.getOssUr` 生成下载链接(与 `downLoadXml` 一致)。若库内为 http(s) URL 则 `getFileUrl` 换签 |
|
|
55
|
+
| `sdkModules.analytics.firebase.firebaseName` | `channel_third_data_platform.firebase_name` | 上传原始文件名(含后缀);落盘路径由 meet-sdk-tool 按检测到或通过 `--app-target` 指定的工程 **app module** 决定 |
|
|
56
56
|
|
|
57
57
|
详见 gp-sdk `SdkConfigDownloadServiceImpl`;**不包含** `topsdk.version`(integrate 时用 `meetsdk-android.json` 兜底)。
|
|
58
58
|
|
|
59
|
-
**子模块写入**:只要库表里有对应配置参数即写入子键,value 为对象(或 `{}`);无配置**不写该键**(不出现 `false
|
|
59
|
+
**子模块写入**:只要库表里有对应配置参数即写入子键,value 为对象(或 `{}`);无配置**不写该键**(不出现 `false`)。插件对象内只写有值字段,不写空字符串占位。`channel_auth` 输出字段为 `clientId` / `secret` / `redirect` / `scheme` / `name`;`channel_third_data_platform` 输出字段保持 `devKey` / `appleAppId` / `firebaseUrl` / `firebaseName` / `appCode` / `eventUrl` 等实体字段名,其中 `eventUrl` 属于 `analytics.adjust`,不属于 `analytics.appsflyer`。**不**再根据 `channel_auth.enable` / `channel_payment.enable` 过滤。`analytics.facebookdata` 等独立开关字段预留,待 meetgames-business 配置后再接。
|
|
60
|
+
|
|
61
|
+
`meet-sdk-tool` 按上述 DTO/entity 原字段名读取配置;旧字段名不再作为兼容输入。
|
|
60
62
|
|
|
61
63
|
**meet-sdk-tool integrate**:仅当 JSON 里写了对应子键时接入(如 `login.kakao`、`analytics.appsflyer`);有键则 value 必为 `{…}`。
|
|
62
64
|
|
|
@@ -83,7 +85,7 @@ JSON Schema:[`schema/meetsdk-remote-config.schema.json`](../../schema/meetsdk-
|
|
|
83
85
|
### 响应体样例
|
|
84
86
|
|
|
85
87
|
仓库内测试用 mock:[`fixtures/meetsdk-remote-config.mock.json`](../../fixtures/meetsdk-remote-config.mock.json)
|
|
86
|
-
Vitest 样例工程:[`test-
|
|
88
|
+
Vitest 样例工程:[`fixtures/android-test-project/android-latest-project/meetsdk-remote-config.json`](../../../fixtures/android-test-project/android-latest-project/meetsdk-remote-config.json)(联调后可能被覆盖)
|
|
87
89
|
|
|
88
90
|
## 与 getChannelConfig 的区别
|
|
89
91
|
|
|
@@ -90,10 +90,10 @@ GET https://test-business-api.meetgames.com/customer/topsdk/console/meetgames/ch
|
|
|
90
90
|
| `appId` | `topsdk.appId`(secret 在 `app` 表,此接口 result 未必带出) |
|
|
91
91
|
| `authConfigs[]`(`enable`) | `sdkModules.login.*` |
|
|
92
92
|
| `thirdDataPlatform.devKey` | `sdkModules.analytics.appsflyer` 等 |
|
|
93
|
-
| `thirdDataPlatform.firebaseUrl` | Firebase / `
|
|
93
|
+
| `thirdDataPlatform.firebaseUrl` | Firebase / `firebaseUrl` 字段 |
|
|
94
94
|
| `parameterConfig` | 支付 / Google Play 服务账号等,与 `channel_payment`、parameter 表相关 |
|
|
95
95
|
|
|
96
|
-
完整 Gradle 集成仍依赖工具侧 [`meetsdk-android.json`](../../meetsdk-android.json) 合并版本与依赖。
|
|
96
|
+
完整 Gradle 集成仍依赖工具侧 [`config/meetsdk-android.json`](../../config/meetsdk-android.json) 合并版本与依赖。
|
|
97
97
|
|
|
98
98
|
## 脱敏样例
|
|
99
99
|
|