标签: bitcode

我需要Carthage创建的bcsymbolmap文件吗?

我在iOS项目中使用Carthage依赖管理器.我Carthage/build在我的存储库中有文件夹,在签出repo时总是准备好构建框架.

我想知道bcsymbolmapbuild文件夹中的文件是什么.其中有不少是每个人都创造出来的carthage update.

我需要保留这些文件吗?我应该在我的存储库中拥有它们吗?

git xcode carthage bitcode

17
推荐指数
1
解决办法
3184
查看次数

如何使用ENABLE_BITCODE编译OpenCV iOS

当我尝试使用XCode 7 + iOS SDK 9使用OpenCV 2.4 iOS编译我的XCode项目时,XCode抱怨说

ld:'opencv2.framework/opencv2(alloc.o)'不包含bitcode.您必须在启用bitcode(Xcode设置ENABLE_BITCODE)的情况下重建它,从供应商处获取更新的库,或禁用此目标的bitcode.对于架构arm64

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

并拒绝链接.经过一些谷歌搜索,结果是因为Apple在App Store中添加了一个名为Bitcode的新功能,用于优化应用程序.虽然OpenCV iOS二进制文件尚未更新为包含Bitcode,但它无法通过链接阶段.

一些参考指出了一个禁用的临时解决方案,ENABLE_BITCODE因此可以在没有Bitcode的情况下完成链接.这将阻止为Apple Watches编译应用程序,因为Bitcode对于Watch Apps是强制性的.因此我的问题是,是否有一些(最简单的)方法来编译启用Bitcode的iOS OpenCV?(更好地使用编译框架的下载链接)

xcode opencv ios bitcode

16
推荐指数
2
解决办法
5235
查看次数

在准备存档时,Xcode在编译位代码上花费了太多时间

我正在尝试进行存档,但xcode在编译bitcode时卡住了.我该怎么办?启用bitcode还是禁用?

xcode build bitcode

15
推荐指数
2
解决办法
9285
查看次数

ITMS-90668 - 无效的Bundle Executable.可执行文件包含不完整的bitcode

昨天我开始从iTunes Connect收到奇怪的错误消息:

ITMS-90668
Invalid Bundle Executable.
The executable file '...' contains incomplete bitcode.
To compile binaries with complete bitcode, open Xcode and choose Archive in the Product menu.
Run Code Online (Sandbox Code Playgroud)

实际上,我为每个嵌入式框架收到许多相同的消息.

我确实使用Bitcode,我没有在我的项目中改变任何与Bitcode相关的东西.这似乎是一个新的ITMS要求(或bug).我不知道如何解决它.

看起来这个问题神秘地与深圳或BuddyBuild等CI工具有关.或者,它可能与依赖项包含预编译代码的情况有关.

以防万一,我的应用程序:

  • 这些依赖项具有预编译代码: BuddyBuildSDK,Firebase,CardIO.
  • 用Swift写的.
  • 有iOS键盘扩展.
  • 使用BuddyBuild.
  • 使用CocoaPods.

更新:

我几乎什么都没改变,然后问题确实在昨天消失了.我完全不知道为什么.我相信Apple只是修复了这个bug或者是侥幸问题.

itunesconnect ios bitcode

14
推荐指数
1
解决办法
2946
查看次数

在提交应用之前启用bitcode vs include bitcode

应用程序的目标和项目中的"启用Bitcode"设置与提交到App Store之前出现的"Include Bitcode"复选框之间的区别是什么?

如果我"启用Bitcode"FALSE并选中"Include Bitcode",会发生什么?如果我"启用Bitcode"为TRUE且未选中"包含Bitcode",会发生什么?

我看到其他问题只询问"启用Bitcode"的功能,但是在将应用程序提交到App Store之前,我会询问与此设置和"Include Bitcode"设置的区别.

谢谢

xcode ios bitcode

13
推荐指数
1
解决办法
5144
查看次数

xcodebuild 7.3无法启用bitcode

我正在为iOS开发一个嵌入式框架.为了制作通用脂肪(使用模拟器和设备切片),我使用脚本创建了一个聚合目标,该脚本使用xcodebuildlipo命令生成它,就像许多人一样.

使用XCode 7.x,我必须使用BITCODE_GENERATION_MODE = bitcode添加用户定义的设置才能启用它,但是自上次XCode 7.3发布以来,这已停止工作.

