2016-03-08 49 views
3

我創建了一個動態可可框架,我想跨我的應用程序使用。iOS9:使用動態框架與模擬器和設備

在構建實際設備的框架之後,我將它帶到應用程序中。我只能在該設備上運行該應用。

當我嘗試在模擬器上運行它時,框架文件無法識別。我收到錯誤消息:'ViewController' is unavailable: cannot find swift for declaration for this class

我嘗試構建iPhone 6模擬器的框架並在iPhone 6模擬器上運行應用程序,但同樣的問題仍然存在。

如何創建/構建單個框架,我可以將它帶入任何應用程序並能夠在模擬器和設備上使用它?

回答

5

你正在做的是建立一個「通用框架」。我回答了一個關於這個here的問題,但是我會總結一下你的要點:

你不能編譯它的原因是因爲模擬器運行在與設備不同的架構上。另外,不同的iPhone模型運行在不同的架構上。您可以查看this圖像以查看每個體系結構上運行的設備。模擬器運行在mac弧上,這是i386和x86。你需要做的是爲每個架構構建,然後通過稱爲「lipo」的過程將它們合併在一起。

要做到這一點,你想設置「建立活動架構」爲NO。那麼你應該爲「通用iOS設備」構建你的框架。然後,如果從第一個鏈接複製構建腳本,並將其作爲聚合目標,則會構建每個體系結構並將它們合併到最終產品中。這被稱爲FAT框架,然後您可以在終端中運行命令「lipo -info」,您將看到您的框架包含所有體系結構,這正是您想要的。

+0

嗨。感謝發佈。我在我的框架中使用另一個名爲Alamofire的框架。當我使用你的腳本時,我的框架不承認Alamofire。 – user1107173

+0

當我刪除你的腳本時,它工作正常。 – user1107173

+0

偉大的腳本。是否有可能以這種方式構建跨平臺(例如iOS + watchOS)框架? – kelin