[英]Build an iOS library with Bitcode in order to have backwards compatibility with XCode 6. How?
我正在構建一個iOS靜態庫,我想為bitcode提供支持。 為了實現這一點,我轉到Build settings,搜索“custom compiler flags”並添加-fembed-bitcode。 這使用bitcode構建庫,在XCode 7下一切正常。
然而,按照上面的方法,我放松了與XCode 6的向后兼容性。據說我必須向我的用戶發送2個不同的庫版本,一個帶有bitcode標志,一個沒有,因為不是每個人都升級到XCode 7。
有沒有辦法讓bitcode啟用庫並具有向后兼容性,而無需發送2個不同的版本?
您好@Vinicius Jarina感謝您的留言。 我知道你可以創建一個胖庫,我想這是一種常見的做法。 到目前為止我所做的是為這兩種架構構建:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdK iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
然后調用lipo打包在胖庫中,如:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
但是,我現在該怎么辦呢? 我根據這個鏈接嘗試了類似的東西,但沒有運氣:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" OTHER_CFLAGS='-fembed-bitcode' -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" OTHER_CFLAGS='-fembed-bitcode' -target "${FMK_NAME}" -sdk iphoneos
然后像這樣創建一個胖lib:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
我如何在我的scipt中包含兩者,然后將它們打包到一個胖庫中?
我終於成功完成了這項工作,我在這里列出了我可能面臨同樣問題的解決方案:
xcodebuild -configuration "Release" ENABLE_BITCODE=NO -target "${FMK_NAME}" -sdK iphoneos
xcodebuild -configuration "Release" ENABLE_BITCODE=NO -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" ENABLE_BITCODE=YES -target "${FMK_NAME}" -sdk iphonesimulator
xcodebuild -configuration "Release" ENABLE_BITCODE=YES -target "${FMK_NAME}" -sdk iphoneos
然后像這樣創建一個胖lib:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
您可以嘗試使用不同的庫創建fat-library。
lipo -create -output libAndreasv.a libAndreasvBitcode.a libAndreasvARMv7.a libAndreasvARM64.a
這對於胖庫(x86,x64,ARMv7,ARM64)來說也適用於bitcode。
也許我錯過了一些東西,但我不相信你可以在胖庫中有重復的架構,無論bitcode是否啟用/禁用。 例如,以下命令會導致我出錯:
lipo -create libcurl_iOS_bitcode.a libcurl_iOS_nobitcode.a -output libcurl_iOS_both.a
fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: libcurl_iOS_bitcode.a and libcurl_iOS_nobitcode.a have the same architectures (armv7) and can't be in the same fat output file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.