@@ -10,78 +10,32 @@ 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
26+ require File . expand_path ( File . join ( 'packages' , 'flutter_tools' , 'bin' , 'podhelper' ) , flutter_root )
27+
28+ flutter_ios_podfile_setup
29+
3530target 'Runner' do
3631 use_frameworks!
3732 use_modular_headers!
3833
39- # Flutter Pod
40-
41- copied_flutter_dir = File . join ( __dir__ , 'Flutter' )
42- copied_framework_path = File . join ( copied_flutter_dir , 'Flutter.framework' )
43- copied_podspec_path = File . join ( copied_flutter_dir , 'Flutter.podspec' )
44- unless File . exist? ( copied_framework_path ) && File . exist? ( copied_podspec_path )
45- # Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.
46- # That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
47- # CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.
48-
49- generated_xcode_build_settings_path = File . join ( copied_flutter_dir , 'Generated.xcconfig' )
50- unless File . exist? ( generated_xcode_build_settings_path )
51- raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
52- end
53- generated_xcode_build_settings = parse_KV_file ( generated_xcode_build_settings_path )
54- cached_framework_dir = generated_xcode_build_settings [ 'FLUTTER_FRAMEWORK_DIR' ] ;
55-
56- unless File . exist? ( copied_framework_path )
57- FileUtils . cp_r ( File . join ( cached_framework_dir , 'Flutter.framework' ) , copied_flutter_dir )
58- end
59- unless File . exist? ( copied_podspec_path )
60- FileUtils . cp ( File . join ( cached_framework_dir , 'Flutter.podspec' ) , copied_flutter_dir )
61- end
62- end
63-
64- # Keep pod path relative so it can be checked into Podfile.lock.
65- pod 'Flutter' , :path => 'Flutter'
66-
67- # Plugin Pods
68-
69- # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock
70- # referring to absolute paths on developers' machines.
71- system ( 'rm -rf .symlinks' )
72- system ( 'mkdir -p .symlinks/plugins' )
73- plugin_pods = parse_KV_file ( '../.flutter-plugins' )
74- plugin_pods . each do |name , path |
75- symlink = File . join ( '.symlinks' , 'plugins' , name )
76- File . symlink ( path , symlink )
77- pod name , :path => File . join ( symlink , 'ios' )
78- end
34+ flutter_install_all_ios_pods File . dirname ( File . realpath ( __FILE__ ) )
7935end
8036
8137post_install do |installer |
8238 installer . pods_project . targets . each do |target |
83- target . build_configurations . each do |config |
84- config . build_settings [ 'ENABLE_BITCODE' ] = 'NO'
85- end
39+ flutter_additional_ios_build_settings ( target )
8640 end
8741end
0 commit comments