Cocoapods use_frameworks!进口问题

时间:2015-12-23 06:21:48

标签: objective-c xcode cocoapods facebook-ios-sdk

我想在Objective-C应用程序中使用一些Swift pod,所以我需要使用框架而不是静态库。但是在我的Podfile中启用use_frameworks!会导致#import错误。

我的Podfile:

platform :ios, '8.0'
use_frameworks!

pod 'AFNetworking', '2.6.0'
pod 'Typhoon'
pod 'SSKeychain'
pod 'JBWebViewController'
pod 'TTTAttributedLabel'
pod 'HockeySDK'
pod 'GoogleAnalytics'
pod 'Intercom'
pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit'
pod 'UIButton+Activity'
pod 'HexColors'
pod 'AFNetworkActivityLogger'
pod 'HCSStarRatingView', :git => 'https://github.com/hsousa/HCSStarRatingView.git'
pod 'LGSideMenuController'
pod 'DateTools'
pod 'SDWebImage'
pod 'SSCWhatsAppActivity'
pod 'UIViewController+BlockSegue'

第一个问题是SSKeychain pod:

SSKeychain Error

在代码中我使用“引号”#import "SSKeychain/SSKeychain.h"包含SSKeychain,但如果我理解正确,我需要从<angle>开始使用#import <SSKeychain/SSKeychain.h>?但在这种情况下,我收到相同的错误,但在我的代码中。

我的构建阶段:

Build Phases

无论如何,我发现SSKeychain的分叉带有“引号”导入(https://github.com/adamwulf/sskeychain/commit/2b7fd878415e8e4f23f74636cdd8c993466d0749)并切换到那些版本。

但现在我和许多其他豆荚(几乎全部都有)有同样的问题:

FBSDKCoreKit error

在应用中导入:#import "FBSDKCoreKit/FBSDKCoreKit.h"

我真的需要分叉每个repo并更改import语句吗?或者我以错误的方式包括豆荚?

PS:我在每次构建尝试之前清理派生数据和项目。

Cocoapods版本:0.39.0

4 个答案:

答案 0 :(得分:12)

由于你在Podfile中使用了Modules,为什么不呢:

struct Foo;

impl Foo {
    fn foo(&mut self, bar: &mut Bar) {
        bar.bar();
    }
}

struct Bar;

impl Bar {
    fn bar(&mut self) {
        println!("bar")
    }
}

struct Tupled(Foo, Bar);

impl Tupled {
    fn foobar(&mut self) {
        self.0.foo(&mut self.1);
    }
}

struct Named {
    foo: Foo,
    bar: Bar,
}

impl Named {
    fn foobar(&mut self) {
        self.foo.foo(&mut self.bar);
    }
}

fn main() {
    let mut tupled = Tupled(Foo, Bar);
    tupled.foobar();

    let mut named = Named{ foo: Foo, bar: Bar };
    named.foobar();
}

而不是:

@import SSKeychain;

测试:

  • 创建一个简单的iOS项目,只需一个ViewController
  • 使用上面的代码
  • 创建一个Podfile
  • 运行pod install
  • 打开工作区
  • build&amp;运行:它编译好了

答案 1 :(得分:7)

我终于想通了!通过从链接二进制文件库中删除private void Event1 { //do something.. } private void Event2 { //do other things } private void Event3 { //Here I want to return to the event 1 to make a loop } 并再次手动添加它们来解决此问题。

感谢您的帮助!

答案 2 :(得分:0)

同时检查pod install上的错误消息。

在我的情况下,我在FRAMEWORK_SEARCH_PATHS中使用自定义导入,只是因为我这样做,每当我执行pod install时,CocoaPods添加的额外搜索路径都没有被添加。所以我不得不删除我的自定义路径,然后他们出现了。然后我添加了自定义路径。

最好做pod deintegrate,删除de xcworkspace文件并再次执行pod install。然后添加自定义构建设置。

这是我得到的错误:

[!] The App [Debug] target overrides the FRAMEWORK_SEARCH_PATHS
build setting defined in Pods/Target Support Files/Pods-AppLib/Pods-AppLib.debug.xcconfig. 
This can lead to problems with the CocoaPods installation

答案 3 :(得分:0)

在我的情况下,我已经为Objective C Project下载了几个ObjC Pods的问题然后我需要一个swift pod,所以我在我的pod文件中启用use_framwork并安装那个swift pod,安装后的swift pod导入问题在很多类中都会到达ObjeC库,所以

我采取了哪些措施来解决此问题?

  1. 从pod文件中剪切所有Objective C pod
  2. 打开终端并运行命令:cd path/myProject
  3. 终端运行命令:pod install
  4. 在pod文件中再次过去(所有Objective C pod)并保存
  5. 终端运行命令:pod install