@leonxin/meetgames 0.1.8 → 0.1.11

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.
Files changed (285) hide show
  1. package/.agents/skills/meet-sdk-regression/SKILL.md +93 -0
  2. package/.cursor/mcp.example.json +16 -0
  3. package/.cursor/mcp.json +11 -0
  4. package/.cursor/skills/meetgames-mcp/SKILL.md +48 -0
  5. package/.vite/vitest/results.json +1 -0
  6. package/README.md +31 -8
  7. package/dist/aab-converter/aab-entry.d.ts +3 -0
  8. package/dist/aab-converter/aab-entry.d.ts.map +1 -0
  9. package/dist/aab-converter/aab-entry.js +49 -0
  10. package/dist/aab-converter/aab-entry.js.map +1 -0
  11. package/dist/aab-converter/apksExtractor.d.ts +2 -0
  12. package/dist/aab-converter/apksExtractor.d.ts.map +1 -0
  13. package/dist/aab-converter/apksExtractor.js +108 -0
  14. package/dist/aab-converter/apksExtractor.js.map +1 -0
  15. package/dist/aab-converter/bundletoolRunner.d.ts +15 -0
  16. package/dist/aab-converter/bundletoolRunner.d.ts.map +1 -0
  17. package/dist/aab-converter/bundletoolRunner.js +46 -0
  18. package/dist/aab-converter/bundletoolRunner.js.map +1 -0
  19. package/dist/aab-converter/cliArgs.d.ts +27 -0
  20. package/dist/aab-converter/cliArgs.d.ts.map +1 -0
  21. package/dist/aab-converter/cliArgs.js +170 -0
  22. package/dist/aab-converter/cliArgs.js.map +1 -0
  23. package/dist/aab-converter/convertAabToApk.d.ts +7 -0
  24. package/dist/aab-converter/convertAabToApk.d.ts.map +1 -0
  25. package/dist/aab-converter/convertAabToApk.js +69 -0
  26. package/dist/aab-converter/convertAabToApk.js.map +1 -0
  27. package/dist/aab-converter/resourcePaths.d.ts +4 -0
  28. package/dist/aab-converter/resourcePaths.d.ts.map +1 -0
  29. package/dist/aab-converter/resourcePaths.js +42 -0
  30. package/dist/aab-converter/resourcePaths.js.map +1 -0
  31. package/dist/aab-converter/signingOptions.d.ts +9 -0
  32. package/dist/aab-converter/signingOptions.d.ts.map +1 -0
  33. package/dist/aab-converter/signingOptions.js +21 -0
  34. package/dist/aab-converter/signingOptions.js.map +1 -0
  35. package/dist/aab-converter/types.d.ts +24 -0
  36. package/dist/aab-converter/types.d.ts.map +1 -0
  37. package/dist/aab-converter/types.js +2 -0
  38. package/dist/aab-converter/types.js.map +1 -0
  39. package/dist/android/adapter.d.ts.map +1 -1
  40. package/dist/android/adapter.js +2 -2
  41. package/dist/android/adapter.js.map +1 -1
  42. package/dist/android/detect.d.ts +2 -2
  43. package/dist/android/detect.d.ts.map +1 -1
  44. package/dist/android/detect.js +36 -8
  45. package/dist/android/detect.js.map +1 -1
  46. package/dist/cli.d.ts.map +1 -1
  47. package/dist/cli.js +157 -31
  48. package/dist/cli.js.map +1 -1
  49. package/dist/config/meetSdkDefaultConfig.d.ts +19 -2
  50. package/dist/config/meetSdkDefaultConfig.d.ts.map +1 -1
  51. package/dist/config/meetSdkDefaultConfig.js +67 -5
  52. package/dist/config/meetSdkDefaultConfig.js.map +1 -1
  53. package/dist/config/meetSdkIosConfig.d.ts +21 -0
  54. package/dist/config/meetSdkIosConfig.d.ts.map +1 -0
  55. package/dist/config/meetSdkIosConfig.js +66 -0
  56. package/dist/config/meetSdkIosConfig.js.map +1 -0
  57. package/dist/config/meetSdkRemoteConfig.d.ts +18 -1
  58. package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
  59. package/dist/config/meetSdkRemoteConfig.js +61 -25
  60. package/dist/config/meetSdkRemoteConfig.js.map +1 -1
  61. package/dist/contracts/types.d.ts +19 -6
  62. package/dist/contracts/types.d.ts.map +1 -1
  63. package/dist/core/doctor.d.ts +17 -0
  64. package/dist/core/doctor.d.ts.map +1 -0
  65. package/dist/core/doctor.js +444 -0
  66. package/dist/core/doctor.js.map +1 -0
  67. package/dist/core/pipeline.d.ts.map +1 -1
  68. package/dist/core/pipeline.js +0 -15
  69. package/dist/core/pipeline.js.map +1 -1
  70. package/dist/core/platform.d.ts +12 -0
  71. package/dist/core/platform.d.ts.map +1 -0
  72. package/dist/core/platform.js +40 -0
  73. package/dist/core/platform.js.map +1 -0
  74. package/dist/core/reporter.js +1 -1
  75. package/dist/core/reporter.js.map +1 -1
  76. package/dist/core/workspace.d.ts +2 -2
  77. package/dist/core/workspace.d.ts.map +1 -1
  78. package/dist/core/workspace.js +4 -5
  79. package/dist/core/workspace.js.map +1 -1
  80. package/dist/index.d.ts +3 -1
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +3 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/ios/channelConfig.d.ts +1 -0
  85. package/dist/ios/channelConfig.d.ts.map +1 -1
  86. package/dist/ios/channelConfig.js +82 -0
  87. package/dist/ios/channelConfig.js.map +1 -1
  88. package/dist/ios/codeUtils.d.ts +1 -0
  89. package/dist/ios/codeUtils.d.ts.map +1 -1
  90. package/dist/ios/codeUtils.js +11 -2
  91. package/dist/ios/codeUtils.js.map +1 -1
  92. package/dist/ios/detect.d.ts +2 -2
  93. package/dist/ios/detect.d.ts.map +1 -1
  94. package/dist/ios/detect.js +49 -10
  95. package/dist/ios/detect.js.map +1 -1
  96. package/dist/ios/entitlements.d.ts +4 -0
  97. package/dist/ios/entitlements.d.ts.map +1 -0
  98. package/dist/ios/entitlements.js +53 -0
  99. package/dist/ios/entitlements.js.map +1 -0
  100. package/dist/ios/fileManager.d.ts.map +1 -1
  101. package/dist/ios/fileManager.js +3 -2
  102. package/dist/ios/fileManager.js.map +1 -1
  103. package/dist/ios/infoPlist.d.ts +1 -1
  104. package/dist/ios/infoPlist.d.ts.map +1 -1
  105. package/dist/ios/infoPlist.js.map +1 -1
  106. package/dist/ios/integrate.d.ts.map +1 -1
  107. package/dist/ios/integrate.js +211 -36
  108. package/dist/ios/integrate.js.map +1 -1
  109. package/dist/ios/pbxprojEditor.d.ts +2 -0
  110. package/dist/ios/pbxprojEditor.d.ts.map +1 -1
  111. package/dist/ios/pbxprojEditor.js +179 -1
  112. package/dist/ios/pbxprojEditor.js.map +1 -1
  113. package/dist/ios/pluginConfig.d.ts +1 -0
  114. package/dist/ios/pluginConfig.d.ts.map +1 -1
  115. package/dist/ios/pluginConfig.js +36 -4
  116. package/dist/ios/pluginConfig.js.map +1 -1
  117. package/dist/ios/sdkBundle.d.ts +1 -1
  118. package/dist/ios/sdkBundle.d.ts.map +1 -1
  119. package/dist/ios/sdkBundle.js +7 -5
  120. package/dist/ios/sdkBundle.js.map +1 -1
  121. package/dist/ios/template.d.ts +1 -0
  122. package/dist/ios/template.d.ts.map +1 -1
  123. package/dist/ios/template.js +14 -1
  124. package/dist/ios/template.js.map +1 -1
  125. package/dist/ios/types.d.ts +2 -2
  126. package/dist/ios/types.d.ts.map +1 -1
  127. package/dist/mcp/server.d.ts.map +1 -1
  128. package/dist/mcp/server.js +14 -13
  129. package/dist/mcp/server.js.map +1 -1
  130. package/dist/mcp/service.d.ts +8 -6
  131. package/dist/mcp/service.d.ts.map +1 -1
  132. package/dist/mcp/service.js +34 -14
  133. package/dist/mcp/service.js.map +1 -1
  134. package/dist/ops/handlers.d.ts.map +1 -1
  135. package/dist/ops/handlers.js +10 -4
  136. package/dist/ops/handlers.js.map +1 -1
  137. package/dist/remote/sdkHomeDownload.d.ts +65 -0
  138. package/dist/remote/sdkHomeDownload.d.ts.map +1 -0
  139. package/dist/remote/sdkHomeDownload.js +208 -0
  140. package/dist/remote/sdkHomeDownload.js.map +1 -0
  141. package/dist/remote/topsdkDownloadSdkConfig.d.ts.map +1 -1
  142. package/dist/remote/topsdkDownloadSdkConfig.js +11 -1
  143. package/dist/remote/topsdkDownloadSdkConfig.js.map +1 -1
  144. package/dist/shared/errors.d.ts +7 -0
  145. package/dist/shared/errors.d.ts.map +1 -0
  146. package/dist/shared/errors.js +16 -0
  147. package/dist/shared/errors.js.map +1 -0
  148. package/dist/shared/fileUtils.d.ts +5 -0
  149. package/dist/shared/fileUtils.d.ts.map +1 -0
  150. package/dist/shared/fileUtils.js +35 -0
  151. package/dist/shared/fileUtils.js.map +1 -0
  152. package/dist/shared/logger.d.ts +10 -0
  153. package/dist/shared/logger.d.ts.map +1 -0
  154. package/dist/shared/logger.js +37 -0
  155. package/dist/shared/logger.js.map +1 -0
  156. package/dist/shared/pathUtils.d.ts +4 -0
  157. package/dist/shared/pathUtils.d.ts.map +1 -0
  158. package/dist/shared/pathUtils.js +22 -0
  159. package/dist/shared/pathUtils.js.map +1 -0
  160. package/dist/shared/processRunner.d.ts +12 -0
  161. package/dist/shared/processRunner.d.ts.map +1 -0
  162. package/dist/shared/processRunner.js +31 -0
  163. package/dist/shared/processRunner.js.map +1 -0
  164. package/docs/AAB_CONVERTER_CLI_PLAN.md +392 -0
  165. package/docs/API.md +246 -32
  166. package/docs/CLI.md +292 -0
  167. package/docs/INTEGRATION.md +116 -0
  168. package/docs/MCP.md +86 -0
  169. package/docs/README.md +19 -10
  170. package/docs/{api → archive/api}/downloadSDKConfig.md +8 -6
  171. package/docs/{api → archive/api}/getChannelConfig-meetgames.md +1 -1
  172. package/docs/archive/ios-migration.md +2139 -0
  173. 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
  174. package/docs/{ → archive/product/}/351/234/200/346/261/202/346/226/207/346/241/243.md +15 -14
  175. package/logs/convert-20260622-155037.log +5 -0
  176. package/logs/convert-20260622-155226.log +6 -0
  177. package/meetsdk-android.json +2 -1
  178. package/meetsdk-ios.json +15 -0
  179. package/package.json +10 -36
  180. package/scripts/package-aab-cli-win.mjs +193 -0
  181. package/src/aab-converter/aab-entry.ts +48 -0
  182. package/src/aab-converter/apksExtractor.ts +119 -0
  183. package/src/aab-converter/bundletoolRunner.ts +63 -0
  184. package/src/aab-converter/cliArgs.ts +194 -0
  185. package/src/aab-converter/convertAabToApk.ts +81 -0
  186. package/src/aab-converter/resourcePaths.ts +43 -0
  187. package/src/aab-converter/signingOptions.ts +29 -0
  188. package/src/aab-converter/types.ts +26 -0
  189. package/src/android/adapter.ts +9 -0
  190. package/src/android/assembleIntegrationJson.ts +33 -0
  191. package/src/android/detect.ts +132 -0
  192. package/src/android/downloadGoogleServicesJson.ts +56 -0
  193. package/src/android/gradle.ts +116 -0
  194. package/src/android/manifest.ts +50 -0
  195. package/src/android/meetSdkRemoteGradle.ts +837 -0
  196. package/src/cli.ts +488 -0
  197. package/src/config/fetchConfigWrite.ts +30 -0
  198. package/src/config/loadAndroidIntegration.ts +41 -0
  199. package/src/config/loadManifest.ts +40 -0
  200. package/src/config/meetSdkDefaultConfig.ts +99 -0
  201. package/src/config/meetSdkIosConfig.ts +87 -0
  202. package/src/config/meetSdkRemoteConfig.ts +1211 -0
  203. package/src/config/topsdkFeatureModules.ts +92 -0
  204. package/src/contracts/types.ts +121 -0
  205. package/src/core/doctor.ts +485 -0
  206. package/src/core/patch.ts +64 -0
  207. package/src/core/pipeline.ts +107 -0
  208. package/src/core/platform.ts +47 -0
  209. package/src/core/previewPatches.ts +23 -0
  210. package/src/core/reporter.ts +24 -0
  211. package/src/core/workspace.ts +29 -0
  212. package/src/entry.ts +7 -0
  213. package/src/index.ts +133 -0
  214. package/src/ios/channelConfig.ts +128 -0
  215. package/src/ios/codeUtils.ts +160 -0
  216. package/src/ios/detect.ts +105 -0
  217. package/src/ios/entitlements.ts +61 -0
  218. package/src/ios/fileManager.ts +48 -0
  219. package/src/ios/infoPlist.ts +55 -0
  220. package/src/ios/integrate.ts +516 -0
  221. package/src/ios/pbxprojEditor.ts +383 -0
  222. package/src/ios/pluginConfig.ts +97 -0
  223. package/src/ios/reserved.ts +8 -0
  224. package/src/ios/sdkBundle.ts +36 -0
  225. package/src/ios/template.ts +36 -0
  226. package/src/ios/types.ts +65 -0
  227. package/src/mcp/server.ts +170 -0
  228. package/src/mcp/service.ts +222 -0
  229. package/src/mcp-entry.ts +7 -0
  230. package/src/ops/fileStore.ts +56 -0
  231. package/src/ops/handlers.ts +304 -0
  232. package/src/remote/fetchJson.ts +22 -0
  233. package/src/remote/sdkHomeDownload.ts +274 -0
  234. package/src/remote/topsdkDownloadSdkConfig.ts +93 -0
  235. package/src/remote/topsdkGetSdkConfig.ts +122 -0
  236. package/src/remote/topsdkSign.ts +10 -0
  237. package/src/shared/errors.ts +16 -0
  238. package/src/shared/fileUtils.ts +41 -0
  239. package/src/shared/logger.ts +49 -0
  240. package/src/shared/pathUtils.ts +24 -0
  241. package/src/shared/processRunner.ts +43 -0
  242. package/test-projects/README.md +51 -0
  243. package/test-projects/_preview/pipeline.patch +281 -0
  244. package/tests/aab-converter.test.ts +213 -0
  245. package/tests/assemble.test.ts +12 -0
  246. package/tests/doctor.test.ts +89 -0
  247. package/tests/downloadGoogleServicesJson.test.ts +47 -0
  248. package/tests/fetch-remote.test.ts +23 -0
  249. package/tests/fetchConfigOverrides.test.ts +28 -0
  250. package/tests/fetchConfigWrite.test.ts +54 -0
  251. package/tests/gradle.test.ts +33 -0
  252. package/tests/integration-json.test.ts +29 -0
  253. package/tests/ios.codeUtils.test.ts +23 -0
  254. package/tests/ios.sdkBundle.test.ts +16 -0
  255. package/tests/loadManifest.test.ts +15 -0
  256. package/tests/manifest-xml.test.ts +30 -0
  257. package/tests/mcp.e2e.ts +217 -0
  258. package/tests/mcp.service.test.ts +53 -0
  259. package/tests/meetSdkRemoteConfig.test.ts +456 -0
  260. package/tests/meetSdkRemoteGradle.test.ts +414 -0
  261. package/tests/pipeline.android.test.ts +96 -0
  262. package/tests/pipeline.integration-json.test.ts +58 -0
  263. package/tests/pipeline.ios.test.ts +385 -0
  264. package/tests/pipeline.preview.patch.test.ts +85 -0
  265. package/tests/platformSelection.test.ts +77 -0
  266. package/tests/sdkHomeDownload.test.ts +124 -0
  267. package/tests/sdkVersionConfig.test.ts +130 -0
  268. package/tests/test-projects-hosts.test.ts +78 -0
  269. package/tests/topsdk.test.ts +53 -0
  270. package/tests/topsdkDownloadSdkConfig.test.ts +81 -0
  271. package/tests/topsdkFeatureModules.test.ts +116 -0
  272. package/tsconfig.json +19 -0
  273. package/vitest.config.ts +9 -0
  274. package/vitest.mcp.config.ts +11 -0
  275. package/bundled/android/sample.txt +0 -1
  276. package/docs/ANDROID.md +0 -133
  277. package/docs/CURSOR-MCP-SETUP.md +0 -72
  278. package/docs/MCP-SKILL.md +0 -63
  279. package/fixtures/api-samples/getChannelConfig-meetgames.sample.json +0 -123
  280. package/fixtures/meetsdk-remote-config.download-shape.json +0 -20
  281. package/fixtures/meetsdk-remote-config.mock.json +0 -69
  282. package/fixtures/recipes/android-default.fixture.yaml +0 -15
  283. package/fixtures/recipes/android-integration.fixture.json +0 -29
  284. package/fixtures/topsdk-config-reference.json +0 -39
  285. /package/docs/{api → archive/api}/getSDKConfig.md +0 -0
package/docs/API.md CHANGED
@@ -1,47 +1,261 @@
1
- # meet-sdk-tool 相关 HTTP 接口汇总
1
+ # API 说明
2
2
 
3
- 本文档汇总 **meet-sdk-tool** 可能接触或对齐的远程接口,便于联调与字段对照。样例 JSON 放在 [`fixtures/api-samples/`](../fixtures/api-samples/)(**已脱敏**,勿把含 `appSecret` / 私钥的原文提交到仓库)。
3
+ `meet-sdk-tool` 当前有两类远端接口:
4
4
 
5
- ## 与本工具 CLI 的关系
5
+ | 接口 | 服务 | 用途 |
6
+ |---|---|---|
7
+ | `GET {baseUrl}/console/openSDK/downloadSDKConfig` | gp-sdk console | 生成并下载宿主工程集成所需的 `meetsdk-remote-config.json` |
8
+ | `GET https://business-api.meetgames.com/sdk/home/version` | sdk-home | 获取下载中心展示的 Android / iOS 最新 SDK 版本和发布日期 |
9
+ | `GET https://business-api.meetgames.com/sdk/home/sdk-download/getDownLoadUrl` | sdk-home | 根据版本、平台、插件和包类型获取 SDK zip 临时下载地址 |
6
10
 
