2015-04-03 274 views
43

我試圖在Xcode中將Facebook SDK添加到我的iOS 8 Objective-C應用程序中。我根據FB-dev指令進行了安裝。但是,我收到一個「無法生成模塊'FBSDKCoreKit'」錯誤時,我將標題添加到我的AppDelegate.m文件。FBSDKCoreKit的Facebook iOS8 SDK構建模塊錯誤

#import "AppDelegate.h" 
#import <FBSDKCoreKit/FBSDKCoreKit.h> 

根據我讀其他地方

  1. 我已經清理構建和重新安裝的Xcode。
  2. 我也重新安裝了Facebook SDK安裝程序,並試圖將其添加到一個空白項目(以防萬一我的應用程序出現問題)。
  3. 我已經仔細檢查了plist和框架文件FB列表中的說明,但沒有任何東西似乎沒有丟失。

我很難過。

+0

這些答案都不適合我。礦是與舊Bolts.framework碰撞。 http://stackoverflow.com/a/33114309/3324388 – Aggressor

回答

39

不知道是否有副作用,但設置了「允許非模塊化的框架模塊包括」設置爲YES在生成設置解決了這個問題對我來說。希望它也適用於你。

+0

我試過這個,但仍然得到「包含非模塊化標題」錯誤。那是你唯一改變的東西嗎? – TIMEX

+0

是的,但我不確定它爲什麼起作用。我嘗試了一個示例項目,並將其設置爲NO。 – vlad

+0

好帖子適合我 – Girish

3

得到這個問題也一樣,你需要設置

Enable Modules (C and Objective-C) 

NO

47

FBSDKCoreKit不能由於建「包括框架模塊內部非模塊式頭座的」在FBSDKAppLinkResolver.h頭文件的錯誤:在#import <Bolts/BFAppLinkResolving.h>線。

Swift compiler error: "non-modular header inside framework module"(切換CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES)的解決方案沒有幫助我。

我的解決辦法:

  1. 創建Bolts.framework文件模塊圖:模塊/ module.modulemap(如在FBSDKCoreKit.framework)
  2. 將這樣的代碼內

    framework module Bolts { 
    umbrella header "Bolts.h" 
    
    export * 
    module * { export * } 
    
    
    explicit module BFAppLinkResolver { 
        header "BFAppLinkResolver.h" 
        link "BFAppLinkResolver" 
        export * 
    }} 
    

有趣的事實是,在這樣的FBSDKCoreKit方案由Facebook的實現,他們爲什麼不申請入螺栓...

+0

這個答案是爲我做的伎倆。 – Gabriel

+0

工程就像一個魅力! – nonamelive

+0

謝謝。最後得到你的解決方案,它在這裏工作正常。 –

0

你可能導入隨Facebook的SDK到您的項目「樣本」文件夾中。從項目中刪除這些文件的引用,它應該工作。無需更改您的構建設置標誌。

11

對於Objective-C的 我用保羅萊恩回答: https://developers.facebook.com/bugs/362995353893156/

  1. 的-ObjC標記添加到項目中的其他鏈接器標記構建設置。(如果你不想添加到項目配置,初始化按鈕類)
  2. 「允許非模塊化包含在框架模塊」設置爲YES在生成設置
  3. 設置「啓用模塊」(c和Objective-C )爲無

(也不要忘了添加框架,對我來說是: 「AdressBook」 「QuartzCore」 「CoreLocation」 「CoreGraphics在」 ,如果還沒有加入,也 「UIKit」 「基金會」 「CoreData」)

及其終於爲我工作

所有這些用於鏈接FBSDK在自定義文件夾在我的項目文件夾〜/文檔/ FacebookSDK

+0

爲我工作...酷(y) – good4pc

1

我也面臨同樣的問題。問題是我的項目目錄中包含名爲「Application Demo」的空間。這就是爲什麼每當我拖動Facebook框架時,都會在設置中的框架搜索路徑中添加空間的原因。刪除此空間解決了問題。

+0

哇,對我來說發生同樣的事情。這有什麼解釋嗎? – XcodeNOOB

0

我應該引導你分配給Facebook的這個當前未決問題:https://developers.facebook.com/bugs/362995353893156/。答案沒有在這裏幫我,所以我想我們只是坐在鴨子:從Facebook的Chris Pan

截至截稿時,一個消息:

「的4.0.1版本中添加模塊映射(應已經避免了橋接標頭的需求),但看起來這可能導致了一些其他兼容性問題。我們正在進行適當的修復,但另一個解決方法是從每個FBSDK * Kit.framework軟件包中手動刪除模塊映射;例如,rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/(並重複用於FBSDKLoginKit和FBSDKShareKit)「

Kosala Ubayasekara得到它的工作,但由於這是一個開放的問題,你可能想簡單地等待一個官方的解決方法是明確的:

  1. 在對蘋果LLVM模塊構建設置:

    1. 設置允許非模塊化包含在框架模塊中「設置爲NO
    2. 使模塊(C和Objective C)爲NO。
  2. 創建一個橋接報頭包括了Facebook SDK頭

  3. 鏈接橋接在構建設置標題:斯威夫特編譯器 - 代碼生成。
  4. 導入FBSDKCoreKit到應用程序委託文件和實施Facebook核心SDK要求每FB documentation
+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 –

+0

@Joker我包括Facebook的答案。 –

+0

@three_pineapples^ –

9

