Flutter: Beberapa perintah menghasilkan '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework

Dibuat pada 16 Agu 2018  ·  50Komentar  ·  Sumber: flutter/flutter

Ketika saya ingin men-debug aplikasi di lingkungan MacOs, itu menimbulkan kesalahan seperti:

Beberapa perintah menghasilkan '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework
1) Target 'Runner' memiliki perintah salin dari '/ios/Flutter/Flutter.framework' ke '/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) Perintah itu tergantung pada perintah di Target 'Runner': fase skrip “[CP] Embed Pods Frameworks”
peringatan: mengabaikan file keluaran duplikat: '//build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework' (dalam target 'Runner')
catatan: Menggunakan sistem build barucatatan: Perencanaan buildnote: Membangun deskripsi build

Mac 10.14 Beta
Xcode 10 beta

Bagaimana memperbaikinya? Terima kasih banyak

annoyance crowd platform-ios crash tool

Komentar yang paling membantu

Saya dapat memperbaikinya dengan membuka proyek ruang kerja Runner di Xcode 10. Kemudian navigasikan ke File , Workspace Settings dan ubah sistem pembangunan menjadi Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

Semua 50 komentar

Bisakah Anda memberikan langkah-langkah yang tepat bagaimana cara mereproduksi?
Bagaimana Anda membuat proyek?
File apa yang Anda ubah, perubahan apa yang Anda buat?

Silakan tambahkan output dari flutter doctor -v .

Saya dapat memperbaikinya dengan membuka proyek ruang kerja Runner di Xcode 10. Kemudian navigasikan ke File , Workspace Settings dan ubah sistem pembangunan menjadi Legacy Build System .

schermafbeelding 2018-08-16 om 14 10 10

Terima kasih banyak! berhasil.

Proyek yang terpengaruh

Masalah ini memengaruhi semua proyek Flutter yang dibuat menggunakan Xcode 10 yang memiliki ketergantungan pada CocoaPods -- biasanya ini berarti proyek yang mengandalkan plugin.

Solusi

Ada dua solusi:

  • Opsi 1: Gunakan sistem build lawas . Seperti yang dicatat oleh @gi097 , buka ios/Runner.xcworkspace , dan ubah sistem build menjadi Legacy Build System .
  • Opsi 2: Gunakan sistem build Xcode 10 yang baru.

    1. Buka ios/Runner.xcworkspace

    2. Pilih proyek Runner di bilah sisi navigator proyek.

    3. Pada tampilan utama, pilih target Runner , lalu pilih tab Build Phases .

    4. Perluas fase Embed Frameworks dan pilih Flutter.framework dari daftar kerangka kerja yang disematkan.

    5. Klik - untuk menghapus Flutter.framework dari daftar (pastikan untuk menyimpan App.framework ).

Akar masalah

Saat plugin sedang digunakan, ada dua tindakan build yang bersaing yang menyalin Flutter.framework ke direktori Framework aplikasi build:

  1. Fase pembuatan Embed Frameworks untuk proyek Runner
  2. Fase pembuatan [CP] Embed Pods Frameworks dibuat oleh pod install dalam proyek.

Item (1) ada untuk memastikan kerangka kerja disalin ke dalam aplikasi yang dibangun jika tidak ada plugin (dan karenanya tidak ada integrasi CocoaPods dalam proyek Xcode). Item (2) ada karena podspec Flutter mendeklarasikan Flutter.framework sebagai vending_framework, dan CocoaPods secara otomatis menambahkan langkah penyalinan untuk setiap vending_framework tersebut dalam penutupan transitif dependensi CocoaPods.

Perbaikan segera

Perbaikan langsung adalah bagi kami untuk menemukan cara untuk secara otomatis memilih kembali ke perbaikan build lama hingga solusi jangka panjang yang lebih baik tersedia. Versi beta sebelumnya mendukung -useNewBuildSystem=NO atau -useModernBuildSystem=NO tetapi sepertinya ini dihapus di versi GM. Sepertinya saat ini cara untuk melakukannya adalah dengan menambahkan pasangan nilai kunci ( <key>BuildSystemType</key><string>Original</string> ) ke ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

