diff --git a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.h b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.h index 1671d7080907..7b420c728584 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.h +++ b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.h @@ -108,8 +108,32 @@ typedef NS_ENUM(NSInteger, RCTReleaseLevel) { Canary, Experimental, Stable }; initialProperties:(NSDictionary *_Nullable)initialProperties launchOptions:(NSDictionary *_Nullable)launchOptions; +/// This is a SceneDelegate entrypoint method to start a React Native instance with the specified module name, window +/// and connection options for linking & user activity information. As it's usual for the typical deep-linking use case, +/// only the first item in URLContexts from connectionOptions will be checked; the same applies to userActivities. +/// @param moduleName name of the JS module to load +/// @param window the window to launch in +/// @param connectionOptions the scene's connection options +- (void)startReactNativeWithModuleName:(NSString *)moduleName + inWindow:(UIWindow *_Nullable)window + connectionOptions:(UISceneConnectionOptions *_Nullable)connectionOptions; + +/// This is a SceneDelegate entrypoint method to start a React Native instance with the specified module name, window +/// and connection options for linking, initial properties & user activity information. As it's usual for the typical +/// deep-linking use case, only the first item in URLContexts from connectionOptions will be checked; the same applies +/// to userActivities. +/// @param moduleName name of the JS module to load +/// @param window the window to launch in +/// @param initialProperties the initial root properties +/// @param connectionOptions the scene's connection options +- (void)startReactNativeWithModuleName:(NSString *)moduleName + inWindow:(UIWindow *_Nullable)window + initialProperties:(NSDictionary *_Nullable)initialProperties + connectionOptions:(UISceneConnectionOptions *_Nullable)connectionOptions; + @property (nonatomic, nullable) RCTBridge *bridge __attribute__((deprecated("The bridge is deprecated and will be removed when removing the legacy architecture."))); + @property (nonatomic, strong, nonnull) RCTRootViewFactory *rootViewFactory; @property (nonatomic, nullable) RCTSurfacePresenterBridgeAdapter *bridgeAdapter __attribute__(( diff --git a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm index 9de23e72cb8d..9342ccfe14af 100644 --- a/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm +++ b/packages/react-native/Libraries/AppDelegate/RCTReactNativeFactory.mm @@ -39,6 +39,13 @@ @interface RCTReactNativeFactory () < RCTHostDelegate, RCTJSRuntimeConfiguratorProtocol, RCTTurboModuleManagerDelegate> + +/// Adapter for SceneDelegate entrypoint's UISceneConnectionOptions that converts it to the AppDelegate-style +/// NSDictionary for internal RN needs +/// @param connectionOptions the scene's connection options +/// @return an NSDictionary with proper UIApplicationLaunchOptions- keys set to values from connectionOptions +- (NSDictionary *)convertConnectionOptionsToLaunchOptions:(UISceneConnectionOptions *)connectionOptions; + @end @implementation RCTReactNativeFactory @@ -95,6 +102,58 @@ - (void)startReactNativeWithModuleName:(NSString *)moduleName [window makeKeyAndVisible]; } +#pragma mark - UIScene.ConnectionOptions + +- (void)startReactNativeWithModuleName:(NSString *)moduleName + inWindow:(UIWindow *_Nullable)window + connectionOptions:(UISceneConnectionOptions *_Nullable)connectionOptions +{ + [self startReactNativeWithModuleName:moduleName + inWindow:window + initialProperties:nil + launchOptions:[self convertConnectionOptionsToLaunchOptions:connectionOptions]]; +} + +- (void)startReactNativeWithModuleName:(NSString *)moduleName + inWindow:(UIWindow *_Nullable)window + initialProperties:(NSDictionary *_Nullable)initialProperties + connectionOptions:(UISceneConnectionOptions *_Nullable)connectionOptions +{ + [self startReactNativeWithModuleName:moduleName + inWindow:window + initialProperties:initialProperties + launchOptions:[self convertConnectionOptionsToLaunchOptions:connectionOptions]]; +} + +- (NSDictionary *)convertConnectionOptionsToLaunchOptions:(UISceneConnectionOptions *)connectionOptions +{ + NSMutableDictionary *launchOptions = [NSMutableDictionary dictionary]; + + // handle launch URL + if (connectionOptions.URLContexts.count > 0) { + UIOpenURLContext *urlContext = connectionOptions.URLContexts.allObjects.firstObject; + + if (urlContext.URL) { + launchOptions[UIApplicationLaunchOptionsURLKey] = urlContext.URL; + } + } + + // handle user activities + if (connectionOptions.userActivities.count > 0) { + NSUserActivity *activity = connectionOptions.userActivities.allObjects.firstObject; + + if (activity) { + NSMutableDictionary *userActivityDict = [NSMutableDictionary dictionary]; + userActivityDict[UIApplicationLaunchOptionsUserActivityTypeKey] = activity.activityType; + userActivityDict[@"UIApplicationLaunchOptionsUserActivityKey"] = activity; + + launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey] = userActivityDict; + } + } + + return launchOptions; +} + #pragma mark - RCTUIConfiguratorProtocol - (RCTColorSpace)defaultColorSpace @@ -231,6 +290,18 @@ - (void)hostDidStart:(RCTHost *)host { if ([_delegate respondsToSelector:@selector(hostDidStart:)]) { [_delegate hostDidStart:host]; + + // check if the application is running with multiple scenes capability enabled in scene manifest (Info.plist), + // which is unsupported by RN at the moment, and warn in such case + NSDictionary *infoDict = [[NSBundle mainBundle] infoDictionary]; + NSDictionary *sceneManifest = infoDict ? infoDict[@"UIApplicationSceneManifest"] : nil; + BOOL supportsMultipleScenes = + sceneManifest ? [sceneManifest[@"UIApplicationSupportsMultipleScenes"] boolValue] : false; + + if (supportsMultipleScenes) { + RCTLogWarn( + @"RCTReactNativeFactory: (WARNING - UNSUPPORTED RN APP CONFIGURATION) Your application is running with the Info.plist UIApplicationSceneManifest.UIApplicationSupportsMultipleScenes key set to true, which is NOT supported by React Native at the moment. Allowing the user to run multiple windows of a RN application means allowing to run multiple instances of React Native and libraries in the same process, which may cause ALL SORTS OF PROBLEMS in implementations which use singletons or static storage lifetime variables."); + } } } diff --git a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.h b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.h index eff3b0c54614..4e9b7e8da417 100644 --- a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.h +++ b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.h @@ -11,17 +11,37 @@ @interface RCTLinkingManager : RCTEventEmitter +#pragma mark - AppDelegate methods + +/// Lifecycle method informing of a URL being opened with the app, must be invoked from the AppDelegate. +/// Must be invoked from the AppDelegate. +/// Note: this is an implementation using the iOS 9.0-26.0 API + (BOOL)application:(nonnull UIApplication *)app openURL:(nonnull NSURL *)URL options:(nonnull NSDictionary *)options; +/// Lifecycle method handling a URL being opened with the app, must be invoked from the AppDelegate. +/// Must be invoked from the AppDelegate. +/// Note: this is an implementation using the iOS 4.2-9.0 API + (BOOL)application:(nonnull UIApplication *)application openURL:(nonnull NSURL *)URL sourceApplication:(nullable NSString *)sourceApplication annotation:(nonnull id)annotation; +/// Lifecycle method handling user activity being performed. +/// Must be invoked from the AppDelegate. + (BOOL)application:(nonnull UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> *_Nullable))restorationHandler; +#pragma mark - SceneDelegate methods + +/// Successor to AppDelegate's application:continueUserActivity:restorationHandler:, which handles user activity being +/// performed. Must be invoked from the SceneDelegate. ++ (void)scene:(nonnull UIScene *)scene continueUserActivity:(nonnull NSUserActivity *)userActivity; + +/// Successor to AppDelegate's application:openURL:options:, which handles user activity being performed. +/// Must be invoked from the SceneDelegate. ++ (void)scene:(nonnull UIScene *)scene openURLContexts:(nonnull NSSet *)URLContexts; + @end diff --git a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm index db689678d652..732b7cceeccb 100644 --- a/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm +++ b/packages/react-native/Libraries/LinkingIOS/RCTLinkingManager.mm @@ -16,24 +16,38 @@ static NSString *const kOpenURLNotification = @"RCTOpenURLNotification"; -static void postNotificationWithURL(NSURL *URL, id sender) -{ - NSDictionary *payload = @{@"url" : URL.absoluteString}; - [[NSNotificationCenter defaultCenter] postNotificationName:kOpenURLNotification object:sender userInfo:payload]; -} - @interface RCTLinkingManager () + +/// Common logic for handling user activities originating from both AppDelegate- and SceneDelegate- lifecycle methods ++ (void)handleUserActivity:(NSUserActivity *)userActivity window:(UIWindow *)window; + +/// Common logic for handling user activities from AppDelegate-lifecycle methods. ++ (BOOL)handleAppDelegateURL:(NSURL *)URL app:(UIApplication *)app; + +/// Posts a URL notification that will be handled by the emitter to JS; this method is used to invoke instance methods +/// of RCTLinkingManager from class methods via NSNotificationCenter. +/// @param URL The URL to be emitted. ++ (void)postNotificationWithURL:(NSURL *)URL; + @end @implementation RCTLinkingManager RCT_EXPORT_MODULE() ++ (void)postNotificationWithURL:(NSURL *)URL +{ + NSDictionary *payload = @{@"url" : URL.absoluteString}; + [[NSNotificationCenter defaultCenter] postNotificationName:kOpenURLNotification object:nil userInfo:payload]; +} + - (dispatch_queue_t)methodQueue { return dispatch_get_main_queue(); } +#pragma mark - RCTEventEmitter methods + - (void)startObserving { [[NSNotificationCenter defaultCenter] addObserver:self @@ -52,34 +66,70 @@ - (void)stopObserving return @[ @"url" ]; } +#pragma mark - JS methods + + (BOOL)application:(UIApplication *)app openURL:(NSURL *)URL options:(NSDictionary *)options { - postNotificationWithURL(URL, self); - return YES; + return [self handleAppDelegateURL:URL app:app]; } -// Corresponding api deprecated in iOS 9 + (BOOL)application:(UIApplication *)application openURL:(NSURL *)URL sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { - postNotificationWithURL(URL, self); - return YES; + return [self handleAppDelegateURL:URL app:application]; } + (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> *_Nullable))restorationHandler +{ + if (!RCTIsSceneDelegateApp()) { + [RCTLinkingManager handleUserActivity:userActivity window:RCTKeyWindow()]; + return YES; + } + + return NO; +} + +#pragma mark - SceneDelegate methods + ++ (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity +{ + [RCTLinkingManager handleUserActivity:userActivity window:RCTKeyWindow()]; +} + ++ (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts +{ + if (URLContexts.count == 0) { + return; + } + + NSURL *URL = URLContexts.allObjects.firstObject.URL; + [RCTLinkingManager postNotificationWithURL:URL]; +} + +#pragma mark - Common logic methods + ++ (void)handleUserActivity:(NSUserActivity *)userActivity window:(UIWindow *)window { // This can be nullish when launching an App Clip. if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb] && userActivity.webpageURL != nil) { - NSDictionary *payload = @{@"url" : userActivity.webpageURL.absoluteString}; - [[NSNotificationCenter defaultCenter] postNotificationName:kOpenURLNotification object:self userInfo:payload]; + [RCTLinkingManager postNotificationWithURL:userActivity.webpageURL]; + } +} + ++ (BOOL)handleAppDelegateURL:(NSURL *)URL app:(UIApplication *)app +{ + if (!RCTIsSceneDelegateApp()) { + [RCTLinkingManager postNotificationWithURL:URL]; + return YES; } - return YES; + + return NO; } - (void)handleOpenURLNotification:(NSNotification *)notification diff --git a/packages/react-native/Libraries/Utilities/__tests__/DeviceInfo-test.js b/packages/react-native/Libraries/Utilities/__tests__/DeviceInfo-test.js index 558934824cda..4699d0c4b9fe 100644 --- a/packages/react-native/Libraries/Utilities/__tests__/DeviceInfo-test.js +++ b/packages/react-native/Libraries/Utilities/__tests__/DeviceInfo-test.js @@ -15,5 +15,6 @@ describe('DeviceInfo', () => { it('should give device info', () => { expect(DeviceInfo.getConstants()).toHaveProperty('Dimensions'); + expect(DeviceInfo.getInfo()).toHaveProperty('Dimensions'); }); }); diff --git a/packages/react-native/React/Base/RCTUtils.h b/packages/react-native/React/Base/RCTUtils.h index a6b4ea0d0c02..6d77dd80bfdb 100644 --- a/packages/react-native/React/Base/RCTUtils.h +++ b/packages/react-native/React/Base/RCTUtils.h @@ -96,6 +96,9 @@ RCT_EXTERN UIApplication *__nullable RCTSharedApplication(void); // or view controller RCT_EXTERN UIWindow *__nullable RCTKeyWindow(void); +// Is this app a SceneDelegate app? +RCT_EXTERN BOOL RCTIsSceneDelegateApp(void); + // Returns the presented view controller, useful if you need // e.g. to present a modal view controller or alert over it RCT_EXTERN UIViewController *__nullable RCTPresentedViewController(void); diff --git a/packages/react-native/React/Base/RCTUtils.mm b/packages/react-native/React/Base/RCTUtils.mm index 8ee80f118520..97faa3282192 100644 --- a/packages/react-native/React/Base/RCTUtils.mm +++ b/packages/react-native/React/Base/RCTUtils.mm @@ -635,6 +635,24 @@ BOOL RCTRunningInAppExtension(void) return nil; } +BOOL RCTIsSceneDelegateApp(void) +{ + if (@available(iOS 13.0, *)) { + NSDictionary *sceneManifest = [[NSBundle mainBundle] infoDictionary][@"UIApplicationSceneManifest"]; + + if (sceneManifest) { + NSDictionary *sceneConfigurations = sceneManifest[@"UIApplicationSceneConfigurations"]; + if (sceneConfigurations && sceneConfigurations.count > 0) { + return YES; + } + } + + return NO; + } + + return NO; +} + UIStatusBarManager *__nullable RCTUIStatusBarManager(void) { return RCTKeyWindow().windowScene.statusBarManager; diff --git a/packages/react-native/React/CoreModules/RCTDevLoadingView.mm b/packages/react-native/React/CoreModules/RCTDevLoadingView.mm index 003076ce040f..aafbb37a70e8 100644 --- a/packages/react-native/React/CoreModules/RCTDevLoadingView.mm +++ b/packages/react-native/React/CoreModules/RCTDevLoadingView.mm @@ -183,6 +183,9 @@ - (void)showMessage:(NSString *)message } else { self->_window = [[UIWindow alloc] init]; } + + self->_window.frame = self->_window.windowScene.coordinateSpace.bounds; + self->_window.windowLevel = UIWindowLevelStatusBar + 1; self->_window.rootViewController = [UIViewController new]; [self->_window.rootViewController.view addSubview:self->_container]; @@ -221,13 +224,11 @@ - (void)showMessage:(NSString *)message [NSLayoutConstraint activateConstraints:constraints]; [self->_window layoutIfNeeded]; - self->_window.frame = CGRectMake(0, 0, mainWindow.frame.size.width, self->_container.frame.size.height); }); } -RCT_EXPORT_METHOD( - showMessage : (NSString *)message withColor : (NSNumber *__nonnull)color withBackgroundColor : (NSNumber *__nonnull) - backgroundColor withDismissButton : (NSNumber *)dismissButton) +RCT_EXPORT_METHOD(showMessage : (NSString *)message withColor : (NSNumber *__nonnull)color withBackgroundColor : ( + NSNumber *__nonnull)backgroundColor withDismissButton : (NSNumber *)dismissButton) { [self showMessage:message color:[RCTConvert UIColor:color] @@ -248,15 +249,15 @@ - (void)showMessage:(NSString *)message const NSTimeInterval MIN_PRESENTED_TIME = 0.6; NSTimeInterval presentedTime = [[NSDate date] timeIntervalSinceDate:self->_showDate]; NSTimeInterval delay = MAX(0, MIN_PRESENTED_TIME - presentedTime); - CGRect windowFrame = self->_window.frame; + CGFloat height = self->_container.bounds.size.height; [UIView animateWithDuration:0.25 delay:delay options:0 animations:^{ - self->_window.frame = CGRectOffset(windowFrame, 0, -windowFrame.size.height); + self->_container.transform = CGAffineTransformMakeTranslation(0, -height); } completion:^(__unused BOOL finished) { - self->_window.frame = windowFrame; + self->_container.transform = CGAffineTransformIdentity; self->_window.hidden = YES; self->_window = nil; self->_container = nil; diff --git a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm index 8620af60246d..7e2294f08bb7 100644 --- a/packages/react-native/React/CoreModules/RCTDeviceInfo.mm +++ b/packages/react-native/React/CoreModules/RCTDeviceInfo.mm @@ -123,14 +123,21 @@ - (void)initialize name:RCTBridgeWillInvalidateModulesNotification object:nil]; - _constants = @{ - @"Dimensions" : [self _exportedDimensions], - // Note: - // This prop is deprecated and will be removed in a future release. - // Please use this only for a quick and temporary solution. - // Use instead. - @"isIPhoneX_deprecated" : @(RCTIsIPhoneNotched()), - }; + [self invalidateCachedConstants]; +} + +- (void)invalidateCachedConstants +{ + RCTExecuteOnMainQueue(^{ + self->_constants = @{ + @"Dimensions" : [self _exportedDimensions], + // Note: + // This prop is deprecated and will be removed in a future release. + // Please use this only for a quick and temporary solution. + // Use instead. + @"isIPhoneX_deprecated" : @(RCTIsIPhoneNotched()), + }; + }); } - (void)invalidate @@ -221,7 +228,7 @@ - (NSDictionary *)_exportedDimensions RCTAssert(_moduleRegistry, @"Failed to get exported dimensions: RCTModuleRegistry is nil"); RCTAccessibilityManager *accessibilityManager = (RCTAccessibilityManager *)[_moduleRegistry moduleForName:"AccessibilityManager"]; - // TOOD(T225745315): For some reason, accessibilityManager is nil in some cases. + // TODO(T225745315): For some reason, accessibilityManager is nil in some cases. // We default the fontScale to 1.0 in this case. This should be okay: if we assume // that accessibilityManager will eventually become available, js will eventually // be updated with the correct fontScale. @@ -241,20 +248,24 @@ - (NSDictionary *)_exportedDimensions - (void)didReceiveNewContentSizeMultiplier { - __weak __typeof(self) weakSelf = self; + [self invalidateCachedConstants]; + NSDictionary *nextInterfaceDimensions = _constants[@"Dimensions"]; // read the new value updated by the above instruction + RCTModuleRegistry *moduleRegistry = _moduleRegistry; RCTExecuteOnMainQueue(^{ // Report the event across the bridge. #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" [[moduleRegistry moduleForName:"EventDispatcher"] sendDeviceEventWithName:@"didUpdateDimensions" - body:[weakSelf _exportedDimensions]]; + body:nextInterfaceDimensions]; #pragma clang diagnostic pop }); } - (void)interfaceOrientationDidChange { + [self invalidateCachedConstants]; + #if TARGET_OS_IOS && !TARGET_OS_MACCATALYST UIWindow *window = RCTKeyWindow(); UIInterfaceOrientation nextOrientation = window.windowScene.interfaceOrientation; @@ -276,8 +287,10 @@ - (void)interfaceOrientationDidChange if ((isOrientationChanging || isResizingOrChangingToFullscreen) && RCTIsAppActive()) { #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" + NSDictionary *nextInterfaceDimensions = _constants[@"Dimensions"]; // read the new value updated by the call to + // invalidateCachedConstants at the top of this function [[_moduleRegistry moduleForName:"EventDispatcher"] sendDeviceEventWithName:@"didUpdateDimensions" - body:[self _exportedDimensions]]; + body:nextInterfaceDimensions]; // We only want to track the current _currentInterfaceOrientation and _isFullscreen only // when it happens and only when it is published. _currentInterfaceOrientation = nextOrientation; @@ -297,7 +310,8 @@ - (void)interfaceFrameDidChange - (void)_interfaceFrameDidChange { - NSDictionary *nextInterfaceDimensions = [self _exportedDimensions]; + [self invalidateCachedConstants]; + NSDictionary *nextInterfaceDimensions = _constants[@"Dimensions"]; // read the new value updated by the above instruction // update and publish the even only when the app is in active state if (!([nextInterfaceDimensions isEqual:_currentInterfaceDimensions]) && RCTIsAppActive()) { diff --git a/packages/react-native/React/CoreModules/RCTLogBoxView.mm b/packages/react-native/React/CoreModules/RCTLogBoxView.mm index 3b003a28a5dd..624e6941749f 100644 --- a/packages/react-native/React/CoreModules/RCTLogBoxView.mm +++ b/packages/react-native/React/CoreModules/RCTLogBoxView.mm @@ -80,7 +80,7 @@ - (void)layoutSubviews - (void)dealloc { #if !TARGET_OS_MACCATALYST // sharedApplication.delegate is not available on Mac Catalyst - [RCTSharedApplication().delegate.window makeKeyWindow]; + [RCTKeyWindow() makeKeyWindow]; #endif } diff --git a/packages/react-native/React/Profiler/RCTProfile.m b/packages/react-native/React/Profiler/RCTProfile.m index 04d6ac14ec92..90e65817446f 100644 --- a/packages/react-native/React/Profiler/RCTProfile.m +++ b/packages/react-native/React/Profiler/RCTProfile.m @@ -405,7 +405,7 @@ + (void)toggle:(UIButton *)target }; RCTProfileControlsWindow.hidden = YES; dispatch_async(dispatch_get_main_queue(), ^{ - [[[[RCTSharedApplication() delegate] window] rootViewController] presentViewController:activityViewController + [[RCTKeyWindow() rootViewController] presentViewController:activityViewController animated:YES completion:nil]; }); diff --git a/packages/react-native/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js b/packages/react-native/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js index 4ef344afe8ea..23ac4c2e0d99 100644 --- a/packages/react-native/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js +++ b/packages/react-native/src/private/specs_DEPRECATED/modules/NativeDeviceInfo.js @@ -45,14 +45,10 @@ export interface Spec extends TurboModule { } const NativeModule: Spec = TurboModuleRegistry.getEnforcing('DeviceInfo'); -let constants: ?DeviceInfoConstants = null; const NativeDeviceInfo = { getConstants(): DeviceInfoConstants { - if (constants == null) { - constants = NativeModule.getConstants(); - } - return constants; + return NativeModule.getConstants(); }, }; diff --git a/packages/rn-tester/IntegrationTests/AccessibilityManagerTest.js b/packages/rn-tester/IntegrationTests/AccessibilityManagerTest.js index 77dee3f06feb..759b71dc829c 100644 --- a/packages/rn-tester/IntegrationTests/AccessibilityManagerTest.js +++ b/packages/rn-tester/IntegrationTests/AccessibilityManagerTest.js @@ -56,4 +56,4 @@ function AccessibilityManagerTest(): React.Node { return ; } -export default AccessibilityManagerTest; +module.exports = AccessibilityManagerTest; diff --git a/packages/rn-tester/IntegrationTests/AppEventsTest.js b/packages/rn-tester/IntegrationTests/AppEventsTest.js index d96eb5da0a32..56db42de5fbc 100644 --- a/packages/rn-tester/IntegrationTests/AppEventsTest.js +++ b/packages/rn-tester/IntegrationTests/AppEventsTest.js @@ -83,4 +83,4 @@ const styles = StyleSheet.create({ }, }); -export default AppEventsTest; +module.exports = AppEventsTest; diff --git a/packages/rn-tester/IntegrationTests/GlobalEvalWithSourceUrlTest.js b/packages/rn-tester/IntegrationTests/GlobalEvalWithSourceUrlTest.js index 18ed02068104..9a1c99acc256 100644 --- a/packages/rn-tester/IntegrationTests/GlobalEvalWithSourceUrlTest.js +++ b/packages/rn-tester/IntegrationTests/GlobalEvalWithSourceUrlTest.js @@ -80,4 +80,4 @@ function GlobalEvalWithSourceUrlTest(): React.Node { return ; } -export default GlobalEvalWithSourceUrlTest; +module.exports = GlobalEvalWithSourceUrlTest; diff --git a/packages/rn-tester/IntegrationTests/ImageCachePolicyTest.js b/packages/rn-tester/IntegrationTests/ImageCachePolicyTest.js index b5b786d86624..36f688624f59 100644 --- a/packages/rn-tester/IntegrationTests/ImageCachePolicyTest.js +++ b/packages/rn-tester/IntegrationTests/ImageCachePolicyTest.js @@ -105,4 +105,4 @@ const styles = StyleSheet.create({ }, }); -export default ImageCachePolicyTest; +module.exports = ImageCachePolicyTest; diff --git a/packages/rn-tester/IntegrationTests/ImageSnapshotTest.js b/packages/rn-tester/IntegrationTests/ImageSnapshotTest.js index e25bc8f1e92b..b4b86d4034ed 100644 --- a/packages/rn-tester/IntegrationTests/ImageSnapshotTest.js +++ b/packages/rn-tester/IntegrationTests/ImageSnapshotTest.js @@ -36,4 +36,4 @@ function ImageSnapshotTest(): React.Node { ); } -export default ImageSnapshotTest; +module.exports = ImageSnapshotTest; diff --git a/packages/rn-tester/IntegrationTests/IntegrationTestHarnessTest.js b/packages/rn-tester/IntegrationTests/IntegrationTestHarnessTest.js index 831b640ddfaa..4b7e23879d74 100644 --- a/packages/rn-tester/IntegrationTests/IntegrationTestHarnessTest.js +++ b/packages/rn-tester/IntegrationTests/IntegrationTestHarnessTest.js @@ -62,4 +62,4 @@ const styles = StyleSheet.create({ }, }); -export default IntegrationTestHarnessTest; +module.exports = IntegrationTestHarnessTest; diff --git a/packages/rn-tester/IntegrationTests/PromiseTest.js b/packages/rn-tester/IntegrationTests/PromiseTest.js index 2efd6fe50f36..4d1eb27571c4 100644 --- a/packages/rn-tester/IntegrationTests/PromiseTest.js +++ b/packages/rn-tester/IntegrationTests/PromiseTest.js @@ -83,4 +83,4 @@ function PromiseTest(): React.Node { return ; } -export default PromiseTest; +module.exports = PromiseTest; diff --git a/packages/rn-tester/IntegrationTests/SimpleSnapshotTest.js b/packages/rn-tester/IntegrationTests/SimpleSnapshotTest.js index 72ba40aba53e..ed1ab9d848dc 100644 --- a/packages/rn-tester/IntegrationTests/SimpleSnapshotTest.js +++ b/packages/rn-tester/IntegrationTests/SimpleSnapshotTest.js @@ -54,4 +54,4 @@ const styles = StyleSheet.create({ }, }); -export default SimpleSnapshotTest; +module.exports = SimpleSnapshotTest; diff --git a/packages/rn-tester/IntegrationTests/SyncMethodTest.js b/packages/rn-tester/IntegrationTests/SyncMethodTest.js index a0f99c2dd115..8ba3ffa976f3 100644 --- a/packages/rn-tester/IntegrationTests/SyncMethodTest.js +++ b/packages/rn-tester/IntegrationTests/SyncMethodTest.js @@ -46,4 +46,4 @@ function SyncMethodTest(): React.Node { return ; } -export default SyncMethodTest; +module.exports = SyncMethodTest; diff --git a/packages/rn-tester/Podfile b/packages/rn-tester/Podfile index 93e41d495a92..921472d065d4 100644 --- a/packages/rn-tester/Podfile +++ b/packages/rn-tester/Podfile @@ -58,6 +58,10 @@ target 'RNTester' do pods('RNTester') end +target 'RNTester (AppDelegate)' do + pods('RNTester (AppDelegate)') +end + target 'RNTesterUnitTests' do pods('RNTesterUnitTests') pod 'React-RCTTest', :path => "./RCTTest" diff --git a/packages/rn-tester/Podfile.lock b/packages/rn-tester/Podfile.lock index 5addd20bc01b..018c74308cf1 100644 --- a/packages/rn-tester/Podfile.lock +++ b/packages/rn-tester/Podfile.lock @@ -500,6 +500,7 @@ PODS: - RCT-Folly/Fabric - RCTTypeSafety (= 1000.0.0) - React-Core/CoreModulesHeaders (= 1000.0.0) + - React-debug - React-jsi (= 1000.0.0) - React-jsinspector - React-jsinspectorcdp @@ -542,12 +543,14 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-domnativemodule + - React-featureflags - React-featureflagsnativemodule - React-idlecallbacksnativemodule - React-jsi - React-jsiexecutor - React-microtasksnativemodule - React-RCTFBReactNativeSpec + - React-webperformancenativemodule - SocketRocket - React-domnativemodule (1000.0.0): - boost @@ -579,7 +582,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -622,7 +624,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -648,7 +649,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -674,7 +674,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -700,7 +699,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -726,7 +724,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -752,7 +749,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -782,7 +778,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -808,7 +803,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -834,7 +828,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -860,7 +853,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -888,7 +880,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -914,7 +905,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -940,7 +930,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -966,7 +955,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -992,7 +980,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1018,7 +1005,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1044,7 +1030,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1071,7 +1056,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1097,7 +1081,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1126,7 +1109,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1152,7 +1134,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1178,7 +1159,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1206,7 +1186,6 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTRequired - - RCTSwiftUIWrapper - RCTTypeSafety - React-Core - React-cxxreact @@ -1273,6 +1252,7 @@ PODS: - React-FabricComponents/components/rncore (= 1000.0.0) - React-FabricComponents/components/safeareaview (= 1000.0.0) - React-FabricComponents/components/scrollview (= 1000.0.0) + - React-FabricComponents/components/switch (= 1000.0.0) - React-FabricComponents/components/text (= 1000.0.0) - React-FabricComponents/components/textinput (= 1000.0.0) - React-FabricComponents/components/unimplementedview (= 1000.0.0) @@ -1452,6 +1432,33 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga + - React-FabricComponents/components/switch (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-RCTFBReactNativeSpec + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCommon/turbomodule/core + - SocketRocket + - Yoga - React-FabricComponents/components/text (1000.0.0): - boost - DoubleConversion @@ -1689,6 +1696,7 @@ PODS: - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing + - React-oscompat - React-perflogger (= 1000.0.0) - React-runtimeexecutor - SocketRocket @@ -1757,12 +1765,13 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 1000.0.0) - - React-jsi (= 1000.0.0) + - React-cxxreact + - React-debug + - React-jsi - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 1000.0.0) + - React-perflogger - React-runtimeexecutor - SocketRocket - React-jsinspector (1000.0.0): @@ -1779,6 +1788,7 @@ PODS: - React-jsinspectorcdp - React-jsinspectornetwork - React-jsinspectortracing + - React-oscompat - React-perflogger (= 1000.0.0) - React-runtimeexecutor - SocketRocket @@ -1799,10 +1809,7 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-featureflags - React-jsinspectorcdp - - React-performancetimeline - - React-timing - SocketRocket - React-jsinspectortracing (1000.0.0): - boost @@ -1812,6 +1819,7 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric + - React-jsinspectornetwork - React-oscompat - React-timing - SocketRocket @@ -1824,6 +1832,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-cxxreact (= 1000.0.0) + - React-debug - React-jsi (= 1000.0.0) - React-jsinspector - React-jsinspectorcdp @@ -1877,6 +1886,7 @@ PODS: - React-callinvoker - React-Core - React-cxxreact + - React-debug - React-featureflags - React-jsi - React-jsinspector @@ -1885,6 +1895,20 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket + - React-networking (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - RCT-Folly + - RCT-Folly/Fabric + - React-featureflags + - React-jsinspectornetwork + - React-jsinspectortracing + - React-performancetimeline + - React-timing + - SocketRocket - React-oscompat (1000.0.0) - React-perflogger (1000.0.0): - boost @@ -1901,6 +1925,7 @@ PODS: - fast_float - fmt - glog + - hermes-engine - RCT-Folly - RCT-Folly/Fabric - React-jsi @@ -2001,6 +2026,7 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric + - RCTSwiftUIWrapper - React-Core - React-debug - React-Fabric @@ -2012,8 +2038,9 @@ PODS: - React-jsi - React-jsinspector - React-jsinspectorcdp - - React-jsinspectornetwork - React-jsinspectortracing + - React-networking + - React-performancecdpmetrics - React-performancetimeline - React-RCTAnimation - React-RCTFBReactNativeSpec @@ -2100,11 +2127,13 @@ PODS: - RCT-Folly/Fabric - RCTTypeSafety - React-Core/RCTNetworkHeaders + - React-debug - React-featureflags - React-jsi - React-jsinspectorcdp - React-jsinspectornetwork - React-NativeModulesApple + - React-networking - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket @@ -2125,6 +2154,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-Core + - React-debug - React-jsi - React-jsinspector - React-jsinspectorcdp @@ -2301,7 +2331,8 @@ PODS: - React-timing - React-utils - SocketRocket - - React-timing (1000.0.0) + - React-timing (1000.0.0): + - React-debug - React-utils (1000.0.0): - boost - DoubleConversion @@ -2314,6 +2345,23 @@ PODS: - React-debug - React-jsi (= 1000.0.0) - SocketRocket + - React-webperformancenativemodule (1000.0.0): + - boost + - DoubleConversion + - fast_float + - fmt + - glog + - hermes-engine + - RCT-Folly + - RCT-Folly/Fabric + - React-cxxreact + - React-jsi + - React-jsiexecutor + - React-performancetimeline + - React-RCTFBReactNativeSpec + - React-runtimeexecutor + - ReactCommon/turbomodule/core + - SocketRocket - ReactAppDependencyProvider (1000.0.0): - ReactCodegen - ReactCodegen (1000.0.0): @@ -2497,6 +2545,7 @@ DEPENDENCIES: - React-Mapbuffer (from `../react-native/ReactCommon`) - React-microtasksnativemodule (from `../react-native/ReactCommon/react/nativemodule/microtasks`) - React-NativeModulesApple (from `../react-native/ReactCommon/react/nativemodule/core/platform/ios`) + - React-networking (from `../react-native/ReactCommon/react/networking`) - React-oscompat (from `../react-native/ReactCommon/oscompat`) - React-perflogger (from `../react-native/ReactCommon/reactperflogger`) - React-performancecdpmetrics (from `../react-native/ReactCommon/react/performance/cdpmetrics`) @@ -2526,8 +2575,9 @@ DEPENDENCIES: - React-runtimescheduler (from `../react-native/ReactCommon/react/renderer/runtimescheduler`) - React-timing (from `../react-native/ReactCommon/react/timing`) - React-utils (from `../react-native/ReactCommon/react/utils`) - - ReactAppDependencyProvider (from `build/generated/ios`) - - ReactCodegen (from `build/generated/ios`) + - React-webperformancenativemodule (from `../react-native/ReactCommon/react/nativemodule/webperformance`) + - ReactAppDependencyProvider (from `build/generated/ios/ReactAppDependencyProvider`) + - ReactCodegen (from `build/generated/ios/ReactCodegen`) - ReactCommon-Samples (from `../react-native/ReactCommon/react/nativemodule/samples`) - ReactCommon/turbomodule/core (from `../react-native/ReactCommon`) - ScreenshotManager (from `NativeModuleExample`) @@ -2631,6 +2681,8 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/nativemodule/microtasks" React-NativeModulesApple: :path: "../react-native/ReactCommon/react/nativemodule/core/platform/ios" + React-networking: + :path: "../react-native/ReactCommon/react/networking" React-oscompat: :path: "../react-native/ReactCommon/oscompat" React-perflogger: @@ -2689,10 +2741,12 @@ EXTERNAL SOURCES: :path: "../react-native/ReactCommon/react/timing" React-utils: :path: "../react-native/ReactCommon/react/utils" + React-webperformancenativemodule: + :path: "../react-native/ReactCommon/react/nativemodule/webperformance" ReactAppDependencyProvider: - :path: build/generated/ios + :path: build/generated/ios/ReactAppDependencyProvider ReactCodegen: - :path: build/generated/ios + :path: build/generated/ios/ReactCodegen ReactCommon: :path: "../react-native/ReactCommon" ReactCommon-Samples: @@ -2706,84 +2760,88 @@ SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 - FBLazyVector: d3c2dd739a63c1a124e775df075dc7c517a719cb + FBLazyVector: 68b07a5bc7c49d3baee756d7fdcd6c23aeb67124 fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 - hermes-engine: 5a9adf9081befbac6b81bc0c81522430a7eb7da1 + hermes-engine: b18262a626b43561b2fdb63766417735dedf9731 MyNativeView: 26b517931cc8bfc7b602c410572b323348185461 NativeCxxModuleExample: 6a9788a749d522f8b6cc55a56f4760a670e4e2eb OCMock: 589f2c84dacb1f5aaf6e4cec1f292551fe748e74 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 RCTDeprecation: 3808e36294137f9ee5668f4df2e73dc079cd1dcf - RCTRequired: a00614e2da5344c2cda3d287050b6cee00e21dc6 - RCTTypeSafety: 459a16418c6b413060d35434ba3e83f5b0bd2651 - React: 170a01a19ba2525ab7f11243e2df6b19bf268093 - React-callinvoker: f08f425e4043cd1998a158b6e39a6aed1fd1d718 - React-Core: d35c5cf69898fd026e5cd93a0454b1d42e999d3e - React-CoreModules: 3ce1d43f6cc37f43759ec543ce1c0010080f1de1 - React-cxxreact: 52ea845cf7eb1e0fb201ed36e2192de6522a1f60 - React-debug: 195df38487d3f48a7af04deddeb4a5c6d4440416 - React-defaultsnativemodule: 8afea5a4bd07addb523bf48489b8a684ea1bdff0 - React-domnativemodule: 00a3d08568b4e573dcc21ecec829ed425ab10763 - React-Fabric: e2ee903224e68c8fa24aa96e217bad36d7660f5a - React-FabricComponents: 82043c131381c8b1f6e91c559eb04cdf61decdb7 - React-FabricImage: 264c9ce5241e43e25b94c8de55ac6c3c8a046472 - React-featureflags: 595651ea13c63a9f77f06d9a1973b665b4a28b7e - React-featureflagsnativemodule: 06823479a2ee210cfa0e9c19447c2722a8d995f2 - React-graphics: 1f99b9b5515eac389f0cf9c85b03abc366d6a933 - React-hermes: f1034a4d5d8edaf78d47a4f21e9898c4bf6fe02f - React-idlecallbacksnativemodule: 4e65f183318b8a0fbabc481a4eafc0f0d62d1cbf - React-ImageManager: a6833445e17879933378b7c0ba45ee42115c14bc - React-jserrorhandler: bec134a192c50338193544404d45df24fb8a19ca - React-jsi: 4ad77650fb0ca4229569eb2532db7a87e3d12662 - React-jsiexecutor: fa5b80bdbe1ceffc33a892da20fc07b4dfa4df7a - React-jsinspector: 10b5dc4eef2a3d05b80be2114ed676496c5bf59c - React-jsinspectorcdp: 5fb266e5f23d3a2819ba848e9d4d0b6b00f95934 - React-jsinspectornetwork: 1655a81f3fe14789df41e063bd56dd130cc3562a - React-jsinspectortracing: 5b0be488e06958a572e1badfe8509929ae1cc83b - React-jsitooling: 9e563b89f94cf4baf872fe47105d60ae83f4ce4d - React-jsitracing: ce443686f52538d1033ce7db1e7d643e866262f0 - React-logger: 116c3ae5a9906671d157aa00882a5ee75a5a7ebc - React-Mapbuffer: fc937cfa41140d7724c559c3d16c50dd725361c8 - React-microtasksnativemodule: 09899c7389250279bdcc5384f0281bb069979855 - React-NativeModulesApple: d05b718ccd8b68c184e76dbc1efb63385197595b - React-oscompat: 7133e0e945cda067ae36b22502df663d73002864 - React-perflogger: ada3cdf3dfc8b7cd1fabe3c91b672e23981611ab - React-performancecdpmetrics: 89ea4585d30c7681ab1378afb3fd845cd0647860 - React-performancetimeline: e7d5849d89ee39557dcd56dfb6e7b0d49003d925 - React-RCTActionSheet: 1bf8cc8086ad1c15da3407dfb7bc9dd94dc7595d - React-RCTAnimation: 263593e66c89bf810604b1ace15dfa382a1ca2df - React-RCTAppDelegate: f66939ac7ce5da6eb839c3d84a7098e62498a791 - React-RCTBlob: 7b76230c53fe87d305eeeb250b0aae031bb6cbae - React-RCTFabric: 2fd2ef899c7219fd39fd61c39750510f88a81434 - React-RCTFBReactNativeSpec: bd9c8093cc3388fe55a8cce47e66712e326e967a - React-RCTImage: 3e28f3015bc7e8375298e01ebb2032aa05635c32 - React-RCTLinking: 06742cfad41c506091403a414370743a4ed75af3 - React-RCTNetwork: b4577eec0092c16d8996e415e4cac7a372d6d362 - React-RCTPushNotification: ea11178d499696516e0ff9ae335edbe99b06f94b - React-RCTRuntime: 925039e78fc530e0421c308ccc607f214f3c7be1 - React-RCTSettings: d3c2dd305ec81f7faf42762ec598d57f07fd43be - React-RCTTest: 2db46eda60bc2228cb67622a580e8e86b00088d9 - React-RCTText: e416825b80c530647040ef91d23ffd35ccc87981 - React-RCTVibration: 1837a27fc16eeffc9509779c3334fde54c012bcc - React-rendererconsistency: 777c894edc43dde01499189917ac54ee76ae6a6a - React-renderercss: a9cb6ba7f49a80dc4b4f7008bae1590d12f27049 - React-rendererdebug: fea8bde927403a198742b2d940a5f1cd8230c0b4 - React-RuntimeApple: 6a0c164a8855edb4987b90da2d4d8601302de72d - React-RuntimeCore: 6dec37113b759b76641bd028bfbbbec8cf923356 - React-runtimeexecutor: f6ad01d321a3b99e772509b4d6f5c25b670103fa - React-RuntimeHermes: d4f661204d3061219a63951eb4efed4dcaf3f12f - React-runtimescheduler: ae44fe8b4170a9d59f62e8b7d7b060c179db739d - React-timing: 9d49179631e5e3c759e6e82d4c613c73da80a144 - React-utils: 0944df8d553d66b27f486282c42a84a969fd2f6c - ReactAppDependencyProvider: 68f2d2cefd6c9b9f2865246be2bfe86ebd49238d - ReactCodegen: ff8d79aa6b195efceb75a7cd3cafa9f05d1cbfe0 - ReactCommon: a53973ab35d399560ace331ec9e2b26db0592cec - ReactCommon-Samples: dcc128cbf51ac38d2578791750d0a046d1b8a5e9 + RCTRequired: bb9099b5e1617c7280cb724242fc1b21d901eb73 + RCTSwiftUI: 0a335cceda083d267a0ca786010022c7bb82d949 + RCTSwiftUIWrapper: 3260bd18457758645bbbaae4374097713f1f83a4 + RCTTypeSafety: 7700df72e710ded62032d058b2aed43abc230e5f + React: 535f70e9c30b85b943d58b62366e2b069ada18b1 + React-callinvoker: 4aa2ffe0cdb0064f7bfbc8eaf26efebfc79b5bb5 + React-Core: 6091c080d538a192e48f8026a0ea5916a8ae803c + React-CoreModules: c565742e546d7afe9f508acdb80dbdfaf747026d + React-cxxreact: b4d110ab978166c5bf651f2fd14eeadc9ad00c8f + React-debug: b4a63424289a20f12f6c6512083cf1cb4dff47f4 + React-defaultsnativemodule: 19423a61514441aabd7e912052c88a55b749ab34 + React-domnativemodule: fd1ca10f389f3bc6104aa13fe91067c8a0f4ee44 + React-Fabric: d5218ee165cf122d5eded80241bfe448b8caf289 + React-FabricComponents: c27118abf489053d64192d1629a7ce8879c05d82 + React-FabricImage: 4730f0b840df90105d4990e70ea579f24c50437e + React-featureflags: 39c0f6791c7c7905fc914d4e228a25715782975e + React-featureflagsnativemodule: f4f073eba76753989b577c72e48318826c4db79e + React-graphics: 2206426381f736f7d179a9391fc6e364a79d3df0 + React-hermes: df2ee41a8cbd90739c4e6946c298d0b5d34ad908 + React-idlecallbacksnativemodule: 5cd0036ad414c3492f61c677ee74927a041229a4 + React-ImageManager: d54833bb8427de5edf10883386151102f08dce0a + React-jserrorhandler: e8e5dd1a48c3fb1d1ef5ea4ebb56e84c824f56e3 + React-jsi: a1c712c56fce6b4da723700b7df59a31a669ebdd + React-jsiexecutor: 86ed1a7db60e5078c6a43ab7600d1998dd1cf6c5 + React-jsinspector: 8639570e19b4449ea0821b9f1b6c736821a0a8c0 + React-jsinspectorcdp: 996c7e2d3dd398c0ea6f7e6ba8b2282848bede42 + React-jsinspectornetwork: 5fba7b293ee191e1d483fe35a80a7860072d27fa + React-jsinspectortracing: 90db3c3bb9c0a003ad01699448bd4b7c22cb2a1c + React-jsitooling: 7242baa3a8fedd8fc56f05ed8a33d307613904e4 + React-jsitracing: 9ec744dbbcfdd44eee6172a416d8443f77a4732c + React-logger: 53b21ed83d0002a0dfaa88819ba59529a2a6bf38 + React-Mapbuffer: 461ef5be307033265f82fa9498bd1344405f4c33 + React-microtasksnativemodule: b60c9150c4664d71d7681afceda08374145fe04b + React-NativeModulesApple: 1fb5b484215ee5c1696c390f190dedeb3f116cb7 + React-networking: df206c645103546c67c2d349ff7a30d5aac6805c + React-oscompat: 8197e2e6296e002455a21539686985b7d4bdd99c + React-perflogger: 19a78a06338e43839c3bc0389d06aac67635a708 + React-performancecdpmetrics: 158ff91e3986ebdd41e042abd7797a0397e5482f + React-performancetimeline: aa76a6448679c002a025c1e36f487bb02f896028 + React-RCTActionSheet: 38725cd55fc758bf91b58ed649365bcdc0f93676 + React-RCTAnimation: 10a82ed044326b5db0d8182f9308ad63623db405 + React-RCTAppDelegate: 6d085cd9d903f01f779605f06d784db8c0c20306 + React-RCTBlob: 7d72194943434497e5f4c02c818d36de562e6e92 + React-RCTFabric: 237421715bdcab9f5305094c482bf7cf7db3cee2 + React-RCTFBReactNativeSpec: 0bfac9b91d13467fd6dd593a09932198114b1489 + React-RCTImage: f12092f9c776f17526fbfc7d9220a757f09b1b54 + React-RCTLinking: 300164f9741ce876459da5af82db1a6b1a4203fb + React-RCTNetwork: e9370997679f7851d2cc20099ada0f9d73f98d57 + React-RCTPushNotification: a77ea53e273cd85626e57dc6bc3a4eef3b322517 + React-RCTRuntime: 6c389b29f81c197af8ac5ff1767235487f6bfcba + React-RCTSettings: 21616b49e9f9568fadab4ad13dc97562056640d6 + React-RCTTest: 3a041ca8815a8288935a61ca9a8ae48b9ac79020 + React-RCTText: d9d740e9d96e4133c65a24e7d688078ea7baec56 + React-RCTVibration: 70c25b7ce783ebf45082d86b831cfafa8de69b2f + React-rendererconsistency: 61c53d4427033f5e667bd844d351013940d8f185 + React-renderercss: 37a92113c1de0ec508599de099683b446fc2266d + React-rendererdebug: 3c9ce887b664cb3e75a998be0499e4164a999acb + React-RuntimeApple: c0e881b36fac5be52aae34fa42ee5094c6a351dd + React-RuntimeCore: 275ab347f4e8c64122224d2a7192e41c0312c877 + React-runtimeexecutor: df782d608a24f840db9db100ffff077b8783dbd2 + React-RuntimeHermes: 89fc3773bd2164bf8120a01b7eb495fac77c3c8e + React-runtimescheduler: 697412b07ee9fcd42ee144458db4be8dcf311ff8 + React-timing: 262ce1c5faec4879a2067cf823611ca2f798e9de + React-utils: 27389ba34242321cfd3a55b1bb04388c7fb2bf73 + React-webperformancenativemodule: afdd95f688878618d1f871c9af3a50212eb18635 + ReactAppDependencyProvider: 9a326e604e66efe43dc3a1e893314cb62625c205 + ReactCodegen: 5a2d9dbe44f2b16e06cbe68d2215d71776ae5c8b + ReactCommon: f2c8e1746895ec294bb3e21cb47d797b4b5ffbee + ReactCommon-Samples: 3b93b5d2a3b77f72211fa3b0a8ebe5acd6404a86 ScreenshotManager: 370045f403c555760ae26d85a01dda89d257fa7b SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - Yoga: 59290f2ce3fc5c34797a21244288cad99b357b63 + Yoga: 8dc3c8d55924559204ffb86f71496b8a9f9d2295 -PODFILE CHECKSUM: 995beda3236c2c76801e7a4efc7fedcd390220e6 +PODFILE CHECKSUM: 21be30d7d0e6382a4c9d45a5e70359e583b73403 COCOAPODS: 1.16.2 diff --git a/packages/rn-tester/RCTTest/RCTTestRunner.m b/packages/rn-tester/RCTTest/RCTTestRunner.m index f95fb9874507..0f85e8674caa 100644 --- a/packages/rn-tester/RCTTest/RCTTestRunner.m +++ b/packages/rn-tester/RCTTest/RCTTestRunner.m @@ -183,7 +183,7 @@ - (void)runTest:(SEL)test } batchedBridge = [bridge batchedBridge]; - UIViewController *vc = RCTSharedApplication().delegate.window.rootViewController; + UIViewController *vc = RCTKeyWindow().rootViewController; vc.view = [UIView new]; RCTTestModule *testModule = [bridge moduleForClass:[RCTTestModule class]]; diff --git a/packages/rn-tester/RNTester/AppDelegate.h b/packages/rn-tester/RNTester/AppDelegate.h index df578639dc44..1fb7f1895aec 100644 --- a/packages/rn-tester/RNTester/AppDelegate.h +++ b/packages/rn-tester/RNTester/AppDelegate.h @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +#if RNTESTER_USE_APPDELEGATE + #import #import #import @@ -15,3 +17,13 @@ @property (nonatomic, strong, nonnull) RCTReactNativeFactory *reactNativeFactory; @end + +#else + +#import + +@interface AppDelegate : UIResponder + +@end + +#endif diff --git a/packages/rn-tester/RNTester/AppDelegate.mm b/packages/rn-tester/RNTester/AppDelegate.mm index 7217807c1220..4a4e22cf63a9 100644 --- a/packages/rn-tester/RNTester/AppDelegate.mm +++ b/packages/rn-tester/RNTester/AppDelegate.mm @@ -7,6 +7,7 @@ #import "AppDelegate.h" +#if RNTESTER_USE_APPDELEGATE #import #import @@ -175,3 +176,8 @@ - (NSURL *)bundleURL } @end +#else +@implementation AppDelegate + +@end +#endif diff --git a/packages/rn-tester/RNTester/Info-AppDelegate.plist b/packages/rn-tester/RNTester/Info-AppDelegate.plist new file mode 100644 index 000000000000..373b8322fdc7 --- /dev/null +++ b/packages/rn-tester/RNTester/Info-AppDelegate.plist @@ -0,0 +1,67 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleURLTypes + + + CFBundleTypeRole + Editor + CFBundleURLName + com.reactjs.ios + CFBundleURLSchemes + + rntester + + + + CFBundleVersion + 1 + LSRequiresIPhoneOS + + NSAppTransportSecurity + + NSAllowsArbitraryLoads + + NSAllowsLocalNetworking + + + NSLocationWhenInUseUsageDescription + You need to add NSLocationWhenInUseUsageDescription key in Info.plist to enable geolocation, otherwise it is going to *fail silently*! + NSPhotoLibraryUsageDescription + You need to add NSPhotoLibraryUsageDescription key in Info.plist to enable photo library usage, otherwise it is going to *fail silently*! + RCTNewArchEnabled + + UILaunchStoryboardName + LaunchScreen + UIRequiredDeviceCapabilities + + arm64 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + UIViewControllerBasedStatusBarAppearance + + + diff --git a/packages/rn-tester/RNTester/Info.plist b/packages/rn-tester/RNTester/Info.plist index 373b8322fdc7..3004824d996f 100644 --- a/packages/rn-tester/RNTester/Info.plist +++ b/packages/rn-tester/RNTester/Info.plist @@ -61,6 +61,23 @@ UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneDelegateClassName + SceneDelegate + UISceneConfigurationName + Default Configuration + + + + UIViewControllerBasedStatusBarAppearance diff --git a/packages/rn-tester/RNTester/NativeExampleViews/FlexibleSizeExampleView.mm b/packages/rn-tester/RNTester/NativeExampleViews/FlexibleSizeExampleView.mm index d08dd63be1f0..a78b8b3419d4 100644 --- a/packages/rn-tester/RNTester/NativeExampleViews/FlexibleSizeExampleView.mm +++ b/packages/rn-tester/RNTester/NativeExampleViews/FlexibleSizeExampleView.mm @@ -13,6 +13,7 @@ #import #import "AppDelegate.h" +#import "SceneDelegate.h" @interface FlexibleSizeExampleViewManager : RCTViewManager @@ -44,9 +45,15 @@ - (instancetype)initWithFrame:(CGRect)frame if ((self = [super initWithFrame:frame])) { _sizeUpdated = NO; +#if RNTESTER_USE_APPDELEGATE AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; + RCTReactNativeFactory* reactNativeFactory = appDelegate.reactNativeFactory; +#else + SceneDelegate *sceneDelegate = (SceneDelegate*)self.window.windowScene.delegate; + RCTReactNativeFactory* reactNativeFactory = sceneDelegate.reactNativeFactory; +#endif - _resizableRootView = (RCTRootView *)[appDelegate.reactNativeFactory.rootViewFactory + _resizableRootView = (RCTRootView *)[reactNativeFactory.rootViewFactory viewWithModuleName:@"RootViewSizeFlexibilityExampleApp"]; [_resizableRootView setSizeFlexibility:RCTRootViewSizeFlexibilityHeight]; diff --git a/packages/rn-tester/RNTester/NativeExampleViews/UpdatePropertiesExampleView.mm b/packages/rn-tester/RNTester/NativeExampleViews/UpdatePropertiesExampleView.mm index 6cf4a1a03f19..c83f6c6be47f 100644 --- a/packages/rn-tester/RNTester/NativeExampleViews/UpdatePropertiesExampleView.mm +++ b/packages/rn-tester/RNTester/NativeExampleViews/UpdatePropertiesExampleView.mm @@ -11,6 +11,7 @@ #import #import "AppDelegate.h" +#import "SceneDelegate.h" @interface UpdatePropertiesExampleViewManager : RCTViewManager @@ -39,10 +40,16 @@ - (instancetype)initWithFrame:(CGRect)frame if (self) { _beige = YES; +#if RNTESTER_USE_APPDELEGATE AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; + RCTReactNativeFactory* reactNativeFactory = appDelegate.reactNativeFactory; +#else + SceneDelegate *sceneDelegate = (SceneDelegate*)self.window.windowScene.delegate; + RCTReactNativeFactory* reactNativeFactory = sceneDelegate.reactNativeFactory; +#endif _rootView = - (RCTRootView *)[appDelegate.reactNativeFactory.rootViewFactory viewWithModuleName:@"SetPropertiesExampleApp" + (RCTRootView *)[reactNativeFactory.rootViewFactory viewWithModuleName:@"SetPropertiesExampleApp" initialProperties:@{@"color" : @"beige"}]; _button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; diff --git a/packages/rn-tester/RNTester/SceneDelegate.h b/packages/rn-tester/RNTester/SceneDelegate.h new file mode 100644 index 000000000000..db3a13a9634e --- /dev/null +++ b/packages/rn-tester/RNTester/SceneDelegate.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import +#import +#import + +@class ReactNativeDelegate; +@class RCTReactNativeFactory; + +@interface SceneDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; +@property (strong, nonatomic) ReactNativeDelegate *reactNativeDelegate; +@property (strong, nonatomic) RCTReactNativeFactory *reactNativeFactory; + +- (NSDictionary *)prepareInitialProps; + +@end + +@interface ReactNativeDelegate : RCTDefaultReactNativeFactoryDelegate + +@end diff --git a/packages/rn-tester/RNTester/SceneDelegate.mm b/packages/rn-tester/RNTester/SceneDelegate.mm new file mode 100644 index 000000000000..a6391ba50f3d --- /dev/null +++ b/packages/rn-tester/RNTester/SceneDelegate.mm @@ -0,0 +1,102 @@ +/* + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "SceneDelegate.h" + +#import + +#import +#import +#import +#import +#import + +#import + +#import +#ifndef RN_DISABLE_OSS_PLUGIN_HEADER +#import +#endif + +#if __has_include() +#define USE_OSS_CODEGEN 1 +#import +#else +#define USE_OSS_CODEGEN 0 +#endif + +@interface SceneDelegate () +@end + +@implementation SceneDelegate + +- (NSDictionary *)prepareInitialProps +{ + NSMutableDictionary *initProps = [NSMutableDictionary dictionary]; + NSString *routeUri = [[NSUserDefaults standardUserDefaults] stringForKey:@"route"]; + if (routeUri) { + NSString *example = [NSString stringWithFormat:@"rntester://example/%@Example", routeUri]; + initProps[@"exampleFromAppetizeParams"] = example; + } + return [initProps copy]; +} + +- (void)scene:(UIScene *)scene + willConnectToSession:(UISceneSession *)session + options:(UISceneConnectionOptions *)connectionOptions +{ + if (![scene isKindOfClass:[UIWindowScene class]]) + return; + + UIWindowScene *windowScene = (UIWindowScene *)scene; + self.window = [[UIWindow alloc] initWithWindowScene:windowScene]; + + ReactNativeDelegate *delegate = [[ReactNativeDelegate alloc] init]; + RCTReactNativeFactory *factory = [[RCTReactNativeFactory alloc] initWithDelegate:delegate]; + +#if USE_OSS_CODEGEN + delegate.dependencyProvider = [[RCTAppDependencyProvider alloc] init]; +#endif + + self.reactNativeDelegate = delegate; + self.reactNativeFactory = factory; + + [factory startReactNativeWithModuleName:@"RNTesterApp" + inWindow:self.window + initialProperties:[self prepareInitialProps] + connectionOptions:connectionOptions]; +} + +- (void)scene:(UIScene *)scene openURLContexts:(NSSet *)URLContexts +{ + [RCTLinkingManager scene:scene openURLContexts:URLContexts]; +} + +- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity +{ + [RCTLinkingManager scene:scene continueUserActivity:userActivity]; +} + +@end + +@implementation ReactNativeDelegate + +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge +{ + return [self bundleURL]; +} + +- (NSURL *)bundleURL +{ +#if DEBUG + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"js/RNTesterApp.ios"]; +#else + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; +#endif +} + +@end diff --git a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj index 898cd14e1ca5..bf6673679e55 100644 --- a/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj +++ b/packages/rn-tester/RNTesterPods.xcodeproj/project.pbxproj @@ -9,16 +9,28 @@ /* Begin PBXBuildFile section */ 0EA618032BE537D3001875EF /* RNTesterBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 0EA618022BE537D3001875EF /* RNTesterBundle.bundle */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 17099341D9D7AB80BFF81105 /* libPods-RNTesterIntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9EB7D826CA97222DB45C45F2 /* libPods-RNTesterIntegrationTests.a */; }; 2DDEF0101F84BF7B00DBDF73 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */; }; 383889DA23A7398900D06C3E /* RCTConvert_UIColorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 383889D923A7398900D06C3E /* RCTConvert_UIColorTests.m */; }; 3D2AFAF51D646CF80089D1A3 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; }; - 3F4D148C63BBF774A25488A6 /* libPods-RNTesterIntegrationTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 93A243F0D4D5C54911E811C4 /* libPods-RNTesterIntegrationTests.a */; }; - 46C0FD761B0B9B1E8662B759 /* libPods-RNTesterUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2B312B0EEE90BA411618B015 /* libPods-RNTesterUnitTests.a */; }; + 4B93FEC67AB8C44A4BBD9A85 /* libPods-RNTesterUnitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AEE1D4AAF24CCC767374CF44 /* libPods-RNTesterUnitTests.a */; }; 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; }; + 7383E98341CC903A654625CC /* libPods-RNTester (AppDelegate).a in Frameworks */ = {isa = PBXBuildFile; fileRef = EE3BB11C9B61143C9D2FB455 /* libPods-RNTester (AppDelegate).a */; }; + 79B29C0F2E607763007612A5 /* UpdatePropertiesExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */; }; + 79B29C102E607763007612A5 /* FlexibleSizeExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */; }; + 79B29C112E607763007612A5 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */; }; + 79B29C132E607763007612A5 /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C60EB1B226440DB0018C04F /* AppDelegate.mm */; }; + 79B29C142E607763007612A5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; + 79B29C182E607763007612A5 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */; }; + 79B29C192E607763007612A5 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */; }; + 79B29C1A2E607763007612A5 /* RNTesterBundle.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 0EA618022BE537D3001875EF /* RNTesterBundle.bundle */; }; + 79B29C1B2E607763007612A5 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F0D621C22BBB9E38005960AC /* PrivacyInfo.xcprivacy */; }; + 79B29C1C2E607763007612A5 /* legacy_image@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */; }; + 79B29C2E2E607A99007612A5 /* SceneDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 79B29C2D2E607A99007612A5 /* SceneDelegate.mm */; }; 8145AE06241172D900A3F8DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */; }; 832F45BB2A8A6E1F0097B4E6 /* SwiftTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */; }; A975CA6C2C05EADF0043F72A /* RCTNetworkTaskTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */; }; - C175B6D9ED9336FB66637943 /* libPods-RNTester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C706D402EE4AF9BE838CBA9 /* libPods-RNTester.a */; }; + AC4301DF102AB3A5F2B3C6AC /* libPods-RNTester.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 661310D1F20AEC2BBE6B3315 /* libPods-RNTester.a */; }; CD10C7A5290BD4EB0033E1ED /* RCTEventEmitterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = CD10C7A4290BD4EB0033E1ED /* RCTEventEmitterTests.m */; }; E62F11832A5C6580000BF1C8 /* FlexibleSizeExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */; }; E62F11842A5C6584000BF1C8 /* UpdatePropertiesExampleView.mm in Sources */ = {isa = PBXBuildFile; fileRef = 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */; }; @@ -73,33 +85,37 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 0526D9711E138C62F83DB24D /* Pods-RNTester (AppDelegate).debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester (AppDelegate).debug.xcconfig"; path = "Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate).debug.xcconfig"; sourceTree = ""; }; 0EA618022BE537D3001875EF /* RNTesterBundle.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; name = RNTesterBundle.bundle; path = RNTester/RNTesterBundle.bundle; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* RNTester.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RNTester.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RNTester/AppDelegate.h; sourceTree = ""; }; 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNTester/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = RNTester/main.m; sourceTree = ""; }; - 20B55D3C33B683598D2A4424 /* Pods-RNTesterIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.debug.xcconfig"; sourceTree = ""; }; 272E6B3B1BEA849E001FCF37 /* UpdatePropertiesExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UpdatePropertiesExampleView.h; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.h; sourceTree = ""; }; 272E6B3C1BEA849E001FCF37 /* UpdatePropertiesExampleView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = UpdatePropertiesExampleView.mm; path = RNTester/NativeExampleViews/UpdatePropertiesExampleView.mm; sourceTree = ""; }; 27F441E81BEBE5030039B79C /* FlexibleSizeExampleView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FlexibleSizeExampleView.mm; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.mm; sourceTree = ""; }; 27F441EA1BEBE5030039B79C /* FlexibleSizeExampleView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlexibleSizeExampleView.h; path = RNTester/NativeExampleViews/FlexibleSizeExampleView.h; sourceTree = ""; }; - 2B312B0EEE90BA411618B015 /* libPods-RNTesterUnitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterUnitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RNTester/Images.xcassets; sourceTree = ""; }; + 380278D3D58245B231221658 /* Pods-RNTesterIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.release.xcconfig"; sourceTree = ""; }; 383889D923A7398900D06C3E /* RCTConvert_UIColorTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTConvert_UIColorTests.m; sourceTree = ""; }; 3D2AFAF41D646CF80089D1A3 /* legacy_image@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "legacy_image@2x.png"; path = "RNTester/legacy_image@2x.png"; sourceTree = ""; }; - 3FF60722627F93D8F62FA1E3 /* Pods-RNTesterUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterUnitTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests.release.xcconfig"; sourceTree = ""; }; - 4C706D402EE4AF9BE838CBA9 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 51BC9297B6C3163C14532020 /* Pods-RNTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.release.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.release.xcconfig"; sourceTree = ""; }; + 4898C175154D04F3B79AA16E /* Pods-RNTester.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.debug.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.debug.xcconfig"; sourceTree = ""; }; + 49A507087276D2F616517D75 /* Pods-RNTesterUnitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterUnitTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests.release.xcconfig"; sourceTree = ""; }; 5C60EB1B226440DB0018C04F /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = RNTester/AppDelegate.mm; sourceTree = ""; }; + 661310D1F20AEC2BBE6B3315 /* libPods-RNTester.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 79A734792E607E17009A7E41 /* Info-AppDelegate.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info-AppDelegate.plist"; path = "RNTester/Info-AppDelegate.plist"; sourceTree = ""; }; + 79B29C242E607763007612A5 /* RNTester (AppDelegate).app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RNTester (AppDelegate).app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 79B29C2C2E607A99007612A5 /* SceneDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SceneDelegate.h; path = RNTester/SceneDelegate.h; sourceTree = ""; }; + 79B29C2D2E607A99007612A5 /* SceneDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = SceneDelegate.mm; path = RNTester/SceneDelegate.mm; sourceTree = ""; }; 8145AE05241172D900A3F8DA /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = RNTester/LaunchScreen.storyboard; sourceTree = ""; }; 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SwiftTest.swift; path = RNTester/SwiftTest.swift; sourceTree = ""; }; - 93A243F0D4D5C54911E811C4 /* libPods-RNTesterIntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterIntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 965E81B0114E8BBAAE82ECFE /* Pods-RNTester.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.release.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.release.xcconfig"; sourceTree = ""; }; + 9EB7D826CA97222DB45C45F2 /* libPods-RNTesterIntegrationTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterIntegrationTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; A975CA6B2C05EADE0043F72A /* RCTNetworkTaskTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RCTNetworkTaskTests.m; sourceTree = ""; }; AC474BFB29BBD4A1002BDAED /* RNTester.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; name = RNTester.xctestplan; path = RNTester/RNTester.xctestplan; sourceTree = ""; }; - B0E70A8A05E03E868F8703FE /* Pods-RNTesterIntegrationTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.release.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.release.xcconfig"; sourceTree = ""; }; - CA59C9994B1822826D8983F0 /* Pods-RNTester.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester.debug.xcconfig"; path = "Target Support Files/Pods-RNTester/Pods-RNTester.debug.xcconfig"; sourceTree = ""; }; + AEE1D4AAF24CCC767374CF44 /* libPods-RNTesterUnitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTesterUnitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; CD10C7A4290BD4EB0033E1ED /* RCTEventEmitterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RCTEventEmitterTests.m; sourceTree = ""; }; - D134EB89DD98253FCF879A47 /* Pods-RNTesterUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests.debug.xcconfig"; sourceTree = ""; }; + CDBE6D8B81E09ABB3450CE6F /* Pods-RNTesterIntegrationTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterIntegrationTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests.debug.xcconfig"; sourceTree = ""; }; E771AEEA22B44E3100EA1189 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = RNTester/Info.plist; sourceTree = ""; }; E7C1241922BEC44B00DA25C0 /* RNTesterIntegrationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterIntegrationTests.m; sourceTree = ""; }; E7DB209F22B2BA84005AC45F /* RNTesterUnitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RNTesterUnitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -155,7 +171,10 @@ E7DB215722B2F332005AC45F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; E7DB215D22B2F3EC005AC45F /* RNTesterTestModule.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNTesterTestModule.m; sourceTree = ""; }; E7DB218B22B41FCD005AC45F /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = XCTest.framework; sourceTree = DEVELOPER_DIR; }; + E805E0682241849EA44C131F /* Pods-RNTester (AppDelegate).release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTester (AppDelegate).release.xcconfig"; path = "Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate).release.xcconfig"; sourceTree = ""; }; + EE3BB11C9B61143C9D2FB455 /* libPods-RNTester (AppDelegate).a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-RNTester (AppDelegate).a"; sourceTree = BUILT_PRODUCTS_DIR; }; F0D621C22BBB9E38005960AC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; + FD1EE48EB00CDA91A24A7D26 /* Pods-RNTesterUnitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RNTesterUnitTests.debug.xcconfig"; path = "Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests.debug.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -163,7 +182,15 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C175B6D9ED9336FB66637943 /* libPods-RNTester.a in Frameworks */, + AC4301DF102AB3A5F2B3C6AC /* libPods-RNTester.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 79B29C152E607763007612A5 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7383E98341CC903A654625CC /* libPods-RNTester (AppDelegate).a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -172,7 +199,7 @@ buildActionMask = 2147483647; files = ( E7DB213122B2C649005AC45F /* JavaScriptCore.framework in Frameworks */, - 46C0FD761B0B9B1E8662B759 /* libPods-RNTesterUnitTests.a in Frameworks */, + 4B93FEC67AB8C44A4BBD9A85 /* libPods-RNTesterUnitTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -182,7 +209,7 @@ files = ( E7DB218C22B41FCD005AC45F /* XCTest.framework in Frameworks */, E7DB216722B2F69F005AC45F /* JavaScriptCore.framework in Frameworks */, - 3F4D148C63BBF774A25488A6 /* libPods-RNTesterIntegrationTests.a in Frameworks */, + 17099341D9D7AB80BFF81105 /* libPods-RNTesterIntegrationTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -204,8 +231,11 @@ F0D621C22BBB9E38005960AC /* PrivacyInfo.xcprivacy */, AC474BFB29BBD4A1002BDAED /* RNTester.xctestplan */, E771AEEA22B44E3100EA1189 /* Info.plist */, + 79A734792E607E17009A7E41 /* Info-AppDelegate.plist */, 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 5C60EB1B226440DB0018C04F /* AppDelegate.mm */, + 79B29C2C2E607A99007612A5 /* SceneDelegate.h */, + 79B29C2D2E607A99007612A5 /* SceneDelegate.mm */, 13B07FB71A68108700A75B9A /* main.m */, 832F45BA2A8A6E1F0097B4E6 /* SwiftTest.swift */, 2DDEF00F1F84BF7B00DBDF73 /* Images.xcassets */, @@ -253,9 +283,10 @@ E7DB211822B2BD53005AC45F /* libReact-RCTText.a */, E7DB211A22B2BD53005AC45F /* libReact-RCTVibration.a */, E7DB212222B2BD53005AC45F /* libyoga.a */, - 4C706D402EE4AF9BE838CBA9 /* libPods-RNTester.a */, - 93A243F0D4D5C54911E811C4 /* libPods-RNTesterIntegrationTests.a */, - 2B312B0EEE90BA411618B015 /* libPods-RNTesterUnitTests.a */, + 661310D1F20AEC2BBE6B3315 /* libPods-RNTester.a */, + EE3BB11C9B61143C9D2FB455 /* libPods-RNTester (AppDelegate).a */, + 9EB7D826CA97222DB45C45F2 /* libPods-RNTesterIntegrationTests.a */, + AEE1D4AAF24CCC767374CF44 /* libPods-RNTesterUnitTests.a */, ); name = Frameworks; sourceTree = ""; @@ -289,6 +320,7 @@ 13B07F961A680F5B00A75B9A /* RNTester.app */, E7DB209F22B2BA84005AC45F /* RNTesterUnitTests.xctest */, E7DB215322B2F332005AC45F /* RNTesterIntegrationTests.xctest */, + 79B29C242E607763007612A5 /* RNTester (AppDelegate).app */, ); name = Products; sourceTree = ""; @@ -296,12 +328,14 @@ E23BD6487B06BD71F1A86914 /* Pods */ = { isa = PBXGroup; children = ( - CA59C9994B1822826D8983F0 /* Pods-RNTester.debug.xcconfig */, - 51BC9297B6C3163C14532020 /* Pods-RNTester.release.xcconfig */, - 20B55D3C33B683598D2A4424 /* Pods-RNTesterIntegrationTests.debug.xcconfig */, - B0E70A8A05E03E868F8703FE /* Pods-RNTesterIntegrationTests.release.xcconfig */, - D134EB89DD98253FCF879A47 /* Pods-RNTesterUnitTests.debug.xcconfig */, - 3FF60722627F93D8F62FA1E3 /* Pods-RNTesterUnitTests.release.xcconfig */, + 4898C175154D04F3B79AA16E /* Pods-RNTester.debug.xcconfig */, + 965E81B0114E8BBAAE82ECFE /* Pods-RNTester.release.xcconfig */, + 0526D9711E138C62F83DB24D /* Pods-RNTester (AppDelegate).debug.xcconfig */, + E805E0682241849EA44C131F /* Pods-RNTester (AppDelegate).release.xcconfig */, + CDBE6D8B81E09ABB3450CE6F /* Pods-RNTesterIntegrationTests.debug.xcconfig */, + 380278D3D58245B231221658 /* Pods-RNTesterIntegrationTests.release.xcconfig */, + FD1EE48EB00CDA91A24A7D26 /* Pods-RNTesterUnitTests.debug.xcconfig */, + 49A507087276D2F616517D75 /* Pods-RNTesterUnitTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -360,14 +394,14 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RNTester" */; buildPhases = ( - F28F13DD10D40D98C0BB7BE8 /* [CP] Check Pods Manifest.lock */, + 3A514773B43312897DF1504C /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 68CD48B71D2BCB2C007E06A9 /* Build JS Bundle */, 79E8BE2B119D4C5CCD2F04B3 /* [RN] Copy Hermes Framework */, - 17FE348EDF12252D972FFC2F /* [CP] Embed Pods Frameworks */, - DFEE284B22AD5E88BBF1026A /* [CP] Copy Pods Resources */, + 0E7F794AAD48492F9B550E71 /* [CP] Embed Pods Frameworks */, + 27B1801E9700492D164DC4B6 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -378,16 +412,38 @@ productReference = 13B07F961A680F5B00A75B9A /* RNTester.app */; productType = "com.apple.product-type.application"; }; + 79B29C0C2E607763007612A5 /* RNTester (AppDelegate) */ = { + isa = PBXNativeTarget; + buildConfigurationList = 79B29C212E607763007612A5 /* Build configuration list for PBXNativeTarget "RNTester (AppDelegate)" */; + buildPhases = ( + F98E7304147D3DF0A986F5BE /* [CP] Check Pods Manifest.lock */, + 79B29C0E2E607763007612A5 /* Sources */, + 79B29C152E607763007612A5 /* Frameworks */, + 79B29C172E607763007612A5 /* Resources */, + 79B29C1D2E607763007612A5 /* Build JS Bundle */, + 79B29C1E2E607763007612A5 /* [RN] Copy Hermes Framework */, + 4629E50970A36CF28B1B96B0 /* [CP] Embed Pods Frameworks */, + A601FBB80DB8B36BBA1AD4DF /* [CP] Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "RNTester (AppDelegate)"; + productName = "Hello World"; + productReference = 79B29C242E607763007612A5 /* RNTester (AppDelegate).app */; + productType = "com.apple.product-type.application"; + }; E7DB209E22B2BA84005AC45F /* RNTesterUnitTests */ = { isa = PBXNativeTarget; buildConfigurationList = E7DB20A622B2BA84005AC45F /* Build configuration list for PBXNativeTarget "RNTesterUnitTests" */; buildPhases = ( - B8A88048D4E22316B9E74600 /* [CP] Check Pods Manifest.lock */, + 260F178F9611C82EC1F982DA /* [CP] Check Pods Manifest.lock */, E7DB209B22B2BA84005AC45F /* Sources */, E7DB209C22B2BA84005AC45F /* Frameworks */, E7DB209D22B2BA84005AC45F /* Resources */, - FD96BE05C0CECDF7D53C7CC9 /* [CP] Embed Pods Frameworks */, - 5ECFFC3767E171859C7610A6 /* [CP] Copy Pods Resources */, + BD8D986318E0586F0321927B /* [CP] Embed Pods Frameworks */, + 41F098B2789C58EB6FACCC8D /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -403,12 +459,12 @@ isa = PBXNativeTarget; buildConfigurationList = E7DB215A22B2F332005AC45F /* Build configuration list for PBXNativeTarget "RNTesterIntegrationTests" */; buildPhases = ( - 2978D2EE0533828E5DB62B8F /* [CP] Check Pods Manifest.lock */, + 245008ED764C8470A5189A46 /* [CP] Check Pods Manifest.lock */, E7DB214F22B2F332005AC45F /* Sources */, E7DB215022B2F332005AC45F /* Frameworks */, E7DB215122B2F332005AC45F /* Resources */, - A27E74B2EEF82EC119BCB5A2 /* [CP] Embed Pods Frameworks */, - 48BF6B9FD13CB20F2C71C2A2 /* [CP] Copy Pods Resources */, + 934D27BDEB9C62F1ACE8184A /* [CP] Embed Pods Frameworks */, + CDA2832270B26F7F8290F6F6 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -455,6 +511,7 @@ projectRoot = ""; targets = ( 13B07F861A680F5B00A75B9A /* RNTester */, + 79B29C0C2E607763007612A5 /* RNTester (AppDelegate) */, E7DB209E22B2BA84005AC45F /* RNTesterUnitTests */, E7DB215222B2F332005AC45F /* RNTesterIntegrationTests */, ); @@ -474,6 +531,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 79B29C172E607763007612A5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 79B29C182E607763007612A5 /* Images.xcassets in Resources */, + 79B29C192E607763007612A5 /* LaunchScreen.storyboard in Resources */, + 79B29C1A2E607763007612A5 /* RNTesterBundle.bundle in Resources */, + 79B29C1B2E607763007612A5 /* PrivacyInfo.xcprivacy in Resources */, + 79B29C1C2E607763007612A5 /* legacy_image@2x.png in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E7DB209D22B2BA84005AC45F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -492,7 +561,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 17FE348EDF12252D972FFC2F /* [CP] Embed Pods Frameworks */ = { + 0E7F794AAD48492F9B550E71 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -500,20 +569,16 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - 2978D2EE0533828E5DB62B8F /* [CP] Check Pods Manifest.lock */ = { + 245008ED764C8470A5189A46 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -535,48 +600,101 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 48BF6B9FD13CB20F2C71C2A2 /* [CP] Copy Pods Resources */ = { + 260F178F9611C82EC1F982DA /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTesterUnitTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 5ECFFC3767E171859C7610A6 /* [CP] Copy Pods Resources */ = { + 27B1801E9700492D164DC4B6 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3A514773B43312897DF1504C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Copy Pods Resources"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 41F098B2789C58EB6FACCC8D /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; + 4629E50970A36CF28B1B96B0 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate)-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate)-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate)-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 68CD48B71D2BCB2C007E06A9 /* Build JS Bundle */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -593,7 +711,23 @@ shellPath = /bin/sh; shellScript = "set -e\n\nexport PROJECT_ROOT=\"$SRCROOT\"\nexport ENTRY_FILE=\"$SRCROOT/js/RNTesterApp.ios.js\"\nexport SOURCEMAP_FILE=../sourcemap.ios.map\n# export FORCE_BUNDLING=true \n\nWITH_ENVIRONMENT=\"../react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 79E8BE2B119D4C5CCD2F04B3 /* [RN] Copy Hermes Framework */ = { + 79B29C1D2E607763007612A5 /* Build JS Bundle */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/.xcode.env.local", + "$(SRCROOT)/.xcode.env", + ); + name = "Build JS Bundle"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "set -e\n\nexport PROJECT_ROOT=\"$SRCROOT\"\nexport ENTRY_FILE=\"$SRCROOT/js/RNTesterApp.ios.js\"\nexport SOURCEMAP_FILE=../sourcemap.ios.map\n# export FORCE_BUNDLING=true \n\nWITH_ENVIRONMENT=\"../react-native/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"../react-native/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; + }; + 79B29C1E2E607763007612A5 /* [RN] Copy Hermes Framework */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -611,111 +745,112 @@ shellPath = /bin/sh; shellScript = ". ../react-native/sdks/hermes-engine/utils/copy-hermes-xcode.sh\n"; }; - A27E74B2EEF82EC119BCB5A2 /* [CP] Embed Pods Frameworks */ = { + 79E8BE2B119D4C5CCD2F04B3 /* [RN] Copy Hermes Framework */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); inputPaths = ( ); - name = "[CP] Embed Pods Frameworks"; + name = "[RN] Copy Hermes Framework"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = ". ../react-native/sdks/hermes-engine/utils/copy-hermes-xcode.sh\n"; }; - B8A88048D4E22316B9E74600 /* [CP] Check Pods Manifest.lock */ = { + 934D27BDEB9C62F1ACE8184A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RNTesterUnitTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - DFEE284B22AD5E88BBF1026A /* [CP] Copy Pods Resources */ = { + A601FBB80DB8B36BBA1AD4DF /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-input-files.xcfilelist", - ); - inputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate)-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources-${CONFIGURATION}-output-files.xcfilelist", - ); - outputPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate)-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester/Pods-RNTester-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTester (AppDelegate)/Pods-RNTester (AppDelegate)-resources.sh\"\n"; showEnvVarsInLog = 0; }; - F28F13DD10D40D98C0BB7BE8 /* [CP] Check Pods Manifest.lock */ = { + BD8D986318E0586F0321927B /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RNTester-checkManifestLockResult.txt", + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + CDA2832270B26F7F8290F6F6 /* [CP] Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Copy Pods Resources"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterIntegrationTests/Pods-RNTesterIntegrationTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; - FD96BE05C0CECDF7D53C7CC9 /* [CP] Embed Pods Frameworks */ = { + F98E7304147D3DF0A986F5BE /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", ); - name = "[CP] Embed Pods Frameworks"; + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RNTester (AppDelegate)-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-RNTesterUnitTests/Pods-RNTesterUnitTests-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -726,6 +861,7 @@ buildActionMask = 2147483647; files = ( E62F11842A5C6584000BF1C8 /* UpdatePropertiesExampleView.mm in Sources */, + 79B29C2E2E607A99007612A5 /* SceneDelegate.mm in Sources */, E62F11832A5C6580000BF1C8 /* FlexibleSizeExampleView.mm in Sources */, 832F45BB2A8A6E1F0097B4E6 /* SwiftTest.swift in Sources */, 5C60EB1C226440DB0018C04F /* AppDelegate.mm in Sources */, @@ -733,6 +869,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 79B29C0E2E607763007612A5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 79B29C0F2E607763007612A5 /* UpdatePropertiesExampleView.mm in Sources */, + 79B29C102E607763007612A5 /* FlexibleSizeExampleView.mm in Sources */, + 79B29C112E607763007612A5 /* SwiftTest.swift in Sources */, + 79B29C132E607763007612A5 /* AppDelegate.mm in Sources */, + 79B29C142E607763007612A5 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E7DB209B22B2BA84005AC45F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -794,7 +942,7 @@ /* Begin XCBuildConfiguration section */ 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CA59C9994B1822826D8983F0 /* Pods-RNTester.debug.xcconfig */; + baseConfigurationReference = 4898C175154D04F3B79AA16E /* Pods-RNTester.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -832,7 +980,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 51BC9297B6C3163C14532020 /* Pods-RNTester.release.xcconfig */; + baseConfigurationReference = 965E81B0114E8BBAAE82ECFE /* Pods-RNTester.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -867,6 +1015,91 @@ }; name = Release; }; + 79B29C222E607763007612A5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0526D9711E138C62F83DB24D /* Pods-RNTester (AppDelegate).debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + DEVELOPMENT_TEAM = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "COCOAPODS=1", + "RNTESTER_USE_APPDELEGATE=1", + ); + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = "$(SRCROOT)/RNTester/Info-AppDelegate.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + ); + "LIBRARY_SEARCH_PATHS[arch=*]" = "$(inherited)"; + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-framework", + "\"JavaScriptCore\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTester.localDevelopment; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 79B29C232E607763007612A5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E805E0682241849EA44C131F /* Pods-RNTester (AppDelegate).release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + DEVELOPMENT_TEAM = ""; + EXCLUDED_ARCHS = ""; + GCC_PREPROCESSOR_DEFINITIONS = ( + "$(inherited)", + "COCOAPODS=1", + "RNTESTER_USE_APPDELEGATE=1", + ); + HEADER_SEARCH_PATHS = ( + "${PODS_ROOT}/Headers/Private/Yoga", + "$(inherited)", + ); + INFOPLIST_FILE = "$(SRCROOT)/RNTester/Info-AppDelegate.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; + LD_RUNPATH_SEARCH_PATHS = ( + /usr/lib/swift, + "$(inherited)", + "@executable_path/Frameworks", + ); + LIBRARY_SEARCH_PATHS = ( + "\"$(SDKROOT)/usr/lib/swift\"", + "$(inherited)", + "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)", + ); + OTHER_LDFLAGS = ( + "$(inherited)", + "-ObjC", + "-framework", + "\"JavaScriptCore\"", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.meta.RNTester.localDevelopment; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; 83CBBA201A601CBA00E9B192 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -943,7 +1176,10 @@ IPHONEOS_DEPLOYMENT_TARGET = 15.1; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; - OTHER_CFLAGS = "$(inherited)"; + OTHER_CFLAGS = ( + "$(inherited)", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); OTHER_CPLUSPLUSFLAGS = ( "$(OTHER_CFLAGS)", "-DFOLLY_NO_CONFIG", @@ -951,6 +1187,7 @@ "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", + "-DRCT_REMOVE_LEGACY_ARCH=1", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1036,7 +1273,10 @@ ); IPHONEOS_DEPLOYMENT_TARGET = 15.1; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_CFLAGS = "$(inherited)"; + OTHER_CFLAGS = ( + "$(inherited)", + "-DRCT_REMOVE_LEGACY_ARCH=1", + ); OTHER_CPLUSPLUSFLAGS = ( "$(OTHER_CFLAGS)", "-DFOLLY_NO_CONFIG", @@ -1044,6 +1284,7 @@ "-DFOLLY_USE_LIBCPP=1", "-DFOLLY_CFG_NO_COROUTINES=1", "-DFOLLY_HAVE_CLOCK_GETTIME=1", + "-DRCT_REMOVE_LEGACY_ARCH=1", ); OTHER_LDFLAGS = ( "-ObjC", @@ -1063,7 +1304,7 @@ }; E7DB20A722B2BA84005AC45F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D134EB89DD98253FCF879A47 /* Pods-RNTesterUnitTests.debug.xcconfig */; + baseConfigurationReference = FD1EE48EB00CDA91A24A7D26 /* Pods-RNTesterUnitTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; @@ -1101,7 +1342,7 @@ }; E7DB20A822B2BA84005AC45F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3FF60722627F93D8F62FA1E3 /* Pods-RNTesterUnitTests.release.xcconfig */; + baseConfigurationReference = 49A507087276D2F616517D75 /* Pods-RNTesterUnitTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_ANALYZER_NONNULL = YES; @@ -1139,7 +1380,7 @@ }; E7DB215B22B2F332005AC45F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 20B55D3C33B683598D2A4424 /* Pods-RNTesterIntegrationTests.debug.xcconfig */; + baseConfigurationReference = CDBE6D8B81E09ABB3450CE6F /* Pods-RNTesterIntegrationTests.debug.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1178,7 +1419,7 @@ }; E7DB215C22B2F332005AC45F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B0E70A8A05E03E868F8703FE /* Pods-RNTesterIntegrationTests.release.xcconfig */; + baseConfigurationReference = 380278D3D58245B231221658 /* Pods-RNTesterIntegrationTests.release.xcconfig */; buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1223,6 +1464,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 79B29C212E607763007612A5 /* Build configuration list for PBXNativeTarget "RNTester (AppDelegate)" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 79B29C222E607763007612A5 /* Debug */, + 79B29C232E607763007612A5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "RNTesterPods" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/packages/rn-tester/js/examples/Dimensions/DimensionsExample.js b/packages/rn-tester/js/examples/Dimensions/DimensionsExample.js index ccc067bffec6..c469a2c0c5e0 100644 --- a/packages/rn-tester/js/examples/Dimensions/DimensionsExample.js +++ b/packages/rn-tester/js/examples/Dimensions/DimensionsExample.js @@ -12,7 +12,7 @@ import type {RNTesterModuleExample} from '../../types/RNTesterTypes'; import RNTesterText from '../../components/RNTesterText'; import React, {useEffect, useState} from 'react'; -import {Dimensions, useWindowDimensions} from 'react-native'; +import {Button, Dimensions, View, useWindowDimensions} from 'react-native'; type Props = {dim: string}; @@ -39,6 +39,22 @@ const DimensionsViaHook = () => { ); }; +const DimensionsViaCall = ({dim}: Props) => { + const [info, setInfo] = useState(() => Dimensions.get(dim)); + return ( + +