From a1010f72f236d595c3cb3b33067a04ca883e20b2 Mon Sep 17 00:00:00 2001 From: zarzet Date: Sat, 4 Apr 2026 15:49:34 +0700 Subject: [PATCH] fix: patch device_info_plus iOS build for older Xcode SDKs --- ios/Podfile | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/ios/Podfile b/ios/Podfile index ff76451..66a02c5 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -27,6 +27,37 @@ require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelpe flutter_ios_podfile_setup +def patch_device_info_plus_vision_selector + plugin_file = File.join( + __dir__, + '.symlinks', + 'plugins', + 'device_info_plus', + 'ios', + 'device_info_plus', + 'Sources', + 'device_info_plus', + 'FPPDeviceInfoPlusPlugin.m' + ) + return unless File.exist?(plugin_file) + + source = File.read(plugin_file) + return if source.include?('FPPDeviceInfoPlusVisionCompat') + + marker = "#import \n" + declaration = <<~OBJC + + // Older Xcode SDKs do not declare this selector yet, but device_info_plus + // only calls it behind an availability check. + @interface NSProcessInfo (FPPDeviceInfoPlusVisionCompat) + - (BOOL)isiOSAppOnVision; + @end + OBJC + + patched = source.sub(marker, "#{marker}#{declaration}\n") + File.write(plugin_file, patched) if patched != source +end + target 'Runner' do use_frameworks! use_modular_headers! @@ -42,6 +73,8 @@ target 'RunnerTests' do end post_install do |installer| + patch_device_info_plus_vision_selector + installer.pods_project.targets.each do |target| flutter_additional_ios_build_settings(target) target.build_configurations.each do |config|