mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00

Enables the CocoaPods-based plugin workflow for macOS. This allows a macOS project to automatically fetch and add native plugin implementations via CocoaPods for anything in pubspec.yaml, as is done on iOS.
72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
# Uncomment this line to define a global platform for your project
|
|
# platform :ios, '9.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 parse_KV_file(file, separator='=')
|
|
file_abs_path = File.expand_path(file)
|
|
if !File.exists? file_abs_path
|
|
return [];
|
|
end
|
|
pods_ary = []
|
|
skip_line_start_symbols = ["#", "/"]
|
|
File.foreach(file_abs_path) { |line|
|
|
next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ }
|
|
plugin = line.split(pattern=separator)
|
|
if plugin.length == 2
|
|
podname = plugin[0].strip()
|
|
path = plugin[1].strip()
|
|
podpath = File.expand_path("#{path}", file_abs_path)
|
|
pods_ary.push({:name => podname, :path => podpath});
|
|
else
|
|
puts "Invalid plugin specification: #{line}"
|
|
end
|
|
}
|
|
return pods_ary
|
|
end
|
|
|
|
target 'Runner' do
|
|
use_frameworks!
|
|
|
|
# Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
|
|
# referring to absolute paths on developers' machines.
|
|
system('rm -rf .symlinks')
|
|
system('mkdir -p .symlinks/plugins')
|
|
|
|
# Flutter Pods
|
|
generated_xcode_build_settings = parse_KV_file('./Flutter/Generated.xcconfig')
|
|
if generated_xcode_build_settings.empty?
|
|
puts "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first."
|
|
end
|
|
generated_xcode_build_settings.map { |p|
|
|
if p[:name] == 'FLUTTER_FRAMEWORK_DIR'
|
|
symlink = File.join('.symlinks', 'flutter')
|
|
File.symlink(File.dirname(p[:path]), symlink)
|
|
pod 'Flutter', :path => File.join(symlink, File.basename(p[:path]))
|
|
end
|
|
}
|
|
|
|
# Plugin Pods
|
|
plugin_pods = parse_KV_file('../.flutter-plugins')
|
|
plugin_pods.map { |p|
|
|
symlink = File.join('.symlinks', 'plugins', p[:name])
|
|
File.symlink(p[:path], symlink)
|
|
pod p[:name], :path => File.join(symlink, 'ios')
|
|
}
|
|
end
|
|
|
|
post_install do |installer|
|
|
installer.pods_project.targets.each do |target|
|
|
target.build_configurations.each do |config|
|
|
config.build_settings['ENABLE_BITCODE'] = 'NO'
|
|
end
|
|
end
|
|
end
|