在iOS 8 app / framework中缺少必需的模块'CocoaLumberjack'

时间:2015-04-14 17:24:56

标签: ios swift ios8 cocoapods cocoalumberjack

我遇到了将可可荚(在这种情况下为CocoaLumberjack)集成到iOS应用程序和我自己的框架中的问题。

Podfile看起来像这样:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, "8.0"

target "CommonModule" do
    use_frameworks!
    # CocoaLumberjack wasn't officially released with Swift support yet
    # pod 'CocoaLumberjack'
    pod 'CocoaLumberjack', :git => 'git@github.com:CocoaLumberjack/CocoaLumberjack.git', :commit => '6882fb5f03696247e394e8e75551c0fa8a035328'
    xcodeproj 'CommonModule/CommonModule.xcodeproj'
end

我有一个模块层次结构(动态框架),如下所示:

  • CommonModule
  • ModelsModule(具有依赖关系CommonModule

最后,主应用程序:

  • MySwiftApp(依赖ModelsModuleCommonModule

现在,CocoaLumberjackCommonModule中的多个文件中使用,并按预期工作。但是,每次在import CommonModule中的任何文件中ModelsModule时,都会出现以下编译错误:

~/Developer/ModelsModule/ModelsModule/SomeFile.swift:2:8: error: missing required module 'CocoaLumberjack'
import CommonModule
       ^

知道如何解决这个问题吗?

更新: Some people建议使用Carthage。如果可能的话,我想避免这种情况。

2 个答案:

答案 0 :(得分:0)

我假设CommonModule很快,你也看到你的use_frameworks!使用CocoaPods 0.36。我还假设您正在使用Obj-C版本的CocoaLumberjack,并尝试将其与Swift一起使用。 use_frameworks!标志告诉CocoaPods生成用于在Xcode项目中链接的pod的框架。所以你需要在课堂顶部说出

import CocoaLumberjack

而不是使用Swift-Bridging-Header

以下是cocoapods.org上的博文,其中讨论了如何为新的use_frameworks!标志创建广告连播。向下滚动到 Common Header Trafalls

部分

也可能是你的podspec创建了一个使用CocoaLumberjack的依赖项,当链接到你的项目CocoaLumberjack和CommonModules时,但是Common Module没有在库中正确引用它。为了解决这个问题,您需要在将其导入Objective-C库时将其称为框架

#import <CocoaLumberjack/CocoaLumberjack.h>

答案 1 :(得分:0)

您还需要确保CommonModule.frameworkCocoaLumberjack.framework(以及任何其他框架)列在应用程序目标的嵌入式二进制文件部分中。

所有新的iOS 8风格的动态框架必须嵌入到您的应用程序中 - 即使您没有直接使用的那些,但这是您的依赖项的依赖项 - 所以您最终可能会看到对您不依赖的项目的引用认。

顺便提一下,如果您在使用Swift与CocoaLumberjack交互时遇到问题,可能会让a new Swift-based logging engine called CleanroomLogger变得更容易。