CocoaPods 将框架导入源代码

问题描述 投票:0回答:2

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

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

其中一个开源类调用

import <MyFramework.MyFramework.h>
,因此它可以在其实现中使用 MyFramework 的组件。但正因为如此,我无法让 podspec 通过规范 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
ios objective-c xcode frameworks cocoapods
2个回答
30
投票

编辑 此过程现在完全由

vendored_frameworks
选项处理。这可以处理保留路径、框架搜索路径以及到项目的链接。


8
投票

要包含您可以使用的框架:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.