Perbaikan jangka panjang

Opsi paling sederhana adalah menghilangkan Flutter.framework dari langkah Embed Frameworks di atas dan selalu mengandalkan pemasangan pod, bahkan dalam kasus di mana tidak ada dependensi plugin. Kami perlu memperbarui alat Flutter untuk secara otomatis mengedit proyek yang ada untuk menghapus Flutter.framework dari langkah Embed Frameworks.

pro: kode yang lebih sederhana. con: menjadikan cocoapods langkah instalasi yang diperlukan untuk pengembangan Flutter, menjalankan pertama melibatkan unduhan repo mereka yang sangat besar dan sangat lambat.

Opsi yang sedikit lebih baik adalah bagi kami untuk secara otomatis mendeteksi apakah proyek menggunakan plugin atau tidak, dan mengedit proyek Xcode untuk memeriksa dan menghapus Flutter.framework dari langkah Embed Frameworks secara otomatis jika plugin sedang digunakan atau menambahkannya jika tidak.

pro: pengalaman pengguna yang lebih baik. con: kode yang lebih kompleks.

Apa pun itu, kita memerlukan beberapa mekanisme untuk mengedit file project.pbxproj secara otomatis dan menghapus kerangka kerja dari langkah pembuatan kerangka kerja sematan. Mendukung menambahkannya kembali bukanlah pekerjaan tambahan dan menghasilkan pengalaman yang lebih baik.

/cc @tvolkert @gspencergoog @dnfield

Maaf, saya tidak bermaksud membanjiri pelacak masalah Anda.

Saya mengikuti resolusi ini #20685

tetapi sekarang menghasilkan kesalahan berikut

captura de tela 2018-09-18 as 10 06 38 am

Adakah yang punya ide bagaimana menyelesaikan ini?
@gi097 @cbracken @zoechi @sidealice @hungrymonkey

@tiagosito Sebuah patch akan mendarat sebentar di cabang master . Untuk saat ini lihat solusi yang tercantum dalam komentar saya di atas.

@tiagosito Sebuah patch akan mendarat sebentar di master. Untuk saat ini lihat solusi yang tercantum dalam komentar saya di atas.

@cbracken Saya mengikuti opsi 2 yang Anda laporkan #20685

Tapi saya punya masalah kecil ini #21989

Diselesaikan dengan cara ini #21989

Saya tidak menggunakan saluran master, ketika patch yang Anda sebutkan dirilis, apakah saya akan mendapatkan solusi yang sama di saluran beta?

@cbracken dan @gi097 untuk saat ini terima kasih banyak

juga mengalami masalah ini sebelumnya hari ini setelah pergi ke iOS 12, yang kemudian membutuhkan xcode 10, yang kemudian merusak flutter. opsi 2 di atas berfungsi, tetapi Anda harus menghapus cache build paket Anda:

~/flutter/.pub-cache/hosted/
flutter clean
flutter packages get

atau Anda akan menggaruk-garuk kepala.

'Perbaikan segera' dalam komentar saya di atas telah mendarat di master. Bekerja untuk membawa ini ke saluran dev secepatnya.

FYI ini sekarang telah mendarat di saluran dev .

Besar!
Btw, bagaimana kita menerapkan patch ini di proyek yang sudah ada? Cukup dengan melakukan upgrade flutter?

@tadejkan Anda ingin menjalankan flutter channel dev untuk beralih ke saluran dev lalu flutter upgrade .

@cbracken keraguan yang tersisa adalah ... kita akan menggunakan mode kompilasi lama atau patch akan memperbaiki mode kompilasi yang baru.

Dengan kata lain, apakah patch tersebut menerapkan solusi dari langkah 1 atau langkah 2 yang Anda sajikan di sini atau sudah merupakan solusi yang pasti dan kapan patch ini akan diterapkan pada saluran beta?

@tiagosito tambalan yang saya

Solusi yang tepat untuk ini adalah agar kami mendeteksi kapan CocoaPods/plugin sedang digunakan dan mengandalkan CocoaPods untuk menyematkan Flutter.framework ke dalam aplikasi keluaran dalam kasus tersebut, dan untuk semua kasus lainnya, aktifkan sendiri langkah penyematan. Saya akan mengerjakannya selanjutnya.

