@akylas/nativescript-cli 8.7.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/config/test-deps-versions-generated.json +1 -1
- package/docs/man_pages/project/configuration/native/native-add-java.md +32 -0
- package/docs/man_pages/project/configuration/native/native-add-kotlin.md +34 -0
- package/docs/man_pages/project/configuration/native/native-add-objective-c.md +34 -0
- package/docs/man_pages/project/configuration/native/native-add-swift.md +32 -0
- package/docs/man_pages/project/configuration/native/native-add.md +31 -0
- package/docs/man_pages/project/configuration/native/native.md +31 -0
- package/lib/.d.ts +2 -0
- package/lib/android-tools-info.js +9 -20
- package/lib/base-package-manager.js +47 -64
- package/lib/bootstrap.js +8 -0
- 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 +72 -0
- 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 +277 -0
- 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 -45
- 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 +28 -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 -94
- 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 -118
- 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/emulator-helper.js +1 -0
- 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 +7 -0
- 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 +727 -800
- package/lib/controllers/platform-controller.js +72 -83
- package/lib/controllers/prepare-controller.js +264 -250
- 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/build-data.js +2 -0
- package/lib/data/prepare-data.js +5 -1
- package/lib/declarations.d.ts +14 -3
- package/lib/definitions/android-plugin-migrator.d.ts +1 -0
- package/lib/definitions/ios-debugger-port-service.d.ts +1 -1
- package/lib/definitions/livesync.d.ts +1 -1
- package/lib/definitions/platform.d.ts +1 -0
- package/lib/definitions/prepare.d.ts +3 -0
- package/lib/definitions/project.d.ts +5 -0
- 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 +102 -114
- 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 +12 -14
- 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 +5 -2
- package/lib/providers/project-files-provider.js +2 -2
- 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 +13 -23
- package/lib/services/android/gradle-build-service.js +34 -47
- package/lib/services/android/gradle-command-service.js +23 -32
- package/lib/services/android-device-debug-service.js +90 -117
- package/lib/services/android-plugin-build-service.js +233 -247
- package/lib/services/android-project-service.js +180 -219
- 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 +100 -113
- 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 +118 -133
- 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 +28 -44
- 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 +418 -440
- 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 +123 -155
- package/lib/services/livesync/android-livesync-service.js +16 -37
- 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 +44 -60
- package/lib/services/livesync/platform-livesync-service-base.js +96 -120
- package/lib/services/log-parser-service.js +1 -1
- package/lib/services/log-source-map-service.js +33 -43
- 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 +53 -69
- package/lib/services/platform/platform-validation-service.js +22 -33
- package/lib/services/platform/prepare-native-platform-service.js +50 -60
- package/lib/services/platform-environment-requirements.js +29 -38
- package/lib/services/plugins-service.js +128 -147
- package/lib/services/project-backup-service.js +1 -1
- package/lib/services/project-changes-service.js +129 -139
- 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 +116 -139
- 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 +212 -224
- package/lib/services/xcconfig-service.js +8 -19
- package/lib/services/xcproj-service.js +12 -0
- 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 +59 -57
- package/vendor/aab-tool/README.txt +1 -1
- package/vendor/aab-tool/bundletool.jar +0 -0
- package/vendor/gradle-app/app/build.gradle +12 -4
- package/vendor/gradle-plugin/build.gradle +12 -4
- 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");
|
|
@@ -71,24 +62,26 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
71
62
|
throw new Error("First call of getPlatformData without providing projectData.");
|
|
72
63
|
}
|
|
73
64
|
if (projectData && projectData.platformsDir) {
|
|
74
|
-
const projectRoot =
|
|
65
|
+
const projectRoot = this.$options.hostProjectPath
|
|
66
|
+
? this.$options.hostProjectPath
|
|
67
|
+
: path.join(projectData.platformsDir, AndroidProjectService.ANDROID_PLATFORM_NAME);
|
|
75
68
|
const appDestinationDirectoryArr = [
|
|
76
69
|
projectRoot,
|
|
77
|
-
|
|
70
|
+
this.$options.hostProjectModuleName,
|
|
78
71
|
constants.SRC_DIR,
|
|
79
72
|
constants.MAIN_DIR,
|
|
80
73
|
constants.ASSETS_DIR,
|
|
81
74
|
];
|
|
82
75
|
const configurationsDirectoryArr = [
|
|
83
76
|
projectRoot,
|
|
84
|
-
|
|
77
|
+
this.$options.hostProjectModuleName,
|
|
85
78
|
constants.SRC_DIR,
|
|
86
79
|
constants.MAIN_DIR,
|
|
87
80
|
constants.MANIFEST_FILE_NAME,
|
|
88
81
|
];
|
|
89
82
|
const deviceBuildOutputArr = [
|
|
90
83
|
projectRoot,
|
|
91
|
-
|
|
84
|
+
this.$options.hostProjectModuleName,
|
|
92
85
|
constants.BUILD_DIR,
|
|
93
86
|
constants.OUTPUTS_DIR,
|
|
94
87
|
constants.APK_DIR,
|
|
@@ -104,7 +97,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
104
97
|
projectRoot: projectRoot,
|
|
105
98
|
getBuildOutputPath: (buildOptions) => {
|
|
106
99
|
if (buildOptions.androidBundle) {
|
|
107
|
-
return path.join(projectRoot,
|
|
100
|
+
return path.join(projectRoot, this.$options.hostProjectModuleName, constants.BUILD_DIR, constants.OUTPUTS_DIR, constants.BUNDLE_DIR);
|
|
108
101
|
}
|
|
109
102
|
return path.join(...deviceBuildOutputArr);
|
|
110
103
|
},
|
|
@@ -115,8 +108,8 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
115
108
|
if (buildOptions.androidBundle) {
|
|
116
109
|
return {
|
|
117
110
|
packageNames: [
|
|
118
|
-
`${
|
|
119
|
-
`${
|
|
111
|
+
`${this.$options.hostProjectModuleName}${constants.AAB_EXTENSION_NAME}`,
|
|
112
|
+
`${this.$options.hostProjectModuleName}-${buildMode}${constants.AAB_EXTENSION_NAME}`,
|
|
120
113
|
],
|
|
121
114
|
};
|
|
122
115
|
}
|
|
@@ -125,10 +118,10 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
125
118
|
`${packageName}-${buildMode}${constants.APK_EXTENSION_NAME}`,
|
|
126
119
|
`${projectData.projectName}-${buildMode}${constants.APK_EXTENSION_NAME}`,
|
|
127
120
|
`${projectData.projectName}${constants.APK_EXTENSION_NAME}`,
|
|
128
|
-
`${
|
|
121
|
+
`${this.$options.hostProjectModuleName}-${buildMode}${constants.APK_EXTENSION_NAME}`,
|
|
129
122
|
],
|
|
130
123
|
regexes: [
|
|
131
|
-
new RegExp(`(${packageName}|${
|
|
124
|
+
new RegExp(`(${packageName}|${this.$options.hostProjectModuleName})-.*-(${constants_1.Configurations.Debug}|${constants_1.Configurations.Release})(-unsigned)?${constants.APK_EXTENSION_NAME}`, "i"),
|
|
132
125
|
],
|
|
133
126
|
};
|
|
134
127
|
},
|
|
@@ -144,10 +137,8 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
144
137
|
const currentPlatformData = this.$projectDataService.getRuntimePackage(projectData.projectDir, platformData.platformNameLowerCase);
|
|
145
138
|
return currentPlatformData && currentPlatformData[constants.VERSION_STRING];
|
|
146
139
|
}
|
|
147
|
-
validateOptions() {
|
|
148
|
-
return
|
|
149
|
-
return true;
|
|
150
|
-
});
|
|
140
|
+
async validateOptions() {
|
|
141
|
+
return true;
|
|
151
142
|
}
|
|
152
143
|
getAppResourcesDestinationDirectoryPath(projectData) {
|
|
153
144
|
const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
|
|
@@ -158,45 +149,41 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
158
149
|
return this.getLegacyAppResourcesDestinationDirPath(projectData);
|
|
159
150
|
}
|
|
160
151
|
}
|
|
161
|
-
validate(projectData, options, notConfiguredEnvOptions) {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
notConfiguredEnvOptions,
|
|
170
|
-
});
|
|
171
|
-
this.$androidToolsInfo.validateInfo({
|
|
172
|
-
showWarningsAsErrors: true,
|
|
173
|
-
projectDir: projectData.projectDir,
|
|
174
|
-
validateTargetSdk: true,
|
|
175
|
-
});
|
|
176
|
-
return {
|
|
177
|
-
checkEnvironmentRequirementsOutput,
|
|
178
|
-
};
|
|
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,
|
|
179
160
|
});
|
|
161
|
+
this.$androidToolsInfo.validateInfo({
|
|
162
|
+
showWarningsAsErrors: true,
|
|
163
|
+
projectDir: projectData.projectDir,
|
|
164
|
+
validateTargetSdk: true,
|
|
165
|
+
});
|
|
166
|
+
return {
|
|
167
|
+
checkEnvironmentRequirementsOutput,
|
|
168
|
+
};
|
|
180
169
|
}
|
|
181
|
-
createProject(frameworkDir, frameworkVersion, projectData) {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
projectDir: projectData.projectDir,
|
|
189
|
-
});
|
|
190
|
-
const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
|
|
191
|
-
this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
|
|
192
|
-
this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
|
|
193
|
-
if (this.$options.overrideRuntimeGradleFiles !== false) {
|
|
194
|
-
const gradleTemplatePath = path.resolve(path.join(__dirname, "../../vendor/gradle-app"));
|
|
195
|
-
const allGradleTemplateFiles = path.join(gradleTemplatePath, "*");
|
|
196
|
-
this.$fs.copyFile(allGradleTemplateFiles, path.join(this.getPlatformData(projectData).projectRoot));
|
|
197
|
-
}
|
|
198
|
-
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,
|
|
199
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);
|
|
200
187
|
}
|
|
201
188
|
getResDestinationDir(projectData) {
|
|
202
189
|
const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
|
|
@@ -226,39 +213,37 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
226
213
|
this.$logger.trace(directoriesToClean);
|
|
227
214
|
_.map(directoriesToClean, (dir) => this.$fs.deleteDirectory(dir));
|
|
228
215
|
}
|
|
229
|
-
interpolateData(projectData) {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
catch (e) {
|
|
259
|
-
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);
|
|
260
242
|
}
|
|
261
|
-
}
|
|
243
|
+
}
|
|
244
|
+
catch (e) {
|
|
245
|
+
this.$logger.trace(`Templates updated and no need for replace in app.gradle.`);
|
|
246
|
+
}
|
|
262
247
|
}
|
|
263
248
|
interpolateConfigurationFile(projectData) {
|
|
264
249
|
const manifestPath = this.getPlatformData(projectData).configurationFilePath;
|
|
@@ -282,40 +267,32 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
282
267
|
afterCreateProject(projectRoot) {
|
|
283
268
|
return null;
|
|
284
269
|
}
|
|
285
|
-
updatePlatform(currentVersion, newVersion, canUpdate, projectData, addPlatform, removePlatforms) {
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
return true;
|
|
294
|
-
});
|
|
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;
|
|
295
278
|
}
|
|
296
|
-
buildProject(projectRoot, projectData, buildData) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
yield this.trackKotlinUsage(projectRoot);
|
|
303
|
-
});
|
|
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);
|
|
304
285
|
}
|
|
305
|
-
buildForDeploy(projectRoot, projectData, buildData) {
|
|
306
|
-
return
|
|
307
|
-
return this.buildProject(projectRoot, projectData, buildData);
|
|
308
|
-
});
|
|
286
|
+
async buildForDeploy(projectRoot, projectData, buildData) {
|
|
287
|
+
return this.buildProject(projectRoot, projectData, buildData);
|
|
309
288
|
}
|
|
310
289
|
isPlatformPrepared(projectRoot, projectData) {
|
|
311
|
-
return this.$fs.exists(path.join(this.getPlatformData(projectData).appDestinationDirectoryPath,
|
|
290
|
+
return this.$fs.exists(path.join(this.getPlatformData(projectData).appDestinationDirectoryPath, this.$options.hostProjectModuleName));
|
|
312
291
|
}
|
|
313
292
|
getFrameworkFilesExtensions() {
|
|
314
293
|
return [".jar", ".dat"];
|
|
315
294
|
}
|
|
316
|
-
prepareProject() {
|
|
317
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
318
|
-
});
|
|
295
|
+
async prepareProject() {
|
|
319
296
|
}
|
|
320
297
|
ensureConfigurationFileInAppResources(projectData) {
|
|
321
298
|
const appResourcesDirectoryPath = projectData.appResourcesDirectoryPath;
|
|
@@ -367,48 +344,40 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
367
344
|
const compileSdkVersion = androidToolsInfo && androidToolsInfo.compileSdkVersion;
|
|
368
345
|
this.cleanResValues(compileSdkVersion, projectData);
|
|
369
346
|
}
|
|
370
|
-
preparePluginNativeCode(pluginData, projectData) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
}
|
|
387
|
-
this.$androidPluginBuildService.migrateIncludeGradle(options);
|
|
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}`);
|
|
388
364
|
}
|
|
389
|
-
|
|
365
|
+
this.$androidPluginBuildService.migrateIncludeGradle(options);
|
|
366
|
+
}
|
|
390
367
|
}
|
|
391
|
-
processConfigurationFilesFromAppResources() {
|
|
392
|
-
return
|
|
393
|
-
return;
|
|
394
|
-
});
|
|
368
|
+
async processConfigurationFilesFromAppResources() {
|
|
369
|
+
return;
|
|
395
370
|
}
|
|
396
|
-
removePluginNativeCode(pluginData, projectData) {
|
|
397
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
398
|
-
});
|
|
371
|
+
async removePluginNativeCode(pluginData, projectData) {
|
|
399
372
|
}
|
|
400
|
-
beforePrepareAllPlugins(projectData, dependencies) {
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
}
|
|
406
|
-
});
|
|
373
|
+
async beforePrepareAllPlugins(projectData, dependencies) {
|
|
374
|
+
if (dependencies) {
|
|
375
|
+
dependencies = this.filterUniqueDependencies(dependencies);
|
|
376
|
+
return this.provideDependenciesJson(projectData, dependencies);
|
|
377
|
+
}
|
|
407
378
|
}
|
|
408
|
-
handleNativeDependenciesChange(projectData, opts) {
|
|
409
|
-
return
|
|
410
|
-
return;
|
|
411
|
-
});
|
|
379
|
+
async handleNativeDependenciesChange(projectData, opts) {
|
|
380
|
+
return;
|
|
412
381
|
}
|
|
413
382
|
filterUniqueDependencies(dependencies) {
|
|
414
383
|
const depsDictionary = dependencies.reduce((dict, dep) => {
|
|
@@ -421,7 +390,9 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
421
390
|
return _.values(depsDictionary);
|
|
422
391
|
}
|
|
423
392
|
provideDependenciesJson(projectData, dependencies) {
|
|
424
|
-
const platformDir =
|
|
393
|
+
const platformDir = this.$options.hostProjectPath
|
|
394
|
+
? this.$options.hostProjectPath
|
|
395
|
+
: path.join(projectData.platformsDir, AndroidProjectService.ANDROID_PLATFORM_NAME);
|
|
425
396
|
const dependenciesJsonPath = path.join(platformDir, constants.DEPENDENCIES_JSON_NAME);
|
|
426
397
|
let nativeDependencyData = dependencies.filter(AndroidProjectService.isNativeAndroidDependency);
|
|
427
398
|
let nativeDependencies = nativeDependencyData.map(({ name, directory, dependencies }) => {
|
|
@@ -446,58 +417,50 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
446
417
|
(nativescript.android ||
|
|
447
418
|
(nativescript.platforms && nativescript.platforms.android)));
|
|
448
419
|
}
|
|
449
|
-
stopServices(projectRoot) {
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
stdio: "pipe",
|
|
455
|
-
});
|
|
456
|
-
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",
|
|
457
425
|
});
|
|
426
|
+
return result;
|
|
458
427
|
}
|
|
459
|
-
cleanProject(projectRoot) {
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
release: false,
|
|
463
|
-
});
|
|
428
|
+
async cleanProject(projectRoot) {
|
|
429
|
+
await this.$gradleBuildService.cleanProject(projectRoot, {
|
|
430
|
+
release: false,
|
|
464
431
|
});
|
|
465
432
|
}
|
|
466
|
-
cleanDeviceTempFolder(deviceIdentifier, projectData) {
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
identifier: deviceIdentifier,
|
|
470
|
-
});
|
|
471
|
-
const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
|
|
472
|
-
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,
|
|
473
436
|
});
|
|
437
|
+
const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
|
|
438
|
+
await adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
|
|
474
439
|
}
|
|
475
|
-
checkForChanges(changesInfo, prepareData, projectData) {
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
return;
|
|
486
|
-
}
|
|
487
|
-
const device = this.$devicesService
|
|
488
|
-
.getDevicesForPlatform(deviceDescriptor.buildData.platform)
|
|
489
|
-
.filter((d) => d.deviceInfo.identifier === deviceDescriptor.identifier)[0];
|
|
490
|
-
const abis = device.deviceInfo.abis.filter((a) => !!a && a.length)[0];
|
|
491
|
-
const directoryContent = this.$fs.readDirectory(apkOutputPath);
|
|
492
|
-
const regexp = new RegExp(`${abis}.*\.apk`);
|
|
493
|
-
const files = _.filter(directoryContent, (entry) => {
|
|
494
|
-
return regexp.test(entry);
|
|
495
|
-
});
|
|
496
|
-
if (files.length === 0) {
|
|
497
|
-
changesInfo.nativeChanged = true;
|
|
498
|
-
}
|
|
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;
|
|
499
450
|
}
|
|
500
|
-
|
|
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
|
+
}
|
|
501
464
|
});
|
|
502
465
|
}
|
|
503
466
|
getDeploymentTarget(projectData) {
|
|
@@ -525,7 +488,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
525
488
|
}
|
|
526
489
|
getLegacyAppResourcesDestinationDirPath(projectData) {
|
|
527
490
|
const resourcePath = [
|
|
528
|
-
|
|
491
|
+
this.$options.hostProjectModuleName,
|
|
529
492
|
constants.SRC_DIR,
|
|
530
493
|
constants.MAIN_DIR,
|
|
531
494
|
constants.RESOURCES_DIR,
|
|
@@ -534,7 +497,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
534
497
|
}
|
|
535
498
|
getUpdatedAppResourcesDestinationDirPath(projectData) {
|
|
536
499
|
const resourcePath = [
|
|
537
|
-
|
|
500
|
+
this.$options.hostProjectModuleName,
|
|
538
501
|
constants.SRC_DIR,
|
|
539
502
|
];
|
|
540
503
|
return path.join(this.getPlatformData(projectData).projectRoot, ...resourcePath);
|
|
@@ -555,24 +518,22 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
555
518
|
});
|
|
556
519
|
}
|
|
557
520
|
}
|
|
558
|
-
trackKotlinUsage(projectRoot) {
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
});
|
|
570
|
-
}
|
|
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
|
+
});
|
|
571
532
|
}
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
}
|
|
575
|
-
}
|
|
533
|
+
}
|
|
534
|
+
catch (e) {
|
|
535
|
+
this.$logger.trace(`Failed to track android build statistics. Error is: ${e.message}`);
|
|
536
|
+
}
|
|
576
537
|
}
|
|
577
538
|
tryGetAndroidBuildStatistics(projectRoot) {
|
|
578
539
|
const staticsFilePath = path.join(projectRoot, constants.ANDROID_ANALYTICS_DATA_DIR, constants.ANDROID_ANALYTICS_DATA_FILE);
|
|
@@ -588,6 +549,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
588
549
|
return buildStatistics;
|
|
589
550
|
}
|
|
590
551
|
}
|
|
552
|
+
exports.AndroidProjectService = AndroidProjectService;
|
|
591
553
|
AndroidProjectService.VALUES_DIRNAME = "values";
|
|
592
554
|
AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService.VALUES_DIRNAME + "-v";
|
|
593
555
|
AndroidProjectService.ANDROID_PLATFORM_NAME = "android";
|
|
@@ -596,5 +558,4 @@ __decorate([
|
|
|
596
558
|
(0, decorators_1.performanceLog)(),
|
|
597
559
|
(0, helpers_1.hook)("buildAndroid")
|
|
598
560
|
], AndroidProjectService.prototype, "buildProject", null);
|
|
599
|
-
exports.AndroidProjectService = AndroidProjectService;
|
|
600
561
|
yok_1.injector.register("androidProjectService", AndroidProjectService);
|