xref: /expo/apps/bare-expo/ios/Podfile (revision dfd15ebd)
1install! 'cocoapods',
2         :generate_multiple_pod_projects => true,
3         :incremental_installation => true,
4         :deterministic_uuids => false
5source 'https://cdn.cocoapods.org/'
6platform :ios, '13.0'
7inhibit_all_warnings!
8
9# Import the auto-linking packages
10require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods")
11require File.join(File.dirname(`node --print "require.resolve('@react-native-community/cli-platform-ios/package.json')"`), "native_modules")
12require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking")
13
14require 'json'
15podfile_properties = JSON.parse(File.read('./Podfile.properties.json')) rescue {}
16
17abstract_target 'BareExpoMain' do
18  pod 'expo-dev-menu', path: '../../../packages/expo-dev-menu', :testspecs => ['Tests', 'UITests']
19
20  use_expo_modules!(
21    tests: [
22      'expo-dev-menu-interface',
23      'expo-dev-launcher',
24    ],
25  )
26
27  # Flags change depending on the env values.
28  flags = get_default_flags()
29
30  config = use_native_modules!
31
32  # Fix Google Sign-in and Flipper
33  post_install do |installer|
34    # `installer.pods_project` might be nil for `incremental_installation: true` and no new project generated
35    if installer.pods_project
36      react_native_post_install(
37        installer,
38        # Set `mac_catalyst_enabled` to `true` in order to apply patches
39        # necessary for Mac Catalyst builds
40        :mac_catalyst_enabled => false
41      )
42      __apply_Xcode_12_5_M1_post_install_workaround(installer)
43    end
44
45    installer.target_installation_results.pod_target_installation_results.each do |pod_name, target_installation_result|
46      target_installation_result.native_target.build_configurations.each do |config|
47        config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
48      end
49    end
50
51    # This is necessary for Xcode 14, because it signs resource bundles by default
52    # when building for devices.
53    installer.target_installation_results.pod_target_installation_results
54      .each do |pod_name, target_installation_result|
55      target_installation_result.resource_bundle_targets.each do |resource_bundle_target|
56        resource_bundle_target.build_configurations.each do |config|
57          config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO'
58        end
59      end
60    end
61  end
62
63  post_integrate do |installer|
64    begin
65      expo_patch_react_imports!(installer)
66    rescue => e
67      Pod::UI.warn e
68    end
69  end
70
71  target 'BareExpo' do
72    use_react_native!(
73      :path => config[:reactNativePath],
74      :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',
75      :fabric_enabled => flags[:fabric_enabled],
76      # An absolute path to your application root.
77      :app_path => "#{Pod::Config.instance.installation_root}/..",
78      #
79      # Uncomment to opt-in to using Flipper
80      # Note that if you have use_frameworks! enabled, Flipper will not work
81      # :flipper_configuration => !ENV['CI'] ? FlipperConfiguration.enabled : FlipperConfiguration.disabled,
82    )
83  end
84
85  target 'BareExpoDetox' do
86    use_react_native!(
87      :path => config[:reactNativePath],
88      :hermes_enabled => podfile_properties['expo.jsEngine'] == 'hermes',
89      :fabric_enabled => flags[:fabric_enabled],
90      # An absolute path to your application root.
91      :app_path => "#{Pod::Config.instance.installation_root}/..",
92      :flipper_configuration => FlipperConfiguration.disabled,
93    )
94  end
95
96  target 'BareExpoTests' do
97    inherit! :search_paths
98
99    pod 'Nimble', :podspec => './../../../ios/Nimble.podspec'
100  end
101end
102