Saya menghadapi masalah membangun ios yang tidak dapat saya selesaikan selama 4 hari penuh sekarang ... menjadi sangat tidak berdaya sekarang karena saya mencoba banyak hal dan kombinasi; menjadi sangat bingung dan sedih.
Ini adalah kesalahan terbaru setelah beberapa kesalahan berbeda:

duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._localAuthenticationInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainInfo in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasLocalAuthentication in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasKeychain in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._cachedState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._keychainExpireTime in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeCache in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeCache._hasEnteredBackground in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeCache_f189776e75765630b82721fafea64052.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeCache_42de90102bb6814d03833694aafcc99d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._status in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_IVAR_$_MDMPasscodeState._info in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_CLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) duplicate symbol _OBJC_METACLASS_$_MDMPasscodeState in: /Volumes/flutter/ios/Pods/GoogleMobileVision/Detector/Frameworks/GoogleMobileVision.framework/GoogleMobileVision(MDMPasscodeState_d2697588db599ad1e82d46f342216cee.o) /Volumes/flutter/ios/Pods/GoogleSignIn/Frameworks/GoogleSignIn.framework/GoogleSignIn(MDMPasscodeState_adbe96d99863168799049cc0f0164c6d.o) ld: 13 duplicate symbols for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

ld: 13 duplicate symbols for architecture x86_64
Launching lib/main.dart on iPhone XS Max in debug mode...
Xcode build done.
Failed to build iOS app
Error output from Xcode build:
↳
** BUILD FAILED **
Xcode's output:
↳
warning: The iOS Simulator deployment target is set to 4.3, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'nanopb')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GoogleUtilities')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'GTMSessionFetcher')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'Protobuf')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'leveldb-library')
warning: The iOS Simulator deployment target is set to 5.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'BoringSSL')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-RxLibrary')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-Core')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-C++')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-gRPCCertificates')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC')
warning: The iOS Simulator deployment target is set to 7.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'gRPC-ProtoRPC')
warning: The iOS Simulator deployment target is set to 6.0, but the range of supported deployment target versions for this platform is 8.0 to 12.0. (in target 'cloud_firestore')
duplicate symbol __channel in:
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/audioplayers/libaudioplayers.a(AudioplayersPlugin.o)
/Users/erikiado/Code/internals/flutter/find_word/build/ios/Debug-iphonesimulator/firebase_admob/libfirebase_admob.a(FLTMobileAd.o)
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
note: Using new build systemnote: Planning buildnote: Constructing build description
Could not build the application for the simulator.
Error launching application on iPhone XS Max.
Exited (sigterm)

@erikiado dan @LiveRock masalah Anda (simbol duplikat pada build simulator x86_64) terlihat tidak terkait dengan yang ini. Harap lacak kemajuan pada yang ada di #22020.

ETA untuk saluran Beta?

@lukepighetti ini sekarang didorong ke saluran beta (per beberapa saat yang lalu). flutter upgrade pergi!

Memperbaiki masalah saya. Terima kasih!

@sidealice apakah ini diperbaiki untuk Anda juga?

terima kasih, solusi 2 berhasil!

Tanpa informasi tambahan, sayangnya kami tidak yakin bagaimana menyelesaikan masalah ini. Oleh karena itu kami dengan enggan akan menutup bug ini untuk saat ini. Jangan ragu untuk mengomentari bug jika Anda memiliki informasi lebih lanjut untuk kami; kami akan segera membukanya kembali!
Terima kasih atas kontribusi Anda.
cc @Hixie

terima kasih saudara! berhasil.

Saya masih mendapatkan masalah ini di saluran Flutter stable v1.0.0
Apakah perbaikannya seharusnya stabil?

[✓] Flutter (Saluran stabil, v1.0.0, di Mac OS X 10.14.1 18B75, lokal en-GB)
• Flutter versi 1.0.0 di /usr/local/share/flutter
• Revisi kerangka kerja 5391447fae (3 minggu lalu), 29-11-2018 19:41:26 -0800
• Revisi mesin 7375a0f414
• Dart versi 2.1.0 (build 2.1.0-dev.9.4 f9ebf21297)

