Cocoapods importing a framework to source code
在我的iOS版cocoapod中,我有一个基本的项目:
开源类(.m和.h文件)
MyFramework.framework(.framework目录,头文件和.bundle资源)
其中一个开源类调用import ,因此它可以在实现中使用MyFramework的组件。 但是正因为如此,我无法让podspec通过spec lint测试(pod spec lint MyCocoapod.podspec)。 当我运行spec lint验证时,它说:
ERROR | [iOS] [xcodebuild] .../MyFile.h:54:9: fatal error: 'MyFramework/MyFramework.h' file not found
在调查过程中,我注意到,如果我在podspec的source_files部分s.source_files = 'MyFiles.{h,m}'中删除了该开放源代码类,则podspec确实会通过spec lint验证。 知道为什么我的类无法在规范棉绒验证期间导入我的自定义框架吗?
podspec中的相关代码如下所示:
1 2 3 4 5
| 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 |
编辑现在,此过程完全由vendored_frameworks选项处理。 这负责保留路径,框架搜索路径以及链接到项目。
-
感谢您的回复。因此,如果我的cocoapod只是一个框架,则可以使用。但是pod也有一些source_code(.m和.h文件)要分发。在我的pod的source_code(.m)中,发生了#import ,这就是皮棉规格未能通过验证的地方。
-
将source_files添加到podspec也不应对导入框架产生任何影响。 CocoaPods皮棉显示什么错误? (还请确保您使用最新版本gem update)
-
嗯,错误在问题字段上方... ERROR |...。 (我只是从podspec中添加了相关代码)也许我一开始没有正确导入框架,这就是为什么source_files也无法正确导入框架的原因。我将对此进行调查,并尽快回复您。
-
如果您认为两次导入了exlucde_files,也请在这里查看。
-
是的,根据您的更新,我忘记了FRAMEWORK_SEARCH_PATHS中的Foo。感谢小费。
-
有vendored_frameworks的实际文档吗?这不是文档:guides.cocoapods.org/syntax/podspec.html#vendored_frameworks。例如,我不知道vendored_frameworks是否会自动将我的pod编译到框架中并将其放置在框架中? (到目前为止,还没有发生……)或者,我应该创建框架然后放到那里吗? Cocoapods文档简明扼要...
-
vendored_frameworks仅用于交付预编译的框架。如果使用此Pod运送源文件,则不需要此属性。
-
我专门试图弄清楚如何在不带源代码的情况下运送图书馆,同时仍保持使用Cocoapods开发该图书馆的便利性。我发现,这里描述的podspec是唯一有用的东西。但是我认为我首先需要使用Cocoapods-Rome或cocoapods-packager来制作该框架,因为它开始成为Podspec。
-
您应该在项目中创建一个框架目标。然后,您可以将其存档和分发。
-
我正在使用vendored_frameworks,但与OP有完全相同的问题。有什么建议么?
要包含框架,可以使用:
s.vendored_frameworks = 'path/to/SomeFramework.framework'
要包含捆绑文件,请执行以下操作:
s.resources ='path/to/SomeBundle.bundle'