Xcode 7和ENABLE_BITCODE = YES设置不起作用


96

我关注了Xcode中新的ENABLE_BITCODE设置的多个线程,也做了很多尝试(承认我不是xcode pro),但仍然无法编译该项目以在我的测试电话上使用吗?

我的应用程序可以在模拟器上正常运行,但是无法将其部署到iPhone上进行测试。在后一个版本中,我刚刚安装了iOS 9 beta。

现在,这是我收到的错误消息。看来该设置不会影响PARSE.com lib,那是我项目的一部分吗?如何将我的项目部署到手机上?感谢您的任何建议。

    Ld /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-  bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse normal armv7
cd /Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -L/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse -F/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -filelist /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse.LinkFileList -install_name @rpath/Parse.framework/Parse -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=8.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseLib -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -ObjC -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse_dependency_info.dat -o /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse

---
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: '/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse/libParseLib.a(PFSQLiteDatabase.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)

1
你确定你所选择Enable BitcodeNO配置你使用针对构建(例如DEBUG)?您可以在“项目” enable bitcode->“目标”- >“构建设置”->“搜索” ->“设置NO为DEBUG”中进行检查(记住要记住在测试发布之前尝试更新库,可能已经包含了位码)。然后Edit Scheme-> Run->检查您是否有DEBUG配置atm。
Vive

1
好!是的,没有。我没有将其设置在POD目标上,这是我的疏忽。你的提示使我到了那里。谢谢
DirkLX

很高兴听到:)会将其发布为答案,因为它可能对其他人有用。
Vive 2015年

为什么我们需要更改位码?以前,我们不需要更新其值。有逻辑原因吗?谢谢
msmq 2015年

一切都做完了,但应用仍然在设备上崩溃,并出现相同的错误。我正在使用iOS 9.1。请帮忙!
莱斯赖斯2015年

Answers:


133

你确定你所选择Enable BitcodeNO配置你使用针对构建(例如DEBUG)?您可以在project-> target-> build settings-> search- enable bitcode> set NOin中进行检查DEBUG(记住要记住在测试发布之前尝试更新libs,也许它已经包含了位码)。然后编辑方案->运行->检查是否有DEBUG配置atm。

在此处输入图片说明


1
@Zorayr在向我的帖子中添加图像时:首先应检查应用程序构建设置,然后在应用程序构建设置中更改此标志。仅在无济于事的情况下,再对Pod进行同样的操作。
Vive 2015年

3
如果将Enable Bitcode设置为,是否可以在App Store中接受该应用程序NO
Ne AS

@NeAS是的。当前,不需要启用位码。
Vive

您应该禁用位码为所有的吊舱
瓦迪姆Kurochkin

53

请注意,对于使用CocoaPods ENABLE_BITCODE = NO的项目,应同时在项目和Pods容器项目目标上进行设置。

这个错误

Ld /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils normal arm64
    cd /Users/maximveksler/Developer/ParseUI-iOS/Pods
    export IPHONEOS_DEPLOYMENT_TARGET=9.0
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -L/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils -F/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -filelist /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils.LinkFileList -install_name @rpath/ParseTwitterUtils.framework/ParseTwitterUtils -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=9.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseTwitterUtilsLib -lsqlite3 -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework Parse -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1.8.1 -Xlinker -dependency_info -Xlinker /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils_dependency_info.dat -o /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils

ld: '/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils/libParseTwitterUtilsLib.a(PFTwitterAuthenticationProvider.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 arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

已通过以下方式解决:

在此处输入图片说明

在此处输入图片说明


如果我们通过选项Enable Bitcode = NO提交应用程序,Apple是否会拒绝该应用程序?
2015年

@ G.Ganesh请另发一个问题。策略在tvOS和watchOS之间有所不同,答案是肯定的。iOS的答案当前为否,将来为是。
Maxim Veksler,2015年

@GaneshGuturi当前是,但是苹果可能会在将来某个时候削减它。更多说明,例如:stackoverflow.com/a/31207170/849616
Vive

17

我在Xcode7中也遇到过同样的问题。解决方案:

  • PROJECT
  • 建立 Settings
  • 选择 All Tab
  • 输入搜索 Enable Bitcode
  • Update FlagNo(位于项目的下方(第二列))

15

我在GoogleAnalytics可可豆库中遇到了类似的问题,该库未针对iOS 8的iPhone 6进行编译。

我的解决方案是在应用程序项目的目标(而不是Pods项目)中打开“启用位码”标志。


这就是我在对我的答案的评论中所说的。要尝试在项目设置上执行此操作,当且仅当那不起作用时,才切换到pod项目。
Vive

切换目标和项目以构建设置位码NO不适用于ARCHIVING。是否可以找到Sim版本。XCODE 7.0.1
ort11

11

如果您的位码未显示,请全部选择。当xcode选择Basic时,您的Bitcode选项不会显示。

在此处输入图片说明

选择全部后,您将看到位码。之后,为广告配置设置“否” 在此处输入图片说明


10

我只是为我的项目设置它。

MyProjectTarget->构建设置-> Enable Bitcode = NO


1
该应用程序会在App Store中被拒绝吗?
Ne AS

5

正如大家所说,答案是设置Enable BitcodeNo在建的设置,但我觉得有些人可能有兴趣在做这个命令行

我的Xcode项目是由Unity生成的,我不希望对Xcode项目设置进行任何手动干预。也许有一种更好的方法或工具可以编辑构建设置,就像PlistBuddy如何让您更新plist文件中的值一样。我不知道用于构建设置的任何工具,因此我使用sed

sed:根据正则表达式运行替换。

如何设置Enable BitcodeNo从命令行:

在这里,我的项目名称是,Unity-iPhone所以我从Xcode项目的根目录运行以下命令:

sed -i -e 's/ENABLE_BITCODE = YES;/ENABLE_BITCODE = NO;/g' \ 
Unity-iPhone.xcodeproj/project.pbxproj

-e-指定要运行的sed命令
-i-就地编辑文件,分别为每个文件运行脚本

去掉 -i如果只需要预览功能,请;)

请注意,使用此命令将更改所有构建配置,该行在ENABLE_BITCODE = YES;my中出现了6次project.pbxproj

现在,我的构建步骤可以完全自动化,因为fastlane会处理其余的一切


3

如果没有找到enable_bitcode标志。点击搜索栏旁边上方工具栏上的“全部”标签。 在此处输入图片说明


请添加一些代码以更好地解释您的答案。
Usman Maqbool

1

如果您无法随项目更改BITCODE设置,请在终端中尝试此命令,

xcodebuild -target“目标”-配置“配置” ENABLE_BITCODE = NO

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.