From 60f711f8fa96124f6bc9bf62a290f246653e37e8 Mon Sep 17 00:00:00 2001 From: Gabriel Donadel Date: Fri, 26 May 2023 08:54:00 -0300 Subject: [PATCH] Prevent DevLauncherController from removing fabric root view --- .../expo-dev-launcher/expo-dev-launcher.podspec | 13 ++++++++++--- .../expo-dev-launcher/ios/EXDevLauncherController.m | 12 +++++++++++- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/packages/expo-dev-launcher/expo-dev-launcher.podspec b/packages/expo-dev-launcher/expo-dev-launcher.podspec index 698e1302c69bd..2c29d404dcf9a 100644 --- a/packages/expo-dev-launcher/expo-dev-launcher.podspec +++ b/packages/expo-dev-launcher/expo-dev-launcher.podspec @@ -28,9 +28,7 @@ Pod::Spec.new do |s| ] } - s.xcconfig = { - 'GCC_PREPROCESSOR_DEFINITIONS' => "EX_DEV_LAUNCHER_VERSION=#{s.version}" - } + new_arch_enabled = ENV['RCT_NEW_ARCH_ENABLED'] == '1' other_c_flags = '$(inherited)' dev_launcher_url = ENV['EX_DEV_LAUNCHER_URL'] || "" @@ -43,6 +41,15 @@ Pod::Spec.new do |s| other_swift_flags += ' -DEX_DEV_CLIENT_NETWORK_INSPECTOR' end + if new_arch_enabled + other_c_flags += ' -DRN_FABRIC_ENABLED -DRCT_NEW_ARCH_ENABLED' + end + + s.xcconfig = { + 'GCC_PREPROCESSOR_DEFINITIONS' => "EX_DEV_LAUNCHER_VERSION=#{s.version}", + 'OTHER_CFLAGS' => other_c_flags, + } + # Swift/Objective-C compatibility s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', diff --git a/packages/expo-dev-launcher/ios/EXDevLauncherController.m b/packages/expo-dev-launcher/ios/EXDevLauncherController.m index a8ad2f7bd9233..767577cd28bec 100644 --- a/packages/expo-dev-launcher/ios/EXDevLauncherController.m +++ b/packages/expo-dev-launcher/ios/EXDevLauncherController.m @@ -25,6 +25,10 @@ #import #endif +#ifdef RCT_NEW_ARCH_ENABLED +#import +#endif + @import EXManifests; @import EXDevMenu; @@ -563,12 +567,18 @@ - (void)onAppContentDidAppear [[NSNotificationCenter defaultCenter] removeObserver:self name:RCTContentDidAppearNotification object:nil]; dispatch_async(dispatch_get_main_queue(), ^{ + #ifdef RCT_NEW_ARCH_ENABLED + #define EXPECTED_ROOT_VIEW RCTSurfaceView + #else + #define EXPECTED_ROOT_VIEW RCTRootView + #endif NSArray *views = [[[self->_window rootViewController] view] subviews]; for (UIView *view in views) { - if (![view isKindOfClass:[RCTRootContentView class]]) { + if (![view isKindOfClass:[EXPECTED_ROOT_VIEW class]]) { [view removeFromSuperview]; } } + #undef EXPECTED_ROOT_VIEW }); }