Flutter - สร้างสำหรับ iOS แต่เฟรมเวิร์กที่เชื่อมโยงและฝังตัว 'App.framework' สร้างขึ้นสำหรับ iOS Simulator


13

หลังจากอัปเดตเป็น Catalina 10.15.4 beta ด้วย Xcode 13.4 beta ซึ่งปรับปรุง Simulator เป็น 13.4 (921.4)

แอปพลิเคชั่นรวบรวมและทำงานอย่างถูกต้องบนอุปกรณ์ต่อพ่วงทางกายภาพ แต่ไม่มีอุปกรณ์จำลองใดที่สามารถผ่านขั้นตอนนี้ได้

ฉันได้รับข้อผิดพลาด

สิ่งปลูกสร้างสำหรับ iOS แต่เฟรมเวิร์กที่เชื่อมโยงและฝังตัว 'App.framework' สร้างขึ้นสำหรับ iOS Simulator

หรือ

สิ่งปลูกสร้างสำหรับ iOS Simulator แต่เฟรมเวิร์กที่เชื่อมโยงและฝังตัว 'App.framework' สร้างขึ้นสำหรับ iOS

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

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

คำตอบ:


42

Xcode 11.4 เปลี่ยนวิธีเชื่อมโยงและฝังกรอบงานและคุณอาจประสบปัญหาในการสลับระหว่างอุปกรณ์ iOS และเครื่องจำลอง Flutter v1.15.3 และใหม่กว่าจะโอนย้ายโครงการ Xcode ของคุณโดยอัตโนมัติ

หากต้องการถอนการติดตั้งให้ทำตามคำแนะนำด้านล่าง

  • แก้ไขด่วน (ทำให้เครื่องมือจำลองของคุณทำงานได้)

rm -rf ios/Flutter/App.framework

  • แนะนำขั้นตอนอย่างเป็นทางการในการโยกย้ายด้วยตนเอง

    1. จากไดเร็กทอรีแอพพลิเคชั่น Flutter ให้เปิด ios / Runner.xcworkspace ใน Xcode
    2. ในบานหน้าต่างนำทางค้นหากลุ่ม Flutter และลบ App.framework และ Flutter.framework ป้อนคำอธิบายรูปภาพที่นี่
    3. ในการตั้งค่าเป้าหมายการสร้าง Runner Runner สร้างเฟส> เชื่อมโยงไบนารีกับไลบรารี่ยืนยันว่า App.framework และ Flutter.framework ไม่มีอยู่อีกต่อไป ยืนยันใน Build Phases> Embed Frameworks ด้วย

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

  1. เปลี่ยนการตั้งค่าการสร้างเป้าหมาย Runner Runner Build Phases> Thin Binary script ดังต่อไปนี้:

    / bin / sh "ฝัง $ FLUTTER_ROOT / แพ็คเกจ / flutter_tools / bin / xcode_backend.sh"

    / bin / sh "$ FLUTTER_ROOT / แพ็คเกจ / flutter_tools / bin / xcode_backend.sh" บาง

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

  1. ในเป้าหมายของ Runner Runner Build Settings> Other Linker Flags

    (OTHER_LDFLAGS) เพิ่ม $ (สืบทอดมา) -framework Flutter

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

หวังว่ามันจะช่วย!


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

1
ทำงานเหมือนจับใจ!
Giedrius Šlikas

3

Xcode 11.4 เปลี่ยนวิธีการเชื่อมโยงและฝังตัวเฟรมเวิร์กซึ่งเป็นสาเหตุของปัญหาการสลับระหว่างอุปกรณ์ iOS และเครื่องจำลอง

โปรดปฏิบัติตามคำแนะนำอย่างเป็นทางการเกี่ยวกับวิธีโยกย้ายโครงการของคุณ


หลังจากทำตามคำแนะนำอย่างเป็นทางการแล้วแอพของฉันยังไม่โหลดบนอุปกรณ์ทางกายภาพ มันเป็นเพียงหลังจากทำตามคำแนะนำรันflutter cleanหลาย ๆ ครั้งลบPods/โฟลเดอร์Podfile.lockแล้วติดตั้งใหม่โดยใช้pod installในโฟลเดอร์ ios ที่ใช้งานได้ในที่สุด
Matthew Lerner

2

อัปเดตเป็น Xcode 11.4 Ios 13.4, Iphone X. แอพดึงข้อมูลโดยใช้ API แอปเริ่มต้นบนหน้าจอสีขาวและในที่สุดก็เกิดปัญหาทั้งบนเครื่องจำลองและอุปกรณ์

ผมทำตามคู่มืออย่างเป็นทางการ (ฉันยังrm -rf ios/Flutter/App.framework) flutter.dev/docs/development/ios-project-migration ฉันวิ่งไปหลายครั้งflutter clean

ฉันยังลองลบ Pods / folder และ Podfile.lock จากนั้นทำการติดตั้งใหม่โดยใช้pod installในโฟลเดอร์ ios

ในขณะที่ฉันกำลังใช้ข้อมูล async ฉันยังเพิ่มเป็นบรรทัดแรกใน main ()

WidgetsFlutterBinding.ensureInitialized();

ไม่มีความช่วยเหลือแอพไม่ได้ทำการจำลองใด ๆ

จากนั้นฉันก็ลบios/และandroid/โฟลเดอร์ หลังจากนั้นในโฟลเดอร์โครงการฉันรันคำสั่งflutter create .ที่สร้างโฟลเดอร์ที่กล่าวถึงใหม่

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


1

หลังจากหลายวันพยายามหาวิธีแก้ปัญหาเพื่อทดสอบแอพ Flutter บนอุปกรณ์ iOS ในที่สุดฉันก็พบสิ่งนี้:

flutter clean
flutter build ios

- เปิด xCode และเรียกใช้แอปบนอุปกรณ์ของคุณ


ยังไม่ทำงานสำหรับฉัน ทำสิ่งเดียวกันเมื่อฉันพยายามเรียกใช้flutter build ios
Raymond Ativie


ใช่นั่นคือสิ่งที่ฉันทำลงเอยด้วยการขอบคุณ
Raymond Ativie

0

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

  1. ฉันสร้าง 2 โฟลเดอร์ภายในโครงการกระพือชื่อ
    "ios_simulator" และ "ios_real_device" ป้อนคำอธิบายรูปภาพที่นี่

  2. ตอนนี้งานสร้างครั้งแรกของฉันสำหรับจำลองแล้วฉันต้องการเปลี่ยนเป็นอุปกรณ์จริงฉันจะย้ายโฟลเดอร์ iOS ภายในโครงการ Flutter ไปยัง "ios_simulator"

  3. ฉันเปิดโครงการด้วยรหัส visual studio และเรียกใช้ "flutter create" และตอนนี้ฉันจะเลือกอุปกรณ์จริงเพื่อสร้างโครงการใหม่ (หากเครื่องมือจำลองของคุณออนไลน์โปรดออกจาก) ป้อนคำอธิบายรูปภาพที่นี่
  4. ตอนนี้ฉันรอให้การสร้างเสร็จสิ้นและรันบนอุปกรณ์จริงโดยไม่มีข้อผิดพลาด ตอนนี้ฉันมี 2 โครงการ iOS สำหรับเครื่องจำลองและอีกหนึ่งสำหรับอุปกรณ์จริง
  5. ครั้งต่อไปเมื่อฉันต้องการเรียกใช้ตัวจำลองอีกครั้งฉันเพิ่งลบโฟลเดอร์ ios ปัจจุบันและคัดลอกโฟลเดอร์ ios ที่ฉันวางไว้บน "ios_simulator" กลับไปที่โฟลเดอร์โครงการกระพือ หวังว่าความช่วยเหลือนี้

0

การอัพเกรดการกระพือเป็นเวอร์ชั่น 1.15 ด้วยตนเองแก้ไขปัญหานี้เช่นกัน วิ่งflutter version v1.15.17ช่วยฉัน

นอกจากนี้คุณสามารถสลับไปยังbetaหรือdevช่องทางโดยใช้flutter channelคำสั่ง แต่ให้แน่ใจว่าคุณตรวจสอบรหัสของคุณกับการเปลี่ยนแปลง BC ทั้งหมด ...


0

ในกรณีของฉันมันใช้งานได้เฉพาะเครื่องจำลอง (ดีบั๊ก) หากคุณต้องการปรับใช้แอพของคุณใน app store (release) ฉันแนะนำให้คุณอัพเกรดเวอร์ชั่นกระพือโดยใช้

flutter version v1.15.17

ไม่เช่นนั้นคุณจะพบแอพที่มีข้อผิดพลาดด้วยหน้าจอสีขาว

เพิ่งอัพเกรดเวอร์ชั่นกระพือแล้วทุกอย่างทำงานได้ดี


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