7
- | 接口 | meet-sdk-tool 是否调用 | CLI / 命令 |
8
- |------|------------------------|------------|
9
- | [downloadSDKConfig](./api/downloadSDKConfig.md) | **是(当前主路径)** | `fetch-config`、`setup` |
10
- | [getSDKConfig](./api/getSDKConfig.md) | 否(库内有实现,可映射 JSON) | — |
11
- | [getChannelConfig(MeetGames 运营后台)](./api/getChannelConfig-meetgames.md) | **否** | — |
11
+ `downloadSDKConfig` 用于宿主工程配置;sdk-home 版本接口用于 Android 接入时解析最新 SDK 版本并写入 `meetsdk-android.json`,也用于 iOS SDK 下载时解析最新版本并写入 `meetsdk-ios.json`;sdk-home 下载接口用于同步工具包内置 iOS SDK 资源到 `bundled/ios-sdk`。
12
12
 
13
- `integrate` / `doctor` **不请求 HTTP**,只读本地 `meetsdk-remote-config.json` 与工程文件。
13
+ ## CLI 使用关系
14
14
 
15
- ## 环境 Base URL
15
+ | 命令 | 是否请求接口 | 说明 |
16
+ |---|---:|---|
17
+ | `fetch-config` | 是 | 拉取并写入 `meetsdk-remote-config.json` |
18
+ | `setup` | 是 | 第一步执行 `fetch-config`;Android 集成阶段还会读取 sdk-home 最新 Android 版本并写入 `meetsdk-android.json` |
19
+ | `doctor` | 是 | 第一步执行 `fetch-config`;Android 检查阶段还会读取 sdk-home 最新 Android 版本并写入 `meetsdk-android.json` |
20
+ | `integrate` | Android 是 / iOS 否 | Android 读取 sdk-home 最新 Android 版本,写入 `meetsdk-android.json`,再写入 Gradle;iOS 只读取本地 `meetsdk-remote-config.json` 和 bundled SDK |
21
+ | `download-ios-sdk` | 是 | 先读 sdk-home 最新 iOS 版本,再取 SDK zip URL,下载并解压到 `bundled/ios-sdk`,成功后写入 `meetsdk-ios.json` |
16
22
 
