Class: CBin::Build::Helper
- Inherits:
-
Object
- Object
- CBin::Build::Helper
- Includes:
- Pod
- Defined in:
- lib/cocoapods-bb-bin/helpers/build_helper.rb
Constant Summary collapse
- @@build_defines =
class var
""
Instance Method Summary collapse
-
#build ⇒ Object
build framework.
-
#build_static_framework ⇒ Object
build framework.
- #build_static_library ⇒ Object
-
#build_static_xcframework ⇒ Object
build xcframework.
- #clean_workspace ⇒ Object
- #framework_name ⇒ Object
- #framework_name_zip ⇒ Object
- #gen_name ⇒ Object
-
#initialize(spec, platform, framework_output, xcframework_output, xcframework_dylib_output, support_maccatalyst, spec_sources, zip, rootSpec, skip_archive = false, build_model = "Release", workspace = nil) ⇒ Helper
constructor
Debug下还待完成.
- #is_build_finish ⇒ Object
-
#is_build_xcframework ⇒ Object
是否编译xcframework库.
- #library_name ⇒ Object
- #spec_file ⇒ Object
- #workspace_directory ⇒ Object
- #xcframework_name ⇒ Object
- #xcframework_name_zip ⇒ Object
- #zip_dir ⇒ Object
- #zip_static_framework ⇒ Object
- #zip_static_library ⇒ Object
- #zip_static_xcframework ⇒ Object
Methods included from Pod
Constructor Details
#initialize(spec, platform, framework_output, xcframework_output, xcframework_dylib_output, support_maccatalyst, spec_sources, zip, rootSpec, skip_archive = false, build_model = "Release", workspace = nil) ⇒ Helper
Debug下还待完成
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 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 18 def initialize(spec, platform, framework_output, xcframework_output, xcframework_dylib_output, support_maccatalyst, spec_sources, zip, rootSpec, skip_archive = false, build_model="Release", workspace=nil) @spec = spec @platform = platform @build_model = build_model @rootSpec = rootSpec @isRootSpec = rootSpec.name == spec.name @skip_archive = skip_archive @framework_output = framework_output @xcframework_output = xcframework_output @xcframework_dylib_output = xcframework_dylib_output @support_maccatalyst = support_maccatalyst @spec_sources = spec_sources @zip = zip @workspace = workspace @framework_path UI.puts "build initialize...#{spec} rootSpec:#{rootSpec} build_model:#{build_model} workspace:#{workspace}" end |
Instance Method Details
#build ⇒ Object
build framework
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 50 def build UI.section("Building static framework #{@spec}") do # 生成静态库支持xcframework has_xcframework = is_build_xcframework if has_xcframework == true UI.puts "build static xcframework" build_static_xcframework unless @skip_archive zip_static_xcframework end else UI.puts "build static framework" build_static_framework unless @skip_archive unless CBin::Build::Utils.is_framework(@spec) UI.puts "build static library" build_static_library zip_static_library else zip_static_framework end end end end end |
#build_static_framework ⇒ Object
build framework
109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 109 def build_static_framework source_dir = Dir.pwd file_accessor = Sandbox::FileAccessor.new(Pathname.new('.')., @spec.consumer(@platform)) Dir.chdir(workspace_directory) do builder = CBin::Framework::Builder.new(@spec, file_accessor, @platform, source_dir, @isRootSpec, @build_model ) @@build_defines = builder.build if @isRootSpec begin @framework_path = builder.lipo_build(@@build_defines) unless @skip_archive rescue @skip_archive = true end end end |
#build_static_library ⇒ Object
123 124 125 126 127 128 129 130 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 123 def build_static_library source_dir = zip_dir file_accessor = Sandbox::FileAccessor.new(Pathname.new('.')., @spec.consumer(@platform)) Dir.chdir(workspace_directory) do builder = CBin::Library::Builder.new(@spec, file_accessor, @platform, source_dir,@framework_path) builder.build end end |
#build_static_xcframework ⇒ Object
build xcframework
100 101 102 103 104 105 106 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 100 def build_static_xcframework source_dir = Dir.pwd UI.puts "xcframework source_dir=#{source_dir} workspace:#{@workspace}" isGenDylib = @xcframework_dylib_output builder = CBin::XCFramework::XCBuilder.new(@spec, @spec_sources, @support_maccatalyst, isGenDylib, @workspace) builder.build end |
#clean_workspace ⇒ Object
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 173 def clean_workspace UI.puts 'Cleaning workspace' FileUtils.rm_rf(gen_name) Dir.chdir(zip_dir) do # framework FileUtils.rm_rf(framework_name) if @zip FileUtils.rm_rf(library_name) FileUtils.rm_rf(framework_name) unless @framework_output FileUtils.rm_rf("#{framework_name}.zip") unless @framework_output # xcframework FileUtils.rm_rf(xcframework_name) if @zip FileUtils.rm_rf(xcframework_name) unless @framework_output FileUtils.rm_rf("#{xcframework_name}.zip") unless @framework_output end end |
#framework_name ⇒ Object
198 199 200 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 198 def framework_name CBin::Config::Builder.instance.framework_name(@spec) end |
#framework_name_zip ⇒ Object
202 203 204 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 202 def framework_name_zip CBin::Config::Builder.instance.framework_name_version(@spec) + ".zip" end |
#gen_name ⇒ Object
218 219 220 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 218 def gen_name CBin::Config::Builder.instance.gen_dir end |
#is_build_finish ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 77 def is_build_finish if is_build_xcframework path = xcframework_name_zip else path = framework_name_zip end output_path = File.join(zip_dir, path) unless File.exist?(xcframework_name) UI.puts "工程文件编译成功" return true end UI.puts "工程文件编译失败" return false end |
#is_build_xcframework ⇒ Object
是否编译xcframework库
93 94 95 96 97 98 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 93 def is_build_xcframework if @xcframework_output || @xcframework_dylib_output return true end return false end |
#library_name ⇒ Object
206 207 208 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 206 def library_name CBin::Config::Builder.instance.library_name(@spec) end |
#spec_file ⇒ Object
223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 223 def spec_file @spec_file ||= begin if @podspec find_spec_file(@podspec) else if code_spec_files.empty? raise Informative, '当前目录下没有找到可用源码 podspec.' end spec_file = code_spec_files.first spec_file end end end |
#workspace_directory ⇒ Object
210 211 212 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 210 def workspace_directory File.("#{gen_name}/#{@rootSpec.name}") end |
#xcframework_name ⇒ Object
190 191 192 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 190 def xcframework_name CBin::Config::Builder.instance.xcframework_name(@spec) end |
#xcframework_name_zip ⇒ Object
194 195 196 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 194 def xcframework_name_zip CBin::Config::Builder.instance.xcframework_name_version(@spec) + ".zip" end |
#zip_dir ⇒ Object
214 215 216 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 214 def zip_dir CBin::Config::Builder.instance.zip_dir end |
#zip_static_framework ⇒ Object
145 146 147 148 149 150 151 152 153 154 155 156 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 145 def zip_static_framework Dir.chdir(File.join(workspace_directory,@framework_path.root_path)) do output_name = File.join(zip_dir, framework_name_zip) unless File.exist?(framework_name) UI.puts "没有需要压缩的 framework 文件:#{framework_name}" return end UI.puts "Compressing #{framework_name} into #{output_name}" `zip --symlinks -r #{output_name} #{framework_name}` end end |
#zip_static_library ⇒ Object
158 159 160 161 162 163 164 165 166 167 168 169 170 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 158 def zip_static_library Dir.chdir(zip_dir) do output_library = "#{library_name}.zip" unless File.exist?(library_name) raise Informative, "没有需要压缩的 library 文件:#{library_name}" end UI.puts "Compressing #{library_name} into #{output_library}" `zip --symlinks -r #{output_library} #{library_name}` end end |
#zip_static_xcframework ⇒ Object
132 133 134 135 136 137 138 139 140 141 142 143 |
# File 'lib/cocoapods-bb-bin/helpers/build_helper.rb', line 132 def zip_static_xcframework Dir.chdir(zip_dir) do output_name = File.join(zip_dir, xcframework_name_zip) unless File.exist?(xcframework_name) UI.puts "没有需要压缩的 xcframework 文件:#{xcframework_name}" return end UI.puts "Compressing #{xcframework_name} into #{output_name}" `zip --symlinks -r #{output_name} #{xcframework_name} && rm -rf #{xcframework_name}` # xcframework进行zip压缩 & 删除源文件 end end |