关于ios:Cocoapods将框架导入源代码

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选项处理。 这负责保留路径,框架搜索路径以及链接到项目。


    要包含框架,可以使用:

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

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

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