# Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( "react-native/scripts/react_native_pods.rb", {paths: [process.argv[1]]}, )', __dir__]).strip require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' 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, '13.0' 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 # # 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 flipper_config = FlipperConfiguration.disabled; linkage = ENV['USE_FRAMEWORKS'] if linkage != nil Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! :linkage => linkage.to_sym end #权限处理 setup_permissions([ 'AppTrackingTransparency', #访问设备的广告标识符 # 'BluetoothPeripheral', #访问蓝牙 # 'Calendars', #访问日历 'Camera', #访问相机 # 'Contacts', #访问联系人 # 'FaceID', #访问FaceID 'LocationAccuracy', #访问高精度定位 # 'LocationAlways', #始终访问位置信息 'LocationWhenInUse', #在使用中访问位置信息 # 'MediaLibrary', #使用媒体库 # 'Microphone', #使用麦克风 # 'Motion', #运动权限 'Notifications', #使用通知 'PhotoLibrary', #使用照片库 'PhotoLibraryAddOnly', #添加照片 # 'Reminders', # 'SpeechRecognition', # 'StoreKit' ]) target 'Strides' do config = use_native_modules! # Flags change depending on the env values. flags = get_default_flags() # 谷歌地图服务 pod 'Google-Maps-iOS-Utils', :git => 'https://github.com/Simon-TechForm/google-maps-ios-utils.git', :branch => 'feat/support-apple-silicon' rn_maps_path = '../node_modules/react-native-maps' pod 'react-native-google-maps', :path => rn_maps_path # pod 'GoogleMaps', '3.5.0' # pod 'Google-Maps-iOS-Utils', '2.1.0' # 谷歌通知启用 # pod 'FirebaseAuth' pod 'FirebaseCore' pod 'FirebaseAnalytics' pod 'FirebaseMessaging' # pod 'FirebaseFirestore' pod 'GoogleUtilities', :modular_headers => true use_react_native!( :path => config[:reactNativePath], # Hermes is now enabled by default. Disable by setting this flag to false. :hermes_enabled => flags[:hermes_enabled], :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}/.." ) target 'StridesTests' do inherit! :complete # Pods for testing end # Enables Flipper. # # Note that if you have use_frameworks! enabled, Flipper will not work and # you should disable the next line. # use_flipper!() # use_flipper!({'Flipper' => '0.182.0', 'Flipper-Folly' => '2.6.10', 'Flipper-RSocket' => '1.3.1'}) #post_install do |installer| # react_native_post_install(installer) #end #--------------------修复iOS 16.4新建RN0.64无法运行-------------------------- # post_install do |installer| # react_native_post_install(installer) # fix_library_search_paths(installer) # installer.pods_project.build_configurations.each do |config| # config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" # end #end post_install do |installer| react_native_post_install( installer, config[:reactNativePath], :mac_catalyst_enabled => false ) fix_library_search_paths(installer) installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "16.4" end installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" #config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = "16.4" end end __apply_Xcode_12_5_M1_post_install_workaround(installer) # 修复iOS 18编译问题 bitcode_strip_path = `xcrun --find bitcode_strip`.chop! def strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path) framework_path = File.join(Dir.pwd, framework_relative_path) command = "#{bitcode_strip_path} #{framework_path} -r -o #{framework_path}" puts "Stripping bitcode: #{command}" system(command) end framework_paths = [ #"Pods/LogRocket/LogRocket.xcframework/ios-arm64/LogRocket.framework/LogRocket", "Pods/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework/hermes", "Pods/hermes-engine/destroot/Library/Frameworks/macosx/hermes.framework/Versions/Current/hermes", "Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64/hermes.framework/hermes", "Pods/hermes-engine/destroot/Library/Frameworks/universal/hermes.xcframework/ios-arm64_x86_64-maccatalyst/hermes.framework/hermes" ] framework_paths.each do |framework_relative_path| strip_bitcode_from_framework(bitcode_strip_path, framework_relative_path) end end end def fix_library_search_paths(installer) def fix_config(config) lib_search_paths = config.build_settings["LIBRARY_SEARCH_PATHS"] if lib_search_paths if lib_search_paths.include?("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)") || lib_search_paths.include?("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"") # $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME) causes problem with Xcode 12.5 + arm64 (Apple M1) # since the libraries there are only built for x86_64 and i386. lib_search_paths.delete("$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)") lib_search_paths.delete("\"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)\"") if !(lib_search_paths.include?("$(SDKROOT)/usr/lib/swift") || lib_search_paths.include?("\"$(SDKROOT)/usr/lib/swift\"")) # however, $(SDKROOT)/usr/lib/swift is required, at least if user is not running CocoaPods 1.11 lib_search_paths.insert(0, "$(SDKROOT)/usr/lib/swift") end end end end end # projects = installer.aggregate_targets # .map{ |t| t.user_project } # .uniq{ |p| p.path } # .push(installer.pods_project) # projects.each do |project| # project.build_configurations.each do |config| # fix_config(config) # end # project.native_targets.each do |target| # target.build_configurations.each do |config| # fix_config(config) # end # end # project.save() # end