@leonxin/meetgames 0.1.12 → 0.1.14
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/dist/android/manifest.d.ts.map +1 -1
- package/dist/android/manifest.js +9 -0
- package/dist/android/manifest.js.map +1 -1
- package/dist/android/meetSdkRemoteGradle.d.ts.map +1 -1
- package/dist/android/meetSdkRemoteGradle.js +126 -6
- package/dist/android/meetSdkRemoteGradle.js.map +1 -1
- package/dist/contracts/types.d.ts +3 -0
- package/dist/contracts/types.d.ts.map +1 -1
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +3 -0
- package/dist/core/pipeline.js.map +1 -1
- package/dist/core/reporter.d.ts.map +1 -1
- package/dist/core/reporter.js +4 -0
- package/dist/core/reporter.js.map +1 -1
- package/dist/ios/channelConfig.d.ts.map +1 -1
- package/dist/ios/channelConfig.js +18 -2
- 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 +3 -0
- package/dist/ios/codeUtils.js.map +1 -1
- package/dist/ios/integrate.d.ts.map +1 -1
- package/dist/ios/integrate.js +242 -97
- package/dist/ios/integrate.js.map +1 -1
- package/dist/ios/pbxprojEditor.d.ts.map +1 -1
- package/dist/ios/pbxprojEditor.js +52 -1
- package/dist/ios/pbxprojEditor.js.map +1 -1
- package/dist/ops/handlers.d.ts.map +1 -1
- package/dist/ops/handlers.js +35 -3
- package/dist/ops/handlers.js.map +1 -1
- package/docs/API.md +1 -1
- package/docs/INTEGRATION.md +48 -1
- package/package.json +1 -1
- package/src/android/manifest.ts +11 -0
- package/src/android/meetSdkRemoteGradle.ts +125 -7
- package/src/contracts/types.ts +3 -0
- package/src/core/pipeline.ts +3 -0
- package/src/core/reporter.ts +3 -0
- package/src/ios/channelConfig.ts +18 -2
- package/src/ios/codeUtils.ts +4 -0
- package/src/ios/integrate.ts +253 -96
- package/src/ios/pbxprojEditor.ts +51 -1
- package/src/ops/handlers.ts +38 -3
- package/tests/doctor.test.ts +43 -3
- package/tests/meetSdkRemoteConfig.test.ts +1 -1
- package/tests/meetSdkRemoteGradle.test.ts +2 -2
- package/tests/pipeline.android.test.ts +64 -10
- package/tests/pipeline.ios.test.ts +219 -32
- package/tests/platformSelection.test.ts +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeUtils.js","sourceRoot":"","sources":["../../src/ios/codeUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeUtils.js","sourceRoot":"","sources":["../../src/ios/codeUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../../src/ios/integrate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"integrate.d.ts","sourceRoot":"","sources":["../../src/ios/integrate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AA8B3E,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC7C;AAqcD,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,UAAU,EAAE,EAC1B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,UAAU,CAAC,CAiJrB"}
|
package/dist/ios/integrate.js
CHANGED
|
@@ -6,25 +6,48 @@ import { CodeUtils, findDelegateFiles, findSceneDelegateFiles } from "./codeUtil
|
|
|
6
6
|
import { DEFAULT_PERFORM_SETTINGS } from "./types.js";
|
|
7
7
|
import { TopSdkFileManager } from "./fileManager.js";
|
|
8
8
|
import { addPlistParam, addQueriesScheme, addUrlScheme, buildPlistXml, parsePlistXml, setAppTransportSecurity, } from "./infoPlist.js";
|
|
9
|
-
import { addCopyFile, addOtherLinkerFlag, addSourceOrResourceFile, addSystemFramework, addSystemLib, addThirdPartyFramework, findInfoPlistPathsFromPbx, loadPbxFromStore, savePbxToStore, setBuildSetting, } from "./pbxprojEditor.js";
|
|
9
|
+
import { addCopyFile, addOtherLinkerFlag, addSourceOrResourceFile, addSystemFramework, addSystemLib, addThirdPartyFramework, findInfoPlistPathsFromPbx, getTargetBuildSettings, loadPbxFromStore, savePbxToStore, setBuildSetting, } from "./pbxprojEditor.js";
|
|
10
10
|
import { findPluginByFolder, listSdkCoreConfigs, validateLoadedPluginResources } from "./pluginConfig.js";
|
|
11
11
|
import { resolveIosSdkRoot } from "./sdkBundle.js";
|
|
12
12
|
import { applyChannelTemplate, applyChannelTemplateValue } from "./template.js";
|
|
13
13
|
import { ensureAppleSignInEntitlement } from "./entitlements.js";
|
|
14
14
|
const IOS_FIREBASE_CONFIG_FILE = "GoogleService-Info.plist";
|
|
15
|
-
function
|
|
16
|
-
|
|
15
|
+
function logValue(value) {
|
|
16
|
+
if (value === undefined)
|
|
17
|
+
return "<missing>";
|
|
18
|
+
if (typeof value === "string")
|
|
19
|
+
return value;
|
|
20
|
+
return JSON.stringify(value);
|
|
17
21
|
}
|
|
18
|
-
function
|
|
19
|
-
|
|
22
|
+
function pushValueChangeLog(logs, label, before, after) {
|
|
23
|
+
if (valuesEqual(before, after)) {
|
|
24
|
+
logs.push(`SUCCESS: ${label} 未变化 value:${logValue(after)}`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
logs.push(`SUCCESS: ${label} ${logValue(before)} -> ${logValue(after)}`);
|
|
28
|
+
}
|
|
29
|
+
function valuesEqual(before, after) {
|
|
30
|
+
return JSON.stringify(before) === JSON.stringify(after);
|
|
31
|
+
}
|
|
32
|
+
function cloneValue(value) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return undefined;
|
|
35
|
+
return JSON.parse(JSON.stringify(value));
|
|
20
36
|
}
|
|
21
|
-
function
|
|
37
|
+
function ok(changed, warnings = [], logs = []) {
|
|
38
|
+
return { ok: true, changedFiles: changed, logs, warnings, errors: [] };
|
|
39
|
+
}
|
|
40
|
+
function fail(errors, warnings = [], logs = []) {
|
|
41
|
+
return { ok: false, changedFiles: [], logs, warnings, errors };
|
|
42
|
+
}
|
|
43
|
+
function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryRun, logs, remoteSources = new Map()) {
|
|
22
44
|
const { config, sourceDir } = loaded;
|
|
23
|
-
|
|
45
|
+
logs.push(`- 插件:${config.name}, 类型:${config.type},版本:${config.pluginVersion}`);
|
|
24
46
|
if (perform.includes("frameworks") && config.frameworks?.length) {
|
|
25
47
|
for (const fw of config.frameworks) {
|
|
26
48
|
if (fw.system) {
|
|
27
49
|
addSystemFramework(pbx, fw.name);
|
|
50
|
+
logs.push(`SUCCESS: 导入系统依赖framework ${fw.name} 完成`);
|
|
28
51
|
continue;
|
|
29
52
|
}
|
|
30
53
|
const src = path.join(sourceDir, fw.name);
|
|
@@ -38,6 +61,7 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
38
61
|
fm.copyFramework(src);
|
|
39
62
|
}
|
|
40
63
|
addThirdPartyFramework(pbx, relTo, Boolean(fw.embed));
|
|
64
|
+
logs.push(`SUCCESS: 导入三方依赖framework ${fw.name} 完成`);
|
|
41
65
|
if (fw.copyFile)
|
|
42
66
|
addCopyFile(pbx, relTo);
|
|
43
67
|
}
|
|
@@ -46,6 +70,7 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
46
70
|
for (const lib of config.libs) {
|
|
47
71
|
if (lib.system) {
|
|
48
72
|
addSystemLib(pbx, lib.name);
|
|
73
|
+
logs.push(`SUCCESS: 导入系统依赖lib ${lib.name} 完成`);
|
|
49
74
|
continue;
|
|
50
75
|
}
|
|
51
76
|
const src = path.join(sourceDir, lib.name);
|
|
@@ -57,6 +82,7 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
57
82
|
else
|
|
58
83
|
fm.copyFile(src);
|
|
59
84
|
addSourceOrResourceFile(pbx, relTo);
|
|
85
|
+
logs.push(`SUCCESS: 导入三方依赖lib ${lib.name} 完成`);
|
|
60
86
|
}
|
|
61
87
|
}
|
|
62
88
|
if (perform.includes("sources") && config.sources?.length) {
|
|
@@ -64,6 +90,7 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
64
90
|
const remoteRel = remoteSources.get(`${config.name}:${source}`);
|
|
65
91
|
if (remoteRel) {
|
|
66
92
|
addSourceOrResourceFile(pbx, remoteRel);
|
|
93
|
+
logs.push(`SUCCESS: 引入资源 ${source} 完成`);
|
|
67
94
|
continue;
|
|
68
95
|
}
|
|
69
96
|
const src = path.join(sourceDir, source);
|
|
@@ -81,6 +108,7 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
81
108
|
if (fs.statSync(full).isDirectory()) {
|
|
82
109
|
if (name.endsWith(".bundle")) {
|
|
83
110
|
addSourceOrResourceFile(pbx, fm.relFromSrc(full));
|
|
111
|
+
logs.push(`SUCCESS: 引入资源 ${name} 完成`);
|
|
84
112
|
}
|
|
85
113
|
else {
|
|
86
114
|
walk(full);
|
|
@@ -89,6 +117,7 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
89
117
|
}
|
|
90
118
|
if (/\.(h|m|mm|plist|a)$/.test(name)) {
|
|
91
119
|
addSourceOrResourceFile(pbx, fm.relFromSrc(full));
|
|
120
|
+
logs.push(`SUCCESS: 引入资源 ${name} 完成`);
|
|
92
121
|
}
|
|
93
122
|
}
|
|
94
123
|
};
|
|
@@ -104,17 +133,26 @@ function applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryR
|
|
|
104
133
|
else
|
|
105
134
|
fm.copyFile(src);
|
|
106
135
|
addSourceOrResourceFile(pbx, relTo);
|
|
136
|
+
logs.push(`SUCCESS: 引入资源 ${source} 完成`);
|
|
107
137
|
}
|
|
108
138
|
}
|
|
109
139
|
}
|
|
110
140
|
if (perform.includes("buildSettings") && config.buildSettings) {
|
|
111
141
|
for (const [k, v] of Object.entries(config.buildSettings)) {
|
|
112
|
-
|
|
142
|
+
const beforeValues = [...new Set(getTargetBuildSettings(pbx).map((settings) => settings[k]))];
|
|
143
|
+
if (beforeValues.length === 0 || beforeValues.some((before) => !valuesEqual(before, v))) {
|
|
144
|
+
setBuildSetting(pbx, k, v);
|
|
145
|
+
}
|
|
146
|
+
for (const before of beforeValues.length ? beforeValues : [undefined]) {
|
|
147
|
+
pushValueChangeLog(logs, `BuildSetting设置${k}`, before, v);
|
|
148
|
+
}
|
|
149
|
+
logs.push(`SUCCESS: BuildSetting设置${k}为${v} 完成`);
|
|
113
150
|
}
|
|
114
151
|
}
|
|
115
152
|
if (perform.includes("OtherLinkerFlags") && config.OtherLinkerFlags?.length) {
|
|
116
153
|
for (const flag of config.OtherLinkerFlags) {
|
|
117
154
|
addOtherLinkerFlag(pbx, flag);
|
|
155
|
+
logs.push(`SUCCESS: 添加other link flag:${flag} 完成`);
|
|
118
156
|
}
|
|
119
157
|
}
|
|
120
158
|
}
|
|
@@ -168,6 +206,41 @@ function iosFirebaseConfigRelPath(plistDocs) {
|
|
|
168
206
|
const dir = path.posix.dirname(relPlist.replace(/\\/g, "/"));
|
|
169
207
|
return dir === "." ? IOS_FIREBASE_CONFIG_FILE : path.posix.join(dir, IOS_FIREBASE_CONFIG_FILE);
|
|
170
208
|
}
|
|
209
|
+
function hasSwiftSource(srcRoot) {
|
|
210
|
+
const walk = (dir) => {
|
|
211
|
+
let entries;
|
|
212
|
+
try {
|
|
213
|
+
entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
214
|
+
}
|
|
215
|
+
catch {
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
for (const entry of entries) {
|
|
219
|
+
if (entry.name.startsWith("."))
|
|
220
|
+
continue;
|
|
221
|
+
const full = path.join(dir, entry.name);
|
|
222
|
+
if (entry.isDirectory()) {
|
|
223
|
+
if (!["Pods", "build", "DerivedData", "topSDK"].includes(entry.name) && walk(full))
|
|
224
|
+
return true;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (entry.name.endsWith(".swift"))
|
|
228
|
+
return true;
|
|
229
|
+
}
|
|
230
|
+
return false;
|
|
231
|
+
};
|
|
232
|
+
return walk(srcRoot);
|
|
233
|
+
}
|
|
234
|
+
function ensureTopSdkInstallSwift(store, ctx, pbx) {
|
|
235
|
+
if (hasSwiftSource(pbx.srcRoot))
|
|
236
|
+
return null;
|
|
237
|
+
const relFromSrc = path.join(pbx.targetName, "TopSDKInstall.swift").split(path.sep).join("/");
|
|
238
|
+
const abs = path.join(pbx.srcRoot, relFromSrc);
|
|
239
|
+
const relFromProject = path.relative(ctx.projectRoot, abs).split(path.sep).join("/");
|
|
240
|
+
store.write(relFromProject, "import Foundation\n\n");
|
|
241
|
+
addSourceOrResourceFile(pbx, relFromSrc);
|
|
242
|
+
return relFromProject;
|
|
243
|
+
}
|
|
171
244
|
function appDelegateCodeShouldMoveToSceneDelegate(code) {
|
|
172
245
|
if (code.type === "header")
|
|
173
246
|
return false;
|
|
@@ -209,26 +282,43 @@ function validateRequiredChannelConfigs(loadedConfigs, channelConfig) {
|
|
|
209
282
|
}
|
|
210
283
|
return missing;
|
|
211
284
|
}
|
|
212
|
-
function mergePlistParams(docs, loaded, channelConfig, perform) {
|
|
285
|
+
function mergePlistParams(docs, loaded, channelConfig, perform, logs, dirtyDocs) {
|
|
213
286
|
if (!perform.includes("infoParams") && !perform.includes("urlScheme") && !perform.includes("queriesSchemes")) {
|
|
214
287
|
return;
|
|
215
288
|
}
|
|
216
289
|
for (const doc of docs) {
|
|
217
290
|
if (perform.includes("infoParams") && loaded.config.infoParams) {
|
|
218
291
|
for (const [key, raw] of Object.entries(loaded.config.infoParams)) {
|
|
219
|
-
|
|
292
|
+
const value = applyChannelTemplateValue(raw, channelConfig);
|
|
293
|
+
const before = doc.data[key];
|
|
294
|
+
if (!valuesEqual(before, value)) {
|
|
295
|
+
addPlistParam(doc.data, key, value);
|
|
296
|
+
dirtyDocs.add(doc);
|
|
297
|
+
}
|
|
298
|
+
pushValueChangeLog(logs, `info.plist配置key:${key}`, before, value);
|
|
299
|
+
logs.push(`SUCCESS: info.plist添加配置key:${key} value:${String(value)} 完成`);
|
|
220
300
|
}
|
|
221
301
|
}
|
|
222
302
|
if (perform.includes("queriesSchemes") && loaded.config.queriesSchemes?.length) {
|
|
223
303
|
for (const scheme of loaded.config.queriesSchemes) {
|
|
304
|
+
const before = cloneValue(doc.data.LSApplicationQueriesSchemes ?? []);
|
|
224
305
|
addQueriesScheme(doc.data, scheme);
|
|
306
|
+
if (!valuesEqual(before, doc.data.LSApplicationQueriesSchemes))
|
|
307
|
+
dirtyDocs.add(doc);
|
|
308
|
+
pushValueChangeLog(logs, `info.plist queriesSchemes ${scheme}`, before, doc.data.LSApplicationQueriesSchemes);
|
|
309
|
+
logs.push(`SUCCESS: 添加queriesSchemes:${scheme} 完成`);
|
|
225
310
|
}
|
|
226
311
|
}
|
|
227
312
|
if (perform.includes("urlScheme") && loaded.config.urlScheme) {
|
|
228
313
|
let scheme = applyChannelTemplate(loaded.config.urlScheme, channelConfig);
|
|
229
314
|
if (scheme.endsWith("://"))
|
|
230
315
|
scheme = scheme.replace("://", "");
|
|
316
|
+
const before = cloneValue(doc.data.CFBundleURLTypes ?? []);
|
|
231
317
|
addUrlScheme(doc.data, scheme);
|
|
318
|
+
if (!valuesEqual(before, doc.data.CFBundleURLTypes))
|
|
319
|
+
dirtyDocs.add(doc);
|
|
320
|
+
pushValueChangeLog(logs, `info.plist URL Scheme ${scheme}`, before, doc.data.CFBundleURLTypes);
|
|
321
|
+
logs.push(`SUCCESS: 设置urlScheme:${scheme}完成`);
|
|
232
322
|
}
|
|
233
323
|
}
|
|
234
324
|
}
|
|
@@ -254,24 +344,103 @@ function buildTopSdkPluginInfo(plugins, channelConfig) {
|
|
|
254
344
|
}
|
|
255
345
|
return { pluginsInfo, dataPluginsInfo };
|
|
256
346
|
}
|
|
347
|
+
function injectDelegateCodes(loadedConfigs, ctx, store, pbx, warnings, changed, logs) {
|
|
348
|
+
const hasAppDelegateCodes = loadedConfigs.some((loaded) => (loaded.config.appDelegateCodes ?? []).length > 0);
|
|
349
|
+
const hasSceneDelegateCodes = loadedConfigs.some((loaded) => (loaded.config.sceneDelegateCodes ?? []).length > 0);
|
|
350
|
+
if (!hasAppDelegateCodes && !hasSceneDelegateCodes)
|
|
351
|
+
return;
|
|
352
|
+
const sceneDelegateRelPaths = [];
|
|
353
|
+
for (const abs of findSceneDelegateFiles(pbx.srcRoot)) {
|
|
354
|
+
sceneDelegateRelPaths.push(path.relative(ctx.projectRoot, abs).split(path.sep).join("/"));
|
|
355
|
+
}
|
|
356
|
+
const hasUniqueSceneDelegate = sceneDelegateRelPaths.length === 1;
|
|
357
|
+
const delegateRelPaths = [];
|
|
358
|
+
for (const abs of findDelegateFiles(pbx.srcRoot)) {
|
|
359
|
+
delegateRelPaths.push(path.relative(ctx.projectRoot, abs).split(path.sep).join("/"));
|
|
360
|
+
}
|
|
361
|
+
if (hasAppDelegateCodes && !delegateRelPaths.length) {
|
|
362
|
+
warnings.push("no UIApplicationDelegate .m/.mm found; skipped AppDelegate injection (SwiftUI @main is not supported yet)");
|
|
363
|
+
}
|
|
364
|
+
if (hasAppDelegateCodes && delegateRelPaths.length > 1) {
|
|
365
|
+
warnings.push(`multiple UIApplicationDelegate files found; skipped AppDelegate injection: ${delegateRelPaths.join(", ")}`);
|
|
366
|
+
}
|
|
367
|
+
for (const rel of hasAppDelegateCodes && delegateRelPaths.length === 1 ? delegateRelPaths : []) {
|
|
368
|
+
const cu = CodeUtils.fromFile(path.join(ctx.projectRoot, rel));
|
|
369
|
+
logs.push("检测到工程UIApplicationDelegate实现类,将自动接入对应接口");
|
|
370
|
+
let okInject = true;
|
|
371
|
+
for (const loaded of loadedConfigs) {
|
|
372
|
+
for (const code of appDelegateCodesForLifecycle(loaded, hasUniqueSceneDelegate)) {
|
|
373
|
+
const existed = cu.hasCode(code.content);
|
|
374
|
+
if (code.type === "header") {
|
|
375
|
+
if (!cu.addHeader(code.content))
|
|
376
|
+
okInject = false;
|
|
377
|
+
}
|
|
378
|
+
else if ((code.type === "method" || code.type === "code") && code.method) {
|
|
379
|
+
if (!cu.addCodeToMethod(code.method, code.content, Boolean(code.addToReturn)))
|
|
380
|
+
okInject = false;
|
|
381
|
+
}
|
|
382
|
+
if (okInject) {
|
|
383
|
+
logs.push(`SUCCESS: 代码文件${path.join(ctx.projectRoot, rel)},${existed ? "已存在代码" : "添加代码"}${code.content}${existed ? "" : "完成"}`);
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
if (!okInject)
|
|
388
|
+
warnings.push(`AppDelegate injection incomplete for ${rel}`);
|
|
389
|
+
const before = store.read(rel);
|
|
390
|
+
cu.applyToStore((c) => store.write(rel, c));
|
|
391
|
+
if (store.read(rel) !== before)
|
|
392
|
+
changed.add(rel);
|
|
393
|
+
}
|
|
394
|
+
if (hasSceneDelegateCodes && sceneDelegateRelPaths.length > 1) {
|
|
395
|
+
warnings.push(`multiple UIWindowSceneDelegate files found; skipped SceneDelegate injection: ${sceneDelegateRelPaths.join(", ")}`);
|
|
396
|
+
}
|
|
397
|
+
for (const rel of hasSceneDelegateCodes && sceneDelegateRelPaths.length === 1 ? sceneDelegateRelPaths : []) {
|
|
398
|
+
const cu = CodeUtils.fromFile(path.join(ctx.projectRoot, rel));
|
|
399
|
+
logs.push("检测到工程存在UIWindowSceneDelegate实现类,将自动接入对应接口");
|
|
400
|
+
let okInject = true;
|
|
401
|
+
for (const loaded of loadedConfigs) {
|
|
402
|
+
for (const code of loaded.config.sceneDelegateCodes ?? []) {
|
|
403
|
+
const existed = cu.hasCode(code.content);
|
|
404
|
+
if (code.type === "header") {
|
|
405
|
+
if (!cu.addHeader(code.content))
|
|
406
|
+
okInject = false;
|
|
407
|
+
}
|
|
408
|
+
else if ((code.type === "method" || code.type === "code") && code.method) {
|
|
409
|
+
if (!cu.addCodeToMethod(code.method, code.content, Boolean(code.addToReturn)))
|
|
410
|
+
okInject = false;
|
|
411
|
+
}
|
|
412
|
+
if (okInject) {
|
|
413
|
+
logs.push(`SUCCESS: 代码文件${path.join(ctx.projectRoot, rel)},${existed ? "已存在代码" : "添加代码"}${code.content}${existed ? "" : "完成"}`);
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
if (!okInject)
|
|
418
|
+
warnings.push(`SceneDelegate injection incomplete for ${rel}`);
|
|
419
|
+
const before = store.read(rel);
|
|
420
|
+
cu.applyToStore((c) => store.write(rel, c));
|
|
421
|
+
if (store.read(rel) !== before)
|
|
422
|
+
changed.add(rel);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
257
425
|
export async function runIosIntegrateTopSdk(ctx, store, binaryCopies, options = {}) {
|
|
258
426
|
if (!ctx.ios?.ok)
|
|
259
427
|
return fail(["iOS project not detected"]);
|
|
260
428
|
const warnings = [];
|
|
429
|
+
const logs = [];
|
|
261
430
|
const changed = new Set();
|
|
262
431
|
const configPath = ctx.remoteConfigPath ?? path.join(ctx.projectRoot, MEETSDK_REMOTE_CONFIG_FILENAME);
|
|
263
432
|
if (!fs.existsSync(configPath)) {
|
|
264
|
-
return fail([`${MEETSDK_REMOTE_CONFIG_FILENAME} not found at ${configPath}; run fetch-config or setup first`]);
|
|
433
|
+
return fail([`${MEETSDK_REMOTE_CONFIG_FILENAME} not found at ${configPath}; run fetch-config or setup first`], warnings, logs);
|
|
265
434
|
}
|
|
266
435
|
let remote;
|
|
267
436
|
try {
|
|
268
437
|
remote = tryParseAsMeetSdkRemoteConfig(JSON.parse(fs.readFileSync(configPath, "utf8")));
|
|
269
438
|
}
|
|
270
439
|
catch (e) {
|
|
271
|
-
return fail([e instanceof Error ? e.message : String(e)]);
|
|
440
|
+
return fail([e instanceof Error ? e.message : String(e)], warnings, logs);
|
|
272
441
|
}
|
|
273
442
|
if (!remote) {
|
|
274
|
-
return fail([`invalid ${MEETSDK_REMOTE_CONFIG_FILENAME}`]);
|
|
443
|
+
return fail([`invalid ${MEETSDK_REMOTE_CONFIG_FILENAME}`], warnings, logs);
|
|
275
444
|
}
|
|
276
445
|
const validation = validateMeetSdkRemoteConfig(remote);
|
|
277
446
|
if (!validation.ok) {
|
|
@@ -282,12 +451,14 @@ export async function runIosIntegrateTopSdk(ctx, store, binaryCopies, options =
|
|
|
282
451
|
sdkRoot = ctx.iosSdkRoot ?? resolveIosSdkRoot(ctx.packageRoot);
|
|
283
452
|
}
|
|
284
453
|
catch (e) {
|
|
285
|
-
return fail([e instanceof Error ? e.message : String(e)]);
|
|
454
|
+
return fail([e instanceof Error ? e.message : String(e)], warnings, logs);
|
|
286
455
|
}
|
|
287
456
|
const targetName = options.targetName ?? ctx.ios.targetName ?? path.basename(ctx.ios.xcodeprojPath, ".xcodeproj");
|
|
288
457
|
const perform = options.performSettings ?? DEFAULT_PERFORM_SETTINGS;
|
|
289
458
|
const executeAppDelegate = options.executeAppDelegate !== false;
|
|
290
459
|
const dryRun = Boolean(options.dryRun);
|
|
460
|
+
logs.push("6、执行 SDK 接入");
|
|
461
|
+
logs.push(`*** 项目根目录:${ctx.projectRoot} ***`);
|
|
291
462
|
const channelConfig = buildChannelConfigMap(remote);
|
|
292
463
|
const coreConfigs = listSdkCoreConfigs(sdkRoot);
|
|
293
464
|
const pluginFolders = enabledIosPluginFolders(remote);
|
|
@@ -310,116 +481,90 @@ export async function runIosIntegrateTopSdk(ctx, store, binaryCopies, options =
|
|
|
310
481
|
plistDocs = await ensureInfoPlists(store, ctx, pbx, targetName);
|
|
311
482
|
}
|
|
312
483
|
catch (e) {
|
|
313
|
-
return fail([e instanceof Error ? e.message : String(e)], warnings);
|
|
484
|
+
return fail([e instanceof Error ? e.message : String(e)], warnings, logs);
|
|
314
485
|
}
|
|
486
|
+
const dirtyPlistDocs = new Set();
|
|
315
487
|
const firebaseDownload = await downloadIosFirebaseConfig(remote, pbx, dryRun, iosFirebaseConfigRelPath(plistDocs));
|
|
316
488
|
warnings.push(...firebaseDownload.warnings);
|
|
317
489
|
if (firebaseDownload.errors.length)
|
|
318
|
-
return fail(firebaseDownload.errors, warnings);
|
|
490
|
+
return fail(firebaseDownload.errors, warnings, logs);
|
|
319
491
|
const resourceErrors = [...coreConfigs, ...pluginConfigs].flatMap(validateLoadedPluginResourcesForIos);
|
|
320
492
|
if (resourceErrors.length)
|
|
321
|
-
return fail(resourceErrors, warnings);
|
|
493
|
+
return fail(resourceErrors, warnings, logs);
|
|
322
494
|
const missingRequiredConfigs = validateRequiredChannelConfigs(pluginConfigs, channelConfig);
|
|
323
495
|
if (missingRequiredConfigs.length) {
|
|
324
|
-
return fail([`iOS remote config missing required channel params: ${missingRequiredConfigs.join(", ")}`], warnings);
|
|
325
|
-
}
|
|
326
|
-
for (const loaded of coreConfigs) {
|
|
327
|
-
applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryRun, firebaseDownload.remoteSources);
|
|
496
|
+
return fail([`iOS remote config missing required channel params: ${missingRequiredConfigs.join(", ")}`], warnings, logs);
|
|
328
497
|
}
|
|
329
498
|
for (const loaded of pluginConfigs) {
|
|
330
|
-
applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryRun, firebaseDownload.remoteSources);
|
|
499
|
+
applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryRun, logs, firebaseDownload.remoteSources);
|
|
500
|
+
if (loaded.config.name === "FacebookSignin" && perform.includes("sources")) {
|
|
501
|
+
const swiftRel = ensureTopSdkInstallSwift(store, ctx, pbx);
|
|
502
|
+
if (swiftRel) {
|
|
503
|
+
changed.add(swiftRel);
|
|
504
|
+
logs.push("SUCCESS: 未检测到Swift代码文件,自动添加TopSDKInstall.swift完成");
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
mergePlistParams(plistDocs, loaded, channelConfig, perform, logs, dirtyPlistDocs);
|
|
508
|
+
if (perform.includes("infoParams")) {
|
|
509
|
+
const doc = plistDocs[0];
|
|
510
|
+
if (doc) {
|
|
511
|
+
const before = cloneValue(doc.data.NSAppTransportSecurity);
|
|
512
|
+
setAppTransportSecurity(doc.data, true);
|
|
513
|
+
if (!valuesEqual(before, doc.data.NSAppTransportSecurity))
|
|
514
|
+
dirtyPlistDocs.add(doc);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
if (perform.includes("infoParams") && loaded.config.name === "AppleSignin") {
|
|
518
|
+
for (const rel of ensureAppleSignInEntitlement(store, ctx.projectRoot, pbx)) {
|
|
519
|
+
changed.add(rel);
|
|
520
|
+
}
|
|
521
|
+
logs.push("SUCCESS: 启用SigninWithApple完成");
|
|
522
|
+
}
|
|
523
|
+
logs.push(`SUCCESS: 插件${loaded.config.name}接入完成`);
|
|
331
524
|
}
|
|
332
|
-
for (const loaded of
|
|
333
|
-
|
|
525
|
+
for (const loaded of coreConfigs) {
|
|
526
|
+
applyPlugin(loaded, pbx, fm, channelConfig, perform, binaryCopies, dryRun, logs, firebaseDownload.remoteSources);
|
|
527
|
+
mergePlistParams(plistDocs, loaded, channelConfig, perform, logs, dirtyPlistDocs);
|
|
334
528
|
if (perform.includes("infoParams")) {
|
|
335
|
-
|
|
529
|
+
const doc = plistDocs[0];
|
|
530
|
+
if (doc) {
|
|
531
|
+
const before = cloneValue(doc.data.NSAppTransportSecurity);
|
|
532
|
+
setAppTransportSecurity(doc.data, true);
|
|
533
|
+
if (!valuesEqual(before, doc.data.NSAppTransportSecurity))
|
|
534
|
+
dirtyPlistDocs.add(doc);
|
|
535
|
+
}
|
|
336
536
|
}
|
|
537
|
+
if (executeAppDelegate) {
|
|
538
|
+
injectDelegateCodes([loaded], ctx, store, pbx, warnings, changed, logs);
|
|
539
|
+
}
|
|
540
|
+
logs.push(`SUCCESS: 插件${loaded.config.name}接入完成`);
|
|
337
541
|
}
|
|
338
542
|
for (const doc of plistDocs) {
|
|
339
543
|
if (perform.includes("infoParams")) {
|
|
340
544
|
const { pluginsInfo, dataPluginsInfo } = buildTopSdkPluginInfo(pluginConfigs, channelConfig);
|
|
341
|
-
|
|
545
|
+
const before = doc.data.TOPSDK;
|
|
546
|
+
const nextTopSdk = {
|
|
342
547
|
APP_ID: remote.topsdk.appId,
|
|
343
548
|
Plugins: pluginsInfo,
|
|
344
549
|
dataPlugins: dataPluginsInfo,
|
|
345
|
-
}
|
|
550
|
+
};
|
|
551
|
+
if (!valuesEqual(before, nextTopSdk)) {
|
|
552
|
+
addPlistParam(doc.data, "TOPSDK", nextTopSdk);
|
|
553
|
+
dirtyPlistDocs.add(doc);
|
|
554
|
+
}
|
|
555
|
+
pushValueChangeLog(logs, "info.plist配置key:TOPSDK", before, nextTopSdk);
|
|
346
556
|
}
|
|
347
557
|
const rel = path.relative(ctx.projectRoot, path.join(pbx.srcRoot, doc.relPath)).split(path.sep).join("/");
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
}
|
|
351
|
-
if (perform.includes("infoParams") && pluginConfigs.some((p) => p.config.name === "AppleSignin")) {
|
|
352
|
-
for (const rel of ensureAppleSignInEntitlement(store, ctx.projectRoot, pbx)) {
|
|
558
|
+
if (dirtyPlistDocs.has(doc)) {
|
|
559
|
+
store.write(rel, buildPlistXml(doc.data));
|
|
353
560
|
changed.add(rel);
|
|
354
561
|
}
|
|
355
562
|
}
|
|
356
563
|
savePbxToStore(store, pbx);
|
|
357
564
|
changed.add(pbx.rel);
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
sceneDelegateRelPaths.push(path.relative(ctx.projectRoot, abs).split(path.sep).join("/"));
|
|
362
|
-
}
|
|
363
|
-
const hasUniqueSceneDelegate = sceneDelegateRelPaths.length === 1;
|
|
364
|
-
const delegateRelPaths = [];
|
|
365
|
-
for (const abs of findDelegateFiles(pbx.srcRoot)) {
|
|
366
|
-
delegateRelPaths.push(path.relative(ctx.projectRoot, abs).split(path.sep).join("/"));
|
|
367
|
-
}
|
|
368
|
-
if (!delegateRelPaths.length) {
|
|
369
|
-
warnings.push("no UIApplicationDelegate .m/.mm found; skipped AppDelegate injection (SwiftUI @main is not supported yet)");
|
|
370
|
-
}
|
|
371
|
-
if (delegateRelPaths.length > 1) {
|
|
372
|
-
warnings.push(`multiple UIApplicationDelegate files found; skipped AppDelegate injection: ${delegateRelPaths.join(", ")}`);
|
|
373
|
-
}
|
|
374
|
-
for (const rel of delegateRelPaths.length === 1 ? delegateRelPaths : []) {
|
|
375
|
-
const cu = CodeUtils.fromFile(path.join(ctx.projectRoot, rel));
|
|
376
|
-
let okInject = true;
|
|
377
|
-
for (const loaded of [...coreConfigs, ...pluginConfigs]) {
|
|
378
|
-
for (const code of appDelegateCodesForLifecycle(loaded, hasUniqueSceneDelegate)) {
|
|
379
|
-
if (code.type === "header") {
|
|
380
|
-
if (!cu.addHeader(code.content))
|
|
381
|
-
okInject = false;
|
|
382
|
-
}
|
|
383
|
-
else if ((code.type === "method" || code.type === "code") && code.method) {
|
|
384
|
-
if (!cu.addCodeToMethod(code.method, code.content, Boolean(code.addToReturn)))
|
|
385
|
-
okInject = false;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
if (!okInject)
|
|
390
|
-
warnings.push(`AppDelegate injection incomplete for ${rel}`);
|
|
391
|
-
const before = store.read(rel);
|
|
392
|
-
cu.applyToStore((c) => store.write(rel, c));
|
|
393
|
-
if (store.read(rel) !== before)
|
|
394
|
-
changed.add(rel);
|
|
395
|
-
}
|
|
396
|
-
if (sceneDelegateRelPaths.length > 1) {
|
|
397
|
-
warnings.push(`multiple UIWindowSceneDelegate files found; skipped SceneDelegate injection: ${sceneDelegateRelPaths.join(", ")}`);
|
|
398
|
-
}
|
|
399
|
-
for (const rel of sceneDelegateRelPaths.length === 1 ? sceneDelegateRelPaths : []) {
|
|
400
|
-
const cu = CodeUtils.fromFile(path.join(ctx.projectRoot, rel));
|
|
401
|
-
let okInject = true;
|
|
402
|
-
for (const loaded of [...coreConfigs, ...pluginConfigs]) {
|
|
403
|
-
for (const code of loaded.config.sceneDelegateCodes ?? []) {
|
|
404
|
-
if (code.type === "header") {
|
|
405
|
-
if (!cu.addHeader(code.content))
|
|
406
|
-
okInject = false;
|
|
407
|
-
}
|
|
408
|
-
else if ((code.type === "method" || code.type === "code") && code.method) {
|
|
409
|
-
if (!cu.addCodeToMethod(code.method, code.content, Boolean(code.addToReturn)))
|
|
410
|
-
okInject = false;
|
|
411
|
-
}
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
if (!okInject)
|
|
415
|
-
warnings.push(`SceneDelegate injection incomplete for ${rel}`);
|
|
416
|
-
const before = store.read(rel);
|
|
417
|
-
cu.applyToStore((c) => store.write(rel, c));
|
|
418
|
-
if (store.read(rel) !== before)
|
|
419
|
-
changed.add(rel);
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
return ok([...changed], warnings);
|
|
565
|
+
logs.push("SUCCESS: info.plist配置写入完成");
|
|
566
|
+
logs.push("!! 接入流程已全部结束 !!");
|
|
567
|
+
return ok([...changed], warnings, logs);
|
|
423
568
|
}
|
|
424
569
|
async function ensureInfoPlists(store, ctx, pbx, targetName) {
|
|
425
570
|
const absPaths = findInfoPlistPathsFromPbx(pbx);
|