Class: Pod::XBuilder
- Inherits:
-
Object
show all
- Includes:
- Config::Mixin, PodUtil, XcodeProjHelper, XcodeXBuilder
- Defined in:
- lib/cocoapods-framework/xbuilder.rb,
lib/cocoapods-framework/xbuilder/xcode_xbuild.rb,
lib/cocoapods-framework/xbuilder/xcodeproj_helper.rb
Defined Under Namespace
Modules: XcodeProjHelper, XcodeXBuilder
Instance Method Summary
collapse
Methods included from PodUtil
#build_static_sandbox, #generic_new_podspec_hash, #installation_root, #podfile_from_spec, #spec_with_name, #spec_with_path
#modify_xcode_project_sdk_to_simullator
#xcode_xbuild
Constructor Details
#initialize(installer, source_dir, sandbox_root, spec, configuration) ⇒ XBuilder
Returns a new instance of XBuilder.
9
10
11
12
13
14
15
16
17
18
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 9
def initialize(installer, source_dir, sandbox_root, spec, configuration)
@installer = installer
@source_dir = source_dir
@sandbox_root = sandbox_root
@spec = spec
@configuration = configuration
@outputs = nil
end
|
Instance Method Details
#build ⇒ Object
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 20
def build
UI.puts("Building framework #{@spec} with configuration #{@configuration}")
UI.puts "Work dir is :#{@sandbox_root}"
defines = "GCC_PREPROCESSOR_DEFINITIONS='$(inherited) PodsDummy_Pods_#{@spec.name}=PodsDummy_PodPackage_#{@spec.name}'"
if @configuration == 'Debug'
defines << 'GCC_GENERATE_DEBUGGING_SYMBOLS=YES ONLY_ACTIVE_ARCH=NO'
end
build_all_device defines
collect_xc_frameworks
end
|
#build_all_device(defines) ⇒ Object
55
56
57
58
59
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 55
def build_all_device defines
build_general_device defines
build_simulator_device defines
end
|
#build_general_device(defines) ⇒ Object
61
62
63
64
65
66
67
68
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 61
def build_general_device defines
UI.puts("--- Building framework #{@spec} with general device")
xcode_xbuild(
defines,
@configuration,
@sandbox_root
)
end
|
#build_simulator_device(defines) ⇒ Object
70
71
72
73
74
75
76
77
78
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 70
def build_simulator_device defines
UI.puts("--- Building framework #{@spec} with simulator device")
modify_xcode_project_sdk_to_simullator "#{@sandbox_root}/Pods.xcodeproj"
xcode_xbuild(
defines,
@configuration,
@sandbox_root
)
end
|
#collect_xc_frameworks ⇒ Object
35
36
37
38
39
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 35
def collect_xc_frameworks
export_dir = "#{@sandbox_root}/export/**/#{@spec.name}.framework"
frameworks = Pathname.glob(export_dir)
@outputs = create_xc_framework_by_frameworks frameworks
end
|
#create_xc_framework_by_frameworks(frameworks) ⇒ Object
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 41
def create_xc_framework_by_frameworks frameworks
command = 'xcodebuild -create-xcframework '
frameworks.each do |framework|
command << "-framework #{framework} "
end
command << "-output #{@sandbox_root}/#{@spec.name}.xcframework 2>&1"
UI.puts `#{command}`
if $?.exitstatus != 0
UI.puts(output)
Process.exit
end
"#{@sandbox_root}/#{@spec.name}.xcframework"
end
|
#outputs(target_dir) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 80
def outputs target_dir
if not File.exist? target_dir
Pathname.new(target_dir).mkdir
end
outputs_xcframework target_dir
new_spec_hash = generic_new_podspec_hash @spec
new_spec_hash[:vendored_frameworks] = "#{@spec.name}.xcframework"
require 'json'
spec_json = JSON.pretty_generate(new_spec_hash) << "\n"
File.open("#{target_dir}/#{@spec.name}.podspec.json",'wb+') do |f|
f.write(spec_json)
end
UI.puts "result export at :#{target_dir}"
target_dir
end
|
#outputs_xcframework(target_dir) ⇒ Object
96
97
98
99
100
101
102
|
# File 'lib/cocoapods-framework/xbuilder.rb', line 96
def outputs_xcframework target_dir
`cp -rp #{@outputs} #{target_dir} 2>&1`
if $?.exitstatus != 0
UI.puts output
Process.exit
end
end
|