问题标签 [bitcode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
6355 浏览

ios - 如何使用位码选项制作胖框架?

环境:XCode 7.0.1 模块:Objective-C 捆绑类型:框架

嗨,我正在尝试创建一个框架来支持 armv7、armv7s、arm64、i386 和 x86_64。我正在使用聚合来制作胖库。在聚合脚本中,我正在运行两个 xcodebuild 命令 1. 用于 armv7、armv7s 和 arm64 以及 2. 用于 i386 和 x86_64 架构。另外,我在目标构建设置下设置了 Enable Bitcode=YES 和 Other C Flags=-fembed-bitcode。作为预防措施,我将 ENABLE_BITCODE=YES 和 OTHER_CFLAGS="-fembed-bitcode" 选项添加到 xcodebuild 命令

我的 xcode 构建命令如下 -

运行上述两个命令后,我将这两个版本结合起来使用以下命令制作一个胖框架二进制文件

我面临的问题是在创建 lipo 之后,我无法在启用位码的应用程序中使用它。运行后otool -l framework_binary | grep -LLVM,我没有看到启用位码的标志或 __LLVM。

Lipo 从胖二进制文件中删除位码。有没有办法在运行 lipo 命令时保留位码?

更正:根据 Nestor 的回复,我运行了 otool 命令,otool -l -arch armv7 framework_binary | grep LLVM令我惊讶的是,我可以看到 segname __LLVM clang。但是,当我将相同的胖框架二进制文件集成到我的项目中时,它在模拟器上构建良好,但是在设备上运行时抛出以下错误 - ld:'MyBinary' 不包含位码。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。对于架构 armv7

0 投票
2 回答
1330 浏览

ios - GoogleMaps 目标未在 Pods 项目中创建

系统信息:Xcode 7.0.1 w/iOS 9

我遇到的问题是:将 GoogleMaps pod (1.10.3) 添加到我的 podfile 后,应用程序在 Xcode 中为 iOS 模拟器构建,但不是为设备构建。

发生的错误如下:

ld: '/Users/<username>/Projects/Arsenal/LitterBug/Pods/GoogleMaps/Frameworks/GoogleMaps.framework/GoogleMaps(GMSCachedTile.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

我发现的每篇文章都提到ENABLE_BITCODE在 Pods 项目中将 pod 目标的标志设置为“否”。如果 GoogleMaps 目标是在 Pods 项目中创建的,那么这将是一个可行的选择,只要允许开发继续直到 Google 更新 SDK。

我当前的 podfile 看起来像:

当我运行pod install --verboseorpod update --verbose时,“安装目标”阶段似乎没有在 Pods 项目中安装 GoogleMaps 目标。通过查看工作区中的项目确实可以确认这一点。

在其他 pod 目标旁边创建了一个目标,称为“Pods-appname”。我已经尝试禁用此目标的位码,但它并没有解决问题。

如果其他人遇到过这个问题,请告诉我。我收到的原始错误目前正在作为问题进行跟踪,可以在此处查看: GoogleMaps issue 8219

当前的解决方法需要在工作区的 Pods 项目中存在一个 GoogleMaps 目标。

0 投票
1 回答
1124 浏览

ios - 如果一个或多个库有位码,我还能为 iOS 禁用位码吗?

即使我有一个或多个具有位码的库,我仍然可以构建和发布禁用位码的 iOS 应用程序吗?

并不是我所有的库都依赖于支持位码。但是我在某些论坛上读到,如果您的某些库具有位码,则您不能为您的 iOS 目标禁用位码。

如果我同时针对 iOS 和 watchOS 怎么办?我知道您可以有选择地为 watchOS 启用位码(实际上它是必需的)并为 iOS 目标禁用,但是在混合库的情况下呢?

谢谢

0 投票
1 回答
190 浏览

ios - Apple Watch Extension 缺少 Pushwoosh iOS SDK 的位码

我的应用程序使用 Pushwoosh iOS SDK 并具有 Apple Watch 扩展。所以需要使用位码。如果我尝试归档我的项目,我的 WatchKit 扩展目标会收到以下错误:

无法生成位码包,因为“/Pods/Pushwoosh/Framework/Pushwoosh.framework/Pushwoosh(PWBaseTracker.o)”是在没有完整位码的情况下构建的。必须从 Xcode Archive 或 Install build for architecture arm64 生成 bitcode 的所有目标文件和库

我给 Pushwoosh 写了一封邮件。还有什么我可以做的吗?(我的 Apple Watch 扩展目标中不需要 Pushwoosh)

谢谢你的帮助。

0 投票
0 回答
47 浏览

objective-c - 链接命令失败,退出代码(使用 -v 查看调用)[OpenCV on Obj C]

我正在使用最新版本的 openCV (opencv 2.4.9) 和 xCode 7.1 beta 3 这是我收到的错误消息:

有人有想法吗?谢谢你! 这就是如果我禁用位码会发生什么

0 投票
1 回答
438 浏览

xcode - tvOS:如何追踪:无效的可执行文件 - 可执行文件“xy”不包含位码

我的tvOS应用程序在 Apple 的服务器端验证中反复失败,并通过电子邮件通知说:

无效的可执行文件 - 可执行文件“VPK_FULL_TV.app/VPK_FULL_TV”不包含位码

我使用了这里描述的方法:How to check if a framework is BITCODE support for Xcode7 and my all libs/frameworks print out at least one line with segname __LLVM.

  1. 我想知道,这个测试有多足够otool?是否会发生测试打印出该行segname __LLVM但某些功能在没有位码的情况下仍被遗漏的情况?

  2. 还有另一种测试位码完整性的方法吗?

  3. 我还在标准库上尝试了这个测试,例如/Applications/Xcode-beta.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib/libresolv.9.tbd,但打印 NOsegname __LLVM行,因此表明没有包含位码。我应该是吧?这个 .tbd 库到底是什么?

otool顺便说一句,如果您发现它有用,这里有一些运行的快捷方式:

test_bitcode.sh

0 投票
1 回答
399 浏览

xcode - tvos:Alamofire 框架的 iTunesConnect 验证失败:不包含位码

上传到 iTunesConnect 以进行 TestFlight 分发后,我的 tvOS 应用程序验证失败。

验证失败并显示以下消息:

无效的可执行文件 - 可执行文件“MyApp.app/Frameworks/Alamofire.framework/Alamofire”不包含位码。

我的购物车文件:github "Alamofire/Alamofire" "tvOS".

我正在使用 XCode 7.1 的发行版。我没有看到ENABLE_BITCODE我的 tvOS 目标。(我假设我的目标启用了位码,因为它对于 tvOS 是强制性的)。此外,BITCODE_GENERATION_MODE设置bitcode为 Alamofire tvOS 分支。

otool -l Carthage/Build/tvOS/Alamofire.framework/Alamofire | grep LLVM不返回任何东西。所以,似乎我缺少位码支持。

在模拟器和真实设备上一切正常。

如何使用 Carthage 构建支持位码的 Alamofire 框架版本,以便通过 Apple 服务器端验证?

0 投票
2 回答
1813 浏览

ios - 在 iOS 中使用位码模式编译 FFMPEG

我编译了支持 iOS 7 和 8 的 FFMPEG 库,但自从最近发布的 iOS 9 发布了一个新功能,称为位码模式,作为默认设置,此设置已设置为 NO。

但如果我将其设置为是,将执行以下错误,

libavdevice.a(avfoundation.o)' 不包含位码。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。用于架构 arm64

有什么方法可以在启用位码的模式下编译支持 FFMpeg 的 FFMPEG

这是我使用的构建脚本

0 投票
1 回答
192 浏览

xcode - Xcode 7.1 中没有位码选项

我正在尝试向 Apple TV App Store 提交应用程序。但是 iTunes Connect 抱怨它不包含位码。但是 Xcode 7.1 构建选项中没有位码选项。

有没有人以前见过这个,你如何解决它?

在此处输入图像描述

0 投票
1 回答
1807 浏览

ios - Xcode 链接器问题

我给你写信是因为我非常需要一些帮助。

我正在尝试从 Xcode 将应用程序编译到我的 iPhone,但是,当我按下运行时,我一直遇到出现此错误的问题:

现在,我已经检查并确保我的框架搜索路径和库搜索路径都是的。这就是为什么我遇到这样的问题,我一生都无法解决这个问题!为什么 Xcode 试图链接未指定链接的内容!

提前谢谢,干杯。