问题标签 [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 - 启用位码 - 为 iOS 9 做准备(xcode7 beta,iOS 6 支持)
我有一个支持 iOS 5 及更高版本的静态库,我们正在努力为即将到来的 iOS 9 做准备。
在搜索了几个来源后,我找不到以下问题的直接答案:
- 位码是强制性的吗?如果我设置
Enable Bitcode = False
它将如何影响主机应用程序会发生什么?
这篇文章暗示作为一个静态库,我必须启用位码。
- 尝试构建库时出现错误:
-fembed-bitcode is not supported on versions of iOS prior to 6.0
我可以选择为某些 iOS 版本关闭它吗?有没有合适的处理方法。
ios - BitCode 和 unexported_symbols_list 不能一起使用?
对于 iOS 框架,我希望能够隐藏其中的符号,以防止在框架和使用框架的应用程序包含同一 3rd 方库的不同版本时发生冲突。
到目前为止,这可以通过-unexported_symbols_list
在选项中指定来实现。
但是,在 Xcode 7 Beta 5 中,出现以下错误消息...
...在尝试编译框架的 BitCode 版本时发生。
所以,我有三 (3) 个问题:
1) 编译 BitCode 时是否有一种简单的方法来隐藏符号?
2)如果没有,当框架的第 3 方库是相同的库但版本不同时,是否可以采取其他措施来防止框架的第 3 方库与应用程序的第 3 方库发生冲突?
3)为什么不能-unexported_symbols_list
和-bitcode_bundle
一起使用?
ios - 归档时 Xcode 7 中的 UrbanAirship iOS SDK 错误:libUAirship-6.2.0.a (UAWalletAction.o)' 不包含位码
我在 Swift 中有一个带有 CocoaPods 的 iOS 应用程序,通过 Pods 使用 UrbanAirship iOS SDK,如下所示:
我们可以验证Podfile.lock
文件中安装的版本:
该应用程序在 Xcode 6.4 上正确构建、运行和归档。此外,它还在 Xcode 7 beta 6 上正常构建和运行。但是,在 Xcode 7 中归档时,出现以下错误:
ld: '.../Pods/UrbanAirship-iOS-SDK/Airship/libUAirship-6.2.0.a(UAWalletAction.o)' 不包含位码。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。对于架构 armv7
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
我已更新项目构建设置以通过在项目和目标级别设置为来禁用位码,如this SO answer所示,但错误仍然存在。ENABLE_BITCODE
NO
任何帮助,将不胜感激。谢谢你的时间。
ios - App Thinning - Bitcode 的例子?
iOS 9 以三种方式引入了 App Thinning:
应用切片
资源按需
Bit Code:iOS App 的一种插件
我可以看到教程以及1.和2.的示例代码,但我找不到 Bitcode 的详细信息。
ios - Xcode 7'CrashReporter 不包含位码'链接器错误
我在我的 iOS 应用程序中直接链接 PLCrashReporter,而不使用任何外部工具,现在当我尝试在 Xcode 7 上编译它时,我得到链接错误:
ld: '.../CrashReporter.framework/CrashReporter(libCrashReporter-iphoneos.a-armv7-master.o)' 不包含位码。您必须在启用位码的情况下重建它(Xcode 设置 ENABLE_BITCODE),从供应商处获取更新的库,或禁用此目标的位码。对于架构 armv7
我在哪里可以获得更新的框架或源来编译它们并启用位码并在不禁用整个项目的位码的情况下消除错误?
ios - 更新启用位码的框架后,IOS 应用程序大小翻了一番
在上个月,我为 TestFlight 上传了两个构建版本。在 ItunesConnect 上,一个大小为 63MB,而另一个大小为 160MB!更糟糕的是:它在 TestFlight 上显示为 195MB,而对于其他帖子,它将是 App Store 上的两倍!
我使用的框架/库:
- Facebook SDK:我包括 FBSDKCoreKit 和 FBSDKLoginKit。(只需将项目拖放
.framework
到项目中。 - Alamofire,两个版本都包含 swift 2.0 预发布分支(Xcode 7 仍处于测试阶段)。我通过将其拖放
.xcodeproj
到我的应用程序中来包含它。 - Google Cloud Messeging,通过 CocoaPods 下载。
regarding changes:
- 我将 FacebookSDK 更新为最新的 SDK (v4.6.0)。为了检查这是否是问题,我再次包含了旧的 SDK,并检查了文件大小,但这没有任何区别。
- 我更新了 Alamofire,包括通过 cocoapods 发布的官方版本。通过 cocoapods 包含文件会使文件大小增加 17MB,因此我切换回将其包含
.xcodeproj
在我的项目中。
Regarding code:
没什么大不了的,只是错误修复。
我为我的应用禁用了位码,因为 GCM 还不支持它,Facebook SDK 和 Alamofire 支持它。
我真的很想知道为什么文件大小变化如此之大。这可能与 Xcode 7 的发布有关,因为较小的文件大小版本是在使用 Xcode 7 beta 时发布的。
在 Itunes Connect 上,它说:Supported Architectures: armv7, arm64
和Required Capabilities armv7
发送 32 位版本的应用程序是不是一件好事?这会减少文件大小吗?它会拒绝我的应用程序吗?
有任何想法吗?
ios - 使用 configure & make 和 -fembed-bitcode 构建 C++ 静态库无法链接
我正在为 iOS 9 重建一些开源库-fembed-bitcode
,其中涉及配置configure
为使用 iPhone SDK 进行交叉编译。
一切都适用于基于 C 的库,但 2 个 C++ 库(libprotobuf和libexiv2)我都无法链接到同样的错误:
这是 libexiv2 的完整链接命令:
我只构建静态库,而不是共享库,以防万一。
更新:关于基于 C 的库,链接命令不包括-Wl,bind_at_load
例如libpng的命令:
PS:完整的构建日志可在此处获得
ios - Gracenote 移动版是否支持位码?
我刚刚下载了最新版本的 iOS Gracenote SDK,并收到一个链接器错误,说它需要位码。如果我关闭 botched 选项,我可以编译,所以现在没关系,但我想知道 GraceNote 是否计划更新他们的 SDK,或者我是否做错了什么。
ios - Disable bitcode for project and cocoapods dependencies with Xcode 7?
How can you disable bitcode for your project and cocoapod dependencies? Here is the error I get when trying to run my project with Xcode 7.
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 arm64
Edit: Originally only disabled it for one of the targets. Once I disabled all of them and I was able to build successfully.
ios - Xcode 7 + Dropbox Core API:只需禁用 Bitcode?
我在 iOS 应用中使用 Dropbox Core API 已经有一段时间了。更新到 Xcode 7 后,当我尝试编译我的项目时收到以下错误:
我知道 Bitcode 是什么以及它有什么用处。只需在目标构建设置中将Enable Bitcode
选项设置为即可解决该错误。No
在此之后,一切都编译没有任何错误,应用程序运行没有任何问题。
到目前为止一切顺利,但这是“正确”的解决方案吗?我检查了 Dropbox 页面以获取 SDK 的更新版本,但我已经使用了最新版本。
该项目包含一些其他不使用 Dropbox SDK 的 App Widget、Watch Extension 等目标。Enable Bitcode
应该在这里使用什么选项?(出于某种原因)是否更好地No
对所有目标使用相同的值(在我的情况下)?如果主应用程序目标不使用 Bitcode,那么为 Watch 和 Widget 目标启用 Bitcode 是否有意义?
这里的最佳做法是什么?