23

在我的 iOS cocoapod 中,我有一个基本项目:

  1. 开源类(.m & .h 文件)
  2. MyFramework.framework(.framework 目录、头文件和 .bundle 资源)

开源类之一调用import <MyFramework.MyFramework.h>,因此它可以在其实现中使用 MyFramework 的组件。但正因为如此,我无法让 podspec 通过 spec lint 测试 ( pod spec lint MyCocoapod.podspec)。当我运行规范 lint 验证时,它说:

ERROR | [iOS] [xcodebuild] .../MyFile.h:54:9: fatal error: 'MyFramework/MyFramework.h' file not found

在调查时,我注意到如果我在 podspec 的 source_files 部分中删除该开源类,则 podspec 确实通过了规范 lint 验证,s.source_files = 'MyFiles.{h,m}'. 知道为什么我的班级在规范 lint 验证期间无法导入我的自定义框架吗?

podspec 中的相关代码如下所示:

s.preserve_paths      = 'myframework/MyFramework.framework'
s.frameworks          = 'Foundation', 'MyFramework'
s.xcconfig            = { 'FRAMEWORK_SEARCH_PATHS' => '$(SRCROOT)/myframework/' }
s.public_header_files = 'MyFramework.framework/Headers/*.h', 'SourceCode/*.h'
s.source_files        = 'SourceCode/*.{h,m}'  # Crashes here - Source_file imports MyFramework.h. If I take this out, it passes spec lint validation
4

2 回答 2

30

编辑这个过程现在完全由vendored_frameworks选项处理。这处理保留路径、框架搜索路径和链接到项目。

于 2013-04-16T12:52:27.250 回答
8

要包含一个框架,您可以使用:

s.vendored_frameworks = 'path/to/SomeFramework.framework'

要包含捆绑文件,请执行以下操作:

s.resources ='path/to/SomeBundle.bundle'

于 2016-01-19T03:47:50.190 回答