diff options
Diffstat (limited to 'ios/Podfile')
-rw-r--r-- | ios/Podfile | 108 |
1 files changed, 56 insertions, 52 deletions
diff --git a/ios/Podfile b/ios/Podfile index 2e80c1455..70072e51d 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,87 +1,91 @@ -require_relative '../node_modules/react-native/scripts/react_native_pods' -require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' +require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") +require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") +require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules") + +require 'json' +podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} + +ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' + +platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0' +install! 'cocoapods', + :deterministic_uuids => false -platform :ios, min_ios_version_supported prepare_react_native_project! # 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 +# because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this, +# you can also exclude `react-native-flipper` in `react-native.config.js` # -# 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['USE_FRAMEWORKS'] -if linkage != nil - Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green - use_frameworks! :linkage => linkage.to_sym +flipper_config = FlipperConfiguration.disabled +if ENV['NO_FLIPPER'] == "1" || ENV['CI'] then + # Explicitly disabled through environment variables + flipper_config = FlipperConfiguration.disabled +elsif podfile_properties.key?('ios.flipper') then + # Configure Flipper in Podfile.properties.json + if podfile_properties['ios.flipper'] == 'true' then + flipper_config = FlipperConfiguration.enabled(["Debug", "Release"]) + elsif ppodfile_properties['ios.flipper'] != 'false' then + flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] }) + end end -target 'app' do - pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' + + +target 'bluesky' do + use_expo_modules! config = use_native_modules! + use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] + use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] + # Flags change depending on the env values. flags = get_default_flags() use_react_native!( :path => config[:reactNativePath], - # Hermes is now enabled by default. Disable by setting this flag to false. - # Upcoming versions of React Native may rely on get_default_flags(), but - # we make it explicit here to aid in the React Native upgrade process. - :hermes_enabled => flags[:hermes_enabled], + :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', :fabric_enabled => flags[:fabric_enabled], - # 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}/.." + :app_path => "#{Pod::Config.instance.installation_root}/..", + # Note that if you have use_frameworks! enabled, Flipper will not work if enabled + :flipper_configuration => flipper_config ) - # react-native-permissions settings - permissions_path = '../node_modules/react-native-permissions/ios' - pod 'Permission-Camera', :path => "#{permissions_path}/Camera" - pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary" - - target 'appTests' do - inherit! :complete - # Pods for testing - end - post_install do |installer| - # Temporary fix until CocoaPods 1.12.0 is released. - # https://github.com/CocoaPods/CocoaPods/issues/11402#issuecomment-1201464693 - installer.pods_project.targets.each do |target| - if target.respond_to?(:product_type) and target.product_type == "com.apple.product-type.bundle" - target.build_configurations.each do |config| - config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' - end - end - end - - react_native_post_install( installer, + config[:reactNativePath], # Set `mac_catalyst_enabled` to `true` in order to apply patches # necessary for Mac Catalyst builds :mac_catalyst_enabled => false ) __apply_Xcode_12_5_M1_post_install_workaround(installer) - # iOS fix - installer.pods_project.build_configurations.each do |config| - config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" - end - installer.pods_project.targets.each do |target| - target.build_configurations.each do |config| - config.build_settings['ONLY_ACTIVE_ARCH'] = 'YES' + # This is necessary for Xcode 14, because it signs resource bundles by default + # when building for devices. + installer.target_installation_results.pod_target_installation_results + .each do |pod_name, target_installation_result| + target_installation_result.resource_bundle_targets.each do |resource_bundle_target| + resource_bundle_target.build_configurations.each do |config| + config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' + end end end end -end + + post_integrate do |installer| + begin + expo_patch_react_imports!(installer) + rescue => e + Pod::UI.warn e + end + end +end \ No newline at end of file |