@akylas/nativescript-cli 8.8.2 → 8.8.3
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/lib/android-tools-info.js +9 -20
- package/lib/base-package-manager.js +47 -64
- package/lib/bun-package-manager.js +65 -88
- package/lib/color.js +2 -2
- package/lib/commands/add-platform.js +14 -30
- package/lib/commands/apple-login.js +18 -29
- package/lib/commands/appstore-list.js +34 -45
- package/lib/commands/appstore-upload.js +55 -68
- package/lib/commands/build.js +57 -86
- package/lib/commands/clean.js +161 -176
- package/lib/commands/command-base.js +14 -27
- package/lib/commands/config.js +51 -70
- package/lib/commands/create-project.js +210 -229
- package/lib/commands/debug.js +66 -88
- package/lib/commands/deploy.js +28 -44
- package/lib/commands/embedding/embed.js +33 -52
- package/lib/commands/extensibility/install-extension.js +5 -16
- package/lib/commands/extensibility/list-extensions.js +13 -24
- package/lib/commands/extensibility/uninstall-extension.js +4 -15
- package/lib/commands/fonts.js +30 -41
- package/lib/commands/generate-assets.js +13 -28
- package/lib/commands/generate-help.js +2 -13
- package/lib/commands/generate.js +17 -26
- package/lib/commands/info.js +2 -13
- package/lib/commands/install.js +34 -49
- package/lib/commands/list-platforms.js +14 -25
- package/lib/commands/migrate.js +15 -26
- package/lib/commands/native-add.js +23 -46
- package/lib/commands/platform-clean.js +19 -32
- package/lib/commands/plugin/add-plugin.js +12 -25
- package/lib/commands/plugin/build-plugin.js +34 -39
- package/lib/commands/plugin/create-plugin.js +110 -133
- package/lib/commands/plugin/list-plugins.js +22 -33
- package/lib/commands/plugin/remove-plugin.js +20 -33
- package/lib/commands/plugin/update-plugin.js +20 -33
- package/lib/commands/post-install.js +20 -33
- package/lib/commands/prepare.js +19 -35
- package/lib/commands/preview.js +49 -62
- package/lib/commands/remove-platform.js +7 -18
- package/lib/commands/resources/resources-update.js +13 -26
- package/lib/commands/run.js +55 -76
- package/lib/commands/start.js +6 -19
- package/lib/commands/test-init.js +123 -134
- package/lib/commands/test.js +66 -89
- package/lib/commands/typings.js +126 -142
- package/lib/commands/update-platform.js +22 -35
- package/lib/commands/update.js +30 -43
- package/lib/common/child-process.js +53 -72
- package/lib/common/codeGeneration/code-entity.js +1 -1
- package/lib/common/codeGeneration/code-printer.js +1 -1
- package/lib/common/command-params.js +7 -18
- package/lib/common/commands/analytics.js +27 -40
- package/lib/common/commands/autocompletion.js +39 -56
- package/lib/common/commands/device/device-log-stream.js +12 -23
- package/lib/common/commands/device/get-file.js +22 -33
- package/lib/common/commands/device/list-applications.js +12 -23
- package/lib/common/commands/device/list-devices.js +72 -87
- package/lib/common/commands/device/list-files.js +23 -34
- package/lib/common/commands/device/put-file.js +22 -33
- package/lib/common/commands/device/run-application.js +12 -25
- package/lib/common/commands/device/stop-application.js +11 -22
- package/lib/common/commands/device/uninstall-application.js +6 -17
- package/lib/common/commands/generate-messages.js +17 -28
- package/lib/common/commands/help.js +20 -33
- package/lib/common/commands/package-manager-get.js +6 -17
- package/lib/common/commands/package-manager-set.js +9 -20
- package/lib/common/commands/post-install.js +2 -13
- package/lib/common/commands/preuninstall.js +23 -38
- package/lib/common/commands/proxy/proxy-base.js +8 -19
- package/lib/common/commands/proxy/proxy-clear.js +4 -15
- package/lib/common/commands/proxy/proxy-get.js +3 -14
- package/lib/common/commands/proxy/proxy-set.js +87 -100
- package/lib/common/constants.js +11 -11
- package/lib/common/decorators.js +10 -22
- package/lib/common/dispatchers.js +79 -96
- package/lib/common/errors.js +89 -104
- package/lib/common/file-system.js +106 -127
- package/lib/common/header.js +1 -2
- package/lib/common/helpers.js +149 -178
- package/lib/common/host-info.js +37 -50
- package/lib/common/http-client.js +93 -108
- package/lib/common/logger/appenders/cli-appender.js +1 -2
- package/lib/common/logger/appenders/emit-appender.js +1 -2
- package/lib/common/logger/layouts/cli-layout.js +1 -2
- package/lib/common/logger/logger.js +1 -1
- package/lib/common/mobile/android/android-application-manager.js +121 -142
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -1
- package/lib/common/mobile/android/android-debug-bridge.js +87 -112
- package/lib/common/mobile/android/android-device-file-system.js +98 -131
- package/lib/common/mobile/android/android-device-hash-service.js +50 -75
- package/lib/common/mobile/android/android-device.js +74 -91
- package/lib/common/mobile/android/android-emulator-services.js +105 -130
- package/lib/common/mobile/android/android-log-filter.js +1 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +76 -97
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -29
- package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -118
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -81
- package/lib/common/mobile/android/logcat-helper.js +108 -127
- package/lib/common/mobile/application-manager-base.js +84 -107
- package/lib/common/mobile/device-log-provider-base.js +7 -18
- package/lib/common/mobile/ios/device/ios-application-manager.js +79 -108
- package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -105
- package/lib/common/mobile/ios/device/ios-device-operations.js +105 -142
- package/lib/common/mobile/ios/device/ios-device.js +20 -36
- package/lib/common/mobile/ios/ios-device-base.js +58 -81
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -92
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -89
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -43
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -62
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -35
- package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -62
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -32
- package/lib/common/mobile/mobile-core/android-process-service.js +143 -182
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -13
- package/lib/common/mobile/mobile-core/devices-service.js +385 -436
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -35
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -62
- package/lib/common/mobile/mobile-helper.js +15 -26
- package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -52
- package/lib/common/opener.js +2 -2
- package/lib/common/plist-parser.js +2 -2
- package/lib/common/prompter.js +90 -105
- package/lib/common/queue.js +9 -20
- package/lib/common/services/auto-completion-service.js +39 -52
- package/lib/common/services/cancellation.js +17 -28
- package/lib/common/services/commands-service.js +146 -169
- package/lib/common/services/help-service.js +132 -157
- package/lib/common/services/hooks-service.js +93 -108
- package/lib/common/services/ios-notification-service.js +21 -34
- package/lib/common/services/json-file-settings-service.js +52 -71
- package/lib/common/services/lock-service.js +35 -52
- package/lib/common/services/message-contract-generator.js +35 -46
- package/lib/common/services/micro-templating-service.js +4 -15
- package/lib/common/services/net-service.js +90 -107
- package/lib/common/services/project-files-manager.js +10 -23
- package/lib/common/services/proxy-service.js +13 -24
- package/lib/common/services/qr.js +13 -24
- package/lib/common/services/settings-service.js +1 -1
- package/lib/common/services/xcode-select-service.js +20 -35
- package/lib/common/utils.js +2 -2
- package/lib/common/validators/project-name-validator.js +1 -1
- package/lib/common/validators/validation-result.js +1 -1
- package/lib/common/verify-node-version.js +2 -3
- package/lib/common/yok.js +23 -36
- package/lib/config.js +7 -58
- package/lib/constants.js +24 -24
- package/lib/controllers/build-controller.js +82 -99
- package/lib/controllers/debug-controller.js +107 -128
- package/lib/controllers/deploy-controller.js +17 -22
- package/lib/controllers/migrate-controller.js +722 -795
- package/lib/controllers/platform-controller.js +72 -87
- package/lib/controllers/prepare-controller.js +266 -299
- package/lib/controllers/run-controller.js +392 -406
- package/lib/controllers/update-controller-base.js +16 -29
- package/lib/controllers/update-controller.js +94 -119
- package/lib/data/prepare-data.js +4 -1
- package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
- package/lib/definitions/livesync.d.ts +1 -1
- package/lib/detached-processes/cleanup-js-subprocess.js +3 -12
- package/lib/detached-processes/cleanup-process.js +16 -25
- package/lib/device-path-provider.js +23 -34
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -164
- package/lib/device-sockets/ios/notification.js +1 -1
- package/lib/device-sockets/ios/socket-request-executor.js +24 -39
- package/lib/helpers/android-bundle-validator-helper.js +1 -1
- package/lib/helpers/deploy-command-helper.js +45 -49
- package/lib/helpers/key-command-helper.js +4 -13
- package/lib/helpers/livesync-command-helper.js +137 -152
- package/lib/helpers/network-connectivity-validator.js +6 -17
- package/lib/helpers/options-track-helper.js +6 -17
- package/lib/helpers/platform-command-helper.js +99 -120
- package/lib/key-commands/index.js +161 -211
- package/lib/nativescript-cli.js +5 -14
- package/lib/node-package-manager.js +81 -104
- package/lib/options.js +3 -12
- package/lib/package-installation-manager.js +130 -165
- package/lib/package-manager.js +63 -86
- package/lib/platform-command-param.js +4 -15
- package/lib/pnpm-package-manager.js +59 -78
- package/lib/project-data.js +1 -1
- package/lib/providers/project-files-provider.js +1 -1
- package/lib/services/analytics/analytics-broker-process.js +13 -22
- package/lib/services/analytics/analytics-broker.js +17 -30
- package/lib/services/analytics/analytics-service.js +161 -198
- package/lib/services/analytics/google-analytics-provider.js +41 -56
- package/lib/services/analytics-settings-service.js +15 -32
- package/lib/services/android/android-bundle-tool-service.js +43 -60
- package/lib/services/android/gradle-build-args-service.js +9 -20
- package/lib/services/android/gradle-build-service.js +34 -47
- package/lib/services/android/gradle-command-service.js +22 -35
- package/lib/services/android-device-debug-service.js +90 -117
- package/lib/services/android-plugin-build-service.js +230 -256
- package/lib/services/android-project-service.js +163 -199
- package/lib/services/android-resources-migration-service.js +51 -64
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -63
- package/lib/services/apple-portal/apple-portal-session-service.js +171 -188
- package/lib/services/assets-generation/assets-generation-service.js +98 -115
- package/lib/services/build-artifacts-service.js +9 -20
- package/lib/services/build-info-file-service.js +20 -35
- package/lib/services/cleanup-service.js +47 -76
- package/lib/services/cocoapods-service.js +115 -136
- package/lib/services/device/device-install-app-service.js +73 -90
- package/lib/services/doctor-service.js +99 -118
- package/lib/services/extensibility-service.js +81 -100
- package/lib/services/files-hash-service.js +26 -43
- package/lib/services/hmr-status-service.js +1 -1
- package/lib/services/initialize-service.js +37 -50
- package/lib/services/ios/export-options-plist-service.js +38 -51
- package/lib/services/ios/ios-signing-service.js +161 -180
- package/lib/services/ios/spm-service.js +40 -53
- package/lib/services/ios/xcodebuild-args-service.js +77 -94
- package/lib/services/ios/xcodebuild-command-service.js +14 -25
- package/lib/services/ios/xcodebuild-service.js +50 -69
- package/lib/services/ios-debugger-port-service.js +23 -36
- package/lib/services/ios-device-debug-service.js +75 -102
- package/lib/services/ios-entitlements-service.js +31 -42
- package/lib/services/ios-extensions-service.js +18 -29
- package/lib/services/ios-project-service.js +405 -460
- package/lib/services/ios-provision-service.js +108 -129
- package/lib/services/ios-watch-app-service.js +21 -32
- package/lib/services/ip-service.js +38 -53
- package/lib/services/itmstransporter-service.js +129 -152
- package/lib/services/livesync/android-device-livesync-service-base.js +31 -48
- package/lib/services/livesync/android-device-livesync-service.js +120 -149
- package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -152
- package/lib/services/livesync/android-livesync-service.js +14 -35
- package/lib/services/livesync/android-livesync-tool.js +89 -112
- package/lib/services/livesync/device-livesync-service-base.js +15 -28
- package/lib/services/livesync/ios-device-livesync-service.js +114 -143
- package/lib/services/livesync/ios-livesync-service.js +42 -58
- package/lib/services/livesync/platform-livesync-service-base.js +94 -119
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +30 -41
- package/lib/services/marking-mode-service.js +15 -28
- package/lib/services/npm-config-service.js +1 -1
- package/lib/services/pacote-service.js +49 -64
- package/lib/services/performance-service.js +1 -1
- package/lib/services/platform/add-platform-service.js +50 -71
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +49 -62
- package/lib/services/platform-environment-requirements.js +26 -37
- package/lib/services/plugins-service.js +122 -147
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +124 -141
- package/lib/services/project-cleanup-service.js +64 -77
- package/lib/services/project-config-service.js +71 -80
- package/lib/services/project-data-service.js +101 -118
- package/lib/services/project-name-service.js +28 -43
- package/lib/services/project-service.js +84 -103
- package/lib/services/project-templates-service.js +52 -67
- package/lib/services/start-service.js +41 -59
- package/lib/services/temp-service.js +8 -21
- package/lib/services/terminal-spinner-service.js +13 -24
- package/lib/services/test-execution-service.js +59 -72
- package/lib/services/test-initialization-service.js +2 -2
- package/lib/services/timeline-profiler-service.js +1 -1
- package/lib/services/versions-service.js +119 -138
- package/lib/services/webpack/webpack-compiler-service.js +211 -231
- package/lib/services/xcconfig-service.js +8 -19
- package/lib/sys-info.js +45 -62
- package/lib/tools/node-modules/node-modules-builder.js +16 -27
- package/lib/yarn-package-manager.js +59 -78
- package/lib/yarn2-package-manager.js +60 -79
- package/package.json +57 -55
- package/vendor/aab-tool/bundletool.jar +0 -0
- package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +0 -3407
- package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
- package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +0 -4451
- package/lib/common/resources/platform-tools/android/linux/adb +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +0 -4451
- package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
- package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
|
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
9
|
exports.AndroidPluginBuildService = void 0;
|
|
19
10
|
const path = require("path");
|
|
@@ -61,25 +52,23 @@ class AndroidPluginBuildService {
|
|
|
61
52
|
const manifest = path.join(platformsDir, constants_1.MANIFEST_FILE_NAME);
|
|
62
53
|
return this.$fs.exists(manifest) ? manifest : null;
|
|
63
54
|
}
|
|
64
|
-
updateManifestContent(oldManifestContent, defaultPackageName) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (xml["manifest"]) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
return newManifestContent;
|
|
82
|
-
});
|
|
55
|
+
async updateManifestContent(oldManifestContent, defaultPackageName) {
|
|
56
|
+
let xml = await this.getXml(oldManifestContent);
|
|
57
|
+
let packageName = defaultPackageName;
|
|
58
|
+
if (xml["manifest"]) {
|
|
59
|
+
if (xml["manifest"]["$"]["package"]) {
|
|
60
|
+
packageName = xml["manifest"]["$"]["package"];
|
|
61
|
+
}
|
|
62
|
+
xml = xml["manifest"];
|
|
63
|
+
}
|
|
64
|
+
const newManifest = { manifest: {} };
|
|
65
|
+
for (const prop in xml) {
|
|
66
|
+
newManifest.manifest[prop] = xml[prop];
|
|
67
|
+
}
|
|
68
|
+
newManifest.manifest["$"]["package"] = packageName;
|
|
69
|
+
const xmlBuilder = new xml2js_1.Builder();
|
|
70
|
+
const newManifestContent = xmlBuilder.buildObject(newManifest);
|
|
71
|
+
return newManifestContent;
|
|
83
72
|
}
|
|
84
73
|
createManifestContent(packageName) {
|
|
85
74
|
const newManifest = {
|
|
@@ -90,18 +79,16 @@ class AndroidPluginBuildService {
|
|
|
90
79
|
const newManifestContent = xmlBuilder.buildObject(newManifest);
|
|
91
80
|
return newManifestContent;
|
|
92
81
|
}
|
|
93
|
-
getXml(stringContent) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return promise;
|
|
104
|
-
});
|
|
82
|
+
async getXml(stringContent) {
|
|
83
|
+
const promise = new Promise((resolve, reject) => (0, xml2js_1.parseString)(stringContent, (err, result) => {
|
|
84
|
+
if (err) {
|
|
85
|
+
reject(err);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
resolve(result);
|
|
89
|
+
}
|
|
90
|
+
}));
|
|
91
|
+
return promise;
|
|
105
92
|
}
|
|
106
93
|
getScope(scopeName, content) {
|
|
107
94
|
const indexOfScopeName = content.indexOf(scopeName);
|
|
@@ -130,42 +117,40 @@ class AndroidPluginBuildService {
|
|
|
130
117
|
}
|
|
131
118
|
return result;
|
|
132
119
|
}
|
|
133
|
-
buildAar(options) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
fileHashesInfo: pluginSourceFileHashesInfo,
|
|
148
|
-
});
|
|
149
|
-
if (shouldBuildAar) {
|
|
150
|
-
this.cleanPluginDir(pluginTempDir);
|
|
151
|
-
const pluginTempMainSrcDir = path.join(pluginTempDir, "src", "main");
|
|
152
|
-
yield this.updateManifest(manifestFilePath, pluginTempMainSrcDir, shortPluginName);
|
|
153
|
-
this.copySourceSetDirectories(androidSourceDirectories, pluginTempMainSrcDir);
|
|
154
|
-
yield this.setupGradle(pluginTempDir, options.platformsAndroidDirPath, options.projectDir, options.pluginName);
|
|
155
|
-
const gradleArgs = (this.$projectData.nsConfig.android.gradleArgs || []).concat(options.gradleArgs || []);
|
|
156
|
-
yield this.buildPlugin({
|
|
157
|
-
gradlePath: options.gradlePath,
|
|
158
|
-
gradleArgs,
|
|
159
|
-
pluginDir: pluginTempDir,
|
|
160
|
-
pluginName: options.pluginName,
|
|
161
|
-
projectDir: options.projectDir,
|
|
162
|
-
});
|
|
163
|
-
this.$watchIgnoreListService.addFileToIgnoreList(path.join(options.aarOutputDir, `${shortPluginName}.aar`));
|
|
164
|
-
this.copyAar(shortPluginName, pluginTempDir, options.aarOutputDir);
|
|
165
|
-
this.writePluginHashInfo(pluginSourceFileHashesInfo, pluginTempDir);
|
|
166
|
-
}
|
|
167
|
-
return shouldBuildAar;
|
|
120
|
+
async buildAar(options) {
|
|
121
|
+
this.validateOptions(options);
|
|
122
|
+
const manifestFilePath = this.getManifest(options.platformsAndroidDirPath);
|
|
123
|
+
const androidSourceDirectories = this.getAndroidSourceDirectories(options.platformsAndroidDirPath);
|
|
124
|
+
const shortPluginName = (0, helpers_1.getShortPluginName)(options.pluginName + (options.aarSuffix || ''));
|
|
125
|
+
const pluginTempDir = path.join(options.tempPluginDirPath, shortPluginName);
|
|
126
|
+
const pluginSourceFileHashesInfo = await this.getSourceFilesHashes(options.platformsAndroidDirPath, shortPluginName);
|
|
127
|
+
const shouldBuildAar = await this.shouldBuildAar({
|
|
128
|
+
manifestFilePath,
|
|
129
|
+
androidSourceDirectories,
|
|
130
|
+
pluginTempDir,
|
|
131
|
+
pluginSourceDir: options.platformsAndroidDirPath,
|
|
132
|
+
shortPluginName,
|
|
133
|
+
fileHashesInfo: pluginSourceFileHashesInfo,
|
|
168
134
|
});
|
|
135
|
+
if (shouldBuildAar) {
|
|
136
|
+
this.cleanPluginDir(pluginTempDir);
|
|
137
|
+
const pluginTempMainSrcDir = path.join(pluginTempDir, "src", "main");
|
|
138
|
+
await this.updateManifest(manifestFilePath, pluginTempMainSrcDir, shortPluginName);
|
|
139
|
+
this.copySourceSetDirectories(androidSourceDirectories, pluginTempMainSrcDir);
|
|
140
|
+
await this.setupGradle(pluginTempDir, options.platformsAndroidDirPath, options.projectDir, options.pluginName);
|
|
141
|
+
const gradleArgs = (this.$projectData.nsConfig.android.gradleArgs || []).concat(options.gradleArgs || []);
|
|
142
|
+
await this.buildPlugin({
|
|
143
|
+
gradlePath: options.gradlePath,
|
|
144
|
+
gradleArgs,
|
|
145
|
+
pluginDir: pluginTempDir,
|
|
146
|
+
pluginName: options.pluginName,
|
|
147
|
+
projectDir: options.projectDir,
|
|
148
|
+
});
|
|
149
|
+
this.$watchIgnoreListService.addFileToIgnoreList(path.join(options.aarOutputDir, `${shortPluginName}.aar`));
|
|
150
|
+
this.copyAar(shortPluginName, pluginTempDir, options.aarOutputDir);
|
|
151
|
+
this.writePluginHashInfo(pluginSourceFileHashesInfo, pluginTempDir);
|
|
152
|
+
}
|
|
153
|
+
return shouldBuildAar;
|
|
169
154
|
}
|
|
170
155
|
cleanPluginDir(pluginTempDir) {
|
|
171
156
|
this.$fs.deleteDirectory(pluginTempDir);
|
|
@@ -180,50 +165,46 @@ class AndroidPluginBuildService {
|
|
|
180
165
|
const buildDataFile = this.getPathToPluginBuildDataFile(pluginTempDir);
|
|
181
166
|
this.$fs.writeJson(buildDataFile, fileHashesInfo);
|
|
182
167
|
}
|
|
183
|
-
shouldBuildAar(opts) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
shouldBuildAar = this.$filesHashService.hasChangesInShasums(oldHashes, opts.fileHashesInfo);
|
|
193
|
-
}
|
|
168
|
+
async shouldBuildAar(opts) {
|
|
169
|
+
let shouldBuildAar = !!opts.manifestFilePath || !!opts.androidSourceDirectories.length;
|
|
170
|
+
if (shouldBuildAar &&
|
|
171
|
+
this.$fs.exists(opts.pluginTempDir) &&
|
|
172
|
+
this.$fs.exists(path.join(opts.pluginSourceDir, `${opts.shortPluginName}.aar`))) {
|
|
173
|
+
const buildDataFile = this.getPathToPluginBuildDataFile(opts.pluginTempDir);
|
|
174
|
+
if (this.$fs.exists(buildDataFile)) {
|
|
175
|
+
const oldHashes = this.$fs.readJson(buildDataFile);
|
|
176
|
+
shouldBuildAar = this.$filesHashService.hasChangesInShasums(oldHashes, opts.fileHashesInfo);
|
|
194
177
|
}
|
|
195
|
-
|
|
196
|
-
|
|
178
|
+
}
|
|
179
|
+
return shouldBuildAar;
|
|
197
180
|
}
|
|
198
181
|
getPathToPluginBuildDataFile(pluginDir) {
|
|
199
182
|
return path.join(pluginDir, constants_1.PLUGIN_BUILD_DATA_FILENAME);
|
|
200
183
|
}
|
|
201
|
-
updateManifest(manifestFilePath, pluginTempMainSrcDir, shortPluginName) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
let androidManifestContent;
|
|
208
|
-
try {
|
|
209
|
-
androidManifestContent = this.$fs.readText(manifestFilePath);
|
|
210
|
-
}
|
|
211
|
-
catch (err) {
|
|
212
|
-
this.$errors.fail(`Failed to fs.readFileSync the manifest file located at ${manifestFilePath}. Error is: ${err.toString()}`);
|
|
213
|
-
}
|
|
214
|
-
updatedManifestContent = yield this.updateManifestContent(androidManifestContent, defaultPackageName);
|
|
215
|
-
}
|
|
216
|
-
else {
|
|
217
|
-
updatedManifestContent = this.createManifestContent(defaultPackageName);
|
|
218
|
-
}
|
|
219
|
-
const pathToTempAndroidManifest = path.join(pluginTempMainSrcDir, constants_1.MANIFEST_FILE_NAME);
|
|
184
|
+
async updateManifest(manifestFilePath, pluginTempMainSrcDir, shortPluginName) {
|
|
185
|
+
let updatedManifestContent;
|
|
186
|
+
this.$fs.ensureDirectoryExists(pluginTempMainSrcDir);
|
|
187
|
+
const defaultPackageName = "org.nativescript." + shortPluginName;
|
|
188
|
+
if (manifestFilePath) {
|
|
189
|
+
let androidManifestContent;
|
|
220
190
|
try {
|
|
221
|
-
this.$fs.
|
|
191
|
+
androidManifestContent = this.$fs.readText(manifestFilePath);
|
|
222
192
|
}
|
|
223
|
-
catch (
|
|
224
|
-
this.$errors.fail(`Failed to
|
|
193
|
+
catch (err) {
|
|
194
|
+
this.$errors.fail(`Failed to fs.readFileSync the manifest file located at ${manifestFilePath}. Error is: ${err.toString()}`);
|
|
225
195
|
}
|
|
226
|
-
|
|
196
|
+
updatedManifestContent = await this.updateManifestContent(androidManifestContent, defaultPackageName);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
updatedManifestContent = this.createManifestContent(defaultPackageName);
|
|
200
|
+
}
|
|
201
|
+
const pathToTempAndroidManifest = path.join(pluginTempMainSrcDir, constants_1.MANIFEST_FILE_NAME);
|
|
202
|
+
try {
|
|
203
|
+
this.$fs.writeFile(pathToTempAndroidManifest, updatedManifestContent);
|
|
204
|
+
}
|
|
205
|
+
catch (e) {
|
|
206
|
+
this.$errors.fail(`Failed to write the updated AndroidManifest in the new location - ${pathToTempAndroidManifest}. Error is: ${e.toString()}`);
|
|
207
|
+
}
|
|
227
208
|
}
|
|
228
209
|
copySourceSetDirectories(androidSourceSetDirectories, pluginTempMainSrcDir) {
|
|
229
210
|
for (const dir of androidSourceSetDirectories) {
|
|
@@ -245,78 +226,72 @@ class AndroidPluginBuildService {
|
|
|
245
226
|
}
|
|
246
227
|
return namespace;
|
|
247
228
|
}
|
|
248
|
-
setupGradle(pluginTempDir, platformsAndroidDirPath, projectDir, pluginName) {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (xml["manifest"]) {
|
|
276
|
-
|
|
277
|
-
packageName = xml["manifest"]["$"]["package"];
|
|
278
|
-
}
|
|
229
|
+
async setupGradle(pluginTempDir, platformsAndroidDirPath, projectDir, pluginName) {
|
|
230
|
+
const gradleTemplatePath = path.resolve(path.join(__dirname, "../../vendor/gradle-plugin"));
|
|
231
|
+
const allGradleTemplateFiles = path.join(gradleTemplatePath, "*");
|
|
232
|
+
const buildGradlePath = path.join(pluginTempDir, "build.gradle");
|
|
233
|
+
const settingsGradlePath = path.join(pluginTempDir, "settings.gradle");
|
|
234
|
+
this.$fs.copyFile(allGradleTemplateFiles, pluginTempDir);
|
|
235
|
+
const runtimeGradleVersions = await this.getRuntimeGradleVersions(projectDir);
|
|
236
|
+
let gradleVersion = runtimeGradleVersions.gradleVersion;
|
|
237
|
+
if (this.$projectData.nsConfig.android.gradleVersion) {
|
|
238
|
+
gradleVersion = this.$projectData.nsConfig.android.gradleVersion;
|
|
239
|
+
}
|
|
240
|
+
this.replaceGradleVersion(pluginTempDir, gradleVersion);
|
|
241
|
+
this.replaceGradleAndroidPluginVersion(buildGradlePath, runtimeGradleVersions.gradleAndroidPluginVersion);
|
|
242
|
+
const manifestFilePath = this.getManifest(path.join(pluginTempDir, "src", "main"));
|
|
243
|
+
let pluginNamespace = this.extractNamespaceFromManifest(manifestFilePath);
|
|
244
|
+
if (!pluginNamespace) {
|
|
245
|
+
pluginNamespace = pluginName.replace(/@/g, "").replace(/[/-]/g, ".");
|
|
246
|
+
}
|
|
247
|
+
this.replaceFileContent(buildGradlePath, "{{pluginNamespace}}", pluginNamespace);
|
|
248
|
+
this.replaceFileContent(buildGradlePath, "{{pluginName}}", pluginName);
|
|
249
|
+
this.replaceFileContent(settingsGradlePath, "{{pluginName}}", pluginName);
|
|
250
|
+
const shortPluginName = (0, helpers_1.getShortPluginName)(pluginName);
|
|
251
|
+
const manifestPath = path.join(pluginTempDir, "src", "main", "AndroidManifest.xml");
|
|
252
|
+
const manifestContent = this.$fs.readText(manifestPath);
|
|
253
|
+
let packageName = `org.nativescript.${shortPluginName}`;
|
|
254
|
+
const xml = await this.getXml(manifestContent);
|
|
255
|
+
if (xml["manifest"]) {
|
|
256
|
+
if (xml["manifest"]["$"]["package"]) {
|
|
257
|
+
packageName = xml["manifest"]["$"]["package"];
|
|
279
258
|
}
|
|
280
|
-
|
|
281
|
-
});
|
|
259
|
+
}
|
|
260
|
+
this.replaceFileContent(buildGradlePath, "{{pluginNamespace}}", packageName);
|
|
282
261
|
}
|
|
283
|
-
getRuntimeGradleVersions(projectDir) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
return runtimeGradleVersions || {};
|
|
299
|
-
});
|
|
262
|
+
async getRuntimeGradleVersions(projectDir) {
|
|
263
|
+
let runtimeGradleVersions = null;
|
|
264
|
+
if (projectDir) {
|
|
265
|
+
const projectData = this.$projectDataService.getProjectData(projectDir);
|
|
266
|
+
const platformData = this.$platformsDataService.getPlatformData(this.$devicePlatformsConstants.Android, projectData);
|
|
267
|
+
const projectRuntimeVersion = platformData.platformProjectService.getFrameworkVersion(projectData);
|
|
268
|
+
runtimeGradleVersions = await this.getGradleVersions(projectRuntimeVersion);
|
|
269
|
+
this.$logger.trace(`Got gradle versions ${JSON.stringify(runtimeGradleVersions)} from runtime v${projectRuntimeVersion}`);
|
|
270
|
+
}
|
|
271
|
+
if (!runtimeGradleVersions) {
|
|
272
|
+
const latestRuntimeVersion = await this.getLatestRuntimeVersion();
|
|
273
|
+
runtimeGradleVersions = await this.getGradleVersions(latestRuntimeVersion);
|
|
274
|
+
this.$logger.trace(`Got gradle versions ${JSON.stringify(runtimeGradleVersions)} from the latest runtime v${latestRuntimeVersion}`);
|
|
275
|
+
}
|
|
276
|
+
return runtimeGradleVersions || {};
|
|
300
277
|
}
|
|
301
|
-
getLatestRuntimeVersion() {
|
|
278
|
+
async getLatestRuntimeVersion() {
|
|
302
279
|
var _a, _b;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
return runtimeVersion;
|
|
319
|
-
});
|
|
280
|
+
let runtimeVersion = null;
|
|
281
|
+
const packageName = ((_a = this.$projectData.nsConfig.android) === null || _a === void 0 ? void 0 : _a.runtimePackageName) || constants_1.SCOPED_ANDROID_RUNTIME_NAME;
|
|
282
|
+
try {
|
|
283
|
+
let result = await this.$packageManager.view(packageName, {
|
|
284
|
+
"dist-tags": true,
|
|
285
|
+
});
|
|
286
|
+
result = (_b = result === null || result === void 0 ? void 0 : result["dist-tags"]) !== null && _b !== void 0 ? _b : result;
|
|
287
|
+
runtimeVersion = result.latest;
|
|
288
|
+
}
|
|
289
|
+
catch (err) {
|
|
290
|
+
this.$logger.trace(`Error while getting latest android runtime version from view command: ${err}`);
|
|
291
|
+
const registryData = await this.$packageManager.getRegistryPackageData(packageName);
|
|
292
|
+
runtimeVersion = registryData["dist-tags"].latest;
|
|
293
|
+
}
|
|
294
|
+
return runtimeVersion;
|
|
320
295
|
}
|
|
321
296
|
getLocalGradleVersions() {
|
|
322
297
|
var _a;
|
|
@@ -347,37 +322,35 @@ class AndroidPluginBuildService {
|
|
|
347
322
|
}
|
|
348
323
|
return null;
|
|
349
324
|
}
|
|
350
|
-
getGradleVersions(runtimeVersion) {
|
|
325
|
+
async getGradleVersions(runtimeVersion) {
|
|
351
326
|
var _a, _b, _c;
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
return result;
|
|
380
|
-
});
|
|
327
|
+
let runtimeGradleVersions = null;
|
|
328
|
+
const localVersionInfo = this.getLocalGradleVersions();
|
|
329
|
+
if (localVersionInfo) {
|
|
330
|
+
return localVersionInfo;
|
|
331
|
+
}
|
|
332
|
+
const packageName = ((_a = this.$projectData.nsConfig.android) === null || _a === void 0 ? void 0 : _a.runtimePackageName) || constants_1.SCOPED_ANDROID_RUNTIME_NAME;
|
|
333
|
+
try {
|
|
334
|
+
let output = await this.$packageManager.view(`${packageName}@${runtimeVersion}`, { version_info: true });
|
|
335
|
+
output = (_b = output === null || output === void 0 ? void 0 : output["version_info"]) !== null && _b !== void 0 ? _b : output;
|
|
336
|
+
if (!output) {
|
|
337
|
+
output = await this.$packageManager.view(`${packageName}@${runtimeVersion}`, { gradle: true });
|
|
338
|
+
output = (_c = output === null || output === void 0 ? void 0 : output["gradle"]) !== null && _c !== void 0 ? _c : output;
|
|
339
|
+
const { version, android } = output;
|
|
340
|
+
output = {
|
|
341
|
+
gradle: version,
|
|
342
|
+
gradleAndroid: android,
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
runtimeGradleVersions = { versions: output };
|
|
346
|
+
}
|
|
347
|
+
catch (err) {
|
|
348
|
+
this.$logger.trace(`Error while getting gradle data for android runtime from view command: ${err}`);
|
|
349
|
+
const registryData = await this.$packageManager.getRegistryPackageData(packageName);
|
|
350
|
+
runtimeGradleVersions = registryData.versions[runtimeVersion];
|
|
351
|
+
}
|
|
352
|
+
const result = this.getGradleVersionsCore(runtimeGradleVersions);
|
|
353
|
+
return result;
|
|
381
354
|
}
|
|
382
355
|
getGradleVersionsCore(packageData) {
|
|
383
356
|
const packageJsonGradle = packageData && packageData.versions;
|
|
@@ -453,55 +426,56 @@ class AndroidPluginBuildService {
|
|
|
453
426
|
}
|
|
454
427
|
return false;
|
|
455
428
|
}
|
|
456
|
-
buildPlugin(pluginBuildSettings) {
|
|
429
|
+
async buildPlugin(pluginBuildSettings) {
|
|
457
430
|
var _a;
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
431
|
+
const gradlew = (_a = pluginBuildSettings.gradlePath) !== null && _a !== void 0 ? _a : (this.$hostInfo.isWindows ? "gradlew.bat" : "./gradlew");
|
|
432
|
+
const toolsInfo = this.$androidToolsInfo.getToolsInfo({
|
|
433
|
+
projectDir: this.$projectData.projectDir,
|
|
434
|
+
});
|
|
435
|
+
const localArgs = [
|
|
436
|
+
"-p",
|
|
437
|
+
pluginBuildSettings.pluginDir,
|
|
438
|
+
"assembleRelease",
|
|
439
|
+
`-PtempBuild=true`,
|
|
440
|
+
`-PcompileSdk=${toolsInfo.compileSdkVersion}`,
|
|
441
|
+
`-PbuildToolsVersion=${toolsInfo.buildToolsVersion}`,
|
|
442
|
+
`-PprojectRoot=${this.$projectData.projectDir}`,
|
|
443
|
+
`-DprojectRoot=${this.$projectData.projectDir}`,
|
|
444
|
+
`-PappPath=${this.$projectData.getAppDirectoryPath()}`,
|
|
445
|
+
`-PappBuildPath=${this.$projectData.getBuildRelativeDirectoryPath()}`,
|
|
446
|
+
`-DappBuildPath=${this.$projectData.getBuildRelativeDirectoryPath()}`,
|
|
447
|
+
`-PappResourcesPath=${this.$projectData.getAppResourcesDirectoryPath()}`,
|
|
448
|
+
];
|
|
449
|
+
if (pluginBuildSettings.gradleArgs) {
|
|
450
|
+
const additionalArgs = [];
|
|
451
|
+
pluginBuildSettings.gradleArgs.forEach((arg) => {
|
|
452
|
+
additionalArgs.push(...arg.split(" -P").map((a, i) => (i === 0 ? a : `-P${a}`)));
|
|
462
453
|
});
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
if (pluginBuildSettings.gradleArgs) {
|
|
478
|
-
const additionalArgs = [];
|
|
479
|
-
pluginBuildSettings.gradleArgs.forEach((arg) => {
|
|
480
|
-
additionalArgs.push(...arg.split(" -P").map((a, i) => (i === 0 ? a : `-P${a}`)));
|
|
481
|
-
});
|
|
482
|
-
localArgs.push(...additionalArgs);
|
|
483
|
-
}
|
|
484
|
-
if (this.$logger.getLevel() === "INFO") {
|
|
485
|
-
localArgs.push("--quiet");
|
|
486
|
-
}
|
|
487
|
-
const opts = {
|
|
488
|
-
cwd: pluginBuildSettings.pluginDir,
|
|
489
|
-
stdio: "inherit",
|
|
490
|
-
shell: this.$hostInfo.isWindows,
|
|
454
|
+
localArgs.push(...additionalArgs);
|
|
455
|
+
}
|
|
456
|
+
if (this.$logger.getLevel() === "INFO") {
|
|
457
|
+
localArgs.push("--quiet");
|
|
458
|
+
}
|
|
459
|
+
const opts = {
|
|
460
|
+
cwd: pluginBuildSettings.pluginDir,
|
|
461
|
+
stdio: "inherit",
|
|
462
|
+
shell: this.$hostInfo.isWindows,
|
|
463
|
+
};
|
|
464
|
+
if (this.$options.hostProjectPath) {
|
|
465
|
+
opts.env = {
|
|
466
|
+
USER_PROJECT_PLATFORMS_ANDROID: path.resolve((0, process_1.cwd)(), this.$options.hostProjectPath),
|
|
467
|
+
...process.env,
|
|
491
468
|
};
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
this.$errors.fail(`Failed to build plugin ${pluginBuildSettings.pluginName} : \n${err}`);
|
|
503
|
-
}
|
|
504
|
-
});
|
|
469
|
+
}
|
|
470
|
+
try {
|
|
471
|
+
const sanitizedArgs = this.$hostInfo.isWindows
|
|
472
|
+
? localArgs.map((arg) => (0, helpers_1.quoteString)(arg))
|
|
473
|
+
: localArgs;
|
|
474
|
+
await this.$childProcess.spawnFromEvent(gradlew, sanitizedArgs, "close", opts);
|
|
475
|
+
}
|
|
476
|
+
catch (err) {
|
|
477
|
+
this.$errors.fail(`Failed to build plugin ${pluginBuildSettings.pluginName} : \n${err}`);
|
|
478
|
+
}
|
|
505
479
|
}
|
|
506
480
|
validateOptions(options) {
|
|
507
481
|
if (!options) {
|
|
@@ -527,6 +501,7 @@ class AndroidPluginBuildService {
|
|
|
527
501
|
}
|
|
528
502
|
}
|
|
529
503
|
}
|
|
504
|
+
exports.AndroidPluginBuildService = AndroidPluginBuildService;
|
|
530
505
|
AndroidPluginBuildService.MANIFEST_ROOT = {
|
|
531
506
|
$: {
|
|
532
507
|
"xmlns:android": "http://schemas.android.com/apk/res/android",
|
|
@@ -535,5 +510,4 @@ AndroidPluginBuildService.MANIFEST_ROOT = {
|
|
|
535
510
|
__decorate([
|
|
536
511
|
(0, helpers_1.hook)("buildAndroidPlugin")
|
|
537
512
|
], AndroidPluginBuildService.prototype, "buildPlugin", null);
|
|
538
|
-
exports.AndroidPluginBuildService = AndroidPluginBuildService;
|
|
539
513
|
yok_1.injector.register("androidPluginBuildService", AndroidPluginBuildService);
|