17
- | 环境 | gp-sdk `openSDK`(download / getSDKConfig) | 说明 |
18
- |------|-------------------------------------------|------|
19
- | `prod` | `https://api-sdk-gameplus.meetsocial.com/` | CLI `--env prod`(默认) |
20
- | `pre` | `https://pre-api-sdk-gameplus.meetsocial.com/` | CLI `--env pre` |
21
- | `test` | `https://test-api-sdk-gameplus.meetsocial.com/` | CLI `--env test` |
22
- | 覆盖 | 环境变量 `TOPSDK_API_BASE_URL` | 如本机 console:`http://localhost:18080/` |
23
+ ## downloadSDKConfig
23
24
 
24
- MeetGames **业务网关**(如 `getChannelConfig`)与 gp-sdk 主机不同,见各接口文档。
25
+ ### 请求
25
26
 
26
- ## 文档索引
27
+ | 项 | 值 |
28
+ |---|---|
29
+ | 方法 | `GET` |
30
+ | 路径 | `{baseUrl}console/openSDK/downloadSDKConfig` |
31
+ | Query | `appId`、`channelType`、`sign`、`timestamp` |
32
+ | 签名 | `sign = base64(md5_binary(appId + appSecret + timestamp))` |
33
+ | timestamp | 毫秒时间戳 |
27
34
 
