Class: Pod::Command::Flutter
- Inherits:
-
Pod::Command
- Object
- Pod::Command
- Pod::Command::Flutter
- Defined in:
- lib/pod/command/flutter.rb,
lib/cocoapods-flutter/build.rb
Class Method Summary collapse
Instance Method Summary collapse
- #build ⇒ Object
- #copy_framework ⇒ Object
-
#initialize(argv) ⇒ Flutter
constructor
A new instance of Flutter.
- #putConfig ⇒ Object
- #run ⇒ Object
- #thin ⇒ Object
- #validate! ⇒ Object
Constructor Details
#initialize(argv) ⇒ Flutter
Returns a new instance of Flutter.
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/pod/command/flutter.rb', line 30 def initialize(argv) @flutter_root = File.(argv.option('root', ENV['FLUTTER_ROOT'])) @flutter_application_path = argv.option('application-path', Dir.pwd) @flutter_target = File.(argv.option('target', 'lib/main.dart')) @flutter_build_mode = argv.option('build-mode', 'debug') @flutter_build_dir = argv.option('build-dir', 'build') @flutter_build_name = argv.option('build-name', '1.0.0') @flutter_build_number = argv.option('build-number', '1') @flutter_derived_dir = argv.option('derived-dir', 'Flutter') @flutter_artifact_variant = nil @flutter_application_frame_name = argv.option('application-frame-name', 'App') @flutter_local_engine = argv.option('local-engine', ENV['LOCAL_ENGINE']) @flutter_track_widget_creation_flag = argv.flag?('track-widget-creation-flag', ENV['TRACK_WIDGET_CREATION']) @flutter_verbose = argv.flag?('verbose', ENV['VERBOSE_SCRIPT_LOGGING']) super end |
Class Method Details
.options ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/pod/command/flutter.rb', line 12 def self. [ ['--root', 'Flutter SDK path default FLUTTER_ROOT.'], ['--application-path', 'Flutter Project path defalut is Dir.pwd.'], ['--target', 'Flutter target default is lib/main.dart.'], ['--build-mode', 'Flutter build model, debug、release(default)'], ['--build-dir', 'Flutter build dir, default build.'], # ['--build-name', 'Flutter build name.'], # ['--build-number', 'Flutter build number.'], ['--derived-dir', 'Flutter derived dir, default Flutter'], ['--application-frame-name', 'Flutter applicationFrame Name, default App'], ['--local-engine', 'TRACK_WIDGET_CREATION.'], ['--track-widget-creation-flag', 'LOCAL_ENGINE.'], ['--verbose', 'VERBOSE_SCRIPT_LOGGING.'] ] end |
Instance Method Details
#build ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/cocoapods-flutter/build.rb', line 4 def build verbose_flag = @flutter_verbose ? '--verbose' : '' local_engine_flag = !@flutter_local_engine.nil? ? "--local-engine=#{@flutter_local_engine}" : '' = @flutter_track_widget_creation_flag ? '--track-widget-creation' : '' # build framework if @flutter_build_mode != 'debug' puts ' ├─Building Dart code...' system "#{@flutter_root}/bin/flutter --suppress-analytics \ build aot \ --output-dir=#{@flutter_build_dir}/aot \ --target-platform=ios \ --target=\"#{@flutter_target}\" \ --#{@flutter_build_mode} \ #{local_engine_flag} \ #{} \ #{verbose_flag} \ " puts 'done' system "cp -r -- \"#{@flutter_build_dir}/aot/#{@flutter_application_frame_name}.framework\" \"#{@flutter_derived_dir}\"" else # Build stub for all requested architectures. system "mkdir -p -- \"#{@flutter_derived_dir}/#{@flutter_application_frame_name}.framework\"" system "echo \"static const int Moo = 88;\" | xcrun clang -x c \ -dynamiclib \ -Xlinker -rpath -Xlinker '@executable_path/Frameworks' \ -Xlinker -rpath -Xlinker '@loader_path/Frameworks' \ -install_name '@rpath/#{@flutter_application_frame_name}.framework/#{@flutter_application_frame_name}' \ -o \"#{@flutter_derived_dir}/#{@flutter_application_frame_name}.framework/#{@flutter_application_frame_name}\" " end # copy plist plistPath = File.join(@flutter_application_path, '.ios/Flutter/AppFrameworkInfo.plist') if !File.exist?(plistPath) plistPath = File.join(@flutter_application_path, 'ios/Flutter/AppFrameworkInfo.plist') end if File.exist?(plistPath) system "cp -- \"#{plistPath}\" \"#{@flutter_derived_dir}/#{@flutter_application_frame_name}.framework/Info.plist\"" #修改plist信息 system "/usr/libexec/PlistBuddy -c \"Set:CFBundleExecutable #{@flutter_application_frame_name}\" \"#{@flutter_derived_dir}/#{@flutter_application_frame_name}.framework/Info.plist\"" end # build bundle precompilation_flag = "" if ENV["CURRENT_ARCH"] != "x86-64" && @flutter_build_mode != "debug" precompilation_flag = "--precompiled" end puts " ├─Assembling Flutter resources..." system "#{@flutter_root}/bin/flutter --suppress-analytics \ build bundle \ --target-platform=ios \ --target=\"#{@flutter_target}\" \ --snapshot=\"#{@flutter_build_dir}/snapshot_blob.bin\" \ --#{@flutter_build_mode} \ --depfile=\"#{@flutter_build_dir}/snapshot_blob.bin.d\" \ --asset-dir=\"#{@flutter_derived_dir}/flutter_assets\" \ #{precompilation_flag} \ #{local_engine_flag} \ #{} \ #{verbose_flag} \ " puts "done" puts " └─Compiling, linking and signing..." end |
#copy_framework ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/pod/command/flutter.rb', line 61 def copy_framework # 拷贝framework case @flutter_build_mode when 'release' @flutter_artifact_variant = 'ios-release' when 'profile' @flutter_artifact_variant = 'ios-profile' when 'debug' @flutter_artifact_variant = 'ios' end help! "Unknown FLUTTER_BUILD_MODE: #{@flutter_build_mode}" unless @flutter_artifact_variant framework_path = File.join(@flutter_root, 'bin/cache/artifacts/engine/', @flutter_artifact_variant) runnerPath = File.join(@flutter_application_path, '.ios/') if File.exist?(runnerPath) enginePath = File.join(runnerPath,'flutter/engine') system "rm -rf -- #{enginePath}" system "mkdir -p -- #{enginePath}" system "cp -r -- #{framework_path}/Flutter.podspec #{enginePath}" system "cp -r -- #{framework_path}/Flutter.framework #{enginePath}" system "find \"#{enginePath}/Flutter.framework\" -type f -exec chmod a-w \"{}\" \\;" else system "rm -rf -- #{@flutter_derived_dir}/Flutter.framework" system "mkdir -p -- #{@flutter_derived_dir}/Flutter.framework" system "cp -r -- #{framework_path}/Flutter.podspec #{@flutter_derived_dir}" system "cp -r -- #{framework_path}/Flutter.framework #{@flutter_derived_dir}" system "find \"#{@flutter_derived_dir}/Flutter.framework\" -type f -exec chmod a-w \"{}\" \\;" end end |
#putConfig ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/pod/command/flutter.rb', line 93 def putConfig puts <<-EOF FLUTTER_ROOT=#{@flutter_root} FLUTTER_APPLICATION_PATH=#{@flutter_application_path} FLUTTER_TARGET=#{@flutter_target} FLUTTER_DERIVED_DIR=#{@flutter_derived_dir} FLUTTER_BUILD_MODE=#{@flutter_build_mode} FLUTTER_BUILD_DIR=#{@flutter_build_dir} FLUTTER_BUILD_NAME=#{@flutter_build_name} FLUTTER_BUILD_NUMBER=#{@flutter_build_number} EOF end |
#run ⇒ Object
56 57 58 59 |
# File 'lib/pod/command/flutter.rb', line 56 def run copy_framework build end |
#thin ⇒ Object
106 |
# File 'lib/pod/command/flutter.rb', line 106 def thin; end |
#validate! ⇒ Object
48 49 50 51 52 53 54 |
# File 'lib/pod/command/flutter.rb', line 48 def validate! super help! 'FLUTTER_ROOT is required.' unless @flutter_root help! 'application-path is required.' unless File.exist?(@flutter_application_path) help! 'target is required.' unless File.exist?(@flutter_target) help! 'build-mode is required.' unless @flutter_build_mode end |