Skip to content

CocoaPods 1.6.0 or above are not supported for resource-containing static frameworks #50

Open
@ikesyo

Description

@ikesyo

I got an error when running with CocoaPods 1.7.0.beta.2:

TypeError - no implicit conversion of Array into String
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:131:in `basename'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:131:in `block (2 levels) in prebuild_frameworks!'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:129:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:129:in `map'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:129:in `block in prebuild_frameworks!'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:118:in `each'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:118:in `prebuild_frameworks!'
/usr/local/lib/ruby/gems/2.6.0/gems/cocoapods-binary-0.4.2/lib/cocoapods-binary/Prebuild.rb:206:in `block in <class:Installer>'

Looks like this is due to the change for Pod::PodTarget#resource_paths

  • doc: https://www.rubydoc.info/gems/cocoapods/Pod%2FPodTarget:resource_paths
  • A PR which introduced the change: Allow scoping framework and resource paths by specs CocoaPods/CocoaPods#7820
    • The method now returns [Hash{String=>Array<String>}] over [Array<String>]
    • Included since 1.6.0.beta.1.
  • Affected code:
    # save the resource paths for later installing
    if target.static_framework? and !target.resource_paths.empty?
    framework_path = output_path + target.framework_name
    standard_sandbox_path = sandbox.standard_sanbox_path
    path_objects = target.resource_paths.map do |path|
    object = Prebuild::Passer::ResourcePath.new
    object.real_file_path = framework_path + File.basename(path)
    object.target_file_path = path.gsub('${PODS_ROOT}', standard_sandbox_path.to_s) if path.start_with? '${PODS_ROOT}'
    object.target_file_path = path.gsub("${PODS_CONFIGURATION_BUILD_DIR}", standard_sandbox_path.to_s) if path.start_with? "${PODS_CONFIGURATION_BUILD_DIR}"
    object
    end

Could you take a look? Thanks in advance!

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions