iOS的動態庫

來源:互聯網
上載者:User

動態庫這個技術出現是蠻早的了,應用使用動態庫有方便的地方也有痛苦的地方。接觸iOS開發之後不久就奇怪的發現iOS不支援開發動態庫,當時覺得有點奇怪,不過想想可能是蘋果的安全措施。

不過在開發中,總有情況是能使用動態庫比較方便的時候,搜了幾天資料,終於搞出了一個動態庫,共用一下。


Xcode中根本就不提供產生動態庫的選項,所以我們就需要從OS X的模板來產生動態庫,不過這樣產生的內容需要做一定的修改才能使用。

1. 修改Build Setting裡面的一些配置

Base SDK——需要修改成iOS的SDK

OS X Deployment Target ——修改成Compile Default

2. 編譯,這時會報錯

Check dependencies:Target specifies product type "com.apple.product-type.library.dynamic', but there's no such product type for the 'iphoneos' platform

這是報iphoneos平台不支援這樣的產品類型,這個比較麻煩,不過我們還是可以通過修改一系列xcspec檔案來規避這個問題。

這需要修改Xcode工具的一些配置來實現。具體來說:

開啟Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Product Types.xcspec這個檔案,搜尋“com.apple.product-type.library.dynamic”這一段,然後把相關的一段copy下來,粘貼到Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/iPhone Simulator ProductTypes.xcspec裡面

開啟Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Package Types.xcspec這個檔案,搜尋“com.apple.package-type.mach-o-dylib”這一段,然後把相關的一段copy下來,粘貼到Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications/iPhone Simulator PackageTypes.xcspec裡面

這樣就針對simulator修改好了,為了針對真機也可以使用,對於Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Specifications目錄下的對應檔案也做這樣的處理。

3. 確保幾個編譯參數

installation Directory改成@executable_path

Mach-O Type改成dynamic library

Executable Extension改成dylib

Executable Prefix置空

Precompile Prefix Header改成No

Prefix Header置空

這時再編譯,應該就可以通過了。

我們可以在庫裡面增加方法,然後寫應用來調用庫內的方法,實踐了一下,這樣做是可行的。


對於動態庫的技術來說,蘋果實際上是支援的,不說OS X平台上可以用動態庫。就是iOS上的應用,每個也要載入幾十上百個動態庫(DYLD載入的),但我們自己做動態庫蘋果是不支援的。在這裡再囉嗦一下,如果你使用了動態庫,蘋果AppStore上的審核是通不過的,請千萬千萬注意這一點。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.