[✓] Rantai alat iOS - kembangkan untuk perangkat iOS (Xcode 10.1)
• Xcode di /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Bangun versi 10B61
• ios-deploy 2.0.0
• CocoaPods versi 1.5.3

@JannieT silahkan cek dev juga.
Saya tidak tahu apakah itu harus di stable , tetapi jika berfungsi pada dev jawabannya mungkin "tidak".

Terima kasih! Hanya untuk mengonfirmasi, perbaikannya ada di Stabil v1.0.0
Saya mengalami masalah karena saya membuka file .xcodeproject alih-alih .xcworkspace yang didokumentasikan ketika mencoba membuat Arsip.

Saya memiliki masalah yang sama sekarang.

error: Multiple commands produce '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/n.gendron/Documents/GitLab/techno_store/ios/Flutter/Flutter.framework' to '/Users/n.gendron/Library/Developer/Xcode/DerivedData/Runner-eilfeqiwvjuvbghjmkepqybkaoja/ArchiveIntermediates/Runner/InstallationBuildProductsLocation/Applications/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”
[✓] Flutter (Channel dev, v1.2.2, on Mac OS X 10.13.6 17G5019, locale fr-CA)
    • Flutter version 1.2.2 at /Library/flutter
    • Framework revision 007a415c2a (5 days ago), 2019-02-21 20:22:47 -0800
    • Engine revision f1f19bba8f
    • Dart version 2.2.0 (build 2.2.0-dev.2.1 c92d5ca288)

[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/n.gendron/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-28, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
    • All Android licenses accepted.

[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.1, Build version 10B61
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[✓] Android Studio (version 3.3)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 33.1.1
    • Dart plugin version 182.5215
    • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)

[✓] VS Code
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 2.12.2

[✓] Connected device (1 available)
    • iPad de TechnoSolutions • 3e430eb4db265d124e9684f487cc542f2442ed1d • ios • iOS 10.3.3

• No issues found!

Saya mencoba Legacy Build System , tetapi kemudian saya mengalami masalah lain. Saya juga mencoba menghapus Flutter.framework , tetapi kesalahannya sama.

#import <barcode_scan/BarcodeScanPlugin.h> # 'barcode_scan/BarcodeScanPlugin.h' file not found

Plugin yang terpengaruh adalah barcode_scan .


Apa yang menyelesaikannya untuk saya adalah https://github.com/apptreesoftware/flutter_barcode_reader/issues/44#issuecomment -460415307 .

open -a Xcode ios

Pembukaan kembali karena kami hanya mendapatkan solusi pada saat ini, bukan perbaikan jangka panjang untuk pindah ke sistem build baru.

Tanpa informasi tambahan, sayangnya kami tidak yakin bagaimana menyelesaikan masalah ini. Oleh karena itu kami dengan enggan akan menutup bug ini untuk saat ini. Jangan ragu untuk mengomentari bug jika Anda memiliki informasi lebih lanjut untuk kami; kami akan segera membukanya kembali!
Terima kasih atas kontribusi Anda.

membantu saya membuat flutter bersih kemudian membangun melalui studio Android

[✓] Flutter (Channel beta, v1.3.8, on Mac OS X 10.14.4 18E226, locale en-AU)
    • Flutter version 1.3.8 at /Users/yantsui/Installs/flutter
    • Framework revision e5b1ed7a7f (6 weeks ago), 2019-03-06 14:23:37 -0800
    • Engine revision f4951df193
    • Dart version 2.2.1 (build 2.2.1-dev.0.0 571ea80e11)

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, set ANDROID_HOME to that location.
      You may also want to add it to your PATH environment variable.


[✓] iOS toolchain - develop for iOS devices (Xcode 10.2)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 10.2, Build version 10E125
    • ios-deploy 1.9.4
    • CocoaPods version 1.6.1

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.io/setup/#android-setup for detailed instructions).

[✓] IntelliJ IDEA Ultimate Edition (version 2018.3.5)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 34.0.2
    • Dart plugin version 183.5912.23

[!] VS Code (version 1.33.0)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    ✗ Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter

[✓] Connected device (1 available)
    • iPhone Xʀ • 39D838DF-E49E-4F0A-8F40-B73C91700F6E • ios • com.apple.CoreSimulator.SimRuntime.iOS-12-2 (simulator)

! Doctor found issues in 3 categories.
flutter clean
flutter build ios
Xcode 10 -> Product -> Clean Build Folder
Xcode 10 -> Product -> Run

Kesalahan dalam Xcode:

Showing All Messages
:-1: Multiple commands produce '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework':
1) Target 'Runner' has copy command from '/Users/meow/Documents/meow/crystal/ios/Flutter/Flutter.framework' to '/Users/meow/Documents/meow/crystal/build/ios/Debug-iphonesimulator/Runner.app/Frameworks/Flutter.framework'
2) That command depends on command in Target 'Runner': script phase “[CP] Embed Pods Frameworks”

Tetap:
Menjalankan open -a Xcode ios tetapi sepertinya tidak berhasil.
Jadi saya membuka proyek di Xcode menggunakan Runner.xcworkspace sebagai gantinya dan berhasil.

Masalah ini masih terjadi pada saya, bahkan ketika saya membuka proyek melalui ruang kerja. Hanya mengubah sistem build ke lawas yang tampaknya memperbaikinya.

Kami juga dapat memanfaatkan opsi penginstalan CocoaPods disable_input_output_paths, yang menghapus file input dan output dari fase pembuatan Emded Pods Framework [CP]. Opsi instalasi itu ditambahkan karena sistem build Xcode baru gagal menjalankan skrip bahkan ketika file input disentuh. Lihat https://www.ralfebert.de/ios/blog/cocoapods-clean-input-output-files.

Kelebihan:

  • Proyek Xcode akan menggunakan sistem build baru tanpa kesalahan kompilasi. Xcode telah mengancam untuk mencabut dukungan build lawas, jadi Flutter akan siap saat itu terjadi.
  • Perbaikan sederhana.
  • Tidak ada logika tambahan untuk memutuskan apakah akan menyertakan Flutter.framework dalam fase build Embed Frameworks karena akan selalu disertakan.
  • Tidak akan mengharuskan CocoaPods menjadi ketergantungan jika proyek adalah Vanilla Flutter tanpa paket.

Kontra:

  • Skrip Pods-Runner-frameworks.sh akan berjalan di setiap build, bahkan saat Flutter.framework tidak berubah. Di MacBook Pro 2018 saya, ini menambahkan ~ 1 detik ke build.
  • Jika bug sistem build Xcode baru diatasi, CocoaPods dapat menghapus opsi penginstalan itu dan masalah salinan kerangka kerja duplikat akan muncul kembali dengan sendirinya.
  • Versi CocoaPods minimum perlu ditingkatkan dari 1.0.0 menjadi 1.6.0 saat opsi disable_input_output_paths diperkenalkan.

@jmagman Luar biasa! Pendekatan ini terlihat bagus bagi saya. Jika kita sampai pada titik di mana kita melihat plugin Cocoapods yang sangat mahal untuk dikompilasi, kita dapat mengatasinya sebagai pengoptimalan. Ini memecahkan risiko langsung sementara itu!

Terima kasih!!!!!

Terima kasih

Jika Anda masih melihat kesalahan ini, Anda perlu memigrasikan proyek Xcode Anda:

  1. File > Workspace Settings... > Build System, ubah dropdown ke New Build System (Default)
  2. Di Podfile Anda, tambahkan baris
install! 'cocoapods', :disable_input_output_paths => true

Lihat https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile misalnya.

  1. Dalam Fase Build "[CP] Embed Pods Framework" target Runner, hapus semua File Output.

@jmagman terima kasih - tetapi bisakah ini terkait dengan #18673? Karena setelah bermigrasi (melalui flutter upgrade , yang melakukan perubahan ini pada mesin saya secara otomatis di Podfile), saya dapat membangun menggunakan flutter build ios tetapi ketika mencoba Mengarsipkan di Xcode, saya menjalankan kesalahan # 18673.

