@akylas/nativescript-cli 8.8.2 → 8.8.4
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 +3 -3
- 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 +56 -54
- 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.AndroidProjectService = void 0;
|
|
19
10
|
const path = require("path");
|
|
@@ -146,10 +137,8 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
146
137
|
const currentPlatformData = this.$projectDataService.getRuntimePackage(projectData.projectDir, platformData.platformNameLowerCase);
|
|
147
138
|
return currentPlatformData && currentPlatformData[constants.VERSION_STRING];
|
|
148
139
|
}
|
|
149
|
-
validateOptions() {
|
|
150
|
-
return
|
|
151
|
-
return true;
|
|
152
|
-
});
|
|
140
|
+
async validateOptions() {
|
|
141
|
+
return true;
|
|
153
142
|
}
|
|
154
143
|
getAppResourcesDestinationDirectoryPath(projectData) {
|
|
155
144
|
const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
|
|
@@ -160,45 +149,41 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
160
149
|
return this.getLegacyAppResourcesDestinationDirPath(projectData);
|
|
161
150
|
}
|
|
162
151
|
}
|
|
163
|
-
validate(projectData, options, notConfiguredEnvOptions) {
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
notConfiguredEnvOptions,
|
|
172
|
-
});
|
|
173
|
-
this.$androidToolsInfo.validateInfo({
|
|
174
|
-
showWarningsAsErrors: true,
|
|
175
|
-
projectDir: projectData.projectDir,
|
|
176
|
-
validateTargetSdk: true,
|
|
177
|
-
});
|
|
178
|
-
return {
|
|
179
|
-
checkEnvironmentRequirementsOutput,
|
|
180
|
-
};
|
|
152
|
+
async validate(projectData, options, notConfiguredEnvOptions) {
|
|
153
|
+
this.validatePackageName(projectData.projectIdentifiers.android);
|
|
154
|
+
this.validateProjectName(projectData.projectName);
|
|
155
|
+
const checkEnvironmentRequirementsOutput = await this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
|
|
156
|
+
platform: this.getPlatformData(projectData).normalizedPlatformName,
|
|
157
|
+
projectDir: projectData.projectDir,
|
|
158
|
+
options,
|
|
159
|
+
notConfiguredEnvOptions,
|
|
181
160
|
});
|
|
161
|
+
this.$androidToolsInfo.validateInfo({
|
|
162
|
+
showWarningsAsErrors: true,
|
|
163
|
+
projectDir: projectData.projectDir,
|
|
164
|
+
validateTargetSdk: true,
|
|
165
|
+
});
|
|
166
|
+
return {
|
|
167
|
+
checkEnvironmentRequirementsOutput,
|
|
168
|
+
};
|
|
182
169
|
}
|
|
183
|
-
createProject(frameworkDir, frameworkVersion, projectData) {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
projectDir: projectData.projectDir,
|
|
191
|
-
});
|
|
192
|
-
const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
|
|
193
|
-
this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
|
|
194
|
-
this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
|
|
195
|
-
if (this.$options.overrideRuntimeGradleFiles !== false) {
|
|
196
|
-
const gradleTemplatePath = path.resolve(path.join(__dirname, "../../vendor/gradle-app"));
|
|
197
|
-
const allGradleTemplateFiles = path.join(gradleTemplatePath, "*");
|
|
198
|
-
this.$fs.copyFile(allGradleTemplateFiles, path.join(this.getPlatformData(projectData).projectRoot));
|
|
199
|
-
}
|
|
200
|
-
this.cleanResValues(targetSdkVersion, projectData);
|
|
170
|
+
async createProject(frameworkDir, frameworkVersion, projectData) {
|
|
171
|
+
if (semver.lt(frameworkVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
|
|
172
|
+
this.$errors.fail(`The NativeScript CLI requires Android runtime ${AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE} or later to work properly.`);
|
|
173
|
+
}
|
|
174
|
+
this.$fs.ensureDirectoryExists(this.getPlatformData(projectData).projectRoot);
|
|
175
|
+
const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
|
|
176
|
+
projectDir: projectData.projectDir,
|
|
201
177
|
});
|
|
178
|
+
const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
|
|
179
|
+
this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
|
|
180
|
+
this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
|
|
181
|
+
if (this.$options.overrideRuntimeGradleFiles !== false) {
|
|
182
|
+
const gradleTemplatePath = path.resolve(path.join(__dirname, "../../vendor/gradle-app"));
|
|
183
|
+
const allGradleTemplateFiles = path.join(gradleTemplatePath, "*");
|
|
184
|
+
this.$fs.copyFile(allGradleTemplateFiles, path.join(this.getPlatformData(projectData).projectRoot));
|
|
185
|
+
}
|
|
186
|
+
this.cleanResValues(targetSdkVersion, projectData);
|
|
202
187
|
}
|
|
203
188
|
getResDestinationDir(projectData) {
|
|
204
189
|
const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
|
|
@@ -228,39 +213,37 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
228
213
|
this.$logger.trace(directoriesToClean);
|
|
229
214
|
_.map(directoriesToClean, (dir) => this.$fs.deleteDirectory(dir));
|
|
230
215
|
}
|
|
231
|
-
interpolateData(projectData) {
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
catch (e) {
|
|
261
|
-
this.$logger.trace(`Templates updated and no need for replace in app.gradle.`);
|
|
216
|
+
async interpolateData(projectData) {
|
|
217
|
+
this.interpolateConfigurationFile(projectData);
|
|
218
|
+
const appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
|
|
219
|
+
let stringsFilePath;
|
|
220
|
+
const appResourcesDestinationDirectoryPath = this.getAppResourcesDestinationDirectoryPath(projectData);
|
|
221
|
+
if (this.$androidResourcesMigrationService.hasMigrated(appResourcesDirectoryPath)) {
|
|
222
|
+
stringsFilePath = path.join(appResourcesDestinationDirectoryPath, constants.MAIN_DIR, constants.RESOURCES_DIR, "values", "strings.xml");
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
stringsFilePath = path.join(appResourcesDestinationDirectoryPath, "values", "strings.xml");
|
|
226
|
+
}
|
|
227
|
+
shell.sed("-i", /__NAME__/, projectData.projectName, stringsFilePath);
|
|
228
|
+
shell.sed("-i", /__TITLE_ACTIVITY__/, projectData.projectName, stringsFilePath);
|
|
229
|
+
const gradleSettingsFilePath = path.join(this.getPlatformData(projectData).projectRoot, "settings.gradle");
|
|
230
|
+
const relativePath = path.relative(this.getPlatformData(projectData).projectRoot, projectData.projectDir);
|
|
231
|
+
shell.sed("-i", /def USER_PROJECT_ROOT = \"\$rootDir\/..\/..\/\"/, `def USER_PROJECT_ROOT = "$rootDir/${relativePath}"`, gradleSettingsFilePath);
|
|
232
|
+
shell.sed("-i", /__PROJECT_NAME__/, this.getProjectNameFromId(projectData), gradleSettingsFilePath);
|
|
233
|
+
const gradleVersion = projectData.nsConfig.android.gradleVersion;
|
|
234
|
+
if (gradleVersion) {
|
|
235
|
+
const gradleWrapperFilePath = path.join(this.getPlatformData(projectData).projectRoot, "gradle", "wrapper", "gradle-wrapper.properties");
|
|
236
|
+
shell.sed("-i", /gradle-([0-9.]+)-bin.zip/, `gradle-${gradleVersion}-bin.zip`, gradleWrapperFilePath);
|
|
237
|
+
}
|
|
238
|
+
try {
|
|
239
|
+
const appGradleContent = this.$fs.readText(projectData.appGradlePath);
|
|
240
|
+
if (appGradleContent.indexOf(constants.PACKAGE_PLACEHOLDER_NAME) !== -1) {
|
|
241
|
+
shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
|
|
262
242
|
}
|
|
263
|
-
}
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
this.$logger.trace(`Templates updated and no need for replace in app.gradle.`);
|
|
246
|
+
}
|
|
264
247
|
}
|
|
265
248
|
interpolateConfigurationFile(projectData) {
|
|
266
249
|
const manifestPath = this.getPlatformData(projectData).configurationFilePath;
|
|
@@ -284,30 +267,24 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
284
267
|
afterCreateProject(projectRoot) {
|
|
285
268
|
return null;
|
|
286
269
|
}
|
|
287
|
-
updatePlatform(currentVersion, newVersion, canUpdate, projectData, addPlatform, removePlatforms) {
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
return true;
|
|
296
|
-
});
|
|
270
|
+
async updatePlatform(currentVersion, newVersion, canUpdate, projectData, addPlatform, removePlatforms) {
|
|
271
|
+
if (semver.eq(newVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
|
|
272
|
+
const platformLowercase = this.getPlatformData(projectData).normalizedPlatformName.toLowerCase();
|
|
273
|
+
await removePlatforms([platformLowercase.split("@")[0]]);
|
|
274
|
+
await addPlatform(platformLowercase);
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
return true;
|
|
297
278
|
}
|
|
298
|
-
buildProject(projectRoot, projectData, buildData) {
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
yield this.trackKotlinUsage(projectRoot);
|
|
305
|
-
});
|
|
279
|
+
async buildProject(projectRoot, projectData, buildData) {
|
|
280
|
+
const platformData = this.getPlatformData(projectData);
|
|
281
|
+
await this.$gradleBuildService.buildProject(platformData.projectRoot, buildData);
|
|
282
|
+
const outputPath = platformData.getBuildOutputPath(buildData);
|
|
283
|
+
await this.$filesHashService.saveHashesForProject(this._platformData, outputPath);
|
|
284
|
+
await this.trackKotlinUsage(projectRoot);
|
|
306
285
|
}
|
|
307
|
-
buildForDeploy(projectRoot, projectData, buildData) {
|
|
308
|
-
return
|
|
309
|
-
return this.buildProject(projectRoot, projectData, buildData);
|
|
310
|
-
});
|
|
286
|
+
async buildForDeploy(projectRoot, projectData, buildData) {
|
|
287
|
+
return this.buildProject(projectRoot, projectData, buildData);
|
|
311
288
|
}
|
|
312
289
|
isPlatformPrepared(projectRoot, projectData) {
|
|
313
290
|
return this.$fs.exists(path.join(this.getPlatformData(projectData).appDestinationDirectoryPath, this.$options.hostProjectModuleName));
|
|
@@ -315,9 +292,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
315
292
|
getFrameworkFilesExtensions() {
|
|
316
293
|
return [".jar", ".dat"];
|
|
317
294
|
}
|
|
318
|
-
prepareProject() {
|
|
319
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
320
|
-
});
|
|
295
|
+
async prepareProject() {
|
|
321
296
|
}
|
|
322
297
|
ensureConfigurationFileInAppResources(projectData) {
|
|
323
298
|
const appResourcesDirectoryPath = projectData.appResourcesDirectoryPath;
|
|
@@ -369,41 +344,40 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
369
344
|
const compileSdkVersion = androidToolsInfo && androidToolsInfo.compileSdkVersion;
|
|
370
345
|
this.cleanResValues(compileSdkVersion, projectData);
|
|
371
346
|
}
|
|
372
|
-
preparePluginNativeCode(pluginData, projectData) {
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
347
|
+
async preparePluginNativeCode(pluginData, projectData) {
|
|
348
|
+
const pluginPlatformsFolderPath = this.getPluginPlatformsFolderPath(pluginData, AndroidProjectService.ANDROID_PLATFORM_NAME);
|
|
349
|
+
if (this.$fs.exists(pluginPlatformsFolderPath)) {
|
|
350
|
+
const gradleArgs = (projectData.nsConfig.android.gradleArgs || []).concat(this.$options.gradleArgs || []);
|
|
351
|
+
const pluginOptions = (projectData.nsConfig.android.plugins || {})[pluginData.name] || {};
|
|
352
|
+
const options = {
|
|
353
|
+
gradlePath: this.$options.gradlePath,
|
|
354
|
+
gradleArgs,
|
|
355
|
+
projectDir: projectData.projectDir,
|
|
356
|
+
pluginName: pluginData.name,
|
|
357
|
+
platformsAndroidDirPath: pluginPlatformsFolderPath,
|
|
358
|
+
aarOutputDir: pluginPlatformsFolderPath,
|
|
359
|
+
tempPluginDirPath: path.join(projectData.platformsDir, "tempPlugin"),
|
|
360
|
+
...pluginOptions
|
|
361
|
+
};
|
|
362
|
+
if (await this.$androidPluginBuildService.buildAar(options)) {
|
|
363
|
+
this.$logger.info(`Built aar for ${options.pluginName}`);
|
|
383
364
|
}
|
|
384
|
-
|
|
365
|
+
this.$androidPluginBuildService.migrateIncludeGradle(options);
|
|
366
|
+
}
|
|
385
367
|
}
|
|
386
|
-
processConfigurationFilesFromAppResources() {
|
|
387
|
-
return
|
|
388
|
-
return;
|
|
389
|
-
});
|
|
368
|
+
async processConfigurationFilesFromAppResources() {
|
|
369
|
+
return;
|
|
390
370
|
}
|
|
391
|
-
removePluginNativeCode(pluginData, projectData) {
|
|
392
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
393
|
-
});
|
|
371
|
+
async removePluginNativeCode(pluginData, projectData) {
|
|
394
372
|
}
|
|
395
|
-
beforePrepareAllPlugins(projectData, dependencies) {
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
}
|
|
401
|
-
});
|
|
373
|
+
async beforePrepareAllPlugins(projectData, dependencies) {
|
|
374
|
+
if (dependencies) {
|
|
375
|
+
dependencies = this.filterUniqueDependencies(dependencies);
|
|
376
|
+
return this.provideDependenciesJson(projectData, dependencies);
|
|
377
|
+
}
|
|
402
378
|
}
|
|
403
|
-
handleNativeDependenciesChange(projectData, opts) {
|
|
404
|
-
return
|
|
405
|
-
return;
|
|
406
|
-
});
|
|
379
|
+
async handleNativeDependenciesChange(projectData, opts) {
|
|
380
|
+
return;
|
|
407
381
|
}
|
|
408
382
|
filterUniqueDependencies(dependencies) {
|
|
409
383
|
const depsDictionary = dependencies.reduce((dict, dep) => {
|
|
@@ -443,58 +417,50 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
443
417
|
(nativescript.android ||
|
|
444
418
|
(nativescript.platforms && nativescript.platforms.android)));
|
|
445
419
|
}
|
|
446
|
-
stopServices(projectRoot) {
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
stdio: "pipe",
|
|
452
|
-
});
|
|
453
|
-
return result;
|
|
420
|
+
async stopServices(projectRoot) {
|
|
421
|
+
const result = await this.$gradleCommandService.executeCommand(["--stop", "--quiet"], {
|
|
422
|
+
cwd: projectRoot,
|
|
423
|
+
message: "Gradle stop services...",
|
|
424
|
+
stdio: "pipe",
|
|
454
425
|
});
|
|
426
|
+
return result;
|
|
455
427
|
}
|
|
456
|
-
cleanProject(projectRoot) {
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
release: false,
|
|
460
|
-
});
|
|
428
|
+
async cleanProject(projectRoot) {
|
|
429
|
+
await this.$gradleBuildService.cleanProject(projectRoot, {
|
|
430
|
+
release: false,
|
|
461
431
|
});
|
|
462
432
|
}
|
|
463
|
-
cleanDeviceTempFolder(deviceIdentifier, projectData) {
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
identifier: deviceIdentifier,
|
|
467
|
-
});
|
|
468
|
-
const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
|
|
469
|
-
yield adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
|
|
433
|
+
async cleanDeviceTempFolder(deviceIdentifier, projectData) {
|
|
434
|
+
const adb = this.$injector.resolve(device_android_debug_bridge_1.DeviceAndroidDebugBridge, {
|
|
435
|
+
identifier: deviceIdentifier,
|
|
470
436
|
});
|
|
437
|
+
const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
|
|
438
|
+
await adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
|
|
471
439
|
}
|
|
472
|
-
checkForChanges(changesInfo, prepareData, projectData) {
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
return;
|
|
483
|
-
}
|
|
484
|
-
const device = this.$devicesService
|
|
485
|
-
.getDevicesForPlatform(deviceDescriptor.buildData.platform)
|
|
486
|
-
.filter((d) => d.deviceInfo.identifier === deviceDescriptor.identifier)[0];
|
|
487
|
-
const abis = device.deviceInfo.abis.filter((a) => !!a && a.length)[0];
|
|
488
|
-
const directoryContent = this.$fs.readDirectory(apkOutputPath);
|
|
489
|
-
const regexp = new RegExp(`${abis}.*\.apk`);
|
|
490
|
-
const files = _.filter(directoryContent, (entry) => {
|
|
491
|
-
return regexp.test(entry);
|
|
492
|
-
});
|
|
493
|
-
if (files.length === 0) {
|
|
494
|
-
changesInfo.nativeChanged = true;
|
|
495
|
-
}
|
|
440
|
+
async checkForChanges(changesInfo, prepareData, projectData) {
|
|
441
|
+
const deviceDescriptors = this.$liveSyncProcessDataService.getDeviceDescriptors(projectData.projectDir);
|
|
442
|
+
const platformData = this.getPlatformData(projectData);
|
|
443
|
+
deviceDescriptors.forEach((deviceDescriptor) => {
|
|
444
|
+
const buildData = deviceDescriptor.buildData;
|
|
445
|
+
if (buildData.buildFilterDevicesArch) {
|
|
446
|
+
const outputPath = platformData.getBuildOutputPath(deviceDescriptor.buildData);
|
|
447
|
+
const apkOutputPath = path.join(outputPath, prepareData.release ? "release" : "debug");
|
|
448
|
+
if (!this.$fs.exists(apkOutputPath)) {
|
|
449
|
+
return;
|
|
496
450
|
}
|
|
497
|
-
|
|
451
|
+
const device = this.$devicesService
|
|
452
|
+
.getDevicesForPlatform(deviceDescriptor.buildData.platform)
|
|
453
|
+
.filter((d) => d.deviceInfo.identifier === deviceDescriptor.identifier)[0];
|
|
454
|
+
const abis = device.deviceInfo.abis.filter((a) => !!a && a.length)[0];
|
|
455
|
+
const directoryContent = this.$fs.readDirectory(apkOutputPath);
|
|
456
|
+
const regexp = new RegExp(`${abis}.*\.apk`);
|
|
457
|
+
const files = _.filter(directoryContent, (entry) => {
|
|
458
|
+
return regexp.test(entry);
|
|
459
|
+
});
|
|
460
|
+
if (files.length === 0) {
|
|
461
|
+
changesInfo.nativeChanged = true;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
498
464
|
});
|
|
499
465
|
}
|
|
500
466
|
getDeploymentTarget(projectData) {
|
|
@@ -552,24 +518,22 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
552
518
|
});
|
|
553
519
|
}
|
|
554
520
|
}
|
|
555
|
-
trackKotlinUsage(projectRoot) {
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
});
|
|
567
|
-
}
|
|
521
|
+
async trackKotlinUsage(projectRoot) {
|
|
522
|
+
const buildStatistics = this.tryGetAndroidBuildStatistics(projectRoot);
|
|
523
|
+
try {
|
|
524
|
+
if (buildStatistics && buildStatistics.kotlinUsage) {
|
|
525
|
+
const analyticsDelimiter = constants.AnalyticsEventLabelDelimiter;
|
|
526
|
+
const hasUseKotlinPropertyInAppData = `hasUseKotlinPropertyInApp${analyticsDelimiter}${buildStatistics.kotlinUsage.hasUseKotlinPropertyInApp}`;
|
|
527
|
+
const hasKotlinRuntimeClassesData = `hasKotlinRuntimeClasses${analyticsDelimiter}${buildStatistics.kotlinUsage.hasKotlinRuntimeClasses}`;
|
|
528
|
+
await this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
529
|
+
action: "Using Kotlin",
|
|
530
|
+
additionalData: `${hasUseKotlinPropertyInAppData}${analyticsDelimiter}${hasKotlinRuntimeClassesData}`,
|
|
531
|
+
});
|
|
568
532
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
}
|
|
572
|
-
}
|
|
533
|
+
}
|
|
534
|
+
catch (e) {
|
|
535
|
+
this.$logger.trace(`Failed to track android build statistics. Error is: ${e.message}`);
|
|
536
|
+
}
|
|
573
537
|
}
|
|
574
538
|
tryGetAndroidBuildStatistics(projectRoot) {
|
|
575
539
|
const staticsFilePath = path.join(projectRoot, constants.ANDROID_ANALYTICS_DATA_DIR, constants.ANDROID_ANALYTICS_DATA_FILE);
|
|
@@ -585,6 +549,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
585
549
|
return buildStatistics;
|
|
586
550
|
}
|
|
587
551
|
}
|
|
552
|
+
exports.AndroidProjectService = AndroidProjectService;
|
|
588
553
|
AndroidProjectService.VALUES_DIRNAME = "values";
|
|
589
554
|
AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService.VALUES_DIRNAME + "-v";
|
|
590
555
|
AndroidProjectService.ANDROID_PLATFORM_NAME = "android";
|
|
@@ -593,5 +558,4 @@ __decorate([
|
|
|
593
558
|
(0, decorators_1.performanceLog)(),
|
|
594
559
|
(0, helpers_1.hook)("buildAndroid")
|
|
595
560
|
], AndroidProjectService.prototype, "buildProject", null);
|
|
596
|
-
exports.AndroidProjectService = AndroidProjectService;
|
|
597
561
|
yok_1.injector.register("androidProjectService", AndroidProjectService);
|
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.AndroidResourcesMigrationService = void 0;
|
|
13
4
|
const path = require("path");
|
|
@@ -28,65 +19,61 @@ class AndroidResourcesMigrationService {
|
|
|
28
19
|
hasMigrated(appResourcesDir) {
|
|
29
20
|
return this.$fs.exists(path.join(appResourcesDir, AndroidResourcesMigrationService.ANDROID_DIR, constants.SRC_DIR, constants.MAIN_DIR));
|
|
30
21
|
}
|
|
31
|
-
migrate(appResourcesDir, backupLocation) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
22
|
+
async migrate(appResourcesDir, backupLocation) {
|
|
23
|
+
const originalAppResources = path.join(appResourcesDir, AndroidResourcesMigrationService.ANDROID_DIR);
|
|
24
|
+
const appResourcesDestination = path.join(appResourcesDir, AndroidResourcesMigrationService.ANDROID_DIR_TEMP);
|
|
25
|
+
const appResourcesBackup = path.join(backupLocation || appResourcesDir, AndroidResourcesMigrationService.ANDROID_DIR_OLD);
|
|
26
|
+
try {
|
|
27
|
+
await this.tryMigrate(originalAppResources, appResourcesDestination, appResourcesBackup);
|
|
28
|
+
this.$logger.info(`Successfully updated your project's application resources '/Android' directory structure.${os_1.EOL}The previous version of your Android application resources has been renamed to '/${AndroidResourcesMigrationService.ANDROID_DIR_OLD}'`);
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
36
31
|
try {
|
|
37
|
-
|
|
38
|
-
this.$logger.info(
|
|
32
|
+
this.recover(originalAppResources, appResourcesDestination, appResourcesBackup);
|
|
33
|
+
this.$logger.info("Failed to update resources. They should be in their initial state.");
|
|
39
34
|
}
|
|
40
|
-
catch (
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
this.$logger.info("Failed to update resources. They should be in their initial state.");
|
|
44
|
-
}
|
|
45
|
-
catch (err) {
|
|
46
|
-
this.$logger.trace(err);
|
|
47
|
-
this.$logger.info(`Failed to update resources.${os_1.EOL} Backup of original content is inside "${appResourcesBackup}".${os_1.EOL}If "${originalAppResources} is missing copy from backup folder."`);
|
|
48
|
-
}
|
|
49
|
-
finally {
|
|
50
|
-
this.$errors.fail(error.message);
|
|
51
|
-
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
this.$logger.trace(err);
|
|
37
|
+
this.$logger.info(`Failed to update resources.${os_1.EOL} Backup of original content is inside "${appResourcesBackup}".${os_1.EOL}If "${originalAppResources} is missing copy from backup folder."`);
|
|
52
38
|
}
|
|
53
|
-
|
|
39
|
+
finally {
|
|
40
|
+
this.$errors.fail(error.message);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
54
43
|
}
|
|
55
|
-
tryMigrate(originalAppResources, appResourcesDestination, appResourcesBackup) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
});
|
|
86
|
-
this.$fs.copyFile(path.join(originalAppResources, constants.MANIFEST_FILE_NAME), path.join(appMainSourceSet, constants.MANIFEST_FILE_NAME));
|
|
87
|
-
this.$fs.rename(originalAppResources, appResourcesBackup);
|
|
88
|
-
this.$fs.rename(appResourcesDestination, originalAppResources);
|
|
44
|
+
async tryMigrate(originalAppResources, appResourcesDestination, appResourcesBackup) {
|
|
45
|
+
const appMainSourceSet = path.join(appResourcesDestination, constants.SRC_DIR, constants.MAIN_DIR);
|
|
46
|
+
const appResourcesMainSourceSetResourcesDestination = path.join(appMainSourceSet, constants.RESOURCES_DIR);
|
|
47
|
+
this.$fs.ensureDirectoryExists(appResourcesDestination);
|
|
48
|
+
this.$fs.ensureDirectoryExists(appMainSourceSet);
|
|
49
|
+
this.$fs.ensureDirectoryExists(appResourcesMainSourceSetResourcesDestination);
|
|
50
|
+
this.$fs.ensureDirectoryExists(path.join(appMainSourceSet, "java"));
|
|
51
|
+
this.$fs.ensureDirectoryExists(path.join(appMainSourceSet, constants.ASSETS_DIR));
|
|
52
|
+
const isDirectory = (source) => this.$fs.getLsStats(source).isDirectory();
|
|
53
|
+
const getAllFiles = (source) => this.$fs.readDirectory(source).map((name) => path.join(source, name));
|
|
54
|
+
const getDirectories = (files) => files.filter(isDirectory);
|
|
55
|
+
const getFiles = (files) => files.filter((file) => !isDirectory(file));
|
|
56
|
+
this.$fs.copyFile(path.join(originalAppResources, constants.APP_GRADLE_FILE_NAME), path.join(appResourcesDestination, constants.APP_GRADLE_FILE_NAME));
|
|
57
|
+
const appResourcesFiles = getAllFiles(originalAppResources);
|
|
58
|
+
const resourceDirectories = getDirectories(appResourcesFiles);
|
|
59
|
+
const resourceFiles = getFiles(appResourcesFiles);
|
|
60
|
+
resourceDirectories.forEach((dir) => {
|
|
61
|
+
if (path.basename(dir) !== "libs") {
|
|
62
|
+
this.$fs.copyFile(dir, appResourcesMainSourceSetResourcesDestination);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this.$fs.copyFile(dir, path.join(appResourcesDestination));
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
resourceFiles.forEach((file) => {
|
|
69
|
+
const fileName = path.basename(file);
|
|
70
|
+
if (fileName !== constants.MANIFEST_FILE_NAME) {
|
|
71
|
+
this.$fs.copyFile(file, path.join(appResourcesDestination, fileName));
|
|
72
|
+
}
|
|
89
73
|
});
|
|
74
|
+
this.$fs.copyFile(path.join(originalAppResources, constants.MANIFEST_FILE_NAME), path.join(appMainSourceSet, constants.MANIFEST_FILE_NAME));
|
|
75
|
+
this.$fs.rename(originalAppResources, appResourcesBackup);
|
|
76
|
+
this.$fs.rename(appResourcesDestination, originalAppResources);
|
|
90
77
|
}
|
|
91
78
|
recover(originalAppResources, appResourcesDestination, appResourcesBackup) {
|
|
92
79
|
if (!this.$fs.exists(originalAppResources)) {
|
|
@@ -97,8 +84,8 @@ class AndroidResourcesMigrationService {
|
|
|
97
84
|
}
|
|
98
85
|
}
|
|
99
86
|
}
|
|
87
|
+
exports.AndroidResourcesMigrationService = AndroidResourcesMigrationService;
|
|
100
88
|
AndroidResourcesMigrationService.ANDROID_DIR = "Android";
|
|
101
89
|
AndroidResourcesMigrationService.ANDROID_DIR_TEMP = "Android-Updated";
|
|
102
90
|
AndroidResourcesMigrationService.ANDROID_DIR_OLD = "Android-Pre-v4";
|
|
103
|
-
exports.AndroidResourcesMigrationService = AndroidResourcesMigrationService;
|
|
104
91
|
yok_1.injector.register("androidResourcesMigrationService", AndroidResourcesMigrationService);
|