首页 > 解决方案 > Podspec 模式包含未在 source_files 中列出的头文件

问题描述

我正在尝试创建一个 Cocoapod。但是当我运行时pod lib lint,出现以下错误:

MyCoolProject (1.0.0)
    - ERROR | [iOS] public_header_files: The pattern includes header files that are not listed in source_files 

然后它列出了我所有的 .h 文件。(为简洁起见,删除了一些)

/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/MyCoolProject.h,
/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/MyCoolProjectConstants.h,
/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/MyCoolProjectEnums.h,
/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/MyCoolProjectMacros.h,
/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/MyCoolProject_.h,
/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/UIView+MyCoolProjectPrivate.h, 
/Users/myusername/Documents/GitHub/MyCoolProject/Pod/Classes/Objective-C/UIViewController+MyCoolProject.h

我花了 2 天时间,发现 0 条信息可以帮助我理解和纠正错误。谁能阐明我可能做错了什么?

这是我的 podspec 文件

Pod::Spec.new do |s|
  s.name                = "MyCoolProject"
  s.version             = "1.0.0"
  s.summary             = "Color Framework for iOS (Obj-C & Swift)"
  s.homepage            = "https://github.com/myusername/MyCoolProject"

  s.license             = { :type => "MIT", :file => "LICENSE.md" }
  s.author              = "My Name"

  s.platform            = :ios
  s.ios.deployment_target = '8.0'
  s.source              = { :git => "https://github.com/myusername/MyCoolProject.git", 
                            :tag => s.version.to_s }

  s.public_header_files = 'Pod/Classes/Objective-C/**/*.h'
  s.frameworks   = 'UIKit', 'QuartzCore', 'CoreGraphics'

  s.default_subspecs = 'Default'

  s.subspec 'Default' do |ss|
    ss.source_files = 'Pod/Classes/Objective-C/**/*.{h,m}'
  end

  s.subspec 'Swift' do |ss|
      ss.ios.deployment_target = '8.0'
      ss.source_files = 'Pod/Classes/Swift/MyCoolProjectShorthand.swift'
      ss.dependency 'MyCoolProject/Default'
  end
end

正如您从我的屏幕截图中看到的那样,所有文件都在那里:

在此处输入图像描述

标签: objective-cswiftcocoapods

解决方案


public_header_files将声明移动到Default子规范中会有所不同吗?还是转移source_files到外部范围?

我怀疑SwiftCocoaPods 在处理其依赖项之前正在检查文件中的子规范。


推荐阅读