Created
January 9, 2024 11:51
-
-
Save AlexV525/e41de67c4f4719aef552446e186f57f1 to your computer and use it in GitHub Desktop.
Make your projects compatible with Xcode 14 & 15 at the same time
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
platform :ios, '12.0' | |
# CocoaPods analytics sends network stats synchronously affecting flutter build latency. | |
ENV['COCOAPODS_DISABLE_STATS'] = 'true' | |
project 'Runner', { | |
'Debug' => :debug, | |
'Profile' => :release, | |
'Release' => :release, | |
} | |
def flutter_root | |
generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) | |
unless File.exist?(generated_xcode_build_settings_path) | |
raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" | |
end | |
File.foreach(generated_xcode_build_settings_path) do |line| | |
matches = line.match(/FLUTTER_ROOT\=(.*)/) | |
return matches[1].strip if matches | |
end | |
raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" | |
end | |
require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) | |
flutter_ios_podfile_setup | |
target 'Runner' do | |
use_frameworks! | |
use_modular_headers! | |
flutter_install_all_ios_pods(File.dirname(File.realpath(__FILE__))) | |
end | |
post_install do |installer| | |
xcode_version = `xcodebuild -version | grep 'Xcode' | awk '{print $2}'` | |
installer.pods_project.targets.each do |target| | |
flutter_additional_ios_build_settings(target) | |
target.build_configurations.each do |config| | |
# Determine the Xcode version and mod the toolchain accordingly. | |
if xcode_version.strip >= '15.0' | |
xcconfig_path = config.base_configuration_reference.real_path | |
xcconfig = File.read(xcconfig_path) | |
xcconfig_mod = xcconfig.gsub(/DT_TOOLCHAIN_DIR/, "TOOLCHAIN_DIR") | |
File.open(xcconfig_path, "w") { |file| file << xcconfig_mod } | |
end | |
config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = 'i386 arm64' | |
end | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment