@leonxin/meetgames 0.1.7 → 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.
- 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 +31 -8
- package/dist/aab-converter/aab-entry.d.ts +3 -0
- package/dist/aab-converter/aab-entry.d.ts.map +1 -0
- package/dist/aab-converter/aab-entry.js +49 -0
- package/dist/aab-converter/aab-entry.js.map +1 -0
- package/dist/aab-converter/apksExtractor.d.ts +2 -0
- package/dist/aab-converter/apksExtractor.d.ts.map +1 -0
- package/dist/aab-converter/apksExtractor.js +108 -0
- package/dist/aab-converter/apksExtractor.js.map +1 -0
- package/dist/aab-converter/bundletoolRunner.d.ts +15 -0
- package/dist/aab-converter/bundletoolRunner.d.ts.map +1 -0
- package/dist/aab-converter/bundletoolRunner.js +46 -0
- package/dist/aab-converter/bundletoolRunner.js.map +1 -0
- package/dist/aab-converter/cliArgs.d.ts +27 -0
- package/dist/aab-converter/cliArgs.d.ts.map +1 -0
- package/dist/aab-converter/cliArgs.js +170 -0
- package/dist/aab-converter/cliArgs.js.map +1 -0
- package/dist/aab-converter/convertAabToApk.d.ts +7 -0
- package/dist/aab-converter/convertAabToApk.d.ts.map +1 -0
- package/dist/aab-converter/convertAabToApk.js +69 -0
- package/dist/aab-converter/convertAabToApk.js.map +1 -0
- package/dist/aab-converter/resourcePaths.d.ts +4 -0
- package/dist/aab-converter/resourcePaths.d.ts.map +1 -0
- package/dist/aab-converter/resourcePaths.js +42 -0
- package/dist/aab-converter/resourcePaths.js.map +1 -0
- package/dist/aab-converter/signingOptions.d.ts +9 -0
- package/dist/aab-converter/signingOptions.d.ts.map +1 -0
- package/dist/aab-converter/signingOptions.js +21 -0
- package/dist/aab-converter/signingOptions.js.map +1 -0
- package/dist/aab-converter/types.d.ts +24 -0
- package/dist/aab-converter/types.d.ts.map +1 -0
- package/dist/aab-converter/types.js +2 -0
- package/dist/aab-converter/types.js.map +1 -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/android/meetSdkRemoteGradle.d.ts +0 -3
- package/dist/android/meetSdkRemoteGradle.d.ts.map +1 -1
- package/dist/android/meetSdkRemoteGradle.js +13 -20
- package/dist/android/meetSdkRemoteGradle.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +157 -31
- 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 +67 -5
- 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 +66 -0
- package/dist/config/meetSdkIosConfig.js.map +1 -0
- package/dist/config/meetSdkRemoteConfig.d.ts +19 -11
- package/dist/config/meetSdkRemoteConfig.d.ts.map +1 -1
- package/dist/config/meetSdkRemoteConfig.js +89 -69
- package/dist/config/meetSdkRemoteConfig.js.map +1 -1
- package/dist/config/topsdkFeatureModules.d.ts +5 -0
- package/dist/config/topsdkFeatureModules.d.ts.map +1 -1
- package/dist/config/topsdkFeatureModules.js +26 -0
- package/dist/config/topsdkFeatureModules.js.map +1 -1
- package/dist/contracts/types.d.ts +19 -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/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 +4 -5
- package/dist/core/workspace.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -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 +211 -36
- 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 +179 -1
- 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 -1
- package/dist/ios/sdkBundle.d.ts.map +1 -1
- package/dist/ios/sdkBundle.js +7 -5
- 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 +14 -13
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service.d.ts +8 -6
- package/dist/mcp/service.d.ts.map +1 -1
- package/dist/mcp/service.js +34 -14
- package/dist/mcp/service.js.map +1 -1
- package/dist/ops/handlers.d.ts.map +1 -1
- package/dist/ops/handlers.js +10 -4
- 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 +208 -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/dist/shared/fileUtils.d.ts +5 -0
- package/dist/shared/fileUtils.d.ts.map +1 -0
- package/dist/shared/fileUtils.js +35 -0
- package/dist/shared/fileUtils.js.map +1 -0
- package/dist/shared/logger.d.ts +10 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +37 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/pathUtils.d.ts +4 -0
- package/dist/shared/pathUtils.d.ts.map +1 -0
- package/dist/shared/pathUtils.js +22 -0
- package/dist/shared/pathUtils.js.map +1 -0
- package/dist/shared/processRunner.d.ts +12 -0
- package/dist/shared/processRunner.d.ts.map +1 -0
- package/dist/shared/processRunner.js +31 -0
- package/dist/shared/processRunner.js.map +1 -0
- package/docs/AAB_CONVERTER_CLI_PLAN.md +392 -0
- package/docs/API.md +246 -32
- package/docs/CLI.md +292 -0
- package/docs/INTEGRATION.md +116 -0
- package/docs/MCP.md +86 -0
- package/docs/README.md +19 -10
- package/docs/{api → archive/api}/downloadSDKConfig.md +8 -6
- package/docs/{api → archive/api}/getChannelConfig-meetgames.md +1 -1
- 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 +15 -14
- package/logs/convert-20260622-155037.log +5 -0
- package/logs/convert-20260622-155226.log +6 -0
- package/meetsdk-android.json +2 -1
- package/meetsdk-ios.json +15 -0
- package/package.json +10 -35
- package/scripts/package-aab-cli-win.mjs +193 -0
- package/src/aab-converter/aab-entry.ts +48 -0
- package/src/aab-converter/apksExtractor.ts +119 -0
- package/src/aab-converter/bundletoolRunner.ts +63 -0
- package/src/aab-converter/cliArgs.ts +194 -0
- package/src/aab-converter/convertAabToApk.ts +81 -0
- package/src/aab-converter/resourcePaths.ts +43 -0
- package/src/aab-converter/signingOptions.ts +29 -0
- package/src/aab-converter/types.ts +26 -0
- 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/cli.ts +488 -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 +99 -0
- package/src/config/meetSdkIosConfig.ts +87 -0
- package/src/config/meetSdkRemoteConfig.ts +1211 -0
- package/src/config/topsdkFeatureModules.ts +92 -0
- package/src/contracts/types.ts +121 -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 +29 -0
- package/src/entry.ts +7 -0
- package/src/index.ts +133 -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 +516 -0
- package/src/ios/pbxprojEditor.ts +383 -0
- package/src/ios/pluginConfig.ts +97 -0
- package/src/ios/reserved.ts +8 -0
- package/src/ios/sdkBundle.ts +36 -0
- package/src/ios/template.ts +36 -0
- package/src/ios/types.ts +65 -0
- package/src/mcp/server.ts +170 -0
- package/src/mcp/service.ts +222 -0
- package/src/mcp-entry.ts +7 -0
- package/src/ops/fileStore.ts +56 -0
- package/src/ops/handlers.ts +304 -0
- package/src/remote/fetchJson.ts +22 -0
- package/src/remote/sdkHomeDownload.ts +274 -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/src/shared/fileUtils.ts +41 -0
- package/src/shared/logger.ts +49 -0
- package/src/shared/pathUtils.ts +24 -0
- package/src/shared/processRunner.ts +43 -0
- package/test-projects/README.md +51 -0
- package/test-projects/_preview/pipeline.patch +281 -0
- package/tests/aab-converter.test.ts +213 -0
- package/tests/assemble.test.ts +12 -0
- package/tests/doctor.test.ts +89 -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/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 +16 -0
- package/tests/loadManifest.test.ts +15 -0
- package/tests/manifest-xml.test.ts +30 -0
- package/tests/mcp.e2e.ts +217 -0
- package/tests/mcp.service.test.ts +53 -0
- package/tests/meetSdkRemoteConfig.test.ts +456 -0
- package/tests/meetSdkRemoteGradle.test.ts +414 -0
- package/tests/pipeline.android.test.ts +96 -0
- package/tests/pipeline.integration-json.test.ts +58 -0
- package/tests/pipeline.ios.test.ts +385 -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 +130 -0
- package/tests/test-projects-hosts.test.ts +78 -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
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { UserFacingError } from "../shared/errors.js";
|
|
3
|
+
import { toAbsolutePath } from "../shared/pathUtils.js";
|
|
4
|
+
import { resolveSigningOptions } from "./signingOptions.js";
|
|
5
|
+
function valueAfter(args, index, flag) {
|
|
6
|
+
const value = args[index + 1] ?? "";
|
|
7
|
+
if (!value || value.startsWith("--")) {
|
|
8
|
+
throw new UserFacingError("INVALID_ARGS", `${flag} requires a value`);
|
|
9
|
+
}
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
function passwordFromEnv(envName, flag) {
|
|
13
|
+
const value = process.env[envName];
|
|
14
|
+
if (!value) {
|
|
15
|
+
throw new UserFacingError("ENV_PASSWORD_MISSING", `${flag} points to an empty or missing environment variable: ${envName}`);
|
|
16
|
+
}
|
|
17
|
+
return value;
|
|
18
|
+
}
|
|
19
|
+
export function printAabHelp() {
|
|
20
|
+
console.log(`
|
|
21
|
+
aab2apk — Convert Android App Bundle (.aab) to signed universal APK
|
|
22
|
+
|
|
23
|
+
Usage:
|
|
24
|
+
aab2apk.cmd convert --aab <file.aab> --out-dir <dir> --ks <file.jks> --ks-key-alias <alias> [password options]
|
|
25
|
+
|
|
26
|
+
Required:
|
|
27
|
+
--aab AAB file path
|
|
28
|
+
--out-dir Output directory
|
|
29
|
+
--ks Keystore/JKS file path
|
|
30
|
+
--ks-key-alias Key alias in keystore
|
|
31
|
+
|
|
32
|
+
Password options:
|
|
33
|
+
--ks-pass-env Read keystore password from environment variable (recommended)
|
|
34
|
+
--key-pass-env Read key password from environment variable (recommended)
|
|
35
|
+
--ks-pass Keystore password as command argument (not recommended)
|
|
36
|
+
--key-pass Key password as command argument (not recommended)
|
|
37
|
+
|
|
38
|
+
Other options:
|
|
39
|
+
--apk-name Output APK file name
|
|
40
|
+
--keep-apks Keep intermediate .apks file
|
|
41
|
+
--no-overwrite Fail if output already exists (default is overwrite)
|
|
42
|
+
--verbose Print detailed logs
|
|
43
|
+
--help, -h Show help
|
|
44
|
+
`);
|
|
45
|
+
}
|
|
46
|
+
export function parseAabCliArgv(argv) {
|
|
47
|
+
const rest = argv.slice(2);
|
|
48
|
+
if (!rest.length || rest[0] === "--help" || rest[0] === "-h") {
|
|
49
|
+
return {
|
|
50
|
+
help: true,
|
|
51
|
+
command: "",
|
|
52
|
+
aabPath: "",
|
|
53
|
+
outDir: "",
|
|
54
|
+
keyStorePath: "",
|
|
55
|
+
keyAlias: "",
|
|
56
|
+
keepApks: false,
|
|
57
|
+
overwrite: true,
|
|
58
|
+
verbose: false,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const parsed = {
|
|
62
|
+
help: false,
|
|
63
|
+
command: rest[0] ?? "",
|
|
64
|
+
aabPath: "",
|
|
65
|
+
outDir: "",
|
|
66
|
+
keyStorePath: "",
|
|
67
|
+
keyAlias: "",
|
|
68
|
+
keepApks: false,
|
|
69
|
+
overwrite: true,
|
|
70
|
+
verbose: false,
|
|
71
|
+
};
|
|
72
|
+
if (parsed.command !== "convert") {
|
|
73
|
+
throw new UserFacingError("INVALID_COMMAND", `Unknown command: ${parsed.command}`);
|
|
74
|
+
}
|
|
75
|
+
for (let i = 1; i < rest.length; i += 1) {
|
|
76
|
+
const flag = rest[i];
|
|
77
|
+
if (flag === "--help" || flag === "-h") {
|
|
78
|
+
parsed.help = true;
|
|
79
|
+
return parsed;
|
|
80
|
+
}
|
|
81
|
+
if (flag === "--keep-apks") {
|
|
82
|
+
parsed.keepApks = true;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
if (flag === "--verbose") {
|
|
86
|
+
parsed.verbose = true;
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (flag === "--no-overwrite") {
|
|
90
|
+
parsed.overwrite = false;
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
if (flag === "--overwrite") {
|
|
94
|
+
parsed.overwrite = true;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (flag === "--aab") {
|
|
98
|
+
parsed.aabPath = valueAfter(rest, i, flag);
|
|
99
|
+
i += 1;
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (flag === "--out-dir") {
|
|
103
|
+
parsed.outDir = valueAfter(rest, i, flag);
|
|
104
|
+
i += 1;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (flag === "--ks") {
|
|
108
|
+
parsed.keyStorePath = valueAfter(rest, i, flag);
|
|
109
|
+
i += 1;
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (flag === "--ks-key-alias") {
|
|
113
|
+
parsed.keyAlias = valueAfter(rest, i, flag);
|
|
114
|
+
i += 1;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (flag === "--ks-pass-env") {
|
|
118
|
+
parsed.keyStorePassword = passwordFromEnv(valueAfter(rest, i, flag), flag);
|
|
119
|
+
i += 1;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
if (flag === "--key-pass-env") {
|
|
123
|
+
parsed.keyPassword = passwordFromEnv(valueAfter(rest, i, flag), flag);
|
|
124
|
+
i += 1;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (flag === "--ks-pass") {
|
|
128
|
+
parsed.keyStorePassword = valueAfter(rest, i, flag);
|
|
129
|
+
i += 1;
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
if (flag === "--key-pass") {
|
|
133
|
+
parsed.keyPassword = valueAfter(rest, i, flag);
|
|
134
|
+
i += 1;
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (flag === "--apk-name") {
|
|
138
|
+
parsed.apkName = valueAfter(rest, i, flag);
|
|
139
|
+
i += 1;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
throw new UserFacingError("INVALID_ARGS", `Unsupported argument: ${flag}`);
|
|
143
|
+
}
|
|
144
|
+
return parsed;
|
|
145
|
+
}
|
|
146
|
+
export function validateConvertArgs(parsed) {
|
|
147
|
+
if (!parsed.aabPath)
|
|
148
|
+
throw new UserFacingError("INVALID_ARGS", "Missing --aab");
|
|
149
|
+
if (!parsed.outDir)
|
|
150
|
+
throw new UserFacingError("INVALID_ARGS", "Missing --out-dir");
|
|
151
|
+
if (!parsed.keyStorePath)
|
|
152
|
+
throw new UserFacingError("INVALID_ARGS", "Missing --ks");
|
|
153
|
+
if (!parsed.keyAlias)
|
|
154
|
+
throw new UserFacingError("INVALID_ARGS", "Missing --ks-key-alias");
|
|
155
|
+
return {
|
|
156
|
+
aabPath: toAbsolutePath(parsed.aabPath),
|
|
157
|
+
outDir: path.resolve(parsed.outDir),
|
|
158
|
+
signing: resolveSigningOptions({
|
|
159
|
+
keyStorePath: parsed.keyStorePath,
|
|
160
|
+
keyAlias: parsed.keyAlias,
|
|
161
|
+
keyStorePassword: parsed.keyStorePassword,
|
|
162
|
+
keyPassword: parsed.keyPassword,
|
|
163
|
+
}),
|
|
164
|
+
apkName: parsed.apkName,
|
|
165
|
+
keepApks: parsed.keepApks,
|
|
166
|
+
overwrite: parsed.overwrite,
|
|
167
|
+
verbose: parsed.verbose,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=cliArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cliArgs.js","sourceRoot":"","sources":["../../src/aab-converter/cliArgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ConvertAabToApkOptions, ConvertAabToApkResult } from "./types.js";
|
|
2
|
+
export declare function resolveOutputPaths(options: Pick<ConvertAabToApkOptions, "aabPath" | "outDir" | "apkName">): {
|
|
3
|
+
apksPath: string;
|
|
4
|
+
apkPath: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function convertAabToApk(options: ConvertAabToApkOptions): Promise<ConvertAabToApkResult>;
|
|
7
|
+
//# sourceMappingURL=convertAabToApk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertAabToApk.d.ts","sourceRoot":"","sources":["../../src/aab-converter/convertAabToApk.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEhF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC,GAAG;IAC3G,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB,CAOA;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA2DrG"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { UserFacingError } from "../shared/errors.js";
|
|
4
|
+
import { assertCanWriteFile, assertFileExists, assertWritableDirectory } from "../shared/fileUtils.js";
|
|
5
|
+
import { baseNameWithoutExt, toAbsolutePath, validateOutputFileName } from "../shared/pathUtils.js";
|
|
6
|
+
import { buildUniversalApks } from "./bundletoolRunner.js";
|
|
7
|
+
import { extractUniversalApk } from "./apksExtractor.js";
|
|
8
|
+
export function resolveOutputPaths(options) {
|
|
9
|
+
const aabBase = baseNameWithoutExt(options.aabPath, ".aab");
|
|
10
|
+
const apkName = options.apkName ? validateOutputFileName(options.apkName) : `${aabBase}_universal.apk`;
|
|
11
|
+
return {
|
|
12
|
+
apksPath: path.join(options.outDir, `${aabBase}.apks`),
|
|
13
|
+
apkPath: path.join(options.outDir, apkName),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export async function convertAabToApk(options) {
|
|
17
|
+
const aabPath = toAbsolutePath(options.aabPath);
|
|
18
|
+
const outDir = toAbsolutePath(options.outDir);
|
|
19
|
+
const javaPath = options.javaPath;
|
|
20
|
+
const bundletoolPath = toAbsolutePath(options.bundletoolPath);
|
|
21
|
+
const signing = {
|
|
22
|
+
...options.signing,
|
|
23
|
+
keyStorePath: toAbsolutePath(options.signing.keyStorePath),
|
|
24
|
+
};
|
|
25
|
+
assertFileExists(aabPath, "AAB_NOT_FOUND", "AAB file");
|
|
26
|
+
baseNameWithoutExt(aabPath, ".aab");
|
|
27
|
+
assertFileExists(signing.keyStorePath, "KEYSTORE_NOT_FOUND", "Keystore file");
|
|
28
|
+
assertFileExists(bundletoolPath, "BUNDLETOOL_NOT_FOUND", "bundletool.jar");
|
|
29
|
+
if (javaPath.includes("/") || javaPath.includes("\\")) {
|
|
30
|
+
assertFileExists(javaPath, "JAVA_NOT_FOUND", "Java executable");
|
|
31
|
+
}
|
|
32
|
+
assertWritableDirectory(outDir);
|
|
33
|
+
const { apksPath, apkPath } = resolveOutputPaths({ aabPath, outDir, apkName: options.apkName });
|
|
34
|
+
assertCanWriteFile(apksPath, options.overwrite, "APK set");
|
|
35
|
+
assertCanWriteFile(apkPath, options.overwrite, "Output APK");
|
|
36
|
+
options.logger?.info(`AAB: ${aabPath}`);
|
|
37
|
+
options.logger?.info(`Output directory: ${outDir}`);
|
|
38
|
+
options.logger?.info(`APK set: ${apksPath}`);
|
|
39
|
+
options.logger?.info(`Output APK: ${apkPath}`);
|
|
40
|
+
await buildUniversalApks({
|
|
41
|
+
javaPath,
|
|
42
|
+
bundletoolPath,
|
|
43
|
+
aabPath,
|
|
44
|
+
apksPath,
|
|
45
|
+
signing,
|
|
46
|
+
overwrite: options.overwrite,
|
|
47
|
+
logger: options.logger,
|
|
48
|
+
});
|
|
49
|
+
await extractUniversalApk(apksPath, apkPath, options.overwrite);
|
|
50
|
+
options.logger?.info(`Extracted universal APK: ${apkPath}`);
|
|
51
|
+
if (!options.keepApks) {
|
|
52
|
+
try {
|
|
53
|
+
fs.unlinkSync(apksPath);
|
|
54
|
+
options.logger?.info(`Removed intermediate APK set: ${apksPath}`);
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
options.logger?.warn(`Failed to remove intermediate APK set: ${e instanceof Error ? e.message : String(e)}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (!fs.existsSync(apkPath)) {
|
|
61
|
+
throw new UserFacingError("APK_OUTPUT_MISSING", `Output APK was not created: ${apkPath}`);
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
apkPath,
|
|
65
|
+
apksPath: options.keepApks ? apksPath : undefined,
|
|
66
|
+
logPath: options.logger?.logPath,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=convertAabToApk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertAabToApk.js","sourceRoot":"","sources":["../../src/aab-converter/convertAabToApk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourcePaths.d.ts","sourceRoot":"","sources":["../../src/aab-converter/resourcePaths.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AASD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAY9D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWxD"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { UserFacingError } from "../shared/errors.js";
|
|
5
|
+
export function resolveToolRoot(metaUrl) {
|
|
6
|
+
const here = path.dirname(fileURLToPath(metaUrl));
|
|
7
|
+
return path.resolve(here, "..", "..");
|
|
8
|
+
}
|
|
9
|
+
function firstExisting(candidates) {
|
|
10
|
+
for (const candidate of candidates) {
|
|
11
|
+
if (fs.existsSync(candidate))
|
|
12
|
+
return candidate;
|
|
13
|
+
}
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
export function resolveBundletoolPath(toolRoot) {
|
|
17
|
+
const envPath = process.env.AAB2APK_BUNDLETOOL_PATH?.trim();
|
|
18
|
+
if (envPath)
|
|
19
|
+
return path.resolve(envPath);
|
|
20
|
+
const found = firstExisting([
|
|
21
|
+
path.join(toolRoot, "tools", "bundletool.jar"),
|
|
22
|
+
path.join(toolRoot, "bundled", "android", "bundletool.jar"),
|
|
23
|
+
]);
|
|
24
|
+
if (found)
|
|
25
|
+
return found;
|
|
26
|
+
throw new UserFacingError("BUNDLETOOL_NOT_FOUND", `bundletool.jar not found. Expected ${path.join(toolRoot, "tools", "bundletool.jar")}`);
|
|
27
|
+
}
|
|
28
|
+
export function resolveJavaPath(toolRoot) {
|
|
29
|
+
const envPath = process.env.AAB2APK_JAVA_PATH?.trim();
|
|
30
|
+
if (envPath)
|
|
31
|
+
return path.resolve(envPath);
|
|
32
|
+
const exe = process.platform === "win32" ? "java.exe" : "java";
|
|
33
|
+
const candidates = [path.join(toolRoot, "runtime", "jre", "bin", exe)];
|
|
34
|
+
if (process.platform === "win32") {
|
|
35
|
+
candidates.push(path.join(toolRoot, "runtime", "win-x64", "jre", "bin", "java.exe"));
|
|
36
|
+
}
|
|
37
|
+
const found = firstExisting(candidates);
|
|
38
|
+
if (found)
|
|
39
|
+
return found;
|
|
40
|
+
return exe;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=resourcePaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resourcePaths.js","sourceRoot":"","sources":["../../src/aab-converter/resourcePaths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,aAAa,CAAC,UAAoB;IACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IACjD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAgB;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,EAAE,CAAC;IAC5D,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;KAC5D,CAAC,CAAC;IACH,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,MAAM,IAAI,eAAe,CACvB,sBAAsB,EACtB,sCAAsC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,CACvF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/D,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SigningOptions } from "./types.js";
|
|
2
|
+
export interface SigningInput {
|
|
3
|
+
keyStorePath: string;
|
|
4
|
+
keyAlias: string;
|
|
5
|
+
keyStorePassword?: string;
|
|
6
|
+
keyPassword?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function resolveSigningOptions(input: SigningInput): SigningOptions;
|
|
9
|
+
//# sourceMappingURL=signingOptions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signingOptions.d.ts","sourceRoot":"","sources":["../../src/aab-converter/signingOptions.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,YAAY,GAAG,cAAc,CAezE"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { UserFacingError } from "../shared/errors.js";
|
|
3
|
+
import { assertFileExists } from "../shared/fileUtils.js";
|
|
4
|
+
import { toAbsolutePath } from "../shared/pathUtils.js";
|
|
5
|
+
export function resolveSigningOptions(input) {
|
|
6
|
+
const keyStorePath = toAbsolutePath(input.keyStorePath);
|
|
7
|
+
assertFileExists(keyStorePath, "KEYSTORE_NOT_FOUND", "Keystore file");
|
|
8
|
+
if (!input.keyAlias.trim()) {
|
|
9
|
+
throw new UserFacingError("SIGNING_ALIAS_MISSING", "Missing --ks-key-alias");
|
|
10
|
+
}
|
|
11
|
+
if (!input.keyStorePassword) {
|
|
12
|
+
throw new UserFacingError("SIGNING_PASSWORD_MISSING", "Missing keystore password");
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
keyStorePath: path.resolve(keyStorePath),
|
|
16
|
+
keyAlias: input.keyAlias,
|
|
17
|
+
keyStorePassword: input.keyStorePassword,
|
|
18
|
+
keyPassword: input.keyPassword || undefined,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=signingOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signingOptions.js","sourceRoot":"","sources":["../../src/aab-converter/signingOptions.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAUxD,MAAM,UAAU,qBAAqB,CAAC,KAAmB;IACvD,MAAM,YAAY,GAAG,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACxD,gBAAgB,CAAC,YAAY,EAAE,oBAAoB,EAAE,eAAe,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CAAC,uBAAuB,EAAE,wBAAwB,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC5B,MAAM,IAAI,eAAe,CAAC,0BAA0B,EAAE,2BAA2B,CAAC,CAAC;IACrF,CAAC;IACD,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,SAAS;KAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Logger } from "../shared/logger.js";
|
|
2
|
+
export interface SigningOptions {
|
|
3
|
+
keyStorePath: string;
|
|
4
|
+
keyAlias: string;
|
|
5
|
+
keyStorePassword: string;
|
|
6
|
+
keyPassword?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface ConvertAabToApkOptions {
|
|
9
|
+
aabPath: string;
|
|
10
|
+
outDir: string;
|
|
11
|
+
signing: SigningOptions;
|
|
12
|
+
javaPath: string;
|
|
13
|
+
bundletoolPath: string;
|
|
14
|
+
apkName?: string;
|
|
15
|
+
keepApks: boolean;
|
|
16
|
+
overwrite: boolean;
|
|
17
|
+
logger?: Logger;
|
|
18
|
+
}
|
|
19
|
+
export interface ConvertAabToApkResult {
|
|
20
|
+
apkPath: string;
|
|
21
|
+
apksPath?: string;
|
|
22
|
+
logPath?: string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/aab-converter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/aab-converter/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/android/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/android/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA6C,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAG/G,eAAO,MAAM,sBAAsB,EAAE,sBAKpC,CAAC"}
|
package/dist/android/adapter.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { detectAndroid } from "./detect.js";
|
|
2
2
|
export const androidPlatformAdapter = {
|
|
3
3
|
id: "android",
|
|
4
|
-
detect(projectRoot) {
|
|
5
|
-
return detectAndroid(projectRoot);
|
|
4
|
+
detect(projectRoot, options) {
|
|
5
|
+
return detectAndroid(projectRoot, options);
|
|
6
6
|
},
|
|
7
7
|
};
|
|
8
8
|
//# sourceMappingURL=adapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/android/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,EAAE,EAAE,SAAS;IACb,MAAM,CAAC,WAAmB;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/android/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,sBAAsB,GAA2B;IAC5D,EAAE,EAAE,SAAS;IACb,MAAM,CAAC,WAAmB,EAAE,OAA8B;QACxD,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF,CAAC"}
|
package/dist/android/detect.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AndroidDetectResult } from "../contracts/types.js";
|
|
2
|
-
export declare function detectAndroid(projectRoot: string): AndroidDetectResult;
|
|
1
|
+
import type { AndroidDetectOptions, AndroidDetectResult } from "../contracts/types.js";
|
|
2
|
+
export declare function detectAndroid(projectRoot: string, options?: AndroidDetectOptions): AndroidDetectResult;
|
|
3
3
|
/** Relative path from project root to the detected application module directory (e.g. `app`, `launcher`). */
|
|
4
4
|
export declare function applicationModuleRelPath(projectRoot: string, android: Extract<AndroidDetectResult, {
|
|
5
5
|
ok: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/android/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/android/detect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AA0DvF,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,oBAAyB,GAAG,mBAAmB,CAsD1G;AAED,6GAA6G;AAC7G,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAClD,MAAM,CAER;AAED,2FAA2F;AAC3F,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,CAAC,GAClD,MAAM,CAGR"}
|
package/dist/android/detect.js
CHANGED
|
@@ -32,7 +32,24 @@ function moduleNameToDir(projectRoot, moduleName) {
|
|
|
32
32
|
function defaultManifestPath(moduleDir) {
|
|
33
33
|
return path.join(moduleDir, "src", "main", "AndroidManifest.xml");
|
|
34
34
|
}
|
|
35
|
-
|
|
35
|
+
function normalizeModuleSelector(value) {
|
|
36
|
+
const trimmed = value.trim().replace(/\\/g, "/").replace(/^\/+|\/+$/g, "");
|
|
37
|
+
if (!trimmed)
|
|
38
|
+
return "";
|
|
39
|
+
const asGradlePath = trimmed.replace(/\//g, ":");
|
|
40
|
+
return asGradlePath.startsWith(":") ? asGradlePath : `:${asGradlePath}`;
|
|
41
|
+
}
|
|
42
|
+
function applicationModuleList(modules) {
|
|
43
|
+
return modules.map((x) => x.moduleName).join(", ");
|
|
44
|
+
}
|
|
45
|
+
function successResult(projectRoot, moduleName, moduleDir) {
|
|
46
|
+
const manifestPath = defaultManifestPath(moduleDir);
|
|
47
|
+
if (!fs.existsSync(manifestPath)) {
|
|
48
|
+
return { ok: false, error: `AndroidManifest.xml not found at ${manifestPath}` };
|
|
49
|
+
}
|
|
50
|
+
return { ok: true, moduleName, moduleDir, manifestPath };
|
|
51
|
+
}
|
|
52
|
+
export function detectAndroid(projectRoot, options = {}) {
|
|
36
53
|
const settingsGradle = path.join(projectRoot, "settings.gradle");
|
|
37
54
|
const settingsGradleKts = path.join(projectRoot, "settings.gradle.kts");
|
|
38
55
|
let settingsContent = "";
|
|
@@ -61,19 +78,30 @@ export function detectAndroid(projectRoot) {
|
|
|
61
78
|
applicationModules.push({ moduleName, moduleDir });
|
|
62
79
|
}
|
|
63
80
|
}
|
|
81
|
+
const requestedModule = options.appTarget ? normalizeModuleSelector(options.appTarget) : "";
|
|
64
82
|
if (applicationModules.length === 0) {
|
|
65
83
|
return { ok: false, error: "NO_APPLICATION_MODULE_FOUND" };
|
|
66
84
|
}
|
|
85
|
+
if (requestedModule) {
|
|
86
|
+
const selected = applicationModules.find((x) => normalizeModuleSelector(x.moduleName) === requestedModule);
|
|
87
|
+
if (!selected) {
|
|
88
|
+
const list = applicationModuleList(applicationModules);
|
|
89
|
+
return {
|
|
90
|
+
ok: false,
|
|
91
|
+
error: `ANDROID_APPLICATION_MODULE_NOT_FOUND: ${requestedModule}; available application modules: ${list}`,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return successResult(projectRoot, selected.moduleName, selected.moduleDir);
|
|
95
|
+
}
|
|
67
96
|
if (applicationModules.length > 1) {
|
|
68
|
-
const list = applicationModules
|
|
69
|
-
return {
|
|
97
|
+
const list = applicationModuleList(applicationModules);
|
|
98
|
+
return {
|
|
99
|
+
ok: false,
|
|
100
|
+
error: `MULTIPLE_APPLICATION_MODULES_FOUND: ${list}; pass --app-target <module> to select one`,
|
|
101
|
+
};
|
|
70
102
|
}
|
|
71
103
|
const { moduleName, moduleDir } = applicationModules[0];
|
|
72
|
-
|
|
73
|
-
if (!fs.existsSync(manifestPath)) {
|
|
74
|
-
return { ok: false, error: `AndroidManifest.xml not found at ${manifestPath}` };
|
|
75
|
-
}
|
|
76
|
-
return { ok: true, moduleName, moduleDir, manifestPath };
|
|
104
|
+
return successResult(projectRoot, moduleName, moduleDir);
|
|
77
105
|
}
|
|
78
106
|
/** Relative path from project root to the detected application module directory (e.g. `app`, `launcher`). */
|
|
79
107
|
export function applicationModuleRelPath(projectRoot, android) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/android/detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,SAAS,aAAa,CAAC,eAAuB;IAC5C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,YAAY,GAAG,qBAAqB,CAAC;IAC3C,IAAI,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC/C,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,GAAG;aACd,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;QACxB,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,kBAA0B;IACrD,MAAM,WAAW,GAAG,sDAAsD,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACpG,MAAM,YAAY,GAAG,qDAAqD,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACpG,MAAM,WAAW,GAAG,+EAA+E,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC7H,MAAM,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,6CAA6C,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChG,OAAO,WAAW,IAAI,YAAY,IAAI,WAAW,IAAI,CAAC,eAAe,IAAI,gBAAgB,CAAC,CAAC;AAC7F,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB,EAAE,UAAkB;IAC9D,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACjF,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAmB;IAC/
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/android/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,9 +41,6 @@ export declare function removeApplyPluginLinesByIds(text: string, pluginIds: Rea
|
|
|
41
41
|
export declare function removeClasspathLinesByCoordinates(text: string, coordinates: ReadonlySet<string>): string;
|
|
42
42
|
/** Remove repository declarations that match keys in `repositories` (google / mavenCentral / URL). */
|
|
43
43
|
export declare function removeRepositoryLinesByKeys(blockText: string, repositories: readonly string[]): string;
|
|
44
|
-
/**
|
|
45
|
-
* Upsert repository declarations: drop existing lines for the same repo keys, then write TOPSDK REPO block.
|
|
46
|
-
*/
|
|
47
44
|
export declare function mergeRepositoriesInBlock(blockText: string, repositories: readonly string[]): string;
|
|
48
45
|
/**
|
|
49
46
|
* Upsert buildscript classpaths: drop existing lines with same coordinate, then write TOPSDK AUTO block.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meetSdkRemoteGradle.d.ts","sourceRoot":"","sources":["../../src/android/meetSdkRemoteGradle.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIxG,2DAA2D;AAC3D,eAAO,MAAM,iBAAiB,6BAA6B,CAAC;AAC5D,eAAO,MAAM,eAAe,2BAA2B,CAAC;AACxD,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AACtE,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAClE,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAC1E,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AA0CtE,iEAAiE;AACjE,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,gEAAgE;AAChE,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAgCD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG9D;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGhE;AAED,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,8BAAwB,CAAC;AAE5D,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG7E;AAOD,gHAAgH;AAChH,wBAAgB,8BAA8B,CAC5C,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,IAAI,CAWf;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,eAAe,EAAE,MAAM,GACtB,MAAM,GAAG,IAAI,CAIf;AAED,wEAAwE;AACxE,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAQ9F;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhE;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED,MAAM,MAAM,uBAAuB,GAAG,aAAa,GAAG,cAAc,CAAC;AAErE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAkBtF;AAED,uFAAuF;AACvF,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAQ/F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED,iFAAiF;AACjF,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAQhG;AAED,sFAAsF;AACtF,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,MAAM,CAUxG;AAED,sGAAsG;AACtG,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMtG;
|
|
1
|
+
{"version":3,"file":"meetSdkRemoteGradle.d.ts","sourceRoot":"","sources":["../../src/android/meetSdkRemoteGradle.ts"],"names":[],"mappings":"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"}
|
|
@@ -201,12 +201,24 @@ export function removeRepositoryLinesByKeys(blockText, repositories) {
|
|
|
201
201
|
/**
|
|
202
202
|
* Upsert repository declarations: drop existing lines for the same repo keys, then write TOPSDK REPO block.
|
|
203
203
|
*/
|
|
204
|
+
function repositoryToGradleLine(repo) {
|
|
205
|
+
if (repo === "google")
|
|
206
|
+
return " google()";
|
|
207
|
+
if (repo === "mavenCentral")
|
|
208
|
+
return " mavenCentral()";
|
|
209
|
+
return ` maven { url '${escapeGradleSingleQuotedString(repo)}' }`;
|
|
210
|
+
}
|
|
204
211
|
export function mergeRepositoriesInBlock(blockText, repositories) {
|
|
205
212
|
let cleaned = removeRepositoryLinesByKeys(blockText, repositories);
|
|
206
213
|
cleaned = stripManagedBlocks(cleaned, TOPSDK_REPO_AUTO_START, TOPSDK_REPO_AUTO_END);
|
|
207
214
|
if (!repositories.length)
|
|
208
215
|
return cleaned;
|
|
209
|
-
|
|
216
|
+
const snippet = [
|
|
217
|
+
TOPSDK_REPO_AUTO_START,
|
|
218
|
+
...repositories.map(repositoryToGradleLine),
|
|
219
|
+
TOPSDK_REPO_AUTO_END,
|
|
220
|
+
].join("\n");
|
|
221
|
+
return fullBlockTextMerge(cleaned, TOPSDK_REPO_AUTO_START, TOPSDK_REPO_AUTO_END, snippet);
|
|
210
222
|
}
|
|
211
223
|
/**
|
|
212
224
|
* Upsert buildscript classpaths: drop existing lines with same coordinate, then write TOPSDK AUTO block.
|
|
@@ -322,25 +334,6 @@ function findNestedBlockRange(content, keywords) {
|
|
|
322
334
|
}
|
|
323
335
|
return current;
|
|
324
336
|
}
|
|
325
|
-
function buildTopSdkRepoSnippet(repositories) {
|
|
326
|
-
const lines = [TOPSDK_REPO_AUTO_START];
|
|
327
|
-
for (const repo of repositories) {
|
|
328
|
-
if (repo === "google") {
|
|
329
|
-
lines.push(" //Firebase", " google()");
|
|
330
|
-
}
|
|
331
|
-
else if (repo === "mavenCentral") {
|
|
332
|
-
lines.push(" //Appsflyer", " mavenCentral()");
|
|
333
|
-
}
|
|
334
|
-
else {
|
|
335
|
-
if (repo.includes("storage-sdk-gameplus.meetsocial.com/repository/TopSdk")) {
|
|
336
|
-
lines.push(" //TOPSdk 仓库地址");
|
|
337
|
-
}
|
|
338
|
-
lines.push(` maven { url '${escapeGradleSingleQuotedString(repo)}' }`);
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
lines.push(TOPSDK_REPO_AUTO_END);
|
|
342
|
-
return lines.join("\n");
|
|
343
|
-
}
|
|
344
337
|
function buildTopSdkBuildscriptClasspathSnippet(classpaths) {
|
|
345
338
|
const lines = [TOPSDK_AUTO_START];
|
|
346
339
|
for (const classpath of classpaths) {
|