nativescript 8.9.0-dev.0 → 8.9.0-dev.2
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/lib/.d.ts +1 -0
- package/lib/android-tools-info.js +32 -9
- package/lib/base-package-manager.js +71 -47
- package/lib/bootstrap.js +6 -1
- package/lib/bun-package-manager.js +104 -65
- package/lib/color.js +5 -2
- package/lib/commands/add-platform.js +31 -14
- package/lib/commands/apple-login.js +30 -18
- package/lib/commands/appstore-list.js +46 -34
- package/lib/commands/appstore-upload.js +68 -52
- package/lib/commands/build.js +90 -57
- package/lib/commands/clean.js +197 -161
- package/lib/commands/command-base.js +28 -14
- package/lib/commands/config.js +71 -48
- package/lib/commands/create-project.js +235 -210
- package/lib/commands/debug.js +93 -66
- package/lib/commands/deploy.js +47 -30
- package/lib/commands/embedding/embed.js +59 -33
- package/lib/commands/extensibility/install-extension.js +17 -5
- package/lib/commands/extensibility/list-extensions.js +25 -13
- package/lib/commands/extensibility/uninstall-extension.js +16 -4
- package/lib/commands/fonts.js +42 -30
- package/lib/commands/generate-assets.js +29 -13
- package/lib/commands/generate-help.js +14 -2
- package/lib/commands/generate.js +70 -12
- package/lib/commands/info.js +14 -2
- package/lib/commands/install.js +50 -34
- package/lib/commands/list-platforms.js +26 -14
- package/lib/commands/migrate.js +27 -15
- package/lib/commands/native-add.js +51 -23
- package/lib/commands/platform-clean.js +33 -19
- package/lib/commands/plugin/add-plugin.js +26 -12
- package/lib/commands/plugin/build-plugin.js +45 -31
- package/lib/commands/plugin/create-plugin.js +138 -110
- package/lib/commands/plugin/list-plugins.js +34 -22
- package/lib/commands/plugin/remove-plugin.js +35 -20
- package/lib/commands/plugin/update-plugin.js +34 -20
- package/lib/commands/post-install.js +39 -20
- package/lib/commands/prepare.js +39 -22
- package/lib/commands/preview.js +64 -49
- package/lib/commands/remove-platform.js +19 -7
- package/lib/commands/resources/resources-update.js +28 -13
- package/lib/commands/run.js +77 -55
- package/lib/commands/setup.js +1 -0
- package/lib/commands/start.js +20 -6
- package/lib/commands/test-init.js +138 -123
- package/lib/commands/test.js +97 -67
- package/lib/commands/typings.js +143 -126
- package/lib/commands/update-platform.js +40 -22
- package/lib/commands/update.js +45 -30
- package/lib/commands/widget.js +767 -0
- package/lib/common/bootstrap.js +1 -0
- package/lib/common/child-process.js +75 -53
- package/lib/common/codeGeneration/code-entity.js +2 -1
- package/lib/common/codeGeneration/code-printer.js +2 -1
- package/lib/common/command-params.js +19 -7
- package/lib/common/commands/analytics.js +43 -27
- package/lib/common/commands/autocompletion.js +59 -39
- package/lib/common/commands/device/device-log-stream.js +24 -12
- package/lib/common/commands/device/get-file.js +35 -22
- package/lib/common/commands/device/list-applications.js +24 -12
- package/lib/common/commands/device/list-devices.js +90 -72
- package/lib/common/commands/device/list-files.js +36 -23
- package/lib/common/commands/device/put-file.js +35 -22
- package/lib/common/commands/device/run-application.js +26 -12
- package/lib/common/commands/device/stop-application.js +23 -11
- package/lib/common/commands/device/uninstall-application.js +18 -6
- package/lib/common/commands/doctor.js +3 -2
- package/lib/common/commands/generate-messages.js +29 -17
- package/lib/common/commands/help.js +34 -20
- package/lib/common/commands/package-manager-get.js +18 -6
- package/lib/common/commands/package-manager-set.js +21 -9
- package/lib/common/commands/post-install.js +14 -2
- package/lib/common/commands/preuninstall.js +48 -24
- package/lib/common/commands/proxy/proxy-base.js +23 -8
- package/lib/common/commands/proxy/proxy-clear.js +16 -4
- package/lib/common/commands/proxy/proxy-get.js +15 -3
- package/lib/common/commands/proxy/proxy-set.js +101 -87
- package/lib/common/common-lib.js +1 -0
- package/lib/common/constants.js +22 -11
- package/lib/common/decorators.js +70 -10
- package/lib/common/dispatchers.js +106 -80
- package/lib/common/errors.js +116 -91
- package/lib/common/file-system.js +141 -108
- package/lib/common/header.js +5 -1
- package/lib/common/helpers.js +267 -152
- package/lib/common/host-info.js +54 -37
- package/lib/common/http-client.js +128 -93
- package/lib/common/logger/appenders/cli-appender.js +6 -1
- package/lib/common/logger/appenders/emit-appender.js +6 -1
- package/lib/common/logger/layouts/cli-layout.js +3 -1
- package/lib/common/logger/logger.js +9 -4
- package/lib/common/messages/messages.js +6 -0
- package/lib/common/mobile/android/android-application-manager.js +162 -122
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +2 -1
- package/lib/common/mobile/android/android-debug-bridge.js +118 -87
- package/lib/common/mobile/android/android-device-file-system.js +135 -98
- package/lib/common/mobile/android/android-device-hash-service.js +78 -50
- package/lib/common/mobile/android/android-device.js +93 -68
- package/lib/common/mobile/android/android-emulator-services.js +131 -105
- package/lib/common/mobile/android/android-ini-file-parser.js +9 -0
- package/lib/common/mobile/android/android-log-filter.js +5 -1
- package/lib/common/mobile/android/android-virtual-device-service.js +123 -76
- package/lib/common/mobile/android/device-android-debug-bridge.js +30 -13
- package/lib/common/mobile/android/genymotion/genymotion-service.js +123 -91
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +92 -64
- package/lib/common/mobile/android/logcat-helper.js +140 -108
- package/lib/common/mobile/application-manager-base.js +113 -84
- 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 +19 -7
- 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 +111 -79
- package/lib/common/mobile/ios/device/ios-device-file-system.js +106 -78
- package/lib/common/mobile/ios/device/ios-device-operations.js +146 -105
- package/lib/common/mobile/ios/device/ios-device.js +40 -20
- package/lib/common/mobile/ios/ios-device-base.js +82 -58
- 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 +96 -63
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +2 -1
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +95 -60
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +48 -27
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +63 -37
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +36 -24
- 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 +64 -43
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +35 -21
- package/lib/common/mobile/mobile-core/android-process-service.js +214 -143
- package/lib/common/mobile/mobile-core/device-discovery.js +14 -2
- package/lib/common/mobile/mobile-core/devices-service.js +505 -386
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +37 -24
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +65 -47
- package/lib/common/mobile/mobile-helper.js +27 -15
- package/lib/common/mobile/wp8/wp8-emulator-services.js +53 -25
- package/lib/common/opener.js +3 -2
- 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 +114 -91
- package/lib/common/queue.js +21 -9
- package/lib/common/resource-loader.js +1 -0
- package/lib/common/services/auto-completion-service.js +65 -40
- package/lib/common/services/cancellation.js +29 -17
- package/lib/common/services/commands-service.js +180 -146
- package/lib/common/services/help-service.js +166 -133
- package/lib/common/services/hooks-service.js +121 -93
- package/lib/common/services/ios-notification-service.js +35 -21
- package/lib/common/services/json-file-settings-service.js +77 -52
- package/lib/common/services/lock-service.js +58 -35
- package/lib/common/services/message-contract-generator.js +47 -35
- package/lib/common/services/messages-service.js +1 -0
- package/lib/common/services/micro-templating-service.js +21 -4
- package/lib/common/services/net-service.js +110 -90
- package/lib/common/services/project-files-manager.js +28 -10
- package/lib/common/services/project-files-provider-base.js +1 -0
- package/lib/common/services/proxy-service.js +25 -13
- package/lib/common/services/qr.js +25 -13
- package/lib/common/services/settings-service.js +2 -1
- package/lib/common/services/xcode-select-service.js +36 -20
- package/lib/common/utils.js +3 -2
- package/lib/common/validators/project-name-validator.js +2 -1
- package/lib/common/validators/validation-result.js +2 -1
- package/lib/common/verify-node-version.js +11 -3
- package/lib/common/yok.js +69 -35
- package/lib/config.js +72 -36
- package/lib/constants-provider.js +1 -0
- package/lib/constants.js +78 -25
- package/lib/controllers/build-controller.js +100 -82
- package/lib/controllers/debug-controller.js +133 -107
- package/lib/controllers/deploy-controller.js +24 -15
- package/lib/controllers/migrate-controller.js +884 -723
- package/lib/controllers/platform-controller.js +94 -71
- package/lib/controllers/prepare-controller.js +274 -232
- package/lib/controllers/run-controller.js +427 -397
- package/lib/controllers/update-controller-base.js +30 -16
- package/lib/controllers/update-controller.js +130 -94
- 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 +2 -4
- package/lib/data/run-data.js +1 -0
- package/lib/definitions/ios.d.ts +4 -2
- package/lib/definitions/project.d.ts +26 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +20 -5
- package/lib/detached-processes/cleanup-process.js +43 -30
- package/lib/detached-processes/file-log-service.js +2 -1
- package/lib/device-path-provider.js +35 -23
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +171 -149
- package/lib/device-sockets/ios/notification.js +4 -1
- package/lib/device-sockets/ios/socket-request-executor.js +42 -24
- package/lib/helpers/android-bundle-validator-helper.js +3 -2
- package/lib/helpers/deploy-command-helper.js +50 -44
- package/lib/helpers/key-command-helper.js +17 -6
- package/lib/helpers/livesync-command-helper.js +155 -137
- package/lib/helpers/network-connectivity-validator.js +18 -6
- package/lib/helpers/options-track-helper.js +19 -7
- package/lib/helpers/package-path-helper.js +1 -0
- package/lib/helpers/platform-command-helper.js +127 -101
- package/lib/helpers/version-validator-helper.js +1 -0
- package/lib/key-commands/bootstrap.js +3 -2
- package/lib/key-commands/index.js +205 -154
- package/lib/nativescript-cli-lib-bootstrap.js +4 -0
- package/lib/nativescript-cli-lib.js +1 -0
- package/lib/nativescript-cli.js +24 -6
- package/lib/node/pbxproj-dom-xcode.js +1 -0
- package/lib/node/xcode.js +1 -0
- package/lib/node-package-manager.js +114 -81
- package/lib/options.js +156 -122
- package/lib/package-installation-manager.js +172 -130
- package/lib/package-manager.js +88 -63
- package/lib/platform-command-param.js +16 -4
- package/lib/pnpm-package-manager.js +81 -59
- package/lib/project-data.js +13 -1
- package/lib/providers/project-files-provider.js +2 -1
- package/lib/resolvers/livesync-service-resolver.js +1 -0
- package/lib/services/analytics/analytics-broker-process.js +32 -19
- package/lib/services/analytics/analytics-broker.js +31 -17
- package/lib/services/analytics/analytics-service.js +210 -170
- package/lib/services/analytics/google-analytics-provider.js +59 -43
- package/lib/services/analytics-settings-service.js +37 -15
- package/lib/services/android/android-bundle-tool-service.js +61 -43
- package/lib/services/android/gradle-build-args-service.js +23 -9
- package/lib/services/android/gradle-build-service.js +36 -22
- package/lib/services/android/gradle-command-service.js +36 -22
- package/lib/services/android-device-debug-service.js +123 -90
- package/lib/services/android-plugin-build-service.js +260 -205
- package/lib/services/android-project-service.js +241 -129
- package/lib/services/android-resources-migration-service.js +71 -51
- package/lib/services/apple-portal/apple-portal-application-service.js +64 -46
- package/lib/services/apple-portal/apple-portal-cookie-service.js +1 -0
- package/lib/services/apple-portal/apple-portal-session-service.js +218 -197
- package/lib/services/apple-portal/srp/srp-wrapper.js +61 -43
- package/lib/services/assets-generation/assets-generation-service.js +128 -103
- package/lib/services/build-artifacts-service.js +22 -10
- package/lib/services/build-data-service.js +1 -0
- package/lib/services/build-info-file-service.js +36 -20
- package/lib/services/cleanup-service.js +81 -48
- package/lib/services/cocoapods-platform-manager.js +9 -0
- package/lib/services/cocoapods-service.js +153 -112
- 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 +72 -54
- package/lib/services/doctor-service.js +135 -101
- package/lib/services/extensibility-service.js +108 -81
- package/lib/services/files-hash-service.js +44 -26
- package/lib/services/hmr-status-service.js +3 -1
- package/lib/services/info-service.js +1 -0
- package/lib/services/initialize-service.js +54 -37
- package/lib/services/ios/export-options-plist-service.js +55 -38
- package/lib/services/ios/ios-signing-service.js +191 -168
- package/lib/services/ios/spm-service.js +73 -43
- package/lib/services/ios/xcodebuild-args-service.js +103 -77
- package/lib/services/ios/xcodebuild-command-service.js +26 -14
- package/lib/services/ios/xcodebuild-service.js +72 -52
- package/lib/services/ios-debugger-port-service.js +38 -24
- package/lib/services/ios-device-debug-service.js +103 -75
- package/lib/services/ios-entitlements-service.js +43 -31
- package/lib/services/ios-extensions-service.js +30 -18
- 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 +605 -437
- package/lib/services/ios-provision-service.js +132 -108
- package/lib/services/ios-watch-app-service.js +33 -21
- package/lib/services/ip-service.js +55 -38
- package/lib/services/itmstransporter-service.js +153 -129
- package/lib/services/karma-execution.js +2 -0
- package/lib/services/livesync/android-device-livesync-service-base.js +49 -31
- package/lib/services/livesync/android-device-livesync-service.js +151 -120
- package/lib/services/livesync/android-device-livesync-sockets-service.js +155 -121
- package/lib/services/livesync/android-livesync-service.js +36 -14
- package/lib/services/livesync/android-livesync-tool.js +117 -90
- package/lib/services/livesync/device-livesync-service-base.js +30 -15
- package/lib/services/livesync/ios-device-livesync-service.js +150 -114
- package/lib/services/livesync/ios-livesync-service.js +60 -42
- package/lib/services/livesync/livesync-socket.js +1 -0
- package/lib/services/livesync/platform-livesync-service-base.js +124 -94
- package/lib/services/livesync-process-data-service.js +1 -0
- package/lib/services/log-parser-service.js +2 -1
- package/lib/services/log-source-map-service.js +56 -30
- package/lib/services/marking-mode-service.js +33 -17
- package/lib/services/metadata-filtering-service.js +1 -0
- package/lib/services/npm-config-service.js +5 -1
- package/lib/services/pacote-service.js +73 -51
- package/lib/services/performance-service.js +4 -2
- package/lib/services/platform/add-platform-service.js +119 -51
- package/lib/services/platform/platform-validation-service.js +34 -22
- package/lib/services/platform/prepare-native-platform-service.js +65 -49
- package/lib/services/platform-environment-requirements.js +43 -27
- 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 +168 -125
- package/lib/services/prepare-data-service.js +1 -0
- package/lib/services/project-backup-service.js +5 -1
- package/lib/services/project-changes-service.js +152 -124
- package/lib/services/project-cleanup-service.js +79 -64
- package/lib/services/project-config-service.js +111 -73
- package/lib/services/project-data-service.js +154 -108
- package/lib/services/project-name-service.js +44 -28
- package/lib/services/project-service.js +113 -84
- package/lib/services/project-templates-service.js +68 -52
- package/lib/services/qr-code-terminal-service.js +1 -0
- package/lib/services/require-service.js +1 -0
- package/lib/services/start-service.js +60 -41
- package/lib/services/temp-service.js +22 -8
- package/lib/services/terminal-spinner-service.js +28 -15
- package/lib/services/test-execution-service.js +79 -59
- package/lib/services/test-initialization-service.js +6 -2
- package/lib/services/timeline-profiler-service.js +2 -1
- package/lib/services/user-settings-service.js +1 -0
- package/lib/services/versions-service.js +140 -119
- package/lib/services/watch-ignore-list-service.js +1 -0
- package/lib/services/webpack/webpack-compiler-service.js +279 -215
- package/lib/services/xcconfig-service.js +21 -8
- package/lib/services/xcproj-service.js +1 -0
- package/lib/shared-event-bus.js +6 -0
- package/lib/sys-info.js +63 -45
- package/lib/tools/config-manipulation/config-transformer.js +21 -0
- package/lib/tools/node-modules/node-modules-builder.js +28 -16
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +6 -0
- package/lib/yarn-package-manager.js +79 -59
- package/lib/yarn2-package-manager.js +82 -60
- package/node_modules/@npmcli/move-file/LICENSE.md +22 -0
- package/node_modules/@npmcli/move-file/README.md +69 -0
- package/node_modules/@npmcli/move-file/lib/index.js +185 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +21 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +68 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +31 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +29 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +64 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +39 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +23 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +29 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +10 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +44 -0
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +266 -0
- package/node_modules/@npmcli/move-file/package.json +47 -0
- package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/node_modules/balanced-match/LICENSE.md +21 -0
- package/node_modules/balanced-match/README.md +97 -0
- package/node_modules/balanced-match/index.js +62 -0
- package/node_modules/balanced-match/package.json +48 -0
- package/node_modules/concat-map/.travis.yml +4 -0
- package/node_modules/concat-map/LICENSE +18 -0
- package/node_modules/concat-map/README.markdown +62 -0
- package/node_modules/concat-map/example/map.js +6 -0
- package/node_modules/concat-map/index.js +13 -0
- package/node_modules/concat-map/package.json +43 -0
- package/node_modules/concat-map/test/map.js +39 -0
- package/node_modules/fs.realpath/LICENSE +43 -0
- package/node_modules/fs.realpath/README.md +33 -0
- package/node_modules/fs.realpath/index.js +66 -0
- package/node_modules/fs.realpath/old.js +303 -0
- package/node_modules/fs.realpath/package.json +26 -0
- package/node_modules/inflight/LICENSE +15 -0
- package/node_modules/inflight/README.md +37 -0
- package/node_modules/inflight/inflight.js +54 -0
- package/node_modules/inflight/package.json +29 -0
- package/node_modules/inherits/LICENSE +16 -0
- package/node_modules/inherits/README.md +42 -0
- package/node_modules/inherits/inherits.js +9 -0
- package/node_modules/inherits/inherits_browser.js +27 -0
- package/node_modules/inherits/package.json +29 -0
- package/node_modules/once/LICENSE +15 -0
- package/node_modules/once/README.md +79 -0
- package/node_modules/once/once.js +42 -0
- package/node_modules/once/package.json +33 -0
- package/node_modules/path-is-absolute/index.js +20 -0
- package/node_modules/path-is-absolute/license +21 -0
- package/node_modules/path-is-absolute/package.json +43 -0
- package/node_modules/path-is-absolute/readme.md +59 -0
- package/node_modules/rimraf/LICENSE +15 -0
- package/node_modules/rimraf/README.md +101 -0
- package/node_modules/rimraf/bin.js +68 -0
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +21 -0
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +129 -0
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +201 -0
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +47 -0
- package/node_modules/rimraf/node_modules/glob/LICENSE +21 -0
- package/node_modules/rimraf/node_modules/glob/README.md +378 -0
- package/node_modules/rimraf/node_modules/glob/common.js +238 -0
- package/node_modules/rimraf/node_modules/glob/glob.js +790 -0
- package/node_modules/rimraf/node_modules/glob/package.json +55 -0
- package/node_modules/rimraf/node_modules/glob/sync.js +486 -0
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +15 -0
- package/node_modules/rimraf/node_modules/minimatch/README.md +230 -0
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +947 -0
- package/node_modules/rimraf/node_modules/minimatch/package.json +33 -0
- package/node_modules/rimraf/package.json +32 -0
- package/node_modules/rimraf/rimraf.js +360 -0
- package/node_modules/stringify-package/LICENSE +13 -0
- package/node_modules/stringify-package/README.md +55 -0
- package/node_modules/stringify-package/index.js +18 -0
- package/node_modules/stringify-package/package.json +38 -0
- package/node_modules/wrappy/LICENSE +15 -0
- package/node_modules/wrappy/README.md +36 -0
- package/node_modules/wrappy/package.json +29 -0
- package/node_modules/wrappy/wrappy.js +33 -0
- package/package.json +79 -64
|
@@ -5,6 +5,15 @@ 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
|
+
};
|
|
8
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
18
|
exports.AndroidProjectService = void 0;
|
|
10
19
|
const path = require("path");
|
|
@@ -18,7 +27,40 @@ const constants_1 = require("../common/constants");
|
|
|
18
27
|
const helpers_1 = require("../common/helpers");
|
|
19
28
|
const decorators_1 = require(".././common/decorators");
|
|
20
29
|
const yok_1 = require("../common/yok");
|
|
21
|
-
|
|
30
|
+
//
|
|
31
|
+
// we sort the native dependencies topologically to make sure they are processed in the right order
|
|
32
|
+
// native dependenciess need to be sorted so the deepst dependencies are built before it's parents
|
|
33
|
+
//
|
|
34
|
+
// for example, given this dep structure (assuming these are all native dependencies that need to be built)
|
|
35
|
+
// (note: we list all dependencies at the root level, so the leaf nodes are essentially references to the root nodes)
|
|
36
|
+
//
|
|
37
|
+
// |- dep1
|
|
38
|
+
// |- dep2
|
|
39
|
+
// |- |- dep3
|
|
40
|
+
// |- |- dep4
|
|
41
|
+
// |- |- |- dep5
|
|
42
|
+
// |- dep3
|
|
43
|
+
// |- dep4
|
|
44
|
+
// |- |- dep5
|
|
45
|
+
// |- dep5
|
|
46
|
+
//
|
|
47
|
+
// It is sorted:
|
|
48
|
+
//
|
|
49
|
+
// |- dep1
|
|
50
|
+
// |- dep3
|
|
51
|
+
// |- dep5
|
|
52
|
+
// |- dep4 # depends on dep5, so dep5 must be built first, ie above ^
|
|
53
|
+
// |- |- dep5
|
|
54
|
+
// |- dep2 # depends on dep3, dep4 (and dep5 through dep4) so all of them must be built first before dep2 is built
|
|
55
|
+
// |- |- dep3
|
|
56
|
+
// |- |- dep4
|
|
57
|
+
// |- |- |- dep5
|
|
58
|
+
//
|
|
59
|
+
// for more details see: https://wikiless.org/wiki/Topological_sorting?lang=en
|
|
60
|
+
//
|
|
61
|
+
function topologicalSortNativeDependencies(dependencies, start = [], depth = 0, total = 0 // do not pass in, we calculate it in the initial run!
|
|
62
|
+
) {
|
|
63
|
+
// we set the total on the initial call - and never increment it, as it's used for esacaping the recursion
|
|
22
64
|
if (total === 0) {
|
|
23
65
|
total = dependencies.length;
|
|
24
66
|
}
|
|
@@ -32,6 +74,8 @@ function topologicalSortNativeDependencies(dependencies, start = [], depth = 0,
|
|
|
32
74
|
return sortedDeps;
|
|
33
75
|
}, start);
|
|
34
76
|
const remainingDeps = dependencies.filter((nativeDep) => !sortedDeps.includes(nativeDep));
|
|
77
|
+
// recurse if we still have remaining deps
|
|
78
|
+
// the second condition here prevents infinite recursion
|
|
35
79
|
if (remainingDeps.length && sortedDeps.length < total) {
|
|
36
80
|
return topologicalSortNativeDependencies(remainingDeps, sortedDeps, depth + 1, total);
|
|
37
81
|
}
|
|
@@ -85,7 +129,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
85
129
|
constants.APK_DIR,
|
|
86
130
|
];
|
|
87
131
|
const packageName = this.getProjectNameFromId(projectData);
|
|
88
|
-
const runtimePackage = this.$projectDataService.getRuntimePackage(projectData.projectDir, "android");
|
|
132
|
+
const runtimePackage = this.$projectDataService.getRuntimePackage(projectData.projectDir, "android" /* constants.PlatformTypes.android */);
|
|
89
133
|
this._platformData = {
|
|
90
134
|
frameworkPackageName: runtimePackage.name,
|
|
91
135
|
normalizedPlatformName: "Android",
|
|
@@ -126,7 +170,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
126
170
|
configurationFileName: constants.MANIFEST_FILE_NAME,
|
|
127
171
|
configurationFilePath: path.join(...configurationsDirectoryArr),
|
|
128
172
|
relativeToFrameworkConfigurationFilePath: path.join(constants.SRC_DIR, constants.MAIN_DIR, constants.MANIFEST_FILE_NAME),
|
|
129
|
-
fastLivesyncFileExtensions: [".jpg", ".gif", ".png", ".bmp", ".webp"],
|
|
173
|
+
fastLivesyncFileExtensions: [".jpg", ".gif", ".png", ".bmp", ".webp"], // http://developer.android.com/guide/appendix/media-formats.html
|
|
130
174
|
};
|
|
131
175
|
}
|
|
132
176
|
return this._platformData;
|
|
@@ -135,8 +179,10 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
135
179
|
const currentPlatformData = this.$projectDataService.getRuntimePackage(projectData.projectDir, platformData.platformNameLowerCase);
|
|
136
180
|
return currentPlatformData && currentPlatformData[constants.VERSION_STRING];
|
|
137
181
|
}
|
|
138
|
-
|
|
139
|
-
return
|
|
182
|
+
validateOptions() {
|
|
183
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
184
|
+
return true;
|
|
185
|
+
});
|
|
140
186
|
}
|
|
141
187
|
getAppResourcesDestinationDirectoryPath(projectData) {
|
|
142
188
|
const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
|
|
@@ -147,36 +193,41 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
147
193
|
return this.getLegacyAppResourcesDestinationDirPath(projectData);
|
|
148
194
|
}
|
|
149
195
|
}
|
|
150
|
-
|
|
151
|
-
this
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
196
|
+
validate(projectData, options, notConfiguredEnvOptions) {
|
|
197
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
198
|
+
this.validatePackageName(projectData.projectIdentifiers.android);
|
|
199
|
+
this.validateProjectName(projectData.projectName);
|
|
200
|
+
const checkEnvironmentRequirementsOutput = yield this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
|
|
201
|
+
platform: this.getPlatformData(projectData).normalizedPlatformName,
|
|
202
|
+
projectDir: projectData.projectDir,
|
|
203
|
+
options,
|
|
204
|
+
notConfiguredEnvOptions,
|
|
205
|
+
});
|
|
206
|
+
this.$androidToolsInfo.validateInfo({
|
|
207
|
+
showWarningsAsErrors: true,
|
|
208
|
+
projectDir: projectData.projectDir,
|
|
209
|
+
validateTargetSdk: true,
|
|
210
|
+
});
|
|
211
|
+
return {
|
|
212
|
+
checkEnvironmentRequirementsOutput,
|
|
213
|
+
};
|
|
163
214
|
});
|
|
164
|
-
return {
|
|
165
|
-
checkEnvironmentRequirementsOutput,
|
|
166
|
-
};
|
|
167
215
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
216
|
+
createProject(frameworkDir, frameworkVersion, projectData) {
|
|
217
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
218
|
+
if (semver.lt(frameworkVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
|
|
219
|
+
this.$errors.fail(`The NativeScript CLI requires Android runtime ${AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE} or later to work properly.`);
|
|
220
|
+
}
|
|
221
|
+
this.$fs.ensureDirectoryExists(this.getPlatformData(projectData).projectRoot);
|
|
222
|
+
const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
|
|
223
|
+
projectDir: projectData.projectDir,
|
|
224
|
+
});
|
|
225
|
+
const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
|
|
226
|
+
this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
|
|
227
|
+
this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
|
|
228
|
+
// TODO: Check if we actually need this and if it should be targetSdk or compileSdk
|
|
229
|
+
this.cleanResValues(targetSdkVersion, projectData);
|
|
175
230
|
});
|
|
176
|
-
const targetSdkVersion = androidToolsInfo && androidToolsInfo.targetSdkVersion;
|
|
177
|
-
this.$logger.trace(`Using Android SDK '${targetSdkVersion}'.`);
|
|
178
|
-
this.copy(this.getPlatformData(projectData).projectRoot, frameworkDir, "*", "-R");
|
|
179
|
-
this.cleanResValues(targetSdkVersion, projectData);
|
|
180
231
|
}
|
|
181
232
|
getResDestinationDir(projectData) {
|
|
182
233
|
const appResourcesDirStructureHasMigrated = this.$androidResourcesMigrationService.hasMigrated(projectData.getAppResourcesDirectoryPath());
|
|
@@ -206,30 +257,35 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
206
257
|
this.$logger.trace(directoriesToClean);
|
|
207
258
|
_.map(directoriesToClean, (dir) => this.$fs.deleteDirectory(dir));
|
|
208
259
|
}
|
|
209
|
-
|
|
210
|
-
this
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
stringsFilePath = path.join(appResourcesDestinationDirectoryPath, "values", "strings.xml");
|
|
219
|
-
}
|
|
220
|
-
shell.sed("-i", /__NAME__/, projectData.projectName, stringsFilePath);
|
|
221
|
-
shell.sed("-i", /__TITLE_ACTIVITY__/, projectData.projectName, stringsFilePath);
|
|
222
|
-
const gradleSettingsFilePath = path.join(this.getPlatformData(projectData).projectRoot, "settings.gradle");
|
|
223
|
-
shell.sed("-i", /__PROJECT_NAME__/, this.getProjectNameFromId(projectData), gradleSettingsFilePath);
|
|
224
|
-
try {
|
|
225
|
-
const appGradleContent = this.$fs.readText(projectData.appGradlePath);
|
|
226
|
-
if (appGradleContent.indexOf(constants.PACKAGE_PLACEHOLDER_NAME) !== -1) {
|
|
227
|
-
shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
|
|
260
|
+
interpolateData(projectData) {
|
|
261
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
262
|
+
// Interpolate the apilevel and package
|
|
263
|
+
this.interpolateConfigurationFile(projectData);
|
|
264
|
+
const appResourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
|
|
265
|
+
let stringsFilePath;
|
|
266
|
+
const appResourcesDestinationDirectoryPath = this.getAppResourcesDestinationDirectoryPath(projectData);
|
|
267
|
+
if (this.$androidResourcesMigrationService.hasMigrated(appResourcesDirectoryPath)) {
|
|
268
|
+
stringsFilePath = path.join(appResourcesDestinationDirectoryPath, constants.MAIN_DIR, constants.RESOURCES_DIR, "values", "strings.xml");
|
|
228
269
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
270
|
+
else {
|
|
271
|
+
stringsFilePath = path.join(appResourcesDestinationDirectoryPath, "values", "strings.xml");
|
|
272
|
+
}
|
|
273
|
+
shell.sed("-i", /__NAME__/, projectData.projectName, stringsFilePath);
|
|
274
|
+
shell.sed("-i", /__TITLE_ACTIVITY__/, projectData.projectName, stringsFilePath);
|
|
275
|
+
const gradleSettingsFilePath = path.join(this.getPlatformData(projectData).projectRoot, "settings.gradle");
|
|
276
|
+
shell.sed("-i", /__PROJECT_NAME__/, this.getProjectNameFromId(projectData), gradleSettingsFilePath);
|
|
277
|
+
try {
|
|
278
|
+
// will replace applicationId in app/App_Resources/Android/app.gradle if it has not been edited by the user
|
|
279
|
+
const appGradleContent = this.$fs.readText(projectData.appGradlePath);
|
|
280
|
+
if (appGradleContent.indexOf(constants.PACKAGE_PLACEHOLDER_NAME) !== -1) {
|
|
281
|
+
//TODO: For compatibility with old templates. Once all templates are updated should delete.
|
|
282
|
+
shell.sed("-i", new RegExp(constants.PACKAGE_PLACEHOLDER_NAME), projectData.projectIdentifiers.android, projectData.appGradlePath);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
catch (e) {
|
|
286
|
+
this.$logger.trace(`Templates updated and no need for replace in app.gradle.`);
|
|
287
|
+
}
|
|
288
|
+
});
|
|
233
289
|
}
|
|
234
290
|
interpolateConfigurationFile(projectData) {
|
|
235
291
|
const manifestPath = this.getPlatformData(projectData).configurationFilePath;
|
|
@@ -248,24 +304,30 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
248
304
|
afterCreateProject(projectRoot) {
|
|
249
305
|
return null;
|
|
250
306
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
307
|
+
updatePlatform(currentVersion, newVersion, canUpdate, projectData, addPlatform, removePlatforms) {
|
|
308
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
309
|
+
if (semver.eq(newVersion, AndroidProjectService.MIN_RUNTIME_VERSION_WITH_GRADLE)) {
|
|
310
|
+
const platformLowercase = this.getPlatformData(projectData).normalizedPlatformName.toLowerCase();
|
|
311
|
+
yield removePlatforms([platformLowercase.split("@")[0]]);
|
|
312
|
+
yield addPlatform(platformLowercase);
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
return true;
|
|
316
|
+
});
|
|
259
317
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
318
|
+
buildProject(projectRoot, projectData, buildData) {
|
|
319
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
320
|
+
const platformData = this.getPlatformData(projectData);
|
|
321
|
+
yield this.$gradleBuildService.buildProject(platformData.projectRoot, buildData);
|
|
322
|
+
const outputPath = platformData.getBuildOutputPath(buildData);
|
|
323
|
+
yield this.$filesHashService.saveHashesForProject(this._platformData, outputPath);
|
|
324
|
+
yield this.trackKotlinUsage(projectRoot);
|
|
325
|
+
});
|
|
266
326
|
}
|
|
267
|
-
|
|
268
|
-
return this
|
|
327
|
+
buildForDeploy(projectRoot, projectData, buildData) {
|
|
328
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
329
|
+
return this.buildProject(projectRoot, projectData, buildData);
|
|
330
|
+
});
|
|
269
331
|
}
|
|
270
332
|
isPlatformPrepared(projectRoot, projectData) {
|
|
271
333
|
return this.$fs.exists(path.join(this.getPlatformData(projectData).appDestinationDirectoryPath, this.$options.hostProjectModuleName));
|
|
@@ -273,7 +335,10 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
273
335
|
getFrameworkFilesExtensions() {
|
|
274
336
|
return [".jar", ".dat"];
|
|
275
337
|
}
|
|
276
|
-
|
|
338
|
+
prepareProject() {
|
|
339
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
340
|
+
// Intentionally left empty.
|
|
341
|
+
});
|
|
277
342
|
}
|
|
278
343
|
ensureConfigurationFileInAppResources(projectData) {
|
|
279
344
|
const appResourcesDirectoryPath = projectData.appResourcesDirectoryPath;
|
|
@@ -290,6 +355,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
290
355
|
this.$logger.warn("No manifest found in " + originalAndroidManifestFilePath);
|
|
291
356
|
return;
|
|
292
357
|
}
|
|
358
|
+
// Overwrite the AndroidManifest from runtime.
|
|
293
359
|
if (!appResourcesDirStructureHasMigrated) {
|
|
294
360
|
this.$fs.copyFile(originalAndroidManifestFilePath, this.getPlatformData(projectData).configurationFilePath);
|
|
295
361
|
}
|
|
@@ -306,6 +372,8 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
306
372
|
}
|
|
307
373
|
else {
|
|
308
374
|
this.$fs.copyFile(path.join(projectAppResourcesPath, platformData.normalizedPlatformName, "*"), platformsAppResourcesPath);
|
|
375
|
+
// https://github.com/NativeScript/android-runtime/issues/899
|
|
376
|
+
// App_Resources/Android/libs is reserved to user's aars and jars, but they should not be copied as resources
|
|
309
377
|
this.$fs.deleteDirectory(path.join(platformsAppResourcesPath, "libs"));
|
|
310
378
|
}
|
|
311
379
|
const androidToolsInfo = this.$androidToolsInfo.getToolsInfo({
|
|
@@ -314,41 +382,54 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
314
382
|
const compileSdkVersion = androidToolsInfo && androidToolsInfo.compileSdkVersion;
|
|
315
383
|
this.cleanResValues(compileSdkVersion, projectData);
|
|
316
384
|
}
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
385
|
+
preparePluginNativeCode(pluginData, projectData) {
|
|
386
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
387
|
+
// build Android plugins which contain AndroidManifest.xml and/or resources
|
|
388
|
+
const pluginPlatformsFolderPath = this.getPluginPlatformsFolderPath(pluginData, AndroidProjectService.ANDROID_PLATFORM_NAME);
|
|
389
|
+
if (this.$fs.exists(pluginPlatformsFolderPath)) {
|
|
390
|
+
const options = {
|
|
391
|
+
gradlePath: this.$options.gradlePath,
|
|
392
|
+
gradleArgs: this.$options.gradleArgs,
|
|
393
|
+
projectDir: projectData.projectDir,
|
|
394
|
+
pluginName: pluginData.name,
|
|
395
|
+
platformsAndroidDirPath: pluginPlatformsFolderPath,
|
|
396
|
+
aarOutputDir: pluginPlatformsFolderPath,
|
|
397
|
+
tempPluginDirPath: path.join(projectData.platformsDir, "tempPlugin"),
|
|
398
|
+
};
|
|
399
|
+
if (yield this.$androidPluginBuildService.buildAar(options)) {
|
|
400
|
+
this.$logger.info(`Built aar for ${options.pluginName}`);
|
|
401
|
+
}
|
|
402
|
+
this.$androidPluginBuildService.migrateIncludeGradle(options);
|
|
331
403
|
}
|
|
332
|
-
|
|
333
|
-
}
|
|
404
|
+
});
|
|
334
405
|
}
|
|
335
|
-
|
|
336
|
-
return
|
|
406
|
+
processConfigurationFilesFromAppResources() {
|
|
407
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
408
|
+
return;
|
|
409
|
+
});
|
|
337
410
|
}
|
|
338
|
-
|
|
411
|
+
removePluginNativeCode(pluginData, projectData) {
|
|
412
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
413
|
+
// not implemented
|
|
414
|
+
});
|
|
339
415
|
}
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
416
|
+
beforePrepareAllPlugins(projectData, dependencies) {
|
|
417
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
418
|
+
if (dependencies) {
|
|
419
|
+
dependencies = this.filterUniqueDependencies(dependencies);
|
|
420
|
+
return this.provideDependenciesJson(projectData, dependencies);
|
|
421
|
+
}
|
|
422
|
+
});
|
|
345
423
|
}
|
|
346
|
-
|
|
347
|
-
return
|
|
424
|
+
handleNativeDependenciesChange(projectData, opts) {
|
|
425
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
426
|
+
return;
|
|
427
|
+
});
|
|
348
428
|
}
|
|
349
429
|
filterUniqueDependencies(dependencies) {
|
|
350
430
|
const depsDictionary = dependencies.reduce((dict, dep) => {
|
|
351
431
|
const collision = dict[dep.name];
|
|
432
|
+
// in case there are multiple dependencies to the same module, the one declared in the package.json takes precedence
|
|
352
433
|
if (!collision || collision.depth > dep.depth) {
|
|
353
434
|
dict[dep.name] = dep;
|
|
354
435
|
}
|
|
@@ -367,6 +448,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
367
448
|
name,
|
|
368
449
|
directory: path.relative(platformDir, directory),
|
|
369
450
|
dependencies: dependencies.filter((dep) => {
|
|
451
|
+
// filter out transient dependencies that don't have native dependencies
|
|
370
452
|
return (nativeDependencyData.findIndex((nativeDep) => nativeDep.name === dep) !== -1);
|
|
371
453
|
}),
|
|
372
454
|
};
|
|
@@ -374,6 +456,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
374
456
|
nativeDependencies = topologicalSortNativeDependencies(nativeDependencies);
|
|
375
457
|
const jsonContent = JSON.stringify(nativeDependencies, null, 4);
|
|
376
458
|
this.$fs.writeFile(dependenciesJsonPath, jsonContent);
|
|
459
|
+
// we sort all the dependencies to respect the topological sorting of the native dependencies
|
|
377
460
|
return dependencies.sort(function (a, b) {
|
|
378
461
|
return (nativeDependencies.findIndex((n) => n.name === a.name) -
|
|
379
462
|
nativeDependencies.findIndex((n) => n.name === b.name));
|
|
@@ -384,27 +467,36 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
384
467
|
(nativescript.android ||
|
|
385
468
|
(nativescript.platforms && nativescript.platforms.android)));
|
|
386
469
|
}
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
470
|
+
stopServices(projectRoot) {
|
|
471
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
472
|
+
const result = yield this.$gradleCommandService.executeCommand(["--stop", "--quiet"], {
|
|
473
|
+
cwd: projectRoot,
|
|
474
|
+
message: "Gradle stop services...",
|
|
475
|
+
stdio: "pipe",
|
|
476
|
+
});
|
|
477
|
+
return result;
|
|
392
478
|
});
|
|
393
|
-
return result;
|
|
394
479
|
}
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
480
|
+
cleanProject(projectRoot) {
|
|
481
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
482
|
+
yield this.$gradleBuildService.cleanProject(projectRoot, {
|
|
483
|
+
release: false,
|
|
484
|
+
});
|
|
398
485
|
});
|
|
399
486
|
}
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
487
|
+
cleanDeviceTempFolder(deviceIdentifier, projectData) {
|
|
488
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
489
|
+
const adb = this.$injector.resolve(device_android_debug_bridge_1.DeviceAndroidDebugBridge, {
|
|
490
|
+
identifier: deviceIdentifier,
|
|
491
|
+
});
|
|
492
|
+
const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
|
|
493
|
+
yield adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
|
|
403
494
|
});
|
|
404
|
-
const deviceRootPath = `${constants_1.LiveSyncPaths.ANDROID_TMP_DIR_NAME}/${projectData.projectIdentifiers.android}`;
|
|
405
|
-
await adb.executeShellCommand(["rm", "-rf", deviceRootPath]);
|
|
406
495
|
}
|
|
407
|
-
|
|
496
|
+
checkForChanges() {
|
|
497
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
498
|
+
// Nothing android specific to check yet.
|
|
499
|
+
});
|
|
408
500
|
}
|
|
409
501
|
getDeploymentTarget(projectData) {
|
|
410
502
|
return;
|
|
@@ -414,9 +506,12 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
414
506
|
shell.cp(cpArg, paths, projectRoot);
|
|
415
507
|
}
|
|
416
508
|
validatePackageName(packageName) {
|
|
509
|
+
//Make the package conform to Java package types
|
|
510
|
+
//Enforce underscore limitation
|
|
417
511
|
if (!/^[a-zA-Z]+(\.[a-zA-Z0-9][a-zA-Z0-9_]*)+$/.test(packageName)) {
|
|
418
512
|
this.$errors.fail(`Package name must look like: com.company.Name. Got: ${packageName}`);
|
|
419
513
|
}
|
|
514
|
+
//Class is a reserved word
|
|
420
515
|
if (/\b[Cc]lass\b/.test(packageName)) {
|
|
421
516
|
this.$errors.fail("class is a reserved word");
|
|
422
517
|
}
|
|
@@ -425,6 +520,7 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
425
520
|
if (projectName === "") {
|
|
426
521
|
this.$errors.fail("Project name cannot be empty");
|
|
427
522
|
}
|
|
523
|
+
//Classes in Java don't begin with numbers
|
|
428
524
|
if (/^[0-9]/.test(projectName)) {
|
|
429
525
|
this.$errors.fail("Project name must not begin with a number");
|
|
430
526
|
}
|
|
@@ -445,6 +541,19 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
445
541
|
];
|
|
446
542
|
return path.join(this.getPlatformData(projectData).projectRoot, ...resourcePath);
|
|
447
543
|
}
|
|
544
|
+
/**
|
|
545
|
+
* The purpose of this method is to delete the previously prepared user resources.
|
|
546
|
+
* The content of the `<platforms>/android/.../res` directory is based on user's resources and gradle project template from android-runtime.
|
|
547
|
+
* During preparation of the `<path to user's App_Resources>/Android` we want to clean all the users files from previous preparation,
|
|
548
|
+
* but keep the ones that were introduced during `platform add` of the android-runtime.
|
|
549
|
+
* Currently the Gradle project template contains resources only in values and values-v21 directories.
|
|
550
|
+
* So the current logic of the method is cleaning al resources from `<platforms>/android/.../res` that are not in `values.*` directories
|
|
551
|
+
* and that exist in the `<path to user's App_Resources>/Android/.../res` directory
|
|
552
|
+
* This means that if user has a resource file in values-v29 for example, builds the project and then deletes this resource,
|
|
553
|
+
* it will be kept in platforms directory. Reference issue: `https://github.com/NativeScript/nativescript-cli/issues/5083`
|
|
554
|
+
* Same is valid for files in `drawable-<resolution>` directories - in case in user's resources there's drawable-hdpi directory,
|
|
555
|
+
* which is deleted after the first build of app, it will remain in platforms directory.
|
|
556
|
+
*/
|
|
448
557
|
cleanUpPreparedResources(projectData) {
|
|
449
558
|
let resourcesDirPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName);
|
|
450
559
|
if (this.$androidResourcesMigrationService.hasMigrated(projectData.appResourcesDirectoryPath)) {
|
|
@@ -461,22 +570,24 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
461
570
|
});
|
|
462
571
|
}
|
|
463
572
|
}
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
573
|
+
trackKotlinUsage(projectRoot) {
|
|
574
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
575
|
+
const buildStatistics = this.tryGetAndroidBuildStatistics(projectRoot);
|
|
576
|
+
try {
|
|
577
|
+
if (buildStatistics && buildStatistics.kotlinUsage) {
|
|
578
|
+
const analyticsDelimiter = constants.AnalyticsEventLabelDelimiter;
|
|
579
|
+
const hasUseKotlinPropertyInAppData = `hasUseKotlinPropertyInApp${analyticsDelimiter}${buildStatistics.kotlinUsage.hasUseKotlinPropertyInApp}`;
|
|
580
|
+
const hasKotlinRuntimeClassesData = `hasKotlinRuntimeClasses${analyticsDelimiter}${buildStatistics.kotlinUsage.hasKotlinRuntimeClasses}`;
|
|
581
|
+
yield this.$analyticsService.trackEventActionInGoogleAnalytics({
|
|
582
|
+
action: "Using Kotlin" /* constants.TrackActionNames.UsingKotlin */,
|
|
583
|
+
additionalData: `${hasUseKotlinPropertyInAppData}${analyticsDelimiter}${hasKotlinRuntimeClassesData}`,
|
|
584
|
+
});
|
|
585
|
+
}
|
|
475
586
|
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
}
|
|
587
|
+
catch (e) {
|
|
588
|
+
this.$logger.trace(`Failed to track android build statistics. Error is: ${e.message}`);
|
|
589
|
+
}
|
|
590
|
+
});
|
|
480
591
|
}
|
|
481
592
|
tryGetAndroidBuildStatistics(projectRoot) {
|
|
482
593
|
const staticsFilePath = path.join(projectRoot, constants.ANDROID_ANALYTICS_DATA_DIR, constants.ANDROID_ANALYTICS_DATA_FILE);
|
|
@@ -492,7 +603,6 @@ class AndroidProjectService extends projectServiceBaseLib.PlatformProjectService
|
|
|
492
603
|
return buildStatistics;
|
|
493
604
|
}
|
|
494
605
|
}
|
|
495
|
-
exports.AndroidProjectService = AndroidProjectService;
|
|
496
606
|
AndroidProjectService.VALUES_DIRNAME = "values";
|
|
497
607
|
AndroidProjectService.VALUES_VERSION_DIRNAME_PREFIX = AndroidProjectService.VALUES_DIRNAME + "-v";
|
|
498
608
|
AndroidProjectService.ANDROID_PLATFORM_NAME = "android";
|
|
@@ -501,4 +611,6 @@ __decorate([
|
|
|
501
611
|
(0, decorators_1.performanceLog)(),
|
|
502
612
|
(0, helpers_1.hook)("buildAndroid")
|
|
503
613
|
], AndroidProjectService.prototype, "buildProject", null);
|
|
614
|
+
exports.AndroidProjectService = AndroidProjectService;
|
|
504
615
|
yok_1.injector.register("androidProjectService", AndroidProjectService);
|
|
616
|
+
//# sourceMappingURL=android-project-service.js.map
|