From 97a5d67a1fca883a84d938cddabace40be98a98d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Fri, 6 May 2022 16:52:41 +0200 Subject: [PATCH 1/4] Adapt template to new architecture autolinking --- template/android/app/src/main/jni/Android.mk | 12 ++++++++++++ .../src/main/jni/MainApplicationModuleProvider.cpp | 8 ++++++++ .../app/src/main/jni/MainComponentsRegistry.cpp | 4 ++++ 3 files changed, 24 insertions(+) diff --git a/template/android/app/src/main/jni/Android.mk b/template/android/app/src/main/jni/Android.mk index cda139122533..70e22588c28a 100644 --- a/template/android/app/src/main/jni/Android.mk +++ b/template/android/app/src/main/jni/Android.mk @@ -5,6 +5,10 @@ include $(REACT_ANDROID_DIR)/Android-prebuilt.mk # If you wish to add a custom TurboModule or Fabric component in your app you # will have to include the following autogenerated makefile. # include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk + +# Includes the MK file for autolinked libraries ++include $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni/Android-rncli.mk + include $(CLEAR_VARS) LOCAL_PATH := $(THIS_DIR) @@ -16,6 +20,11 @@ LOCAL_C_INCLUDES := $(LOCAL_PATH) LOCAL_SRC_FILES := $(wildcard $(LOCAL_PATH)/*.cpp) LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH) +# Autolinked TurboModules and Fabric components +LOCAL_C_INCLUDES += $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni +LOCAL_SRC_FILES += $(wildcard $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni/*.cpp) +LOCAL_EXPORT_C_INCLUDES += $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni + # If you wish to add a custom TurboModule or Fabric component in your app you # will have to uncomment those lines to include the generated source # files from the codegen (placed in $(GENERATED_SRC_DIR)/codegen/jni) @@ -43,6 +52,9 @@ LOCAL_SHARED_LIBRARIES := \ libturbomodulejsijni \ libyoga +# Autolinked libraries +LOCAL_SHARED_LIBRARIES += $(call import-codegen-modules) + LOCAL_CFLAGS := -DLOG_TAG=\"ReactNative\" -fexceptions -frtti -std=c++17 -Wall include $(BUILD_SHARED_LIBRARY) diff --git a/template/android/app/src/main/jni/MainApplicationModuleProvider.cpp b/template/android/app/src/main/jni/MainApplicationModuleProvider.cpp index 0ac23cc62634..821f967bd5d8 100644 --- a/template/android/app/src/main/jni/MainApplicationModuleProvider.cpp +++ b/template/android/app/src/main/jni/MainApplicationModuleProvider.cpp @@ -1,6 +1,7 @@ #include "MainApplicationModuleProvider.h" #include +#include namespace facebook { namespace react { @@ -17,6 +18,13 @@ std::shared_ptr MainApplicationModuleProvider( // return module; // } // return rncore_ModuleProvider(moduleName, params); + + // Module providers autolinked by RN CLI + auto rncli_module = rncli_ModuleProvider(moduleName, params); + if (rncli_module != nullptr) { + return rncli_module; + } + return rncore_ModuleProvider(moduleName, params); } diff --git a/template/android/app/src/main/jni/MainComponentsRegistry.cpp b/template/android/app/src/main/jni/MainComponentsRegistry.cpp index 8f7edffd6423..41afe7e44561 100644 --- a/template/android/app/src/main/jni/MainComponentsRegistry.cpp +++ b/template/android/app/src/main/jni/MainComponentsRegistry.cpp @@ -4,6 +4,7 @@ #include #include #include +#include namespace facebook { namespace react { @@ -14,6 +15,9 @@ std::shared_ptr MainComponentsRegistry::sharedProviderRegistry() { auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); + // Providers registered automatically by RN CLI + rncli_registerProviders(providerRegistry); + // Custom Fabric Components go here. You can register custom // components coming from your App or from 3rd party libraries here. // From fb5a676f6ef606ce9d8c9be883b626646fdc5fbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Sun, 8 May 2022 11:25:33 +0200 Subject: [PATCH 2/4] Update template/android/app/src/main/jni/Android.mk Co-authored-by: Nicola Corti --- template/android/app/src/main/jni/Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/android/app/src/main/jni/Android.mk b/template/android/app/src/main/jni/Android.mk index 70e22588c28a..e2c306187ab2 100644 --- a/template/android/app/src/main/jni/Android.mk +++ b/template/android/app/src/main/jni/Android.mk @@ -7,7 +7,7 @@ include $(REACT_ANDROID_DIR)/Android-prebuilt.mk # include $(GENERATED_SRC_DIR)/codegen/jni/Android.mk # Includes the MK file for autolinked libraries -+include $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni/Android-rncli.mk +include $(PROJECT_BUILD_DIR)/generated/rncli/src/main/jni/Android-rncli.mk include $(CLEAR_VARS) From 3ccf9141e45de96366970ef0da2972467bde8be0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Sun, 8 May 2022 11:26:59 +0200 Subject: [PATCH 3/4] Update template/android/app/src/main/jni/MainComponentsRegistry.cpp --- template/android/app/src/main/jni/MainComponentsRegistry.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template/android/app/src/main/jni/MainComponentsRegistry.cpp b/template/android/app/src/main/jni/MainComponentsRegistry.cpp index 41afe7e44561..54f598a486ad 100644 --- a/template/android/app/src/main/jni/MainComponentsRegistry.cpp +++ b/template/android/app/src/main/jni/MainComponentsRegistry.cpp @@ -15,7 +15,7 @@ std::shared_ptr MainComponentsRegistry::sharedProviderRegistry() { auto providerRegistry = CoreComponentsRegistry::sharedProviderRegistry(); - // Providers registered automatically by RN CLI + // Autolinked providers registered by RN CLI rncli_registerProviders(providerRegistry); // Custom Fabric Components go here. You can register custom From 721f47b035d93ce1f37463d401fc50b88cb0957b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pierzcha=C5=82a?= Date: Wed, 18 May 2022 11:53:08 +0200 Subject: [PATCH 4/4] chore: upgrade RN CLI to v9.0.0-alpha.0 --- package.json | 6 +-- yarn.lock | 128 +++++++++++++++++++++++++-------------------------- 2 files changed, 67 insertions(+), 67 deletions(-) diff --git a/package.json b/package.json index ee79dff2b776..51e62975e719 100644 --- a/package.json +++ b/package.json @@ -105,9 +105,9 @@ }, "dependencies": { "@jest/create-cache-key-function": "^27.0.1", - "@react-native-community/cli": "^8.0.0", - "@react-native-community/cli-platform-android": "^8.0.0", - "@react-native-community/cli-platform-ios": "^8.0.0", + "@react-native-community/cli": "^9.0.0-alpha.0", + "@react-native-community/cli-platform-android": "^9.0.0-alpha.0", + "@react-native-community/cli-platform-ios": "^9.0.0-alpha.0", "@react-native/assets": "1.0.0", "@react-native/normalize-color": "2.0.0", "@react-native/polyfills": "2.0.0", diff --git a/yarn.lock b/yarn.lock index 16a0a9de1ef7..2f88099e6ebe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1093,22 +1093,22 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@react-native-community/cli-clean@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-8.0.0.tgz#c8fc6e8d6a84c90ca0839d48080a87ad455613db" - integrity sha512-VY/kwyH5xp6oXiB9bcwa+I9W5k6WR/nX3s85FuMW76hSlgG1UVAGL04uZPwYlSmMZuSOSuoXOaIjJ7wAvQMBpg== +"@react-native-community/cli-clean@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-9.0.0-alpha.0.tgz#cdd42633984785130bb9baed14d8349fa0de4615" + integrity sha512-YUnkQYg8of3R9em7n6Gp3DSyeIPaifvVlJwFgHnL8h6Zm6rWj+Zf7u9xs3CV9fO4y+a5zXcqZsxCKFjnvvfE0w== dependencies: - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" chalk "^4.1.2" execa "^1.0.0" prompts "^2.4.0" -"@react-native-community/cli-config@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-8.0.0.tgz#1d464165995ac587b15484d5a0e6ba262b9fe398" - integrity sha512-SrxfySVwCv1BkMHGrl6i9UkZe1VsCDpoWehPSDY46bl5o78MrjKcaMkYDJJlPxIdXr3eUjKToaay1ge26SXhVg== +"@react-native-community/cli-config@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-9.0.0-alpha.0.tgz#9bc40b9beb8f8e20526e4439dd5be603dc07e351" + integrity sha512-c9B8W1okaSOp9f+8vLA0yfMOTZlhZms3Lhjq7/6DGvakg2Wazwn9YzhDB6RGDAjHQlfY5T4Gp5JkwZEV1IlVww== dependencies: - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" cosmiconfig "^5.1.0" deepmerge "^3.2.0" glob "^7.1.3" @@ -1121,14 +1121,14 @@ dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-8.0.0.tgz#97e884bdc41863f9a70736acd21f8d1fc8d1337d" - integrity sha512-3lEX0yyXXyVMqkAc+mW2WRXyGuTD8ozaouGakt/5ooTdSI9riWNWb/QUua821EBrBj+r1YV80p5zVZQSpQQHwQ== +"@react-native-community/cli-doctor@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-9.0.0-alpha.0.tgz#f9ed434d55962d2664d30ddd2065136fc5eff268" + integrity sha512-C5OdlvGysFQKW5kPgQewLcpdWok4wz9ocqpShO/bcpbs7sJZPs/QvqqVvuKY83iRCTEbkeqelZ9EEsPLYKtmRQ== dependencies: - "@react-native-community/cli-config" "^8.0.0" - "@react-native-community/cli-platform-ios" "^8.0.0" - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-config" "^9.0.0-alpha.0" + "@react-native-community/cli-platform-ios" "^9.0.0-alpha.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" chalk "^4.1.2" command-exists "^1.2.8" envinfo "^7.7.2" @@ -1143,23 +1143,23 @@ sudo-prompt "^9.0.0" wcwidth "^1.0.1" -"@react-native-community/cli-hermes@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-8.0.0.tgz#5cfde0ab2bea18c0e36b72ef84b5fcc4a87a7664" - integrity sha512-vDwPQ9a4ye3CENqcI3KTRgVXwbHNS7TnZRfTs2Sqb5j4XiSMpIW0FkEziSDOJqWIAqgrSkbExDpiT/SeWzHOvw== +"@react-native-community/cli-hermes@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-9.0.0-alpha.0.tgz#3730feca5d2e132b8cedc04c6eb26f3f142bb006" + integrity sha512-yg3JpOIVImFsL6Hpihvu7JeDeiF0mQMcqMIE0+xl6wmElSrbBuSLqS3bc8r0araN133ExbOWGyqg64WEQCgtQg== dependencies: - "@react-native-community/cli-platform-android" "^8.0.0" - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-platform-android" "^9.0.0-alpha.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-8.0.0.tgz#826a8f4c3e2e31bd281b57e28fc3e1eaca224d2d" - integrity sha512-/1N7G3ZMoJi6OAzopFOWOcCLWbVBn6T1Hmjk+XXCEkgmbK34MRTxYGZur8TCOaQmueKSfLDbFtlVJr5Et4sxWQ== +"@react-native-community/cli-platform-android@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-9.0.0-alpha.0.tgz#1179012ea6da931746e1bf575aec328ed56f3741" + integrity sha512-BffjB3IklNdQOybi2ZhEqtveVHLCwwf/V7caMDPvyzcPuaxokr/id5I4BRdqFeHTNxvMt7fhw43ktQOOUv/jRQ== dependencies: - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" chalk "^4.1.2" execa "^1.0.0" fs-extra "^8.1.0" @@ -1169,12 +1169,12 @@ logkitty "^0.7.1" slash "^3.0.0" -"@react-native-community/cli-platform-ios@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-8.0.0.tgz#9f0e30f8f8dbdf214bb0f94bcf66ad30470c6592" - integrity sha512-cWI0VGsovPAqopPKRHExlhtXDuVJzYT1ITsden4M+K6oMRiC/4+PVpEHgkO3ghcPnX7Ee7KGhjmPrB+fvtk/4A== +"@react-native-community/cli-platform-ios@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-9.0.0-alpha.0.tgz#516f401af193685ff07c4de7448e3f0e19e842a9" + integrity sha512-b4rZw8ho2jJQ4iYZNKvXmMNSAdYz38enNyWg6/8O5XHRNk0vidhLlgTX0scPHD7Z8sy3cFqv0xqa5HTByBLsUQ== dependencies: - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" chalk "^4.1.2" execa "^1.0.0" glob "^7.1.3" @@ -1183,13 +1183,13 @@ ora "^5.4.1" plist "^3.0.2" -"@react-native-community/cli-plugin-metro@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-8.0.0.tgz#0b355a7a6fe93b347ec32b3edb3b2cd96b04dfd8" - integrity sha512-eIowV2ZRbzIWL3RIKVUUSahntXTuAeKzBSsFuhffLZphsV+UdKdtg5ATR9zbq7nsKap4ZseO5DkVqZngUkC7iQ== +"@react-native-community/cli-plugin-metro@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-9.0.0-alpha.0.tgz#e4511ab63a111735128ce7cae162676385503555" + integrity sha512-JtMcMk7vpYEXux/Bk+kCx4TexMtNeeWa6BGbjRFFuNpi8GVydJFPYWGVVMUyciGZI30fs6XJtsoRfq3GhxLQbw== dependencies: - "@react-native-community/cli-server-api" "^8.0.0" - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-server-api" "^9.0.0-alpha.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" chalk "^4.1.2" metro "^0.70.1" metro-config "^0.70.1" @@ -1199,13 +1199,13 @@ metro-runtime "^0.70.1" readline "^1.3.0" -"@react-native-community/cli-server-api@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-8.0.0.tgz#562fee6da9f880531db2af1d3439efb7309281f8" - integrity sha512-TxUs3sMl9clt7sdv30XETc6VRzyaEli2vDrk3TB5W5o5nSd1PmQdP4ccdGLO/nDRXwOy72QmmXlYWMg1XGU0Gg== +"@react-native-community/cli-server-api@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-9.0.0-alpha.0.tgz#f4abcfcdd2e1a6ff97e5a95fa88288178b9d08c6" + integrity sha512-hDZDSTNLiva0vvFNxMz6pfhxKSR9+8IS3KyjLI5wQHYb3lkJJofUjCnbqzg+zJPGWs21JPv1HBIBbDfZ8KJEAQ== dependencies: "@react-native-community/cli-debugger-ui" "^8.0.0" - "@react-native-community/cli-tools" "^8.0.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.0" @@ -1214,10 +1214,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-8.0.0.tgz#2ca9177d7cdf352f6863f278cdacd44066d10473" - integrity sha512-jA4y8CebrRZaOJFjc5zMOnls4KfHkBl2FUtBZV2vcWuedQHa6JVwo+KO88ta3Ysby3uY0+mrZagZfXk7c0mrBw== +"@react-native-community/cli-tools@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-9.0.0-alpha.0.tgz#ec0d93301b55579ca05a7a27d23eaa9b3236578f" + integrity sha512-WUQlC016n6oY3PW1RTRacYqoFN1Omfq+pyglDlCFuMOfUA07ubmcAryGeJTldZOW3+jwyEOwWBNYEMrhowZc9A== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -1229,27 +1229,27 @@ semver "^6.3.0" shell-quote "^1.7.3" -"@react-native-community/cli-types@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-8.0.0.tgz#72d24178e5ed1c2d271da43e0a4a4f59178f261a" - integrity sha512-1lZS1PEvMlFaN3Se1ksyoFWzMjk+YfKi490GgsqKJln9gvFm8tqVPdnXttI5Uf2DQf3BMse8Bk8dNH4oV6Ewow== +"@react-native-community/cli-types@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-9.0.0-alpha.0.tgz#b0809b868e1a2a0c326a0f218abdbb8ff7744272" + integrity sha512-pnQVEN9XcYfqIPKwRbzv5HRH3aEjyJYr3V2cOPOaCMuAKU1tWdHXakY1zfui1jTiQG6h6hOkmmMjr3j2vY1ndQ== dependencies: joi "^17.2.1" -"@react-native-community/cli@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-8.0.0.tgz#f6dd0c7332174ca327c06e9164fabb3a03d202d3" - integrity sha512-wkbIcUixdFBHF9tNo+ErGypKLQ/hZ8Ww13IPhOgZtPo58/j+e902kqEeXRRBUlvbLMBAWBxFmVKxEdIb9ZvTpA== +"@react-native-community/cli@^9.0.0-alpha.0": + version "9.0.0-alpha.0" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-9.0.0-alpha.0.tgz#26aed6dba651c5360bfc83862e2b04f44af3d4da" + integrity sha512-rSdYHDnBSTV4BvXkoL0jeGWcD3zAqdrkp9LAkrUuZvxltyE04OArfcWCB2AasgMiVUd7u63tGnafGgqRgAKBqw== dependencies: - "@react-native-community/cli-clean" "^8.0.0" - "@react-native-community/cli-config" "^8.0.0" + "@react-native-community/cli-clean" "^9.0.0-alpha.0" + "@react-native-community/cli-config" "^9.0.0-alpha.0" "@react-native-community/cli-debugger-ui" "^8.0.0" - "@react-native-community/cli-doctor" "^8.0.0" - "@react-native-community/cli-hermes" "^8.0.0" - "@react-native-community/cli-plugin-metro" "^8.0.0" - "@react-native-community/cli-server-api" "^8.0.0" - "@react-native-community/cli-tools" "^8.0.0" - "@react-native-community/cli-types" "^8.0.0" + "@react-native-community/cli-doctor" "^9.0.0-alpha.0" + "@react-native-community/cli-hermes" "^9.0.0-alpha.0" + "@react-native-community/cli-plugin-metro" "^9.0.0-alpha.0" + "@react-native-community/cli-server-api" "^9.0.0-alpha.0" + "@react-native-community/cli-tools" "^9.0.0-alpha.0" + "@react-native-community/cli-types" "^9.0.0-alpha.0" chalk "^4.1.2" commander "^2.19.0" execa "^1.0.0"