问题标签 [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.
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
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 --verbose
orpod update --verbose
时,“安装目标”阶段似乎没有在 Pods 项目中安装 GoogleMaps 目标。通过查看工作区中的项目确实可以确认这一点。
在其他 pod 目标旁边创建了一个目标,称为“Pods-appname”。我已经尝试禁用此目标的位码,但它并没有解决问题。
如果其他人遇到过这个问题,请告诉我。我收到的原始错误目前正在作为问题进行跟踪,可以在此处查看: GoogleMaps issue 8219
当前的解决方法需要在工作区的 Pods 项目中存在一个 GoogleMaps 目标。
ios - 如果一个或多个库有位码,我还能为 iOS 禁用位码吗?
即使我有一个或多个具有位码的库,我仍然可以构建和发布禁用位码的 iOS 应用程序吗?
并不是我所有的库都依赖于支持位码。但是我在某些论坛上读到,如果您的某些库具有位码,则您不能为您的 iOS 目标禁用位码。
如果我同时针对 iOS 和 watchOS 怎么办?我知道您可以有选择地为 watchOS 启用位码(实际上它是必需的)并为 iOS 目标禁用,但是在混合库的情况下呢?
谢谢
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)
谢谢你的帮助。
objective-c - 链接命令失败,退出代码(使用 -v 查看调用)[OpenCV on Obj C]
我正在使用最新版本的 openCV (opencv 2.4.9) 和 xCode 7.1 beta 3 这是我收到的错误消息:
有人有想法吗?谢谢你! 这就是如果我禁用位码会发生什么
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
.
我想知道,这个测试有多足够
otool
?是否会发生测试打印出该行segname __LLVM
但某些功能在没有位码的情况下仍被遗漏的情况?还有另一种测试位码完整性的方法吗?
我还在标准库上尝试了这个测试,例如
/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
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 服务器端验证?
ios - 在 iOS 中使用位码模式编译 FFMPEG
我编译了支持 iOS 7 和 8 的 FFMPEG 库,但自从最近发布的 iOS 9 发布了一个新功能,称为位码模式,作为默认设置,此设置已设置为 NO。
但如果我将其设置为是,将执行以下错误,
libavdevice.a(avfoundation.o)' 不包含位码。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。用于架构 arm64
有什么方法可以在启用位码的模式下编译支持 FFMpeg 的 FFMPEG
这是我使用的构建脚本
ios - Xcode 链接器问题
我给你写信是因为我非常需要一些帮助。
我正在尝试从 Xcode 将应用程序编译到我的 iPhone,但是,当我按下运行时,我一直遇到出现此错误的问题:
现在,我已经检查并确保我的框架搜索路径和库搜索路径都是空的。这就是为什么我遇到这样的问题,我一生都无法解决这个问题!为什么 Xcode 试图链接未指定链接的内容!
提前谢谢,干杯。