1aa3bb5e3SBartłomiej Klocekrequire File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") 2aa3bb5e3SBartłomiej Klocekrequire File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") 3aa3bb5e3SBartłomiej Klocekrequire File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules") 4aa3bb5e3SBartłomiej Klocek 5aa3bb5e3SBartłomiej Klocekrequire 'json' 6aa3bb5e3SBartłomiej Klocekpodfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {} 7aa3bb5e3SBartłomiej Klocek 884f418d7SKudo Chienprepare_react_native_project! 984f418d7SKudo Chien 10441852afSKudo Chien# If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 11441852afSKudo Chien# because `react-native-flipper` depends on (FlipperKit,...) that will be excluded 12441852afSKudo Chien# 13441852afSKudo Chien# To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` 14441852afSKudo Chien# ```js 15441852afSKudo Chien# module.exports = { 16441852afSKudo Chien# dependencies: { 17441852afSKudo Chien# ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 18441852afSKudo Chien# ``` 1984f418d7SKudo Chienflipper_config = ENV['NO_FLIPPER'] == "1" || ENV['CI'] ? FlipperConfiguration.disabled : FlipperConfiguration.enabled 2084f418d7SKudo Chien 21c88b85cfSTomasz Sapetaplatform :ios, podfile_properties['ios.deploymentTarget'] || '13.0' 22aa3bb5e3SBartłomiej Klocekinstall! 'cocoapods', 23aa3bb5e3SBartłomiej Klocek :deterministic_uuids => false 24aa3bb5e3SBartłomiej Klocek 25aa3bb5e3SBartłomiej Klocektarget 'NativeTests' do 26aa3bb5e3SBartłomiej Klocek # add this manually, because it has UITests too 27aa3bb5e3SBartłomiej Klocek pod 'expo-dev-menu', path: '../../../packages/expo-dev-menu', :testspecs => ['Tests', 'UITests'] 28aa3bb5e3SBartłomiej Klocek 29aa3bb5e3SBartłomiej Klocek use_expo_modules_tests! 30aa3bb5e3SBartłomiej Klocek 31aa3bb5e3SBartłomiej Klocek pod 'ExpoModulesTestCore', :path => "../../../packages/expo-modules-test-core/ios" 32aa3bb5e3SBartłomiej Klocek pod 'Nimble', :podspec => './../../../ios/Nimble.podspec' 33aa3bb5e3SBartłomiej Klocek 34aa3bb5e3SBartłomiej Klocek config = use_native_modules! 35aa3bb5e3SBartłomiej Klocek 36aa3bb5e3SBartłomiej Klocek use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] 37aa3bb5e3SBartłomiej Klocek 38aa3bb5e3SBartłomiej Klocek # Flags change depending on the env values. 39aa3bb5e3SBartłomiej Klocek flags = get_default_flags() 40aa3bb5e3SBartłomiej Klocek 41aa3bb5e3SBartłomiej Klocek use_react_native!( 42aa3bb5e3SBartłomiej Klocek :path => config[:reactNativePath], 43*ba115a22SGabriel Donadel Dall'Agnol :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', 44aa3bb5e3SBartłomiej Klocek :fabric_enabled => flags[:fabric_enabled], 45aa3bb5e3SBartłomiej Klocek # An absolute path to your application root. 4622b45c56SKudo Chien :app_path => "#{Pod::Config.instance.installation_root}/..", 4722b45c56SKudo Chien # 4822b45c56SKudo Chien # Uncomment to opt-in to using Flipper 4922b45c56SKudo Chien # Note that if you have use_frameworks! enabled, Flipper will not work 5084f418d7SKudo Chien # :flipper_configuration => flipper_config, 51aa3bb5e3SBartłomiej Klocek ) 52aa3bb5e3SBartłomiej Klocek 53aa3bb5e3SBartłomiej Klocek post_install do |installer| 5422b45c56SKudo Chien react_native_post_install( 5522b45c56SKudo Chien installer, 5684f418d7SKudo Chien config[:reactNativePath], 5722b45c56SKudo Chien # Set `mac_catalyst_enabled` to `true` in order to apply patches 5822b45c56SKudo Chien # necessary for Mac Catalyst builds 5922b45c56SKudo Chien :mac_catalyst_enabled => false 6022b45c56SKudo Chien ) 61aa3bb5e3SBartłomiej Klocek __apply_Xcode_12_5_M1_post_install_workaround(installer) 62aa3bb5e3SBartłomiej Klocek end 63aa3bb5e3SBartłomiej Klocek 64aa3bb5e3SBartłomiej Klocek post_integrate do |installer| 65aa3bb5e3SBartłomiej Klocek begin 66aa3bb5e3SBartłomiej Klocek expo_patch_react_imports!(installer) 67aa3bb5e3SBartłomiej Klocek rescue => e 68aa3bb5e3SBartłomiej Klocek Pod::UI.warn e 69aa3bb5e3SBartłomiej Klocek end 70aa3bb5e3SBartłomiej Klocek end 71aa3bb5e3SBartłomiej Klocek 72aa3bb5e3SBartłomiej Klocekend 73