@@ -10,79 +10,33 @@ project 'Runner', {
1010 'Release' => :release ,
1111}
1212
13- def parse_KV_file ( file , separator = '=' )
14- file_abs_path = File . expand_path ( file )
15- if ! File . exists? file_abs_path
16- return [ ] ;
13+ def flutter_root
14+ generated_xcode_build_settings_path = File . expand_path ( File . join ( '..' , 'Flutter' , 'Generated.xcconfig' ) , __FILE__ )
15+ unless File . exist? ( generated_xcode_build_settings_path )
16+ raise " #{ generated_xcode_build_settings_path } must exist. If you're running pod install manually, make sure flutter pub get is executed first"
1717 end
18- generated_key_values = { }
19- skip_line_start_symbols = [ "#" , "/" ]
20- File . foreach ( file_abs_path ) do |line |
21- next if skip_line_start_symbols . any? { |symbol | line =~ /^\s *#{ symbol } / }
22- plugin = line . split ( pattern = separator )
23- if plugin . length == 2
24- podname = plugin [ 0 ] . strip ( )
25- path = plugin [ 1 ] . strip ( )
26- podpath = File . expand_path ( "#{ path } " , file_abs_path )
27- generated_key_values [ podname ] = podpath
28- else
29- puts "Invalid plugin specification: #{ line } "
30- end
18+
19+ File . foreach ( generated_xcode_build_settings_path ) do |line |
20+ matches = line . match ( /FLUTTER_ROOT\= (.*)/ )
21+ return matches [ 1 ] . strip if matches
3122 end
32- generated_key_values
23+ raise "FLUTTER_ROOT not found in #{ generated_xcode_build_settings_path } . Try deleting Generated.xcconfig, then run flutter pub get"
3324end
3425
35- target 'Runner' do
36- # Flutter Pod
37- use_frameworks!
38-
39- copied_flutter_dir = File . join ( __dir__ , 'Flutter' )
40- copied_framework_path = File . join ( copied_flutter_dir , 'Flutter.framework' )
41- copied_podspec_path = File . join ( copied_flutter_dir , 'Flutter.podspec' )
42- unless File . exist? ( copied_framework_path ) && File . exist? ( copied_podspec_path )
43- # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
44- # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
45- # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
46-
47- generated_xcode_build_settings_path = File . join ( copied_flutter_dir , 'Generated.xcconfig' )
48- unless File . exist? ( generated_xcode_build_settings_path )
49- raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
50- end
51- generated_xcode_build_settings = parse_KV_file ( generated_xcode_build_settings_path )
52- cached_framework_dir = generated_xcode_build_settings [ 'FLUTTER_FRAMEWORK_DIR' ] ;
53-
54- unless File . exist? ( copied_framework_path )
55- FileUtils . cp_r ( File . join ( cached_framework_dir , 'Flutter.framework' ) , copied_flutter_dir )
56- end
57- unless File . exist? ( copied_podspec_path )
58- FileUtils . cp ( File . join ( cached_framework_dir , 'Flutter.podspec' ) , copied_flutter_dir )
59- end
60- end
26+ require File . expand_path ( File . join ( 'packages' , 'flutter_tools' , 'bin' , 'podhelper' ) , flutter_root )
6127
62- # Keep pod path relative so it can be checked into Podfile.lock.
63- pod 'Flutter' , :path => 'Flutter'
28+ flutter_ios_podfile_setup
6429
65- # Plugin Pods
30+ target 'Runner' do
31+ use_frameworks!
32+ use_modular_headers!
6633
67- # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
68- # referring to absolute paths on developers' machines.
69- system ( 'rm -rf .symlinks' )
70- system ( 'mkdir -p .symlinks/plugins' )
71- plugin_pods = parse_KV_file ( '../.flutter-plugins' )
72- plugin_pods . each do |name , path |
73- symlink = File . join ( '.symlinks' , 'plugins' , name )
74- File . symlink ( path , symlink )
75- pod name , :path => File . join ( symlink , 'ios' )
76- end
34+ flutter_install_all_ios_pods File . dirname ( File . realpath ( __FILE__ ) )
7735end
7836
79- # Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system.
80- install! 'cocoapods' , :disable_input_output_paths => true
81-
8237post_install do |installer |
8338 installer . pods_project . targets . each do |target |
84- target . build_configurations . each do |config |
85- config . build_settings [ 'ENABLE_BITCODE' ] = 'NO'
86- end
39+ flutter_additional_ios_build_settings ( target )
8740 end
8841end
42+
0 commit comments