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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
# File 'lib/pod_builder/rome/post_install.rb', line 28
def self.build_for_iosish_platform_framework(sandbox, build_dir, target, device, simulator, configuration, deterministic_build)
dsym_device_folder = File.join(build_dir, "dSYM", device)
dsym_simulator_folder = File.join(build_dir, "dSYM", simulator)
FileUtils.mkdir_p(dsym_device_folder)
FileUtils.mkdir_p(dsym_simulator_folder)
deployment_target = target.platform_deployment_target
target_label = target.cocoapods_target_label
xcodebuild(sandbox, target_label, device, deployment_target, configuration, deterministic_build, [], {})
excluded_archs = ["i386"] excluded_archs += ["arm64"] xcodebuild(sandbox, target_label, simulator, deployment_target, configuration, deterministic_build, excluded_archs, {})
spec_names = target.specs.map { |spec| [spec.root.name, spec.root.module_name] }.uniq
spec_names.each do |root_name, module_name|
device_base = "#{build_dir}/#{configuration}-#{device}/#{root_name}"
device_lib = "#{device_base}/#{module_name}.framework/#{module_name}"
device_dsym = "#{device_base}/#{module_name}.framework.dSYM"
device_framework_lib = File.dirname(device_lib)
= "#{device_framework_lib}/Headers/#{module_name}-Swift.h"
simulator_base = "#{build_dir}/#{configuration}-#{simulator}/#{root_name}"
simulator_lib = "#{simulator_base}/#{module_name}.framework/#{module_name}"
simulator_dsym = "#{simulator_base}/#{module_name}.framework.dSYM"
simulator_framework_lib = File.dirname(simulator_lib)
= "#{simulator_framework_lib}/Headers/#{module_name}-Swift.h"
next unless File.file?(device_lib) && File.file?(simulator_lib)
if `xcrun lipo -info #{simulator_lib}`.include?("arm64")
`xcrun lipo -remove arm64 #{simulator_lib} -o #{simulator_lib}`
end
raise "\n\nLipo failed on #{device_lib}\n".red unless system("xcrun lipo -create -output #{device_lib} #{device_lib} #{simulator_lib}")
(, )
FileUtils.cp_r(File.join(device_framework_lib, "."), simulator_framework_lib)
source_lib = File.dirname(simulator_framework_lib)
FileUtils.mv(device_dsym, dsym_device_folder) if File.exist?(device_dsym)
FileUtils.mv(simulator_dsym, dsym_simulator_folder) if File.exist?(simulator_dsym)
FileUtils.mv(source_lib, build_dir)
FileUtils.rm_rf(device_framework_lib)
FileUtils.rm_rf(simulator_framework_lib)
end
end
|