nativescript 9.0.4-dev.1 → 9.0.4-dev.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 +12 -0
- package/lib/base-package-manager.js +7 -0
- package/lib/bootstrap.js +5 -1
- package/lib/bun-package-manager.js +14 -1
- package/lib/color.js +4 -0
- package/lib/commands/add-platform.js +1 -0
- package/lib/commands/apple-login.js +1 -0
- package/lib/commands/appstore-list.js +1 -0
- package/lib/commands/appstore-upload.js +3 -0
- package/lib/commands/build.js +3 -2
- package/lib/commands/clean.js +22 -1
- package/lib/commands/command-base.js +1 -0
- package/lib/commands/config.js +5 -0
- package/lib/commands/create-project.js +6 -0
- package/lib/commands/debug.js +6 -1
- package/lib/commands/deploy.js +3 -2
- package/lib/commands/embedding/embed.js +7 -0
- package/lib/commands/extensibility/install-extension.js +1 -0
- package/lib/commands/extensibility/list-extensions.js +1 -0
- package/lib/commands/extensibility/uninstall-extension.js +1 -0
- package/lib/commands/fonts.js +1 -0
- package/lib/commands/generate-assets.js +1 -0
- package/lib/commands/generate-help.js +1 -0
- package/lib/commands/generate.js +48 -1
- package/lib/commands/hooks/common.js +2 -1
- package/lib/commands/hooks/hooks-lock.js +1 -0
- package/lib/commands/hooks/hooks.js +1 -0
- package/lib/commands/info.js +1 -0
- package/lib/commands/install.js +1 -0
- package/lib/commands/list-platforms.js +1 -0
- package/lib/commands/migrate.js +1 -0
- package/lib/commands/native-add.js +5 -0
- package/lib/commands/platform-clean.js +1 -0
- package/lib/commands/plugin/add-plugin.js +1 -0
- package/lib/commands/plugin/build-plugin.js +1 -0
- package/lib/commands/plugin/create-plugin.js +5 -0
- package/lib/commands/plugin/list-plugins.js +1 -0
- package/lib/commands/plugin/remove-plugin.js +2 -0
- package/lib/commands/plugin/update-plugin.js +1 -0
- package/lib/commands/post-install.js +6 -0
- package/lib/commands/prepare.js +4 -3
- package/lib/commands/preview.js +2 -0
- package/lib/commands/remove-platform.js +1 -0
- package/lib/commands/resources/resources-update.js +2 -0
- package/lib/commands/run.js +1 -0
- package/lib/commands/setup.js +1 -0
- package/lib/commands/start.js +1 -0
- package/lib/commands/test-init.js +4 -0
- package/lib/commands/test.js +9 -2
- package/lib/commands/typings.js +2 -1
- package/lib/commands/update-platform.js +5 -0
- package/lib/commands/update.js +2 -0
- package/lib/commands/widget.js +20 -1
- package/lib/common/bootstrap.js +1 -0
- package/lib/common/child-process.js +3 -0
- package/lib/common/codeGeneration/code-entity.js +1 -0
- package/lib/common/codeGeneration/code-printer.js +1 -0
- package/lib/common/command-params.js +1 -0
- package/lib/common/commands/analytics.js +3 -0
- package/lib/common/commands/autocompletion.js +3 -0
- package/lib/common/commands/device/device-log-stream.js +1 -0
- package/lib/common/commands/device/get-file.js +2 -0
- package/lib/common/commands/device/list-applications.js +1 -0
- package/lib/common/commands/device/list-devices.js +3 -0
- package/lib/common/commands/device/list-files.js +2 -0
- package/lib/common/commands/device/put-file.js +2 -0
- package/lib/common/commands/device/run-application.js +1 -0
- package/lib/common/commands/device/stop-application.js +1 -0
- package/lib/common/commands/device/uninstall-application.js +1 -0
- package/lib/common/commands/doctor.js +3 -2
- package/lib/common/commands/generate-messages.js +1 -0
- package/lib/common/commands/help.js +1 -0
- package/lib/common/commands/package-manager-get.js +1 -0
- package/lib/common/commands/package-manager-set.js +1 -0
- package/lib/common/commands/post-install.js +1 -0
- package/lib/common/commands/preuninstall.js +11 -2
- package/lib/common/commands/proxy/proxy-base.js +4 -0
- package/lib/common/commands/proxy/proxy-clear.js +1 -0
- package/lib/common/commands/proxy/proxy-get.js +1 -0
- package/lib/common/commands/proxy/proxy-set.js +1 -0
- package/lib/common/common-lib.js +1 -0
- package/lib/common/constants.js +11 -0
- package/lib/common/decorators.js +48 -0
- package/lib/common/dispatchers.js +10 -1
- package/lib/common/errors.js +13 -3
- package/lib/common/file-system.js +13 -2
- package/lib/common/header.js +3 -0
- package/lib/common/helpers.js +89 -3
- package/lib/common/host-info.js +4 -0
- package/lib/common/http-client.js +20 -0
- package/lib/common/logger/appenders/cli-appender.js +4 -0
- package/lib/common/logger/appenders/emit-appender.js +4 -0
- package/lib/common/logger/layouts/cli-layout.js +1 -0
- package/lib/common/logger/logger.js +5 -0
- package/lib/common/messages/messages.js +6 -0
- package/lib/common/mobile/android/android-application-manager.js +20 -1
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -0
- package/lib/common/mobile/android/android-debug-bridge.js +6 -0
- package/lib/common/mobile/android/android-device-file-system.js +4 -0
- package/lib/common/mobile/android/android-device-hash-service.js +3 -0
- package/lib/common/mobile/android/android-device.js +8 -0
- package/lib/common/mobile/android/android-emulator-services.js +2 -1
- package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
- package/lib/common/mobile/android/android-log-filter.js +4 -0
- package/lib/common/mobile/android/android-virtual-device-service.js +26 -0
- package/lib/common/mobile/android/device-android-debug-bridge.js +1 -0
- package/lib/common/mobile/android/genymotion/genymotion-service.js +6 -1
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +11 -0
- package/lib/common/mobile/android/logcat-helper.js +13 -0
- package/lib/common/mobile/application-manager-base.js +6 -0
- package/lib/common/mobile/device-emitter.js +4 -0
- package/lib/common/mobile/device-log-emitter.js +1 -0
- package/lib/common/mobile/device-log-provider-base.js +1 -0
- package/lib/common/mobile/device-log-provider.js +23 -0
- package/lib/common/mobile/device-platforms-constants.js +1 -0
- package/lib/common/mobile/emulator-helper.js +3 -0
- package/lib/common/mobile/ios/device/ios-application-manager.js +3 -0
- package/lib/common/mobile/ios/device/ios-device-file-system.js +1 -0
- package/lib/common/mobile/ios/device/ios-device-operations.js +4 -0
- package/lib/common/mobile/ios/device/ios-device.js +4 -0
- package/lib/common/mobile/ios/ios-device-base.js +1 -0
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +2 -0
- package/lib/common/mobile/ios/ios-log-filter.js +1 -0
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +4 -0
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +6 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +5 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +1 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +1 -0
- package/lib/common/mobile/local-to-device-path-data-factory.js +1 -0
- package/lib/common/mobile/log-filter.js +2 -0
- package/lib/common/mobile/logging-levels.js +1 -0
- package/lib/common/mobile/mobile-core/android-device-discovery.js +2 -0
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +3 -0
- package/lib/common/mobile/mobile-core/android-process-service.js +32 -0
- package/lib/common/mobile/mobile-core/device-discovery.js +1 -0
- package/lib/common/mobile/mobile-core/devices-service.js +69 -0
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +2 -0
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +3 -0
- package/lib/common/mobile/mobile-helper.js +1 -0
- package/lib/common/mobile/wp8/wp8-emulator-services.js +1 -0
- package/lib/common/opener.js +1 -0
- package/lib/common/os-info.js +1 -0
- package/lib/common/plist-parser.js +1 -0
- package/lib/common/project-helper.js +1 -0
- package/lib/common/prompter.js +9 -1
- package/lib/common/queue.js +1 -0
- package/lib/common/resource-loader.js +1 -0
- package/lib/common/services/auto-completion-service.js +13 -1
- package/lib/common/services/cancellation.js +2 -1
- package/lib/common/services/commands-service.js +17 -6
- package/lib/common/services/help-service.js +11 -3
- package/lib/common/services/hooks-service.js +13 -0
- package/lib/common/services/ios-notification-service.js +1 -0
- package/lib/common/services/json-file-settings-service.js +6 -0
- package/lib/common/services/lock-service.js +6 -0
- package/lib/common/services/message-contract-generator.js +1 -0
- package/lib/common/services/messages-service.js +1 -0
- package/lib/common/services/micro-templating-service.js +6 -0
- package/lib/common/services/net-service.js +3 -0
- package/lib/common/services/project-files-manager.js +5 -0
- package/lib/common/services/project-files-provider-base.js +1 -0
- package/lib/common/services/proxy-service.js +1 -0
- package/lib/common/services/qr.js +1 -0
- package/lib/common/services/settings-service.js +1 -0
- package/lib/common/services/xcode-select-service.js +1 -0
- package/lib/common/utils.js +1 -0
- package/lib/common/validators/project-name-validator.js +1 -0
- package/lib/common/validators/validation-result.js +1 -0
- package/lib/common/verify-node-version.js +8 -1
- package/lib/common/yok.js +32 -11
- package/lib/config.js +22 -1
- package/lib/constants-provider.js +1 -0
- package/lib/constants.js +53 -0
- package/lib/controllers/build-controller.js +4 -3
- package/lib/controllers/debug-controller.js +8 -3
- package/lib/controllers/deploy-controller.js +1 -0
- package/lib/controllers/migrate-controller.js +90 -4
- package/lib/controllers/platform-controller.js +9 -1
- package/lib/controllers/prepare-controller.js +17 -4
- package/lib/controllers/run-controller.js +17 -1
- package/lib/controllers/update-controller-base.js +1 -0
- package/lib/controllers/update-controller.js +11 -0
- package/lib/data/build-data.js +1 -0
- package/lib/data/controller-data-base.js +1 -0
- package/lib/data/debug-data.js +1 -0
- package/lib/data/platform-data.js +1 -0
- package/lib/data/prepare-data.js +1 -0
- package/lib/data/run-data.js +1 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +8 -2
- package/lib/detached-processes/cleanup-process.js +18 -14
- package/lib/detached-processes/file-log-service.js +2 -1
- package/lib/device-path-provider.js +1 -0
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +7 -0
- package/lib/device-sockets/ios/notification.js +3 -0
- package/lib/device-sockets/ios/socket-request-executor.js +3 -0
- package/lib/helpers/android-bundle-validator-helper.js +2 -1
- package/lib/helpers/deploy-command-helper.js +1 -0
- package/lib/helpers/key-command-helper.js +4 -2
- package/lib/helpers/livesync-command-helper.js +4 -1
- package/lib/helpers/network-connectivity-validator.js +1 -0
- package/lib/helpers/options-track-helper.js +3 -2
- package/lib/helpers/package-path-helper.js +1 -0
- package/lib/helpers/platform-command-helper.js +7 -2
- package/lib/helpers/version-validator-helper.js +1 -0
- package/lib/key-commands/bootstrap.js +3 -2
- package/lib/key-commands/index.js +5 -4
- package/lib/nativescript-cli-lib-bootstrap.js +4 -0
- package/lib/nativescript-cli-lib.js +1 -0
- package/lib/nativescript-cli.js +11 -1
- package/lib/node/pbxproj-dom-xcode.js +1 -0
- package/lib/node/xcode.js +1 -0
- package/lib/node-package-manager.js +11 -1
- package/lib/options.js +144 -119
- package/lib/package-installation-manager.js +8 -1
- package/lib/package-manager.js +2 -0
- package/lib/platform-command-param.js +1 -0
- package/lib/pnpm-package-manager.js +4 -1
- package/lib/project-data.js +12 -0
- package/lib/providers/project-files-provider.js +1 -0
- package/lib/resolvers/livesync-service-resolver.js +1 -0
- package/lib/services/analytics/analytics-broker-process.js +10 -6
- package/lib/services/analytics/analytics-broker.js +2 -1
- package/lib/services/analytics/analytics-service.js +29 -25
- package/lib/services/analytics/google-analytics-provider.js +13 -12
- package/lib/services/analytics-settings-service.js +5 -0
- package/lib/services/android/android-bundle-tool-service.js +1 -0
- package/lib/services/android/gradle-build-args-service.js +3 -0
- package/lib/services/android/gradle-build-service.js +1 -0
- package/lib/services/android/gradle-command-service.js +1 -0
- package/lib/services/android-device-debug-service.js +6 -0
- package/lib/services/android-plugin-build-service.js +31 -2
- package/lib/services/android-project-service.js +71 -4
- package/lib/services/android-resources-migration-service.js +7 -0
- package/lib/services/apple-portal/apple-portal-application-service.js +1 -0
- package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
- package/lib/services/apple-portal/apple-portal-session-service.js +6 -4
- package/lib/services/apple-portal/srp/srp-wrapper.js +4 -1
- package/lib/services/assets-generation/assets-generation-service.js +10 -5
- package/lib/services/build-artifacts-service.js +2 -1
- package/lib/services/build-data-service.js +1 -0
- package/lib/services/build-info-file-service.js +1 -0
- package/lib/services/bundler/bundler-compiler-service.js +68 -1
- package/lib/services/bundler/bundler.js +1 -0
- package/lib/services/cleanup-service.js +13 -9
- package/lib/services/cocoapods-platform-manager.js +9 -0
- package/lib/services/cocoapods-service.js +21 -1
- package/lib/services/debug-data-service.js +1 -0
- package/lib/services/debug-service-base.js +7 -0
- package/lib/services/device/device-install-app-service.js +2 -1
- package/lib/services/doctor-service.js +21 -6
- package/lib/services/extensibility-service.js +8 -0
- package/lib/services/files-hash-service.js +1 -0
- package/lib/services/hmr-status-service.js +2 -0
- package/lib/services/info-service.js +1 -0
- package/lib/services/initialize-service.js +5 -1
- package/lib/services/ios/export-options-plist-service.js +4 -0
- package/lib/services/ios/ios-signing-service.js +4 -0
- package/lib/services/ios/spm-service.js +18 -0
- package/lib/services/ios/xcodebuild-args-service.js +16 -0
- package/lib/services/ios/xcodebuild-command-service.js +1 -0
- package/lib/services/ios/xcodebuild-service.js +2 -1
- package/lib/services/ios-debugger-port-service.js +1 -0
- package/lib/services/ios-device-debug-service.js +1 -0
- package/lib/services/ios-entitlements-service.js +1 -0
- package/lib/services/ios-extensions-service.js +1 -0
- package/lib/services/ios-log-filter.js +20 -0
- package/lib/services/ios-native-target-service.js +6 -4
- package/lib/services/ios-project-service.js +100 -1
- package/lib/services/ios-provision-service.js +3 -0
- package/lib/services/ios-watch-app-service.js +1 -0
- package/lib/services/ip-service.js +2 -0
- package/lib/services/itmstransporter-service.js +1 -0
- package/lib/services/karma-execution.js +2 -0
- package/lib/services/livesync/android-device-livesync-service-base.js +1 -0
- package/lib/services/livesync/android-device-livesync-service.js +2 -0
- package/lib/services/livesync/android-device-livesync-sockets-service.js +3 -0
- package/lib/services/livesync/android-livesync-service.js +1 -0
- package/lib/services/livesync/android-livesync-tool.js +4 -0
- package/lib/services/livesync/device-livesync-service-base.js +2 -0
- package/lib/services/livesync/ios-device-livesync-service.js +7 -0
- package/lib/services/livesync/ios-livesync-service.js +2 -0
- package/lib/services/livesync/livesync-socket.js +1 -0
- package/lib/services/livesync/platform-livesync-service-base.js +5 -0
- package/lib/services/livesync-process-data-service.js +1 -0
- package/lib/services/log-parser-service.js +1 -0
- package/lib/services/log-source-map-service.js +15 -0
- package/lib/services/marking-mode-service.js +8 -5
- package/lib/services/metadata-filtering-service.js +1 -0
- package/lib/services/npm-config-service.js +4 -0
- package/lib/services/pacote-service.js +7 -0
- package/lib/services/performance-service.js +3 -1
- package/lib/services/platform/add-platform-service.js +49 -2
- package/lib/services/platform/platform-validation-service.js +1 -0
- package/lib/services/platform/prepare-native-platform-service.js +5 -2
- package/lib/services/platform-environment-requirements.js +8 -3
- package/lib/services/platform-project-service-base.js +1 -0
- package/lib/services/platforms-data-service.js +1 -0
- package/lib/services/plugins-service.js +20 -2
- package/lib/services/prepare-data-service.js +1 -0
- package/lib/services/project-backup-service.js +4 -0
- package/lib/services/project-changes-service.js +14 -3
- package/lib/services/project-cleanup-service.js +2 -0
- package/lib/services/project-config-service.js +21 -2
- package/lib/services/project-data-service.js +36 -7
- package/lib/services/project-name-service.js +1 -0
- package/lib/services/project-service.js +10 -0
- package/lib/services/project-templates-service.js +3 -2
- package/lib/services/qr-code-terminal-service.js +1 -0
- package/lib/services/require-service.js +1 -0
- package/lib/services/start-service.js +1 -0
- package/lib/services/temp-service.js +3 -0
- package/lib/services/terminal-spinner-service.js +2 -0
- package/lib/services/test-execution-service.js +9 -2
- package/lib/services/test-initialization-service.js +4 -0
- package/lib/services/timeline-profiler-service.js +1 -0
- package/lib/services/user-settings-service.js +1 -0
- package/lib/services/versions-service.js +6 -4
- package/lib/services/watch-ignore-list-service.js +1 -0
- package/lib/services/xcconfig-service.js +2 -0
- package/lib/services/xcproj-service.js +1 -0
- package/lib/shared-event-bus.js +6 -0
- package/lib/sys-info.js +2 -1
- package/lib/tools/config-manipulation/config-transformer.js +12 -0
- package/lib/tools/node-modules/node-modules-builder.js +1 -0
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
- package/lib/yarn-package-manager.js +1 -0
- package/lib/yarn2-package-manager.js +3 -0
- package/package.json +1 -1
|
@@ -18,7 +18,40 @@ const constants_1 = require("../common/constants");
|
|
|
18
18
|
const helpers_1 = require("../common/helpers");
|
|
19
19
|
const decorators_1 = require(".././common/decorators");
|
|
20
20
|
const yok_1 = require("../common/yok");
|
|
21
|
-
|
|
21
|
+
//
|
|
22
|
+
// we sort the native dependencies topologically to make sure they are processed in the right order
|
|
23
|
+
// native dependenciess need to be sorted so the deepst dependencies are built before it's parents
|
|
24
|
+
//
|
|
25
|
+
// for example, given this dep structure (assuming these are all native dependencies that need to be built)
|
|
26
|
+
// (note: we list all dependencies at the root level, so the leaf nodes are essentially references to the root nodes)
|
|
27
|
+
//
|
|
28
|
+
// |- dep1
|
|
29
|
+
// |- dep2
|
|
30
|
+
// |- |- dep3
|
|
31
|
+
// |- |- dep4
|
|
32
|
+
// |- |- |- dep5
|
|
33
|
+
// |- dep3
|
|
34
|
+
// |- dep4
|
|
35
|
+
// |- |- dep5
|
|
36
|
+
// |- dep5
|
|
37
|
+
//
|
|
38
|
+
// It is sorted:
|
|
39
|
+
//
|
|
40
|
+
// |- dep1
|
|
41
|
+
// |- dep3
|
|
42
|
+
// |- dep5
|
|
43
|
+
// |- dep4 # depends on dep5, so dep5 must be built first, ie above ^
|
|
44
|
+
// |- |- dep5
|
|
45
|
+
// |- dep2 # depends on dep3, dep4 (and dep5 through dep4) so all of them must be built first before dep2 is built
|
|
46
|
+
// |- |- dep3
|
|
47
|
+
// |- |- dep4
|
|
48
|
+
// |- |- |- dep5
|
|
49
|
+
//
|
|
50
|
+
// for more details see: https://wikiless.org/wiki/Topological_sorting?lang=en
|
|
51
|
+
//
|
|
52
|
+
function topologicalSortNativeDependencies(dependencies, start = [], depth = 0, total = 0 // do not pass in, we calculate it in the initial run!
|
|
53
|
+
) {
|
|
54
|
+
// we set the total on the initial call - and never increment it, as it's used for esacaping the recursion
|
|
22
55
|
if (total === 0) {
|
|
23
56
|
total = dependencies.length;
|
|
24
57
|
}
|
|
@@ -32,6 +65,8 @@ function topologicalSortNativeDependencies(dependencies, start = [], depth = 0,
|
|
|
32
65
|
return sortedDeps;
|
|
33
66
|
}, start);
|
|
34
67
|
const remainingDeps = dependencies.filter((nativeDep) => !sortedDeps.includes(nativeDep));
|
|
68
|
+
// recurse if we still have remaining deps
|
|
69
|
+
// the second condition here prevents infinite recursion
|
|
35
70
|
if (remainingDeps.length && sortedDeps.length < total) {
|
|
36
71
|
return topologicalSortNativeDependencies(remainingDeps, sortedDeps, depth + 1, total);
|
|
37
72
|
}
|
|
@@ -85,7 +120,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
85
120
|
constants.APK_DIR,
|
|
86
121
|
];
|
|
87
122
|
const packageName = this.getProjectNameFromId(projectData);
|
|
88
|
-
const runtimePackage = this.$projectDataService.getRuntimePackage(projectData.projectDir, "android");
|
|
123
|
+
const runtimePackage = this.$projectDataService.getRuntimePackage(projectData.projectDir, "android" /* constants.PlatformTypes.android */);
|
|
89
124
|
this._platformData = {
|
|
90
125
|
frameworkPackageName: runtimePackage.name,
|
|
91
126
|
normalizedPlatformName: "Android",
|
|
@@ -126,7 +161,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
126
161
|
configurationFileName: constants.MANIFEST_FILE_NAME,
|
|
127
162
|
configurationFilePath: path.join(...configurationsDirectoryArr),
|
|
128
163
|
relativeToFrameworkConfigurationFilePath: path.join(constants.SRC_DIR, constants.MAIN_DIR, constants.MANIFEST_FILE_NAME),
|
|
129
|
-
fastLivesyncFileExtensions: [".jpg", ".gif", ".png", ".bmp", ".webp"],
|
|
164
|
+
fastLivesyncFileExtensions: [".jpg", ".gif", ".png", ".bmp", ".webp"], // http://developer.android.com/guide/appendix/media-formats.html
|
|
130
165
|
};
|
|
131
166
|
}
|
|
132
167
|
return this._platformData;
|
|
@@ -176,6 +211,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
176
211
|
const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
|
|
177
212
|
this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
|
|
178
213
|
this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
|
|
214
|
+
// TODO: Check if we actually need this and if it should be targetSdk or compileSdk
|
|
179
215
|
this.cleanResValues(targetSdkVersion, projectData);
|
|
180
216
|
}
|
|
181
217
|
getResDestinationDir(projectData) {
|
|
@@ -207,6 +243,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
207
243
|
_.map(directoriesToClean, (dir) => this.$fs.deleteDirectory(dir));
|
|
208
244
|
}
|
|
209
245
|
async interpolateData(projectData) {
|
|
246
|
+
// Interpolate the apilevel and package
|
|
210
247
|
this.interpolateConfigurationFile(projectData);
|
|
211
248
|
const appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
|
|
212
249
|
let stringsFilePath;
|
|
@@ -222,8 +259,10 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
222
259
|
const gradleSettingsFilePath = path.join(this.getPlatformData(projectData).projectRoot, "settings.gradle");
|
|
223
260
|
shell.sed("-i", /__PROJECT_NAME__/, this.getProjectNameFromId(projectData), gradleSettingsFilePath);
|
|
224
261
|
try {
|
|
262
|
+
// will replace applicationId in app/App_Resources/Android/app.gradle if it has not been edited by the user
|
|
225
263
|
const appGradleContent = this.$fs.readText(projectData.appGradlePath);
|
|
226
264
|
if (appGradleContent.indexOf(constants.PACKAGE_PLACEHOLDER_NAME) !== -1) {
|
|
265
|
+
//TODO: For compatibility with old templates. Once all templates are updated should delete.
|
|
227
266
|
shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
|
|
228
267
|
}
|
|
229
268
|
}
|
|
@@ -274,6 +313,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
274
313
|
return [".jar", ".dat"];
|
|
275
314
|
}
|
|
276
315
|
async prepareProject() {
|
|
316
|
+
// Intentionally left empty.
|
|
277
317
|
}
|
|
278
318
|
ensureConfigurationFileInAppResources(projectData) {
|
|
279
319
|
const appResourcesDirectoryPath = projectData.appResourcesDirectoryPath;
|
|
@@ -290,6 +330,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
290
330
|
this.$logger.warn("No manifest found in " + originalAndroidManifestFilePath);
|
|
291
331
|
return;
|
|
292
332
|
}
|
|
333
|
+
// Overwrite the AndroidManifest from runtime.
|
|
293
334
|
if (!appResourcesDirStructureHasMigrated) {
|
|
294
335
|
this.$fs.copyFile(originalAndroidManifestFilePath, this.getPlatformData(projectData).configurationFilePath);
|
|
295
336
|
}
|
|
@@ -306,6 +347,8 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
306
347
|
}
|
|
307
348
|
else {
|
|
308
349
|
this.$fs.copyFile(path.join(projectAppResourcesPath, platformData.normalizedPlatformName, "*"), platformsAppResourcesPath);
|
|
350
|
+
// https://github.com/NativeScript/android-runtime/issues/899
|
|
351
|
+
// App_Resources/Android/libs is reserved to user's aars and jars, but they should not be copied as resources
|
|
309
352
|
this.$fs.deleteDirectory(path.join(platformsAppResourcesPath, "libs"));
|
|
310
353
|
}
|
|
311
354
|
const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
|
|
@@ -315,6 +358,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
315
358
|
this.cleanResValues(compileSdkVersion, projectData);
|
|
316
359
|
}
|
|
317
360
|
async preparePluginNativeCode(pluginData, projectData) {
|
|
361
|
+
// build Android plugins which contain AndroidManifest.xml and/or resources
|
|
318
362
|
const pluginPlatformsFolderPath = this.getPluginPlatformsFolderPath(pluginData, AndroidProjectService.ANDROID_PLATFORM_NAME);
|
|
319
363
|
if (this.$fs.exists(pluginPlatformsFolderPath)) {
|
|
320
364
|
const options = {
|
|
@@ -336,6 +380,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
336
380
|
return;
|
|
337
381
|
}
|
|
338
382
|
async removePluginNativeCode(pluginData, projectData) {
|
|
383
|
+
// not implemented
|
|
339
384
|
}
|
|
340
385
|
async beforePrepareAllPlugins(projectData, dependencies) {
|
|
341
386
|
if (dependencies) {
|
|
@@ -349,6 +394,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
349
394
|
filterUniqueDependencies(dependencies) {
|
|
350
395
|
const depsDictionary = dependencies.reduce((dict, dep) => {
|
|
351
396
|
const collision = dict[dep.name];
|
|
397
|
+
// in case there are multiple dependencies to the same module, the one declared in the package.json takes precedence
|
|
352
398
|
if (!collision || collision.depth > dep.depth) {
|
|
353
399
|
dict[dep.name] = dep;
|
|
354
400
|
}
|
|
@@ -367,6 +413,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
367
413
|
name,
|
|
368
414
|
directory: path.relative(platformDir, directory),
|
|
369
415
|
dependencies: dependencies.filter((dep) => {
|
|
416
|
+
// filter out transient dependencies that don't have native dependencies
|
|
370
417
|
return (nativeDependencyData.findIndex((nativeDep) => nativeDep.name === dep) !== -1);
|
|
371
418
|
}),
|
|
372
419
|
};
|
|
@@ -374,6 +421,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
374
421
|
nativeDependencies = topologicalSortNativeDependencies(nativeDependencies);
|
|
375
422
|
const jsonContent = JSON.stringify(nativeDependencies, null, 4);
|
|
376
423
|
this.$fs.writeFile(dependenciesJsonPath, jsonContent);
|
|
424
|
+
// we sort all the dependencies to respect the topological sorting of the native dependencies
|
|
377
425
|
return dependencies.sort(function (a, b) {
|
|
378
426
|
return (nativeDependencies.findIndex((n) => n.name === a.name) -
|
|
379
427
|
nativeDependencies.findIndex((n) => n.name === b.name));
|
|
@@ -405,6 +453,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
405
453
|
await adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
|
|
406
454
|
}
|
|
407
455
|
async checkForChanges() {
|
|
456
|
+
// Nothing android specific to check yet.
|
|
408
457
|
}
|
|
409
458
|
getDeploymentTarget(projectData) {
|
|
410
459
|
return;
|
|
@@ -414,9 +463,12 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
414
463
|
shell.cp(cpArg, paths, projectRoot);
|
|
415
464
|
}
|
|
416
465
|
validatePackageName(packageName) {
|
|
466
|
+
//Make the package conform to Java package types
|
|
467
|
+
//Enforce underscore limitation
|
|
417
468
|
if (!/^[a-zA-Z]+(\.[a-zA-Z0-9][a-zA-Z0-9_]*)+$/.test(packageName)) {
|
|
418
469
|
this.$errors.fail(`Package name must look like: com.company.Name. Got: ${packageName}`);
|
|
419
470
|
}
|
|
471
|
+
//Class is a reserved word
|
|
420
472
|
if (/\b[Cc]lass\b/.test(packageName)) {
|
|
421
473
|
this.$errors.fail("class is a reserved word");
|
|
422
474
|
}
|
|
@@ -425,6 +477,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
425
477
|
if (projectName === "") {
|
|
426
478
|
this.$errors.fail("Project name cannot be empty");
|
|
427
479
|
}
|
|
480
|
+
//Classes in Java don't begin with numbers
|
|
428
481
|
if (/^[0-9]/.test(projectName)) {
|
|
429
482
|
this.$errors.fail("Project name must not begin with a number");
|
|
430
483
|
}
|
|
@@ -445,6 +498,19 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
445
498
|
];
|
|
446
499
|
return path.join(this.getPlatformData(projectData).projectRoot, ...resourcePath);
|
|
447
500
|
}
|
|
501
|
+
/**
|
|
502
|
+
* The purpose of this method is to delete the previously prepared user resources.
|
|
503
|
+
* The content of the `<platforms>/android/.../res` directory is based on user's resources and gradle project template from android-runtime.
|
|
504
|
+
* During preparation of the `<path to user's App_Resources>/Android` we want to clean all the users files from previous preparation,
|
|
505
|
+
* but keep the ones that were introduced during `platform add` of the android-runtime.
|
|
506
|
+
* Currently the Gradle project template contains resources only in values and values-v21 directories.
|
|
507
|
+
* So the current logic of the method is cleaning al resources from `<platforms>/android/.../res` that are not in `values.*` directories
|
|
508
|
+
* and that exist in the `<path to user's App_Resources>/Android/.../res` directory
|
|
509
|
+
* This means that if user has a resource file in values-v29 for example, builds the project and then deletes this resource,
|
|
510
|
+
* it will be kept in platforms directory. Reference issue: `https://github.com/NativeScript/nativescript-cli/issues/5083`
|
|
511
|
+
* Same is valid for files in `drawable-<resolution>` directories - in case in user's resources there's drawable-hdpi directory,
|
|
512
|
+
* which is deleted after the first build of app, it will remain in platforms directory.
|
|
513
|
+
*/
|
|
448
514
|
cleanUpPreparedResources(projectData) {
|
|
449
515
|
let resourcesDirPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName);
|
|
450
516
|
if (this.$androidResourcesMigrationService.hasMigrated(projectData.appResourcesDirectoryPath)) {
|
|
@@ -469,7 +535,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
469
535
|
const hasUseKotlinPropertyInAppData = `hasUseKotlinPropertyInApp${analyticsDelimiter}${buildStatistics.kotlinUsage.hasUseKotlinPropertyInApp}`;
|
|
470
536
|
const hasKotlinRuntimeClassesData = `hasKotlinRuntimeClasses${analyticsDelimiter}${buildStatistics.kotlinUsage.hasKotlinRuntimeClasses}`;
|
|
471
537
|
await this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
472
|
-
action: "Using Kotlin"
|
|
538
|
+
action: "Using Kotlin" /* constants.TrackActionNames.UsingKotlin */,
|
|
473
539
|
additionalData: `${hasUseKotlinPropertyInAppData}${analyticsDelimiter}${hasKotlinRuntimeClassesData}`,
|
|
474
540
|
});
|
|
475
541
|
}
|
|
@@ -502,3 +568,4 @@ __decorate([
|
|
|
502
568
|
(0, helpers_1.hook)("buildAndroid")
|
|
503
569
|
], AndroidProjectService.prototype, "buildProject", null);
|
|
504
570
|
yok_1.injector.register("androidProjectService", AndroidProjectService);
|
|
571
|
+
//# sourceMappingURL=android-project-service.js.map
|
|
@@ -46,6 +46,7 @@ class AndroidResourcesMigrationService {
|
|
|
46
46
|
const appResourcesMainSourceSetResourcesDestination = path.join(appMainSourceSet, constants.RESOURCES_DIR);
|
|
47
47
|
this.$fs.ensureDirectoryExists(appResourcesDestination);
|
|
48
48
|
this.$fs.ensureDirectoryExists(appMainSourceSet);
|
|
49
|
+
// create /java, /res and /assets in the App_Resources/Android/src/main directory
|
|
49
50
|
this.$fs.ensureDirectoryExists(appResourcesMainSourceSetResourcesDestination);
|
|
50
51
|
this.$fs.ensureDirectoryExists(path.join(appMainSourceSet, "java"));
|
|
51
52
|
this.$fs.ensureDirectoryExists(path.join(appMainSourceSet, constants.ASSETS_DIR));
|
|
@@ -59,20 +60,25 @@ class AndroidResourcesMigrationService {
|
|
|
59
60
|
const resourceFiles = getFiles(appResourcesFiles);
|
|
60
61
|
resourceDirectories.forEach((dir) => {
|
|
61
62
|
if (path.basename(dir) !== "libs") {
|
|
63
|
+
// don't copy /App_Resources/Android/libs into the src/main/res/libs directory
|
|
62
64
|
this.$fs.copyFile(dir, appResourcesMainSourceSetResourcesDestination);
|
|
63
65
|
}
|
|
64
66
|
else {
|
|
67
|
+
// copy App_Resources/Android/libs to App_ResourcesNew/Android/libs
|
|
65
68
|
this.$fs.copyFile(dir, path.join(appResourcesDestination));
|
|
66
69
|
}
|
|
67
70
|
});
|
|
68
71
|
resourceFiles.forEach((file) => {
|
|
69
72
|
const fileName = path.basename(file);
|
|
70
73
|
if (fileName !== constants.MANIFEST_FILE_NAME) {
|
|
74
|
+
// don't copy AndroidManifest into /App_Resources/Android as it needs to be inside src/main/
|
|
71
75
|
this.$fs.copyFile(file, path.join(appResourcesDestination, fileName));
|
|
72
76
|
}
|
|
73
77
|
});
|
|
74
78
|
this.$fs.copyFile(path.join(originalAppResources, constants.MANIFEST_FILE_NAME), path.join(appMainSourceSet, constants.MANIFEST_FILE_NAME));
|
|
79
|
+
// rename the legacy app_resources to ANDROID_DIR_OLD
|
|
75
80
|
this.$fs.rename(originalAppResources, appResourcesBackup);
|
|
81
|
+
// move the new, updated app_resources to App_Resources/Android, as the de facto resources
|
|
76
82
|
this.$fs.rename(appResourcesDestination, originalAppResources);
|
|
77
83
|
}
|
|
78
84
|
recover(originalAppResources, appResourcesDestination, appResourcesBackup) {
|
|
@@ -89,3 +95,4 @@ AndroidResourcesMigrationService.ANDROID_DIR = "Android";
|
|
|
89
95
|
AndroidResourcesMigrationService.ANDROID_DIR_TEMP = "Android-Updated";
|
|
90
96
|
AndroidResourcesMigrationService.ANDROID_DIR_OLD = "Android-Pre-v4";
|
|
91
97
|
yok_1.injector.register("androidResourcesMigrationService", AndroidResourcesMigrationService);
|
|
98
|
+
//# sourceMappingURL=android-resources-migration-service.js.map
|
|
@@ -63,3 +63,4 @@ class ApplePortalApplicationService {
|
|
|
63
63
|
}
|
|
64
64
|
exports.ApplePortalApplicationService = ApplePortalApplicationService;
|
|
65
65
|
yok_1.injector.register("applePortalApplicationService", ApplePortalApplicationService);
|
|
66
|
+
//# sourceMappingURL=apple-portal-application-service.js.map
|
|
@@ -201,10 +201,10 @@ For more details how to set up your environment, please execute "ns publish ios
|
|
|
201
201
|
const data = JSON.parse(authResponse.body);
|
|
202
202
|
const isSMS = data.trustedPhoneNumbers &&
|
|
203
203
|
data.trustedPhoneNumbers.length === 1 &&
|
|
204
|
-
data.noTrustedDevices;
|
|
204
|
+
data.noTrustedDevices; // 1 device and no trusted devices means sms was automatically sent.
|
|
205
205
|
const multiSMS = data.trustedPhoneNumbers &&
|
|
206
206
|
data.trustedPhoneNumbers.length !== 1 &&
|
|
207
|
-
data.noTrustedDevices;
|
|
207
|
+
data.noTrustedDevices; // Not handling more than 1 sms device and no trusted devices.
|
|
208
208
|
let token;
|
|
209
209
|
if (data.trustedPhoneNumbers &&
|
|
210
210
|
data.trustedPhoneNumbers.length &&
|
|
@@ -218,6 +218,7 @@ For more details how to set up your environment, please execute "ns publish ios
|
|
|
218
218
|
};
|
|
219
219
|
let url = `https://idmsa.apple.com/appleauth/auth/verify/trusteddevice/securitycode`;
|
|
220
220
|
if (isSMS) {
|
|
221
|
+
// No trusted devices means it must be sms.
|
|
221
222
|
body.mode = "sms";
|
|
222
223
|
body.phoneNumber = {
|
|
223
224
|
id: data.trustedPhoneNumbers[0].id,
|
|
@@ -280,8 +281,9 @@ function checkBits(bits, digest) {
|
|
|
280
281
|
return result;
|
|
281
282
|
}
|
|
282
283
|
function checkBit(position, buffer) {
|
|
283
|
-
const bitOffset = position & 7;
|
|
284
|
-
const byteIndex = position >> 3;
|
|
284
|
+
const bitOffset = position & 7; // in byte
|
|
285
|
+
const byteIndex = position >> 3; // in buffer
|
|
285
286
|
const bit = (buffer[byteIndex] >> bitOffset) & 1;
|
|
286
287
|
return bit === 0;
|
|
287
288
|
}
|
|
289
|
+
//# sourceMappingURL=apple-portal-session-service.js.map
|
|
@@ -28,7 +28,9 @@ class GSASRPAuthenticator {
|
|
|
28
28
|
async getInit() {
|
|
29
29
|
if (this.srpClient)
|
|
30
30
|
throw new Error("Already initialized");
|
|
31
|
-
this.srpClient = await srp.newClient(stringToU8Array(this.username),
|
|
31
|
+
this.srpClient = await srp.newClient(stringToU8Array(this.username),
|
|
32
|
+
// provide fake passsword because we need to get data from server
|
|
33
|
+
new Uint8Array());
|
|
32
34
|
let a = Buffer.from(js_srp_1.util.bytesFromBigint(this.srpClient.A)).toString("base64");
|
|
33
35
|
return {
|
|
34
36
|
a,
|
|
@@ -59,3 +61,4 @@ class GSASRPAuthenticator {
|
|
|
59
61
|
}
|
|
60
62
|
}
|
|
61
63
|
exports.GSASRPAuthenticator = GSASRPAuthenticator;
|
|
64
|
+
//# sourceMappingURL=srp-wrapper.js.map
|
|
@@ -82,7 +82,7 @@ class AssetsGenerationService {
|
|
|
82
82
|
}
|
|
83
83
|
continue;
|
|
84
84
|
}
|
|
85
|
-
const operation = assetItem.resizeOperation || "resize"
|
|
85
|
+
const operation = assetItem.resizeOperation || "resize" /* Operations.Resize */;
|
|
86
86
|
let tempScale = null;
|
|
87
87
|
if (assetItem.scale) {
|
|
88
88
|
if (_.isNumber(assetItem.scale)) {
|
|
@@ -107,27 +107,31 @@ class AssetsGenerationService {
|
|
|
107
107
|
}
|
|
108
108
|
let image;
|
|
109
109
|
switch (operation) {
|
|
110
|
-
case "overlayWith"
|
|
110
|
+
case "overlayWith" /* Operations.OverlayWith */:
|
|
111
111
|
const overlayImageScale = assetItem.overlayImageScale ||
|
|
112
112
|
constants_1.AssetConstants.defaultOverlayImageScale;
|
|
113
113
|
const imageResize = Math.round(Math.min(width, height) * overlayImageScale);
|
|
114
114
|
image = await this.resize(generationData.imagePath, imageResize, imageResize);
|
|
115
115
|
image = this.generateImage(background, width, height, image);
|
|
116
116
|
break;
|
|
117
|
-
case "blank"
|
|
117
|
+
case "blank" /* Operations.Blank */:
|
|
118
118
|
image = this.generateImage(background, width, height);
|
|
119
119
|
break;
|
|
120
|
-
case "resize"
|
|
120
|
+
case "resize" /* Operations.Resize */:
|
|
121
121
|
image = await this.resize(generationData.imagePath, width, height);
|
|
122
122
|
break;
|
|
123
|
-
case "outerScale"
|
|
123
|
+
case "outerScale" /* Operations.OuterScale */:
|
|
124
|
+
// Resize image without applying scale
|
|
124
125
|
image = await this.resize(generationData.imagePath, assetItem.width, assetItem.height);
|
|
126
|
+
// The scale will apply to the underlying layer of the generated image
|
|
125
127
|
image = this.generateImage("#00000000", width, height, image);
|
|
126
128
|
break;
|
|
127
129
|
default:
|
|
128
130
|
throw new Error(`Invalid image generation operation: ${operation}`);
|
|
129
131
|
}
|
|
132
|
+
// This code disables the alpha chanel, as some images for the Apple App Store must not have transparency.
|
|
130
133
|
if (assetItem.rgba === false) {
|
|
134
|
+
// Add an underlying white layer
|
|
131
135
|
image = this.generateImage("#FFFFFF", image.width, image.height, image);
|
|
132
136
|
}
|
|
133
137
|
if (this.isAssetFilePath(outputPath)) {
|
|
@@ -181,3 +185,4 @@ __decorate([
|
|
|
181
185
|
(0, decorators_1.exported)("assetsGenerationService")
|
|
182
186
|
], AssetsGenerationService.prototype, "generateSplashScreens", null);
|
|
183
187
|
yok_1.injector.register("assetsGenerationService", AssetsGenerationService);
|
|
188
|
+
//# sourceMappingURL=assets-generation-service.js.map
|
|
@@ -64,7 +64,7 @@ class BuildArtifactsService {
|
|
|
64
64
|
if (packages.length > 1) {
|
|
65
65
|
this.$logger.warn(`More than one ${packageExtName} found in ${buildOutputPath} directory. Using the last one produced from build.`);
|
|
66
66
|
}
|
|
67
|
-
packages = _.sortBy(packages, (pkg) => pkg.time).reverse();
|
|
67
|
+
packages = _.sortBy(packages, (pkg) => pkg.time).reverse(); // We need to reverse because sortBy always sorts in ascending order
|
|
68
68
|
return packages[0];
|
|
69
69
|
}
|
|
70
70
|
getApplicationPackagesCore(candidates, validPackageNames) {
|
|
@@ -85,3 +85,4 @@ class BuildArtifactsService {
|
|
|
85
85
|
}
|
|
86
86
|
exports.BuildArtifactsService = BuildArtifactsService;
|
|
87
87
|
yok_1.injector.register("buildArtifactsService", BuildArtifactsService);
|
|
88
|
+
//# sourceMappingURL=build-artifacts-service.js.map
|