การตั้งค่า Xcode 7 และ ENABLE_BITCODE = YES ไม่ทำงาน


96

ฉันได้ติดตามเธรดหลายชุดเกี่ยวกับการตั้งค่า ENABLE_BITCODE ใหม่ใน Xcode ได้ลองมากที่สุดเท่าที่จะทำได้ (ยอมรับว่าฉันไม่ใช่ xcode pro) แต่ยังไม่สามารถรวบรวมโปรเจ็กต์เพื่อใช้กับโทรศัพท์ทดสอบของฉันได้?

แอปของฉันทำงานได้ดีบนเครื่องจำลอง แต่ฉันไม่สามารถปรับใช้กับ iPhone เพื่อทำการทดสอบได้ อันหลังฉันเพิ่งติดตั้ง iOS 9 เบต้า

ตอนนี้นี่คือข้อความแสดงข้อผิดพลาดที่ฉันได้รับ ดูเหมือนว่าการตั้งค่าจะไม่ส่งผลกระทบต่อ 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 BitcodeจะNOต่อต้านการกำหนดค่าบิวด์ที่คุณใช้ (เช่นDEBUG) คุณสามารถตรวจสอบได้ใน project-> target-> build settings-> search enable bitcode-> set NOใน DEBUG (อย่าลืมพยายามอัปเดต libs ก่อนการทดสอบอาจจะมี bitcode อยู่แล้ว) จากนั้นEdit Scheme-> Run-> ตรวจสอบว่าคุณได้กำหนดค่าDEBUGatm หรือไม่
— Vive

1
ดี! ใช่และไม่. ฉันไม่ได้ตั้งค่าไว้ที่เป้าหมาย POD นั่นคือสิ่งที่ฉันมองข้ามไป คำใบ้ของคุณทำให้ฉันอยู่ที่นั่น ขอบคุณ
— DirkLX

ยินดีรับฟังค่ะ :) จะโพสต์เป็นคำตอบเพราะอาจเป็นประโยชน์สำหรับคนอื่น ๆ
— Vive

ทำไมเราต้องเปลี่ยน Bitcode? ก่อนหน้านี้เราไม่จำเป็นต้องอัปเดตค่าของมัน เหตุผลเชิงตรรกะใด ๆ ? ขอบคุณ
— msmq

ทำทุกอย่างแล้ว แต่แอปยังคงขัดข้องในอุปกรณ์ด้วยข้อผิดพลาดเดียวกัน ฉันใช้ iOS 9.1 กรุณาช่วย!
— Md Rais

คำตอบ:


133

คุณแน่ใจหรือไม่ว่าคุณเลือกที่Enable BitcodeจะNOต่อต้านการกำหนดค่าบิวด์ที่คุณใช้ (เช่นDEBUG) คุณสามารถตรวจสอบได้ใน project-> target-> build settings-> search enable bitcode-> set NOin DEBUG(อย่าลืมพยายามอัปเดต libs ก่อนปล่อยทดสอบบางทีอาจมี bitcode อยู่แล้ว) จากนั้นแก้ไข Scheme -> Run -> ตรวจสอบว่าคุณมีDEBUGconfig atm หรือไม่

ป้อนคำอธิบายภาพที่นี่


1
@Zorayr เมื่อคุณได้เพิ่มรูปภาพในโพสต์ของฉัน: คุณควรตรวจสอบการตั้งค่าการสร้างแอปก่อนและเปลี่ยนค่าสถานะนี้ในการตั้งค่าการสร้างแอป เฉพาะในกรณีที่ไม่ช่วยให้ทำเช่นเดียวกันกับ Pods
— Vive

3
แอปพลิเคชันจะได้รับการยอมรับใน App store หรือไม่หากEnable Bitcodeตั้งค่าเป็นNO?
— Ne AS

@NeAS ใช่ ปัจจุบันไม่มีข้อกำหนดในการเปิดใช้งาน bitcode
— Vive

คุณควรปิดใช้งาน bitcode สำหรับพ็อดทั้งหมดของคุณ
— Vadim Kurochkin

54

โปรดทราบว่าสำหรับโปรเจ็กต์ที่ใช้ 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)

ได้รับการแก้ไขโดย:

ป้อนคำอธิบายภาพที่นี่

ป้อนคำอธิบายภาพที่นี่


Apple ปฏิเสธแอพหรือไม่ถ้าเราส่งด้วยตัวเลือก Enable Bitcode = NO?
— Ganesh Guturi

@ G.Ganesh โปรดโพสต์เป็นคำถามแยกต่างหาก นโยบายแตกต่างกันไประหว่าง tvOS และ watchOS ซึ่งคำตอบคือใช่ iOS คำตอบคือไม่ใช่ในอนาคตใช่
— Maxim Veksler

