Tag: bitcode

位码,切片,ODR,应用程序细化

位码: 位码是已编译程序的中间表示。 您上载到iTunes Connect的包含位码的应用程序将在App Store上进行编译和链接。 包括位码在内,Apple将来可以重新优化您的应用二进制文件,而无需向商店提交新版本的应用。 如果出现具有新架构的新设备,它使Apple可以为新架构重新编译您的应用程序,而无需提交包含该架构的新版本。 位代码使Apple可以为特定体系结构生成可执行文件。 位代码是指发送到iTunes Connect的代码类型:“ LLVM位代码”。 这使Apple可以使用某些计算来进一步重新优化应用程序(例如:可能缩小可执行文件的大小)。 如果Apple需要更改您的可执行文件,那么他们可以在不上传新版本的情况下执行此操作。 切片: Apple根据设备的分辨率和体系结构为用户的设备优化应用程序的过程。 切片不需要位码。 (例如:仅在5秒内包含@ 2x图像) 用户仅下载某些代码体系结构和某些资源版本的操作就是切片。 苹果表示:“切片是为不同目标设备创建和交付应用程序包变体的过程。 变体仅包含目标设备所需的可执行体系结构和资源。因此,切片仅具有特定设备的可执行代码和资源。 切片将您的应用程序资源分为特定设备的组。 按需资源(ODR) : 它的工作原理是,应用程序可能在任何给定时间都不需要其整个资源库,因此可以根据需要下载或删除其中的一部分。 通过将代码段标记为ODR,开发人员将能够指定在什么时候需要什么代码。 这些部分在需要时会自动从App Store下载,而在不再需要时会删除。 随选资源是诸如图像和声音之类的资源,您可以使用关键字对其进行标记,并可以按标签分组请求。 App Store在Apple服务器上托管资源,并为您管理下载。 App Store还对按需资源进行了切片,从而进一步优化了该应用的变体。 按需资源可提供更好的用户体验: 应用程序尺寸较小,因此应用程序下载速度更快,从而改善了首次启动体验。 在用户浏览您的应用程序时,根据需要在后台下载按需资源。 当不再需要按需资源并且磁盘空间不足时,操作系统将清除它们。 应用细化: App Thinning是切片,位码和按需资源的组合 删除Swift符号: 默认情况下,启用了新的Strip Swift Symbols(STRIP_SWIFT_SYMBOLS)构建设置。 它调整符号剥离的级别,以便在剥离构建的链接产品时,将删除所有Swift符号。 这大大减少了Swift框架的大小。 如果缺少Swift符号会导致问题(例如使用dladdr()时),则可以禁用此设置。 要查看已剥离文件中的导出符号,请使用xcrun dyldinfo -export而不是nm。 (31306055) 空中安装清单: 当您在应用中使用按需资源时,需要提供分布式清单信息,否则,您无需选中“包括清单以进行无线安装”。 https://blog.hedgehoglab.com/about-app-thinning 快乐编码!

由于iOS图表无法生成位码包

我使用三维图书馆iOS图表制作应用程序。 但是,我得到的错误位码包无法生成,因为它是没有完整的位码。 从今天的部件。 我帮助迦太基安装它,我做了所有的指示。 我不知道该怎么解决? 我从今天的小部件目标做了以下截图。

如何使用MacPorts与-fembed-bitcodebuild立静态库?

我想在iPhone上使用mlpack。 它有一系列的依赖,包括助推器,犰狳,ICU。 我正在考虑将armv7架构添加到macports.conf的universal_archs 。 但更有用的将是有位码静态库。 特别是当我们谈论需要像mlpack那样的最佳性能优化的库时。 是否有可能使用MacPortsbuild立mlpack静态库? 我已经开始这个拉请求 ,使这个可能,但也许有一个选项已经和/或一些其他的细节,我应该知道。

确定二进制文件是否包含Bitcode的方法似乎不再适用

在我search一个方法来确定是否一个iOS二进制与Bitcode构build,我发现了以下post: 如何检查一个框架是否支持Xcode7的BITCODE 在这里,build议使用以下方法来确定二进制代码是否存在: $ otool -l libName.o | grep __LLVM 不过,我已经尝试了几个二进制文件没有成功。 其中之一是一个我知道有位代码的库,因为我改变了项目的标志之后,编译错误消失了。 另一个是文件扩展名的二进制文件,使用Archive进行构build。 另一个是苹果手表。 我相信所有上述二进制文件都应该有位码,但是我始终没有得到上述命令的结果。 有没有人知道任何其他方法与最新的二进制文件? 我使用XCode 7.2和10.10.5以防万一。 更新:这是一个应该有bitcode的文件的例子,但上面的命令不返回任何东西。 它是来自testing文件提供程序的二进制文件。 我通过存档和部署生成它作为Ad Hoc,并确保为目标设置位代码。 https://www.dropbox.com/s/eyuzs5j1t7nsq6t/CustomDocumentProviderFileProvider?dl=0

Bitcode WatchOS3 – 如何生成

我试图上传一个watchOS3应用程序到苹果商店,但是我收到了一个拒绝(从苹果)那是类似于下面 无效可执行文件 – 可执行文件“someWatch Extension”不包含位代码。 一旦这些问题得到纠正,您可以重新发送更正的二进制文件。 我该如何解决这个问题? 看起来像位代码是强制性的,因为我的手表应用程序中不再有Xcode的编译设置,只是“启用位代码=否”。 我也试图从我的Watch Extensions目录中运行swiftc -embed-bitcode *.swift ,但是我收到下面 MyController.swift:9:8: error: no such module 'WatchKit' import WatchKit 我真的不知道该从这里做些什么,而且UBER因缺less有关watchOS3的文档来解决这个问题感到沮丧。 请帮忙

我怎样才能阻止Xamarinbuild立我的应用程序启用位码?

在我的iOS版本的configuration中,没有选项来禁用位码。 在Xcode中,可以设置ENABLE_BITCODE = NO 我需要这个,因为我的链接的框架不是用bitcode构build的,现在Apple不允许再使用半码编译的应用程序。

OpenSSL CocoaPod与位码的iOS?

是否有一个OpenSSL cocoapod与位代码启用? 以前我使用的是pod 'OpenSSL' ,但是我想在我的应用程序中使用bitcode。 有没有办法做到这一点,或者我必须自己build立OpenSSL? 谢谢

编译启用位码的iOS库

我需要发布一个框架启用bitcode,这是一个麻烦。 我将项目设置中的“启用位码”设置为“是”,并为实际设备和模拟器build立干净的。 我想testing库,所以我把它集成到我为此创build的一个新的应用程序,但现在它只为模拟器build立。 当我试图build立一个真正的设备,我得到: ld: '/path/to/Framework.framework/Company(File.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) 就像我说的,我已经build立了Bitcode启用,所以我不知道为什么会发生这种情况。 有任何想法吗? 谢谢

如何检查一个框架是否支持Xcode7的BITCODE

从Xcode 7开始,第三方框架应该支持Bitcode成了常见的问题之一 。 我们还可以通过在生成设置中将ENABLE_BITCODE设置为NO来禁用BITCODE。 但我不想把它closures,而是我想把我所有的框架转换为BITCODE兼容。 那么除了在Xcode中编译框架之外,如何检查一个框架是否与BITCODE兼容。 有时Xcode会给出一个框架的BITCODE兼容性错误,即使它们没有BITCODE支持,也会留下其他框架。 有没有工具/命令行检查?