我正在构建一个iOS静态库,并希望提供对位码的支持。为了实现这一点,我进入构建设置,搜索“自定义编译器标志”并添加-fembed-bitcode。这将使用位码构建库,在XCode 7下一切正常。
然而,通过上述方法,我失去了与XCode 6的向后兼容性。因此,我必须向我的用户发布两个不同的库版本,一个带有位码标记,一个没有,因为并非每个人都升级到XCode 7。
是否有一种方法可以启用位码库并具有向后兼容性,而无需发布2个不同版本?
更新:
你好@Vinicius Jarina,谢谢你的信息。我知道你可以创建一个Fat库,我想这是常见的做法。到目前为止,我是为两个架构进行构建:
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdK iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
然后使用lipo来打包成一个fat库,例如:
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
然后像这样创建一个 fat lib:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
我该如何在我的脚本中同时包含这两个文件,然后将它们打包成一个大型库?
更新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
然后像这样创建一个 fat lib:
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"