คีย์ CFBundleExecutable ที่ไม่คาดคิด


98

หลังจากใช้เวลา googling มีบางอย่างบอกฉันว่าปัญหานี้เป็นเรื่องใหม่

เรามีโครงการที่รองรับ iOS7-8 อย่างสมบูรณ์ แน่นอนว่ามีการส่งไปยัง AppStore สำเร็จหลายครั้ง

เราใช้พ็อดการติดตามและตรวจสอบจำนวนมากเช่น GA และ Instabug

ตอนนี้เราตัดสินใจที่จะส่งเวอร์ชันของแอปที่สร้างบน Xcode 7 บน iOS 9 ไปยัง TestFlight

เราปิดการใช้งาน bitcode เนื่องจากพ็อดจำนวนมากเช่น Flurry และไลบรารีที่สร้างไว้ล่วงหน้าอื่น ๆ ไม่รวมไว้

การสร้างสำเร็จหลังจากส่งไปยัง iTunesConnect เราจะได้รับสิ่งนี้: ป้อนคำอธิบายภาพที่นี่

เรามีไลบรารี GoogleAppIndexing เหมือนกัน (ในพ็อดด้วย) แต่เราลบออกเพื่อให้ใช้งานได้ ตอนนี้ - Instabug มันไปไกลเกินไปฉันจึงพยายามทำความเข้าใจว่าเกิดอะไรขึ้นใน iOS 9 และอะไรคือการเปลี่ยนแปลงที่ทำให้โครงการทำงานได้อย่างสมบูรณ์เพื่อเริ่มทิ้งข้อผิดพลาดดังกล่าว

ยินดีรับความคิดและความคิด! โปรดแบ่งปันประสบการณ์ของคุณและหากฉันพลาดอะไรไปฉันยินดีที่จะแบ่งปันขั้นตอนของฉัน


2
คุณได้แก้ปัญหานี้แล้วหรือยัง? ฉันประสบปัญหานี้เช่นกัน แต่เป็น GoogleMaps.bundle ...
Johnny

1
ไม่มียังไม่ได้. ดูเหมือนว่าจะเป็นปัญหาทั่วไป
Dumoko

สิ่งนี้น่ารำคาญจริงๆ :( ฉันได้ถามในฟอรัมนักพัฒนาของ Apple ดูว่ามีใครมีปัญหานี้อีกบ้าง
Johnny

เราเห็นสิ่งนี้เช่นกันในการผสานรวมใหม่กับ Startapp นอกจากนี้ iOS 9 และ Xcode 7 beta 5
Trey Bean

2
Moataz จาก Instabug ที่นี่ คุณสามารถแทนที่ Instabug.bundle ที่คุณมีด้วยdropbox.com/s/37zwhaqzatfnz3n/Instabug.bundle.zip?dl=0 ได้ไหมแจ้งให้เราทราบว่าเป็นอย่างไร
Moataz Soliman

คำตอบ:


112

ผมพบปัญหาเดียวกันในวันนี้ด้วยข้อผิดพลาดที่แน่นอนเดียวกันเมื่อพยายามที่จะส่งแอปของเรา (โดยใช้ Xcode 7 เบต้า 5) แต่แทนที่จะเป็นบิตก็คือสำหรับผมinstabug.bundleTencentOpenApi_IOS_Bundle.bundle

ฉันแก้ไขปัญหาโดยการค้นหาบันเดิลที่มีชื่อในโปรเจ็กต์ - ตามที่ข้อความแสดงข้อผิดพลาดแนะนำ - แก้ไขสิ่งInfo.plistที่อยู่ในบันเดิลโดยการลบCFBundleExecutableคีย์ CFBundlePackageTypeสำคัญถูกกำหนดแล้วBNDLดังนั้นฉันไม่ได้สัมผัสมัน

หลังจากการเปลี่ยนแปลงเหล่านี้ฉันทำผลิตภัณฑ์> ทำความสะอาดแล้วก็ไม่มีปัญหาในการส่งแอปไปยัง App store

ฉันหวังว่านี่จะช่วยได้.


2
ขอบคุณสำหรับการแบ่งปันประสบการณ์ของคุณ! ดังนั้นจึงเป็นปัญหาของผู้เขียนห้องสมุด แต่พวกเรานักพัฒนาไม่ควรใช้กลอุบายเหล่านี้ ... ตัวอย่างเช่นฉันใช้พ็อดและระบบ CI ฉันไม่สามารถไปที่ CI ได้และทุกครั้งหลังจากการติดตั้งพ็อดทำการเปลี่ยนแปลงด้วยตนเองนี้ แต่อย่างน้อยเราจะทำให้มันใช้งานได้ ตอนนี้ฉันกำลังมองหาวิธีแก้ปัญหาทั่วไป หากไม่มาเร็ว ๆ นี้ฉันจะทำเครื่องหมายว่าคำตอบของคุณเป็นคำตอบที่ช่วยได้ ขอขอบคุณอีกครั้ง!
Dumoko

ฉันไม่สามารถทำสิ่งนี้ได้ ถ้าฉันพยายามเปิด info.plist ภายในพ็อดใน Xcode มันจะบอกฉันว่าไฟล์ถูกล็อกและการเปลี่ยนแปลงจะไม่ถูกบันทึก (และมันไม่ได้) ถ้าฉันใช้โปรแกรมแก้ไขข้อความภายนอกฉันจะเห็นว่าเนื้อหาของไฟล์ plist นั้นเข้ารหัสแล้วมันไม่ใช่ข้อความธรรมดา
Mike Keskinov

@MikeKeskinov ลิงค์นี้มีประโยชน์ไหม: [ apple.stackexchange.com/questions/68646/… ? แนะนำให้ค้นหา info.plist ใน Finder และแก้ไขสิทธิ์ของไฟล์เพื่อให้คุณแก้ไขใน Xcode
Sleiman

ฉันก็มีปัญหาที่คล้ายกันและรายงานไปยัง Apple ขั้นตอนของคุณถูกต้องตามที่ Apple แนะนำ bugreport.apple.com/problem/viewproblem
Avinash

ฉันเขียนเชลล์สคริปต์เพื่อลบสิ่งนี้เป็นวิธีแก้ปัญหาชั่วคราว คุณเพิ่มสิ่งนี้เป็นสคริปต์รันระหว่างขั้นตอนการสร้างของโปรเจ็กต์ของคุณ: gist.github.com/brightredchilli/ca63430518f0daa4dfa9
ยิ่ง

52

พบสิ่งนี้AviarySDKใน Xcode 7 GM ขณะส่งไปที่ App Store

ก่อนอื่นฉันจะตรวจสอบว่าคุณใช้ไลบรารีเวอร์ชันล่าสุดหรือไม่ผู้ขายอาจแก้ไขปัญหานี้แล้ว อย่างไรก็ตามหากคุณยังคงประสบปัญหานี้ตามที่ Sleiman อธิบายว่าคุณจำเป็นต้องลบCFBundleExecutableคีย์ออกจากไฟล์ plist สำหรับไลบรารีที่กระทำผิด

Cmd + Shift + O แล้วพิมพ์ "Info.plist" จากนั้นคุณจะพบไฟล์ที่เหมาะสม:

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

เมื่อแก้ไข plist คุณอาจเห็นชื่อที่สื่อความหมาย (แทนที่จะเป็นCFBundleExecutableและคีย์อื่น ๆ ฉันไม่สามารถแก้ไขไฟล์นี้ในโปรแกรมแก้ไขภายนอกได้ดังนั้นฉันจึงต้องเปลี่ยนไปดูคีย์ / ค่าดิบโดยคลิกขวาที่รายการ:

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

ตอนนี้คุณสามารถเห็นCFBundleExecutableคีย์ (ซึ่งมีคำอธิบาย "ไฟล์ปฏิบัติการ") ซึ่งคุณสามารถลบได้

สำหรับ AviarySDK ฉันทำสิ่งนี้สองครั้งครั้งเดียวสำหรับแต่ละภาพที่Info.plistเห็นในภาพด้านบนและจากนั้นก็สามารถส่งได้สำเร็จ


คุณรู้หรือไม่ว่าผลข้างเคียงของสิ่งนี้คืออะไร? ฉันมีปัญหาเดียวกันกับชุด Polljoy คุณคิดว่ารายการนั้นอยู่ในความผิดพลาดหรือไม่?
Stoff81

1
"Xcode จะเพิ่มคีย์นี้ลงในไฟล์รายการคุณสมบัติข้อมูลของโครงการที่เหมาะสมโดยอัตโนมัติ" ฉันขอโทษฉันไม่สามารถบอกคุณผลข้างเคียง แต่ฉันสงสัยว่ามันเกิดจากการใช้ห้องสมุดเก่าที่ยังไม่ได้รับการแจกจ่ายด้วยการสนับสนุนกรอบแล้ว Xcode พยายามที่จะรักษามันเช่นเดียวกับคนที่ไม่ได้รับการสนับสนุน สำหรับ Frameworks
Adam S

น่าเสียดายสำหรับบางไลบรารี (เช่น AppIndexing เป็นต้น) เนื้อหาไฟล์ plist ดูเหมือนจะเข้ารหัส อนุญาตให้คุณดู แต่ไม่บันทึกการเปลี่ยนแปลงใด ๆ เมื่อลองเปิดไฟล์นอก XCode จะเห็นได้ชัดว่าไฟล์นั้นถูกเข้ารหัส (ไม่มีข้อความธรรมดา)
Mike Keskinov

สิ่งนี้ใช้ได้กับการลงชื่อเข้าใช้ Google และอนุญาตให้ฉันอัปโหลดไปยัง App store
James

2
ฉันเพิ่งเสนอปัญหาเดียวกันกับ Aviary และ Cocoapods 0.39 การแก้ไขที่แนะนำของคุณดูเหมือนจะใช้งานได้ ดูเหมือนว่าอาจถึงเวลากัดกระสุนและเปลี่ยนไปใช้ AdobeCreativeSDK :(
Keab42

11

ฉันแก้ปัญหานี้ได้ดังนี้: เราต้องลบ "ไฟล์ปฏิบัติการ" ทั้งหมดของแพ็คเกจต่อไปนี้:

  • GooglePlus.bundle
  • GPPCommonSharedResources.bundle
  • GPPShareboxSharedResources.bundle

ตรวจสอบให้แน่ใจว่า "Bundle type code" เท่ากับ BNDL

สำคัญ: อย่าแก้ไขสิ่งใด ๆ ในข้อมูลโปรดดูโครงการหลัก

หน้าจอที่แนบมาตามที่ควรจะเป็น "info.plist" ของเขาที่ระบุไว้ด้านบนแต่ละแพ็คเกจ

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

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

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


9

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน

  1. Apple-Shift-F ค้นหา CFBundleExecutable
  2. คลิกแต่ละรายการยกเว้น "PODS" หรือเป้าหมายหลักของคุณ
  3. ลบมัน (ปุ่มลบ)

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


คุณสามารถช่วยฉันได้ที่: stackoverflow.com/questions/39512387/…
NaXir

5

หากบิลด์ถูกส่งผ่านน้อยกว่า (<) Xcode 7.0จะถูกส่งและฉันได้แก้ไขด้วยวิธีต่อไปนี้สำหรับXcode 7 :

ค้นหาinfo.plistในโปรเจ็กต์ Project Navigator ดังภาพต่อไปนี้:

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

ตอนนี้เปิดinfo.plistไฟล์เหล่านี้ทีละไฟล์และลบBundleExecutableคีย์ยกเว้นไฟล์info.plist

ตอนนี้ทำความสะอาดโครงการและประสบความสำเร็จและส่งโดยไม่มีปัญหา


4

ฉันมีปัญหาเดียวกันใน Google Maps Library ฉันลบCFBundleExecutableคีย์ภายในGMSCoreResources.bundle( Info.plist) ซึ่งเป็นโปรเจ็กต์ที่สะอาด info.plist ของ SDK และอัปโหลดไปยัง appstore

การเขียนโปรแกรมอย่างมีความสุข

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


1

เพียงตรวจสอบการตั้งค่าการสร้าง => เปิดใช้งาน Bitcode และตั้งค่าเป็น NO


0

หมายเหตุเพิ่มเติมอย่างหนึ่ง: บางครั้งหากคุณมีเป้าหมายเพิ่มเติมจะมีคุณสมบัติเป้าหมายที่อาจรวมคีย์ไว้ด้วย (ในส่วน "ข้อมูล") ดังนั้นอย่าลืมตรวจสอบและลบออกจากที่นั่นด้วย ฉันค้นพบสิ่งนี้ด้วยหนึ่งในกลุ่มที่ฉันพยายามจะรวมไว้ ฉันลบข้อมูลออกจาก plist แต่ยังคงได้รับข้อผิดพลาด


0

หากคุณเห็นข้อผิดพลาดนี้จากไลบรารีที่ติดตั้งผ่าน CocoaPods ให้ลองใช้ pod update <OFFENDING POD NAME>

นั่นช่วยแก้ปัญหาให้ฉันได้



0

ในกรณีของฉันฉันแค่ลากและวางSDKโฟลเดอร์ In รวมinfo.plistไฟล์ที่ไม่ได้ใช้งาน นั่นสร้างปัญหาให้ฉัน ดังนั้นค้นหาinfo.plistไฟล์ที่ไม่ได้ใช้และลบออกจากซอร์สโค้ด

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