class Pod::Prebuild

Public Class Methods

build(sandbox_root_path, target, output_path, min_deployment_target, bitcode_enabled = false, custom_build_options=[], custom_build_options_simulator=[]) click to toggle source

Build the frameworks with sandbox and targets

@param [String] sandbox_root_path

The sandbox root path where the targets project place

[PodTarget] target
The pod targets to build

[Pathname] output_path
output path for generated frameworks
# File lib/cocoapods-binary-gcp/rome/build_framework.rb, line 174
def self.build(sandbox_root_path, target, output_path, min_deployment_target, bitcode_enabled = false, custom_build_options=[], custom_build_options_simulator=[])

  return if target.nil?

  sandbox_root = Pathname(sandbox_root_path)
  sandbox = Pod::Sandbox.new(sandbox_root)
  build_dir = self.build_dir(sandbox_root)

  # -- build the framework
  case target.platform.name
  when :ios then build_for_iosish_platform(sandbox, build_dir, output_path, target, min_deployment_target, 'iphoneos', 'iphonesimulator', bitcode_enabled, custom_build_options, custom_build_options_simulator)
  when :osx then xcodebuild(sandbox, target.label, 'macosx', nil, custom_build_options)
  # when :tvos then build_for_iosish_platform(sandbox, build_dir, target, 'appletvos', 'appletvsimulator')
  when :watchos then build_for_iosish_platform(sandbox, build_dir, output_path, target, 'watchos', 'watchsimulator', true, custom_build_options, custom_build_options_simulator)
  else raise "Unsupported platform for '#{target.name}': '#{target.platform.name}'" end

  raise Pod::Informative, 'The build directory was not found in the expected location.' unless build_dir.directory?

  # # --- copy the vendored libraries and framework
  # frameworks = build_dir.children.select{ |path| File.extname(path) == ".framework" }
  # Pod::UI.puts "Built #{frameworks.count} #{'frameworks'.pluralize(frameworks.count)}"

  # pod_target = target
  # consumer = pod_target.root_spec.consumer(pod_target.platform.name)
  # file_accessor = Pod::Sandbox::FileAccessor.new(sandbox.pod_dir(pod_target.pod_name), consumer)
  # frameworks += file_accessor.vendored_libraries
  # frameworks += file_accessor.vendored_frameworks

  # frameworks.uniq!

  # frameworks.each do |framework|
  #   FileUtils.mkdir_p destination
  #   FileUtils.cp_r framework, destination, :remove_destination => true
  # end
  # build_dir.rmtree if build_dir.directory?
end
check_one_pod_should_have_only_one_target(prebuilt_targets) click to toggle source

Check the targets, for the current limitation of the plugin

@param [Array<PodTarget>] prebuilt_targets

# File lib/cocoapods-binary-gcp/helper/target_checker.rb, line 8
    def self.check_one_pod_should_have_only_one_target(prebuilt_targets)

      targets_have_different_platforms = prebuilt_targets.select {|t| t.pod_name != t.name }

      if targets_have_different_platforms.count > 0
        names = targets_have_different_platforms.map(&:pod_name)
        raw_names = targets_have_different_platforms.map(&:name)
        message = "Oops, you came across a limitation of cocoapods-binary.

The plugin requires that one pod should have ONLY ONE target in the 'Pod.xcodeproj'. There are mainly 2 situations \
causing this problem:

1. One pod integrates in 2 or more different platforms' targets. e.g.
    ```
    target 'iphoneApp' do
      pod 'A', :binary => true
    end
    target 'watchApp' do
      pod 'A'
    end
    ```

2. Use different subspecs in multiple targets. e.g.
    ```
    target 'iphoneApp' do
      pod 'A/core'
      pod 'A/network'
    end
    target 'iphoneAppTest' do
      pod 'A/core'
    end
    ```

Related pods: #{names}, target names: #{raw_names}
        "
        raise Informative, message
      end
    end
keyword() click to toggle source
# File lib/cocoapods-binary-gcp/helper/podfile_options.rb, line 4
def self.keyword
    :binary
end
remove_build_dir(sandbox_root) click to toggle source
# File lib/cocoapods-binary-gcp/rome/build_framework.rb, line 211
def self.remove_build_dir(sandbox_root)
  path = build_dir(sandbox_root)
  path.rmtree if path.exist?
end

Private Class Methods

build_dir(sandbox_root) click to toggle source
# File lib/cocoapods-binary-gcp/rome/build_framework.rb, line 218
def self.build_dir(sandbox_root)
  # don't know why xcode chose this folder
  sandbox_root.parent + 'build' 
end