标签: bitcode

Xcode 7 + Dropbox Core API:只需禁用Bitcode?

我已经在我的iOS应用程序中使用Dropbox Core API已经有一段时间了.更新到Xcode 7后,当我尝试编译项目时收到以下错误:

ld: '.../Frameworks/Dropbox/iOS/DropboxSDK.framework/DropboxSDK' 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. 
Run Code Online (Sandbox Code Playgroud)

我知道Bitcode是什么以及它有什么好处.只需在目标Build Settings中设置Enable Bitcode选项即可解决错误No.在这之后一切都编译没有任何错误,应用程序运行没有任何问题.

到目前为止一切顺利,但这是"正确"的解决方案吗?我在Dropbox页面上查看了SDK的更新版本,但我已经使用了最新版本.

该项目包含不使用Dropbox SDK的App Widget,Watch Extension等的其他目标.Enable Bitcode应该在这里使用什么选项?是(出于某种原因)更好地使用相同的值(No在我的情况下)对所有目标?如果主应用程序目标不使用Bitcode,那么为Watch和Widget目标启用Bitcode是否有意义?

这里的最佳做法是什么?

xcode objective-c ios dropbox-api bitcode

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

'无效的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
查看次数

Xcode中的Bitcode签名失败

我将Xcode更新到最后一个版本,现在当我正在尝试编译项目时,我收到错误"无效的bitcode签名",hovewer,我的项目的bitcode被禁用.我该如何解决?我应该更改什么来正确签署我的bitcode?

我的Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!

target 'MyProjectName' do

pod 'Realm'
pod 'CorePlot'
pod 'GoogleMaps'

end
Run Code Online (Sandbox Code Playgroud)

我已经检查过,一切都很好.

objective-c bitcode xcode8

11
推荐指数
3
解决办法
2万
查看次数

无法生成位码包,因为 iOS 图表

我使用 3d 库iOS-Charts制作应用程序。但是我收到错误bitcode bundle 无法生成,因为它是在没有完整 bitcode 的情况下构建的。从今天小部件。我在 Carthage 的帮助下安装了它,并完成了所有说明。我不知道我该如何解决?我从今天的小部件目标制作了以下屏幕截图。 在此处输入图片说明

xcode ios ios-charts bitcode

10
推荐指数
3
解决办法
3万
查看次数

我想知道如何在XCODE 7 beta 4中获得ENABLE Bitcode选项?

我想用xcode 7为iOS 5.1.1及更高版本部署iOS应用程序.

但是当我尝试在Xcode 7 beta 4中运行我的iOS应用程序项目时,它显示错误消息"在6.0之前的iOS版本上不支持-fembed-bitcode"

对于这个错误,我发现了以下关于谷歌搜索的预测,"Xcode 7有一个ENABLE_BITCODE选项,可以在应用程序,应用程序扩展和框架中嵌入bitcode.默认情况下,iOS的选项是打开的,对于提交给商店的watchOS项目是强制性的.当为目标启用bitcode时,链接该目标时使用的所有对象,静态库和用户框架必须包含bitcode.否则,链接器将发出错误或警告.(注意:缺少bitcode当前是警告iOS,但它将在即将发布的Xcode 7测试版中出现错误.)应始终为所有目标启用ENABLE_BITCODE.如果您使用第三方提供的库或框架,请联系供应商以获取更新版本其中包含bitcode."

然后尝试在Xcode 7 beta 4中设置ENABLE_BITCODE = NO但是在我的iOS应用程序项目的Project和Target的Build Settings下,我在Xcode 7 beta 4中找不到这个选项.

请帮助我,我想知道如何在XCODE 7 beta 4中获得ENABLE Bitcode选项?

提前致谢.

ios9 xcode7 bitcode

9
推荐指数
2
解决办法
3098
查看次数

编译启用了bitcode的iOS库

我需要释放一个启用了bitcode的框架,结果很麻烦.我将项目设置中的"启用Bitcode"设置为"YES",它可以为真实设备和模拟器进行干净的构建.

