标签: bitcode

在更新启用bitcode的框架后,IOS应用程序大小翻了一番

在上个月,我上传了两个BuildF for TestFlight.在ItunesConnect上,一个大小为63MB,而另一个大小为160MB!更糟糕的是:它在TestFlight上显示195MB,而对于其他帖子,它将是App Store上的两倍!

我使用的框架/库:

  • Facebook SDK:我Inlcude FBSDKCoreKit和FBSDKLoginKit.(只需将.framework项目拖放到项目中即可.
  • Alamofire,两个版本都包含swift 2.0预发布分支(Xcode 7仍然处于测试阶段).我通过拖放.xcodeproj到我的应用程序中包含此内容.
  • Google Cloud Messeging,通过CocoaPods下载.

regarding changes:

  • 我将FacebookSDK更新为最新的SDK(v4.6.0).要检查这是否是问题,我再次包含旧SDK,并检查文件大小,但这没有任何区别.
  • 我更新了Alamofire,包括通过cocoapods发布的官方消息.包括via cocoapods在内的文件大小增加了17MB,所以我换回了包括.xcodeproj在我的项目中.

Regarding code: 没什么大不了的,只是bug修复.

我为我的应用程序禁用了bitcode,因为GCM尚不支持此功能,它支持Facebook SDK和Alamofire.

我真的很想知道为什么文件大小变化如此之大.这可能与Xcode 7的发布有关,因为较低的文件大小版本是在使用Xcode 7 beta时发布的.

在Itunes Connect上,它说:Supported Architectures: armv7, arm64Required Capabilities armv7

发送32位版本的应用程序是一件好事吗?这会减小文件大小吗?它会拒绝我的应用吗?

有任何想法吗?

xcode ios swift xcode7 bitcode

3
推荐指数
1
解决办法
3734
查看次数

使用configure&make with -fembed-bitcode构建C++静态库无法链接

我正在-fembed-bitcode为iOS 9 重建一些开源库,其中涉及configure使用iPhone SDK进行交叉编译配置.

一切都适用于基于C的库,但是2 C++(libprotobuflibexiv2)我都无法链接同样的错误:

ld: -bind_at_load and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
Run Code Online (Sandbox Code Playgroud)

这是libexiv2的完整链接命令:

../libtool --mode=link /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -miphoneos-version-min=8.0 -fembed-bitcode  -ldl   -L/Users/pol/Source/Libraries/libexiv2/exiv2-0.25/../../libexpat/iPhoneOS/lib -L../xmpsdk/src -o libexiv2.la basicio.lo bmpimage.lo canonmn.lo casiomn.lo convert.lo cr2image.lo crwimage.lo datasets.lo easyaccess.lo epsimage.lo error.lo exif.lo futils.lo fujimn.lo gifimage.lo http.lo image.lo iptc.lo jp2image.lo jpgimage.lo makernote.lo metadatum.lo minoltamn.lo mrwimage.lo nikonmn.lo olympusmn.lo orfimage.lo panasonicmn.lo pentaxmn.lo pgfimage.lo pngimage.lo pngchunk.lo preview.lo properties.lo psdimage.lo rafimage.lo rw2image.lo samsungmn.lo sigmamn.lo sonymn.lo …
Run Code Online (Sandbox Code Playgroud)

xcode ld ios bitcode

3
推荐指数
1
解决办法
909
查看次数

如果一个或多个库有bitcode,我仍然可以禁用iOS的bitcode吗?

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

并非我依赖的所有库都支持bitcode.但我已经在某些论坛上看到,如果你的某些图书馆有bitcode,你不能为你的iOS目标禁用bitcode.

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

谢谢

xcode ios bitcode

3
推荐指数
1
解决办法
966
查看次数

存档时Xcode 7中的UrbanAirship iOS SDK错误:libUAirship-6.2.0.a(UAWalletAction.o)'不包含bitcode

我在Swift中有一个iOS应用程序和CocoaPods使用UrbanAirship iOS SDK via Pods,如下所示:

pod 'UrbanAirship-iOS-SDK'
Run Code Online (Sandbox Code Playgroud)

我们可以验证Podfile.lock文件中安装的版本:

- UrbanAirship-iOS-SDK (6.2.0):
  - UrbanAirship-iOS-SDK/Core (= 6.2.0)
- UrbanAirship-iOS-SDK/Core (6.2.0)
Run Code Online (Sandbox Code Playgroud)

该应用程序在Xcode 6.4上正确构建,运行和存档.此外,它还可以在Xcode 7 beta 6上构建和运行.但是,在Xcode 7中存档时,我收到以下错误:

ld:'.../Pods/UrbanAirship-iOS-SDK/Airship/libUAirship-6.2.0.a(UAWalletAction.o)'不包含bitcode.您必须在启用bitcode(Xcode设置ENABLE_BITCODE)的情况下重建它,从供应商处获取更新的库,或禁用此目标的bitcode.对于架构armv7

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

我已经更新项目的构建设置禁止设置位码ENABLE_BITCODE,以NO在项目和目标(S)的水平,两者上标明该SO回答,但错误依然存在.

在此输入图像描述

任何帮助,将不胜感激.谢谢你的时间.

xcode urbanairship.com ios xcode7 bitcode

2
推荐指数
1
解决办法
1218
查看次数

iOS 9(Xcode 7)Facebook API/FBSDKCoreKit.framework/FBSDKCoreKit(FBSDKAccessToken.o)'不包含bitcode

我正在尝试使用iOS 9.0中的Xcode 7构建包含Facebook SDK的应用程序.我收到了这个错误.

谢谢

facebook ios swift ios9 bitcode

2
推荐指数
1
解决办法
2189
查看次数

在 Xcode 项目设置中禁用 BitCode 有什么影响?

默认情况下,投标代码在 XCode 项目设置中启用。由于 SDK 不支持 BitCode,我依赖于少数第三方库而出现编译错误?如果我禁用错误就消失了。但是不知道这个改动的后遗症是什么?

在此处输入图片说明

xcode bitcode

2
推荐指数
1
解决办法
1469
查看次数

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

在我寻找一种确定 iOS 二进制文件是否是使用 Bitcode 构建的方法时,我发现了以下帖子:

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

在这里,建议使用以下方法来确定二进制文件中是否存在位码:

$ otool -l libName.o | grep __LLVM
Run Code Online (Sandbox Code Playgroud)

但是,我已经在几个二进制文件上尝试过,但没有成功。其中之一是我知道有位代码的库,因为在我更改其项目上的标志后,构建错误消失了。其中另一个是文件扩展名的二进制文件,使用存档构建。另一个是苹果手表。

我相信上述所有二进制文件都应该有 Bitcode,但我总是无法从上述命令中得到任何结果。

有谁知道任何其他适用于最新二进制文件的方法?

我正在使用 XCode 7.2 和 10.10.5 以防万一。

更新:这是一个文件示例,该文件应该具有位代码,但上述命令不返回任何内容。它是来自测试文件提供程序的二进制文件。我通过 Archive 和 Deploy as Ad Hoc 生成它,并确保为目标启用了 bitcode 的设置。

https://www.dropbox.com/s/eyuzs5j1t7nsq6t/CustomDocumentProviderFileProvider?dl=0

ios ios-frameworks xcode7 bitcode xcode7.2

2
推荐指数
1
解决办法
3654
查看次数

如何在归档build .IPA文件时解决bitcode错误?

当我构建.IPA文件进行测试时,我收到以下错误...如何解决此问题.

2016-06-23 06:51:30 +0000 [MT] Presenting: Error Domain=IDEFoundationErrorDomain Code=1 "Failed to verify bitcode in MBCircularProgressBar.framework/MBCircularProgressBar:
error: Bundle only contains bitcode-marker /var/folders/w1/59sf4qyj2wzdtd_8wb24bcfh0000gn/T/XcodeDistPipeline.jB3/Roo…" UserInfo={NSLocalizedDescription=Failed to verify bitcode in MBCircularProgressBar.framework/MBCircularProgressBar:
error: Bundle only contains bitcode-marker /var/folders/w1/59sf4qyj2wzdtd_8wb24bcfh0000gn/T/XcodeDistPipeline.jB3/Roo…}
Run Code Online (Sandbox Code Playgroud)

