相关疑难解决方法(0)

iOS库到BitCode

我最近下载了Xcode 7 beta,Xcode抱怨我的一些C库没有被编译成BitCode.我如何告诉Clang生成与iOS兼容的BitCode?我在stackoverflow上看到了类似的答案,但我不知道它们是否适用于为iOS生成BitCode库.

编辑:

我正在使用正确的设置-fembed-bitcode,但是当我尝试存档时,我收到错误:ld:警告:忽略文件XXXX/XXXX,文件是为存档构建的,而不是链接的架构(arm64).当我使用-fembed-bitcode-marker时,我可以存档,但是我收到错误:无法生成完整的bitcode包,因为XX/XX仅使用bitcode标记构建.必须从启用了bitcode的Xcode存档构建生成库.

什么是错误的任何想法?该库正在成功编译,但它不允许我存档.我创建了一个简单的添加函数并将其放入库中,我得到了相同的症状,因此它不是我正在编译的库.

编辑2:您必须使用bitcode和lipo一起构建arm64和armv7版本.使用bitcode在归档时不会消除对胖库的需求.来源:https://forums.developer.apple.com/message/25132#25132

c ios8 bitcode xcode7-beta2

49
推荐指数
5
解决办法
4万
查看次数

如何检查构建的静态库包含bitcode?

我有一个由其他公司建立的静态库.我想知道它是否是一个包含bitcode的静态库,哪个命令可以在终端中检测到它?

bitcode

34
推荐指数
2
解决办法
2万
查看次数

`-fembed-bitcode`和BITCODE_GENERATION_MODE有什么区别?

我一直在更新一个静态库来支持bitcode,从我的研究中我发现了两种实现方法:

  • fembed-bitcode在我的项目构建设置(链接)中将标志添加到其他C标志选项
  • 使用键BITCODE_GENERATION_MODE设置为bitcode(链接)添加用户定义的设置

这两个选项有什么区别吗?

我注意到的唯一区别是,通过使用fembed-bitcode,生成的iphonesimulator静态库将在启用完全bitcode的情况下构建(在我的情况下,二进制大小从5MB变为13MB,我可以检查bitcode支持使用otool),这看起来似乎不大使用它有任何不同.

objective-c static-libraries bitcode

28
推荐指数
1
解决办法
1万
查看次数

使用Bitcode构建iOS库,以便与XCode 6向后兼容.如何?

我正在构建一个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
Run Code Online (Sandbox Code Playgroud)

然后调用lipo打包在胖库中,如:

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
Run Code Online (Sandbox Code Playgroud)

但是,我现在该怎么办呢?我根据这个链接尝试了类似的东西,但没有运气:

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
Run Code Online (Sandbox Code Playgroud)

然后像这样创建一个胖lib:

lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
Run Code Online (Sandbox Code Playgroud)

我如何在我的scipt中包含两者,然后将它们打包到一个胖库中?

更新2:

我终于成功完成了这项工作,我在这里列出了可能面临同样问题的其他人的解决方案:

xcodebuild -configuration "Release" ENABLE_BITCODE=NO …
Run Code Online (Sandbox Code Playgroud)

ios xcode6 ios9 xcode7 bitcode

17
推荐指数
1
解决办法
730
查看次数

如何使用ENABLE_BITCODE编译OpenCV iOS

当我尝试使用XCode 7 + iOS SDK 9使用OpenCV 2.4 iOS编译我的XCode项目时,XCode抱怨说

ld:'opencv2.framework/opencv2(alloc.o)'不包含bitcode.您必须在启用bitcode(Xcode设置ENABLE_BITCODE)的情况下重建它,从供应商处获取更新的库,或禁用此目标的bitcode.对于架构arm64

clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

并拒绝链接.经过一些谷歌搜索,结果是因为Apple在App Store中添加了一个名为Bitcode的新功能,用于优化应用程序.虽然OpenCV iOS二进制文件尚未更新为包含Bitcode,但它无法通过链接阶段.

一些参考指出了一个禁用的临时解决方案,ENABLE_BITCODE因此可以在没有Bitcode的情况下完成链接.这将阻止为Apple Watches编译应用程序,因为Bitcode对于Watch Apps是强制性的.因此我的问题是,是否有一些(最简单的)方法来编译启用Bitcode的iOS OpenCV?(更好地使用编译框架的下载链接)

xcode opencv ios bitcode

16
推荐指数
2
解决办法
5235
查看次数

xcode项目构建成功,但归档时:bitcode bundle可以

我的XCode项目是由Unity生成的,所以我能够毫无错误地构建项目.

但是,当我尝试将其归档为临时,我得到这个:

ld:无法生成bitcode包,因为'/Users/myuser/Desktop/device3/Libraries/Plugins/iOS/AdmobPlugin.a(UnityEncoder.o)'是在没有完整bitcode的情况下构建的.必须从Xcode Archive或Install build for architecture arm64生成bitcode的所有目标文件和库

在这种情况下需要什么?

xcode unity-game-engine ios

16
推荐指数
2
解决办法
9525
查看次数