項目中靜態庫出現了沖突,所以我采用動態庫方式封裝靜態庫解決這個問題;
以環信SDK為例:
CMD+Shift+N
導入SDK
使用:你需要自己聲明一個類調用這些頭文件中方法,即我們自己轉接實現一下。值得注意的是,如果你引用了動態庫中文件,那麼該文件所Import的文件也應該為public,如此類推。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPjxpbWcgYWx0PQ=="這裡寫圖片描述" src="/uploadfile/Collfiles/20160916/201609160942311619.png" title="\" />
然後我們將這個文件的.h文件設為public,即可在外部引用包含在動態庫中的該文件。
此外靜態庫所需要的依賴庫,你在你的framework工程中也必須導入
此外導入UI文件(xib,view,VC等),其實就是一個項目的文件,放在動態庫中封裝
注意圖片和xib資源最好不要放入動態庫中,因為動態庫中導入圖片需要設置為動態庫的路徑,最好合成一個bundle,或者文件夾,與動態庫一起放入所需工程中。
最好是圖片和xib與動態庫分開,作為資源文件。即將用到的xib全部打包,和動態庫一起給用戶
靜態庫bitcode不支持,設置動態庫項目bitcode為NO
然後選擇項目編譯
1.如果出現Undefine symbol to arm7s 類似問題,檢查下你的依賴庫全部導入沒有;
2.見圖
出現這個問題,修改下other linker flag 為 -read_only_relocs suppress
然後可以編譯模擬器真機版本,然後來合並各CPU類型版本
選中項目:
Other - >Aggregate
拷貝下面腳本:
# Sets the target folders and the final framework product. # 如果工程名稱和Framework的Target名稱不一樣的話,要自定義FMKNAME # 例如: FMK_NAME = "MyFramework" FMK_NAME=${PROJECT_NAME} # Install dir will be the final output to the framework. # The following line create it in the root folder of the current project. INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework # Working dir will be deleted after the framework creation. WRK_DIR=build DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework # -configuration ${CONFIGURATION} # Clean and Building both architectures. xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos clean build xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator clean build # Cleaning the oldest. if [ -d "${INSTALL_DIR}" ] then rm -rf "${INSTALL_DIR}" fi mkdir -p "${INSTALL_DIR}" cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/" cp -R "${SIMULATOR_DIR}/" "${INSTALL_DIR}/" # Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product. lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/${FMK_NAME}" rm -r "${WRK_DIR}" open "${INSTALL_DIR}"
然後選擇運行
然後會彈出合並後的framework 即最終版本;
將framework與資源文件導入所需工程中
提示:
選擇工程 -> build phases -> embed frameworks
(沒有的話 ,去general裡面有)
添加你的framework,然後再運行即可;
然後你就可以開始調用動態庫的代碼了;