objective-c bitcode

2
推荐指数
1
解决办法
3745
查看次数

iOS MobileVLCKit 存档问题

在尝试归档我的项目时,我收到此错误

ld: bitcode bundle could not be generated because '/Users//MobileVLCKit/MobileVLCKit.framework/MobileVLCKit(VLCEmbeddedDialogProvider.o)' was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build file '/Users//MobileVLCKit/MobileVLCKit.framework/MobileVLCKit' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

尝试这样做,enablebitcode = no 但是当我存档时,mac 卡住了,40 分钟后我放弃了。

知道我能做什么以及是否可以使用此 pod 归档项目?

vlc archive ios swift bitcode

2
推荐指数
1
解决办法
2263
查看次数

如何从 MachO 二进制文件中提取 __bitcode/__bundle 部分

对于带有嵌入位码的二进制文件(即使用 编译-fembed-bitcode)。我怎样才能提取该部分,以便我可以像任何其他位码文件一样使用该位码文件,例如运行optllvm-dis

作为测试用例,我有这个 hello-world 程序:

// hello.cpp
#include<iostream>

int main() {
  std::cout << "hello world";
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译为:clang++ -O2 test.cpp -o test.o -fembed-bitcode -c

显示其中objdump有一个__bitcode部分:

objdump -h test.o 

test.o: file format Mach-O 64-bit x86-64

Sections:
Idx Name          Size      Address          Type
  0 __text        000002eb 0000000000000000 TEXT 
  1 __gcc_except_tab 00000068 00000000000002ec DATA 
  2 __cstring     0000000c 0000000000000354 DATA 
  3 __bitcode     00002bc0 0000000000000360 DATA 
  4 __cmdline     00000046 0000000000002f20 DATA 
  5 __compact_unwind 00000060 0000000000002f68 …
Run Code Online (Sandbox Code Playgroud)

llvm objdump objcopy llvm-ir bitcode

2
推荐指数
1
解决办法
1304
查看次数