@jmagman terima kasih - tetapi bisakah ini terkait dengan #18673? Karena setelah bermigrasi (melalui flutter upgrade , yang melakukan perubahan ini pada mesin saya secara otomatis di Podfile), saya dapat membangun menggunakan flutter build ios tetapi ketika mencoba Mengarsipkan di Xcode, saya menjalankan kesalahan # 18673.

@jmagman saya menemukan solusinya, sebenarnya ini https://github.com/flutter/flutter/issues/16246#issuecomment -476329255 menyelesaikan masalah saya. Maaf untuk ketidaknyamanan.

@jmagman Bagi kita yang kurang akrab dengan XCode, bisakah Anda menjelaskan langkah 3 lebih lanjut? Di mana fase Build "[CP] Embed Pods Framework" target Runner ditemukan untuk menghapus semua File Output?

Menemukannya. Klik "Runner" di bilah navigasi kiri, lalu tab "Build Phases", lalu gulir ke bawah ke "Output Files", pilih semuanya, lalu klik tombol kurangi untuk menghapusnya

Bagaimana saya bisa menyelesaikan ini tanpa Mac? Saya menggunakan pipa cloud untuk membangun untuk iOS tetapi perlu menyelesaikan masalah ini ...

Jika Anda masih melihat kesalahan ini, Anda perlu memigrasikan proyek Xcode Anda:

  1. File > Workspace Settings... > Build System, ubah dropdown ke New Build System (Default)
  2. Di Podfile Anda, tambahkan baris
install! 'cocoapods', :disable_input_output_paths => true

Lihat https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile misalnya.

  1. Dalam Fase Build "[CP] Embed Pods Framework" target Runner, hapus semua File Output.

Atau Anda dapat melakukan #1 dan #2, lalu jalankan pod install dari direktori ios, dan CocoaPods akan menghapus file Output tersebut dalam fase build secara otomatis.

@gincos Jika Anda tidak memiliki Mac, Anda dapat melihat PR https://github.com/flutter/flutter/pull/33684/ untuk contoh cara mengubah file Xcode secara manual. Jika Anda memiliki Mac, ikuti langkah-langkah di atas!

  1. Hapus file ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings. Inilah yang terjadi di balik sampul dengan File > Workspace Settings... > Build System > New Build System (Default).
    https://github.com/flutter/flutter/pull/33684/files#diff -e7ad834b29956b3cbd9225dc81f2c06a

    1. Di Podfile Anda, tambahkan baris

      install! 'cocoapods', :disable_input_output_paths => true

      https://github.com/flutter/flutter/pull/33684/files#diff -4e7de62cf4dff9802f06b7f3cb120939

Semoga pipa cloud Anda akan menjalankan pod install dan menangani #3 di atas untuk Anda.

Jika Anda masih melihat kesalahan, Anda dapat mengedit ios/Runner.xcodeproj/project.pbxproj untuk menghapus file output secara manual. Harap berhati-hati melakukan ini! File proyek Xcode tidak menerima korupsi.
https://github.com/flutter/flutter/pull/33684/files#diff -e9e57f7f2e911a135acd8f08e79b20e1

@jmagman Terima kasih! Ini bekerja seperti pesona! Ya, penyedia cloud menjalankan pod install dan sekarang menghasilkan artefak yang benar untuk Android dan iOS dalam versi Beta terbaru.

Proyek yang terpengaruh

Masalah ini memengaruhi semua proyek Flutter yang dibuat menggunakan Xcode 10 yang memiliki ketergantungan pada CocoaPods -- biasanya ini berarti proyek yang mengandalkan plugin.

Solusi

Ada dua solusi:

  • Opsi 1: Gunakan sistem build lawas . Seperti yang dicatat oleh @gi097 , buka ios/Runner.xcworkspace , dan ubah sistem build menjadi Legacy Build System .
  • Opsi 2: Gunakan sistem build Xcode 10 yang baru.

    1. Buka ios/Runner.xcworkspace
    2. Pilih proyek Runner di bilah sisi navigator proyek.
    3. Pada tampilan utama, pilih target Runner , lalu pilih tab Build Phases .
    4. Perluas fase Embed Frameworks dan pilih Flutter.framework dari daftar kerangka kerja yang disematkan.
    5. Klik - untuk menghapus Flutter.framework dari daftar (pastikan untuk _keep_ App.framework ).

