2015-10-12 52 views
18

我有一個生成靜態庫的Xcode項目。我的團隊計劃在Swift進行所有新的開發。 It is not possible to add Swift files to the static library project。我們正在放棄對iOS 7的支持,因此現在可以在我們的iOS應用中包含框架。因此,我打算將我的靜態庫項目轉換爲框架項目。將靜態庫目標轉換爲Xcode項目中的框架目標

我看了,但我找不到任何工具或建議如何執行此轉換。靜態庫很大(超過100個.m文件)。

我希望得到比創建新的並行框架目標更好的答案。我已經嘗試過兩次了。第一次作爲一個快速的目標,但我無法輕鬆導入所有Objective C文件。接下來,作爲一個Objective C目標,但沒有.pch了。

+0

我遇到了同樣的問題,創建了混合objC + swift代碼框架。你有沒有找到任何解決方案@Jeffery Thomas? –

+1

@LouWeed號這只是一天的工作。我創建了一個新的Objective C目標,然後重新創建了所有目標設置(包括.pch)。 –

+1

偉大的問題,很遺憾聽到沒有發現非手動解決方案。 :( –

回答

1

我看到有人手動創建了框架,創建了一個module.framework文件,並將所有的頭文件複製到了一個module.framework/Headers文件夾中。該解決方案似乎可行,該項目可以正確導入文件並正確地將其視爲框架。

我不確定這是否是最好的方式來做到這一點艱難,我試圖在一個大的項目,ATM是通過cocoapods導入靜態庫,但它似乎有一些問題的可見性一些使用框架的類。

+0

我可以包括從其他框架的頭文件到我自己的框架,以便最終用戶將看到我的框架,並可以從我的其他框架訪問類? – Saty

+0

你還記得他是如何將它們全部粘貼到的編譯源部分框架?我有幾千個文件需要處理 –

4

的靜態/動態鏈接框架從靜態鏈接庫轉換,

  1. 添加一個新的可可觸摸框架,在現有的靜態鏈接庫項目的目標。
  2. 在構建階段中,將所有.m,.mm,.c,.cpp,.metal等添加到靜態鏈接框架目標的「\ Build Phases \ Compile Sources」階段。
  3. 將要公開的標題放在「\ Build Phases \ Headers」中。
  4. 對於動態鏈接框架,請記住檢查Build Settings中的Mach-O Type設置。如果你打算使用swift,你需要確保Mach-O類型被設置爲動態庫,以便它成爲一個動態鏈接框架。對於靜態鏈接框架,您需要將Mach-O類型設置爲靜態庫,但不能在轉換後的靜態鏈接框架中使用swift(只允許使用objective-c,objective-C++,C++,C等) 。

那麼對於想要使用這個框架的應用程序只需要包含頭文件作爲#進口,並添加了一個框架,「構建階段\鏈接二進制與圖書館」你的應用程序的目標。如果轉換後的框架是動態鏈接框架,則需要將其放入「嵌入式二進制文件」中。

+0

不久我添加一個swift文件到我的新項目中我得到'Swift不支持靜態庫' – lostintranslation

+0

建議的方法是將「靜態鏈接庫」到「靜態鏈接框架」。雖然Swift目前不支持靜態庫,但不能只是將swift添加到新創建的「靜態」鏈接框架中。 – joseph

+0

我對你上面的@joseph答案感到困惑,你說:「你不能只將swift添加到新創建的」靜態「鏈接框架中。」你的答案中的步驟的重點是什麼,如果結果仍然存在與Swift不兼容?也許你打算說「可以」而不是「不能」? 另外,如果這確實適用於Swift,那麼您可以採取更詳細的步驟嗎?我有同樣的問題,我似乎無法完全理解上述步驟(我在iOS開發中相當新) – Franco