我已经尝试过在互联网上找到的所有内容,例如添加OTHER_CFLAGS="-fembed-bitcode",但任何事情都像以前一样工作......

我在构建日志中看到过这个:

enable_bitcode = NO

无论我做什么,ENABLE_BITCODE都是NO.

自XCode 7.3以来,有没有人尝试使用xcodebuild命令创建一个通用胖框架?

frameworks xcodebuild fat bitcode xcode7.3

13
推荐指数
1
解决办法
2942
查看次数

LinkedIn SDK的Bitcode错误

在LinkedIn的SDK 中有一些关于Bitcode支持的问题.他们似乎同意LinkedIn的文档,他们的SDK版本1.0.7支持Bitcode.

但是,当我尝试存档我们的应用程序(使用Xcode 7.3.1,并包含该SDK)时,我在链接阶段遇到此错误:

无法生成位码包,因为'/用户/ ...:LD 绝密 .../LinkedIn-sdk.framework/LinkedIn-SDK(豆荚-dummy.o)'没有满位码建成.必须从Xcode Archive或Install build for architecture arm64生成bitcode的所有目标文件和库

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

检查框架(按照之前的问题)似乎在arm64和armv7切片中显示了Bitcode:

otool -arch arm64 -l linkedin-sdk | grep '__bitcode'
otool -arch armv7 -l linkedin-sdk | grep '__bitcode'
Run Code Online (Sandbox Code Playgroud)

有没有人看到这个结果?有没有什么办法解决它,其他比关机位码支持的应用程序?


在切线相关的说明中,如果我关闭Bitcode并获得成功的构建,我会得到大约10个这些警告(在我看来,就像他们的CI系统配置错误):

处理/ Users/... 编辑 .../linkedin-sdk.framework/linkedin-sdk(LISDKAccessToken.o):警告:/ export/home/tester/hudson/data/workspace/MP_TRUNKDEV_POSTCOMMIT/ios-sdk_3939eff14f36b69f3fa38c9db85f0b182a1fc733/build/linkedin-sdk /ModuleCache/22OID7V7UWIA2/Foundation-73OMMCO56G8Z.pcm:没有这样的文件或目录

注意:运送静态库时应禁用模块调试.

linker linkedin ios xcode7 bitcode

13
推荐指数
1
解决办法
1048
查看次数

如何使用bitcode选项制作胖框架?

环境:XCode 7.0.1模块:Objective-C Bundle类型:框架

嗨,我正在尝试创建一个支持armv7,armv7s,arm64,i386和x86_64的框架.我正在使用聚合来制作胖库.在聚合脚本中,我运行两个xcodebuild命令1.用于armv7,armv7s和arm64以及2.用于i386和x86_64架构.另外,我在目标构建设置下设置了Enable Bitcode = YES和Other C Flags = -fembed-bitcode.作为预防性的消息,我在xcodebuild命令中添加了ENABLE_BITCODE = YES和OTHER_CFLAGS =" - fembed-bitcode"选项

我的xcode构建命令如下 -

#Build The framework Target for iPhoneOS
xcodebuild -project "${PROJECT_FILE_PATH}" -target "${AN_TARGET}" 
ONLY_ACTIVE_ARCH=NO -configuration "${CONFIGURATION}" -sdk iphoneos 
BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" 
CONFIGURATION_BUILD_DIR="${IPHONE_DEVICE_BUILD_DIR}" SYMROOT="${SYMROOT}" 
ARCHS="armv7 armv7s arm64" ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode" $ACTION

#Build The framework Target for iPhoneSimulator
xcodebuild -project "${PROJECT_FILE_PATH}" -target "${AN_TARGET}" 
ONLY_ACTIVE_ARCH=NO -configuration "${CONFIGURATION}" -sdk iphonesimulator 
BUILD_DIR="${BUILD_DIR}" OBJROOT="${OBJROOT}" BUILD_ROOT="${BUILD_ROOT}" 
CONFIGURATION_BUILD_DIR="${IPHONE_SIMULATOR_BUILD_DIR}" SYMROOT="${SYMROOT}" 
ARCHS="i386 x86_64" ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode" $ACTION
Run Code Online (Sandbox Code Playgroud)