Akar masalah

Saat plugin sedang digunakan, ada dua tindakan build yang bersaing yang menyalin Flutter.framework ke direktori Framework aplikasi build:

  1. Fase pembuatan Embed Frameworks untuk proyek Runner
  2. Fase pembuatan [CP] Embed Pods Frameworks dibuat oleh pod install dalam proyek.

Item (1) ada untuk memastikan kerangka kerja disalin ke dalam aplikasi yang dibangun jika tidak ada plugin (dan karenanya tidak ada integrasi CocoaPods dalam proyek Xcode). Item (2) ada karena podspec Flutter mendeklarasikan Flutter.framework sebagai vending_framework, dan CocoaPods secara otomatis menambahkan langkah penyalinan untuk setiap vending_framework tersebut dalam penutupan transitif dependensi CocoaPods.

Perbaikan segera

Perbaikan langsung adalah bagi kami untuk menemukan cara untuk secara otomatis memilih kembali ke perbaikan build lama hingga solusi jangka panjang yang lebih baik tersedia. Versi beta sebelumnya mendukung -useNewBuildSystem=NO atau -useModernBuildSystem=NO tetapi sepertinya ini dihapus di versi GM. Sepertinya saat ini cara untuk melakukannya adalah dengan menambahkan pasangan nilai kunci ( <key>BuildSystemType</key><string>Original</string> ) ke ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings .

Perbaikan jangka panjang

Opsi paling sederhana adalah menghilangkan Flutter.framework dari langkah Embed Frameworks di atas dan selalu mengandalkan pemasangan pod, bahkan dalam kasus di mana tidak ada dependensi plugin. Kami perlu memperbarui alat Flutter untuk secara otomatis mengedit proyek yang ada untuk menghapus Flutter.framework dari langkah Embed Frameworks.

pro: kode yang lebih sederhana. con: menjadikan cocoapods langkah instalasi yang diperlukan untuk pengembangan Flutter, menjalankan pertama melibatkan unduhan repo mereka yang sangat besar dan sangat lambat.

Opsi yang sedikit lebih baik adalah bagi kami untuk secara otomatis mendeteksi apakah proyek menggunakan plugin atau tidak, dan mengedit proyek Xcode untuk memeriksa dan menghapus Flutter.framework dari langkah Embed Frameworks secara otomatis jika plugin sedang digunakan atau menambahkannya jika tidak.

pro: pengalaman pengguna yang lebih baik. con: kode yang lebih kompleks.

Apa pun itu, kita memerlukan beberapa mekanisme untuk mengedit file project.pbxproj secara otomatis dan menghapus kerangka kerja dari langkah pembuatan kerangka kerja sematan. Mendukung menambahkannya kembali bukanlah pekerjaan tambahan dan menghasilkan pengalaman yang lebih baik.

/cc @tvolkert @gspencergoog @dnfield

@cbracken Terima kasih banyak, berhasil,, terima kasih atas bantuan Anda

Menyalin ulang migrasi yang sebenarnya karena sudah terkubur.

Jika Anda masih melihat kesalahan ini, Anda perlu memigrasikan proyek Xcode Anda:

  1. File > Workspace Settings... > Build System, ubah dropdown ke New Build System (Default)
  2. Di Podfile Anda, tambahkan baris
install! 'cocoapods', :disable_input_output_paths => true

Lihat https://github.com/flutter/flutter/blob/master/examples/platform_view/ios/Podfile misalnya.

  1. Jalankan flutter build ios

Saya akan mengunci ini sehingga instruksi migrasi ini tetap ada di akhir masalah ini. Silakan ajukan masalah baru jika Anda memiliki masalah tambahan setelah mengikuti petunjuk ini.

PEMBARUAN: Jika Anda mengikuti petunjuk migrasi di https://flutter.dev/docs/development/ios-project-migration, Anda dapat menghapus install! 'cocoapods', :disable_input_output_paths => true dari ios/Podfile . Ini dapat meningkatkan waktu kompilasi jika Anda menggunakan plugin Flutter.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat