2009-12-27 59 views
0

當我得到第三方靜態庫時,我可以在我的調試或發佈版本中爲模擬器和設備使用它。但是,當我在本地構建時,它將針對調試模擬器/設備或發佈版本。然後我必須協調我的主機應用程序以匹配庫構建。我如何創建一個與許多第三方靜態庫的主機應用程序的所有構建版本一起工作的單個靜態庫構建?爲所有版本創建靜態庫

回答

1

我不認爲這有一個「神奇」的iPhone解決方案。 我曾經找過相同的東西沒有找到任何「易於使用」的解決方案。 最好的,我能找到: http://www.clintharris.net/2009/iphone-app-shared-libraries/ 特別是有關「胖庫」的部分,這是指http://latenitesoft.blogspot.com/2008/10/iphone-programming-tips-building-unix.html 但製作配置看起來不容易(至少對我來說)。

我這樣做的方式: 我爲我需要的所有配置(模擬器x86調試和設備臂調試)分別構建靜態庫。這給了我兩個不同的.a文件。 我給他們改名mylibrary_arm.a和mylibrary_x86.a

然後,對於希望使用這些庫2,我拖放兩個.a文件到需要的。一個庫+的客戶項目中的任何項目。 h頭文件,可以使用這些庫。 然後,當我在這個客戶端項目中選擇模擬器或設備時,編譯器選擇正確的.a AUTOMATICALLY進行編譯並正確運行。

所以最後,唯一枯燥的phasis是.a自己的代,但它們的使用非常簡單,XCode自動調整自己。

+0

好的,好主意。我猜測結果.app文件將只包含與其構建相對應的.a文件? – 4thSpace

+0

由於這是一個靜態鏈接,因此您不會在.app文件中看到最終的.a文件(爲當前選定的目標生成一個可執行文件)。 但是,如果我查看生成的二進制大小,它看起來非常正確=沒有無用的可執行代碼似乎嵌入到此二進制文件中。 – yonel

+0

您是否爲模擬器和設備創建調試/發佈版本,並在主機項目中最終生成四個版本的庫文件?我注意到,如果項目中有兩個相同的文件名 - 模擬器和設備的mylib_debug.a,則Xcode不會投訴。 – 4thSpace