2016-07-04 32 views
1

我有一个现有的Xcode框架,它使用Swift和Objective-C,我试图让它作为Cocoapod工作。我到目前为止的步骤是:用Swift和Objective-C构建Cocoapod:如何处理伞头问题?

1)我用pod lib create SMCoreLib初始化一个新文件夹(https://guides.cocoapods.org/making/using-pod-lib-create.html)。

2)我将框架中的Swift和Objective-C代码复制到这个新初始化的pod文件夹中的SMCoreLib/Classes文件夹中。我也将这段代码拖到_Pods.xcodeproj中的相关组中。

3)我对我的项目的.podspec文件做了一些更改。这是如下(请注意,Github上回购尚未与这些变化更新;我可以做,如果有人想那):

Pod::Spec.new do |s| 
    s.name    = 'SMCoreLib' 
    s.version   = '0.0.2' 
    s.summary  = 'Spastic Muffin Core Library for iOS' 

# This description is used to generate tags and improve search results. 
# * Think: What does it do? Why did you write it? What is the focus? 
# * Try to keep it short, snappy and to the point. 
# * Write the description between the DESC delimiters below. 
# * Finally, don't worry about the indent, CocoaPods strips it! 

    s.description  = <<-DESC 
    Objective-C and Swift classes to support Spastic Muffin code. 
         DESC 

    s.homepage  = "https://github.com/crspybits/SMCoreLib.git" 
    s.license  = { :type => "GPL3", :file => "LICENSE.txt" } 
    s.author    = { "Christopher Prince" => "<snip>" } 

    s.platform  = :ios, "8.0" 

    s.source  = { :git => "https://github.com/crspybits/SMCoreLib.git", :tag => "#{s.version}" } 

    s.ios.deployment_target = '8.0' 

    s.source_files = 'SMCoreLib/Classes/**/*' 

    s.resources = "SMCoreLib/Assets/**" 

    # s.resource_bundles = { 
    # 'SMCoreLib' => ['SMCoreLib/Assets/*.png'] 
    # } 

    # s.public_header_files = 'Pod/Classes/**/*.h' 
    # s.frameworks = 'UIKit', 'MapKit' 
    # s.dependency 'AFNetworking', '~> 2.3' 

    s.requires_arc = true 

    # s.xcconfig = { "HEADER_SEARCH_PATHS" => "$(SDKROOT)/usr/include/libxml2" } 

    s.dependency 'AFNetworking' 
    s.dependency 'HPTextViewTapGestureRecognizer', '~> 0.1' 
    s.dependency 'Reachability' 
end 

我的问题是,我得到的失败都试图构建示例Xcode项目并试图拴在吊舱上。构建示例Xcode项目,我收到以下错误:

Xcode errors

在命令行中,当我这样做:

pod lib lint --allow-warnings --verbose --no-clean 

我收到以下错误:

- NOTE | [iOS] xcodebuild: <module-includes>:2:9: note: in file included from <module-includes>:2: 
- ERROR | [iOS] xcodebuild: /Users/chris/Library/Developer/Xcode/DerivedData/App-bhqthebvswpzxeesjidsqpmmwovu/Build/Products/Release-iphonesimulator/SMCoreLib/SMCoreLib.framework/Headers/SMCoreLib-Swift.h:103:9: error: 'SMCoreLib/SMCoreLib.h' file not found 
- NOTE | [iOS] xcodebuild: <unknown>:0: error: could not build Objective-C module 'SMCoreLib' 

问题似乎是在自动生成的SMCoreLib-Swift.h生成的接口标题中找不到SMCoreLib.h标头。我将不胜感激任何建议。

回答

0

我有一个黑客修复这个问题。我想要一个更好的。修复方法是将SMCoreLib.h文件放在:SMCoreLib/Classes/SMCoreLib.h。该文件包含单个行:

#import "SMCoreLib-umbrella.h" 

这个问题似乎是生成的接口标头不尊重名称变更为在一个模块映射给出的伞头。 Cocoapods创建了这个模块映射和名称更改。此攻击修复程序存在于此项目的Git回购https://github.com/crspybits/SMCoreLib.git中。

+0

这是一个已知问题。 [rdar:// 24641873](https://openradar.appspot.com/24641873) – izerik

+0

酷!谢谢! –