在运行上面两个命令之后,我将这两个构建组合在一起,使用下面的命令创建一个胖框架二进制文件

# create a fat Framework
lipo -create 
"${IPHONE_DEVICE_BUILD_DIR}/${PROJECT_NAME}.framework/${PROJECT_NAME}" …
Run Code Online (Sandbox Code Playgroud)

xcode ios bitcode

12
推荐指数
2
解决办法
5303
查看次数

如何使用clang -emit-llvm编译并保留"未使用的"C声明

上下文

我正在为需要大量运行时函数的语言编写编译器.我正在使用LLVM作为我的后端,因此codegen需要所有运行时类型(函数,结构等)的类型,而不是使用LLVM API手动定义所有这些类型或手写LLVM IR我想编写C中的头文件并编译为编译器可以引入的bitcode LLVMParseBitcodeInContext2.

问题

我遇到的问题是clang似乎没有保留任何任何函数定义都没有使用的类型声明.铛具有其听起来像它应该解决这个问题,但不幸的是,不是和谷歌搜索表明它名不副实,因为它不仅影响未使用的定义,而不是声明.-femit-all-decls

然后我想也许如果我只将头.gch文件编译成文件我可以用LLVMParseBitcodeInContext2相同的方式将它们拉入(因为文档说它们使用"相同的"bitcode格式",但是这样做的错误error: Invalid bitcode signature必须有所不同.也许差别小到可以解决?

任何可以为复杂运行时自动化的建议或相对简单的解决方法?如果有人对接近这个一般用例有一个完全替代的建议,我也会感兴趣,记住我不想在运行时函数体中静态链接我生成的每个单个目标文件,只是类型.我想这也是其他编译器所需要的,所以如果我接近这个错误,我不会感到惊讶.


例如,给出这个输入:

runtime.h

struct Foo {
  int a;
  int b;
};

struct Foo * something_with_foo(struct Foo *foo);
Run Code Online (Sandbox Code Playgroud)

我需要一个具有此等效IR的bitcode文件

runtime.ll

; ...etc...

%struct.Foo = type { i32, i32 }

declare %struct.Foo* @something_with_foo(%struct.Foo*)

; ...etc...
Run Code Online (Sandbox Code Playgroud)

我可以手动编写它,但这将是重复的,因为我还需要为其他互操作创建C头,并且理想的是不必手动保持它们同步.运行时相当大.我想我也可以做相反的事情:在LLVM IR中编写声明并生成C头.


有人问过这些年,但是对于这种大小和类型复杂性的运行时,提出的解决方案相当hacky并且相当不切实际:Clang - 将C头编译为LLVM IR/bitcode

c compiler-construction llvm clang bitcode

12
推荐指数
2
解决办法
702
查看次数

'无效的bitcode版本(制作人:'902.0.39.2_0'读者:'900.0.37_0')'

我正在使用Xcode 9.0.

我的pod文件:

pod 'Alamofire', '~> 4.3'
pod 'SwiftyJSON'
pod 'AlamofireSwiftyJSON'
pod 'KSToastView', '0.5.7'
pod 'SDWebImage', '~> 4.0'
pod 'NVActivityIndicatorView'   
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'CarbonKit'
pod 'SBPickerSelector'
pod 'SwiftyStoreKit'    
pod 'Fabric'
pod 'Crashlytics'
pod 'SAMKeychain', '1.5.2'
Run Code Online (Sandbox Code Playgroud)

我的错误日志:

ld:无法在bitcode包中重新解析目标文件:'无效的bitcode版本(生产者:'902.0.39.2_0'Reader:'900.0.37_0')',使用libLTO版本'LLVM版本9.0.0,(clang-900.0.37) )'for architecture arm64 clang:error:链接器命令失败,退出代码为1(使用-v查看调用)

我读了很多关于这个问题的文章但是我无法解决它.我提到了这一点,是的,这注意到我想用我的项目构建存档

configuration = Debug
ENABLE_BITCODE = YES
configuration = Release
ENABLE_BITCODE = YES
completeSettings = some
ENABLE_BITCODE = YES
Run Code Online (Sandbox Code Playgroud)

有什么建议?

architecture ios bitcode swift4 xcode9

12
推荐指数
4
解决办法
8589
查看次数