@GaneshGuturi ใช่แล้ว แต่ Apple อาจจะตัดมันในอนาคต อื่น ๆ เช่นคำอธิบายที่นี่: stackoverflow.com/a/31207170/849616
— Vive

17

ฉันก็ประสบปัญหาเดียวกันใน Xcode7 วิธีแก้ปัญหานี้:

  • ไปที่ PROJECT
  • สร้าง Settings
  • เลือก All Tab
  • พิมพ์ค้นหา Enable Bitcode
  • Update FlagถึงNo(ซึ่งจะอยู่ใต้โครงการของคุณ (คอลัมน์ที่สอง))

16

ฉันมีปัญหาคล้ายกันกับไลบรารีฝักโกโก้ของ GoogleAnalytics และไลบรารีไม่ได้รวบรวมสำหรับ iPhone 6 พร้อม iOS 8

วิธีแก้ปัญหาของฉันคือเปลี่ยนเป็นไม่ตั้งค่าสถานะ "เปิดใช้งาน Bitcode" ในเป้าหมายของโครงการแอปพลิเคชันไม่ใช่ในโครงการ Pods


นั่นคือสิ่งที่ฉันได้กล่าวไว้ในความคิดเห็นสำหรับคำตอบของฉัน หากต้องการลองทำในการตั้งค่าโครงการหากไม่ได้ผลให้เปลี่ยนเป็นโครงการพ็อด
— Vive

การสลับเป้าหมายและโปรเจ็กต์เพื่อสร้างการตั้งค่า bitcode NO ใช้ไม่ได้กับการเก็บถาวร หางานสร้าง Sim XCODE 7.0.1
— ort11

11

หาก Bitcode ของคุณไม่แสดงโปรดเลือกทั้งหมด เมื่อ xcode เลือก Basic ตัวเลือก Bitcode ของคุณไม่แสดง

ป้อนคำอธิบายภาพที่นี่

เมื่อคุณเลือกทั้งหมดคุณสามารถเห็น Bitcode หลังจากนั้นตั้งค่า No สำหรับการกำหนดค่าโฆษณา ป้อนคำอธิบายภาพที่นี่


10

ฉันเพิ่งตั้งค่าสำหรับโครงการของฉัน

MyProjectTarget -> สร้างการตั้งค่า -> เปิดใช้งาน Bitcode = NO


1
แอปพลิเคชันจะถูกปฏิเสธใน App store หรือไม่?
— Ne AS

5

อย่างที่ทุกคนพูดคำตอบถูกตั้งค่าEnable Bitcodeเป็นNoในการตั้งค่าการสร้างแต่ฉันคิดว่าพวกคุณบางคนอาจสนใจที่จะทำสิ่งนี้จากบรรทัดคำสั่งบรรทัดคำสั่ง

โครงการ Xcode ของฉันถูกสร้างขึ้นโดย Unity และฉันไม่ต้องการให้มีการแทรกแซงด้วยตนเองในการตั้งค่าโครงการ Xcode อาจมีวิธีที่ดีกว่าหรือเครื่องมือที่สามารถแก้ไขการตั้งค่า Build ได้เช่นวิธีที่PlistBuddyให้คุณอัปเดตค่าในplistไฟล์ ผมไม่ทราบว่าเครื่องมือใด ๆ ที่ไม่นี้สำหรับการตั้งค่าการสร้างเพื่อให้ฉันใช้sed

sed: เรียกใช้การแทนที่ตามนิพจน์ทั่วไป

วิธีตั้งค่าEnable Bitcodeเป็นNoจากบรรทัดคำสั่ง:

ที่นี่ชื่อโปรเจ็กต์ของฉันคือ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;ปรากฏ 6 ครั้งในproject.pbxprojไฟล์.

ตอนนี้ขั้นตอนการสร้างของฉันสามารถดำเนินการโดยอัตโนมัติได้ทั้งหมดเนื่องจากfastlaneดูแลส่วนที่เหลือ!


3

หากคุณไม่พบแฟล็ก enable_bitcode คลิกแท็บ "ทั้งหมด" บนแถบเครื่องมือด้านบนข้างแถบค้นหา ป้อนคำอธิบายภาพที่นี่


โปรดเพิ่มรหัสเพื่ออธิบายคำตอบของคุณได้ดีขึ้น
— Usman Maqbool

1

ลองใช้คำสั่งนี้ในเทอร์มินัลหากคุณไม่สามารถเปลี่ยนการตั้งค่า BITCODE ในโปรเจ็กต์

xcodebuild -target "target" -configuration "configuration" ENABLE_BITCODE = NO

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.