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
|
@@ -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.IOSProjectService = exports.VisionSimulatorPlatformSdkName = exports.VisionDevicePlatformSdkName = exports.SimulatorPlatformSdkName = exports.DevicePlatformSdkName = void 0;
|
|
19
10
|
const path = require("path");
|
|
@@ -147,127 +138,112 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
147
138
|
".ico",
|
|
148
139
|
".cur",
|
|
149
140
|
".xbm",
|
|
150
|
-
],
|
|
141
|
+
],
|
|
151
142
|
};
|
|
152
143
|
}
|
|
153
144
|
return this._platformData;
|
|
154
145
|
}
|
|
155
|
-
validateOptions(projectId, provision, teamId) {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
return true;
|
|
169
|
-
});
|
|
146
|
+
async validateOptions(projectId, provision, teamId) {
|
|
147
|
+
if (provision && teamId) {
|
|
148
|
+
this.$errors.fail("The options --provision and --teamId are mutually exclusive.");
|
|
149
|
+
}
|
|
150
|
+
if (provision === true) {
|
|
151
|
+
await this.$iOSProvisionService.listProvisions(projectId);
|
|
152
|
+
this.$errors.fail("Please provide provisioning profile uuid or name with the --provision option.");
|
|
153
|
+
}
|
|
154
|
+
if (teamId === true) {
|
|
155
|
+
await this.$iOSProvisionService.listTeams();
|
|
156
|
+
this.$errors.fail("Please provide team id or team name with the --teamId options.");
|
|
157
|
+
}
|
|
158
|
+
return true;
|
|
170
159
|
}
|
|
171
160
|
getAppResourcesDestinationDirectoryPath(projectData) {
|
|
172
161
|
return path.join(this.getPlatformData(projectData).projectRoot, projectData.projectName, "Resources");
|
|
173
162
|
}
|
|
174
|
-
validate(projectData, options, notConfiguredEnvOptions) {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
notConfiguredEnvOptions,
|
|
184
|
-
});
|
|
185
|
-
if (checkEnvironmentRequirementsOutput &&
|
|
186
|
-
checkEnvironmentRequirementsOutput.canExecute) {
|
|
187
|
-
const xcodeWarning = yield this.$sysInfo.getXcodeWarning();
|
|
188
|
-
if (xcodeWarning) {
|
|
189
|
-
this.$logger.warn(xcodeWarning);
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
return {
|
|
193
|
-
checkEnvironmentRequirementsOutput,
|
|
194
|
-
};
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
createProject(frameworkDir, frameworkVersion, projectData) {
|
|
198
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
199
|
-
this.$fs.ensureDirectoryExists(path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER));
|
|
200
|
-
shell.cp("-R", path.join(frameworkDir, "*"), this.getPlatformData(projectData).projectRoot);
|
|
163
|
+
async validate(projectData, options, notConfiguredEnvOptions) {
|
|
164
|
+
if (!this.$hostInfo.isDarwin) {
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const checkEnvironmentRequirementsOutput = await this.$platformEnvironmentRequirements.checkEnvironmentRequirements({
|
|
168
|
+
platform: this.getPlatformData(projectData).normalizedPlatformName,
|
|
169
|
+
projectDir: projectData.projectDir,
|
|
170
|
+
options,
|
|
171
|
+
notConfiguredEnvOptions,
|
|
201
172
|
});
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// Starting with NativeScript for iOS 1.6.0, the project Info.plist file resides not in the platform project,
|
|
208
|
-
// but in the hello-world app template as a platform specific resource.
|
|
209
|
-
if (this.$fs.exists(path.join(projectRootFilePath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER + "-Info.plist"))) {
|
|
210
|
-
this.replaceFileName("-Info.plist", projectRootFilePath, projectData);
|
|
211
|
-
}
|
|
212
|
-
this.replaceFileName("-Prefix.pch", projectRootFilePath, projectData);
|
|
213
|
-
if (this.$fs.exists(path.join(projectRootFilePath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER + ".entitlements"))) {
|
|
214
|
-
this.replaceFileName(".entitlements", projectRootFilePath, projectData);
|
|
215
|
-
}
|
|
216
|
-
const xcschemeDirPath = path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER +
|
|
217
|
-
constants_2.IosProjectConstants.XcodeProjExtName, "xcshareddata/xcschemes");
|
|
218
|
-
const xcschemeFilePath = path.join(xcschemeDirPath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER +
|
|
219
|
-
constants_2.IosProjectConstants.XcodeSchemeExtName);
|
|
220
|
-
if (this.$fs.exists(xcschemeFilePath)) {
|
|
221
|
-
this.$logger.trace("Found shared scheme at xcschemeFilePath, renaming to match project name.");
|
|
222
|
-
this.$logger.trace("Checkpoint 0");
|
|
223
|
-
this.replaceFileContent(xcschemeFilePath, projectData);
|
|
224
|
-
this.$logger.trace("Checkpoint 1");
|
|
225
|
-
this.replaceFileName(constants_2.IosProjectConstants.XcodeSchemeExtName, xcschemeDirPath, projectData);
|
|
226
|
-
this.$logger.trace("Checkpoint 2");
|
|
227
|
-
}
|
|
228
|
-
else {
|
|
229
|
-
this.$logger.trace("Copying xcscheme from template not found at " + xcschemeFilePath);
|
|
230
|
-
}
|
|
231
|
-
this.replaceFileName(constants_2.IosProjectConstants.XcodeProjExtName, this.getPlatformData(projectData).projectRoot, projectData);
|
|
232
|
-
const pbxprojFilePath = this.getPbxProjPath(projectData);
|
|
233
|
-
this.replaceFileContent(pbxprojFilePath, projectData);
|
|
234
|
-
const internalDirPath = path.join(projectRootFilePath, "..", "internal");
|
|
235
|
-
const xcframeworksFilePath = path.join(internalDirPath, "XCFrameworks.zip");
|
|
236
|
-
if (this.$fs.exists(xcframeworksFilePath)) {
|
|
237
|
-
yield this.$fs.unzip(xcframeworksFilePath, internalDirPath);
|
|
238
|
-
this.$fs.deleteFile(xcframeworksFilePath);
|
|
173
|
+
if (checkEnvironmentRequirementsOutput &&
|
|
174
|
+
checkEnvironmentRequirementsOutput.canExecute) {
|
|
175
|
+
const xcodeWarning = await this.$sysInfo.getXcodeWarning();
|
|
176
|
+
if (xcodeWarning) {
|
|
177
|
+
this.$logger.warn(xcodeWarning);
|
|
239
178
|
}
|
|
240
|
-
}
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
checkEnvironmentRequirementsOutput,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
async createProject(frameworkDir, frameworkVersion, projectData) {
|
|
185
|
+
this.$fs.ensureDirectoryExists(path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER));
|
|
186
|
+
shell.cp("-R", path.join(frameworkDir, "*"), this.getPlatformData(projectData).projectRoot);
|
|
187
|
+
}
|
|
188
|
+
async interpolateData(projectData) {
|
|
189
|
+
const projectRootFilePath = path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER);
|
|
190
|
+
if (this.$fs.exists(path.join(projectRootFilePath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER + "-Info.plist"))) {
|
|
191
|
+
this.replaceFileName("-Info.plist", projectRootFilePath, projectData);
|
|
192
|
+
}
|
|
193
|
+
this.replaceFileName("-Prefix.pch", projectRootFilePath, projectData);
|
|
194
|
+
if (this.$fs.exists(path.join(projectRootFilePath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER + ".entitlements"))) {
|
|
195
|
+
this.replaceFileName(".entitlements", projectRootFilePath, projectData);
|
|
196
|
+
}
|
|
197
|
+
const xcschemeDirPath = path.join(this.getPlatformData(projectData).projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER +
|
|
198
|
+
constants_2.IosProjectConstants.XcodeProjExtName, "xcshareddata/xcschemes");
|
|
199
|
+
const xcschemeFilePath = path.join(xcschemeDirPath, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER +
|
|
200
|
+
constants_2.IosProjectConstants.XcodeSchemeExtName);
|
|
201
|
+
if (this.$fs.exists(xcschemeFilePath)) {
|
|
202
|
+
this.$logger.trace("Found shared scheme at xcschemeFilePath, renaming to match project name.");
|
|
203
|
+
this.$logger.trace("Checkpoint 0");
|
|
204
|
+
this.replaceFileContent(xcschemeFilePath, projectData);
|
|
205
|
+
this.$logger.trace("Checkpoint 1");
|
|
206
|
+
this.replaceFileName(constants_2.IosProjectConstants.XcodeSchemeExtName, xcschemeDirPath, projectData);
|
|
207
|
+
this.$logger.trace("Checkpoint 2");
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
this.$logger.trace("Copying xcscheme from template not found at " + xcschemeFilePath);
|
|
211
|
+
}
|
|
212
|
+
this.replaceFileName(constants_2.IosProjectConstants.XcodeProjExtName, this.getPlatformData(projectData).projectRoot, projectData);
|
|
213
|
+
const pbxprojFilePath = this.getPbxProjPath(projectData);
|
|
214
|
+
this.replaceFileContent(pbxprojFilePath, projectData);
|
|
215
|
+
const internalDirPath = path.join(projectRootFilePath, "..", "internal");
|
|
216
|
+
const xcframeworksFilePath = path.join(internalDirPath, "XCFrameworks.zip");
|
|
217
|
+
if (this.$fs.exists(xcframeworksFilePath)) {
|
|
218
|
+
await this.$fs.unzip(xcframeworksFilePath, internalDirPath);
|
|
219
|
+
this.$fs.deleteFile(xcframeworksFilePath);
|
|
220
|
+
}
|
|
241
221
|
}
|
|
242
222
|
interpolateConfigurationFile(projectData) {
|
|
243
223
|
return undefined;
|
|
244
224
|
}
|
|
245
|
-
cleanProject(projectRoot, projectData) {
|
|
246
|
-
return
|
|
247
|
-
return null;
|
|
248
|
-
});
|
|
225
|
+
async cleanProject(projectRoot, projectData) {
|
|
226
|
+
return null;
|
|
249
227
|
}
|
|
250
228
|
afterCreateProject(projectRoot, projectData) {
|
|
251
229
|
this.$fs.rename(path.join(projectRoot, IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER), path.join(projectRoot, projectData.projectName));
|
|
252
230
|
}
|
|
253
|
-
buildProject(projectRoot, projectData, buildData) {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
this.validateApplicationIdentifier(projectData);
|
|
270
|
-
});
|
|
231
|
+
async buildProject(projectRoot, projectData, buildData) {
|
|
232
|
+
const platformData = this.getPlatformData(projectData);
|
|
233
|
+
const handler = (data) => {
|
|
234
|
+
this.emit(constants.BUILD_OUTPUT_EVENT_NAME, data);
|
|
235
|
+
};
|
|
236
|
+
if (buildData.buildForDevice) {
|
|
237
|
+
await this.$iOSSigningService.setupSigningForDevice(projectRoot, projectData, buildData);
|
|
238
|
+
await (0, helpers_1.attachAwaitDetach)(constants.BUILD_OUTPUT_EVENT_NAME, this.$childProcess, handler, this.$xcodebuildService.buildForDevice(platformData, projectData, buildData));
|
|
239
|
+
}
|
|
240
|
+
else if (buildData.buildForAppStore) {
|
|
241
|
+
await (0, helpers_1.attachAwaitDetach)(constants.BUILD_OUTPUT_EVENT_NAME, this.$childProcess, handler, this.$xcodebuildService.buildForAppStore(platformData, projectData, buildData));
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
await (0, helpers_1.attachAwaitDetach)(constants.BUILD_OUTPUT_EVENT_NAME, this.$childProcess, handler, this.$xcodebuildService.buildForSimulator(platformData, projectData, buildData));
|
|
245
|
+
}
|
|
246
|
+
this.validateApplicationIdentifier(projectData);
|
|
271
247
|
}
|
|
272
248
|
isPlatformPrepared(projectRoot, projectData) {
|
|
273
249
|
return this.$fs.exists(path.join(projectRoot, projectData.projectName, constants.APP_FOLDER_NAME));
|
|
@@ -275,210 +251,136 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
275
251
|
cleanDeviceTempFolder(deviceIdentifier) {
|
|
276
252
|
return Promise.resolve();
|
|
277
253
|
}
|
|
278
|
-
isDynamicFramework(frameworkPath) {
|
|
279
|
-
|
|
280
|
-
const
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
break;
|
|
295
|
-
}
|
|
254
|
+
async isDynamicFramework(frameworkPath) {
|
|
255
|
+
const isDynamicFrameworkBundle = async (bundlePath, frameworkName) => {
|
|
256
|
+
const frameworkBinaryPath = path.join(bundlePath, frameworkName);
|
|
257
|
+
const fileResult = (await this.$childProcess.spawnFromEvent("file", [frameworkBinaryPath], "close")).stdout;
|
|
258
|
+
const isDynamicallyLinked = _.includes(fileResult, "dynamically linked");
|
|
259
|
+
return isDynamicallyLinked;
|
|
260
|
+
};
|
|
261
|
+
if (path.extname(frameworkPath) === ".xcframework") {
|
|
262
|
+
let isDynamic = true;
|
|
263
|
+
const plistJson = this.$plistParser.parseFileSync(path.join(frameworkPath, "Info.plist"));
|
|
264
|
+
for (const library of plistJson.AvailableLibraries) {
|
|
265
|
+
const singlePlatformFramework = path.join(frameworkPath, library.LibraryIdentifier, library.LibraryPath);
|
|
266
|
+
if (this.$fs.exists(singlePlatformFramework)) {
|
|
267
|
+
const frameworkName = path.basename(singlePlatformFramework, path.extname(singlePlatformFramework));
|
|
268
|
+
isDynamic = await isDynamicFrameworkBundle(singlePlatformFramework, frameworkName);
|
|
269
|
+
break;
|
|
296
270
|
}
|
|
297
|
-
return isDynamic;
|
|
298
|
-
}
|
|
299
|
-
else {
|
|
300
|
-
const frameworkName = path.basename(frameworkPath, path.extname(frameworkPath));
|
|
301
|
-
return yield isDynamicFrameworkBundle(frameworkPath, frameworkName);
|
|
302
271
|
}
|
|
303
|
-
|
|
272
|
+
return isDynamic;
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
const frameworkName = path.basename(frameworkPath, path.extname(frameworkPath));
|
|
276
|
+
return await isDynamicFrameworkBundle(frameworkPath, frameworkName);
|
|
277
|
+
}
|
|
304
278
|
}
|
|
305
|
-
addFramework(frameworkPath, projectData) {
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
// "$(SRCROOT)/" +
|
|
325
|
-
const frameworkRelativePath = this.getLibSubpathRelativeToProjectPath(frameworkPath, projectData);
|
|
326
|
-
project.addFramework(frameworkRelativePath, frameworkAddOptions);
|
|
327
|
-
// filePathsArray, buildPhaseType, comment, target, optionsOrFolderType, subfolderPath
|
|
328
|
-
// project.addBuildPhase(
|
|
329
|
-
// [],
|
|
330
|
-
// "PBXShellScriptBuildPhase",
|
|
331
|
-
// "Debug SRCROOT",
|
|
332
|
-
// undefined,
|
|
333
|
-
// {
|
|
334
|
-
// shellPath: "/bin/sh",
|
|
335
|
-
// shellScript: `echo "SRCROOT: $SRCROOT"`,
|
|
336
|
-
// }
|
|
337
|
-
// );
|
|
338
|
-
this.savePbxProj(project, projectData);
|
|
339
|
-
});
|
|
279
|
+
async addFramework(frameworkPath, projectData) {
|
|
280
|
+
if (this.$hostInfo.isWindows) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
this.validateFramework(frameworkPath);
|
|
284
|
+
const project = this.createPbxProj(projectData);
|
|
285
|
+
const frameworkAddOptions = { customFramework: true };
|
|
286
|
+
const dynamic = await this.isDynamicFramework(frameworkPath);
|
|
287
|
+
if (dynamic) {
|
|
288
|
+
frameworkAddOptions["embed"] = true;
|
|
289
|
+
frameworkAddOptions["sign"] = true;
|
|
290
|
+
}
|
|
291
|
+
if (this.$options.hostProjectPath) {
|
|
292
|
+
frameworkAddOptions["embed"] = true;
|
|
293
|
+
frameworkAddOptions["sign"] = false;
|
|
294
|
+
}
|
|
295
|
+
const frameworkRelativePath = this.getLibSubpathRelativeToProjectPath(frameworkPath, projectData);
|
|
296
|
+
project.addFramework(frameworkRelativePath, frameworkAddOptions);
|
|
297
|
+
this.savePbxProj(project, projectData);
|
|
340
298
|
}
|
|
341
|
-
addStaticLibrary(staticLibPath, projectData) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
project.addToHeaderSearchPaths({ relativePath: relativeHeaderSearchPath });
|
|
352
|
-
this.generateModulemap(headersSubpath, libraryName);
|
|
353
|
-
this.savePbxProj(project, projectData);
|
|
354
|
-
});
|
|
299
|
+
async addStaticLibrary(staticLibPath, projectData) {
|
|
300
|
+
const libraryName = path.basename(staticLibPath, ".a");
|
|
301
|
+
const headersSubpath = path.join(path.dirname(staticLibPath), "include", libraryName);
|
|
302
|
+
const project = this.createPbxProj(projectData);
|
|
303
|
+
const relativeStaticLibPath = this.getLibSubpathRelativeToProjectPath(staticLibPath, projectData);
|
|
304
|
+
project.addFramework(relativeStaticLibPath);
|
|
305
|
+
const relativeHeaderSearchPath = path.join(this.getLibSubpathRelativeToProjectPath(headersSubpath, projectData));
|
|
306
|
+
project.addToHeaderSearchPaths({ relativePath: relativeHeaderSearchPath });
|
|
307
|
+
this.generateModulemap(headersSubpath, libraryName);
|
|
308
|
+
this.savePbxProj(project, projectData);
|
|
355
309
|
}
|
|
356
|
-
prepareProject(projectData, prepareData) {
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
310
|
+
async prepareProject(projectData, prepareData) {
|
|
311
|
+
const projectRoot = this.$options.hostProjectPath
|
|
312
|
+
? this.$options.hostProjectPath
|
|
313
|
+
: path.join(projectData.platformsDir, this.$devicePlatformsConstants.iOS.toLowerCase());
|
|
314
|
+
const platformData = this.getPlatformData(projectData);
|
|
315
|
+
const pluginsData = this.getAllProductionPlugins(projectData);
|
|
316
|
+
const pbxProjPath = this.getPbxProjPath(projectData);
|
|
317
|
+
this.$iOSExtensionsService.removeExtensions({ pbxProjPath });
|
|
318
|
+
await this.addExtensions(projectData, pluginsData);
|
|
319
|
+
const resourcesDirectoryPath = projectData.getAppResourcesDirectoryPath();
|
|
320
|
+
const provision = prepareData && prepareData.provision;
|
|
321
|
+
const teamId = prepareData && prepareData.teamId;
|
|
322
|
+
if (provision) {
|
|
323
|
+
await this.$iOSSigningService.setupSigningFromProvision(projectRoot, projectData, provision, prepareData.mobileProvisionData);
|
|
324
|
+
}
|
|
325
|
+
if (teamId) {
|
|
326
|
+
await this.$iOSSigningService.setupSigningFromTeam(projectRoot, projectData, teamId);
|
|
327
|
+
}
|
|
328
|
+
const project = this.createPbxProj(projectData);
|
|
329
|
+
if (this.$options.hostProjectPath) {
|
|
330
|
+
try {
|
|
331
|
+
project.addPbxGroup([], "NativeScript", "NativeScript", null, {
|
|
332
|
+
isMain: true,
|
|
333
|
+
filesRelativeToProject: true,
|
|
334
|
+
uuid: "NATIVESCRIPTNATIVESCRIPT",
|
|
335
|
+
});
|
|
336
|
+
const buildFolderPath = path.join(this.$options.hostProjectPath, projectData.projectName);
|
|
337
|
+
project.addResourceFile(buildFolderPath, {}, "NATIVESCRIPTNATIVESCRIPT");
|
|
338
|
+
const metadataPath = path.relative(this.$options.hostProjectPath, buildFolderPath);
|
|
339
|
+
project.addToOtherLinkerFlags(JSON.stringify(`-sectcreate __DATA __TNSMetadata "${metadataPath}/metadata-arm64.bin"`));
|
|
340
|
+
this.savePbxProj(project, projectData);
|
|
374
341
|
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
try {
|
|
378
|
-
project.addPbxGroup([], "NativeScript", "NativeScript", null, {
|
|
379
|
-
isMain: true,
|
|
380
|
-
filesRelativeToProject: true,
|
|
381
|
-
uuid: "NATIVESCRIPTNATIVESCRIPT",
|
|
382
|
-
});
|
|
383
|
-
/**
|
|
384
|
-
* 1. Add platforms/ios/{projectname}/app build to the host app
|
|
385
|
-
*/
|
|
386
|
-
// Note: allow customization of this targetFolderName
|
|
387
|
-
// const targetFolderName = "app";
|
|
388
|
-
const buildFolderPath = path.join(this.$options.hostProjectPath, projectData.projectName
|
|
389
|
-
// targetFolderName
|
|
390
|
-
);
|
|
391
|
-
project.addResourceFile(buildFolderPath, {}, "NATIVESCRIPTNATIVESCRIPT");
|
|
392
|
-
// filePathsArray, buildPhaseType, comment, target, optionsOrFolderType, subfolderPath
|
|
393
|
-
// project.addBuildPhase(
|
|
394
|
-
// [],
|
|
395
|
-
// "PBXShellScriptBuildPhase",
|
|
396
|
-
// "Copy Metadata (DEBUG)",
|
|
397
|
-
// undefined,
|
|
398
|
-
// {
|
|
399
|
-
// shellPath: "/bin/sh",
|
|
400
|
-
// shellScript: `cp ./platforms/ios/build/Debug-iphonesimulator/metadata-arm64.bin $CONFIGURATION_BUILD_DIR`,
|
|
401
|
-
// outputPaths: [
|
|
402
|
-
// JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-arm64.bin"),
|
|
403
|
-
// // JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-arm64e.bin"),
|
|
404
|
-
// // JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-i386.bin"),
|
|
405
|
-
// // JSON.stringify("$(CONFIGURATION_BUILD_DIR)/metadata-x86_64.bin"),
|
|
406
|
-
// ],
|
|
407
|
-
// }
|
|
408
|
-
// );
|
|
409
|
-
const metadataPath = path.relative(this.$options.hostProjectPath, buildFolderPath);
|
|
410
|
-
project.addToOtherLinkerFlags(JSON.stringify(`-sectcreate __DATA __TNSMetadata "${metadataPath}/metadata-arm64.bin"`));
|
|
411
|
-
// // no shorthand way to get UUID of build phase that i can tell
|
|
412
|
-
// // methods return the phase as an object but ommitted the actual key (uuid we need)
|
|
413
|
-
// // this does it same way nativescript-dev-xcode does but gets the uuid we need
|
|
414
|
-
// const resourcesBuildPhaseKeys = Object.keys(
|
|
415
|
-
// project.hash.project.objects["PBXResourcesBuildPhase"]
|
|
416
|
-
// );
|
|
417
|
-
// // console.log('resourcesBuildPhaseKeys:', resourcesBuildPhaseKeys);
|
|
418
|
-
// const buildPhaseUUID = resourcesBuildPhaseKeys[0];
|
|
419
|
-
// const comment = `${targetFolderName} in Resources`;
|
|
420
|
-
// project.hash.project.objects["PBXResourcesBuildPhase"][
|
|
421
|
-
// buildPhaseUUID
|
|
422
|
-
// ].files.forEach((f: any) => {
|
|
423
|
-
// console.log(f);
|
|
424
|
-
// });
|
|
425
|
-
// if (
|
|
426
|
-
// !project.hash.project.objects["PBXResourcesBuildPhase"][
|
|
427
|
-
// buildPhaseUUID
|
|
428
|
-
// ].files.find((f: any) => f.comment === comment)
|
|
429
|
-
// ) {
|
|
430
|
-
// project.addResourceFile(buildFolderPath, {}, buildPhaseUUID);
|
|
431
|
-
// }
|
|
432
|
-
/**
|
|
433
|
-
* 2. Ensure metadata is copied as a file
|
|
434
|
-
* The apps metadata-{arch}.bin should be added as a file reference.
|
|
435
|
-
*/
|
|
436
|
-
// TODO
|
|
437
|
-
this.savePbxProj(project, projectData);
|
|
438
|
-
}
|
|
439
|
-
catch (err) {
|
|
440
|
-
this.$logger.trace("Error adding NativeScript group to host project", err);
|
|
441
|
-
}
|
|
342
|
+
catch (err) {
|
|
343
|
+
this.$logger.trace("Error adding NativeScript group to host project", err);
|
|
442
344
|
}
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
345
|
+
}
|
|
346
|
+
const resources = project.pbxGroupByName("Resources");
|
|
347
|
+
if (resources && !this.$options.hostProjectPath) {
|
|
348
|
+
const references = project.pbxFileReferenceSection();
|
|
349
|
+
const xcodeProjectImages = _.map(resources.children, (resource) => this.replace(references[resource.value].name));
|
|
350
|
+
this.$logger.trace("Images from Xcode project");
|
|
351
|
+
this.$logger.trace(xcodeProjectImages);
|
|
352
|
+
const appResourcesImages = this.$fs.readDirectory(this.getAppResourcesDestinationDirectoryPath(projectData));
|
|
353
|
+
this.$logger.trace("Current images from App_Resources");
|
|
354
|
+
this.$logger.trace(appResourcesImages);
|
|
355
|
+
const imagesToAdd = _.difference(appResourcesImages, xcodeProjectImages);
|
|
356
|
+
this.$logger.trace(`New images to add into xcode project: ${imagesToAdd.join(", ")}`);
|
|
357
|
+
_.each(imagesToAdd, (image) => project.addResourceFile(path.relative(this.getPlatformData(projectData).projectRoot, path.join(this.getAppResourcesDestinationDirectoryPath(projectData), image))));
|
|
358
|
+
const imagesToRemove = _.difference(xcodeProjectImages, appResourcesImages);
|
|
359
|
+
this.$logger.trace(`Images to remove from xcode project: ${imagesToRemove.join(", ")}`);
|
|
360
|
+
_.each(imagesToRemove, (image) => project.removeResourceFile(path.join(this.getAppResourcesDestinationDirectoryPath(projectData), image)));
|
|
361
|
+
this.savePbxProj(project, projectData);
|
|
362
|
+
let resourcesNativeCodePath = path.join(resourcesDirectoryPath, platformData.normalizedPlatformName, constants.NATIVE_SOURCE_FOLDER);
|
|
363
|
+
if (!this.$fs.exists(resourcesNativeCodePath)) {
|
|
364
|
+
resourcesNativeCodePath = path.join(resourcesDirectoryPath, this.$devicePlatformsConstants.iOS, constants.NATIVE_SOURCE_FOLDER);
|
|
365
|
+
}
|
|
366
|
+
await this.prepareNativeSourceCode(constants.TNS_NATIVE_SOURCE_GROUP_NAME, resourcesNativeCodePath, projectData);
|
|
367
|
+
const nativeSource = this.$projectConfigService.getValue(`${this._platformData.platformNameLowerCase}.NativeSource`, []);
|
|
368
|
+
if (nativeSource === null || nativeSource === void 0 ? void 0 : nativeSource.length) {
|
|
369
|
+
for (const source of nativeSource) {
|
|
370
|
+
await this.prepareNativeSourceCode(source.name, source.path, projectData);
|
|
469
371
|
}
|
|
470
372
|
}
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
if (addedWatchApp) {
|
|
479
|
-
this.$logger.warn("The support for Apple Watch App is currently in Beta. For more information about the current development state and any known issues, please check the relevant GitHub issue: https://github.com/NativeScript/nativescript-cli/issues/4589");
|
|
480
|
-
}
|
|
373
|
+
}
|
|
374
|
+
this.$iOSWatchAppService.removeWatchApp({ pbxProjPath });
|
|
375
|
+
const addedWatchApp = await this.$iOSWatchAppService.addWatchAppFromPath({
|
|
376
|
+
watchAppFolderPath: path.join(resourcesDirectoryPath, platformData.normalizedPlatformName),
|
|
377
|
+
projectData,
|
|
378
|
+
platformData,
|
|
379
|
+
pbxProjPath,
|
|
481
380
|
});
|
|
381
|
+
if (addedWatchApp) {
|
|
382
|
+
this.$logger.warn("The support for Apple Watch App is currently in Beta. For more information about the current development state and any known issues, please check the relevant GitHub issue: https://github.com/NativeScript/nativescript-cli/issues/4589");
|
|
383
|
+
}
|
|
482
384
|
}
|
|
483
385
|
prepareAppResources(projectData) {
|
|
484
386
|
const platformData = this.getPlatformData(projectData);
|
|
@@ -487,12 +389,10 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
487
389
|
this.$fs.deleteDirectory(platformsAppResourcesPath);
|
|
488
390
|
this.$fs.ensureDirectoryExists(platformsAppResourcesPath);
|
|
489
391
|
const platformAppResourcesPath = path.join(projectAppResourcesPath, platformData.normalizedPlatformName);
|
|
490
|
-
// this allows App_Resources/visionOS
|
|
491
392
|
if (this.$fs.exists(platformAppResourcesPath)) {
|
|
492
393
|
this.$fs.copyFile(path.join(platformAppResourcesPath, "*"), platformsAppResourcesPath);
|
|
493
394
|
}
|
|
494
395
|
else {
|
|
495
|
-
// otherwise falls back to App_Resources/iOS
|
|
496
396
|
this.$fs.copyFile(path.join(projectAppResourcesPath, this.$devicePlatformsConstants.iOS, "*"), platformsAppResourcesPath);
|
|
497
397
|
}
|
|
498
398
|
this.$fs.deleteFile(path.join(platformsAppResourcesPath, platformData.configurationFileName));
|
|
@@ -502,48 +402,45 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
502
402
|
this.$fs.deleteDirectory(path.join(platformsAppResourcesPath, "watchapp"));
|
|
503
403
|
this.$fs.deleteDirectory(path.join(platformsAppResourcesPath, "watchextension"));
|
|
504
404
|
}
|
|
505
|
-
processConfigurationFilesFromAppResources(projectData, opts) {
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
yield this.mergeProjectXcconfigFiles(projectData);
|
|
510
|
-
});
|
|
405
|
+
async processConfigurationFilesFromAppResources(projectData, opts) {
|
|
406
|
+
await this.mergeInfoPlists(projectData, opts);
|
|
407
|
+
await this.$iOSEntitlementsService.merge(projectData);
|
|
408
|
+
await this.mergeProjectXcconfigFiles(projectData);
|
|
511
409
|
}
|
|
512
410
|
ensureConfigurationFileInAppResources() {
|
|
513
411
|
return null;
|
|
514
412
|
}
|
|
515
|
-
mergeInfoPlists(projectData, buildOptions) {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
return;
|
|
530
|
-
}
|
|
531
|
-
this.$logger.trace("Schedule merge plist at: " + plistPath);
|
|
532
|
-
session.patch({
|
|
533
|
-
name: path.relative(projectDir, plistPath),
|
|
534
|
-
read: () => this.$fs.readText(plistPath),
|
|
535
|
-
});
|
|
536
|
-
};
|
|
537
|
-
const allPlugins = this.getAllProductionPlugins(projectData);
|
|
538
|
-
for (const plugin of allPlugins) {
|
|
539
|
-
const pluginInfoPlistPath = path.join(plugin.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME), this.getPlatformData(projectData).configurationFileName);
|
|
540
|
-
makePatch(pluginInfoPlistPath);
|
|
413
|
+
async mergeInfoPlists(projectData, buildOptions) {
|
|
414
|
+
const projectDir = projectData.projectDir;
|
|
415
|
+
const infoPlistPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName, this.getPlatformData(projectData).configurationFileName);
|
|
416
|
+
this.ensureConfigurationFileInAppResources();
|
|
417
|
+
const reporterTraceMessage = "Info.plist:";
|
|
418
|
+
const reporter = {
|
|
419
|
+
log: (txt) => this.$logger.trace(`${reporterTraceMessage} ${txt}`),
|
|
420
|
+
warn: (txt) => this.$logger.warn(`${reporterTraceMessage} ${txt}`),
|
|
421
|
+
};
|
|
422
|
+
const session = new plist_merge_patch_1.PlistSession(reporter);
|
|
423
|
+
const makePatch = (plistPath) => {
|
|
424
|
+
if (!this.$fs.exists(plistPath)) {
|
|
425
|
+
this.$logger.trace("No plist found at: " + plistPath);
|
|
426
|
+
return;
|
|
541
427
|
}
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
428
|
+
this.$logger.trace("Schedule merge plist at: " + plistPath);
|
|
429
|
+
session.patch({
|
|
430
|
+
name: path.relative(projectDir, plistPath),
|
|
431
|
+
read: () => this.$fs.readText(plistPath),
|
|
432
|
+
});
|
|
433
|
+
};
|
|
434
|
+
const allPlugins = this.getAllProductionPlugins(projectData);
|
|
435
|
+
for (const plugin of allPlugins) {
|
|
436
|
+
const pluginInfoPlistPath = path.join(plugin.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME), this.getPlatformData(projectData).configurationFileName);
|
|
437
|
+
makePatch(pluginInfoPlistPath);
|
|
438
|
+
}
|
|
439
|
+
makePatch(infoPlistPath);
|
|
440
|
+
if (projectData.projectIdentifiers && projectData.projectIdentifiers.ios) {
|
|
441
|
+
session.patch({
|
|
442
|
+
name: "CFBundleIdentifier from package.json nativescript.id",
|
|
443
|
+
read: () => `<?xml version="1.0" encoding="UTF-8"?>
|
|
547
444
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
548
445
|
<plist version="1.0">
|
|
549
446
|
<dict>
|
|
@@ -551,14 +448,14 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
551
448
|
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
|
552
449
|
</dict>
|
|
553
450
|
</plist>`,
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
if (!buildOptions.release &&
|
|
454
|
+
projectData.projectIdentifiers &&
|
|
455
|
+
projectData.projectIdentifiers.ios) {
|
|
456
|
+
session.patch({
|
|
457
|
+
name: "CFBundleURLTypes from package.json nativescript.id",
|
|
458
|
+
read: () => `<?xml version="1.0" encoding="UTF-8"?>
|
|
562
459
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
563
460
|
<plist version="1.0">
|
|
564
461
|
<dict>
|
|
@@ -575,13 +472,12 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
575
472
|
</array>
|
|
576
473
|
</dict>
|
|
577
474
|
</plist>`,
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
});
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
const plistContent = session.build();
|
|
478
|
+
this.$logger.trace("Info.plist: Write to: " +
|
|
479
|
+
this.getPlatformData(projectData).configurationFilePath);
|
|
480
|
+
this.$fs.writeFile(this.getPlatformData(projectData).configurationFilePath, plistContent);
|
|
585
481
|
}
|
|
586
482
|
getAllProductionPlugins(projectData) {
|
|
587
483
|
return (this.$injector.resolve("pluginsService")).getAllProductionPlugins(projectData, this.getPlatformData(projectData).platformNameLowerCase);
|
|
@@ -595,12 +491,6 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
595
491
|
getLibSubpathRelativeToProjectPath(targetPath, projectData) {
|
|
596
492
|
const projectRoot = this.getPlatformData(projectData).projectRoot;
|
|
597
493
|
const frameworkPath = path.relative(projectRoot, targetPath);
|
|
598
|
-
// console.log({
|
|
599
|
-
// targetPath,
|
|
600
|
-
// projectRoot,
|
|
601
|
-
// frameworkPath,
|
|
602
|
-
// resolved: path.resolve(projectRoot, frameworkPath),
|
|
603
|
-
// });
|
|
604
494
|
return frameworkPath;
|
|
605
495
|
}
|
|
606
496
|
getPbxProjPath(projectData) {
|
|
@@ -621,112 +511,94 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
621
511
|
savePbxProj(project, projectData, omitEmptyValues) {
|
|
622
512
|
return this.$fs.writeFile(this.getPbxProjPath(projectData), project.writeSync({ omitEmptyValues }));
|
|
623
513
|
}
|
|
624
|
-
preparePluginNativeCode(pluginData, projectData, opts) {
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
this.removeStaticLibs(pluginPlatformsFolderPath, pluginData, projectData);
|
|
640
|
-
const projectRoot = this.getPlatformData(projectData).projectRoot;
|
|
641
|
-
this.$cocoapodsService.removePodfileFromProject(pluginData.name, this.$cocoapodsService.getPluginPodfilePath(pluginData), projectData, projectRoot);
|
|
642
|
-
});
|
|
514
|
+
async preparePluginNativeCode(pluginData, projectData, opts) {
|
|
515
|
+
const pluginPlatformsFolderPath = pluginData.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME);
|
|
516
|
+
const sourcePath = path.join(pluginPlatformsFolderPath, "src");
|
|
517
|
+
await this.prepareNativeSourceCode(pluginData.name, sourcePath, projectData);
|
|
518
|
+
await this.prepareResources(pluginPlatformsFolderPath, pluginData, projectData);
|
|
519
|
+
await this.prepareFrameworks(pluginPlatformsFolderPath, pluginData, projectData);
|
|
520
|
+
await this.prepareStaticLibs(pluginPlatformsFolderPath, pluginData, projectData);
|
|
521
|
+
}
|
|
522
|
+
async removePluginNativeCode(pluginData, projectData) {
|
|
523
|
+
const pluginPlatformsFolderPath = pluginData.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME);
|
|
524
|
+
this.removeNativeSourceCode(pluginPlatformsFolderPath, pluginData, projectData);
|
|
525
|
+
this.removeFrameworks(pluginPlatformsFolderPath, pluginData, projectData);
|
|
526
|
+
this.removeStaticLibs(pluginPlatformsFolderPath, pluginData, projectData);
|
|
527
|
+
const projectRoot = this.getPlatformData(projectData).projectRoot;
|
|
528
|
+
this.$cocoapodsService.removePodfileFromProject(pluginData.name, this.$cocoapodsService.getPluginPodfilePath(pluginData), projectData, projectRoot);
|
|
643
529
|
}
|
|
644
|
-
handleNativeDependenciesChange(projectData, opts) {
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
if (this.$fs.exists(pluginConfigPath)) {
|
|
667
|
-
const config = this.$projectConfigService.readConfig(plugin.fullPath);
|
|
668
|
-
const packages = _.get(config, `${platformData.platformNameLowerCase}.SPMPackages`, []);
|
|
669
|
-
if (packages.length) {
|
|
670
|
-
pluginSpmPackages.push(...packages);
|
|
671
|
-
}
|
|
530
|
+
async handleNativeDependenciesChange(projectData, opts) {
|
|
531
|
+
const platformData = this.getPlatformData(projectData);
|
|
532
|
+
const pluginsData = this.getAllProductionPlugins(projectData);
|
|
533
|
+
this.setProductBundleIdentifier(projectData);
|
|
534
|
+
await this.applyPluginsCocoaPods(pluginsData, projectData, platformData);
|
|
535
|
+
await this.$cocoapodsService.applyPodfileFromAppResources(projectData, platformData);
|
|
536
|
+
await this.$cocoapodsService.applyPodfileArchExclusions(projectData, platformData);
|
|
537
|
+
await this.$cocoapodsService.applyPodfileFromExtensions(projectData, platformData);
|
|
538
|
+
const projectPodfilePath = this.$cocoapodsService.getProjectPodfilePath(platformData.projectRoot);
|
|
539
|
+
if (this.$fs.exists(projectPodfilePath)) {
|
|
540
|
+
await this.$cocoapodsService.executePodInstall(platformData.projectRoot, this.$xcprojService.getXcodeprojPath(projectData, platformData.projectRoot));
|
|
541
|
+
await this.$cocoapodsService.mergePodXcconfigFile(projectData, platformData, opts);
|
|
542
|
+
}
|
|
543
|
+
const pluginSpmPackages = [];
|
|
544
|
+
for (const plugin of pluginsData) {
|
|
545
|
+
if (plugin.fullPath) {
|
|
546
|
+
const pluginConfigPath = path.join(plugin.fullPath, constants.CONFIG_FILE_NAME_TS);
|
|
547
|
+
if (this.$fs.exists(pluginConfigPath)) {
|
|
548
|
+
const config = this.$projectConfigService.readConfig(plugin.fullPath);
|
|
549
|
+
const packages = _.get(config, `${platformData.platformNameLowerCase}.SPMPackages`, []);
|
|
550
|
+
if (packages.length) {
|
|
551
|
+
pluginSpmPackages.push(...packages);
|
|
672
552
|
}
|
|
673
553
|
}
|
|
674
554
|
}
|
|
675
|
-
|
|
676
|
-
|
|
555
|
+
}
|
|
556
|
+
await this.$spmService.applySPMPackages(platformData, projectData, pluginSpmPackages);
|
|
677
557
|
}
|
|
678
558
|
beforePrepareAllPlugins(projectData, dependencies) {
|
|
679
559
|
return Promise.resolve(dependencies);
|
|
680
560
|
}
|
|
681
|
-
checkForChanges(changesInfo, prepareData, projectData) {
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
const
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
changesInfo.signingChanged = true;
|
|
698
|
-
break;
|
|
699
|
-
}
|
|
561
|
+
async checkForChanges(changesInfo, prepareData, projectData) {
|
|
562
|
+
const { provision, teamId } = prepareData;
|
|
563
|
+
const hasProvision = provision !== undefined;
|
|
564
|
+
const hasTeamId = teamId !== undefined;
|
|
565
|
+
if (hasProvision || hasTeamId) {
|
|
566
|
+
const pbxprojPath = this.getPbxProjPath(projectData);
|
|
567
|
+
if (this.$fs.exists(pbxprojPath)) {
|
|
568
|
+
const xcode = this.$pbxprojDomXcode.Xcode.open(pbxprojPath);
|
|
569
|
+
const signing = xcode.getSigning(projectData.projectName);
|
|
570
|
+
if (hasProvision) {
|
|
571
|
+
if (signing && signing.style === "Manual") {
|
|
572
|
+
for (const name in signing.configurations) {
|
|
573
|
+
const config = signing.configurations[name];
|
|
574
|
+
if (config.uuid !== provision && config.name !== provision) {
|
|
575
|
+
changesInfo.signingChanged = true;
|
|
576
|
+
break;
|
|
700
577
|
}
|
|
701
578
|
}
|
|
702
|
-
else {
|
|
703
|
-
// Specifying provisioning profile requires "Manual" signing style.
|
|
704
|
-
// If the current signing style was not "Manual" it was probably "Automatic" or,
|
|
705
|
-
// it was not uniform for the debug and release build configurations.
|
|
706
|
-
changesInfo.signingChanged = true;
|
|
707
|
-
}
|
|
708
579
|
}
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
580
|
+
else {
|
|
581
|
+
changesInfo.signingChanged = true;
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
if (hasTeamId) {
|
|
585
|
+
if (signing && signing.style === "Automatic") {
|
|
586
|
+
if (signing.team !== teamId) {
|
|
587
|
+
const teamIdsForName = await this.$iOSProvisionService.getTeamIdsWithName(teamId);
|
|
588
|
+
if (!teamIdsForName.some((id) => id === signing.team)) {
|
|
589
|
+
changesInfo.signingChanged = true;
|
|
716
590
|
}
|
|
717
591
|
}
|
|
718
|
-
else {
|
|
719
|
-
// Specifying team id or name requires "Automatic" signing style.
|
|
720
|
-
// If the current signing style was not "Automatic" it was probably "Manual".
|
|
721
|
-
changesInfo.signingChanged = true;
|
|
722
|
-
}
|
|
723
592
|
}
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
593
|
+
else {
|
|
594
|
+
changesInfo.signingChanged = true;
|
|
595
|
+
}
|
|
727
596
|
}
|
|
728
597
|
}
|
|
729
|
-
|
|
598
|
+
else {
|
|
599
|
+
changesInfo.signingChanged = true;
|
|
600
|
+
}
|
|
601
|
+
}
|
|
730
602
|
}
|
|
731
603
|
getDeploymentTarget(projectData) {
|
|
732
604
|
const target = this.$xcconfigService.readPropertyValue(this.getBuildXCConfigFilePath(projectData), "IPHONEOS_DEPLOYMENT_TARGET");
|
|
@@ -770,120 +642,106 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
770
642
|
const newFileName = projectData.projectName + fileNamePart;
|
|
771
643
|
this.$fs.rename(path.join(fileRootLocation, oldFileName), path.join(fileRootLocation, newFileName));
|
|
772
644
|
}
|
|
773
|
-
prepareNativeSourceCode(groupName, sourceFolderPath, projectData) {
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
filesRelativeToProject: true,
|
|
780
|
-
});
|
|
781
|
-
project.addToHeaderSearchPaths(group.path);
|
|
782
|
-
const headerFiles = this.$fs.exists(sourceFolderPath)
|
|
783
|
-
? this.$fs.enumerateFilesInDirectorySync(sourceFolderPath, (file, stat) => stat.isDirectory() || path.extname(file) === ".h")
|
|
784
|
-
: [];
|
|
785
|
-
if (headerFiles.length > 0 &&
|
|
786
|
-
!this.$fs.exists(path.join(sourceFolderPath, "module.modulemap"))) {
|
|
787
|
-
this.$logger.warn(`warning: Directory ${sourceFolderPath} with native iOS source code doesn't contain a modulemap file. Metadata for it will not be generated and it will not be accessible from JavaScript. To learn more see https://docs.nativescript.org/guides/ios-source-code`);
|
|
788
|
-
}
|
|
789
|
-
this.savePbxProj(project, projectData);
|
|
645
|
+
async prepareNativeSourceCode(groupName, sourceFolderPath, projectData) {
|
|
646
|
+
const project = this.createPbxProj(projectData);
|
|
647
|
+
const group = await this.getRootGroup(groupName, sourceFolderPath);
|
|
648
|
+
project.addPbxGroup(group.files, group.name, group.path, null, {
|
|
649
|
+
isMain: true,
|
|
650
|
+
filesRelativeToProject: true,
|
|
790
651
|
});
|
|
652
|
+
project.addToHeaderSearchPaths(group.path);
|
|
653
|
+
const headerFiles = this.$fs.exists(sourceFolderPath)
|
|
654
|
+
? this.$fs.enumerateFilesInDirectorySync(sourceFolderPath, (file, stat) => stat.isDirectory() || path.extname(file) === ".h")
|
|
655
|
+
: [];
|
|
656
|
+
if (headerFiles.length > 0 &&
|
|
657
|
+
!this.$fs.exists(path.join(sourceFolderPath, "module.modulemap"))) {
|
|
658
|
+
this.$logger.warn(`warning: Directory ${sourceFolderPath} with native iOS source code doesn't contain a modulemap file. Metadata for it will not be generated and it will not be accessible from JavaScript. To learn more see https://docs.nativescript.org/guides/ios-source-code`);
|
|
659
|
+
}
|
|
660
|
+
this.savePbxProj(project, projectData);
|
|
791
661
|
}
|
|
792
|
-
addExtensions(projectData, pluginsData) {
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
662
|
+
async addExtensions(projectData, pluginsData) {
|
|
663
|
+
const resorcesExtensionsPath = path.join(projectData.getAppResourcesDirectoryPath(), this.getPlatformData(projectData).normalizedPlatformName, constants.NATIVE_EXTENSION_FOLDER);
|
|
664
|
+
const platformData = this.getPlatformData(projectData);
|
|
665
|
+
const pbxProjPath = this.getPbxProjPath(projectData);
|
|
666
|
+
const addedExtensionsFromResources = await this.$iOSExtensionsService.addExtensionsFromPath({
|
|
667
|
+
extensionsFolderPath: resorcesExtensionsPath,
|
|
668
|
+
projectData,
|
|
669
|
+
platformData,
|
|
670
|
+
pbxProjPath,
|
|
671
|
+
});
|
|
672
|
+
let addedExtensionsFromPlugins = false;
|
|
673
|
+
for (const pluginIndex in pluginsData) {
|
|
674
|
+
const pluginData = pluginsData[pluginIndex];
|
|
675
|
+
const pluginPlatformsFolderPath = pluginData.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME);
|
|
676
|
+
const extensionPath = path.join(pluginPlatformsFolderPath, constants.NATIVE_EXTENSION_FOLDER);
|
|
677
|
+
const addedExtensionFromPlugin = await this.$iOSExtensionsService.addExtensionsFromPath({
|
|
678
|
+
extensionsFolderPath: extensionPath,
|
|
799
679
|
projectData,
|
|
800
680
|
platformData,
|
|
801
681
|
pbxProjPath,
|
|
802
682
|
});
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
extensionsFolderPath: extensionPath,
|
|
810
|
-
projectData,
|
|
811
|
-
platformData,
|
|
812
|
-
pbxProjPath,
|
|
813
|
-
});
|
|
814
|
-
addedExtensionsFromPlugins =
|
|
815
|
-
addedExtensionsFromPlugins || addedExtensionFromPlugin;
|
|
816
|
-
}
|
|
817
|
-
if (addedExtensionsFromResources || addedExtensionsFromPlugins) {
|
|
818
|
-
this.$logger.warn("Let us know if there are other Extension features you'd like! https://github.com/NativeScript/NativeScript/issues");
|
|
819
|
-
}
|
|
820
|
-
});
|
|
683
|
+
addedExtensionsFromPlugins =
|
|
684
|
+
addedExtensionsFromPlugins || addedExtensionFromPlugin;
|
|
685
|
+
}
|
|
686
|
+
if (addedExtensionsFromResources || addedExtensionsFromPlugins) {
|
|
687
|
+
this.$logger.warn("Let us know if there are other Extension features you'd like! https://github.com/NativeScript/NativeScript/issues");
|
|
688
|
+
}
|
|
821
689
|
}
|
|
822
|
-
getRootGroup(name, rootPath) {
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
filePathsArr.push(sourceFilePath);
|
|
836
|
-
}
|
|
690
|
+
async getRootGroup(name, rootPath) {
|
|
691
|
+
const filePathsArr = [];
|
|
692
|
+
const rootGroup = {
|
|
693
|
+
name: name,
|
|
694
|
+
files: filePathsArr,
|
|
695
|
+
path: rootPath,
|
|
696
|
+
};
|
|
697
|
+
if (fastGlob.isDynamicPattern(rootPath)) {
|
|
698
|
+
const projectRoot = this.$projectDataService.getProjectData().projectDir;
|
|
699
|
+
const filePaths = await fastGlob(rootPath);
|
|
700
|
+
for (const filePath of filePaths) {
|
|
701
|
+
const sourceFilePath = path.normalize(path.join(projectRoot, filePath));
|
|
702
|
+
filePathsArr.push(sourceFilePath);
|
|
837
703
|
}
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
}
|
|
704
|
+
}
|
|
705
|
+
else {
|
|
706
|
+
if (this.$fs.exists(rootPath)) {
|
|
707
|
+
const stats = this.$fs.getFsStats(rootPath);
|
|
708
|
+
if (stats.isDirectory() && !this.$fs.isEmptyDir(rootPath)) {
|
|
709
|
+
this.$fs.readDirectory(rootPath).forEach((fileName) => {
|
|
710
|
+
const filePath = path.join(rootGroup.path, fileName);
|
|
711
|
+
filePathsArr.push(filePath);
|
|
712
|
+
});
|
|
847
713
|
}
|
|
848
714
|
}
|
|
849
|
-
|
|
850
|
-
|
|
715
|
+
}
|
|
716
|
+
return rootGroup;
|
|
851
717
|
}
|
|
852
|
-
prepareResources(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
project.addResourceFile(filePath);
|
|
860
|
-
}
|
|
718
|
+
async prepareResources(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
719
|
+
const project = this.createPbxProj(projectData);
|
|
720
|
+
const resourcesPath = path.join(pluginPlatformsFolderPath, "Resources");
|
|
721
|
+
if (this.$fs.exists(resourcesPath) && !this.$fs.isEmptyDir(resourcesPath)) {
|
|
722
|
+
for (const fileName of this.$fs.readDirectory(resourcesPath)) {
|
|
723
|
+
const filePath = path.join(resourcesPath, fileName);
|
|
724
|
+
project.addResourceFile(filePath);
|
|
861
725
|
}
|
|
862
|
-
|
|
863
|
-
|
|
726
|
+
}
|
|
727
|
+
this.savePbxProj(project, projectData);
|
|
864
728
|
}
|
|
865
|
-
prepareFrameworks(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
}
|
|
870
|
-
});
|
|
729
|
+
async prepareFrameworks(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
730
|
+
for (const fileName of this.getAllLibsForPluginWithFileExtension(pluginData, FRAMEWORK_EXTENSIONS)) {
|
|
731
|
+
await this.addFramework(path.join(pluginPlatformsFolderPath, fileName), projectData);
|
|
732
|
+
}
|
|
871
733
|
}
|
|
872
|
-
prepareStaticLibs(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
}
|
|
877
|
-
});
|
|
734
|
+
async prepareStaticLibs(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
735
|
+
for (const fileName of this.getAllLibsForPluginWithFileExtension(pluginData, ".a")) {
|
|
736
|
+
await this.addStaticLibrary(path.join(pluginPlatformsFolderPath, fileName), projectData);
|
|
737
|
+
}
|
|
878
738
|
}
|
|
879
|
-
removeNativeSourceCode(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
this.savePbxProj(project, projectData);
|
|
886
|
-
});
|
|
739
|
+
async removeNativeSourceCode(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
740
|
+
const project = this.createPbxProj(projectData);
|
|
741
|
+
const group = await this.getRootGroup(pluginData.name, pluginPlatformsFolderPath);
|
|
742
|
+
project.removePbxGroup(group.name, group.path);
|
|
743
|
+
project.removeFromHeaderSearchPaths(group.path);
|
|
744
|
+
this.savePbxProj(project, projectData);
|
|
887
745
|
}
|
|
888
746
|
removeFrameworks(pluginPlatformsFolderPath, pluginData, projectData) {
|
|
889
747
|
const project = this.createPbxProj(projectData);
|
|
@@ -925,50 +783,44 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
925
783
|
const modulemap = `module ${libraryName} { explicit module ${libraryName} { ${headers.join(" ")} } }`;
|
|
926
784
|
this.$fs.writeFile(path.join(headersFolderPath, "module.modulemap"), modulemap);
|
|
927
785
|
}
|
|
928
|
-
mergeProjectXcconfigFiles(projectData) {
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
if (this.$fs.exists(pluginXcconfigFilePath)) {
|
|
940
|
-
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
941
|
-
yield this.$xcconfigService.mergeFiles(pluginXcconfigFilePath, pluginsXcconfigFilePath);
|
|
942
|
-
}
|
|
943
|
-
}
|
|
944
|
-
}
|
|
945
|
-
const appResourcesXcconfigPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName, constants_2.BUILD_XCCONFIG_FILE_NAME);
|
|
946
|
-
if (this.$fs.exists(appResourcesXcconfigPath)) {
|
|
786
|
+
async mergeProjectXcconfigFiles(projectData) {
|
|
787
|
+
const platformData = this.getPlatformData(projectData);
|
|
788
|
+
const pluginsXcconfigFilePaths = _.values(this.$xcconfigService.getPluginsXcconfigFilePaths(platformData.projectRoot));
|
|
789
|
+
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
790
|
+
this.$fs.deleteFile(pluginsXcconfigFilePath);
|
|
791
|
+
}
|
|
792
|
+
const allPlugins = this.getAllProductionPlugins(projectData);
|
|
793
|
+
for (const plugin of allPlugins) {
|
|
794
|
+
const pluginPlatformsFolderPath = plugin.pluginPlatformsFolderPath(IOSProjectService.IOS_PLATFORM_NAME);
|
|
795
|
+
const pluginXcconfigFilePath = path.join(pluginPlatformsFolderPath, constants_2.BUILD_XCCONFIG_FILE_NAME);
|
|
796
|
+
if (this.$fs.exists(pluginXcconfigFilePath)) {
|
|
947
797
|
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
948
|
-
|
|
798
|
+
await this.$xcconfigService.mergeFiles(pluginXcconfigFilePath, pluginsXcconfigFilePath);
|
|
949
799
|
}
|
|
950
800
|
}
|
|
801
|
+
}
|
|
802
|
+
const appResourcesXcconfigPath = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName, constants_2.BUILD_XCCONFIG_FILE_NAME);
|
|
803
|
+
if (this.$fs.exists(appResourcesXcconfigPath)) {
|
|
951
804
|
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
952
|
-
|
|
953
|
-
// We need the pluginsXcconfig file to exist in platforms dir as it is required in the native template:
|
|
954
|
-
// https://github.com/NativeScript/ios-runtime/blob/9c2b7b5f70b9bee8452b7a24aa6b646214c7d2be/build/project-template/__PROJECT_NAME__/build-debug.xcconfig#L3
|
|
955
|
-
// From Xcode 10 in case the file is missing, this include fails and the build itself fails (was a warning in previous Xcode versions).
|
|
956
|
-
this.$fs.writeFile(pluginsXcconfigFilePath, "");
|
|
957
|
-
}
|
|
805
|
+
await this.$xcconfigService.mergeFiles(appResourcesXcconfigPath, pluginsXcconfigFilePath);
|
|
958
806
|
}
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
this.$fs.exists(this.$iOSEntitlementsService.getPlatformsEntitlementsPath(projectData))) {
|
|
964
|
-
const tempEntitlementsDir = yield this.$tempService.mkdirSync("entitlements");
|
|
965
|
-
const tempEntitlementsFilePath = path.join(tempEntitlementsDir, "set-entitlements.xcconfig");
|
|
966
|
-
const entitlementsRelativePath = this.$iOSEntitlementsService.getPlatformsEntitlementsRelativePath(projectData);
|
|
967
|
-
this.$fs.writeFile(tempEntitlementsFilePath, `CODE_SIGN_ENTITLEMENTS = ${entitlementsRelativePath}${os_1.EOL}`);
|
|
968
|
-
yield this.$xcconfigService.mergeFiles(tempEntitlementsFilePath, pluginsXcconfigFilePath);
|
|
969
|
-
}
|
|
807
|
+
}
|
|
808
|
+
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
809
|
+
if (!this.$fs.exists(pluginsXcconfigFilePath)) {
|
|
810
|
+
this.$fs.writeFile(pluginsXcconfigFilePath, "");
|
|
970
811
|
}
|
|
971
|
-
}
|
|
812
|
+
}
|
|
813
|
+
for (const pluginsXcconfigFilePath of pluginsXcconfigFilePaths) {
|
|
814
|
+
const entitlementsPropertyValue = this.$xcconfigService.readPropertyValue(pluginsXcconfigFilePath, constants.CODE_SIGN_ENTITLEMENTS);
|
|
815
|
+
if (entitlementsPropertyValue === null &&
|
|
816
|
+
this.$fs.exists(this.$iOSEntitlementsService.getPlatformsEntitlementsPath(projectData))) {
|
|
817
|
+
const tempEntitlementsDir = await this.$tempService.mkdirSync("entitlements");
|
|
818
|
+
const tempEntitlementsFilePath = path.join(tempEntitlementsDir, "set-entitlements.xcconfig");
|
|
819
|
+
const entitlementsRelativePath = this.$iOSEntitlementsService.getPlatformsEntitlementsRelativePath(projectData);
|
|
820
|
+
this.$fs.writeFile(tempEntitlementsFilePath, `CODE_SIGN_ENTITLEMENTS = ${entitlementsRelativePath}${os_1.EOL}`);
|
|
821
|
+
await this.$xcconfigService.mergeFiles(tempEntitlementsFilePath, pluginsXcconfigFilePath);
|
|
822
|
+
}
|
|
823
|
+
}
|
|
972
824
|
}
|
|
973
825
|
getBuildXCConfigFilePath(projectData) {
|
|
974
826
|
const buildXCConfig = path.join(projectData.appResourcesDirectoryPath, this.getPlatformData(projectData).normalizedPlatformName, constants_2.BUILD_XCCONFIG_FILE_NAME);
|
|
@@ -987,22 +839,19 @@ class IOSProjectService extends projectServiceBaseLib.PlatformProjectServiceBase
|
|
|
987
839
|
this.$logger.warn(`[WARNING]: The CFBundleIdentifier key inside the 'Info.plist' will be overriden by the 'id' set inside the "${constants_2.CONFIG_FILE_NAME_DISPLAY}".`);
|
|
988
840
|
}
|
|
989
841
|
}
|
|
990
|
-
applyPluginsCocoaPods(pluginsData, projectData, platformData) {
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
yield this.$cocoapodsService.applyPodfileToProject(pluginData.name, this.$cocoapodsService.getPluginPodfilePath(pluginData), projectData, platformData);
|
|
996
|
-
}
|
|
842
|
+
async applyPluginsCocoaPods(pluginsData, projectData, platformData) {
|
|
843
|
+
for (const pluginIndex in pluginsData) {
|
|
844
|
+
const pluginData = pluginsData[pluginIndex];
|
|
845
|
+
if (this.$fs.exists(pluginData.pluginPlatformsFolderPath(platformData.normalizedPlatformName))) {
|
|
846
|
+
await this.$cocoapodsService.applyPodfileToProject(pluginData.name, this.$cocoapodsService.getPluginPodfilePath(pluginData), projectData, platformData);
|
|
997
847
|
}
|
|
998
|
-
}
|
|
848
|
+
}
|
|
999
849
|
}
|
|
1000
850
|
}
|
|
851
|
+
exports.IOSProjectService = IOSProjectService;
|
|
1001
852
|
IOSProjectService.IOS_PROJECT_NAME_PLACEHOLDER = "__PROJECT_NAME__";
|
|
1002
853
|
IOSProjectService.IOS_PLATFORM_NAME = "ios";
|
|
1003
854
|
__decorate([
|
|
1004
855
|
(0, helpers_2.hook)("buildIOS")
|
|
1005
856
|
], IOSProjectService.prototype, "buildProject", null);
|
|
1006
|
-
exports.IOSProjectService = IOSProjectService;
|
|
1007
857
|
yok_1.injector.register("iOSProjectService", IOSProjectService);
|
|
1008
|
-
//# sourceMappingURL=ios-project-service.js.map
|