nativescript 8.9.0-dev.2 → 8.9.0-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/config/test-deps-versions-generated.json +1 -1
- package/lib/android-tools-info.js +9 -32
- package/lib/base-package-manager.js +47 -71
- package/lib/bootstrap.js +1 -5
- package/lib/bun-package-manager.js +65 -104
- package/lib/color.js +2 -5
- package/lib/commands/add-platform.js +14 -31
- package/lib/commands/apple-login.js +18 -30
- package/lib/commands/appstore-list.js +34 -46
- package/lib/commands/appstore-upload.js +52 -68
- package/lib/commands/build.js +57 -90
- package/lib/commands/clean.js +161 -197
- package/lib/commands/command-base.js +14 -28
- package/lib/commands/config.js +48 -71
- package/lib/commands/create-project.js +210 -235
- package/lib/commands/debug.js +66 -93
- package/lib/commands/deploy.js +30 -47
- package/lib/commands/embedding/embed.js +33 -59
- package/lib/commands/extensibility/install-extension.js +5 -17
- package/lib/commands/extensibility/list-extensions.js +13 -25
- package/lib/commands/extensibility/uninstall-extension.js +4 -16
- package/lib/commands/fonts.js +30 -42
- package/lib/commands/generate-assets.js +13 -29
- package/lib/commands/generate-help.js +2 -14
- package/lib/commands/generate.js +12 -70
- package/lib/commands/info.js +2 -14
- package/lib/commands/install.js +34 -50
- package/lib/commands/list-platforms.js +14 -26
- package/lib/commands/migrate.js +15 -27
- package/lib/commands/native-add.js +23 -51
- package/lib/commands/platform-clean.js +19 -33
- package/lib/commands/plugin/add-plugin.js +12 -26
- package/lib/commands/plugin/build-plugin.js +31 -45
- package/lib/commands/plugin/create-plugin.js +110 -138
- package/lib/commands/plugin/list-plugins.js +22 -34
- package/lib/commands/plugin/remove-plugin.js +20 -35
- package/lib/commands/plugin/update-plugin.js +20 -34
- package/lib/commands/post-install.js +20 -39
- package/lib/commands/prepare.js +22 -39
- package/lib/commands/preview.js +49 -64
- package/lib/commands/remove-platform.js +7 -19
- package/lib/commands/resources/resources-update.js +13 -28
- package/lib/commands/run.js +55 -77
- package/lib/commands/setup.js +0 -1
- package/lib/commands/start.js +6 -20
- package/lib/commands/test-init.js +123 -138
- package/lib/commands/test.js +67 -97
- package/lib/commands/typings.js +126 -143
- package/lib/commands/update-platform.js +22 -40
- package/lib/commands/update.js +30 -45
- package/lib/commands/widget.js +390 -352
- package/lib/common/bootstrap.js +0 -1
- package/lib/common/child-process.js +53 -75
- package/lib/common/codeGeneration/code-entity.js +1 -2
- package/lib/common/codeGeneration/code-printer.js +1 -2
- package/lib/common/command-params.js +7 -19
- package/lib/common/commands/analytics.js +27 -43
- package/lib/common/commands/autocompletion.js +39 -59
- package/lib/common/commands/device/device-log-stream.js +12 -24
- package/lib/common/commands/device/get-file.js +22 -35
- package/lib/common/commands/device/list-applications.js +12 -24
- package/lib/common/commands/device/list-devices.js +72 -90
- package/lib/common/commands/device/list-files.js +23 -36
- package/lib/common/commands/device/put-file.js +22 -35
- package/lib/common/commands/device/run-application.js +12 -26
- package/lib/common/commands/device/stop-application.js +11 -23
- package/lib/common/commands/device/uninstall-application.js +6 -18
- package/lib/common/commands/doctor.js +2 -3
- package/lib/common/commands/generate-messages.js +17 -29
- package/lib/common/commands/help.js +20 -34
- package/lib/common/commands/package-manager-get.js +6 -18
- package/lib/common/commands/package-manager-set.js +9 -21
- package/lib/common/commands/post-install.js +2 -14
- package/lib/common/commands/preuninstall.js +24 -48
- package/lib/common/commands/proxy/proxy-base.js +8 -23
- package/lib/common/commands/proxy/proxy-clear.js +4 -16
- package/lib/common/commands/proxy/proxy-get.js +3 -15
- package/lib/common/commands/proxy/proxy-set.js +87 -101
- package/lib/common/common-lib.js +0 -1
- package/lib/common/constants.js +11 -22
- package/lib/common/decorators.js +10 -70
- package/lib/common/dispatchers.js +80 -106
- package/lib/common/errors.js +91 -116
- package/lib/common/file-system.js +108 -141
- package/lib/common/header.js +1 -5
- package/lib/common/helpers.js +152 -267
- package/lib/common/host-info.js +37 -54
- package/lib/common/http-client.js +93 -128
- package/lib/common/logger/appenders/cli-appender.js +1 -6
- package/lib/common/logger/appenders/emit-appender.js +1 -6
- package/lib/common/logger/layouts/cli-layout.js +1 -3
- package/lib/common/logger/logger.js +4 -9
- package/lib/common/messages/messages.js +0 -6
- package/lib/common/mobile/android/android-application-manager.js +122 -162
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +1 -2
- package/lib/common/mobile/android/android-debug-bridge.js +87 -118
- package/lib/common/mobile/android/android-device-file-system.js +98 -135
- package/lib/common/mobile/android/android-device-hash-service.js +50 -78
- package/lib/common/mobile/android/android-device.js +68 -93
- package/lib/common/mobile/android/android-emulator-services.js +105 -131
- package/lib/common/mobile/android/android-ini-file-parser.js +0 -9
- package/lib/common/mobile/android/android-log-filter.js +1 -5
- package/lib/common/mobile/android/android-virtual-device-service.js +76 -123
- package/lib/common/mobile/android/device-android-debug-bridge.js +13 -30
- package/lib/common/mobile/android/genymotion/genymotion-service.js +91 -123
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +64 -92
- package/lib/common/mobile/android/logcat-helper.js +108 -140
- package/lib/common/mobile/application-manager-base.js +84 -113
- package/lib/common/mobile/device-emitter.js +0 -4
- package/lib/common/mobile/device-log-emitter.js +0 -1
- package/lib/common/mobile/device-log-provider-base.js +7 -19
- package/lib/common/mobile/device-log-provider.js +0 -23
- package/lib/common/mobile/device-platforms-constants.js +0 -1
- package/lib/common/mobile/emulator-helper.js +0 -3
- package/lib/common/mobile/ios/device/ios-application-manager.js +79 -111
- package/lib/common/mobile/ios/device/ios-device-file-system.js +78 -106
- package/lib/common/mobile/ios/device/ios-device-operations.js +105 -146
- package/lib/common/mobile/ios/device/ios-device.js +20 -40
- package/lib/common/mobile/ios/ios-device-base.js +58 -82
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +0 -2
- package/lib/common/mobile/ios/ios-log-filter.js +0 -1
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +63 -96
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +1 -2
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +60 -95
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +27 -48
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +37 -63
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +24 -36
- package/lib/common/mobile/local-to-device-path-data-factory.js +0 -1
- package/lib/common/mobile/log-filter.js +0 -2
- package/lib/common/mobile/logging-levels.js +0 -1
- package/lib/common/mobile/mobile-core/android-device-discovery.js +43 -64
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +21 -35
- package/lib/common/mobile/mobile-core/android-process-service.js +143 -214
- package/lib/common/mobile/mobile-core/device-discovery.js +2 -14
- package/lib/common/mobile/mobile-core/devices-service.js +386 -505
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +24 -37
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +47 -65
- package/lib/common/mobile/mobile-helper.js +15 -27
- package/lib/common/mobile/wp8/wp8-emulator-services.js +25 -53
- package/lib/common/opener.js +2 -3
- package/lib/common/os-info.js +0 -1
- package/lib/common/plist-parser.js +0 -1
- package/lib/common/project-helper.js +0 -1
- package/lib/common/prompter.js +91 -114
- package/lib/common/queue.js +9 -21
- package/lib/common/resource-loader.js +0 -1
- package/lib/common/services/auto-completion-service.js +40 -65
- package/lib/common/services/cancellation.js +17 -29
- package/lib/common/services/commands-service.js +146 -180
- package/lib/common/services/help-service.js +133 -166
- package/lib/common/services/hooks-service.js +93 -121
- package/lib/common/services/ios-notification-service.js +21 -35
- package/lib/common/services/json-file-settings-service.js +52 -77
- package/lib/common/services/lock-service.js +35 -58
- package/lib/common/services/message-contract-generator.js +35 -47
- package/lib/common/services/messages-service.js +0 -1
- package/lib/common/services/micro-templating-service.js +4 -21
- package/lib/common/services/net-service.js +90 -110
- package/lib/common/services/project-files-manager.js +10 -28
- package/lib/common/services/project-files-provider-base.js +0 -1
- package/lib/common/services/proxy-service.js +13 -25
- package/lib/common/services/qr.js +13 -25
- package/lib/common/services/settings-service.js +1 -2
- package/lib/common/services/xcode-select-service.js +20 -36
- package/lib/common/utils.js +2 -3
- package/lib/common/validators/project-name-validator.js +1 -2
- package/lib/common/validators/validation-result.js +1 -2
- package/lib/common/verify-node-version.js +3 -11
- package/lib/common/yok.js +35 -69
- package/lib/config.js +36 -72
- package/lib/constants-provider.js +0 -1
- package/lib/constants.js +24 -77
- package/lib/controllers/build-controller.js +82 -100
- package/lib/controllers/debug-controller.js +107 -133
- package/lib/controllers/deploy-controller.js +15 -24
- package/lib/controllers/migrate-controller.js +723 -884
- package/lib/controllers/platform-controller.js +71 -94
- package/lib/controllers/prepare-controller.js +232 -274
- package/lib/controllers/run-controller.js +397 -427
- package/lib/controllers/update-controller-base.js +16 -30
- package/lib/controllers/update-controller.js +94 -130
- package/lib/data/build-data.js +0 -1
- package/lib/data/controller-data-base.js +0 -1
- package/lib/data/debug-data.js +0 -1
- package/lib/data/platform-data.js +0 -1
- package/lib/data/prepare-data.js +4 -2
- package/lib/data/run-data.js +0 -1
- package/lib/definitions/project.d.ts +24 -24
- package/lib/detached-processes/cleanup-js-subprocess.js +5 -20
- package/lib/detached-processes/cleanup-process.js +30 -43
- package/lib/detached-processes/file-log-service.js +1 -2
- package/lib/device-path-provider.js +23 -35
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +149 -171
- package/lib/device-sockets/ios/notification.js +1 -4
- package/lib/device-sockets/ios/socket-request-executor.js +24 -42
- package/lib/helpers/android-bundle-validator-helper.js +2 -3
- package/lib/helpers/deploy-command-helper.js +44 -50
- package/lib/helpers/key-command-helper.js +6 -17
- package/lib/helpers/livesync-command-helper.js +137 -155
- package/lib/helpers/network-connectivity-validator.js +6 -18
- package/lib/helpers/options-track-helper.js +7 -19
- package/lib/helpers/package-path-helper.js +0 -1
- package/lib/helpers/platform-command-helper.js +101 -127
- package/lib/helpers/version-validator-helper.js +0 -1
- package/lib/key-commands/bootstrap.js +2 -3
- package/lib/key-commands/index.js +154 -205
- package/lib/nativescript-cli-lib-bootstrap.js +0 -4
- package/lib/nativescript-cli-lib.js +0 -1
- package/lib/nativescript-cli.js +6 -24
- package/lib/node/pbxproj-dom-xcode.js +0 -1
- package/lib/node/xcode.js +0 -1
- package/lib/node-package-manager.js +81 -114
- package/lib/options.js +122 -156
- package/lib/package-installation-manager.js +130 -172
- package/lib/package-manager.js +63 -88
- package/lib/platform-command-param.js +4 -16
- package/lib/pnpm-package-manager.js +59 -81
- package/lib/project-data.js +1 -13
- package/lib/providers/project-files-provider.js +1 -2
- package/lib/resolvers/livesync-service-resolver.js +0 -1
- package/lib/services/analytics/analytics-broker-process.js +19 -32
- package/lib/services/analytics/analytics-broker.js +17 -31
- package/lib/services/analytics/analytics-service.js +170 -210
- package/lib/services/analytics/google-analytics-provider.js +43 -59
- package/lib/services/analytics-settings-service.js +15 -37
- package/lib/services/android/android-bundle-tool-service.js +43 -61
- package/lib/services/android/gradle-build-args-service.js +9 -23
- package/lib/services/android/gradle-build-service.js +22 -36
- package/lib/services/android/gradle-command-service.js +22 -36
- package/lib/services/android-device-debug-service.js +90 -123
- package/lib/services/android-plugin-build-service.js +205 -260
- package/lib/services/android-project-service.js +129 -241
- package/lib/services/android-resources-migration-service.js +51 -71
- package/lib/services/apple-portal/apple-portal-application-service.js +46 -64
- package/lib/services/apple-portal/apple-portal-cookie-service.js +0 -1
- package/lib/services/apple-portal/apple-portal-session-service.js +197 -218
- package/lib/services/apple-portal/srp/srp-wrapper.js +43 -61
- package/lib/services/assets-generation/assets-generation-service.js +103 -128
- package/lib/services/build-artifacts-service.js +10 -22
- package/lib/services/build-data-service.js +0 -1
- package/lib/services/build-info-file-service.js +20 -36
- package/lib/services/cleanup-service.js +48 -81
- package/lib/services/cocoapods-platform-manager.js +0 -9
- package/lib/services/cocoapods-service.js +112 -153
- package/lib/services/debug-data-service.js +0 -1
- package/lib/services/debug-service-base.js +0 -7
- package/lib/services/device/device-install-app-service.js +54 -72
- package/lib/services/doctor-service.js +101 -135
- package/lib/services/extensibility-service.js +81 -108
- package/lib/services/files-hash-service.js +26 -44
- package/lib/services/hmr-status-service.js +1 -3
- package/lib/services/info-service.js +0 -1
- package/lib/services/initialize-service.js +37 -54
- package/lib/services/ios/export-options-plist-service.js +38 -55
- package/lib/services/ios/ios-signing-service.js +168 -191
- package/lib/services/ios/spm-service.js +46 -70
- package/lib/services/ios/xcodebuild-args-service.js +77 -103
- package/lib/services/ios/xcodebuild-command-service.js +14 -26
- package/lib/services/ios/xcodebuild-service.js +52 -72
- package/lib/services/ios-debugger-port-service.js +24 -38
- package/lib/services/ios-device-debug-service.js +75 -103
- package/lib/services/ios-entitlements-service.js +31 -43
- package/lib/services/ios-extensions-service.js +18 -30
- package/lib/services/ios-log-filter.js +0 -20
- package/lib/services/ios-native-target-service.js +4 -6
- package/lib/services/ios-project-service.js +452 -603
- package/lib/services/ios-provision-service.js +108 -132
- package/lib/services/ios-watch-app-service.js +21 -33
- package/lib/services/ip-service.js +38 -55
- package/lib/services/itmstransporter-service.js +129 -153
- package/lib/services/karma-execution.js +0 -2
- package/lib/services/livesync/android-device-livesync-service-base.js +31 -49
- package/lib/services/livesync/android-device-livesync-service.js +120 -151
- package/lib/services/livesync/android-device-livesync-sockets-service.js +121 -155
- package/lib/services/livesync/android-livesync-service.js +14 -36
- package/lib/services/livesync/android-livesync-tool.js +90 -117
- package/lib/services/livesync/device-livesync-service-base.js +15 -30
- package/lib/services/livesync/ios-device-livesync-service.js +114 -150
- package/lib/services/livesync/ios-livesync-service.js +42 -60
- package/lib/services/livesync/livesync-socket.js +0 -1
- package/lib/services/livesync/platform-livesync-service-base.js +94 -124
- package/lib/services/livesync-process-data-service.js +0 -1
- package/lib/services/log-parser-service.js +1 -2
- package/lib/services/log-source-map-service.js +30 -56
- package/lib/services/marking-mode-service.js +17 -33
- package/lib/services/metadata-filtering-service.js +0 -1
- package/lib/services/npm-config-service.js +1 -5
- package/lib/services/pacote-service.js +49 -71
- package/lib/services/performance-service.js +2 -4
- package/lib/services/platform/add-platform-service.js +51 -119
- package/lib/services/platform/platform-validation-service.js +22 -34
- package/lib/services/platform/prepare-native-platform-service.js +49 -65
- package/lib/services/platform-environment-requirements.js +27 -43
- package/lib/services/platform-project-service-base.js +0 -1
- package/lib/services/platforms-data-service.js +0 -1
- package/lib/services/plugins-service.js +125 -168
- package/lib/services/prepare-data-service.js +0 -1
- package/lib/services/project-backup-service.js +1 -5
- package/lib/services/project-changes-service.js +124 -152
- package/lib/services/project-cleanup-service.js +64 -79
- package/lib/services/project-config-service.js +73 -102
- package/lib/services/project-data-service.js +108 -154
- package/lib/services/project-name-service.js +28 -44
- package/lib/services/project-service.js +84 -113
- package/lib/services/project-templates-service.js +52 -68
- package/lib/services/qr-code-terminal-service.js +0 -1
- package/lib/services/require-service.js +0 -1
- package/lib/services/start-service.js +41 -60
- package/lib/services/temp-service.js +8 -22
- package/lib/services/terminal-spinner-service.js +15 -28
- package/lib/services/test-execution-service.js +59 -79
- package/lib/services/test-initialization-service.js +2 -6
- package/lib/services/timeline-profiler-service.js +1 -2
- package/lib/services/user-settings-service.js +0 -1
- package/lib/services/versions-service.js +119 -140
- package/lib/services/watch-ignore-list-service.js +0 -1
- package/lib/services/webpack/webpack-compiler-service.js +215 -279
- package/lib/services/xcconfig-service.js +8 -21
- package/lib/services/xcproj-service.js +0 -1
- package/lib/shared-event-bus.js +0 -6
- package/lib/sys-info.js +45 -63
- package/lib/tools/config-manipulation/config-transformer.js +0 -12
- package/lib/tools/node-modules/node-modules-builder.js +16 -28
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +0 -6
- package/lib/yarn-package-manager.js +59 -79
- package/lib/yarn2-package-manager.js +60 -82
- package/package.json +65 -80
- package/node_modules/@npmcli/move-file/LICENSE.md +0 -22
- package/node_modules/@npmcli/move-file/README.md +0 -69
- package/node_modules/@npmcli/move-file/lib/index.js +0 -185
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE +0 -21
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js +0 -68
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js +0 -31
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js +0 -23
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js +0 -29
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js +0 -10
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json +0 -44
- package/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown +0 -266
- package/node_modules/@npmcli/move-file/package.json +0 -47
- package/node_modules/balanced-match/.github/FUNDING.yml +0 -2
- package/node_modules/balanced-match/LICENSE.md +0 -21
- package/node_modules/balanced-match/README.md +0 -97
- package/node_modules/balanced-match/index.js +0 -62
- package/node_modules/balanced-match/package.json +0 -48
- package/node_modules/concat-map/.travis.yml +0 -4
- package/node_modules/concat-map/LICENSE +0 -18
- package/node_modules/concat-map/README.markdown +0 -62
- package/node_modules/concat-map/example/map.js +0 -6
- package/node_modules/concat-map/index.js +0 -13
- package/node_modules/concat-map/package.json +0 -43
- package/node_modules/concat-map/test/map.js +0 -39
- package/node_modules/fs.realpath/LICENSE +0 -43
- package/node_modules/fs.realpath/README.md +0 -33
- package/node_modules/fs.realpath/index.js +0 -66
- package/node_modules/fs.realpath/old.js +0 -303
- package/node_modules/fs.realpath/package.json +0 -26
- package/node_modules/inflight/LICENSE +0 -15
- package/node_modules/inflight/README.md +0 -37
- package/node_modules/inflight/inflight.js +0 -54
- package/node_modules/inflight/package.json +0 -29
- package/node_modules/inherits/LICENSE +0 -16
- package/node_modules/inherits/README.md +0 -42
- package/node_modules/inherits/inherits.js +0 -9
- package/node_modules/inherits/inherits_browser.js +0 -27
- package/node_modules/inherits/package.json +0 -29
- package/node_modules/once/LICENSE +0 -15
- package/node_modules/once/README.md +0 -79
- package/node_modules/once/once.js +0 -42
- package/node_modules/once/package.json +0 -33
- package/node_modules/path-is-absolute/index.js +0 -20
- package/node_modules/path-is-absolute/license +0 -21
- package/node_modules/path-is-absolute/package.json +0 -43
- package/node_modules/path-is-absolute/readme.md +0 -59
- package/node_modules/rimraf/LICENSE +0 -15
- package/node_modules/rimraf/README.md +0 -101
- package/node_modules/rimraf/bin.js +0 -68
- package/node_modules/rimraf/node_modules/brace-expansion/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/brace-expansion/README.md +0 -129
- package/node_modules/rimraf/node_modules/brace-expansion/index.js +0 -201
- package/node_modules/rimraf/node_modules/brace-expansion/package.json +0 -47
- package/node_modules/rimraf/node_modules/glob/LICENSE +0 -21
- package/node_modules/rimraf/node_modules/glob/README.md +0 -378
- package/node_modules/rimraf/node_modules/glob/common.js +0 -238
- package/node_modules/rimraf/node_modules/glob/glob.js +0 -790
- package/node_modules/rimraf/node_modules/glob/package.json +0 -55
- package/node_modules/rimraf/node_modules/glob/sync.js +0 -486
- package/node_modules/rimraf/node_modules/minimatch/LICENSE +0 -15
- package/node_modules/rimraf/node_modules/minimatch/README.md +0 -230
- package/node_modules/rimraf/node_modules/minimatch/minimatch.js +0 -947
- package/node_modules/rimraf/node_modules/minimatch/package.json +0 -33
- package/node_modules/rimraf/package.json +0 -32
- package/node_modules/rimraf/rimraf.js +0 -360
- package/node_modules/stringify-package/LICENSE +0 -13
- package/node_modules/stringify-package/README.md +0 -55
- package/node_modules/stringify-package/index.js +0 -18
- package/node_modules/stringify-package/package.json +0 -38
- package/node_modules/wrappy/LICENSE +0 -15
- package/node_modules/wrappy/README.md +0 -36
- package/node_modules/wrappy/package.json +0 -29
- package/node_modules/wrappy/wrappy.js +0 -33
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.AndroidEmulatorServices = void 0;
|
|
13
4
|
const constants_1 = require("../../constants");
|
|
@@ -27,111 +18,99 @@ class AndroidEmulatorServices {
|
|
|
27
18
|
this.$logger = $logger;
|
|
28
19
|
this.$utils = $utils;
|
|
29
20
|
}
|
|
30
|
-
getEmulatorImages() {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
};
|
|
40
|
-
});
|
|
21
|
+
async getEmulatorImages() {
|
|
22
|
+
const adbDevicesOutput = await this.$adb.getDevicesSafe();
|
|
23
|
+
const avdAvailableEmulatorsOutput = await this.$androidVirtualDeviceService.getEmulatorImages(adbDevicesOutput);
|
|
24
|
+
const genyAvailableDevicesOutput = await this.$androidGenymotionService.getEmulatorImages(adbDevicesOutput);
|
|
25
|
+
const devices = _.concat(avdAvailableEmulatorsOutput.devices, genyAvailableDevicesOutput.devices).filter((item) => !!item);
|
|
26
|
+
return {
|
|
27
|
+
devices,
|
|
28
|
+
errors: avdAvailableEmulatorsOutput.errors.concat(genyAvailableDevicesOutput.errors),
|
|
29
|
+
};
|
|
41
30
|
}
|
|
42
|
-
getRunningEmulatorIds() {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
return avds.concat(genies);
|
|
48
|
-
});
|
|
31
|
+
async getRunningEmulatorIds() {
|
|
32
|
+
const adbDevicesOutput = await this.$adb.getDevicesSafe();
|
|
33
|
+
const avds = await this.$androidVirtualDeviceService.getRunningEmulatorIds(adbDevicesOutput);
|
|
34
|
+
const genies = await this.$androidGenymotionService.getRunningEmulatorIds(adbDevicesOutput);
|
|
35
|
+
return avds.concat(genies);
|
|
49
36
|
}
|
|
50
|
-
getRunningEmulatorName(emulatorId) {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return result;
|
|
57
|
-
});
|
|
37
|
+
async getRunningEmulatorName(emulatorId) {
|
|
38
|
+
let result = await this.$androidVirtualDeviceService.getRunningEmulatorName(emulatorId);
|
|
39
|
+
if (!result) {
|
|
40
|
+
result = await this.$androidGenymotionService.getRunningEmulatorName(emulatorId);
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
58
43
|
}
|
|
59
|
-
getRunningEmulatorImageIdentifier(emulatorId) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
return result;
|
|
66
|
-
});
|
|
44
|
+
async getRunningEmulatorImageIdentifier(emulatorId) {
|
|
45
|
+
let result = await this.$androidVirtualDeviceService.getRunningEmulatorImageIdentifier(emulatorId);
|
|
46
|
+
if (!result) {
|
|
47
|
+
result = await this.$androidGenymotionService.getRunningEmulatorImageIdentifier(emulatorId);
|
|
48
|
+
}
|
|
49
|
+
return result;
|
|
67
50
|
}
|
|
68
|
-
startEmulator(options) {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
};
|
|
78
|
-
});
|
|
51
|
+
async startEmulator(options) {
|
|
52
|
+
const output = await this.startEmulatorCore(options);
|
|
53
|
+
let bootToCompleteOutput = null;
|
|
54
|
+
if (output && output.runningEmulator) {
|
|
55
|
+
bootToCompleteOutput = await this.waitForEmulatorBootToComplete(output.runningEmulator, output.endTimeEpoch, options.timeout);
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
errors: ((output && output.errors) || []).concat((bootToCompleteOutput && bootToCompleteOutput.errors) || []),
|
|
59
|
+
};
|
|
79
60
|
}
|
|
80
61
|
detach(deviceInfo) {
|
|
81
62
|
this.$androidVirtualDeviceService.detach(deviceInfo);
|
|
82
63
|
}
|
|
83
|
-
startEmulatorCore(options) {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
if (newEmulator && this.$emulatorHelper.isEmulatorRunning(newEmulator)) {
|
|
118
|
-
return {
|
|
119
|
-
runningEmulator: newEmulator,
|
|
120
|
-
errors: [],
|
|
121
|
-
endTimeEpoch,
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
yield (0, helpers_1.sleep)(10000); // the emulator definitely takes its time to wake up
|
|
125
|
-
hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
|
|
126
|
-
}
|
|
127
|
-
if (!hasTimeLeft && !isInfiniteWait) {
|
|
64
|
+
async startEmulatorCore(options) {
|
|
65
|
+
const timeout = options.timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS;
|
|
66
|
+
const endTimeEpoch = (0, helpers_1.getCurrentEpochTime)() + this.$utils.getMilliSecondsTimeout(timeout);
|
|
67
|
+
const availableEmulators = (await this.getEmulatorImages()).devices;
|
|
68
|
+
let emulator = this.$emulatorHelper.getEmulatorByStartEmulatorOptions(options, availableEmulators);
|
|
69
|
+
if (!emulator &&
|
|
70
|
+
!options.emulatorIdOrName &&
|
|
71
|
+
!options.imageIdentifier &&
|
|
72
|
+
!options.emulator) {
|
|
73
|
+
emulator = this.getBestFit(availableEmulators);
|
|
74
|
+
}
|
|
75
|
+
if (!emulator) {
|
|
76
|
+
return {
|
|
77
|
+
runningEmulator: null,
|
|
78
|
+
errors: [
|
|
79
|
+
`No emulator image available for device identifier '${options.emulatorIdOrName || options.imageIdentifier}'.`,
|
|
80
|
+
],
|
|
81
|
+
endTimeEpoch,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (emulator.errorHelp) {
|
|
85
|
+
return {
|
|
86
|
+
runningEmulator: null,
|
|
87
|
+
errors: [emulator.errorHelp],
|
|
88
|
+
endTimeEpoch,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
this.spawnEmulator(emulator);
|
|
92
|
+
const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout) === 0;
|
|
93
|
+
let hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
|
|
94
|
+
while (hasTimeLeft || isInfiniteWait) {
|
|
95
|
+
const emulators = (await this.getEmulatorImages()).devices;
|
|
96
|
+
const newEmulator = _.find(emulators, (e) => e.imageIdentifier === emulator.imageIdentifier);
|
|
97
|
+
if (newEmulator && this.$emulatorHelper.isEmulatorRunning(newEmulator)) {
|
|
128
98
|
return {
|
|
129
|
-
runningEmulator:
|
|
130
|
-
errors: [
|
|
99
|
+
runningEmulator: newEmulator,
|
|
100
|
+
errors: [],
|
|
131
101
|
endTimeEpoch,
|
|
132
102
|
};
|
|
133
103
|
}
|
|
134
|
-
|
|
104
|
+
await (0, helpers_1.sleep)(10000);
|
|
105
|
+
hasTimeLeft = (0, helpers_1.getCurrentEpochTime)() < endTimeEpoch;
|
|
106
|
+
}
|
|
107
|
+
if (!hasTimeLeft && !isInfiniteWait) {
|
|
108
|
+
return {
|
|
109
|
+
runningEmulator: null,
|
|
110
|
+
errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
|
|
111
|
+
endTimeEpoch,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
135
114
|
}
|
|
136
115
|
spawnEmulator(emulator) {
|
|
137
116
|
let pathToEmulatorExecutable = null;
|
|
@@ -169,38 +148,33 @@ class AndroidEmulatorServices {
|
|
|
169
148
|
const bestVersion = best && best.version && semver.coerce(best.version);
|
|
170
149
|
return bestVersion && semver.gte(bestVersion, minVersion) ? best : null;
|
|
171
150
|
}
|
|
172
|
-
waitForEmulatorBootToComplete(emulator, endTimeEpoch, timeout) {
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
[constants_2.LoggerConfigData.skipNewLine]: true,
|
|
176
|
-
});
|
|
177
|
-
const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS) === 0;
|
|
178
|
-
while ((0, helpers_1.getCurrentEpochTime)() < endTimeEpoch || isInfiniteWait) {
|
|
179
|
-
const isEmulatorBootCompleted = yield this.isEmulatorBootCompleted(emulator.identifier);
|
|
180
|
-
if (isEmulatorBootCompleted) {
|
|
181
|
-
this.$logger.info(os_1.EOL, { [constants_2.LoggerConfigData.skipNewLine]: true });
|
|
182
|
-
return {
|
|
183
|
-
runningEmulator: emulator,
|
|
184
|
-
errors: [],
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
this.$logger.info(".", { [constants_2.LoggerConfigData.skipNewLine]: true });
|
|
188
|
-
yield (0, helpers_1.sleep)(10000);
|
|
189
|
-
}
|
|
190
|
-
return {
|
|
191
|
-
runningEmulator: null,
|
|
192
|
-
errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
|
|
193
|
-
};
|
|
151
|
+
async waitForEmulatorBootToComplete(emulator, endTimeEpoch, timeout) {
|
|
152
|
+
this.$logger.info("Waiting for emulator device initialization...", {
|
|
153
|
+
[constants_2.LoggerConfigData.skipNewLine]: true,
|
|
194
154
|
});
|
|
155
|
+
const isInfiniteWait = this.$utils.getMilliSecondsTimeout(timeout || constants_1.AndroidVirtualDevice.TIMEOUT_SECONDS) === 0;
|
|
156
|
+
while ((0, helpers_1.getCurrentEpochTime)() < endTimeEpoch || isInfiniteWait) {
|
|
157
|
+
const isEmulatorBootCompleted = await this.isEmulatorBootCompleted(emulator.identifier);
|
|
158
|
+
if (isEmulatorBootCompleted) {
|
|
159
|
+
this.$logger.info(os_1.EOL, { [constants_2.LoggerConfigData.skipNewLine]: true });
|
|
160
|
+
return {
|
|
161
|
+
runningEmulator: emulator,
|
|
162
|
+
errors: [],
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
this.$logger.info(".", { [constants_2.LoggerConfigData.skipNewLine]: true });
|
|
166
|
+
await (0, helpers_1.sleep)(10000);
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
runningEmulator: null,
|
|
170
|
+
errors: [constants_1.AndroidVirtualDevice.UNABLE_TO_START_EMULATOR_MESSAGE],
|
|
171
|
+
};
|
|
195
172
|
}
|
|
196
|
-
isEmulatorBootCompleted(emulatorId) {
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
return matches && matches.length > 0;
|
|
201
|
-
});
|
|
173
|
+
async isEmulatorBootCompleted(emulatorId) {
|
|
174
|
+
const output = await this.$adb.getPropertyValue(emulatorId, "dev.bootcomplete");
|
|
175
|
+
const matches = output.match("1");
|
|
176
|
+
return matches && matches.length > 0;
|
|
202
177
|
}
|
|
203
178
|
}
|
|
204
179
|
exports.AndroidEmulatorServices = AndroidEmulatorServices;
|
|
205
180
|
yok_1.injector.register("androidEmulatorServices", AndroidEmulatorServices);
|
|
206
|
-
//# sourceMappingURL=android-emulator-services.js.map
|
|
@@ -12,8 +12,6 @@ class AndroidIniFileParser {
|
|
|
12
12
|
if (!this.$fs.exists(iniFilePath)) {
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
// avd files can have different encoding, defined on the first line.
|
|
16
|
-
// find which one it is (if any) and use it to correctly read the file contents
|
|
17
15
|
const encoding = this.getAvdEncoding(iniFilePath);
|
|
18
16
|
const contents = this.$fs.readText(iniFilePath, encoding).split("\n");
|
|
19
17
|
return _.reduce(contents, (result, line) => {
|
|
@@ -46,8 +44,6 @@ class AndroidIniFileParser {
|
|
|
46
44
|
}, Object.create(null));
|
|
47
45
|
}
|
|
48
46
|
getAvdEncoding(avdName) {
|
|
49
|
-
// avd files can have different encoding, defined on the first line.
|
|
50
|
-
// find which one it is (if any) and use it to correctly read the file contents
|
|
51
47
|
let encoding = "utf8";
|
|
52
48
|
let contents = this.$fs.readText(avdName, "ascii");
|
|
53
49
|
if (contents.length > 0) {
|
|
@@ -61,22 +57,18 @@ class AndroidIniFileParser {
|
|
|
61
57
|
}
|
|
62
58
|
return encoding;
|
|
63
59
|
}
|
|
64
|
-
// Android L is not written as a number in the .ini files, and we need to convert it
|
|
65
60
|
readTargetNum(target) {
|
|
66
61
|
const platform = target.replace("android-", "");
|
|
67
62
|
let platformNumber = +platform;
|
|
68
63
|
if (isNaN(platformNumber)) {
|
|
69
|
-
// this may be a google image
|
|
70
64
|
const googlePlatform = target.split(":")[2];
|
|
71
65
|
if (googlePlatform) {
|
|
72
66
|
platformNumber = +googlePlatform;
|
|
73
67
|
}
|
|
74
68
|
else if (platform === "L") {
|
|
75
|
-
// Android SDK 20 preview
|
|
76
69
|
platformNumber = 20;
|
|
77
70
|
}
|
|
78
71
|
else if (platform === "MNC") {
|
|
79
|
-
// Android M preview
|
|
80
72
|
platformNumber = 22;
|
|
81
73
|
}
|
|
82
74
|
}
|
|
@@ -85,4 +77,3 @@ class AndroidIniFileParser {
|
|
|
85
77
|
}
|
|
86
78
|
exports.AndroidIniFileParser = AndroidIniFileParser;
|
|
87
79
|
yok_1.injector.register("androidIniFileParser", AndroidIniFileParser);
|
|
88
|
-
//# sourceMappingURL=android-ini-file-parser.js.map
|
|
@@ -36,11 +36,7 @@ class AndroidLogFilter {
|
|
|
36
36
|
return consoleLogMessage;
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
exports.AndroidLogFilter = AndroidLogFilter;
|
|
40
40
|
AndroidLogFilter.LINE_REGEX = /.\/(.+?)\s*\(\s*\d+?\): (.*)/;
|
|
41
|
-
// sample line is "11-23 12:39:07.310 1584 1597 I art : Background sticky concurrent mark sweep GC freed 21966(1780KB) AllocSpace objects, 4(80KB) LOS objects, 77% free, 840KB/3MB, paused 4.018ms total 158.629ms"
|
|
42
|
-
// or '12-28 10:45:08.020 3329 3329 W chromium: [WARNING:data_reduction_proxy_settings.cc(328)] SPDY proxy OFF at startup'
|
|
43
41
|
AndroidLogFilter.API_LEVEL_23_LINE_REGEX = /.+?\s+?(?:[A-Z]\s+?)([A-Za-z \.]+?)\s*?\: (.*)/;
|
|
44
|
-
exports.AndroidLogFilter = AndroidLogFilter;
|
|
45
42
|
yok_1.injector.register("androidLogFilter", AndroidLogFilter);
|
|
46
|
-
//# sourceMappingURL=android-log-filter.js.map
|
|
@@ -5,15 +5,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
9
|
exports.AndroidVirtualDeviceService = void 0;
|
|
19
10
|
const net = require("net");
|
|
@@ -39,44 +30,38 @@ class AndroidVirtualDeviceService {
|
|
|
39
30
|
this.mapEmulatorIdToImageIdentifier = {};
|
|
40
31
|
this.androidHome = process.env.ANDROID_HOME;
|
|
41
32
|
}
|
|
42
|
-
getEmulatorImages(adbDevicesOutput) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
};
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
getRunningEmulatorIds(adbDevicesOutput) {
|
|
56
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
const emulatorIds = _.reduce(adbDevicesOutput, (result, device) => {
|
|
58
|
-
const rx = device.match(constants_1.AndroidVirtualDevice.RUNNING_AVD_EMULATOR_REGEX);
|
|
59
|
-
if (rx && rx[1]) {
|
|
60
|
-
result.push(rx[1]);
|
|
61
|
-
}
|
|
62
|
-
return result;
|
|
63
|
-
}, []);
|
|
64
|
-
return emulatorIds;
|
|
65
|
-
});
|
|
33
|
+
async getEmulatorImages(adbDevicesOutput) {
|
|
34
|
+
const availableEmulatorsOutput = await this.getEmulatorImagesCore();
|
|
35
|
+
const avds = availableEmulatorsOutput.devices;
|
|
36
|
+
const runningEmulatorIds = await this.getRunningEmulatorIds(adbDevicesOutput);
|
|
37
|
+
const runningEmulators = await (0, helpers_1.settlePromises)(_.map(runningEmulatorIds, (emulatorId) => this.getRunningEmulatorData(emulatorId, avds)));
|
|
38
|
+
const devices = availableEmulatorsOutput.devices.map((emulator) => this.$emulatorHelper.getEmulatorByImageIdentifier(emulator.imageIdentifier, runningEmulators) || emulator);
|
|
39
|
+
return {
|
|
40
|
+
devices,
|
|
41
|
+
errors: availableEmulatorsOutput.errors,
|
|
42
|
+
};
|
|
66
43
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
let result = imageIdentifier;
|
|
73
|
-
if (iniFileInfo && iniFileInfo.path) {
|
|
74
|
-
const configIniFileInfo = this.$androidIniFileParser.parseIniFile(path.join(iniFileInfo.path, constants_1.AndroidVirtualDevice.CONFIG_INI_FILE_NAME));
|
|
75
|
-
result =
|
|
76
|
-
(configIniFileInfo && configIniFileInfo.displayName) || imageIdentifier;
|
|
44
|
+
async getRunningEmulatorIds(adbDevicesOutput) {
|
|
45
|
+
const emulatorIds = _.reduce(adbDevicesOutput, (result, device) => {
|
|
46
|
+
const rx = device.match(constants_1.AndroidVirtualDevice.RUNNING_AVD_EMULATOR_REGEX);
|
|
47
|
+
if (rx && rx[1]) {
|
|
48
|
+
result.push(rx[1]);
|
|
77
49
|
}
|
|
78
50
|
return result;
|
|
79
|
-
});
|
|
51
|
+
}, []);
|
|
52
|
+
return emulatorIds;
|
|
53
|
+
}
|
|
54
|
+
async getRunningEmulatorName(emulatorId) {
|
|
55
|
+
const imageIdentifier = await this.getRunningEmulatorImageIdentifier(emulatorId);
|
|
56
|
+
const iniFilePath = path.join(this.pathToAvdHomeDir, `${imageIdentifier}.ini`);
|
|
57
|
+
const iniFileInfo = this.$androidIniFileParser.parseIniFile(iniFilePath);
|
|
58
|
+
let result = imageIdentifier;
|
|
59
|
+
if (iniFileInfo && iniFileInfo.path) {
|
|
60
|
+
const configIniFileInfo = this.$androidIniFileParser.parseIniFile(path.join(iniFileInfo.path, constants_1.AndroidVirtualDevice.CONFIG_INI_FILE_NAME));
|
|
61
|
+
result =
|
|
62
|
+
(configIniFileInfo && configIniFileInfo.displayName) || imageIdentifier;
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
80
65
|
}
|
|
81
66
|
startEmulatorArgs(imageIdentifier) {
|
|
82
67
|
return ["-avd", imageIdentifier];
|
|
@@ -84,9 +69,6 @@ class AndroidVirtualDeviceService {
|
|
|
84
69
|
get pathToEmulatorExecutable() {
|
|
85
70
|
const emulatorExecutableName = "emulator";
|
|
86
71
|
if (this.androidHome) {
|
|
87
|
-
// Check https://developer.android.com/studio/releases/sdk-tools.html (25.3.0)
|
|
88
|
-
// Since this version of SDK tools, the emulator is a separate package.
|
|
89
|
-
// However the emulator executable still exists in the "tools" dir.
|
|
90
72
|
const pathToEmulatorFromAndroidStudio = path.join(this.androidHome, emulatorExecutableName, emulatorExecutableName);
|
|
91
73
|
const realFilePath = this.$hostInfo.isWindows
|
|
92
74
|
? `${pathToEmulatorFromAndroidStudio}.exe`
|
|
@@ -126,17 +108,6 @@ class AndroidVirtualDeviceService {
|
|
|
126
108
|
client.on("data", (data) => {
|
|
127
109
|
output += data.toString();
|
|
128
110
|
const imageIdentifier = this.getImageIdentifierFromClientOutput(output);
|
|
129
|
-
// old output should look like:
|
|
130
|
-
// Android Console: type 'help' for a list of commands
|
|
131
|
-
// OK
|
|
132
|
-
// <Name of image>
|
|
133
|
-
// OK
|
|
134
|
-
// new output should look like:
|
|
135
|
-
// Android Console: type 'help' for a list of commands
|
|
136
|
-
// OK
|
|
137
|
-
// a\u001b[K\u001b[Dav\u001b[K\u001b[D\u001b[Davd\u001b...
|
|
138
|
-
// <Name of image>
|
|
139
|
-
// OK
|
|
140
111
|
if (imageIdentifier && !isResolved) {
|
|
141
112
|
this.mapEmulatorIdToImageIdentifier[emulatorId] = imageIdentifier;
|
|
142
113
|
this.clearNetConnection(client, timer);
|
|
@@ -154,64 +125,56 @@ class AndroidVirtualDeviceService {
|
|
|
154
125
|
delete this.mapEmulatorIdToImageIdentifier[deviceInfo.identifier];
|
|
155
126
|
}
|
|
156
127
|
}
|
|
157
|
-
getEmulatorImagesCore() {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
128
|
+
async getEmulatorImagesCore() {
|
|
129
|
+
let result = null;
|
|
130
|
+
let devices = [];
|
|
131
|
+
let errors = [];
|
|
132
|
+
const canExecuteAvdManagerCommand = await this.canExecuteAvdManagerCommand();
|
|
133
|
+
if (!canExecuteAvdManagerCommand) {
|
|
134
|
+
errors = [
|
|
135
|
+
"Unable to execute avdmanager, ensure JAVA_HOME is set and points to correct directory",
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
if (canExecuteAvdManagerCommand) {
|
|
139
|
+
const sanitizedPathToAvdManagerExecutable = this.$hostInfo.isWindows
|
|
140
|
+
? (0, helpers_1.quoteString)(this.pathToAvdManagerExecutable)
|
|
141
|
+
: this.pathToAvdManagerExecutable;
|
|
142
|
+
result = await this.$childProcess.trySpawnFromCloseEvent(sanitizedPathToAvdManagerExecutable, ["list", "avds"], { shell: this.$hostInfo.isWindows });
|
|
143
|
+
}
|
|
144
|
+
else if (this.pathToAndroidExecutable &&
|
|
145
|
+
this.$fs.exists(this.pathToAndroidExecutable)) {
|
|
146
|
+
result = await this.$childProcess.trySpawnFromCloseEvent(this.pathToAndroidExecutable, ["list", "avd"]);
|
|
147
|
+
}
|
|
148
|
+
if (result && result.stdout) {
|
|
149
|
+
devices = this.parseListAvdsOutput(result.stdout);
|
|
150
|
+
errors = result && result.stderr ? [result.stderr] : [];
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
devices = this.listAvdsFromDirectory();
|
|
154
|
+
}
|
|
155
|
+
return { devices, errors };
|
|
156
|
+
}
|
|
157
|
+
async canExecuteAvdManagerCommand() {
|
|
158
|
+
let canExecute = false;
|
|
159
|
+
if (this.pathToAvdManagerExecutable &&
|
|
160
|
+
this.$fs.exists(this.pathToAvdManagerExecutable)) {
|
|
161
|
+
if (process.env.JAVA_HOME) {
|
|
162
|
+
canExecute = !!(await this.$sysInfo.getJavaVersionFromJavaHome());
|
|
181
163
|
}
|
|
182
164
|
else {
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
return { devices, errors };
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
canExecuteAvdManagerCommand() {
|
|
189
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
190
|
-
let canExecute = false;
|
|
191
|
-
if (this.pathToAvdManagerExecutable &&
|
|
192
|
-
this.$fs.exists(this.pathToAvdManagerExecutable)) {
|
|
193
|
-
if (process.env.JAVA_HOME) {
|
|
194
|
-
// In case JAVA_HOME is set, but it points to incorrect directory (i.e. there's no java in $JAVA_HOME/bin/java), avdmanager will fail
|
|
195
|
-
// no matter if you have correct java in PATH.
|
|
196
|
-
canExecute = !!(yield this.$sysInfo.getJavaVersionFromJavaHome());
|
|
197
|
-
}
|
|
198
|
-
else {
|
|
199
|
-
canExecute = !!(yield this.$sysInfo.getJavaVersionFromPath());
|
|
200
|
-
}
|
|
165
|
+
canExecute = !!(await this.$sysInfo.getJavaVersionFromPath());
|
|
201
166
|
}
|
|
202
|
-
|
|
203
|
-
|
|
167
|
+
}
|
|
168
|
+
return canExecute;
|
|
204
169
|
}
|
|
205
|
-
getRunningEmulatorData(runningEmulatorId, availableEmulators) {
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
return runningEmulator;
|
|
214
|
-
});
|
|
170
|
+
async getRunningEmulatorData(runningEmulatorId, availableEmulators) {
|
|
171
|
+
const imageIdentifier = await this.getRunningEmulatorImageIdentifier(runningEmulatorId);
|
|
172
|
+
const runningEmulator = this.$emulatorHelper.getEmulatorByImageIdentifier(imageIdentifier, availableEmulators);
|
|
173
|
+
if (!runningEmulator) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
this.$emulatorHelper.setRunningAndroidEmulatorProperties(runningEmulatorId, runningEmulator);
|
|
177
|
+
return runningEmulator;
|
|
215
178
|
}
|
|
216
179
|
get pathToAvdManagerExecutable() {
|
|
217
180
|
let avdManagerPath = null;
|
|
@@ -267,13 +230,6 @@ class AndroidVirtualDeviceService {
|
|
|
267
230
|
const avdOutput = output.split(constants_1.AndroidVirtualDevice.AVAILABLE_AVDS_MESSAGE);
|
|
268
231
|
const availableDevices = avdOutput && avdOutput[1] && avdOutput[1].trim();
|
|
269
232
|
if (availableDevices) {
|
|
270
|
-
// In some cases `avdmanager list avds` command prints:
|
|
271
|
-
// `The following Android Virtual Devices could not be loaded:
|
|
272
|
-
// Name: Pixel_2_XL_API_28
|
|
273
|
-
// Path: /Users/<username>/.android/avd/Pixel_2_XL_API_28.avd
|
|
274
|
-
// Error: Google pixel_2_xl no longer exists as a device`
|
|
275
|
-
// These devices sometimes are valid so try to parse them.
|
|
276
|
-
// Also these devices are printed at the end of the output and are separated with 2 new lines from the valid devices output.
|
|
277
233
|
const parts = availableDevices.split(/(?:\r?\n){2}/);
|
|
278
234
|
const items = [parts[0], parts[1]].filter((item) => !!item);
|
|
279
235
|
for (const item of items) {
|
|
@@ -290,7 +246,6 @@ class AndroidVirtualDeviceService {
|
|
|
290
246
|
}
|
|
291
247
|
getAvdManagerDeviceInfo(output) {
|
|
292
248
|
const avdManagerDeviceInfo = Object.create(null);
|
|
293
|
-
// Split by `\n`, not EOL as the avdmanager and android executables print results with `\n` only even on Windows
|
|
294
249
|
_.reduce(output.split("\n"), (result, row) => {
|
|
295
250
|
const [key, value] = row.split(": ").map((part) => part.trim());
|
|
296
251
|
switch (key) {
|
|
@@ -337,7 +292,6 @@ class AndroidVirtualDeviceService {
|
|
|
337
292
|
};
|
|
338
293
|
}
|
|
339
294
|
getImageIdentifierFromClientOutput(output) {
|
|
340
|
-
// The lines should be trimmed after the split because the output has \r\n and when using split(EOL) on mac each line ends with \r.
|
|
341
295
|
const lines = _.map(output.split(os_1.EOL), (line) => line.trim());
|
|
342
296
|
const firstIndexOfOk = _.indexOf(lines, "OK");
|
|
343
297
|
if (firstIndexOfOk < 0) {
|
|
@@ -366,6 +320,7 @@ class AndroidVirtualDeviceService {
|
|
|
366
320
|
}
|
|
367
321
|
}
|
|
368
322
|
}
|
|
323
|
+
exports.AndroidVirtualDeviceService = AndroidVirtualDeviceService;
|
|
369
324
|
__decorate([
|
|
370
325
|
(0, decorators_1.cache)()
|
|
371
326
|
], AndroidVirtualDeviceService.prototype, "pathToEmulatorExecutable", null);
|
|
@@ -384,6 +339,4 @@ __decorate([
|
|
|
384
339
|
__decorate([
|
|
385
340
|
(0, decorators_1.cache)()
|
|
386
341
|
], AndroidVirtualDeviceService.prototype, "getConfigurationError", null);
|
|
387
|
-
exports.AndroidVirtualDeviceService = AndroidVirtualDeviceService;
|
|
388
342
|
yok_1.injector.register("androidVirtualDeviceService", AndroidVirtualDeviceService);
|
|
389
|
-
//# sourceMappingURL=android-virtual-device-service.js.map
|