28
- 1. [downloadSDKConfig](./api/downloadSDKConfig.md) — gp-sdk 组装 `meetsdk-remote-config.json` 并下载
29
- 2. [getSDKConfig](./api/getSDKConfig.md) — gp-sdk 旧接口,需 sign,返回 `channelAuthConfig`
30
- 3. [getChannelConfig(MeetGames)](./api/getChannelConfig-meetgames.md) — 运营后台渠道配置 VO,含 `authConfigs` / `thirdDataPlatform` / `parameterConfig`
35
+ 示例:
31
36
 
32
- ## 本地落盘格式
37
+ ```http
38
+ GET http://127.0.0.1:8081/console/openSDK/downloadSDKConfig?appId=791251136341225472&channelType=APPLE&sign=...&timestamp=...
39
+ ```
33
40
 
34
- 无论通过哪条接口理解字段,**集成流水线只消费**工程根目录的:
41
+ CLI:
35
42
 
36
- [`meetsdk-remote-config.json`](../fixtures/meetsdk-remote-config.mock.json)(结构见 [`src/config/meetSdkRemoteConfig.ts`](../src/config/meetSdkRemoteConfig.ts)、JSON Schema [`schema/meetsdk-remote-config.schema.json`](../schema/meetsdk-remote-config.schema.json))
43
+ ```bash
44
+ TOPSDK_API_BASE_URL=http://127.0.0.1:8081/ \
45
+ node dist/entry.js fetch-config \
46
+ --app-id 791251136341225472 \
47
+ --app-secret 'YOUR_APP_SECRET' \
48
+ --channel-type APPLE \
49
+ --project-root ./fixtures/ios-test-project/tooltest \
50
+ --env test \
51
+ --verbose
52
+ ```
37
53
 
38
- 固定 Gradle 仓库、SDK 版本、依赖坐标由 [`meetsdk-android.json`](../meetsdk-android.json) 在 `integrate` 时合并。
54
+ ### Base URL
39
55
 
40
- ## 代码入口
56
+ | 环境 | Base URL |
57
+ |---|---|
58
+ | `prod` | `https://api-sdk-gameplus.meetsocial.com/` |
59
+ | `pre` | `https://pre-api-sdk-gameplus.meetsocial.com/` |
60
+ | `test` | `https://test-api-sdk-gameplus.meetsocial.com/` |
61
+ | 本地覆盖 | `TOPSDK_API_BASE_URL=http://127.0.0.1:8081/` |
41
62
 