從克里斯·潘(臉譜隊): https://developers.facebook.com/bugs/362995353893156/

4.0。1發佈增加了模塊映射(應該避免了橋接頭的需求),但看起來這可能導致了一些其他的兼容性問題。我們正在進行適當的修復,但另一個解決方法是從每個FBSDK * Kit.framework軟件包中手動刪除模塊映射;例如,rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/(再次爲FBSDKLoginKit和FBSDKShareKit)

據我所知,我們有2個選項來解決這個問題:

  1. 刪除所有模塊的地圖克里斯說。
  2. 在Bolts.framework文件夾(在FacebookSDK文件夾中)中添加一個臨時(非正式)缺失的模塊映射文件。你應該檢查這個文件夾是否丟失。
+0

它爲我工作,謝謝! –

+0

此問題已在SDK 4.1中修復! –

+0

@TrinhNgocThuyen你確定它是固定的?我遇到這個問題4.6 – DevC

9

刪除模塊來自FacebookCoreKit.framwork的目錄。

enter image description here

+1

好)現在愚蠢的fb框架開始工作 – LightNight

+0

感謝和快樂編碼LightNight。 –

+1

其實只有爲我工作的解決方案。 – Makalele

14

只是在做下面就讓我來成功地構建應用程序。

在Build設置設置「允許非模塊化包括框架模塊」標誌YES

我不想設置「啓用模塊」(c和Objective- C)到NO

enter image description here

+1

我只需要做:將「允許非模塊化包含在框架模塊」標誌設置爲YES才能正常工作 –

+0

當我設置啓用模塊= NO時,我正面臨另一個庫中的問題。和Facebook問題修復,但在另一個圖書館出現錯誤。請幫助我 –

+0

這是什麼庫? –

0

同樣的問題與我同在。 ... 非上述解決方案適用於我.. 我設置了。模塊,旗幟和其他東西......但沒有任何幫助。

但對我來說這個問題是由

MOVE解決您的框架文件夾後,或在哪裏.PCH文件位於該文件夾。

當我的框架文件夾 @myapp/{frameworkFolder}/fbframeworks.
它顯示的問題。

我把它移動到myapp/myapp/modal/{fbframework}/. 然後這個問題就解決了。 (我的.pch文件位於myapp/myapp。)

可能相同可以幫助任何人有同樣的問題。

6

如果您有「FBSDKCoreKit」問題你可以試試下面的解決方案:

  1. 轉到構建設置,搜索「允許非模塊化」和設置

    「允許非模塊化包含在框架模塊中「標記爲是

enter image description here

  • 轉到文檔和/或文件夾FacebookSDK

    然後轉到FBSDKCoreKit.framework

    在該文件夾中刪除模塊文件夾。 然後在您的項目中添加FacebookSDK庫。

  • 設置爲框架搜索路徑「〜/文檔/ FacebookSDK」

    步驟查找框架搜索路徑

    轉到建設項目的設置,搜索「框架搜索路徑」。

    然後添加 「〜/文檔/ FacebookSDK」

  • enter image description here

    編輯:

    請打開Facebook的應用程序框架的搜索路徑並複製粘貼提到過的所有路徑在您的應用程序中。類似於我在以下屏幕截圖中附加的路徑

    enter image description here

    這將解決您的問題

    +0

    做到了這一切 - 仍然沒有運氣。在使用api和快速項目時,我只會遇到這個問題。臉書示例應用程序工作正常... –

    +0

    @ArEsiiX我已更新我的答案,我希望這對你有用。 – ABS

    0

    TL; DR在你的項目中刪除您Bolts.framework參考。

    這些或任何其他答案都不適用於我(在我的情況)。對於我的項目,我們從舊的Facebook SDK切換到Bolts.framework。

    閱讀該文檔

    SDK會自動加載它的框架和資源依賴性。

    因此,我認爲這是一場衝突。之前有過Bolts.framework,之後是我下載新的FacebookSDK包(本例中爲4.7)時出現的新包。

    刪除我的Bolts.framework可以解決問題(確保在重建前清理)。

    0

    我得到了同樣的問題,我用的是最新的Facebook SDK上的Xcode 6.4(FacebookSDKs-IOS-20160316),它始終使我這個錯誤,每當我把下面的代碼在我AppDelegate.m文件: #import <FBSDKCoreKit/FBSDKCoreKit.h>

    當我切換到Xcode 7.2時,問題解決了,錯誤消失了。猜猜這可能是版本兼容的問題

    如果您面臨同樣的問題,我可以嘗試使用Xcode 7.2來構建它。問題是Xcod 6.4可能永遠無法使用,只要您在項目中保留Facebook sdk即可。

    希望這會有所幫助!

    0

    對於那些來到這裏並像我一樣犯同樣的新秀錯誤的人。也許我可以節省一些時間。我正在研究一個主要由Objective-C代碼組成的舊項目。我們試圖在Swift中實現新的東西。

    這正是我想在我的銀行代碼

    import FBSDKCoreKit 
    
    class SomeClass { 
    
        func doSomething { 
        FBSDKAppEvents.logEvent("Some Event") 
        } 
    } 
    

    但是,編譯器抱怨說,它無法編譯模塊等

    我如何解決它

    • 從我的Swift代碼中刪除import FBSDKCoreKit
    • 編輯了一​​和進口FBSDKCoreKit有:#import <FBSDKCoreKit/FBSDKCoreKit.h>
    0

    確保你還進口螺栓框架,這爲我工作。