@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.
Files changed (531) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +385 -0
  3. package/bin/nativescript +3 -0
  4. package/bin/nativescript.js +3 -0
  5. package/bin/ns +3 -0
  6. package/bin/nsc +3 -0
  7. package/bin/nsc.js +3 -0
  8. package/bin/tns +12 -0
  9. package/bin/tns.cmd +1 -0
  10. package/config/config.json +8 -0
  11. package/config/test-dependencies.json +58 -0
  12. package/config/test-deps-versions-generated.json +1 -0
  13. package/docs/build-jekyll-md.sh +7 -0
  14. package/docs/helpers/favicon.ico +0 -0
  15. package/docs/helpers/logo.png +0 -0
  16. package/docs/man_pages/cloud/cloud-setup.md +29 -0
  17. package/docs/man_pages/device/device-android.md +32 -0
  18. package/docs/man_pages/device/device-ios.md +40 -0
  19. package/docs/man_pages/device/device-list-applications.md +37 -0
  20. package/docs/man_pages/device/device-log.md +37 -0
  21. package/docs/man_pages/device/device-run.md +55 -0
  22. package/docs/man_pages/device/device.md +46 -0
  23. package/docs/man_pages/env-configuration/setup.md +22 -0
  24. package/docs/man_pages/general/autocomplete-disable.md +37 -0
  25. package/docs/man_pages/general/autocomplete-enable.md +37 -0
  26. package/docs/man_pages/general/autocomplete-status.md +35 -0
  27. package/docs/man_pages/general/autocomplete.md +46 -0
  28. package/docs/man_pages/general/clean.md +22 -0
  29. package/docs/man_pages/general/doctor.md +33 -0
  30. package/docs/man_pages/general/error-reporting.md +41 -0
  31. package/docs/man_pages/general/extension-install.md +45 -0
  32. package/docs/man_pages/general/extension-uninstall.md +41 -0
  33. package/docs/man_pages/general/extension.md +35 -0
  34. package/docs/man_pages/general/help.md +39 -0
  35. package/docs/man_pages/general/info.md +33 -0
  36. package/docs/man_pages/general/migrate.md +79 -0
  37. package/docs/man_pages/general/package-manager-get.md +26 -0
  38. package/docs/man_pages/general/package-manager-set.md +29 -0
  39. package/docs/man_pages/general/package-manager.md +25 -0
  40. package/docs/man_pages/general/proxy-clear.md +26 -0
  41. package/docs/man_pages/general/proxy-set.md +45 -0
  42. package/docs/man_pages/general/proxy.md +31 -0
  43. package/docs/man_pages/general/update.md +40 -0
  44. package/docs/man_pages/general/usage-reporting.md +41 -0
  45. package/docs/man_pages/index.html +3 -0
  46. package/docs/man_pages/lib-management/plugin-add.md +42 -0
  47. package/docs/man_pages/lib-management/plugin-build.md +32 -0
  48. package/docs/man_pages/lib-management/plugin-create.md +48 -0
  49. package/docs/man_pages/lib-management/plugin-install.md +42 -0
  50. package/docs/man_pages/lib-management/plugin-remove.md +31 -0
  51. package/docs/man_pages/lib-management/plugin-update.md +41 -0
  52. package/docs/man_pages/lib-management/plugin.md +39 -0
  53. package/docs/man_pages/project/configuration/generate.md +36 -0
  54. package/docs/man_pages/project/configuration/install.md +43 -0
  55. package/docs/man_pages/project/configuration/open-android.md +27 -0
  56. package/docs/man_pages/project/configuration/open-ios.md +31 -0
  57. package/docs/man_pages/project/configuration/open.md +36 -0
  58. package/docs/man_pages/project/configuration/platform-add.md +46 -0
  59. package/docs/man_pages/project/configuration/platform-clean.md +41 -0
  60. package/docs/man_pages/project/configuration/platform-remove.md +41 -0
  61. package/docs/man_pages/project/configuration/platform-update.md +45 -0
  62. package/docs/man_pages/project/configuration/platform.md +29 -0
  63. package/docs/man_pages/project/configuration/prepare.md +49 -0
  64. package/docs/man_pages/project/configuration/resources/resources-generate-icons.md +39 -0
  65. package/docs/man_pages/project/configuration/resources/resources-generate-splashes.md +39 -0
  66. package/docs/man_pages/project/configuration/resources/resources-update.md +35 -0
  67. package/docs/man_pages/project/configuration/resources/resources.md +14 -0
  68. package/docs/man_pages/project/creation/create.md +64 -0
  69. package/docs/man_pages/project/testing/build-android.md +62 -0
  70. package/docs/man_pages/project/testing/build-ios.md +65 -0
  71. package/docs/man_pages/project/testing/build.md +66 -0
  72. package/docs/man_pages/project/testing/debug-android.md +64 -0
  73. package/docs/man_pages/project/testing/debug-ios.md +65 -0
  74. package/docs/man_pages/project/testing/debug.md +67 -0
  75. package/docs/man_pages/project/testing/deploy.md +72 -0
  76. package/docs/man_pages/project/testing/dev-test-android.md +31 -0
  77. package/docs/man_pages/project/testing/dev-test-ios.md +36 -0
  78. package/docs/man_pages/project/testing/preview.md +35 -0
  79. package/docs/man_pages/project/testing/run-android.md +79 -0
  80. package/docs/man_pages/project/testing/run-ios.md +83 -0
  81. package/docs/man_pages/project/testing/run.md +92 -0
  82. package/docs/man_pages/project/testing/test-android.md +46 -0
  83. package/docs/man_pages/project/testing/test-init.md +34 -0
  84. package/docs/man_pages/project/testing/test-ios.md +48 -0
  85. package/docs/man_pages/project/testing/test.md +48 -0
  86. package/docs/man_pages/project/testing/typings.md +52 -0
  87. package/docs/man_pages/publishing/apple-login.md +35 -0
  88. package/docs/man_pages/publishing/appstore-upload.md +52 -0
  89. package/docs/man_pages/publishing/appstore.md +42 -0
  90. package/docs/man_pages/publishing/publish-ios.md +55 -0
  91. package/docs/man_pages/publishing/publish.md +38 -0
  92. package/docs/man_pages/start.md +81 -0
  93. package/lib/.d.ts +494 -0
  94. package/lib/android-tools-info.js +135 -0
  95. package/lib/base-package-manager.js +129 -0
  96. package/lib/bash-scripts/terminateProcess.sh +12 -0
  97. package/lib/bootstrap.js +203 -0
  98. package/lib/bun-package-manager.js +135 -0
  99. package/lib/color.js +10 -0
  100. package/lib/commands/add-platform.js +49 -0
  101. package/lib/commands/apple-login.js +52 -0
  102. package/lib/commands/appstore-list.js +75 -0
  103. package/lib/commands/appstore-upload.js +106 -0
  104. package/lib/commands/build.js +161 -0
  105. package/lib/commands/clean.js +253 -0
  106. package/lib/commands/command-base.js +46 -0
  107. package/lib/commands/config.js +135 -0
  108. package/lib/commands/create-project.js +431 -0
  109. package/lib/commands/debug.js +191 -0
  110. package/lib/commands/deploy.js +78 -0
  111. package/lib/commands/extensibility/install-extension.js +33 -0
  112. package/lib/commands/extensibility/list-extensions.js +40 -0
  113. package/lib/commands/extensibility/uninstall-extension.js +32 -0
  114. package/lib/commands/fonts.js +64 -0
  115. package/lib/commands/generate-assets.js +71 -0
  116. package/lib/commands/generate-help.js +26 -0
  117. package/lib/commands/generate.js +78 -0
  118. package/lib/commands/info.js +26 -0
  119. package/lib/commands/install.js +80 -0
  120. package/lib/commands/list-platforms.js +45 -0
  121. package/lib/commands/migrate.js +44 -0
  122. package/lib/commands/platform-clean.js +54 -0
  123. package/lib/commands/plugin/add-plugin.js +43 -0
  124. package/lib/commands/plugin/build-plugin.js +70 -0
  125. package/lib/commands/plugin/create-plugin.js +175 -0
  126. package/lib/commands/plugin/list-plugins.js +54 -0
  127. package/lib/commands/plugin/remove-plugin.js +52 -0
  128. package/lib/commands/plugin/update-plugin.js +52 -0
  129. package/lib/commands/post-install.js +57 -0
  130. package/lib/commands/prepare.js +63 -0
  131. package/lib/commands/preview.js +93 -0
  132. package/lib/commands/remove-platform.js +40 -0
  133. package/lib/commands/resources/resources-update.js +45 -0
  134. package/lib/commands/run.js +177 -0
  135. package/lib/commands/setup.js +15 -0
  136. package/lib/commands/start.js +33 -0
  137. package/lib/commands/test-init.js +167 -0
  138. package/lib/commands/test.js +146 -0
  139. package/lib/commands/typings.js +180 -0
  140. package/lib/commands/update-platform.js +57 -0
  141. package/lib/commands/update.js +70 -0
  142. package/lib/common/LICENSE +201 -0
  143. package/lib/common/README.md +1084 -0
  144. package/lib/common/bin/common-lib.js +5 -0
  145. package/lib/common/bootstrap.js +97 -0
  146. package/lib/common/child-process.js +217 -0
  147. package/lib/common/codeGeneration/code-entity.js +47 -0
  148. package/lib/common/codeGeneration/code-generation.d.ts +47 -0
  149. package/lib/common/codeGeneration/code-printer.js +48 -0
  150. package/lib/common/command-params.js +45 -0
  151. package/lib/common/commands/analytics.js +81 -0
  152. package/lib/common/commands/autocompletion.js +110 -0
  153. package/lib/common/commands/device/device-log-stream.js +44 -0
  154. package/lib/common/commands/device/get-file.js +54 -0
  155. package/lib/common/commands/device/list-applications.js +42 -0
  156. package/lib/common/commands/device/list-devices.js +150 -0
  157. package/lib/common/commands/device/list-files.js +55 -0
  158. package/lib/common/commands/device/put-file.js +55 -0
  159. package/lib/common/commands/device/run-application.js +46 -0
  160. package/lib/common/commands/device/stop-application.js +42 -0
  161. package/lib/common/commands/device/uninstall-application.js +33 -0
  162. package/lib/common/commands/doctor.js +54 -0
  163. package/lib/common/commands/generate-messages.js +45 -0
  164. package/lib/common/commands/help.js +51 -0
  165. package/lib/common/commands/package-manager-get.js +32 -0
  166. package/lib/common/commands/package-manager-set.js +37 -0
  167. package/lib/common/commands/post-install.js +27 -0
  168. package/lib/common/commands/preuninstall.js +61 -0
  169. package/lib/common/commands/proxy/proxy-base.js +34 -0
  170. package/lib/common/commands/proxy/proxy-clear.js +32 -0
  171. package/lib/common/commands/proxy/proxy-get.js +31 -0
  172. package/lib/common/commands/proxy/proxy-set.js +150 -0
  173. package/lib/common/common-lib.js +5 -0
  174. package/lib/common/constants.js +122 -0
  175. package/lib/common/declarations.d.ts +1713 -0
  176. package/lib/common/decorators.js +201 -0
  177. package/lib/common/definitions/cli-global.d.ts +22 -0
  178. package/lib/common/definitions/commands-service.d.ts +27 -0
  179. package/lib/common/definitions/commands.d.ts +51 -0
  180. package/lib/common/definitions/config.d.ts +33 -0
  181. package/lib/common/definitions/extensibility.d.ts +147 -0
  182. package/lib/common/definitions/google-analytics.d.ts +109 -0
  183. package/lib/common/definitions/json-file-settings-service.d.ts +24 -0
  184. package/lib/common/definitions/key-commands.d.ts +62 -0
  185. package/lib/common/definitions/logger.d.ts +41 -0
  186. package/lib/common/definitions/mobile.d.ts +1499 -0
  187. package/lib/common/definitions/validator.d.ts +8 -0
  188. package/lib/common/definitions/yok.d.ts +56 -0
  189. package/lib/common/dispatchers.js +151 -0
  190. package/lib/common/docs/helpers/basic-extensions-page.html +15 -0
  191. package/lib/common/docs/helpers/basic-page.html +14 -0
  192. package/lib/common/docs/helpers/styles.css +365 -0
  193. package/lib/common/doctor.d.ts +6 -0
  194. package/lib/common/errors.js +206 -0
  195. package/lib/common/file-system.js +441 -0
  196. package/lib/common/header.js +30 -0
  197. package/lib/common/helpers.js +658 -0
  198. package/lib/common/host-info.js +133 -0
  199. package/lib/common/http-client.js +173 -0
  200. package/lib/common/logger/appenders/cli-appender.js +24 -0
  201. package/lib/common/logger/appenders/emit-appender.js +30 -0
  202. package/lib/common/logger/layouts/cli-layout.js +33 -0
  203. package/lib/common/logger/logger.js +199 -0
  204. package/lib/common/messages/messages.interface.d.ts +10 -0
  205. package/lib/common/messages/messages.js +15 -0
  206. package/lib/common/mobile/android/android-application-manager.js +228 -0
  207. package/lib/common/mobile/android/android-debug-bridge-result-handler.js +332 -0
  208. package/lib/common/mobile/android/android-debug-bridge.js +167 -0
  209. package/lib/common/mobile/android/android-device-file-system.js +176 -0
  210. package/lib/common/mobile/android/android-device-hash-service.js +133 -0
  211. package/lib/common/mobile/android/android-device.js +164 -0
  212. package/lib/common/mobile/android/android-emulator-services.js +205 -0
  213. package/lib/common/mobile/android/android-ini-file-parser.js +77 -0
  214. package/lib/common/mobile/android/android-log-filter.js +42 -0
  215. package/lib/common/mobile/android/android-virtual-device-service.js +360 -0
  216. package/lib/common/mobile/android/device-android-debug-bridge.js +48 -0
  217. package/lib/common/mobile/android/genymotion/genymotion-service.js +211 -0
  218. package/lib/common/mobile/android/genymotion/virtualbox-service.js +121 -0
  219. package/lib/common/mobile/android/logcat-helper.js +165 -0
  220. package/lib/common/mobile/application-manager-base.js +136 -0
  221. package/lib/common/mobile/device-emitter.js +61 -0
  222. package/lib/common/mobile/device-log-emitter.js +40 -0
  223. package/lib/common/mobile/device-log-provider-base.js +76 -0
  224. package/lib/common/mobile/device-log-provider.js +126 -0
  225. package/lib/common/mobile/device-platforms-constants.js +22 -0
  226. package/lib/common/mobile/emulator-helper.js +84 -0
  227. package/lib/common/mobile/ios/device/ios-application-manager.js +159 -0
  228. package/lib/common/mobile/ios/device/ios-device-file-system.js +133 -0
  229. package/lib/common/mobile/ios/device/ios-device-operations.js +234 -0
  230. package/lib/common/mobile/ios/device/ios-device.js +153 -0
  231. package/lib/common/mobile/ios/ios-device-base.js +108 -0
  232. package/lib/common/mobile/ios/ios-device-product-name-mapper.js +65 -0
  233. package/lib/common/mobile/ios/ios-log-filter.js +24 -0
  234. package/lib/common/mobile/ios/simulator/ios-emulator-services.js +139 -0
  235. package/lib/common/mobile/ios/simulator/ios-sim-resolver.js +23 -0
  236. package/lib/common/mobile/ios/simulator/ios-simulator-application-manager.js +147 -0
  237. package/lib/common/mobile/ios/simulator/ios-simulator-device.js +106 -0
  238. package/lib/common/mobile/ios/simulator/ios-simulator-file-system.js +81 -0
  239. package/lib/common/mobile/ios/simulator/ios-simulator-log-provider.js +69 -0
  240. package/lib/common/mobile/local-to-device-path-data-factory.js +37 -0
  241. package/lib/common/mobile/log-filter.js +51 -0
  242. package/lib/common/mobile/logging-levels.js +12 -0
  243. package/lib/common/mobile/mobile-core/android-device-discovery.js +91 -0
  244. package/lib/common/mobile/mobile-core/android-emulator-discovery.js +65 -0
  245. package/lib/common/mobile/mobile-core/android-process-service.js +259 -0
  246. package/lib/common/mobile/mobile-core/device-discovery.js +64 -0
  247. package/lib/common/mobile/mobile-core/devices-service.js +854 -0
  248. package/lib/common/mobile/mobile-core/ios-device-discovery.js +63 -0
  249. package/lib/common/mobile/mobile-core/ios-simulator-discovery.js +109 -0
  250. package/lib/common/mobile/mobile-helper.js +102 -0
  251. package/lib/common/mobile/wp8/wp8-emulator-services.js +82 -0
  252. package/lib/common/old.npmignore +12 -0
  253. package/lib/common/opener.js +16 -0
  254. package/lib/common/os-info.js +21 -0
  255. package/lib/common/plist-parser.js +24 -0
  256. package/lib/common/project-helper.js +70 -0
  257. package/lib/common/prompter.js +191 -0
  258. package/lib/common/queue.js +37 -0
  259. package/lib/common/resource-loader.js +25 -0
  260. package/lib/common/resources/messages/errorMessages.json +7 -0
  261. package/lib/common/resources/platform-tools/android/darwin/NOTICE.txt +3407 -0
  262. package/lib/common/resources/platform-tools/android/darwin/adb +0 -0
  263. package/lib/common/resources/platform-tools/android/linux/NOTICE.txt +4451 -0
  264. package/lib/common/resources/platform-tools/android/linux/adb +0 -0
  265. package/lib/common/resources/platform-tools/android/win32/AdbWinApi.dll +0 -0
  266. package/lib/common/resources/platform-tools/android/win32/AdbWinUsbApi.dll +0 -0
  267. package/lib/common/resources/platform-tools/android/win32/NOTICE.txt +4451 -0
  268. package/lib/common/resources/platform-tools/android/win32/adb.exe +0 -0
  269. package/lib/common/resources/platform-tools/android/win32/fastboot.exe +0 -0
  270. package/lib/common/resources/platform-tools/unzip/win32/unzip.exe +0 -0
  271. package/lib/common/services/analytics/google-analytics-custom-dimensions.d.ts +16 -0
  272. package/lib/common/services/auto-completion-service.js +265 -0
  273. package/lib/common/services/cancellation.js +67 -0
  274. package/lib/common/services/commands-service.js +268 -0
  275. package/lib/common/services/help-service.js +252 -0
  276. package/lib/common/services/hooks-service.js +318 -0
  277. package/lib/common/services/ios-notification-service.js +49 -0
  278. package/lib/common/services/json-file-settings-service.js +133 -0
  279. package/lib/common/services/lock-service.js +129 -0
  280. package/lib/common/services/message-contract-generator.js +83 -0
  281. package/lib/common/services/messages-service.js +77 -0
  282. package/lib/common/services/micro-templating-service.js +49 -0
  283. package/lib/common/services/net-service.js +137 -0
  284. package/lib/common/services/project-files-manager.js +100 -0
  285. package/lib/common/services/project-files-provider-base.js +54 -0
  286. package/lib/common/services/proxy-service.js +64 -0
  287. package/lib/common/services/qr.js +39 -0
  288. package/lib/common/services/settings-service.js +42 -0
  289. package/lib/common/services/xcode-select-service.js +62 -0
  290. package/lib/common/utils.js +31 -0
  291. package/lib/common/validators/project-name-validator.js +88 -0
  292. package/lib/common/validators/validation-result.js +16 -0
  293. package/lib/common/vendor/License.txt +4 -0
  294. package/lib/common/vendor/jaro-winkler_distance.js +111 -0
  295. package/lib/common/verify-node-version.js +78 -0
  296. package/lib/common/yok.js +426 -0
  297. package/lib/config.js +137 -0
  298. package/lib/constants-provider.js +12 -0
  299. package/lib/constants.js +350 -0
  300. package/lib/controllers/build-controller.js +133 -0
  301. package/lib/controllers/debug-controller.js +235 -0
  302. package/lib/controllers/deploy-controller.js +38 -0
  303. package/lib/controllers/migrate-controller.js +1114 -0
  304. package/lib/controllers/platform-controller.js +127 -0
  305. package/lib/controllers/prepare-controller.js +353 -0
  306. package/lib/controllers/run-controller.js +525 -0
  307. package/lib/controllers/update-controller-base.js +84 -0
  308. package/lib/controllers/update-controller.js +188 -0
  309. package/lib/data/build-data.js +44 -0
  310. package/lib/data/controller-data-base.js +11 -0
  311. package/lib/data/debug-data.js +6 -0
  312. package/lib/data/platform-data.js +13 -0
  313. package/lib/data/prepare-data.js +46 -0
  314. package/lib/data/run-data.js +11 -0
  315. package/lib/declarations.d.ts +1256 -0
  316. package/lib/definitions/android-bundle-tool-service.d.ts +17 -0
  317. package/lib/definitions/android-plugin-migrator.d.ts +52 -0
  318. package/lib/definitions/build.d.ts +92 -0
  319. package/lib/definitions/cleanup-service.d.ts +79 -0
  320. package/lib/definitions/data.d.ts +7 -0
  321. package/lib/definitions/debug.d.ts +166 -0
  322. package/lib/definitions/deploy.d.ts +3 -0
  323. package/lib/definitions/file-log-service.d.ts +19 -0
  324. package/lib/definitions/files-hash-service.d.ts +35 -0
  325. package/lib/definitions/gradle.d.ts +33 -0
  326. package/lib/definitions/hmr-status-service.d.ts +5 -0
  327. package/lib/definitions/initialize-service.d.ts +11 -0
  328. package/lib/definitions/ios-debugger-port-service.d.ts +29 -0
  329. package/lib/definitions/ios.d.ts +97 -0
  330. package/lib/definitions/ip-service.d.ts +10 -0
  331. package/lib/definitions/livesync-global.d.ts +7 -0
  332. package/lib/definitions/livesync.d.ts +601 -0
  333. package/lib/definitions/lock-service.d.ts +43 -0
  334. package/lib/definitions/log-parser-service.d.ts +14 -0
  335. package/lib/definitions/marking-mode-service.d.ts +11 -0
  336. package/lib/definitions/metadata-filtering-service.d.ts +48 -0
  337. package/lib/definitions/migrate.d.ts +46 -0
  338. package/lib/definitions/nativescript-dev-xcode.d.ts +87 -0
  339. package/lib/definitions/pacote-service.d.ts +50 -0
  340. package/lib/definitions/platform.d.ts +146 -0
  341. package/lib/definitions/plugins.d.ts +75 -0
  342. package/lib/definitions/prepare.d.ts +51 -0
  343. package/lib/definitions/project-changes.d.ts +34 -0
  344. package/lib/definitions/project.d.ts +858 -0
  345. package/lib/definitions/prompter.d.ts +27 -0
  346. package/lib/definitions/qr-code.d.ts +3 -0
  347. package/lib/definitions/require.d.ts +11 -0
  348. package/lib/definitions/run.d.ts +45 -0
  349. package/lib/definitions/start-service.d.ts +15 -0
  350. package/lib/definitions/subscription-service.d.ts +11 -0
  351. package/lib/definitions/system-warnings.d.ts +4 -0
  352. package/lib/definitions/temp-service.d.ts +9 -0
  353. package/lib/definitions/terminal-spinner-service.d.ts +12 -0
  354. package/lib/definitions/update.d.ts +16 -0
  355. package/lib/definitions/xcode.d.ts +12 -0
  356. package/lib/detached-processes/cleanup-js-subprocess.js +62 -0
  357. package/lib/detached-processes/cleanup-process-definitions.d.ts +70 -0
  358. package/lib/detached-processes/cleanup-process.js +281 -0
  359. package/lib/detached-processes/detached-process-enums.d.ts +70 -0
  360. package/lib/detached-processes/file-log-service.js +20 -0
  361. package/lib/device-path-provider.js +60 -0
  362. package/lib/device-sockets/ios/app-debug-socket-proxy-factory.js +217 -0
  363. package/lib/device-sockets/ios/notification.js +30 -0
  364. package/lib/device-sockets/ios/socket-request-executor.js +56 -0
  365. package/lib/helpers/android-bundle-validator-helper.js +52 -0
  366. package/lib/helpers/deploy-command-helper.js +70 -0
  367. package/lib/helpers/key-command-helper.js +124 -0
  368. package/lib/helpers/livesync-command-helper.js +220 -0
  369. package/lib/helpers/network-connectivity-validator.js +47 -0
  370. package/lib/helpers/options-track-helper.js +88 -0
  371. package/lib/helpers/package-path-helper.js +6 -0
  372. package/lib/helpers/platform-command-helper.js +192 -0
  373. package/lib/helpers/version-validator-helper.js +25 -0
  374. package/lib/key-commands/bootstrap.js +21 -0
  375. package/lib/key-commands/index.js +456 -0
  376. package/lib/nativescript-cli-lib-bootstrap.js +8 -0
  377. package/lib/nativescript-cli-lib.js +5 -0
  378. package/lib/nativescript-cli.js +55 -0
  379. package/lib/node/pbxproj-dom-xcode.js +5 -0
  380. package/lib/node/xcode.js +7 -0
  381. package/lib/node-package-manager.js +156 -0
  382. package/lib/options.js +393 -0
  383. package/lib/package-installation-manager.js +221 -0
  384. package/lib/package-manager.js +184 -0
  385. package/lib/platform-command-param.js +29 -0
  386. package/lib/pnpm-package-manager.js +136 -0
  387. package/lib/project-data.js +237 -0
  388. package/lib/providers/project-files-provider.js +46 -0
  389. package/lib/resolvers/livesync-service-resolver.js +22 -0
  390. package/lib/services/analytics/analytics-broker-process.js +77 -0
  391. package/lib/services/analytics/analytics-broker.js +53 -0
  392. package/lib/services/analytics/analytics-service.js +366 -0
  393. package/lib/services/analytics/analytics.d.ts +55 -0
  394. package/lib/services/analytics/google-analytics-cross-client-custom-dimensions.d.ts +6 -0
  395. package/lib/services/analytics/google-analytics-provider.js +152 -0
  396. package/lib/services/analytics-settings-service.js +104 -0
  397. package/lib/services/android/android-bundle-tool-service.js +81 -0
  398. package/lib/services/android/gradle-build-args-service.js +87 -0
  399. package/lib/services/android/gradle-build-service.js +68 -0
  400. package/lib/services/android/gradle-command-service.js +49 -0
  401. package/lib/services/android-device-debug-service.js +173 -0
  402. package/lib/services/android-plugin-build-service.js +527 -0
  403. package/lib/services/android-project-service.js +600 -0
  404. package/lib/services/android-resources-migration-service.js +104 -0
  405. package/lib/services/apple-portal/apple-portal-application-service.js +82 -0
  406. package/lib/services/apple-portal/apple-portal-cookie-service.js +53 -0
  407. package/lib/services/apple-portal/apple-portal-session-service.js +277 -0
  408. package/lib/services/apple-portal/definitions.d.ts +87 -0
  409. package/lib/services/assets-generation/assets-generation-service.js +178 -0
  410. package/lib/services/build-artifacts-service.js +113 -0
  411. package/lib/services/build-data-service.js +20 -0
  412. package/lib/services/build-info-file-service.js +79 -0
  413. package/lib/services/cleanup-service.js +194 -0
  414. package/lib/services/cocoapods-platform-manager.js +137 -0
  415. package/lib/services/cocoapods-service.js +354 -0
  416. package/lib/services/debug-data-service.js +21 -0
  417. package/lib/services/debug-service-base.js +44 -0
  418. package/lib/services/device/device-install-app-service.js +118 -0
  419. package/lib/services/doctor-service.js +294 -0
  420. package/lib/services/extensibility-service.js +220 -0
  421. package/lib/services/files-hash-service.js +79 -0
  422. package/lib/services/hmr-status-service.js +128 -0
  423. package/lib/services/info-service.js +14 -0
  424. package/lib/services/initialize-service.js +70 -0
  425. package/lib/services/ios/export-options-plist-service.js +131 -0
  426. package/lib/services/ios/ios-signing-service.js +265 -0
  427. package/lib/services/ios/spm-service.js +78 -0
  428. package/lib/services/ios/xcodebuild-args-service.js +163 -0
  429. package/lib/services/ios/xcodebuild-command-service.js +40 -0
  430. package/lib/services/ios/xcodebuild-service.js +93 -0
  431. package/lib/services/ios-debugger-port-service.js +140 -0
  432. package/lib/services/ios-device-debug-service.js +167 -0
  433. package/lib/services/ios-entitlements-service.js +78 -0
  434. package/lib/services/ios-extensions-service.js +63 -0
  435. package/lib/services/ios-log-filter.js +70 -0
  436. package/lib/services/ios-native-target-service.js +108 -0
  437. package/lib/services/ios-project-service.js +851 -0
  438. package/lib/services/ios-provision-service.js +173 -0
  439. package/lib/services/ios-watch-app-service.js +76 -0
  440. package/lib/services/ip-service.js +78 -0
  441. package/lib/services/itmstransporter-service.js +216 -0
  442. package/lib/services/karma-execution.js +16 -0
  443. package/lib/services/livesync/android-device-livesync-service-base.js +68 -0
  444. package/lib/services/livesync/android-device-livesync-service.js +203 -0
  445. package/lib/services/livesync/android-device-livesync-sockets-service.js +198 -0
  446. package/lib/services/livesync/android-livesync-service.js +76 -0
  447. package/lib/services/livesync/android-livesync-tool.js +427 -0
  448. package/lib/services/livesync/android-livesync-tool.md +211 -0
  449. package/lib/services/livesync/device-livesync-service-base.js +69 -0
  450. package/lib/services/livesync/ios-device-livesync-service.js +218 -0
  451. package/lib/services/livesync/ios-livesync-service.js +95 -0
  452. package/lib/services/livesync/livesync-socket.js +14 -0
  453. package/lib/services/livesync/platform-livesync-service-base.js +180 -0
  454. package/lib/services/livesync-process-data-service.js +43 -0
  455. package/lib/services/log-parser-service.js +52 -0
  456. package/lib/services/log-source-map-service.js +235 -0
  457. package/lib/services/marking-mode-service.js +56 -0
  458. package/lib/services/metadata-filtering-service.js +105 -0
  459. package/lib/services/npm-config-service.js +39 -0
  460. package/lib/services/pacote-service.js +109 -0
  461. package/lib/services/performance-service.js +92 -0
  462. package/lib/services/platform/add-platform-service.js +119 -0
  463. package/lib/services/platform/platform-validation-service.js +85 -0
  464. package/lib/services/platform/prepare-native-platform-service.js +87 -0
  465. package/lib/services/platform-environment-requirements.js +87 -0
  466. package/lib/services/platform-project-service-base.js +32 -0
  467. package/lib/services/platforms-data-service.js +31 -0
  468. package/lib/services/plugins-service.js +477 -0
  469. package/lib/services/prepare-data-service.js +21 -0
  470. package/lib/services/project-backup-service.js +114 -0
  471. package/lib/services/project-changes-service.js +274 -0
  472. package/lib/services/project-cleanup-service.js +102 -0
  473. package/lib/services/project-config-service.js +335 -0
  474. package/lib/services/project-data-service.js +478 -0
  475. package/lib/services/project-name-service.js +67 -0
  476. package/lib/services/project-service.js +204 -0
  477. package/lib/services/project-templates-service.js +114 -0
  478. package/lib/services/qr-code-terminal-service.js +20 -0
  479. package/lib/services/require-service.js +11 -0
  480. package/lib/services/start-service.js +116 -0
  481. package/lib/services/temp-service.js +36 -0
  482. package/lib/services/terminal-spinner-service.js +38 -0
  483. package/lib/services/test-execution-service.js +154 -0
  484. package/lib/services/test-initialization-service.js +54 -0
  485. package/lib/services/timeline-profiler-service.js +108 -0
  486. package/lib/services/user-settings-service.js +34 -0
  487. package/lib/services/versions-service.js +196 -0
  488. package/lib/services/watch-ignore-list-service.js +20 -0
  489. package/lib/services/webpack/webpack-compiler-service.js +405 -0
  490. package/lib/services/webpack/webpack.d.ts +227 -0
  491. package/lib/services/xcconfig-service.js +76 -0
  492. package/lib/services/xcproj-service.js +11 -0
  493. package/lib/shared-event-bus.js +7 -0
  494. package/lib/sys-info.js +120 -0
  495. package/lib/tools/config-manipulation/config-transformer.js +201 -0
  496. package/lib/tools/node-modules/node-modules-builder.js +42 -0
  497. package/lib/tools/node-modules/node-modules-dependencies-builder.js +100 -0
  498. package/lib/yarn-package-manager.js +134 -0
  499. package/lib/yarn2-package-manager.js +143 -0
  500. package/package.json +192 -0
  501. package/postinstall.js +10 -0
  502. package/preuninstall.js +14 -0
  503. package/resources/assets/image-definitions.json +655 -0
  504. package/resources/test/example.jasmine.js +6 -0
  505. package/resources/test/example.jasmine.ts +6 -0
  506. package/resources/test/example.mocha.js +9 -0
  507. package/resources/test/example.mocha.ts +9 -0
  508. package/resources/test/example.qunit.js +7 -0
  509. package/resources/test/example.qunit.ts +7 -0
  510. package/resources/test/karma.conf.js +93 -0
  511. package/resources/test/test-main.js +9 -0
  512. package/resources/test/test-main.ts +11 -0
  513. package/resources/test/tsconfig.spec.json +9 -0
  514. package/setup/mac-startup-shell-script.sh +2 -0
  515. package/vendor/aab-tool/LICENSE +202 -0
  516. package/vendor/aab-tool/README.txt +1 -0
  517. package/vendor/aab-tool/bundletool.jar +0 -0
  518. package/vendor/gradle-app/app/build.gradle +1054 -0
  519. package/vendor/gradle-app/app/gradle-helpers/AnalyticsCollector.gradle +48 -0
  520. package/vendor/gradle-app/app/gradle-helpers/BuildToolTask.gradle +50 -0
  521. package/vendor/gradle-app/app/gradle-helpers/CustomExecutionLogger.gradle +52 -0
  522. package/vendor/gradle-app/build.gradle +170 -0
  523. package/vendor/gradle-app/settings.gradle +78 -0
  524. package/vendor/gradle-plugin/LICENSE +995 -0
  525. package/vendor/gradle-plugin/build.gradle +363 -0
  526. package/vendor/gradle-plugin/gradle/wrapper/gradle-wrapper.jar +0 -0
  527. package/vendor/gradle-plugin/gradle/wrapper/gradle-wrapper.properties +6 -0
  528. package/vendor/gradle-plugin/gradle.properties +6 -0
  529. package/vendor/gradle-plugin/gradlew +172 -0
  530. package/vendor/gradle-plugin/gradlew.bat +84 -0
  531. 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
+ }