首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用位码构建iOS库,以便与XCode 6向后兼容。方式?

使用位码构建iOS库,以便与XCode 6向后兼容。方式?
EN

Stack Overflow用户
提问于 2015-10-07 19:46:37
回答 2查看 801关注 0票数 17

我正在构建一个iOS静态库,我想为位代码提供支持。为了实现这一点,我转到构建设置,搜索“自定义编译器标志”并添加-fembed-bitcode。这将使用位代码构建库,并且所有内容在XCode 7下都运行良好。

然而,通过上面的方法,我失去了与XCode 6的向后兼容性。尽管如此,我不得不向我的用户发布了两个不同的库版本,一个有bitcode标志,另一个没有,因为不是每个人都升级到XCode 7。

有没有一种方法可以让bitcode库具有向后兼容性,而不需要发布2个不同的版本?

更新:

您好@Vinicius Jarina,感谢您的留言。我知道你可以创建一个fat库,我想这是一种常见的做法。到目前为止,我所做的是为这两种架构构建:

代码语言:javascript
复制
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdK iphoneos 
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator

然后调用lipo将其打包到fat库中,如下所示:

代码语言:javascript
复制
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"

但是,我现在该怎么做呢?我基于这个link尝试了这样的东西,但没有成功:

代码语言:javascript
复制
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:

代码语言:javascript
复制
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"

我如何在我的scipt中包含这两个内容,然后将它们打包到一个fat库中?

更新2:

我最终成功地做到了这一点,我在这里列出了我对其他可能面临同样问题的人的解决方案:

代码语言:javascript
复制
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:

代码语言:javascript
复制
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
EN

回答 2

Stack Overflow用户

发布于 2015-10-09 21:41:18

您可以尝试使用不同的库来创建一个fat库。

lipo -create -output libAndreasv.a libAndreasvBitcode.a libAndreasvARMv7.a libAndreasvARM64.a

这曾经适用于fat库(x86、x64、ARMv7、ARM64),也应该适用于位码。

票数 7
EN

Stack Overflow用户

发布于 2015-11-11 03:53:14

也许我遗漏了一些东西,但我不相信你可以在一个fat库中有重复的架构,不管bitcode是启用还是禁用。例如,下面的命令会导致我出错:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32991375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档