我想創建一個通用靜態庫,稱爲sampleStaticLib.a,它被包含在名爲HelloWorld的應用程序中。 HelloWorld應用程序需要使用靜態庫中定義的API,並且需要在iOS模擬器和iOS設備上工作。我從Internet上的各種帖子瞭解到,我可以通過使用lipo工具將模擬器和設備的靜態庫聚合到通用庫中,然後在HelloWorld.xcodeproj中包含通用庫來實現此目的。創建通用靜態庫時使用lipo vs「valid architecture」
然而,作爲選擇,如果我做到以下幾點:
- 只需設置靜態庫xcodeproject (sampleStaticLib.xcodeproj)有效的架構「的ARMv7 armv7s arm64的i386 x86_64的
- 產生sampleStaticLibrary。一個
- 包括它在HelloWorld.xcodeproj
我意料的是,因爲我設置的的有效架構ampleStaticLib'跨越x86和ARM的所有體系結構,該庫應該可以在模擬器和設備上工作。但它在模擬器上不起作用。
因此,在創建通用靜態庫時,不能設置一個寬泛的「有效體系結構」替換使用'lipo工具'的需要嗎?
謝謝傑里米。那麼,在iOS SDK中,VALID_ARCHS =「armv7 armv7s arm64 i386 x86_64」是什麼意思?我在幾個帖子中看到了這樣的設置。 'i386'和'x86_64'如何適應這個空間,如果這些架構甚至不被iOS設備支持,就像您在下面的鏈接中看到的那樣? https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/XcodeBuildSettingRef/1-Build_Setting_Reference/build_setting_ref.html#//apple_ref/doc/uid/TP40003931-CH3-SW85 – user777355
這是可以被選中。通常,開發人員通過在項目窗口的左上角選擇具有活動方案的設備或模擬器來選擇體系結構。如果開發者選擇了iPhone5設備,那麼活動架構是armv7。如果選擇iPhone3GS,Xcode將會出錯,因爲armv6不在列表中。 –
@WaltSellers:如果沒有iOS設備將運行這些列表,那麼爲什麼還要將架構「i386」和「x86_64」添加到此列表中? (至少直到今天)。即使x86體系結構未包含在「VALID_ARCHS」中,默認的xcodeproject仍會在模擬器上運行。 – user777355