你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS的動態庫

iOS的動態庫

編輯:IOS開發綜合

動態庫這個技術出現是蠻早的了,應用使用動態庫有方便的地方也有痛苦的地方。接觸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上的審核是通不過的,請千萬千萬注意這一點。

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved