# frozen_string_literal: true # setup instructions from https://www.npmjs.com/package/react-native-permissions def node_require( script ) # Resolve script with node to allow for hoisting require Pod::Executable.execute_command( "node", [ "-p", "require.resolve('#{script}', {paths: [process.argv[1]]})", __dir__ ] ).strip end node_require( "react-native/scripts/react_native_pods.rb" ) node_require( "react-native-permissions/scripts/setup.rb" ) platform :ios, min_ios_version_supported prepare_react_native_project! # ⬇️ uncomment wanted permissions setup_permissions( [ # 'AppTrackingTransparency', # 'BluetoothPeripheral', # 'Calendars', "Camera", # 'Contacts', # 'FaceID', "LocationAccuracy", "LocationAlways", "LocationWhenInUse", "MediaLibrary", "Microphone", # 'Motion', # 'Notifications', "PhotoLibraryAddOnly", "PhotoLibrary" # 'Reminders', # 'Siri', # 'SpeechRecognition', # 'StoreKit', ] ) # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. # because `react-native-flipper` depends on (FlipperKit,...) that will be excluded # # To fix this you can also exclude `react-native-flipper` using a `react-native.config.js` # ```js # module.exports = { # dependencies: { # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), # ``` # flipper_config = ENV["NO_FLIPPER"] == "1" ? FlipperConfiguration.disabled : FlipperConfiguration.enabled linkage = ENV.fetch( "USE_FRAMEWORKS", nil ) unless linkage.nil? Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! linkage: linkage.to_sym end target "iNaturalistReactNative" do config = use_native_modules! use_react_native!( path: config[:reactNativePath], # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. # :flipper_configuration => flipper_config, # An absolute path to your application root. app_path: "#{Pod::Config.instance.installation_root}/.." ) pod "React-jsi", path: "../node_modules/react-native/ReactCommon/jsi", modular_headers: true pod "react-native-config", path: "../node_modules/react-native-config" pod "RNVectorIcons", path: "../node_modules/react-native-vector-icons" envfiles = { "Debug" => "$(PODS_ROOT)/../../.env.staging", "Release" => "$(PODS_ROOT)/../../.env" }.freeze post_install do | installer | # use different .env files for staging and production # https://github.com/luggit/react-native-config#ios-1 installer.pods_project.targets.each do | target | target.build_configurations.each do | build_config | # the following two lines allow the app to build with XCode 14.3 RC # https://stackoverflow.com/questions/72729591/fbreactnativespec-h-error-after-upgrading-from-0-68-x-to-0-69-0/74487309#74487309 build_config.build_settings["SWIFT_VERSION"] = "5.2" build_config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "12.4" if target.name == "react-native-config" build_config.build_settings["ENVFILE"] = envfiles[build_config.name] end end end # code below appears to be necessary for building pods with XCode 14: https://github.com/facebook/react-native/issues/34673#issuecomment-1252114414 # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202 react_native_post_install( installer, config[:reactNativePath], mac_catalyst_enabled: false ) # Add these lines for Xcode 14 builds installer.generated_projects.each do | project | project.targets.each do | target | target.build_configurations.each do | build_config | build_config.build_settings["DEVELOPMENT_TEAM"] = "iNaturalist, LLC" end end end # End of added lines # https://github.com/Agontuk/react-native-geolocation-service/issues/287#issuecomment-980772489 installer.pods_project.targets.each do | target | target.build_configurations.each do | build_config | build_config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" # code below appears to be necessary for building pods with XCode 14: # https://github.com/facebook/react-native/issues/34673#issuecomment-1252114414 build_config.build_settings["DEVELOPMENT_TEAM"] = "iNaturalist, LLC" build_config.build_settings["APPLICATION_EXTENSION_API_ONLY"] = "NO" build_config.build_settings["IPHONEOS_DEPLOYMENT_TARGET"] = "$(inherited)" end end installer.target_installation_results.pod_target_installation_results.each_value do | inst_result | inst_result.native_target.build_configurations.each do | build_config | # For third party modules who have React-bridging dependency to search correct headers build_config.build_settings["HEADER_SEARCH_PATHS"] ||= "$(inherited) " build_config.build_settings["HEADER_SEARCH_PATHS"] += '"$(PODS_ROOT)/Headers/Private/React-bridging/react/bridging" ' build_config.build_settings["HEADER_SEARCH_PATHS"] += '"$(PODS_CONFIGURATION_BUILD_DIR)/React-bridging/react_bridging.framework/Headers" ' end end # react_native_post_install(installer) `sed -i -e $'s/__IPHONE_10_0/__IPHONE_12_0/' Pods/RCT-Folly/folly/portability/Time.h` end end target "iNaturalistReactNative-ShareExtension" do use_react_native!( # to enable hermes on iOS, change `false` to `true` and then install pods hermes_enabled: true ) pod "RNShareMenu", path: "../node_modules/react-native-share-menu" # Manually link packages here to keep your extension bundle size minimal end