Cocoapods将框架导入源代码

joh*_*ham 18 xcode frameworks objective-c ios cocoapods

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

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

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

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

在调查时,我注意到podspec确实通过了规范lint验证,如果我删除podspec的source_files部分中的那个开源类,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
Run Code Online (Sandbox Code Playgroud)

Kei*_*ley 26

编辑此过程现在完全由vendored_frameworks选项处理.这样可以处理保留路径,框架搜索路径以及链接到项目的过程.

  • vendored_frameworks有没有实际的文档?这不是文档:https://guides.cocoapods.org/syntax/podspec.html#vendored_frameworks.例如,我不知道vendored_frameworks是否会自动将我的pod编译成一个框架并将其放在那里?(到目前为止没有发生......)或者,我应该创建框架然后把它放在那里?Cocoapods文档令人沮丧地简洁...... (6认同)
  • 是的,根据您的更新,我忘记了我的`FRAMEWORK_SEARCH_PATHS`中的`Foo`.谢谢你的提示. (2认同)

Big*_*esy 6

要包含框架,可以使用:

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

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

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