42
- | 能力 | 源文件 |
43
- |------|--------|
44
- | downloadSDKConfig 客户端 | [`src/remote/topsdkDownloadSdkConfig.ts`](../src/remote/topsdkDownloadSdkConfig.ts) |
45
- | getSDKConfig 客户端 | [`src/remote/topsdkGetSdkConfig.ts`](../src/remote/topsdkGetSdkConfig.ts) |
46
- | 响应 meetsdk 形 | [`src/config/meetSdkRemoteConfig.ts`](../src/config/meetSdkRemoteConfig.ts) |
47
- | gp-sdk 服务端组装 | `gp-sdk/console/.../SdkConfigDownloadServiceImpl.java` |
63
+ `TOPSDK_API_BASE_URL` 优先级最高。
64
+
65
+ ### 响应
66
+
67
+ 响应 body 是完整 `meetsdk-remote-config.json`,不是 `{ code, data }` 包装。
68
+
69
+ `fetch-config`、`setup`、`doctor` 会把响应原文写入:
70
+
71
+ ```text
72
+ <project-root>/meetsdk-remote-config.json
73
+ ```
74
+
75
+ ### JSON 数据来源
76
+
77
+ | JSON 路径 | 数据来源 | 说明 |
78
+ |---|---|---|
79
+ | `packageName` | `channel.package_name` | Android package / iOS bundle 相关标识 |
80
+ | `channel` | `channel.channel_type` | 例如 `GOOGLE` / `APPLE` |
81
+ | `devicePlatform` | `channel.device_platform` | `android` / `ios` |
82
+ | `topsdk.appId` | `app.id` | 应用 ID |
83
+ | `topsdk.appSecret` | `app.secret` | 应用密钥 |
84
+ | `sdkModules.login.*` | `channel_auth` | key 使用 authType 小写;字段使用 `DTOChannelAuth` 原字段 |
85
+ | `sdkModules.payment.*` | `channel_payment` | IAP 平台配置 |
86
+ | `sdkModules.analytics.*` | `channel_third_data_platform` | AppsFlyer / Firebase / Adjust 等 |
87
+
88
+ ### 字段规则
89
+
90
+ `downloadSDKConfig` 只输出数据库原始字段中有 value 的 key。
91
+
92
+ 登录渠道字段来自 `DTOChannelAuth`:
93
+
94
+ ```text
95
+ clientId
96
+ secret
97
+ redirect
98
+ scheme
99
+ name
100
+ ```
101
+
102
+ 如果数据库没有 `scheme`,JSON 不输出 `scheme`。
103
+ 如果数据库没有 `name`,JSON 不输出 `name`。
104
+ 服务端不做推导、不写空字符串占位。
105
+
106
+ 示例:
107
+
108
+ ```json
109
+ {
110
+ "sdkModules": {
111
+ "login": {
112
+ "facebook": {
113
+ "clientId": "883695101201170",
114
+ "scheme": "fb883695101201170",
115
+ "secret": "client-token",
116
+ "name": "top-demo"
117
+ }
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ ### 固定 SDK 配置
124
+
125
+ `downloadSDKConfig` 不返回 SDK 版本、Maven 仓库、依赖坐标、Firebase Gradle plugin 等固定集成配置。
126
+
127
+ Maven 仓库、依赖坐标、Firebase Gradle plugin 等由工具内置文件提供:
128
+
129
+ ```text
130
+ meetsdk-android.json
131
+ ```
132
+
133
+ Android SDK 版本也存放在 `meetsdk-android.json`。`integrate` / `doctor` 处理 Android 工程时,会调用 sdk-home `version` 接口读取 `data.result.android.ver` / `date`,写入 `meetsdk-android.json` 的 `topsdk.version` / `topsdk.date`,再合并为 Gradle 的 `topsdk_version`。
134
+
135
+ iOS SDK 固定配置存放在:
136
+
137
+ ```text
138
+ meetsdk-ios.json
139
+ ```
140
+
141
+ 该文件用于记录工具包当前 bundled iOS SDK 对应的版本、发布日期、包类型和插件组合。
142
+
143
+ ## sdk-home 版本与 SDK 下载接口
144
+
145
+ 这两个接口对应 MeetGames 下载页:
146
+
147
+ ```text
148
+ https://business.meetgames.com/sdkDownloadDetail?type=ios
149
+ ```
150
+
151
+ 工具侧用途是读取下载中心维护的 SDK 版本与 SDK 包下载地址。它们不返回宿主工程渠道参数,也不替代 `downloadSDKConfig`。
152
+
153
+ ### Base URL
154
+
155
+ | 环境 | Base URL |
156
+ |---|---|
157
+ | 生产 | `https://business-api.meetgames.com` |
158
+ | 覆盖 | `MEETGAMES_SDK_HOME_API_BASE_URL=https://...` 或 CLI `--sdk-api-base-url` |
159
+
160
+ ### version
161
+
162
+ 用途:获取下载中心当前展示的最新 SDK 版本。
163
+
164
+ - Android `integrate` / `setup` / `doctor` 会读取 `data.result.android.ver` / `date`,先写入 `meetsdk-android.json`,再用于写入或校验 Gradle 中的 `topsdk_version`。
165
+ - `download-ios-sdk` 未显式传 `--version` 时,会读取 `data.result.ios.ver` / `date` 作为下载版本;下载和解压成功后写入 `meetsdk-ios.json`。
166
+
167
+ 请求:
168
+
169
+ ```http
170
+ GET https://business-api.meetgames.com/sdk/home/version
171
+ ```
172
+
173
+ 响应示例:
174
+
175
+ ```json
176
+ {
177
+ "code": 200,
178
+ "error": null,
179
+ "message": null,
180
+ "data": {
181
+ "result": {
182
+ "android": {
183
+ "date": "2026-05-25",
184
+ "ver": "1.6.1.3"
185
+ },
186
+ "ios": {
187
+ "date": "2026-06-09",
188
+ "ver": "1.6.0.5"
189
+ }
190
+ },
191
+ "success": true
192
+ }
193
+ }
194
+ ```
195
+
196
+ 工具只读取:
197
+
198
+ ```text
199
+ data.result.android.ver
200
+ data.result.android.date
201
+ data.result.ios.ver
202
+ data.result.ios.date
203
+ ```
204
+
205
+ ### getDownLoadUrl
206
+
207
+ 用途:让 sdk-home 根据页面选项定位或生成 SDK zip,并返回 OSS / COS 临时下载地址。`download-ios-sdk` 用返回的 `data` 下载 zip,保存为:
208
+
209
+ ```text
210
+ <package-root>/bundled/ios-sdk/topSDK-ios--V{version}.zip
211
+ ```
212
+
213
+ 随后解压到:
214
+
215
+ ```text
216
+ <package-root>/bundled/ios-sdk
217
+ ```
218
+
219
+ 下载和解压成功后,工具会更新:
220
+
221
+ ```text
222
+ <package-root>/meetsdk-ios.json
223
+ ```
224
+
225
+ 请求:
226
+
227
+ | Query | 说明 | 默认值 |
228
+ |---|---|---|
229
+ | `version` | SDK 版本;默认来自 `version` 接口的 `data.result.ios.ver` | 最新 iOS 版本 |
230
+ | `platform` | 平台 | `ios` |
231
+ | `plugins` | 逗号分隔插件列表 | `guest,facebook,google,apple,apple_pay,dataAppsFlyer` |
232
+ | `packageType` | 包类型 / 引擎 | `native` |
233
+
234
+ 示例:
235
+
236
+ ```http
237
+ GET https://business-api.meetgames.com/sdk/home/sdk-download/getDownLoadUrl?version=1.6.0.5&platform=ios&plugins=guest,facebook,google,apple,apple_pay,dataAppsFlyer&packageType=native
238
+ ```
239
+
240
+ 响应示例:
241
+
242
+ ```json
243
+ {
244
+ "code": 200,
245
+ "error": null,
246
+ "message": null,
247
+ "data": "https://gz-publicread-fspan-1302967645.cos.ap-guangzhou.myqcloud.com/sdk-home/xxx.zip?sign=..."
248
+ }
249
+ ```
250
+
251
+ `data` 是短期有效下载 URL。不要把该 URL 固化到配置或文档中;需要下载时重新请求 `getDownLoadUrl`。
252
+
253
+ ## 归档接口
254
+
255
+ 旧接口和对照接口已归档:
256
+
257
+ | 文档 | 说明 |
258
+ |---|---|
259
+ | [archive/api/downloadSDKConfig.md](./archive/api/downloadSDKConfig.md) | 历史详细接口说明 |
260
+ | [archive/api/getSDKConfig.md](./archive/api/getSDKConfig.md) | 旧 `getSDKConfig` 接口 |
261
+ | [archive/api/getChannelConfig-meetgames.md](./archive/api/getChannelConfig-meetgames.md) | MeetGames 后台接口对照 |
package/docs/CLI.md ADDED
@@ -0,0 +1,292 @@
1
+ # meetgames CLI 参数说明
2
+
3
+ 本文档说明 `meetgames` CLI 的子命令、参数和环境变量。实现以 `src/cli.ts` 为准。
4
+
5
+ ## 子命令
6
+
7
+ | 子命令 | 作用 | 是否写文件 |
8
+ |---|---|---|
9
+ | `fetch-config` | 请求 `downloadSDKConfig`,将响应原文写入 `<project-root>/meetsdk-remote-config.json` | 是 |
10
+ | `download-ios-sdk` | 请求 sdk-home 版本和下载接口,下载 iOS SDK zip 并解压到 `bundled/ios-sdk`,更新 `meetsdk-ios.json` | 是 |
11
+ | `integrate` | 读取本地配置并接入 Android 或 iOS SDK;Android 会请求 sdk-home 最新版本并更新 `meetsdk-android.json` | 默认写;`--dry-run` 时不写宿主工程文件 |
12
+ | `setup` | 先执行 `fetch-config`,再执行 `integrate`;Android 集成阶段会请求 sdk-home 最新版本并更新 `meetsdk-android.json` | 是;集成阶段受 `--dry-run` 影响 |
13
+ | `doctor` | 先执行 `fetch-config`,再检查当前工程 SDK 接入是否正确;Android 检查阶段会请求 sdk-home 最新版本并更新 `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 版本,写入 `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` |
90
+ | `--app-secret <secret>` | 必填* | 否 | 必填* | 必填* | 用于计算接口签名;也可用 `TOPSDK_APP_SECRET` |
91
+ | `--channel-type <type>` | 必填* | 否 | 必填* | 必填* | 渠道类型,如 `GOOGLE` / `APPLE`;也可用 `TOPSDK_CHANNEL_TYPE` |
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
+ | `--output-dir <path>` | zip 保存和解压目录;默认 `<package-root>/bundled/ios-sdk` |
109
+
110
+ 该命令会把 zip 保存为:
111
+
112
+ ```text
113
+ <package-root>/bundled/ios-sdk/topSDK-ios--V{version}.zip
114
+ ```
115
+
116
+ 并把压缩包内容解压到:
117
+
118
+ ```text
119
+ <package-root>/bundled/ios-sdk
120
+ ```
121
+
122
+ ## 环境变量
123
+
124
+ | 环境变量 | 作用 |
125
+ |---|---|
126
+ | `TOPSDK_API_BASE_URL` | 覆盖 API 根地址,例如 `http://127.0.0.1:8081/` |
127
+ | `TOPSDK_APP_ID` | `fetch-config` / `setup` / `doctor` 默认 appId |
128
+ | `TOPSDK_APP_SECRET` | 默认 appSecret |
129
+ | `TOPSDK_CHANNEL_TYPE` | 默认 channelType |
130
+ | `MEETGAMES_SDK_HOME_API_BASE_URL` | sdk-home API 根地址;用于 Android 最新版本查询和 `download-ios-sdk` |
131
+
132
+ ## 环境地址
133
+
134
+ | `--env` | 默认 Base URL |
135
+ |---|---|
136
+ | `prod` | `https://api-sdk-gameplus.meetsocial.com/` |
137
+ | `pre` | `https://pre-api-sdk-gameplus.meetsocial.com/` |
138
+ | `test` | `https://test-api-sdk-gameplus.meetsocial.com/` |
139
+
140
+ `TOPSDK_API_BASE_URL` 优先级最高。
141
+
142
+ ## 子命令说明
143
+
144
+ ### fetch-config
145
+
146
+ ```bash
147
+ node dist/entry.js fetch-config \
148
+ --app-id <APP_ID> \
149
+ --app-secret '<APP_SECRET>' \
150
+ --channel-type GOOGLE \
151
+ --project-root /path/to/project \
152
+ --env test
153
+ ```
154
+
155
+ 调用:
156
+
157
+ ```text
158
+ GET {baseUrl}/console/openSDK/downloadSDKConfig
159
+ ```
160
+
161
+ 并将响应 bytes 原样写入:
162
+
163
+ ```text
164
+ <project-root>/meetsdk-remote-config.json
165
+ ```
166
+
167
+ ### integrate
168
+
169
+ ```bash
170
+ node dist/entry.js integrate \
171
+ --project-root /path/to/project \
172
+ --dry-run \
173
+ --verbose
174
+ ```
175
+
176
+ 读取本地 `meetsdk-remote-config.json` 和内置 recipe:
177
+
178
+ ```text
179
+ recipes/integrate-default.yaml
180
+ ```
181
+
182
+ 根据 `--project-root` 识别平台,只执行 Android 或 iOS 的接入步骤。
183
+
184
+ Android 接入会先调用:
185
+
186
+ ```text
187
+ GET https://business-api.meetgames.com/sdk/home/version
188
+ ```
189
+
190
+ 用途:读取 `data.result.android.ver` / `date`,写入 `meetsdk-android.json` 的 `topsdk.version` / `topsdk.date`,并作为 Gradle 中的 `topsdk_version`。`meetsdk-android.json` 同时保留 Maven 仓库、依赖坐标、Firebase Gradle plugin 等固定配置。
191
+
192
+ 当 Android 工程中存在多个 application module 时,如果未传 `--app-target`,命令会报出候选 module 列表;传入后会把 Gradle、Manifest、`google-services.json` 等写到选中的 module 下。
193
+
194
+ 传入 `--app-target` 时会校验目标是否存在:Android 校验目标 application module,iOS 校验目标 App target。
195
+
196
+ ### download-ios-sdk
197
+
198
+ ```bash
199
+ node dist/entry.js download-ios-sdk --verbose
200
+ ```
201
+
202
+ 执行顺序:
203
+
204
+ 1. 调用 sdk-home 版本接口:
205
+
206
+ ```text
207
+ GET https://business-api.meetgames.com/sdk/home/version
208
+ ```
209
+
210
+ 用途:读取下载中心当前 iOS 最新版本,即 `data.result.ios.ver` / `date`。
211
+
212
+ 2. 调用 sdk-home 下载接口:
213
+
214
+ ```text
215
+ GET https://business-api.meetgames.com/sdk/home/sdk-download/getDownLoadUrl
216
+ ```
217
+
218
+ 默认 query:
219
+
220
+ ```text
221
+ version=<version接口返回的iOS版本>
222
+ platform=ios
223
+ plugins=guest,facebook,google,apple,apple_pay,dataAppsFlyer
224
+ packageType=native
225
+ ```
226
+
227
+ 用途:获取短期有效的 SDK zip 下载 URL。
228
+
229
+ 3. 下载 zip 并解压到工具包内置资源目录:
230
+
231
+ ```text
232
+ bundled/ios-sdk
233
+ ```
234
+
235
+ 后续 `integrate` / `doctor` 的 iOS 流程会从该目录读取 `sdk/` 和 `plugins/`。
236
+
237
+ 下载和解压成功后,命令会更新:
238
+
239
+ ```text
240
+ meetsdk-ios.json
241
+ ```
242
+
243
+ 用途:记录当前 bundled iOS SDK 对应的版本、发布日期、包类型和插件组合。
244
+
245
+ ### setup
246
+
247
+ ```bash
248
+ node dist/entry.js setup \
249
+ --app-id <APP_ID> \
250
+ --app-secret '<APP_SECRET>' \
251
+ --channel-type APPLE \
252
+ --project-root /path/to/ios-project \
253
+ --env test \
254
+ --verbose
255
+ ```
256
+
257
+ 执行顺序:
258
+
259
+ 1. `fetch-config`
260
+ 2. `integrate`
261
+
262
+ ### doctor
263
+
264
+ ```bash
265
+ node dist/entry.js doctor \
266
+ --app-id <APP_ID> \
267
+ --app-secret '<APP_SECRET>' \
268
+ --channel-type APPLE \
269
+ --project-root /path/to/ios-project \
270
+ --env test \
271
+ --verbose
272
+ ```
273
+
274
+ 执行顺序:
275
+
276
+ 1. `fetch-config`
277
+ 2. 自动识别 Android / iOS
278
+ 3. 执行对应平台详细校验
279
+
280
+ Android doctor 会检查仓库、依赖、`resValue`、`google-services.json` 等。
281
+ iOS doctor 会检查 SDK 文件、Xcode 引用、`GoogleService-Info.plist`、`Info.plist` 参数、插件参数、URL Scheme 是否写入、Delegate 注入等。
282
+
283
+ ## 退出码
284
+
285
+ | 退出码 | 含义 |
286
+ |---:|---|
287
+ | `0` | 成功 |
288
+ | `2` | 参数错误 |
289
+ | `3` | 工程识别或工程结构错误 |
290
+ | `4` | 配置或 doctor 校验失败 |
291
+ | `5` | 集成 pipeline 失败 |
292
+ | `6` | 网络请求失败 |