@@ -10,78 +10,32 @@ project 'Runner', {
10
10
'Release' => :release ,
11
11
}
12
12
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"
17
17
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
31
22
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"
33
24
end
34
25
26
+ require File . expand_path ( File . join ( 'packages' , 'flutter_tools' , 'bin' , 'podhelper' ) , flutter_root )
27
+
28
+ flutter_ios_podfile_setup
29
+
35
30
target 'Runner' do
36
31
use_frameworks!
37
32
use_modular_headers!
38
33
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__ ) )
79
35
end
80
36
81
37
post_install do |installer |
82
38
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 )
86
40
end
87
41
end
0 commit comments