我遇到了将可可荚(在这种情况下为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
(依赖ModelsModule
和CommonModule
)现在,CocoaLumberjack
在CommonModule
中的多个文件中使用,并按预期工作。但是,每次在import CommonModule
中的任何文件中ModelsModule
时,都会出现以下编译错误:
~/Developer/ModelsModule/ModelsModule/SomeFile.swift:2:8: error: missing required module 'CocoaLumberjack'
import CommonModule
^
知道如何解决这个问题吗?
更新: Some people建议使用Carthage。如果可能的话,我想避免这种情况。
答案 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.framework
和CocoaLumberjack.framework
(以及任何其他框架)列在应用程序目标的嵌入式二进制文件部分中。
所有新的iOS 8风格的动态框架必须嵌入到您的应用程序中 - 即使您没有直接使用的那些,但这是您的依赖项的依赖项 - 所以您最终可能会看到对您不依赖的项目的引用认。
顺便提一下,如果您在使用Swift与CocoaLumberjack交互时遇到问题,可能会让a new Swift-based logging engine called CleanroomLogger变得更容易。