2015-11-07 80 views
9

我已經在Swift xcode 7.1中創建了一個示例框架。 該框架然後構建用於分析,發佈版本。 發佈的框架然後添加(嵌入)到iOS測試應用程序。xcode 7.1 swift框架應用程序構建但不歸檔

該應用程序生成的罰款,但當試圖歸檔它。發生錯誤,說明 「無法生成位碼包,因爲'.../Test/FW.framework/FW'是在沒有完整位碼的情況下構建的,所有位碼的框架和dylib必須從Xcode Archive或Install build for架構arm64「

Framework和應用程序項目都是默認設置,啓用了Bitcode。

要確保框架有位碼,在框架

此命令

「otool -l FW.framework/FW | grep的__LLVM」

產量

segname的__LLVM

segname __LLVM

segname的__LLVM

segname的__LLVM

我缺少什麼? 我已經包含這兩個項目here,你可以下載它們並嘗試歸檔。

+0

似乎位碼格式不匹配。是通過歸檔導出的框架? –

+0

不,剛建立它用於分析,然後在「Release-iphoneos」中找到FW.framework以及單獨的文件「FW.framework.dSYM」。 – CodetrixStudio

+0

如何通過存檔將其導出?當我存檔框架時,它表示構建成功,沒有任何反應。我是否需要尋找歸檔的框架輸出文件 – CodetrixStudio

回答

26

xcode要求在歸檔期間生成所有嵌入式框架的位碼。

複製框架/ dylib的發佈版本是不夠的


歸檔的架構,然後再使用該框架的存檔版本從那時起。

要讓xcode存檔一個框架(通常它只存檔應用程序),請將框架目標的構建設置'skip install'設置爲NO!

+0

它可以工作,但還不夠...項目現在可以使用框架成功構建,但上傳iTunesConnect我收到一個錯誤... – saltwat5r

+0

和哪個錯誤 –

+0

現在是代碼簽名好嗎? –

17

您可以進行以下,如果你能構建框架(例如,如果你用自己的框架)

enter image description here

這將使你的框架來提供所需的位碼。


另一種替代選擇可以(根據文檔)

對於iOS應用,位碼是默認的,但可選的,如果你沒有watchOS和Apple TV適用。如果您提供 位代碼,則應用程序包中的所有應用程序和框架都需要包含 位代碼。對於watchOS和tvOS應用程序,位碼是必需的。

這個選項需要設置ENABLE_BITCODE在buildSetting每個目標NO,但預計今年不許使用位碼功能。

更多bitcode here

+0

我認爲這個答案也應該得到一些功勞。採用這種方法,您不必通過歸檔過程來運行框架。 –

+0

這是一個很好的解決方案,謝謝。 –

+0

這是比被接受的答案更好的解決方案。僅供參考可能會發生這種情況的未來人員。 – gikygik

相關問題