Top Level Namespace
Defined Under Namespace
Modules: CocoapodsRome
Constant Summary collapse
- PLATFORMS =
{ 'iphonesimulator' => 'iOS', 'appletvsimulator' => 'tvOS', 'watchsimulator' => 'watchOS' }
Instance Method Summary collapse
- #build_for_iosish_platform(sandbox, build_dir, target, device, simulator, configuration) ⇒ Object
- #copy_dsym_files(dsym_destination, configuration) ⇒ Object
- #enable_debug_information(project_path, configuration) ⇒ Object
- #xcodebuild(sandbox, target, sdk = 'macosx', deployment_target = nil, configuration) ⇒ Object
Instance Method Details
#build_for_iosish_platform(sandbox, build_dir, target, device, simulator, configuration) ⇒ Object
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 |
# File 'lib/cocoapods-rome/post_install.rb', line 7 def build_for_iosish_platform(sandbox, build_dir, target, device, simulator, configuration) deployment_target = target.platform_deployment_target target_label = target.cocoapods_target_label xcodebuild(sandbox, target_label, device, deployment_target, configuration) xcodebuild(sandbox, target_label, simulator, deployment_target, configuration) spec_names = target.specs.map { |spec| [spec.root.name, spec.root.module_name] }.uniq spec_names.each do |root_name, module_name| executable_path = "#{build_dir}/#{root_name}" device_lib = "#{build_dir}/#{configuration}-#{device}/#{root_name}/#{module_name}.framework/#{module_name}" device_framework_lib = File.dirname(device_lib) simulator_lib = "#{build_dir}/#{configuration}-#{simulator}/#{root_name}/#{module_name}.framework/#{module_name}" next unless File.file?(device_lib) && File.file?(simulator_lib) lipo_log = `lipo -create -output #{executable_path} #{device_lib} #{simulator_lib}` puts lipo_log unless File.exist?(executable_path) FileUtils.mv executable_path, device_lib, :force => true FileUtils.mv device_framework_lib, build_dir, :force => true FileUtils.rm simulator_lib if File.file?(simulator_lib) FileUtils.rm device_lib if File.file?(device_lib) end end |
#copy_dsym_files(dsym_destination, configuration) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/cocoapods-rome/post_install.rb', line 50 def copy_dsym_files(dsym_destination, configuration) dsym_destination.rmtree if dsym_destination.directory? platforms = ['iphoneos', 'iphonesimulator'] platforms.each do |platform| dsym = Pathname.glob("build/#{configuration}-#{platform}/**/*.dSYM") dsym.each do |dsym| destination = dsym_destination + platform FileUtils.mkdir_p destination FileUtils.cp_r dsym, destination, :remove_destination => true end end end |
#enable_debug_information(project_path, configuration) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/cocoapods-rome/post_install.rb', line 40 def enable_debug_information(project_path, configuration) project = Xcodeproj::Project.open(project_path) project.targets.each do |target| config = target.build_configurations.find { |config| config.name.eql? configuration } config.build_settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym' config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO' end project.save end |
#xcodebuild(sandbox, target, sdk = 'macosx', deployment_target = nil, configuration) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/cocoapods-rome/post_install.rb', line 33 def xcodebuild(sandbox, target, sdk='macosx', deployment_target=nil, configuration) args = %W(-project #{sandbox.project_path.realdirpath} -scheme #{target} -configuration #{configuration} -sdk #{sdk}) platform = PLATFORMS[sdk] args += Fourflusher::SimControl.new.destination(:oldest, platform, deployment_target) unless platform.nil? Pod::Executable.execute_command 'xcodebuild', args, true end |