首先,一些一般定義(特定於iOS):
靜態庫 - 在編譯時鏈接的代碼單元,其不改變。
但是,iOS靜態庫是而不是允許包含圖像/資產(僅限代碼)。不過,您可以使用媒體套件來解決這個難題。
在Wikipedia here上可以找到更好更正式的定義。
動態庫 - 在運行時鏈接的代碼和/或資產單位可能更改。
但是,只有Apple被允許爲iOS創建動態庫。您不允許創建這些內容,因爲這會讓您的應用遭到拒絕。 (請參閱this其他SO帖子以進行確認和推理)。
軟件框架 - 編譯組代碼完成某項任務......因此,你其實可以有一個靜態框架或動態的框架,這是典型的只以上的編譯版本。
查看Wiki on Software Framework瞭解更多詳情。
因此,在iOS上,您唯一的選擇基本上是使用靜態庫或靜態框架(主要區別在於靜態框架最常分佈爲已編譯的.a
文件,而靜態庫可以簡單地作爲子項目 - 您可以看到所有代碼 - 首先編譯的代碼及其生成的.a
文件被項目用作依賴項)。
現在我們對這些術語很清楚(呃),爲iOS設置一個靜態庫和支持媒體包並不是太困難,並且有很多關於如何做這些的教程。我個人會推薦這一個:
https://github.com/jverkoey/iOS-Framework
這是一個非常直接的指導,沒有涉及「假靜態庫」的缺點......看看更多信息.. 。
一旦你創建了你的靜態庫,它就像在Git中包含一個子模塊一樣簡單,以便在不同的項目中使用。
祝你好運。
編輯
關於子項目一個項目中,據我所知,要得到這個工作/編譯正確,實際上需要建立在子項目首先編譯一個編譯鏈,它創建一個靜態框架.a
文件,該文件被項目用作依賴項。
下面是其中談到這另一個有用的教程:
http://www.cocoanetics.com/2011/12/sub-projects-in-xcode/
EDIT 2
由於iOS 8的,蘋果現在允許開發人員創建動態的框架! (注意:您的應用必須具有iOS 8的最低目標才能包含動態框架...不允許使用背面移植。)
這已添加爲新的項目模板。在Xcode 6.1,這可以發現在:
New Project -> iOS -> Framework & Library -> Cocoa Touch Framework
您可以創建類似'框架內框架'的傘框架http://stackoverflow.com/a/27638841/1582217 – 2014-12-24 16:40:05
[如何在iOS sdk中創建Umbrella框架?](http:/ /stackoverflow.com/questions/27484997/how-to-create-an-umbrella-framework-in-ios-sdk) – 2014-12-25 07:59:31