2017-08-24 82 views
0

我想創建一個包含Facebook和谷歌SDK登錄的swift框架,以便通過實現我的框架,他們兩個可能用於項目,而不需要單獨嵌入它們。我發現我可以使用pod for facebook SDK,但是我必須手動將Google SDK添加到我的框架中。
在谷歌SDK到達班,我試圖添加模塊創建在框架中嵌入的項目中找不到的框架

#import <GoogleSignIn/GoogleSignIn.h> 

到框架的傘頭。但是,當我的框架嵌入到項目中時,它指出找不到該文件。

我嘗試使用模塊方法代替。我創建了定義GoogleSignIn模塊的module.modulemap文件。我在框架中使用模塊沒有問題。
但是,當將我的框架嵌入到項目中時,它指出無法找到模塊。我甚至嘗試將Google SDK導入項目本身並在項目中創建模塊,但錯誤並未消失。

請問如何將google SDK導入到框架中,以便我可以在項目中使用我自己的框架而沒有任何問題?先謝謝你。

+0

我的個人意見是這是糟糕的設計。爲了將你的框架包含在任何東西中,你需要:(1)爲不需要的東西添加臃腫的代碼;(2)將它從其他認爲只是導入框架的開發者中隱藏起來;(3)當有人希望導入您的框架和FaceBook的Google登錄類時重複定義。框架通常不會以這種方式工作 - 請考慮您設計的下游分支。 – dfd

回答

0

您可以使用Objective-C橋接頭完成此操作。

首先添加一個目標c文件,然後你會被提示創建一個橋接頭。單擊是,然後刪除其他目標c文件。

在這個文件中把你的import語句:

#import <GoogleSignIn/GoogleSignIn.h> 

(這是假設你已經手動導入SDK)

確保你已經導入你的框架中鏈接的框架和庫,嵌入式二進制文件和Target Dependencies在應用程序的Build Phases設置。爲此工作。在此解決方案中,您可以將swift框架作爲主swift項目的文件添加到j文件中。

+0

是的,這有效,但問題是我需要在框架中實現谷歌登錄功能,並在我的項目中調用它們。要使用Google登錄創建功能,我必須導入它或在我的框架中創建一個模塊。我的框架沒有任何問題。當我將框架嵌入到項目中時,會出現問題,當在框架中導入標題或模塊時,項目發現錯誤。 –

+0

您是否嘗試過在您的框架中使用這些Objective C導入創建和使用橋接頭? –

+0

是的,這是我做的第一件事。我在框架的傘頭中導入了GoogleSignIn.h。它沒有任何問題構建。當我將該框架嵌入到項目中時,它在我輸入GoogleSignIn標頭的框架離子行中發現錯誤。 –