在iOS 9之前,我们的IPA大小约为6MB.通过Xcode 7归档和导出我们的IPA后,我们的IPA增加到大约17MB.经过进一步调查,我们发现在导出设置中启用"Bitcode"选项是导致大文件大小跳转的原因.
我的问题是:如果我们启用此选项,我们的IPA大小是否会在商店中达到17MB?或者Apple是否对捆绑做了一些事情,使其大小与以前大致相同(6MB).
目前关于Bitcode的信息并不多,我希望在提交给商店之前得到通知.6MB和17MB就足够了.
所以这让我疯了但我终于发现,当我导出我的应用程序进行adhoc部署时,bitcode编译选项导致我的调试符号文件(dSYM)和我的应用程序UUID不匹配意味着我无法表示任何崩溃日志.
关闭选项修复了这个问题,但有没有办法可以通过选项修复它?我阅读了该选项的提示,它说商店使用这种方法.我现在也无法从应用程序商店读取崩溃日志,或者这只是一个本地问题?
以下是我在此Xcode版本之前从旧版本中获得的内容:
dwarfdump --uuid app
DD25E6C9-... (armv7)
29F74B2E-... (arm64)
dwarfdump --uuid app.dsym
DD25E6C9... (armv7)
29F74B2E... (arm64)
Run Code Online (Sandbox Code Playgroud)
精细.现在使用bitcode:
dwarfdump --uuid app
E7D2BE71-... (armv7)
5C871FD7-... (arm64)
dwarfdump --uuid app.dsym
BC93BCF5-... (armv7)
3312658C... (arm64)
Run Code Online (Sandbox Code Playgroud)
显然它不会象征性.我已经尝试关闭选项并再次匹配.这是Xcode没有为新的bitcode构建重新生成符号的问题吗?为什么哦,为什么这个默认为ON而不警告你的崩溃日志?
根据我的理解,bitcode允许生成具有中间二进制格式的二进制文件.所以这是编译到ARM或x64架构之前的步骤.
.framework自iOS 8起,可以为iOS 创建"真实" 文件.但是,默认情况下,框架文件仅针对一种体系结构进行编译(模拟器,iPhone).当想要分发.framework文件时,最好提供与iOS模拟器兼容的文件,并且还可以部署到iPhone.可以找到不同的脚本示例来使用创建这样的胖文件lipo.
但是,是否可以仅将已.framework编译的bitcode分发而不必创建具有不同体系结构的胖文件?
不幸的是,即使为我启用了bitcode .framework:
我是否误解了bitcode的概念,或者我错过了什么?
是否有支持bitcode的OpenSSL cocoapod?以前我使用过pod 'OpenSSL',但我想在我的应用程序中使用bitcode.有没有办法做到这一点,还是我必须自己构建OpenSSL?
谢谢
我有一个相当老的项目,最低部署目标设置为iOS 8.4.由于技术原因,必须启用bitcode .该项目建立并运行良好.然而,当尝试导出存档的构建时,事情就出错了.我正在使用Xcode 8.2.1.
当我使用Rebuild from bitcode启用该选项创建测试版本(使用Enterprise证书签名)时,导出在编译bitcode时失败.
以下是日志的相关部分:
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/lib/darwin/libclang_rt.ios.a" "-o" "/private/var/folders/qy/cgq_nq7x2tx1j3z__7f4yx100000gn/T/<redacted target name>WX9bPu/<redacted target name>.armv7.out"
-= Output =-
Undefined symbols for architecture armv7:
"_llvm_gcov_init", referenced from:
__hidden#2_ in 001.o
__hidden#3_ in 001.o
__hidden#4_ in 001.o
__hidden#5_ in 001.o
__hidden#6_ in 001.o
__hidden#7_ in 001.o
__hidden#8_ in 001.o
...
"_llvm_gcda_end_file", referenced from:
__hidden#0_ in 001.o
__hidden#0_ in 002.o
__hidden#0_ in 003.o
__hidden#0_ in 004.o
__hidden#0_ in 005.o
__hidden#0_ in 006.o
__hidden#0_ in 007.o
...
"_llvm_gcda_emit_function", …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Swift中使用Facebook SDK.它将在模拟器中编译并运行,并在我的设备上本地运行.但是,尝试存档或构建版本配置失败.
ld: bitcode bundle could not be generated because '/.../DerivedData/FacebookSwift-xyz/Build/Products/Release-iphoneos/FBSDKCoreKit.framework/FBSDKCoreKit'
was built without full bitcode. All frameworks and dylibs for bitcode must be
generated from Xcode Archive or Install build file '/.../DerivedData/FacebookSwift-xyz/Build/Products/Release-iphoneos/FBSDKCoreKit.framework/FBSDKCoreKit'
for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
在Swift项目中下载或克隆Facebook SDK,编辑FacebookCore方案以构建发布配置.
运行迦太基以降低依赖性,facebook-ios-sdk等.
tl; dr:我收到此错误消息:
Run Code Online (Sandbox Code Playgroud)ld: -alias_list and -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES) cannot be used together
我如何解决它?
我正在尝试创建自己的第三方库版本.我想确保我的所有调用都没有进入该库的系统版本,因此我使用--alias-list在所有符号上添加前缀,并生成一个头文件,该文件将所有符号重命名foo为MJB_foo.然后,--include无论何时我想使用此库,我的构建系统都会包含此头文件.
这在Android和Linux上运行良好(我非常确定它最终也适用于Windows).但是,当我尝试链接共享库时,我收到上述错误.我如何达到同样的效果?
我更新了SDK SDK 4.37,更新SDK后我开始看到一个编译时错误来禁用bitcode.我无法禁用bitcode,因为我有一个真正需要启用bitcode的手表套件应用程序.如果有人遇到此问题和解决方案,请告诉我.
我看到的错误在这里:
FBSDKShareKit.framework/FBSDKShareKit(FBSDKLikeBoxView.o)'不包含bitcode.您必须在启用bitcode(Xcode设置ENABLE_BITCODE)的情况下重建它,从供应商处获取更新的库,或禁用此目标的bitcode.文件FBSDKShareKit.framework/FBSDKShareKit'用于架构arm64
我也在Facebook的开发者页面上发布了相同的内容.他们说这是众所周知的,并试图修复.
我有Crashlytics的问题(以及Xcode - > Organizer中显示的崩溃),因为我没有看到很多应该崩溃的崩溃.从测试人员那里我应该有很多崩溃,但我没有.我登录iTunes Connect并在那里获得压缩的dSYM文件并将其上传到Crashlytics以查看新的崩溃.但即使它说上传dSYM后有一个或多个新的崩溃,我也没有看到任何新的崩溃.它看起来像我在Crashlytics中看不到的大多数崩溃.这是为什么?我需要从TestFlight运行应用程序的设备获取日志/崩溃.我认为使用Objective-C并且在bitcode之前它的效果要好得多.
编辑:是否有可能在另一个工具(来自第三方公司)中会出现Apple Organizer中没有的崩溃?我在问我是否应该尝试其他公司的更多工具.也许一些崩溃是因为记忆.这些崩溃可能不在报告中吗?
谢谢
如何在启用 Bitcode 的情况下编译 WebRTC iOS 框架。目前,由于 WebRTC 框架,我必须禁用我的项目的 Bitcode。