我想测试库,所以我将它集成到我为此目的创建的新应用程序,但现在它只为模拟器构建.当我尝试为真实设备构建时,我得到:

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)
Run Code Online (Sandbox Code Playgroud)

就像我说的,我用Bitcode启用了它,所以我不确定为什么会这样.

有任何想法吗?谢谢

frameworks ios bitcode

9
推荐指数
1
解决办法
9390
查看次数

从LLVM bitcode生成Rust可执行文件

如何生成用Rust编写的编译成LLVM-IR bitcode的应用程序的可执行文件?

如果我尝试使用rustc编译.bc文件,它告诉我stream did not contain valid UTF-8,我似乎无法弄清楚是否在rustc中有特定选项.

基本上我想实现这个目标: program.rs- > program.bc- > program.program最终的可执行文件在哪里.我应该采取什么措施来实现这一目标?

rust llvm-ir bitcode

9
推荐指数
2
解决办法
1241
查看次数

Bitcode错误使用xcodebuild打包ipa

首先,我想声明没有bitcode,一切都很完美.当我打开应用程序中的"bitcode"标志时,问题就出现了.

此外,所有构建都是通过CI流(不是手动在xcode-> archive et.al中).

该框架是在与应用程序本身分开的流程中构建的(该应用程序嵌入了编译的框架)

当我尝试打包ipa时,我收到此错误:

❌ld:bitcode bundle无法生成,因为'..../Framework.framework/Framework'是在没有完整bitcode的情况下构建的.bitcode的所有框架和dylib必须从Xcode Archive或Install build for architecture armv7生成

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

关于框架:

我正在使用以下命令构建框架:(省略技术细节)

# iphone (arm)
xcodebuild -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

# iphone (simulator)
xcodebuild -configuration Release -sdk iphonesimulator CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Run Code Online (Sandbox Code Playgroud)

然后脂肪(FAT二进制)

lipo -create /Release-iphonesimulator/Framework.framework/Framework -output /Universal/Framework.framework/Framework
Run Code Online (Sandbox Code Playgroud)

我已经将编译器标志添加到框架中以"嵌入bitcode"

在此输入图像描述

我甚至"验证"它有其他所有问题的bitcode :( 编译启用了bitcode的iOS库)

另外,检查二进制文件是否包含bitcode的最简单方法是使用otool和grep:

otool -l binary_name | grep __LLVM

你会看到一个或多个segname __LLVM条目,如果它有bitcode或空输出,如果没有.

otool -arch arm64 -l Frameworks/Framework.framework/Framework  | grep __LL
segname __LLVM
segname __LLVM
Run Code Online (Sandbox Code Playgroud)

我还尝试了添加编译标志的其他变体

xcodebuild OTHER_CFLAGS="-fembed-bitcode"
Run Code Online (Sandbox Code Playgroud)

并报告给我相同的错误

xcode xcodebuild ios bitcode xcode8

9
推荐指数
1
解决办法
721
查看次数

为什么从bitcode重新编译使我无法在Xcode临时版本中进行符号化,如何解决?

所以这让我疯了但我终于发现,当我导出我的应用程序进行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而不警告你的崩溃日志?

xcode adhoc symbolicatecrash ios bitcode

8
推荐指数
1
解决办法
725
查看次数

bitcode_strip (xcrun) 有什么作用?

TwilioVideo在我的 iOS 项目中作为 Pods 依赖项添加后,我意识到它的大小显着增加(+100 Mo)。

经过一些研究,我发现了这个线程,尤其是这个消息,它建议通过 Podfile 使用此命令剥离位代码

我对 bitcode 了解不多,直到我发现了这篇关于它的好文章:https ://lowlevelbits.org/bitcode-demystified/

现在我明白什么是位码,为什么 Apple 要求它,以及他们如何使用它来重新编译应用程序(如果他们想要的话)。但是,我仍然不明白这个“strip bitcode”操作是什么,所以我正在寻找有关此的信息(它实际上运行良好,因为在将这些行添加到我的 Podfile 后,我的应用程序现在“仅”大了 30 Mo )。

谢谢你的帮助。

xcode xcrun bitcode

8
推荐指数
1
解决办法
1536
查看次数