簡體   English   中英

使用Bitcode構建iOS庫,以便與XCode 6向后兼容。如何?

[英]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中包含兩者,然后將它們打包到一個胖庫中?

更新2:

我終於成功完成了這項工作,我在這里列出了我可能面臨同樣問題的解決方案:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM