ข้อผิดพลาดในการตรวจสอบความถูกต้อง: Bundle ไม่ถูกต้อง บันเดิลที่ ... มีไฟล์ 'Frameworks' ที่ไม่อนุญาต


165

ฉันกำลังพยายามส่งแอปด้วย Xcode6 GM และฉันได้รับข้อผิดพลาดนี้ในการตรวจสอบ แอพมีส่วนขยายการกระทำและเฟรมเวิร์กแบบไดนามิกที่แชร์ระหว่างส่วนขยายและแอป

ฉันไม่มีไฟล์ชื่อ 'Frameworks' ที่ใดก็ได้ในโครงการดังนั้นฉันไม่แน่ใจว่าสิ่งนี้ควรหมายถึงอะไร มีใครได้รับปัญหานี้หรือมีความคิดใด ๆนี่คือข้อผิดพลาดที่ดูเหมือน


โฟลเดอร์ชื่อ Frameworks เป็นอย่างไร?
borrrden

มี 'กลุ่ม' ในโครงการที่เรียกว่า Frameworks แต่ไม่มีโฟลเดอร์ ฉันลบออกแล้วเก็บถาวรอีกครั้งและฉันยังคงได้รับข้อผิดพลาดเดิม
Mike

คำตอบ:


308

ปรากฎว่ามีข้อผิดพลาดเกี่ยวข้องกับการใช้ Swift (ทั้งแอพและส่วนขยายใช้ประโยชน์จาก Swift)

สำหรับแอพฉันต้องตั้งค่า:

Embedded Content Contains Swift Code: YES

และสำหรับส่วนขยาย:

Embedded Content Contains Swift Code: NO

Xcode 8 และ 9

ดูเหมือนว่านี่ถูกเปลี่ยนชื่อเป็นAlways Embed Swift Standard Librariesใน Xcode 8 และ 9 ดังนั้นสำหรับแอป:

Always Embed Swift Standard Libraries: YES

และสำหรับส่วนขยาย:

Always Embed Swift Standard Libraries: NO

7
คุณคือผู้ช่วยให้รอดของฉัน "สมองกลฝังตัว" หมายถึงส่วนขยายในชุดรวมและเนื่องจากส่วนขยายไม่มีส่วนขยายเพิ่มเติมจึงไม่มีรหัสที่รวดเร็ว
Chris Truman

2
นี่ไม่ได้แก้ปัญหาสำหรับฉัน ฉันยังใช้ CocoaPods ด้วย มีใครเคยเห็นประเด็นที่เกี่ยวข้องกับสิ่งนั้นหรือ ความคิดอื่น ๆ ?
timschmitz

8
อย่าลืมส่วนขยาย WatchKit เพื่อให้แน่ใจว่าเส้นทางการค้นหา Runpath มี@executable_path/../../Frameworks
Mr Rogers

1
@MrRogers นี่คือสิ่งที่แก้ไขปัญหาของฉันหลังจากทำตามคำตอบ ฉันมีแอพ objC พร้อมนาฬิกาที่รวดเร็ว จะทำงานได้ดีโดยไม่ต้องตั้งค่าเนื้อหาที่ฝังอย่างไรก็ตามมันได้รับการปฏิเสธจากแอปเปิ้ล การตั้งค่าเนื้อหาที่ฝังอย่างถูกต้องทำให้แอปเสียหาย เส้นทางการค้นหานี้เป็นสิ่งที่แก้ไข
Beau Nouvelle

1
สิ่งนี้ใช้ไม่ได้สำหรับฉันฉันต้องทำอย่างอื่นและอยู่ในส่วนขยายเป้าหมายที่มีปัญหาฉันลบสคริปต์ใน "[CP * Embed Pods Frameworks" หลังจากนี้ทำงานได้อย่างถูกต้อง !!
A. Trejo

122

ทางออกเดียวที่ทำงานได้สำหรับฉันคือการเพิ่ม Run Script นี้ไปยังเป้าหมายส่วนขยายแอป:

cd "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/"
if [[ -d "Frameworks" ]]; then 
    rm -fr Frameworks
fi

ป้อนคำอธิบายรูปภาพที่นี่ ที่มา: https://github.com/CocoaPods/CocoaPods/issues/4203


7
แอพของฉันไม่ได้ใช้ Swift ดังนั้นนี่เป็นการแก้ไขเดียวที่ใช้ได้สำหรับฉันเช่นกัน
Dan Loughney

6
เป็นมูลค่าการกล่าวขวัญว่าจะต้องเพิ่มไปยังส่วนขยายเท่านั้นไม่ใช่เป้าหมายหลัก
theDuncs

3
นี่เป็นการแก้ปัญหา แต่ก็มีปัญหาอื่นซึ่งฉันไม่สามารถเรียกใช้แอพของฉันบนอุปกรณ์จำลองได้ทั้งบนอุปกรณ์ของฉัน มันทำให้เกิดข้อผิดพลาด: dyld: Library not loaded: ... Image not foundทุกคนสามารถช่วยฉันได้?
Subkhan Sarif

4
มันเป็นเพียงฉันหรือเป็นคนบ้าแบบนี้?
bkbeachlabs

1
แก้ไขการตรวจสอบ. ipa แต่หยุดทำงานเมื่อติดตั้งพร้อมข้อความแสดงข้อผิดพลาด: dyld: ไม่ได้โหลดไลบรารี: @ rpath / AFNetworking.framework / AFNetworking อ้างอิงจาก: / var / container / Bundle / Application / .... เหตุผล: ไม่พบภาพ
Aleem

45

ดังนั้น 3 ขั้นตอนในการแก้ไขปัญหานี้จากการตั้งค่าบิลด์

  1. แอปคอนเทนเนอร์: Embedded Content Contains Swift Code: YES
  2. ส่วนขยาย: Embedded Content Contains Swift Code: NO
  3. ส่วนขยาย: เส้นทางการค้นหา Runpath = @executable_path/../../Frameworks

2
คอนเทนเนอร์ vs นามสกุลฉันยังใหม่กับ Xcode นั่นคือฝักโกโก้นามสกุลหรือไม่ หรือสองสิ่งนี้อยู่ที่ไหน?
Serge Pedroza

16

ในกรณีของฉันฉันเพิ่งอัพเกรดเป็น CocoaPods 1.0.1 และนี่เป็นข้อผิดพลาดใหม่

การอัพเดท Pod เพิ่มสคริปต์การทำงานไปยังเป้าหมายของส่วนขยายของฉันซึ่งสร้างโฟลเดอร์ Frameworks ฉันพบว่าฉันกำลังจะเพิ่มสคริปต์การทำงานของ @ Roman เพื่อลบออก

วิธีแก้ไขคือลบสคริปต์นี้ออกจากขั้นตอนการสร้างส่วนขยายของฉัน นี่คือสิ่งที่จะต้องไป ...

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


7
แก้ไขได้สำหรับฉัน! CocoaPods อีกครั้งหนึ่งที่ทำให้ฉันต้องเสียค่าใช้จ่ายในการพยายามคิดว่ามีอะไรผิดปกติ ฉันมีความสัมพันธ์ที่จริงจังกับความรักและเกลียดชังกับผลิตภัณฑ์นั้น
fguchelaar

2
การอัพเกรด Cocoapods เพื่อ1.1.0.rc.2แก้ไขปัญหาสำหรับฉัน
Otávio

1
การลบ Embed Pods Framework ภายใต้ Build Phases ของแป้นพิมพ์ทำงานได้สำหรับฉัน! ฉันใช้ Xcode 8 และ CocoaPods v1.0.1 ขอบคุณ!
Storm Factory

13

ลบทุกBuild Buildสำหรับส่วนขยายที่มีembedคำอยู่ในชื่อ

นอกจากนี้:

  • เนื้อหาแบบฝังประกอบด้วยรหัส Swiftต้องตั้งค่าYesเป็นเป้าหมายส่วนขยาย

11

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

หากต้องการยืนยันขั้นแรกให้เก็บถาวรด้วย Xcode จากนั้นใช้ Organizer เลือกรายการและค้นหาโดยใช้แสดงในตัวค้นหา นี้จะแสดงให้เห็นถึง.xcarchiveไฟล์

เลือกไฟล์นั้นและเลือก "แสดงเนื้อหาของแพ็คเกจ"

เลือก. app ในโฟลเดอร์ผลิตภัณฑ์ / แอปพลิเคชันและเลือก "แสดงเนื้อหาแพ็คเกจ" อีกครั้ง

ค้นหาโมดูลที่มีการละเมิดในโฟลเดอร์ Frameworks ตัวอย่างเช่นหากข้อผิดพลาดคือ:

ERROR ITMS-90206: "Invalid Bundle. The bundle at 'MyApp.app/Frameworks/MyLib.framework' contains disallowed file 'Frameworks'."

จากนั้นในFrameworks/MyLib.frameworkต่อไปนี้อาจจะมองเห็นได้:

../Frameworks/libswiftContacts.dylib
../Frameworks/libswiftCore.dylib
../Frameworks/libswiftCoreData.dylib
../Frameworks/libswiftCoreGraphics.dylib
../Frameworks/libswiftCoreImage.dylib
../Frameworks/libswiftCoreLocation.dylib
../Frameworks/libswiftDarwin.dylib
../Frameworks/libswiftDispatch.dylib
../Frameworks/libswiftFoundation.dylib
../Frameworks/libswiftLocalAuthentication.dylib
../Frameworks/libswiftObjectiveC.dylib
../Frameworks/libswiftPassKit.dylib
../Frameworks/libswiftUIKit.dylib
../Frameworks/libswiftWebKit.dylib

สิ่งเหล่านี้มีอยู่เพราะไลบรารีหรือโมดูลที่เชื่อมโยงซึ่งแอพแม่รวมถึงมี EMBEDDED_CONTENT_CONTAINS_SWIFT = YES;

ค้นหาโมดูลที่ต้องพึ่งพาใน Xcode และอัพเดตแฟล็ก:

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

โปรดทราบว่าหลังจากที่เอาชนะปัญหานี้แล้วแอพอาจถูกปฏิเสธด้วยอีเมลอธิบายจาก iTunes Store:

Invalid Swift Support - The Watch OS application has Swift libraries at both...

สิ่งนี้กลับมาที่EMBEDDED_CONTENT_CONTAINS_SWIFTธงอีกครั้ง ตรวจสอบให้แน่ใจว่ามีแอปหลักเท่านั้นที่ตั้งค่าYESนี้ ทั้งแอพพลิเค WatchKit NOและการขยายจะต้องมีการตั้งค่าสถานะนี้ไป นี่เป็นรายละเอียดตามคำตอบของ @ Mike ด้านบน


10

ในกรณีของฉันมีหนึ่งไลบรารี CocoaPod "Blockly" ที่ระบุว่าใช่สำหรับ "Always Embed Swift Standard Libraries" หลังจากทำไม่ได้สำหรับตัวเลือกก็ใช้งานได้ป้อนคำอธิบายรูปภาพที่นี่


9

ในกรณีของฉันวิธีแก้ไขคือการลบกรอบงานของฉันออกจาก Embedded Binaries ของส่วนขยายและเพิ่มลงใน Framework และไลบรารีที่เชื่อมโยงของส่วนขยาย (สามารถพบทั้งคู่ได้ในแท็บทั่วไปของส่วนขยาย)


7

หากสคริปต์ฝัง Pods Frameworksและสคริปต์ของ Romanอยู่ในเป้าหมายเดียวกัน

โปรดตรวจสอบว่ามีการวางกรอบการฝังไว้ก่อนส่วนอื่นหรือไม่ ถ้าไม่เพียงแค่ย้ายสคริปต์ของ Roman ไปยังหน้าสุดท้าย


คุณยอดเยี่ยม @Reeonce Zeng ประหยัดวันของฉัน!
mgyky

ฉันควรเก็บสคริปต์ทั้งสองไว้ที่นั่นหรือเฉพาะส่วนสุดท้ายหรือไม่ "$ {SRCROOT} / Pods / ไฟล์สนับสนุนเป้าหมาย / Pods-Orsys WatchKit Extension / Pods-Orsys WatchKit Extension-frameworks.sh" cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} / ถ้า" [เฟรม] ]; แล้ว RM -fr กรอบไฟ

@stack คุณควรเพิ่มระยะการรันสคริปต์ใหม่และเติม: `cd" $ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} / "ถ้า [[-d" Frameworks "]]; rm -fr Frameworks fi `
Reeonce Zeng

คุณหมายถึงอะไรโดยใช้สคริปต์ใหม่ เรามีสคริปต์อยู่ที่นั่นแล้ว ตกลง ? แทนที่สคริปต์เก่าฉันควรจะรันทันทีเมื่อโครงการเปลี่ยนข้อความของคุณ ฉันจำเป็นต้องเลือกตัวเลือก "เรียกใช้สคริปต์เมื่อติดตั้งโปรแกรม" ที่นั่นหรือไม่?

โปรดช่วยฉันอีกหน่อย ฉันได้รับข้อผิดพลาดในการขยาย wathckit ในโครงการส่วนขยาย watchkit ของฉันไม่มี "แก้ไข appex ที่ไม่อนุญาต ... " ตัวเลือก / เมนู / แท็บในโครงการของฉัน ฉันจะหาได้ที่ไหน ฉันมีเฉพาะ "กรอบพ็อดฝัง" และ "คัดลอกกรอบพ็อด" กรุณาช่วย.

6

ฉันไม่พบการตั้งค่าใด ๆEmbedded Content Contains Swift Codeแต่ฉันสามารถค้นหาการตั้งค่าAlways Embed Swift Standard Librariesและการตั้งค่านี้เป็น NO สำหรับกรอบงานของฉันได้แก้ไขปัญหานี้แล้ว


4
  1. แอปคอนเทนเนอร์: การตั้งค่าการสร้าง -> เนื้อหาที่ฝังไว้ประกอบด้วยรหัส Swift: YES
  2. ส่วนขยาย: การตั้งค่าการสร้าง -> เนื้อหาแบบฝังประกอบด้วยรหัส Swift: NO
  3. ส่วนขยาย: รูปร่างเฟส -> เพิ่มต่อไปนี้เรียกใช้สคริปต์ใน

cd "$ {CONFIGURATION_BUILD_DIR} / $ {UNLOCALIZED_RESOURCES_FOLDER_PATH} /" ถ้า [[-d "กรอบ"]]; rm -fr Frameworks fi แล้ว

  1. (สำคัญ) ส่วนขยาย: สร้างเฟส -> ย้ายสคริปต์เรียกใช้ไปยังสคริปต์สุดท้าย (หลังจากสคริปต์ฝังกรอบ Pods)

"to the Last" เป็นส่วนสำคัญสำหรับฉันขอบคุณ
Andy Obusek

3

หากคุณใช้ CocoaPods ฉันจะพิจารณาลบเฟรมเวิร์กการฝังในส่วนสร้างเป้าหมาย (ส่วนขยาย) ซึ่งจะเป็นการแก้ไขปัญหาให้ฉัน


2

ฉันได้รับข้อผิดพลาดเดียวกันและเป็นเพราะฉันกำลังคัดลอกเฟรมเวิร์กลงในบันเดิลส่วนขยาย ตามที่ปรากฎเฟรมเวิร์กที่ใช้โดยส่วนขยายควรถูกคัดลอกไปยังบันเดิลหลักของแอปและเชื่อมโยงในการตั้งค่าการสร้างส่วนขยายเท่านั้น (ไม่ได้คัดลอก) ตรวจสอบให้แน่ใจว่าได้ใช้พา ธ การค้นหา '@executable_path /../../ Frameworks' ในส่วนต่อขยายที่สร้าง ฉันคิดว่าเส้นทางนั้นถูกเพิ่มโดยอัตโนมัติด้วย XCode 10


1

ฉันพบคำถามมากมายเช่นนี้และไม่มีใครช่วยฉันแก้ไขปัญหาของฉันดังนั้นหวังว่านี่จะช่วยคนได้

ฉันกำลังสร้างแอพที่มีส่วนขยายเจตนา (สำหรับทางลัดสิริ) และฉันกำลังใช้เฟรมเวิร์กสำหรับรหัสที่แชร์ระหว่างส่วนขยายและแอปของฉันตามที่ Apple แนะนำ

ฉันเพิ่มกรอบงานของฉันลงในส่วนขยายของฉันในส่วน "กรอบงานและห้องสมุด" ของการตั้งค่า "ทั่วไป" สำหรับเป้าหมาย เมื่อคุณเพิ่มกรอบงานที่นี่มีสองคอลัมน์ หนึ่งกล่าวว่าชื่อของกรอบและอื่น ๆ ที่มีชื่อว่า "ฝัง" ฉันไม่มีอะไรแสดงในคอลัมน์ "ฝัง" ดังนั้นฉันคิดว่าไม่เป็นไร แต่ฉันต้องเลือกตัวเลือก "ไม่ต้องฝัง" อย่างชัดเจนสำหรับคอลัมน์นั้นสำหรับกรอบงานของฉัน เมื่อฉันทำอย่างนั้นและเก็บถาวรใน Xcode ฉันจะได้เห็นในระหว่างการตรวจสอบว่ากรอบไม่ได้ระบุไว้ในเนื้อหา ipa ของฉันภายใต้แต่ละเป้าหมายอีกต่อไป แต่เพียงแค่ครั้งเดียวและการตรวจสอบความสำเร็จในที่สุด


0

ฉันมีปัญหานี้เป็นครั้งแรกกับ XCode 7.1.1 สำหรับแอปของฉันที่มีส่วนขยายวันนี้ (ไม่มี Swift ในโครงการของฉัน) สคริปต์ ( https://github.com/CocoaPods/CocoaPods/issues/4203 ) ไม่ทำงานสำหรับฉัน

การลดระดับ cocoapods เป็นเวอร์ชั่น 0.39.0.beta.3 การเรียกใช้pod installแล้วการจัดเก็บลงสื่อถาวรอีกครั้งสามารถแก้ไขปัญหาได้


0

ฉันได้รับข้อผิดพลาดเดียวกันนี้พร้อมกับ

ข้อผิดพลาดการรวมกลุ่มที่ไม่อนุญาต

ปัญหาของฉันเกิดจากการใช้งานSquareReaderSDK.frameworkเฉพาะ แต่ฉันต้องเพิ่มสคริปต์เรียกใช้ใหม่ตามคำแนะนำ:

FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}"
"${FRAMEWORKS}/SquareReaderSDK.framework/setup"

0

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

ปรากฏว่าแอพหลักของฉันและหนึ่งในเฟรมเวิร์กที่กำหนดเองของฉันมีการพึ่งพาเฟรมเวิร์กเดียวกันทั้งคู่และดูเหมือนจะไม่ใช่ แต่ย้ายในแอปหลักของฉันจากพื้นที่ฝังตัวไปยังพื้นที่เชื่อมโยงทำให้ฉันสามารถอัปโหลดแอปได้สำเร็จ ไม่มีข้อผิดพลาด

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