การตั้งค่า 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.