@akylas/nativescript-cli 8.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +385 -0
- package/bin/nativescript +3 -0
- package/bin/nativescript.js +3 -0
- package/bin/ns +3 -0
- package/bin/nsc +3 -0
- package/bin/nsc.js +3 -0
- package/bin/tns +12 -0
- package/bin/tns.cmd +1 -0
- package/config/config.json +8 -0
- package/config/test-dependencies.json +58 -0
- package/config/test-deps-versions-generated.json +1 -0
- package/docs/build-jekyll-md.sh +7 -0
- package/docs/helpers/favicon.ico +0 -0
- package/docs/helpers/logo.png +0 -0
- package/docs/man_pages/cloud/cloud-setup.md +29 -0
- package/docs/man_pages/device/device-android.md +32 -0
- package/docs/man_pages/device/device-ios.md +40 -0
- package/docs/man_pages/device/device-list-applications.md +37 -0
- package/docs/man_pages/device/device-log.md +37 -0
- package/docs/man_pages/device/device-run.md +55 -0
- package/docs/man_pages/device/device.md +46 -0
- package/docs/man_pages/env-configuration/setup.md +22 -0
- package/docs/man_pages/general/autocomplete-disable.md +37 -0
- package/docs/man_pages/general/autocomplete-enable.md +37 -0
- package/docs/man_pages/general/autocomplete-status.md +35 -0
- package/docs/man_pages/general/autocomplete.md +46 -0
- package/docs/man_pages/general/clean.md +22 -0
- package/docs/man_pages/general/doctor.md +33 -0
- package/docs/man_pages/general/error-reporting.md +41 -0
- package/docs/man_pages/general/extension-install.md +45 -0
- package/docs/man_pages/general/extension-uninstall.md +41 -0
- package/docs/man_pages/general/extension.md +35 -0
- package/docs/man_pages/general/help.md +39 -0
- package/docs/man_pages/general/info.md +33 -0
- package/docs/man_pages/general/migrate.md +79 -0
- package/docs/man_pages/general/package-manager-get.md +26 -0
- package/docs/man_pages/general/package-manager-set.md +29 -0
- package/docs/man_pages/general/package-manager.md +25 -0
- package/docs/man_pages/general/proxy-clear.md +26 -0
- package/docs/man_pages/general/proxy-set.md +45 -0
- package/docs/man_pages/general/proxy.md +31 -0
- package/docs/man_pages/general/update.md +40 -0
- package/docs/man_pages/general/usage-reporting.md +41 -0
- package/docs/man_pages/index.html +3 -0
- package/docs/man_pages/lib-management/plugin-add.md +42 -0
- package/docs/man_pages/lib-management/plugin-build.md +32 -0
- package/docs/man_pages/lib-management/plugin-create.md +48 -0
- package/docs/man_pages/lib-management/plugin-install.md +42 -0
- package/docs/man_pages/lib-management/plugin-remove.md +31 -0
- package/docs/man_pages/lib-management/plugin-update.md +41 -0
- package/docs/man_pages/lib-management/plugin.md +39 -0
- package/docs/man_pages/project/configuration/generate.md +36 -0
- package/docs/man_pages/project/configuration/install.md +43 -0
- package/docs/man_pages/project/configuration/open-android.md +27 -0
- package/docs/man_pages/project/configuration/open-ios.md +31 -0
- package/docs/man_pages/project/configuration/open.md +36 -0
- package/docs/man_pages/project/configuration/platform-add.md +46 -0
- package/docs/man_pages/project/configuration/platform-clean.md +41 -0
- package/docs/man_pages/project/configuration/platform-remove.md +41 -0
- package/docs/man_pages/project/configuration/platform-update.md +45 -0
- package/docs/man_pages/project/configuration/platform.md +29 -0
- package/docs/man_pages/project/configuration/prepare.md +49 -0
- package/docs/man_pages/project/configuration/resources/resources-generate-icons.md +39 -0
- package/docs/man_pages/project/configuration/resources/resources-generate-splashes.md +39 -0
- package/docs/man_pages/project/configuration/resources/resources-update.md +35 -0
- package/docs/man_pages/project/configuration/resources/resources.md +14 -0
- package/docs/man_pages/project/creation/create.md +64 -0
- package/docs/man_pages/project/testing/build-android.md +62 -0
- package/docs/man_pages/project/testing/build-ios.md +65 -0
- package/docs/man_pages/project/testing/build.md +66 -0
- package/docs/man_pages/project/testing/debug-android.md +64 -0
- package/docs/man_pages/project/testing/debug-ios.md +65 -0
- package/docs/man_pages/project/testing/debug.md +67 -0
- package/docs/man_pages/project/testing/deploy.md +72 -0
- package/docs/man_pages/project/testing/dev-test-android.md +31 -0
- package/docs/man_pages/project/testing/dev-test-ios.md +36 -0
- package/docs/man_pages/project/testing/preview.md +35 -0
- package/docs/man_pages/project/testing/run-android.md +79 -0
- package/docs/man_pages/project/testing/run-ios.md +83 -0
- package/docs/man_pages/project/testing/run.md +92 -0
- package/docs/man_pages/project/testing/test-android.md +46 -0
- package/docs/man_pages/project/testing/test-init.md +34 -0
- package/docs/man_pages/project/testing/test-ios.md +48 -0
- package/docs/man_pages/project/testing/test.md +48 -0
- package/docs/man_pages/project/testing/typings.md +52 -0
- package/docs/man_pages/publishing/apple-login.md +35 -0
- package/docs/man_pages/publishing/appstore-upload.md +52 -0
- package/docs/man_pages/publishing/appstore.md +42 -0
- package/docs/man_pages/publishing/publish-ios.md +55 -0
- package/docs/man_pages/publishing/publish.md +38 -0
- package/docs/man_pages/start.md +81 -0
- package/lib/.d.ts +494 -0
- package/lib/android-tools-info.js +135 -0
- package/lib/base-package-manager.js +129 -0
- package/lib/bash-scripts/terminateProcess.sh +12 -0
- package/lib/bootstrap.js +203 -0
- package/lib/bun-package-manager.js +135 -0
- package/lib/color.js +10 -0
- package/lib/commands/add-platform.js +49 -0
- package/lib/commands/apple-login.js +52 -0
- package/lib/commands/appstore-list.js +75 -0
- package/lib/commands/appstore-upload.js +106 -0
- package/lib/commands/build.js +161 -0
- package/lib/commands/clean.js +253 -0
- package/lib/commands/command-base.js +46 -0
- package/lib/commands/config.js +135 -0
- package/lib/commands/create-project.js +431 -0
- package/lib/commands/debug.js +191 -0
- package/lib/commands/deploy.js +78 -0
- package/lib/commands/extensibility/install-extension.js +33 -0
- package/lib/commands/extensibility/list-extensions.js +40 -0
- package/lib/commands/extensibility/uninstall-extension.js +32 -0
- package/lib/commands/fonts.js +64 -0
- package/lib/commands/generate-assets.js +71 -0
- package/lib/commands/generate-help.js +26 -0
- package/lib/commands/generate.js +78 -0
- package/lib/commands/info.js +26 -0
- package/lib/commands/install.js +80 -0
- package/lib/commands/list-platforms.js +45 -0
- package/lib/commands/migrate.js +44 -0
- package/lib/commands/platform-clean.js +54 -0
- package/lib/commands/plugin/add-plugin.js +43 -0
- package/lib/commands/plugin/build-plugin.js +70 -0
- package/lib/commands/plugin/create-plugin.js +175 -0
- package/lib/commands/plugin/list-plugins.js +54 -0
- package/lib/commands/plugin/remove-plugin.js +52 -0
- package/lib/commands/plugin/update-plugin.js +52 -0
- package/lib/commands/post-install.js +57 -0
- package/lib/commands/prepare.js +63 -0
- package/lib/commands/preview.js +93 -0
- package/lib/commands/remove-platform.js +40 -0
- package/lib/commands/resources/resources-update.js +45 -0
- package/lib/commands/run.js +177 -0
- package/lib/commands/setup.js +15 -0
- package/lib/commands/start.js +33 -0
- package/lib/commands/test-init.js +167 -0
- package/lib/commands/test.js +146 -0
- package/lib/commands/typings.js +180 -0
- package/lib/commands/update-platform.js +57 -0
- package/lib/commands/update.js +70 -0
- package/lib/common/LICENSE +201 -0
- package/lib/common/README.md +1084 -0
- package/lib/common/bin/common-lib.js +5 -0
- package/lib/common/bootstrap.js +97 -0
- package/lib/common/child-process.js +217 -0
- package/lib/common/codeGeneration/code-entity.js +47 -0
- package/lib/common/codeGeneration/code-generation.d.ts +47 -0
- package/lib/common/codeGeneration/code-printer.js +48 -0
- package/lib/common/command-params.js +45 -0
- package/lib/common/commands/analytics.js +81 -0
- package/lib/common/commands/autocompletion.js +110 -0
- package/lib/common/commands/device/device-log-stream.js +44 -0
- package/lib/common/commands/device/get-file.js +54 -0
- package/lib/common/commands/device/list-applications.js +42 -0
- package/lib/common/commands/device/list-devices.js +150 -0
- package/lib/common/commands/device/list-files.js +55 -0
- package/lib/common/commands/device/put-file.js +55 -0
- package/lib/common/commands/device/run-application.js +46 -0
- package/lib/common/commands/device/stop-application.js +42 -0
- package/lib/common/commands/device/uninstall-application.js +33 -0
- package/lib/common/commands/doctor.js +54 -0
- package/lib/common/commands/generate-messages.js +45 -0
- package/lib/common/commands/help.js +51 -0
- package/lib/common/commands/package-manager-get.js +32 -0
- package/lib/common/commands/package-manager-set.js +37 -0
- package/lib/common/commands/post-install.js +27 -0
- package/lib/common/commands/preuninstall.js +61 -0
- package/lib/common/commands/proxy/proxy-base.js +34 -0
- package/lib/common/commands/proxy/proxy-clear.js +32 -0
- package/lib/common/commands/proxy/proxy-get.js +31 -0
- package/lib/common/commands/proxy/proxy-set.js +150 -0
- package/lib/common/common-lib.js +5 -0
- package/lib/common/constants.js +122 -0
- package/lib/common/declarations.d.ts +1713 -0
- package/lib/common/decorators.js +201 -0
- package/lib/common/definitions/cli-global.d.ts +22 -0
- package/lib/common/definitions/commands-service.d.ts +27 -0
- package/lib/common/definitions/commands.d.ts +51 -0
- package/lib/common/definitions/config.d.ts +33 -0
- package/lib/common/definitions/extensibility.d.ts +147 -0
- package/lib/common/definitions/google-analytics.d.ts +109 -0
- package/lib/common/definitions/json-file-settings-service.d.ts +24 -0
- package/lib/common/definitions/key-commands.d.ts +62 -0
- package/lib/common/definitions/logger.d.ts +41 -0
- package/lib/common/definitions/mobile.d.ts +1499 -0
- package/lib/common/definitions/validator.d.ts +8 -0
- package/lib/common/definitions/yok.d.ts +56 -0
- package/lib/common/dispatchers.js +151 -0
- package/lib/common/docs/helpers/basic-extensions-page.html +15 -0
- package/lib/common/docs/helpers/basic-page.html +14 -0
- package/lib/common/docs/helpers/styles.css +365 -0
- package/lib/common/doctor.d.ts +6 -0
- package/lib/common/errors.js +206 -0
- package/lib/common/file-system.js +441 -0
- package/lib/common/header.js +30 -0
- package/lib/common/helpers.js +658 -0
- package/lib/common/host-info.js +133 -0
- package/lib/common/http-client.js +173 -0
- package/lib/common/logger/appenders/cli-appender.js +24 -0
- package/lib/common/logger/appenders/emit-appender.js +30 -0
- package/lib/common/logger/layouts/cli-layout.js +33 -0
- package/lib/common/logger/logger.js +199 -0
- package/lib/common/messages/messages.interface.d.ts +10 -0
- package/lib/common/messages/messages.js +15 -0
- package/lib/common/mobile/android/android-application-manager.js +228 -0
- package/lib/common/mobile/android/android-debug-bridge-result-handler.js +332 -0
- package/lib/common/mobile/android/android-debug-bridge.js +167 -0
- package/lib/common/mobile/android/android-device-file-system.js +176 -0
- package/lib/common/mobile/android/android-device-hash-service.js +133 -0
- package/lib/common/mobile/android/android-device.js +164 -0
- package/lib/common/mobile/android/android-emulator-services.js +205 -0
- package/lib/common/mobile/android/android-ini-file-parser.js +77 -0
- package/lib/common/mobile/android/android-log-filter.js +42 -0
- package/lib/common/mobile/android/android-virtual-device-service.js +360 -0
- package/lib/common/mobile/android/device-android-debug-bridge.js +48 -0
- package/lib/common/mobile/android/genymotion/genymotion-service.js +211 -0
- package/lib/common/mobile/android/genymotion/virtualbox-service.js +121 -0
- package/lib/common/mobile/android/logcat-helper.js +165 -0
- package/lib/common/mobile/application-manager-base.js +136 -0
- package/lib/common/mobile/device-emitter.js +61 -0
- package/lib/common/mobile/device-log-emitter.js +40 -0
- package/lib/common/mobile/device-log-provider-base.js +76 -0
- package/lib/common/mobile/device-log-provider.js +126 -0
- package/lib/common/mobile/device-platforms-constants.js +22 -0
- package/lib/common/mobile/emulator-helper.js +84 -0
- package/lib/common/mobile/ios/device/ios-application-manager.js +159 -0
- package/lib/common/mobile/ios/device/ios-device-file-system.js +133 -0
- package/lib/common/mobile/ios/device/ios-device-operations.js +234 -0
- package/lib/common/mobile/ios/device/ios-device.js +153 -0
- package/lib/common/mobile/ios/ios-device-base.js +108 -0
- package/lib/common/mobile/ios/ios-device-product-name-mapper.js +65 -0
- package/lib/common/mobile/ios/ios-log-filter.js +24 -0
- package/lib/common/mobile/ios/simulator/ios-emulator-services.js +139 -0
- package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +23 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +147 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-device.js +106 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +81 -0
- package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +69 -0
- package/lib/common/mobile/local-to-device-path-data-factory.js +37 -0
- package/lib/common/mobile/log-filter.js +51 -0
- package/lib/common/mobile/logging-levels.js +12 -0
- package/lib/common/mobile/mobile-core/android-device-discovery.js +91 -0
- package/lib/common/mobile/mobile-core/android-emulator-discovery.js +65 -0
- package/lib/common/mobile/mobile-core/android-process-service.js +259 -0
- package/lib/common/mobile/mobile-core/device-discovery.js +64 -0
- package/lib/common/mobile/mobile-core/devices-service.js +854 -0
- package/lib/common/mobile/mobile-core/ios-device-discovery.js +63 -0
- package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +109 -0
- package/lib/common/mobile/mobile-helper.js +102 -0
- package/lib/common/mobile/wp8/wp8-emulator-services.js +82 -0
- package/lib/common/old.npmignore +12 -0
- package/lib/common/opener.js +16 -0
- package/lib/common/os-info.js +21 -0
- package/lib/common/plist-parser.js +24 -0
- package/lib/common/project-helper.js +70 -0
- package/lib/common/prompter.js +191 -0
- package/lib/common/queue.js +37 -0
- package/lib/common/resource-loader.js +25 -0
- package/lib/common/resources/messages/errorMessages.json +7 -0
- package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +3407 -0
- package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
- package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +4451 -0
- package/lib/common/resources/platform-tools/android/linux/adb +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
- package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +4451 -0
- package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
- package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
- package/lib/common/resources/platform-tools/unzip/win32/unzip.exe +0 -0
- package/lib/common/services/analytics/google-analytics-custom-dimensions.d.ts +16 -0
- package/lib/common/services/auto-completion-service.js +265 -0
- package/lib/common/services/cancellation.js +67 -0
- package/lib/common/services/commands-service.js +268 -0
- package/lib/common/services/help-service.js +252 -0
- package/lib/common/services/hooks-service.js +318 -0
- package/lib/common/services/ios-notification-service.js +49 -0
- package/lib/common/services/json-file-settings-service.js +133 -0
- package/lib/common/services/lock-service.js +129 -0
- package/lib/common/services/message-contract-generator.js +83 -0
- package/lib/common/services/messages-service.js +77 -0
- package/lib/common/services/micro-templating-service.js +49 -0
- package/lib/common/services/net-service.js +137 -0
- package/lib/common/services/project-files-manager.js +100 -0
- package/lib/common/services/project-files-provider-base.js +54 -0
- package/lib/common/services/proxy-service.js +64 -0
- package/lib/common/services/qr.js +39 -0
- package/lib/common/services/settings-service.js +42 -0
- package/lib/common/services/xcode-select-service.js +62 -0
- package/lib/common/utils.js +31 -0
- package/lib/common/validators/project-name-validator.js +88 -0
- package/lib/common/validators/validation-result.js +16 -0
- package/lib/common/vendor/License.txt +4 -0
- package/lib/common/vendor/jaro-winkler_distance.js +111 -0
- package/lib/common/verify-node-version.js +78 -0
- package/lib/common/yok.js +426 -0
- package/lib/config.js +137 -0
- package/lib/constants-provider.js +12 -0
- package/lib/constants.js +350 -0
- package/lib/controllers/build-controller.js +133 -0
- package/lib/controllers/debug-controller.js +235 -0
- package/lib/controllers/deploy-controller.js +38 -0
- package/lib/controllers/migrate-controller.js +1114 -0
- package/lib/controllers/platform-controller.js +127 -0
- package/lib/controllers/prepare-controller.js +353 -0
- package/lib/controllers/run-controller.js +525 -0
- package/lib/controllers/update-controller-base.js +84 -0
- package/lib/controllers/update-controller.js +188 -0
- package/lib/data/build-data.js +44 -0
- package/lib/data/controller-data-base.js +11 -0
- package/lib/data/debug-data.js +6 -0
- package/lib/data/platform-data.js +13 -0
- package/lib/data/prepare-data.js +46 -0
- package/lib/data/run-data.js +11 -0
- package/lib/declarations.d.ts +1256 -0
- package/lib/definitions/android-bundle-tool-service.d.ts +17 -0
- package/lib/definitions/android-plugin-migrator.d.ts +52 -0
- package/lib/definitions/build.d.ts +92 -0
- package/lib/definitions/cleanup-service.d.ts +79 -0
- package/lib/definitions/data.d.ts +7 -0
- package/lib/definitions/debug.d.ts +166 -0
- package/lib/definitions/deploy.d.ts +3 -0
- package/lib/definitions/file-log-service.d.ts +19 -0
- package/lib/definitions/files-hash-service.d.ts +35 -0
- package/lib/definitions/gradle.d.ts +33 -0
- package/lib/definitions/hmr-status-service.d.ts +5 -0
- package/lib/definitions/initialize-service.d.ts +11 -0
- package/lib/definitions/ios-debugger-port-service.d.ts +29 -0
- package/lib/definitions/ios.d.ts +97 -0
- package/lib/definitions/ip-service.d.ts +10 -0
- package/lib/definitions/livesync-global.d.ts +7 -0
- package/lib/definitions/livesync.d.ts +601 -0
- package/lib/definitions/lock-service.d.ts +43 -0
- package/lib/definitions/log-parser-service.d.ts +14 -0
- package/lib/definitions/marking-mode-service.d.ts +11 -0
- package/lib/definitions/metadata-filtering-service.d.ts +48 -0
- package/lib/definitions/migrate.d.ts +46 -0
- package/lib/definitions/nativescript-dev-xcode.d.ts +87 -0
- package/lib/definitions/pacote-service.d.ts +50 -0
- package/lib/definitions/platform.d.ts +146 -0
- package/lib/definitions/plugins.d.ts +75 -0
- package/lib/definitions/prepare.d.ts +51 -0
- package/lib/definitions/project-changes.d.ts +34 -0
- package/lib/definitions/project.d.ts +858 -0
- package/lib/definitions/prompter.d.ts +27 -0
- package/lib/definitions/qr-code.d.ts +3 -0
- package/lib/definitions/require.d.ts +11 -0
- package/lib/definitions/run.d.ts +45 -0
- package/lib/definitions/start-service.d.ts +15 -0
- package/lib/definitions/subscription-service.d.ts +11 -0
- package/lib/definitions/system-warnings.d.ts +4 -0
- package/lib/definitions/temp-service.d.ts +9 -0
- package/lib/definitions/terminal-spinner-service.d.ts +12 -0
- package/lib/definitions/update.d.ts +16 -0
- package/lib/definitions/xcode.d.ts +12 -0
- package/lib/detached-processes/cleanup-js-subprocess.js +62 -0
- package/lib/detached-processes/cleanup-process-definitions.d.ts +70 -0
- package/lib/detached-processes/cleanup-process.js +281 -0
- package/lib/detached-processes/detached-process-enums.d.ts +70 -0
- package/lib/detached-processes/file-log-service.js +20 -0
- package/lib/device-path-provider.js +60 -0
- package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +217 -0
- package/lib/device-sockets/ios/notification.js +30 -0
- package/lib/device-sockets/ios/socket-request-executor.js +56 -0
- package/lib/helpers/android-bundle-validator-helper.js +52 -0
- package/lib/helpers/deploy-command-helper.js +70 -0
- package/lib/helpers/key-command-helper.js +124 -0
- package/lib/helpers/livesync-command-helper.js +220 -0
- package/lib/helpers/network-connectivity-validator.js +47 -0
- package/lib/helpers/options-track-helper.js +88 -0
- package/lib/helpers/package-path-helper.js +6 -0
- package/lib/helpers/platform-command-helper.js +192 -0
- package/lib/helpers/version-validator-helper.js +25 -0
- package/lib/key-commands/bootstrap.js +21 -0
- package/lib/key-commands/index.js +456 -0
- package/lib/nativescript-cli-lib-bootstrap.js +8 -0
- package/lib/nativescript-cli-lib.js +5 -0
- package/lib/nativescript-cli.js +55 -0
- package/lib/node/pbxproj-dom-xcode.js +5 -0
- package/lib/node/xcode.js +7 -0
- package/lib/node-package-manager.js +156 -0
- package/lib/options.js +393 -0
- package/lib/package-installation-manager.js +221 -0
- package/lib/package-manager.js +184 -0
- package/lib/platform-command-param.js +29 -0
- package/lib/pnpm-package-manager.js +136 -0
- package/lib/project-data.js +237 -0
- package/lib/providers/project-files-provider.js +46 -0
- package/lib/resolvers/livesync-service-resolver.js +22 -0
- package/lib/services/analytics/analytics-broker-process.js +77 -0
- package/lib/services/analytics/analytics-broker.js +53 -0
- package/lib/services/analytics/analytics-service.js +366 -0
- package/lib/services/analytics/analytics.d.ts +55 -0
- package/lib/services/analytics/google-analytics-cross-client-custom-dimensions.d.ts +6 -0
- package/lib/services/analytics/google-analytics-provider.js +152 -0
- package/lib/services/analytics-settings-service.js +104 -0
- package/lib/services/android/android-bundle-tool-service.js +81 -0
- package/lib/services/android/gradle-build-args-service.js +87 -0
- package/lib/services/android/gradle-build-service.js +68 -0
- package/lib/services/android/gradle-command-service.js +49 -0
- package/lib/services/android-device-debug-service.js +173 -0
- package/lib/services/android-plugin-build-service.js +527 -0
- package/lib/services/android-project-service.js +600 -0
- package/lib/services/android-resources-migration-service.js +104 -0
- package/lib/services/apple-portal/apple-portal-application-service.js +82 -0
- package/lib/services/apple-portal/apple-portal-cookie-service.js +53 -0
- package/lib/services/apple-portal/apple-portal-session-service.js +277 -0
- package/lib/services/apple-portal/definitions.d.ts +87 -0
- package/lib/services/assets-generation/assets-generation-service.js +178 -0
- package/lib/services/build-artifacts-service.js +113 -0
- package/lib/services/build-data-service.js +20 -0
- package/lib/services/build-info-file-service.js +79 -0
- package/lib/services/cleanup-service.js +194 -0
- package/lib/services/cocoapods-platform-manager.js +137 -0
- package/lib/services/cocoapods-service.js +354 -0
- package/lib/services/debug-data-service.js +21 -0
- package/lib/services/debug-service-base.js +44 -0
- package/lib/services/device/device-install-app-service.js +118 -0
- package/lib/services/doctor-service.js +294 -0
- package/lib/services/extensibility-service.js +220 -0
- package/lib/services/files-hash-service.js +79 -0
- package/lib/services/hmr-status-service.js +128 -0
- package/lib/services/info-service.js +14 -0
- package/lib/services/initialize-service.js +70 -0
- package/lib/services/ios/export-options-plist-service.js +131 -0
- package/lib/services/ios/ios-signing-service.js +265 -0
- package/lib/services/ios/spm-service.js +78 -0
- package/lib/services/ios/xcodebuild-args-service.js +163 -0
- package/lib/services/ios/xcodebuild-command-service.js +40 -0
- package/lib/services/ios/xcodebuild-service.js +93 -0
- package/lib/services/ios-debugger-port-service.js +140 -0
- package/lib/services/ios-device-debug-service.js +167 -0
- package/lib/services/ios-entitlements-service.js +78 -0
- package/lib/services/ios-extensions-service.js +63 -0
- package/lib/services/ios-log-filter.js +70 -0
- package/lib/services/ios-native-target-service.js +108 -0
- package/lib/services/ios-project-service.js +851 -0
- package/lib/services/ios-provision-service.js +173 -0
- package/lib/services/ios-watch-app-service.js +76 -0
- package/lib/services/ip-service.js +78 -0
- package/lib/services/itmstransporter-service.js +216 -0
- package/lib/services/karma-execution.js +16 -0
- package/lib/services/livesync/android-device-livesync-service-base.js +68 -0
- package/lib/services/livesync/android-device-livesync-service.js +203 -0
- package/lib/services/livesync/android-device-livesync-sockets-service.js +198 -0
- package/lib/services/livesync/android-livesync-service.js +76 -0
- package/lib/services/livesync/android-livesync-tool.js +427 -0
- package/lib/services/livesync/android-livesync-tool.md +211 -0
- package/lib/services/livesync/device-livesync-service-base.js +69 -0
- package/lib/services/livesync/ios-device-livesync-service.js +218 -0
- package/lib/services/livesync/ios-livesync-service.js +95 -0
- package/lib/services/livesync/livesync-socket.js +14 -0
- package/lib/services/livesync/platform-livesync-service-base.js +180 -0
- package/lib/services/livesync-process-data-service.js +43 -0
- package/lib/services/log-parser-service.js +52 -0
- package/lib/services/log-source-map-service.js +235 -0
- package/lib/services/marking-mode-service.js +56 -0
- package/lib/services/metadata-filtering-service.js +105 -0
- package/lib/services/npm-config-service.js +39 -0
- package/lib/services/pacote-service.js +109 -0
- package/lib/services/performance-service.js +92 -0
- package/lib/services/platform/add-platform-service.js +119 -0
- package/lib/services/platform/platform-validation-service.js +85 -0
- package/lib/services/platform/prepare-native-platform-service.js +87 -0
- package/lib/services/platform-environment-requirements.js +87 -0
- package/lib/services/platform-project-service-base.js +32 -0
- package/lib/services/platforms-data-service.js +31 -0
- package/lib/services/plugins-service.js +477 -0
- package/lib/services/prepare-data-service.js +21 -0
- package/lib/services/project-backup-service.js +114 -0
- package/lib/services/project-changes-service.js +274 -0
- package/lib/services/project-cleanup-service.js +102 -0
- package/lib/services/project-config-service.js +335 -0
- package/lib/services/project-data-service.js +478 -0
- package/lib/services/project-name-service.js +67 -0
- package/lib/services/project-service.js +204 -0
- package/lib/services/project-templates-service.js +114 -0
- package/lib/services/qr-code-terminal-service.js +20 -0
- package/lib/services/require-service.js +11 -0
- package/lib/services/start-service.js +116 -0
- package/lib/services/temp-service.js +36 -0
- package/lib/services/terminal-spinner-service.js +38 -0
- package/lib/services/test-execution-service.js +154 -0
- package/lib/services/test-initialization-service.js +54 -0
- package/lib/services/timeline-profiler-service.js +108 -0
- package/lib/services/user-settings-service.js +34 -0
- package/lib/services/versions-service.js +196 -0
- package/lib/services/watch-ignore-list-service.js +20 -0
- package/lib/services/webpack/webpack-compiler-service.js +405 -0
- package/lib/services/webpack/webpack.d.ts +227 -0
- package/lib/services/xcconfig-service.js +76 -0
- package/lib/services/xcproj-service.js +11 -0
- package/lib/shared-event-bus.js +7 -0
- package/lib/sys-info.js +120 -0
- package/lib/tools/config-manipulation/config-transformer.js +201 -0
- package/lib/tools/node-modules/node-modules-builder.js +42 -0
- package/lib/tools/node-modules/node-modules-dependencies-builder.js +100 -0
- package/lib/yarn-package-manager.js +134 -0
- package/lib/yarn2-package-manager.js +143 -0
- package/package.json +192 -0
- package/postinstall.js +10 -0
- package/preuninstall.js +14 -0
- package/resources/assets/image-definitions.json +655 -0
- package/resources/test/example.jasmine.js +6 -0
- package/resources/test/example.jasmine.ts +6 -0
- package/resources/test/example.mocha.js +9 -0
- package/resources/test/example.mocha.ts +9 -0
- package/resources/test/example.qunit.js +7 -0
- package/resources/test/example.qunit.ts +7 -0
- package/resources/test/karma.conf.js +93 -0
- package/resources/test/test-main.js +9 -0
- package/resources/test/test-main.ts +11 -0
- package/resources/test/tsconfig.spec.json +9 -0
- package/setup/mac-startup-shell-script.sh +2 -0
- package/vendor/aab-tool/LICENSE +202 -0
- package/vendor/aab-tool/README.txt +1 -0
- package/vendor/aab-tool/bundletool.jar +0 -0
- package/vendor/gradle-app/app/build.gradle +1054 -0
- package/vendor/gradle-app/app/gradle-helpers/AnalyticsCollector.gradle +48 -0
- package/vendor/gradle-app/app/gradle-helpers/BuildToolTask.gradle +50 -0
- package/vendor/gradle-app/app/gradle-helpers/CustomExecutionLogger.gradle +52 -0
- package/vendor/gradle-app/build.gradle +170 -0
- package/vendor/gradle-app/settings.gradle +78 -0
- package/vendor/gradle-plugin/LICENSE +995 -0
- package/vendor/gradle-plugin/build.gradle +363 -0
- package/vendor/gradle-plugin/gradle/wrapper/gradle-wrapper.jar +0 -0
- package/vendor/gradle-plugin/gradle/wrapper/gradle-wrapper.properties +6 -0
- package/vendor/gradle-plugin/gradle.properties +6 -0
- package/vendor/gradle-plugin/gradlew +172 -0
- package/vendor/gradle-plugin/gradlew.bat +84 -0
- package/vendor/gradle-plugin/settings.gradle +45 -0
|
@@ -0,0 +1,1054 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Script builds apk in release or debug mode
|
|
3
|
+
* To run:
|
|
4
|
+
* gradle assembleRelease -Prelease (release mode)
|
|
5
|
+
* gradle assembleDebug (debug mode -> default)
|
|
6
|
+
* Options:
|
|
7
|
+
* -Prelease //this flag will run build in release mode
|
|
8
|
+
* -PksPath=[path_to_keystore_file]
|
|
9
|
+
* -PksPassword=[password_for_keystore_file]
|
|
10
|
+
* -Palias=[alias_to_use_from_keystore_file]
|
|
11
|
+
* -Ppassword=[password_for_alias]
|
|
12
|
+
*
|
|
13
|
+
* -PtargetSdk=[target_sdk]
|
|
14
|
+
* -PbuildToolsVersion=[build_tools_version]
|
|
15
|
+
* -PcompileSdk=[compile_sdk_version]
|
|
16
|
+
* -PandroidXLegacy=[androidx_legacy_version]
|
|
17
|
+
* -PandroidXAppCompat=[androidx_appcompat_version]
|
|
18
|
+
* -PandroidXMaterial=[androidx_material_version]
|
|
19
|
+
* -PappPath=[app_path]
|
|
20
|
+
* -PappResourcesPath=[app_resources_path]
|
|
21
|
+
*/
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
import groovy.io.FileType
|
|
25
|
+
import groovy.json.JsonSlurper
|
|
26
|
+
import org.apache.commons.io.FileUtils
|
|
27
|
+
|
|
28
|
+
import javax.inject.Inject
|
|
29
|
+
import java.nio.file.Files
|
|
30
|
+
import java.nio.file.Paths
|
|
31
|
+
import java.nio.file.StandardCopyOption
|
|
32
|
+
import java.security.MessageDigest
|
|
33
|
+
|
|
34
|
+
import java.util.jar.JarEntry
|
|
35
|
+
import java.util.jar.JarFile
|
|
36
|
+
|
|
37
|
+
import static org.gradle.internal.logging.text.StyledTextOutput.Style
|
|
38
|
+
import java.util.stream.Collectors;
|
|
39
|
+
import java.util.stream.Stream;
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
apply plugin: "com.android.application"
|
|
43
|
+
apply from: "gradle-helpers/BuildToolTask.gradle"
|
|
44
|
+
apply from: "gradle-helpers/CustomExecutionLogger.gradle"
|
|
45
|
+
apply from: "gradle-helpers/AnalyticsCollector.gradle"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
apply plugin: 'kotlin-android'
|
|
49
|
+
apply plugin: 'kotlin-parcelize'
|
|
50
|
+
// apply plugin: "org.jetbrains.kotlin.android"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def onlyX86 = project.hasProperty("onlyX86")
|
|
54
|
+
if (onlyX86) {
|
|
55
|
+
outLogger.withStyle(Style.Info).println "OnlyX86 build triggered."
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//common
|
|
59
|
+
def BUILD_TOOLS_PATH = "$rootDir/build-tools"
|
|
60
|
+
def PASSED_TYPINGS_PATH = System.getenv("TNS_TYPESCRIPT_DECLARATIONS_PATH")
|
|
61
|
+
def TYPINGS_PATH = "$BUILD_TOOLS_PATH/typings"
|
|
62
|
+
if (PASSED_TYPINGS_PATH != null) {
|
|
63
|
+
TYPINGS_PATH = PASSED_TYPINGS_PATH
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
def PACKAGE_JSON = "package.json"
|
|
67
|
+
|
|
68
|
+
//static binding generator
|
|
69
|
+
def SBG_JAVA_DEPENDENCIES = "sbg-java-dependencies.txt"
|
|
70
|
+
def SBG_INPUT_FILE = "sbg-input-file.txt"
|
|
71
|
+
def SBG_OUTPUT_FILE = "sbg-output-file.txt"
|
|
72
|
+
def SBG_JS_PARSED_FILES = "sbg-js-parsed-files.txt"
|
|
73
|
+
def SBG_BINDINGS_NAME = "sbg-bindings.txt"
|
|
74
|
+
def SBG_INTERFACE_NAMES = "sbg-interface-names.txt"
|
|
75
|
+
def INPUT_JS_DIR = "$projectDir/src/main/assets/app"
|
|
76
|
+
def OUTPUT_JAVA_DIR = "$projectDir/src/main/java"
|
|
77
|
+
|
|
78
|
+
//metadata generator
|
|
79
|
+
def MDG_OUTPUT_DIR = "mdg-output-dir.txt"
|
|
80
|
+
def MDG_JAVA_DEPENDENCIES = "mdg-java-dependencies.txt"
|
|
81
|
+
def METADATA_OUT_PATH = "$projectDir/src/main/assets/metadata"
|
|
82
|
+
def METADATA_JAVA_OUT = "mdg-java-out.txt"
|
|
83
|
+
|
|
84
|
+
// paths to jar libraries
|
|
85
|
+
def pluginsJarLibraries = new LinkedList<String>()
|
|
86
|
+
def allJarLibraries = new LinkedList<String>()
|
|
87
|
+
|
|
88
|
+
def computeKotlinVersion = { -> project.hasProperty("kotlinVersion") ? kotlinVersion : "${ns_default_kotlin_version}" }
|
|
89
|
+
def computeCompileSdkVersion = { -> project.hasProperty("compileSdk") ? compileSdk : NS_DEFAULT_COMPILE_SDK_VERSION as int }
|
|
90
|
+
def computeTargetSdkVersion = { -> project.hasProperty("targetSdk") ? targetSdk : NS_DEFAULT_COMPILE_SDK_VERSION as int }
|
|
91
|
+
def computeBuildToolsVersion = { ->
|
|
92
|
+
project.hasProperty("buildToolsVersion") ? buildToolsVersion : NS_DEFAULT_BUILD_TOOLS_VERSION as String
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
def enableVerboseMDG = project.gradle.startParameter.logLevel.name() == 'DEBUG'
|
|
96
|
+
|
|
97
|
+
project.ext.selectedBuildType = project.hasProperty("release") ? "release" : "debug"
|
|
98
|
+
|
|
99
|
+
buildscript {
|
|
100
|
+
def applyBuildScriptConfigurations = { ->
|
|
101
|
+
def absolutePathToAppResources = getAppResourcesPath()
|
|
102
|
+
def pathToBuildScriptGradle = "$absolutePathToAppResources/Android/buildscript.gradle"
|
|
103
|
+
def buildScriptGradle = file(pathToBuildScriptGradle)
|
|
104
|
+
if (buildScriptGradle.exists()) {
|
|
105
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined buildscript from ${buildScriptGradle}"
|
|
106
|
+
apply from: pathToBuildScriptGradle, to: buildscript
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
nativescriptDependencies.each { dep ->
|
|
110
|
+
def pathToPluginBuildScriptGradle = "$rootDir/${dep.directory}/$PLATFORMS_ANDROID/buildscript.gradle"
|
|
111
|
+
def pluginBuildScriptGradle = file(pathToPluginBuildScriptGradle)
|
|
112
|
+
if (pluginBuildScriptGradle.exists()) {
|
|
113
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined buildscript from dependency ${pluginBuildScriptGradle}"
|
|
114
|
+
apply from: pathToPluginBuildScriptGradle, to: buildscript
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
applyBuildScriptConfigurations()
|
|
119
|
+
}
|
|
120
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
121
|
+
///////////////////////////// CONFIGURATIONS ///////////////////////////////////////
|
|
122
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
123
|
+
|
|
124
|
+
def applyBeforePluginGradleConfiguration = { ->
|
|
125
|
+
def appResourcesPath = getAppResourcesPath()
|
|
126
|
+
def pathToBeforePluginGradle = "$appResourcesPath/Android/before-plugins.gradle"
|
|
127
|
+
def beforePluginGradle = file(pathToBeforePluginGradle)
|
|
128
|
+
if (beforePluginGradle.exists()) {
|
|
129
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined configuration from ${beforePluginGradle}"
|
|
130
|
+
apply from: pathToBeforePluginGradle
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
def applyAppGradleConfiguration = { ->
|
|
135
|
+
def appResourcesPath = getAppResourcesPath()
|
|
136
|
+
def pathToAppGradle = "$appResourcesPath/Android/app.gradle"
|
|
137
|
+
def appGradle = file(pathToAppGradle)
|
|
138
|
+
if (appGradle.exists()) {
|
|
139
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + applying user-defined configuration from ${appGradle}"
|
|
140
|
+
apply from: pathToAppGradle
|
|
141
|
+
} else {
|
|
142
|
+
outLogger.withStyle(Style.Info).println "\t + couldn't load user-defined configuration from ${appGradle}. File doesn't exist."
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
def applyPluginGradleConfigurations = { ->
|
|
147
|
+
nativescriptDependencies.each { dep ->
|
|
148
|
+
def includeGradlePath = "$rootDir/${dep.directory}/$PLATFORMS_ANDROID/include.gradle"
|
|
149
|
+
if (file(includeGradlePath).exists()) {
|
|
150
|
+
apply from: includeGradlePath
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
def getAppIdentifier = { packageJsonMap ->
|
|
156
|
+
def appIdentifier = ""
|
|
157
|
+
if (packageJsonMap && packageJsonMap.nativescript) {
|
|
158
|
+
appIdentifier = packageJsonMap.nativescript.id
|
|
159
|
+
if (!(appIdentifier instanceof String)) {
|
|
160
|
+
appIdentifier = appIdentifier.android
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return appIdentifier
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
def setAppIdentifier = { ->
|
|
168
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + setting applicationId"
|
|
169
|
+
File packageJsonFile = new File("$USER_PROJECT_ROOT/$PACKAGE_JSON")
|
|
170
|
+
|
|
171
|
+
if (packageJsonFile.exists()) {
|
|
172
|
+
def content = packageJsonFile.getText("UTF-8")
|
|
173
|
+
def jsonSlurper = new JsonSlurper()
|
|
174
|
+
def packageJsonMap = jsonSlurper.parseText(content)
|
|
175
|
+
def appIdentifier = getAppIdentifier(packageJsonMap)
|
|
176
|
+
|
|
177
|
+
if (appIdentifier) {
|
|
178
|
+
project.ext.nsApplicationIdentifier = appIdentifier
|
|
179
|
+
android.defaultConfig.applicationId = appIdentifier
|
|
180
|
+
android.namespace = appIdentifier
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
android {
|
|
186
|
+
applyBeforePluginGradleConfiguration()
|
|
187
|
+
namespace "__PACKAGE__"
|
|
188
|
+
|
|
189
|
+
kotlin {
|
|
190
|
+
jvmToolchain(17)
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
compileSdk computeCompileSdkVersion()
|
|
194
|
+
buildToolsVersion computeBuildToolsVersion()
|
|
195
|
+
|
|
196
|
+
defaultConfig {
|
|
197
|
+
def manifest = new XmlSlurper().parse(file(android.sourceSets.main.manifest.srcFile))
|
|
198
|
+
def minSdkVer = manifest."uses-sdk"."@android:minSdkVersion".text() ?: NS_DEFAULT_MIN_SDK_VERSION
|
|
199
|
+
minSdkVersion minSdkVer
|
|
200
|
+
targetSdkVersion computeTargetSdkVersion()
|
|
201
|
+
ndk {
|
|
202
|
+
if (onlyX86) {
|
|
203
|
+
abiFilters 'x86'
|
|
204
|
+
} else {
|
|
205
|
+
abiFilters 'x86', 'x86_64', 'armeabi-v7a', 'arm64-v8a'
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if (project.hasProperty("ndkVersion")) {
|
|
211
|
+
ndkVersion project.ndkVersion
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
compileOptions {
|
|
215
|
+
sourceCompatibility JavaVersion.VERSION_17
|
|
216
|
+
targetCompatibility JavaVersion.VERSION_17
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
sourceSets.main {
|
|
220
|
+
jniLibs.srcDirs = ["$projectDir/libs/jni", "$projectDir/snapshot-build/build/ndk-build/libs"]
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
signingConfigs {
|
|
224
|
+
release {
|
|
225
|
+
if (project.hasProperty("release")) {
|
|
226
|
+
if (project.hasProperty("ksPath") &&
|
|
227
|
+
project.hasProperty("ksPassword") &&
|
|
228
|
+
project.hasProperty("alias") &&
|
|
229
|
+
project.hasProperty("password")) {
|
|
230
|
+
|
|
231
|
+
storeFile file(ksPath)
|
|
232
|
+
storePassword ksPassword
|
|
233
|
+
keyAlias alias
|
|
234
|
+
keyPassword password
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
buildTypes {
|
|
240
|
+
release {
|
|
241
|
+
signingConfig signingConfigs.release
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
setAppIdentifier()
|
|
246
|
+
applyPluginGradleConfigurations()
|
|
247
|
+
applyAppGradleConfiguration()
|
|
248
|
+
|
|
249
|
+
def initializeMergedAssetsOutputPath = { ->
|
|
250
|
+
android.applicationVariants.configureEach { variant ->
|
|
251
|
+
if (variant.buildType.name == project.selectedBuildType) {
|
|
252
|
+
def task
|
|
253
|
+
if (variant.metaClass.respondsTo(variant, "getMergeAssetsProvider")) {
|
|
254
|
+
def provider = variant.getMergeAssetsProvider()
|
|
255
|
+
task = provider.get()
|
|
256
|
+
} else {
|
|
257
|
+
// fallback for older android gradle plugin versions
|
|
258
|
+
task = variant.getMergeAssets()
|
|
259
|
+
}
|
|
260
|
+
for (File file : task.getOutputs().getFiles()) {
|
|
261
|
+
if (!file.getPath().contains("${File.separator}incremental${File.separator}")) {
|
|
262
|
+
project.ext.mergedAssetsOutputPath = file.getPath()
|
|
263
|
+
break
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
initializeMergedAssetsOutputPath()
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
def externalRuntimeExists = !findProject(':runtime').is(null)
|
|
274
|
+
def pluginDependencies
|
|
275
|
+
|
|
276
|
+
repositories {
|
|
277
|
+
// used for local *.AAR files
|
|
278
|
+
pluginDependencies = nativescriptDependencies.collect {
|
|
279
|
+
"$rootDir/${it.directory}/$PLATFORMS_ANDROID"
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
// some plugins may have their android dependencies in a /libs subdirectory
|
|
283
|
+
pluginDependencies.addAll(nativescriptDependencies.collect {
|
|
284
|
+
"$rootDir/${it.directory}/$PLATFORMS_ANDROID/libs"
|
|
285
|
+
})
|
|
286
|
+
|
|
287
|
+
if (!externalRuntimeExists) {
|
|
288
|
+
pluginDependencies.add("$rootDir/app/libs/runtime-libs")
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
def appResourcesPath = getAppResourcesPath()
|
|
292
|
+
def localAppResourcesLibraries = "$appResourcesPath/Android/libs"
|
|
293
|
+
|
|
294
|
+
pluginDependencies.add(localAppResourcesLibraries)
|
|
295
|
+
|
|
296
|
+
if (pluginDependencies.size() > 0) {
|
|
297
|
+
flatDir {
|
|
298
|
+
dirs pluginDependencies
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
mavenCentral()
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
dependencies {
|
|
306
|
+
// println "\t ~ [DEBUG][app] build.gradle - ns_default_androidx_appcompat_version = ${ns_default_androidx_appcompat_version}..."
|
|
307
|
+
|
|
308
|
+
def androidXAppCompatVersion = "${ns_default_androidx_appcompat_version}"
|
|
309
|
+
if (project.hasProperty("androidXAppCompat")) {
|
|
310
|
+
androidXAppCompatVersion = androidXAppCompat
|
|
311
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.appcompat:appcompat:$androidXAppCompatVersion"
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
def androidXMaterialVersion = "${ns_default_androidx_material_version}"
|
|
315
|
+
if (project.hasProperty("androidXMaterial")) {
|
|
316
|
+
androidXMaterialVersion = androidXMaterial
|
|
317
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library com.google.android.material:material:$androidXMaterialVersion"
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
def androidXExifInterfaceVersion = "${ns_default_androidx_exifinterface_version}"
|
|
321
|
+
if (project.hasProperty("androidXExifInterface")) {
|
|
322
|
+
androidXExifInterfaceVersion = androidXExifInterface
|
|
323
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.exifinterface:exifinterface:$androidXExifInterfaceVersion"
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
def androidXViewPagerVersion = "${ns_default_androidx_viewpager_version}"
|
|
327
|
+
if (project.hasProperty("androidXViewPager")) {
|
|
328
|
+
androidXViewPagerVersion = androidXViewPager
|
|
329
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.viewpager2:viewpager2:$androidXViewPagerVersion"
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
def androidXFragmentVersion = "${ns_default_androidx_fragment_version}"
|
|
333
|
+
if (project.hasProperty("androidXFragment")) {
|
|
334
|
+
androidXFragmentVersion = androidXFragment
|
|
335
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.fragment:fragment:$androidXFragmentVersion"
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
def androidXTransitionVersion = "${ns_default_androidx_transition_version}"
|
|
339
|
+
if (project.hasProperty("androidXTransition")) {
|
|
340
|
+
androidXTransitionVersion = androidXTransition
|
|
341
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.transition:transition:$androidXTransitionVersion"
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
def androidXMultidexVersion = "${ns_default_androidx_multidex_version}"
|
|
345
|
+
if (project.hasProperty("androidXMultidex")) {
|
|
346
|
+
androidXMultidexVersion = androidXMultidex
|
|
347
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + using android X library androidx.multidex:multidex:$androidXMultidexVersion"
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
implementation "androidx.multidex:multidex:$androidXMultidexVersion"
|
|
351
|
+
implementation "androidx.appcompat:appcompat:$androidXAppCompatVersion"
|
|
352
|
+
debugImplementation "com.google.android.material:material:$androidXMaterialVersion"
|
|
353
|
+
implementation "androidx.exifinterface:exifinterface:$androidXExifInterfaceVersion"
|
|
354
|
+
implementation "androidx.viewpager2:viewpager2:$androidXViewPagerVersion"
|
|
355
|
+
//noinspection KtxExtensionAvailable
|
|
356
|
+
implementation "androidx.fragment:fragment:$androidXFragmentVersion"
|
|
357
|
+
implementation "androidx.transition:transition:$androidXTransitionVersion"
|
|
358
|
+
|
|
359
|
+
def useV8Symbols = false
|
|
360
|
+
|
|
361
|
+
def appPackageJsonFile = file("${getAppPath()}/$PACKAGE_JSON")
|
|
362
|
+
if (appPackageJsonFile.exists()) {
|
|
363
|
+
def appPackageJson = new JsonSlurper().parseText(appPackageJsonFile.text)
|
|
364
|
+
useV8Symbols = appPackageJson.android && appPackageJson.android.useV8Symbols
|
|
365
|
+
}
|
|
366
|
+
|
|
367
|
+
if (!useV8Symbols) {
|
|
368
|
+
// check whether any of the dependencies require v8 symbols
|
|
369
|
+
useV8Symbols = nativescriptDependencies.any {
|
|
370
|
+
def packageJsonFile = file("$rootDir/${it.directory}/$PACKAGE_JSON")
|
|
371
|
+
def packageJson = new JsonSlurper().parseText(packageJsonFile.text)
|
|
372
|
+
return packageJson.nativescript && packageJson.nativescript.useV8Symbols
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
if (!externalRuntimeExists) {
|
|
377
|
+
def runtime = "nativescript-optimized-with-inspector"
|
|
378
|
+
|
|
379
|
+
if (project.gradle.startParameter.taskNames.any { it.toLowerCase().contains('release') }) {
|
|
380
|
+
runtime = "nativescript-optimized"
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
if (useV8Symbols) {
|
|
384
|
+
runtime = "nativescript-regular"
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + adding nativescript runtime package dependency: $runtime"
|
|
388
|
+
project.dependencies.add("implementation", [name: runtime, ext: "aar"])
|
|
389
|
+
} else {
|
|
390
|
+
implementation project(':runtime')
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// def kotlinVersion = computeKotlinVersion()
|
|
394
|
+
// implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
|
|
395
|
+
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
399
|
+
///////////////////////////// CONFIGURATION PHASE //////////////////////////////////
|
|
400
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
401
|
+
|
|
402
|
+
task addDependenciesFromNativeScriptPlugins {
|
|
403
|
+
nativescriptDependencies.each { dep ->
|
|
404
|
+
def aarFiles = fileTree(dir: file("$rootDir/${dep.directory}/$PLATFORMS_ANDROID"), include: ["**/*.aar"])
|
|
405
|
+
aarFiles.each { aarFile ->
|
|
406
|
+
def length = aarFile.name.length() - 4
|
|
407
|
+
def fileName = aarFile.name[0..<length]
|
|
408
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + adding aar plugin dependency: " + aarFile.getAbsolutePath()
|
|
409
|
+
project.dependencies.add("implementation", [name: fileName, ext: "aar"])
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
def jarFiles = fileTree(dir: file("$rootDir/${dep.directory}/$PLATFORMS_ANDROID"), include: ["**/*.jar"])
|
|
413
|
+
jarFiles.each { jarFile ->
|
|
414
|
+
def jarFileAbsolutePath = jarFile.getAbsolutePath()
|
|
415
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + adding jar plugin dependency: $jarFileAbsolutePath"
|
|
416
|
+
pluginsJarLibraries.add(jarFile.getAbsolutePath())
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
project.dependencies.add("implementation", jarFiles)
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
task addDependenciesFromAppResourcesLibraries {
|
|
424
|
+
def appResourcesPath = getAppResourcesPath()
|
|
425
|
+
def appResourcesLibraries = file("$appResourcesPath/Android/libs")
|
|
426
|
+
if (appResourcesLibraries.exists()) {
|
|
427
|
+
def aarFiles = fileTree(dir: appResourcesLibraries, include: ["**/*.aar"])
|
|
428
|
+
aarFiles.each { aarFile ->
|
|
429
|
+
def length = aarFile.name.length() - 4
|
|
430
|
+
def fileName = aarFile.name[0..<length]
|
|
431
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + adding aar library dependency: " + aarFile.getAbsolutePath()
|
|
432
|
+
project.dependencies.add("implementation", [name: fileName, ext: "aar"])
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
def jarFiles = fileTree(dir: appResourcesLibraries, include: ["**/*.jar"])
|
|
436
|
+
jarFiles.each { jarFile ->
|
|
437
|
+
def jarFileAbsolutePath = jarFile.getAbsolutePath()
|
|
438
|
+
outLogger.withStyle(Style.SuccessHeader).println "\t + adding jar plugin dependency: $jarFileAbsolutePath"
|
|
439
|
+
pluginsJarLibraries.add(jarFile.getAbsolutePath())
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
project.dependencies.add("implementation", jarFiles)
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
if (failOnCompilationWarningsEnabled()) {
|
|
447
|
+
tasks.withType(JavaCompile).configureEach {
|
|
448
|
+
options.compilerArgs << '-Xlint:all' << "-Werror"
|
|
449
|
+
options.deprecation = true
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
454
|
+
///////////////////////////// EXECUTION PHASE /////////////////////////////////////
|
|
455
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
456
|
+
|
|
457
|
+
task runSbg(type: BuildToolTask) {
|
|
458
|
+
dependsOn "collectAllJars"
|
|
459
|
+
def rootPath = ""
|
|
460
|
+
if (!findProject(':static-binding-generator').is(null)) {
|
|
461
|
+
rootPath = Paths.get(project(':static-binding-generator').projectDir.path, "build/libs").toString()
|
|
462
|
+
dependsOn ':static-binding-generator:jar'
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
outputs.dir("$OUTPUT_JAVA_DIR/com/tns/gen")
|
|
466
|
+
inputs.dir(INPUT_JS_DIR)
|
|
467
|
+
inputs.dir(extractedDependenciesDir)
|
|
468
|
+
|
|
469
|
+
workingDir "$BUILD_TOOLS_PATH"
|
|
470
|
+
mainClass = "-jar"
|
|
471
|
+
|
|
472
|
+
def paramz = new ArrayList<String>()
|
|
473
|
+
paramz.add(Paths.get(rootPath, "static-binding-generator.jar"))
|
|
474
|
+
|
|
475
|
+
if (failOnCompilationWarningsEnabled()) {
|
|
476
|
+
paramz.add("-show-deprecation-warnings")
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
setOutputs outLogger
|
|
480
|
+
|
|
481
|
+
args paramz
|
|
482
|
+
|
|
483
|
+
doFirst {
|
|
484
|
+
new File("$OUTPUT_JAVA_DIR/com/tns/gen").deleteDir()
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
def failOnCompilationWarningsEnabled() {
|
|
489
|
+
return project.hasProperty("failOnCompilationWarnings") && (failOnCompilationWarnings || failOnCompilationWarnings.toBoolean())
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
def explodeAar(File compileDependency, File outputDir) {
|
|
493
|
+
logger.info("explodeAar: Extracting ${compileDependency.path} -> ${outputDir.path}")
|
|
494
|
+
|
|
495
|
+
if (compileDependency.name.endsWith(".aar")) {
|
|
496
|
+
JarFile jar = new JarFile(compileDependency)
|
|
497
|
+
Enumeration enumEntries = jar.entries()
|
|
498
|
+
while (enumEntries.hasMoreElements()) {
|
|
499
|
+
JarEntry file = (JarEntry) enumEntries.nextElement()
|
|
500
|
+
if (file.isDirectory()) {
|
|
501
|
+
continue
|
|
502
|
+
}
|
|
503
|
+
if (file.name.endsWith(".jar")) {
|
|
504
|
+
def targetFile = new File(outputDir, file.name)
|
|
505
|
+
InputStream inputStream = jar.getInputStream(file)
|
|
506
|
+
new File(targetFile.parent).mkdirs()
|
|
507
|
+
Files.copy(inputStream, targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING)
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
jar.close()
|
|
511
|
+
} else if (compileDependency.name.endsWith(".jar")) {
|
|
512
|
+
copy {
|
|
513
|
+
from compileDependency.absolutePath
|
|
514
|
+
into outputDir
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
static def md5(String string) {
|
|
520
|
+
MessageDigest digest = MessageDigest.getInstance("MD5")
|
|
521
|
+
digest.update(string.bytes)
|
|
522
|
+
return new BigInteger(1, digest.digest()).toString(16).padLeft(32, '0')
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
class WorkerTask extends DefaultTask {
|
|
526
|
+
@Inject
|
|
527
|
+
WorkerExecutor getWorkerExecutor() {
|
|
528
|
+
throw new UnsupportedOperationException()
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
|
|
532
|
+
class EmptyRunnable implements Runnable {
|
|
533
|
+
void run() {
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
def getMergedAssetsOutputPath() {
|
|
538
|
+
if (!project.hasProperty("mergedAssetsOutputPath")) {
|
|
539
|
+
// mergedAssetsOutputPath not found fallback to the default value for android gradle plugin 3.5.1
|
|
540
|
+
project.ext.mergedAssetsOutputPath = "$projectDir/build/intermediates/merged_assets/" + project.selectedBuildType + "/out"
|
|
541
|
+
}
|
|
542
|
+
return project.ext.mergedAssetsOutputPath
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
// Discover all jars and dynamically create tasks for the extraction of each of them
|
|
546
|
+
project.ext.allJars = []
|
|
547
|
+
allprojects {
|
|
548
|
+
afterEvaluate { project ->
|
|
549
|
+
def buildType = project.selectedBuildType
|
|
550
|
+
def jars = []
|
|
551
|
+
def artifactType = Attribute.of('artifactType', String)
|
|
552
|
+
android.applicationVariants.configureEach { variant ->
|
|
553
|
+
if (variant.buildType.name == buildType) {
|
|
554
|
+
variant.getCompileClasspath(null).each { fileDependency ->
|
|
555
|
+
processJar(fileDependency, jars)
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
def processJar(File jar, jars) {
|
|
563
|
+
if (!jars.contains(jar)) {
|
|
564
|
+
jars.add(jar)
|
|
565
|
+
def destDir = md5(jar.path)
|
|
566
|
+
def outputDir = new File(Paths.get(extractedDependenciesDir, destDir).normalize().toString())
|
|
567
|
+
|
|
568
|
+
def taskName = "extract_${jar.name}_to_${destDir}"
|
|
569
|
+
logger.debug("Creating dynamic task ${taskName}")
|
|
570
|
+
|
|
571
|
+
// Add discovered jars as dependencies of cleanupAllJars.
|
|
572
|
+
// This is crucial for cloud builds because they are different
|
|
573
|
+
// on each incremental build (as each time the gradle user home
|
|
574
|
+
// directory is a randomly generated string)
|
|
575
|
+
cleanupAllJars.inputs.files jar
|
|
576
|
+
|
|
577
|
+
task "${taskName}"(type: WorkerTask) {
|
|
578
|
+
dependsOn cleanupAllJars
|
|
579
|
+
extractAllJars.dependsOn it
|
|
580
|
+
|
|
581
|
+
// This dependency seems redundant but probably due to some Gradle issue with workers,
|
|
582
|
+
// without it `runSbg` sporadically starts before all extraction tasks have finished and
|
|
583
|
+
// fails due to missing JARs
|
|
584
|
+
runSbg.dependsOn it
|
|
585
|
+
|
|
586
|
+
inputs.files jar
|
|
587
|
+
outputs.dir outputDir
|
|
588
|
+
|
|
589
|
+
doLast {
|
|
590
|
+
// Runing in parallel no longer seems to bring any benefit.
|
|
591
|
+
// It mattered only when we were extracting JARs from AARs.
|
|
592
|
+
// To try it simply remove the following comments.
|
|
593
|
+
// workerExecutor.submit(EmptyRunnable.class) {
|
|
594
|
+
explodeAar(jar, outputDir)
|
|
595
|
+
// }
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
project.ext.allJars.add([file: jar, outputDir: outputDir])
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
task 'cleanupAllJars' {
|
|
603
|
+
// We depend on the list of libs directories that might contain aar or jar files
|
|
604
|
+
// and on the list of all discovered jars
|
|
605
|
+
inputs.files(pluginDependencies)
|
|
606
|
+
|
|
607
|
+
outputs.files cleanupAllJarsTimestamp
|
|
608
|
+
|
|
609
|
+
doLast {
|
|
610
|
+
def allDests = project.ext.allJars*.outputDir*.name
|
|
611
|
+
def dir = new File(extractedDependenciesDir)
|
|
612
|
+
if (dir.exists()) {
|
|
613
|
+
dir.eachDir {
|
|
614
|
+
// An old directory which is no longer a dependency (e.g. orphaned by a deleted plugin)
|
|
615
|
+
if (!allDests.contains(it.name)) {
|
|
616
|
+
logger.info("Task cleanupAllJars: Deleting orphaned ${it.path}")
|
|
617
|
+
FileUtils.deleteDirectory(it)
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
new File(cleanupAllJarsTimestamp).write ""
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
// Placeholder task which depends on all dynamically generated extraction tasks
|
|
627
|
+
task 'extractAllJars' {
|
|
628
|
+
dependsOn cleanupAllJars
|
|
629
|
+
outputs.files extractAllJarsTimestamp
|
|
630
|
+
|
|
631
|
+
doLast {
|
|
632
|
+
new File(cleanupAllJarsTimestamp).write ""
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
task 'collectAllJars' {
|
|
637
|
+
dependsOn extractAllJars
|
|
638
|
+
description "gathers all paths to jar dependencies before building metadata with them"
|
|
639
|
+
|
|
640
|
+
def sdkPath = android.sdkDirectory.getAbsolutePath()
|
|
641
|
+
def androidJar = sdkPath + "/platforms/" + android.compileSdkVersion + "/android.jar"
|
|
642
|
+
|
|
643
|
+
doFirst {
|
|
644
|
+
def allJarPaths = new LinkedList<String>()
|
|
645
|
+
allJarPaths.add(androidJar)
|
|
646
|
+
allJarPaths.addAll(pluginsJarLibraries)
|
|
647
|
+
def ft = fileTree(dir: extractedDependenciesDir, include: "**/*.jar")
|
|
648
|
+
ft.each { currentJarFile ->
|
|
649
|
+
allJarPaths.add(currentJarFile.getAbsolutePath())
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
new File("$BUILD_TOOLS_PATH/$SBG_JAVA_DEPENDENCIES").withWriter { out ->
|
|
653
|
+
allJarPaths.each { out.println it }
|
|
654
|
+
}
|
|
655
|
+
new File("$BUILD_TOOLS_PATH/$MDG_JAVA_DEPENDENCIES").withWriter { out ->
|
|
656
|
+
allJarPaths.each {
|
|
657
|
+
if (it.endsWith(".jar")) {
|
|
658
|
+
out.println it
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
new File("$BUILD_TOOLS_PATH/$SBG_INPUT_FILE").withWriter { out ->
|
|
664
|
+
out.println INPUT_JS_DIR
|
|
665
|
+
}
|
|
666
|
+
new File("$BUILD_TOOLS_PATH/$SBG_OUTPUT_FILE").withWriter { out ->
|
|
667
|
+
out.println OUTPUT_JAVA_DIR
|
|
668
|
+
}
|
|
669
|
+
|
|
670
|
+
allJarLibraries.addAll(allJarPaths)
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
task copyMetadataFilters(type: Copy) {
|
|
675
|
+
from "$rootDir/whitelist.mdg", "$rootDir/blacklist.mdg"
|
|
676
|
+
into "$BUILD_TOOLS_PATH"
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
task 'copyMetadata' {
|
|
680
|
+
doLast {
|
|
681
|
+
copy {
|
|
682
|
+
from "$projectDir/src/main/assets/metadata"
|
|
683
|
+
into getMergedAssetsOutputPath() + "/metadata"
|
|
684
|
+
}
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
|
|
688
|
+
def listf(String directoryName, ArrayList<File> store) {
|
|
689
|
+
def directory = new File(directoryName)
|
|
690
|
+
|
|
691
|
+
def resultList = new ArrayList<File>()
|
|
692
|
+
|
|
693
|
+
def fList = directory.listFiles()
|
|
694
|
+
resultList.addAll(Arrays.asList(fList))
|
|
695
|
+
for (File file : fList) {
|
|
696
|
+
if (file.isFile()) {
|
|
697
|
+
store.add(file)
|
|
698
|
+
} else if (file.isDirectory()) {
|
|
699
|
+
resultList.addAll(listf(file.getAbsolutePath(), store))
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
return resultList
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
task buildMetadata(type: BuildToolTask) {
|
|
706
|
+
def rootPath = ""
|
|
707
|
+
if (!findProject(':android-metadata-generator').is(null)) {
|
|
708
|
+
rootPath = Paths.get(project(':android-metadata-generator').projectDir.path, "build/libs").toString()
|
|
709
|
+
dependsOn ':android-metadata-generator:jar'
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
dependsOn copyMetadataFilters
|
|
713
|
+
dependsOn collectAllJars
|
|
714
|
+
|
|
715
|
+
// As some external gradle plugins can reorder the execution order of the tasks it may happen that buildMetadata is executed after merge{Debug/Release}Assets
|
|
716
|
+
// in that case the metadata won't be included in the result apk and it will crash, so to avoid this we are adding the copyMetadata task which will manually copy
|
|
717
|
+
// the metadata files in the merge assets folder and they will be added to the result apk
|
|
718
|
+
|
|
719
|
+
// The next line is added to avoid adding another copyData implementation from the firebase plugin - https://github.com/EddyVerbruggen/nativescript-plugin-firebase/blob/3943bb9147f43c41599e801d026378eba93d3f3a/publish/scripts/installer.js#L1105
|
|
720
|
+
//buildMetadata.finalizedBy(copyMetadata)
|
|
721
|
+
finalizedBy copyMetadata
|
|
722
|
+
|
|
723
|
+
description "builds metadata with provided jar dependencies"
|
|
724
|
+
|
|
725
|
+
inputs.files("$MDG_JAVA_DEPENDENCIES")
|
|
726
|
+
|
|
727
|
+
// make MDG aware of whitelist.mdg and blacklist.mdg files
|
|
728
|
+
inputs.files(project.fileTree(dir: "$rootDir", include: "**/*.mdg"))
|
|
729
|
+
|
|
730
|
+
def classesDir = layout.buildDirectory.dir("intermediates/javac").get().asFile
|
|
731
|
+
if (classesDir.exists()) {
|
|
732
|
+
inputs.dir(classesDir)
|
|
733
|
+
}
|
|
734
|
+
|
|
735
|
+
def kotlinClassesDir = layout.buildDirectory.dir("tmp/kotlin-classes").get().asFile
|
|
736
|
+
if (kotlinClassesDir.exists()) {
|
|
737
|
+
inputs.dir(kotlinClassesDir)
|
|
738
|
+
}
|
|
739
|
+
|
|
740
|
+
outputs.files("$METADATA_OUT_PATH/treeNodeStream.dat", "$METADATA_OUT_PATH/treeStringsStream.dat", "$METADATA_OUT_PATH/treeValueStream.dat")
|
|
741
|
+
|
|
742
|
+
workingDir "$BUILD_TOOLS_PATH"
|
|
743
|
+
mainClass = "-jar"
|
|
744
|
+
|
|
745
|
+
doFirst {
|
|
746
|
+
// get compiled classes to pass to metadata generator
|
|
747
|
+
// these need to be called after the classes have compiled
|
|
748
|
+
new File(getMergedAssetsOutputPath() + "/metadata").deleteDir()
|
|
749
|
+
|
|
750
|
+
def classesSubDirs = []
|
|
751
|
+
def kotlinClassesSubDirs = []
|
|
752
|
+
def selectedBuildType = project.ext.selectedBuildType
|
|
753
|
+
|
|
754
|
+
rootProject.subprojects {
|
|
755
|
+
|
|
756
|
+
def projectClassesDir = it.layout.buildDirectory.dir("intermediates/javac").get().asFile
|
|
757
|
+
def projectKotlinClassesDir = it.layout.buildDirectory.dir("tmp/kotlin-classes").get().asFile
|
|
758
|
+
|
|
759
|
+
if (projectClassesDir.exists()) {
|
|
760
|
+
def projectClassesSubDirs = projectClassesDir.listFiles()
|
|
761
|
+
for (File subDir : projectClassesSubDirs) {
|
|
762
|
+
if (!classesSubDirs.contains(subDir)) {
|
|
763
|
+
classesSubDirs.add(subDir)
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
if (projectKotlinClassesDir.exists()) {
|
|
769
|
+
def projectKotlinClassesSubDirs = projectKotlinClassesDir.listFiles()
|
|
770
|
+
for (File subDir : projectKotlinClassesSubDirs) {
|
|
771
|
+
if (!kotlinClassesSubDirs.contains(subDir)) {
|
|
772
|
+
kotlinClassesSubDirs.add(subDir)
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
def generatedClasses = new LinkedList<String>()
|
|
779
|
+
for (File subDir : classesSubDirs) {
|
|
780
|
+
if (subDir.getName() == selectedBuildType) {
|
|
781
|
+
generatedClasses.add(subDir.getAbsolutePath())
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
|
|
785
|
+
for (File subDir : kotlinClassesSubDirs) {
|
|
786
|
+
if (subDir.getName() == selectedBuildType) {
|
|
787
|
+
generatedClasses.add(subDir.getAbsolutePath())
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
def store = new ArrayList<File>()
|
|
792
|
+
for (String dir : generatedClasses){
|
|
793
|
+
listf(dir, store)
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
|
|
797
|
+
new File("$BUILD_TOOLS_PATH/$METADATA_JAVA_OUT").withWriter { out ->
|
|
798
|
+
store.each {
|
|
799
|
+
out.println it.absolutePath
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
|
|
804
|
+
new File("$BUILD_TOOLS_PATH/$MDG_OUTPUT_DIR").withWriter { out ->
|
|
805
|
+
out.println "$METADATA_OUT_PATH"
|
|
806
|
+
}
|
|
807
|
+
|
|
808
|
+
new File("$BUILD_TOOLS_PATH/$MDG_JAVA_DEPENDENCIES").withWriterAppend { out ->
|
|
809
|
+
generatedClasses.each { out.println it }
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
setOutputs outLogger
|
|
813
|
+
|
|
814
|
+
def paramz = new ArrayList<String>()
|
|
815
|
+
paramz.add(Paths.get(rootPath, "android-metadata-generator.jar"))
|
|
816
|
+
|
|
817
|
+
if (enableVerboseMDG) {
|
|
818
|
+
paramz.add("verbose")
|
|
819
|
+
}
|
|
820
|
+
|
|
821
|
+
args paramz.toArray()
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
task generateTypescriptDefinitions(type: BuildToolTask) {
|
|
826
|
+
if (!findProject(':dts-generator').is(null)) {
|
|
827
|
+
dependsOn ':dts-generator:jar'
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
def paramz = new ArrayList<String>()
|
|
831
|
+
def includeDirs = ["com.android.support", "/platforms/" + android.compileSdkVersion]
|
|
832
|
+
|
|
833
|
+
workingDir "$BUILD_TOOLS_PATH"
|
|
834
|
+
mainClass = "-jar"
|
|
835
|
+
|
|
836
|
+
doFirst {
|
|
837
|
+
delete "$TYPINGS_PATH"
|
|
838
|
+
|
|
839
|
+
paramz.add("dts-generator.jar")
|
|
840
|
+
paramz.add("-input")
|
|
841
|
+
|
|
842
|
+
for (String jarPath : allJarLibraries) {
|
|
843
|
+
// don't generate typings for runtime jars and classes
|
|
844
|
+
if (shouldIncludeDirForTypings(jarPath, includeDirs)) {
|
|
845
|
+
paramz.add(jarPath)
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
|
|
849
|
+
paramz.add("-output")
|
|
850
|
+
paramz.add("$TYPINGS_PATH")
|
|
851
|
+
|
|
852
|
+
new File("$TYPINGS_PATH").mkdirs()
|
|
853
|
+
|
|
854
|
+
logger.info("Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', ''))
|
|
855
|
+
outLogger.withStyle(Style.SuccessHeader).println "Task generateTypescriptDefinitions: Call dts-generator.jar with arguments: " + paramz.toString().replaceAll(',', '')
|
|
856
|
+
|
|
857
|
+
setOutputs outLogger
|
|
858
|
+
|
|
859
|
+
args paramz.toArray()
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
generateTypescriptDefinitions.onlyIf {
|
|
864
|
+
(project.hasProperty("generateTypings") && Boolean.parseBoolean(project.generateTypings)) || PASSED_TYPINGS_PATH != null
|
|
865
|
+
}
|
|
866
|
+
|
|
867
|
+
collectAllJars.finalizedBy(generateTypescriptDefinitions)
|
|
868
|
+
|
|
869
|
+
static def shouldIncludeDirForTypings(path, includeDirs) {
|
|
870
|
+
for (String p : includeDirs) {
|
|
871
|
+
if (path.indexOf(p) > -1) {
|
|
872
|
+
return true
|
|
873
|
+
}
|
|
874
|
+
}
|
|
875
|
+
|
|
876
|
+
return false
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
task 'copyTypings' {
|
|
880
|
+
doLast {
|
|
881
|
+
outLogger.withStyle(Style.Info).println "Copied generated typings to application root level. Make sure to import android.d.ts in reference.d.ts"
|
|
882
|
+
|
|
883
|
+
copy {
|
|
884
|
+
from "$TYPINGS_PATH"
|
|
885
|
+
into "$USER_PROJECT_ROOT"
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
copyTypings.onlyIf { generateTypescriptDefinitions.didWork }
|
|
891
|
+
generateTypescriptDefinitions.finalizedBy(copyTypings)
|
|
892
|
+
|
|
893
|
+
task 'validateAppIdMatch' {
|
|
894
|
+
doLast {
|
|
895
|
+
def lineSeparator = System.getProperty("line.separator")
|
|
896
|
+
|
|
897
|
+
if (project.hasProperty("nsApplicationIdentifier") && !project.hasProperty("release")) {
|
|
898
|
+
if (project.nsApplicationIdentifier != android.defaultConfig.applicationId && android.namespace != appIdentifier) {
|
|
899
|
+
def errorMessage = "${lineSeparator}WARNING: The Application identifier is different from the one inside \"package.json\" file.$lineSeparator" +
|
|
900
|
+
"NativeScript CLI might not work properly.$lineSeparator" +
|
|
901
|
+
"Remove applicationId from app.gradle and update the \"nativescript.id\" in package.json.$lineSeparator" +
|
|
902
|
+
"Actual: ${android.defaultConfig.applicationId}$lineSeparator" +
|
|
903
|
+
"Expected(from \"package.json\"): ${project.nsApplicationIdentifier}$lineSeparator"
|
|
904
|
+
|
|
905
|
+
logger.error(errorMessage)
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
912
|
+
////////////////////////////// OPTIONAL TASKS //////////////////////////////////////
|
|
913
|
+
////////////////////////////////////////////////////////////////////////////////////
|
|
914
|
+
|
|
915
|
+
//////// custom clean ///////////
|
|
916
|
+
task cleanSbg(type: Delete) {
|
|
917
|
+
delete "$BUILD_TOOLS_PATH/$SBG_JS_PARSED_FILES",
|
|
918
|
+
"$BUILD_TOOLS_PATH/$SBG_JAVA_DEPENDENCIES",
|
|
919
|
+
"$BUILD_TOOLS_PATH/$SBG_INTERFACE_NAMES",
|
|
920
|
+
"$BUILD_TOOLS_PATH/$SBG_BINDINGS_NAME",
|
|
921
|
+
"$BUILD_TOOLS_PATH/$SBG_INPUT_FILE",
|
|
922
|
+
"$BUILD_TOOLS_PATH/$SBG_OUTPUT_FILE",
|
|
923
|
+
"$BUILD_TOOLS_PATH/$METADATA_JAVA_OUT",
|
|
924
|
+
"$OUTPUT_JAVA_DIR/com/tns/gen"
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
task cleanMdg(type: Delete) {
|
|
928
|
+
delete "$BUILD_TOOLS_PATH/$MDG_OUTPUT_DIR",
|
|
929
|
+
"$BUILD_TOOLS_PATH/whitelist.mdg",
|
|
930
|
+
"$BUILD_TOOLS_PATH/blacklist.mdg",
|
|
931
|
+
"$BUILD_TOOLS_PATH/$MDG_JAVA_DEPENDENCIES",
|
|
932
|
+
"$METADATA_OUT_PATH"
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
cleanSbg.dependsOn(cleanMdg)
|
|
936
|
+
clean.dependsOn(cleanSbg)
|
|
937
|
+
|
|
938
|
+
|
|
939
|
+
tasks.configureEach { DefaultTask currentTask ->
|
|
940
|
+
if (currentTask =~ /generate.+BuildConfig/) {
|
|
941
|
+
currentTask.finalizedBy(extractAllJars)
|
|
942
|
+
extractAllJars.finalizedBy(collectAllJars)
|
|
943
|
+
}
|
|
944
|
+
if (currentTask =~ /compile.+JavaWithJavac/) {
|
|
945
|
+
currentTask.dependsOn(runSbg)
|
|
946
|
+
currentTask.finalizedBy(buildMetadata)
|
|
947
|
+
}
|
|
948
|
+
|
|
949
|
+
if (currentTask =~ /compile.+Kotlin.+/) {
|
|
950
|
+
currentTask.dependsOn(runSbg)
|
|
951
|
+
currentTask.finalizedBy(buildMetadata)
|
|
952
|
+
}
|
|
953
|
+
|
|
954
|
+
if (currentTask =~ /merge.*Assets/) {
|
|
955
|
+
currentTask.dependsOn(buildMetadata)
|
|
956
|
+
}
|
|
957
|
+
// ensure buildMetadata is done before R8 to allow custom proguard from metadata
|
|
958
|
+
if (currentTask =~ /minify.*WithR8/) {
|
|
959
|
+
currentTask.dependsOn(buildMetadata)
|
|
960
|
+
}
|
|
961
|
+
if (currentTask =~ /assemble.*Debug/ || currentTask =~ /assemble.*Release/) {
|
|
962
|
+
currentTask.finalizedBy("validateAppIdMatch")
|
|
963
|
+
}
|
|
964
|
+
|
|
965
|
+
// added because of a error with gradle 8 telling us to add this
|
|
966
|
+
// because buildMetadata uses the output of those
|
|
967
|
+
// TODO: there must be a way to make it simpler
|
|
968
|
+
if (!(currentTask =~ /AndroidTest/) &&
|
|
969
|
+
(currentTask =~ /process.+Resources/ ||
|
|
970
|
+
currentTask =~ /desugar.+FileDependencies/ ||
|
|
971
|
+
currentTask =~ /desugarBenchmarkFileDependencies/ ||
|
|
972
|
+
currentTask =~ /dexBuilder.+/ ||
|
|
973
|
+
currentTask =~ /check.*DuplicateClasses/ ||
|
|
974
|
+
currentTask =~ /merge.+Shaders/ ||
|
|
975
|
+
currentTask =~ /merge.*JavaResource/ ||
|
|
976
|
+
currentTask =~ /merge.+GlobalSynthetics/ ||
|
|
977
|
+
currentTask =~ /merge.+JniLibFolders/ ||
|
|
978
|
+
currentTask =~ /merge.+NativeLibs/ ||
|
|
979
|
+
currentTask =~ /mergeDex.+/ ||
|
|
980
|
+
currentTask =~ /mergeLibDex.+/ ||
|
|
981
|
+
currentTask =~ /mergeProjectDex.+/ ||
|
|
982
|
+
currentTask =~ /mergeExtDex.+/ ||
|
|
983
|
+
currentTask =~ /mergeExtDexBenchmark/ ||
|
|
984
|
+
currentTask =~ /mergeExtDexNonMinified.+/ ||
|
|
985
|
+
currentTask =~ /mergeDexBenchmark/ ||
|
|
986
|
+
currentTask =~ /mergeDexNonMinified.+/ ||
|
|
987
|
+
currentTask =~ /mergeBenchmark.+JavaResource/ ||
|
|
988
|
+
currentTask =~ /mergeBenchmarkShaders/ ||
|
|
989
|
+
currentTask =~ /mergeBenchmarkJavaResource/ ||
|
|
990
|
+
currentTask =~ /mergeBenchmarkJniLibFolders/ ||
|
|
991
|
+
currentTask =~ /mergeBenchmarkNativeLibs/ ||
|
|
992
|
+
currentTask =~ /mergeNonMinified.+Shaders/ ||
|
|
993
|
+
currentTask =~ /mergeNonMinified.+JavaResource/ ||
|
|
994
|
+
currentTask =~ /mergeNonMinified.+JniLibFolders/ ||
|
|
995
|
+
currentTask =~ /mergeNonMinified.+NativeLibs/ ||
|
|
996
|
+
currentTask =~ /strip.*DebugSymbols/ ||
|
|
997
|
+
currentTask =~ /stripBenchmark.+Symbols/ ||
|
|
998
|
+
currentTask =~ /stripNonMinified.+DebugSymbols/ ||
|
|
999
|
+
currentTask =~ /extract.+NativeSymbolTables/ ||
|
|
1000
|
+
currentTask =~ /extractProguardFiles/ ||
|
|
1001
|
+
currentTask =~ /checkBenchmarkDuplicateClasses/ ||
|
|
1002
|
+
currentTask =~ /checkBenchmark.+DuplicateClasses/ ||
|
|
1003
|
+
currentTask =~ /bundle.*Resources/ ||
|
|
1004
|
+
// currentTask =~ /compile.*ArtProfile/ ||
|
|
1005
|
+
currentTask =~ /extractBenchmarkNativeSymbolTables/ ||
|
|
1006
|
+
currentTask =~ /buildKotlinToolingMetadata/ ||
|
|
1007
|
+
currentTask =~ /validateSigning.*/ ||
|
|
1008
|
+
currentTask =~ /generate.+LintVitalReportMode/ ||
|
|
1009
|
+
currentTask =~ /lintVitalAnalyze.+/ ||
|
|
1010
|
+
currentTask =~ /lintAnalyze.*/ ||
|
|
1011
|
+
currentTask =~ /sync.+LibJars/ ||
|
|
1012
|
+
currentTask =~ /processNonMinified.+JavaRes/ ||
|
|
1013
|
+
currentTask =~ /process.*JavaRes/ ||
|
|
1014
|
+
// currentTask =~ /optimize.+Resources/ ||
|
|
1015
|
+
currentTask =~ /lintAnalyze.*UnitTest/ ||
|
|
1016
|
+
currentTask =~ /buildCMake.*/ ||
|
|
1017
|
+
currentTask =~ /configureCMake.*/ ||
|
|
1018
|
+
currentTask =~ /transform.+ClassesWithAsm/ ||
|
|
1019
|
+
currentTask =~ /generate.*AndroidTestLintModel/ ||
|
|
1020
|
+
currentTask =~ /generate.*UnitTestLintModel/ ||
|
|
1021
|
+
// because of sentry plugin. There must be a better way
|
|
1022
|
+
currentTask =~ /transformDebugClassesWithAsm/ ||
|
|
1023
|
+
currentTask =~ /generateSentryDebugMetaPropertiesDebug/ ||
|
|
1024
|
+
currentTask =~ /generateSentryBundleId.*/ ||
|
|
1025
|
+
currentTask =~ /collectExternal.+/
|
|
1026
|
+
)) {
|
|
1027
|
+
currentTask.finalizedBy(buildMetadata)
|
|
1028
|
+
}
|
|
1029
|
+
if (
|
|
1030
|
+
currentTask =~ /generateSentryBundleId.*/ ||
|
|
1031
|
+
currentTask =~ /sentryCollectSources.*/
|
|
1032
|
+
) {
|
|
1033
|
+
currentTask.mustRunAfter(runSbg)
|
|
1034
|
+
}
|
|
1035
|
+
if (
|
|
1036
|
+
currentTask =~ /generate.*AndroidTestResValues/
|
|
1037
|
+
) {
|
|
1038
|
+
buildMetadata.dependsOn(currentTask)
|
|
1039
|
+
}
|
|
1040
|
+
if (
|
|
1041
|
+
currentTask =~ /generate.*UnitTestLintModel/ ||
|
|
1042
|
+
currentTask =~ /compile.*ArtProfile/
|
|
1043
|
+
) {
|
|
1044
|
+
currentTask.mustRunAfter(buildMetadata)
|
|
1045
|
+
}
|
|
1046
|
+
// added because of a error with gradle 8 telling us to add this
|
|
1047
|
+
// because buildMetadata uses the output of those
|
|
1048
|
+
// TODO: there must be a way to make it simpler
|
|
1049
|
+
if (!(currentTask =~ /AndroidTest/) && (
|
|
1050
|
+
currentTask =~ /process.+Resources/
|
|
1051
|
+
)) {
|
|
1052
|
+
cleanupAllJars.dependsOn(currentTask)
|
|
1053
|
+
}
|
|
1054
|
+
}
|