Flutter signature tidak valid ketika dicoba pada perangkat iOS

11

TL; DR

Lihat jawaban di bawah: https://stackoverflow.com/a/60013390/1121497

Sepertinya itu masalah dengan iOS 13.3 karena saya baru saja menginstal 13.4 dan sekarang Flutter berfungsi di iPhone saya. :)


Saya mencoba menjalankan aplikasi Flutter baru (contoh aplikasi yang dibuat oleh flutter create) pada perangkat iOS (iPhone XS). Xcode berhasil menginstalnya, tetapi kemudian crash dengan pesan ini:

dyld: Library not loaded: @rpath/Flutter.framework/Flutter
  Referenced from: /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Runner
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter: code signature invalid for '/private/var/containers/Bundle/Application/BA807438-FA5B-4021-B37D-FC437B2C80CA/Runner.app/Frameworks/Flutter.framework/Flutter'

Jika saya mencoba flutter run, aplikasi juga terbuka dan macet. Dan perintah itu terus menunggu selamanya:

$ flutter run
Launching lib/main.dart on Ferran Maylinch’s iPhone in debug mode...

Automatically signing iOS for device deployment using specified development team in Xcode project: 25D86TPBWG
Running Xcode build...                                                  

 ├─Assembling Flutter resources...                           4.3s
 └─Compiling, linking and signing...                        13.3s
Xcode build done.                                           21.0s
Installing and launching...                                             
(This is taking an unexpectedly long time.)

Di Xcode saya mengkonfigurasi Tim (Tim Pribadi) dan Sertifikat Penandatanganan (sertifikat Pengembangan Apple) tampaknya baik-baik saja karena saya dapat menginstal proyek Hello world Swift di perangkat saya.

Catatan: Saya tidak membayar akun Program Pengembang Apple . Apakah itu mutlak diperlukan untuk menjalankan aplikasi Flutter di perangkat iOS?

Saya telah mengikuti instruksi macOS dan flutter doctormengatakan saya memiliki semua yang saya butuhkan untuk iOS:

[] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-ES)

[!] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    ! Some Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[] Xcode - develop for iOS and macOS (Xcode 11.3)
[!] Android Studio (version 3.5)Flutter plugin not installed; this adds Flutter specific functionality.Dart plugin not installed; this adds Dart specific functionality.
[] IntelliJ IDEA Ultimate Edition (version 2019.3.1)
[!] VS Code (version 1.41.1)Flutter extension not installed; install from
      https://marketplace.visualstudio.com/items?itemName=Dart-Code.flutter
[] Connected device (1 available)

! Doctor found issues in 3 categories.

Seperti yang Anda lihat, saya menggunakan saluran stabil, untuk membuang masalah dengan saluran beta, tapi saya biasanya bekerja di saluran beta untuk membuat flutter untuk web (yang berfungsi dengan baik).

Di simulator iOS aplikasi juga berfungsi dengan baik.

Baru-baru ini saya perhatikan bahwa saya tidak punya file ios/Podfile. Saya menemukan posting ini berbicara tentang itu. Saya tidak tahu apakah ini penting atau tidak dalam kasus saya, tetapi saya mencoba menambahkan secara manual Podfile ini . Lagi pula, saya mendapatkan kesalahan tanda tangan yang sama.

Frustrasi dengan ini, saya beralih ke NativeScript untuk saat ini.

Ferran Maylinch
sumber
Anda mencoba menjalankannya di perangkat nyata dalam mode debug atau rilis?
Sunkuu7
@SlahLayouni Itu dalam mode Debug. Saya mencoba mode Rilis dan gagal dengan kesalahan yang sama.
Ferran Maylinch
Coba buat rilis terlebih dahulu kemudian jalankan dari xcode sebagai rilis. flutter build ios --release
Sunkuu7
1) Sudahkah Anda mencoba iOS Simulator 2) Sudahkah Anda menyebarkan / menjalankan "Hello World" di Swift / Xcode ke perangkat iPhone Anda? Sertifikat pribadi harus baik untuk ditempatkan di ponsel Anda.
Morrison Chang

Jawaban:

8

EDIT: Ini diperbaiki pada iOS 13.4, yang dirilis 24 Maret.

Ini adalah regresi iOS 13.3.1 yang tidak terkait dengan Flutter. Saya dapat mereproduksi kerusakan tanpa kode Flutter atau CocoaPods dengan membuat proyek Xcode baru, menambahkan target kerangka kerja, dan memilih profil penyediaan Tim Pribadi.

Lihat masalah GitHub: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .

Bug tidak akan memengaruhi profil atau aplikasi tim Akun Pengembang yang sudah masuk dan didistribusikan di App Store.

Sayangnya satu-satunya solusi untuk menghindari peningkatan perangkat pengembangan ke 13.3.1 sampai ini diselesaikan.

Jenn
sumber
Terima kasih banyak! Saya harap ini diperbaiki secepatnya!
Ferran Maylinch
Jadi ini tentang masalah level iOS? Saya juga mengalami masalah ini pada iPhone dengan versi iOS 13.3.1
Adromil Balais
Ya, ini merupakan masalah dengan iOS 13.3.1 dan kemudian menolak kerangka kerja bertanda tangan profil penyediaan Tim Pribadi. Ini tidak spesifik untuk Flutter. Tautan dalam komentar GitHub merujuk proyek lain, dan saya dengan mudah dapat mereproduksi dengan kerangka kerja baru di Xcode tanpa menanamkan Flutter.
Jenn
Saya baru saja mencoba dengan iOS 13.4 dan berhasil! Saya bisa menjalankan aplikasi Flutter pada iPhone asli dari Xcode dan juga dari IntelliJ IDEA. Saya kira itu akan bekerja dari baris perintah juga.
Ferran Maylinch
4

Sejauh yang saya bisa lihat, ini adalah masalah kompatibilitas Flutter dengan iOS 13.3.1. Dalam kasus saya, aplikasi saya berjalan dengan baik di iPhone XR dengan iOS 13.3 tetapi macet saat diluncurkan di iPhone XR lain dengan iOS 13.3.1. Tidak dapat menguji dalam simulator karena ini adalah aplikasi kamera tetapi berfungsi pada perangkat Android fisik dan emulator Android.

Calon
sumber
Kamu benar. Baru saja diuji dengan iPad saya dengan 13.3. Ponsel saya tidak berfungsi dengan 13.3.1. Akan memperbarui ke beta 2 dan mencoba :-)
Ken Hui
13.3.1 Beta 2 publik memiliki masalah yang sama.
Ken Hui
3
  1. Apakah Anda setuju dengan perjanjian lisensi xcode? jika tidak, coba sudo xcodebuild -license.
  2. Apakah pod Anda diperbarui? jika tidak, navigasikan ke folder ios dalam proyek flutter di terminal Anda dan ketik pod installitupod update

Jika ini tidak berhasil, buka folder ios di proyek flutter Anda dan buka Runner.xcworkspace dengan mengetuknya dua kali. Seharusnya terlihat seperti ini:

masukkan deskripsi gambar di sini

Ketika xcode terbuka, klik Runner di kiri atas.

masukkan deskripsi gambar di sini

Lalu pergi ke Penandatanganan dan Kemampuan dan di bawah dropdown "Tim", pilih bidang. Jika tidak ada, buat akun.

masukkan deskripsi gambar di sini

Kemudian di "Bundle Identifier", nama bundel aplikasi Anda akan ditampilkan. Tambahkan .app pada akhirnya. Misalnya, jika "com.example.yourapp", buat "com.example.yourapp.app" dan tekan enter.

Tekan tombol putar di kiri atas untuk menjalankan aplikasi pada perangkat yang dipilih.

Yudhishthir Singh
sumber
Saya tidak punya Podfile. Saya melihat posting ini stackoverflow.com/questions/51599686/…
Ferran Maylinch
Instal cocoapods ke mesin Anda dan jalankan perintah pod di direktori ios Anda.
Yudhishthir Singh
Saya punya cocoapods. Perintah pod apa yang harus saya gunakan?
Ferran Maylinch
instal pod dan kemudian pembaruan pod
Yudhishthir Singh
Saya telah mengedit jawaban saya, silakan lihat.
Yudhishthir Singh
1

Bisakah Anda mengikuti langkah satu per satu

flutter channel master
flutter upgrade
flutter clean
flutter build ios
Dev
sumber
Saya sudah mencobanya. Juga di saluran beta.
Ferran Maylinch
Kesalahan terkait dengan kemampuan penandatanganan, cabang flutter tidak ada hubungannya dengan itu.
Yudhishthir Singh
1

Posting ini bukan jawaban karena saya berjuang dengan masalah ini juga dan menulis ini karena sudah lama tidak diperbaiki

Yang saya inginkan adalah memberikan rincian lebih lanjut kepada OP dan anggota lain di sini. Jadi saya memiliki segalanya seperti yang dinyatakan OP.

Inilah yang saya coba:

  1. Podfile tidak dibuat (bahkan setelah berjalan di Simulator dan lain-lain) dan itulah sebabnya saya telah mencoba memasukkan satu dari aplikasi contoh bergetar dari Flutter Github.

    • Direktori iOS yang dihapus
    • Menambahkan Podfile
    • Menjalankan pembaruan pod.
    • Memperbaiki peringatan (disediakan Pod debug dan lepaskan konfigurasi ke Xcode)
    • Menambahkan FLUTTER_ROOT ke pengaturan Buatan Pengguna (seperti tidak ada) dan saya mendapatkan kesalahan Xcode-backend.sh (tidak ingat persis, maaf)
    • Dibangun di

Jadi langkah-langkah ini menghasilkan: kesalahan ini di Simulator. Kesalahan tanda tangan yang sama seperti tanpa Pod di perangkat fisik

  • Menghapus semua sertifikat dari Keychain Access dan mengembalikannya melalui Xcode.

    Hasil: Tidak ada yang berubah

  • Xcode dihapus, Pod dan pengaturan yang terkait dengannya. Sertifikat yang dihapus. Memulihkan semuanya setelah reboot (instalasi baru)

    Hasil: Sekali lagi, tidak membangun dengan pod atau tanpa memberikan kesalahan yang sama

  • Saya telah memutakhirkan Flutter ke saluran dev (1.14.1) dan menggunakan kembali proyek flutter create .

    Reran membangun. Dengan polong dan tanpa. Masih sama

  • Saya juga telah mencoba mengubah tanda tangan dari Pengembang Apple menjadi Pengembang iOS di semua target (termasuk Pod)

    Dalam hal ini saya mendapatkan beberapa kesalahan karena saya bahkan telah mencoba menandatangani Pods-Runner (ada sedikit harapan). Tapi secara keseluruhan tidak ada yang baru.

  • Saat saya menjalankan perangkat di iOS 13.3.1 Beta, saya meningkatkan Target ke 13.2 (maksimum tersedia saat ini?).

    Nggak

  • Saya telah mengaktifkan macOS-builds dan membangun aplikasi Mac

    Ini berjalan sesuai harapan, semuanya baik-baik saja.

Untuk menyimpulkan:

  • Masalah ini tidak tergantung pada proyek Pod / Non-Pod.
  • Tidak ada yang berubah sehubungan dengan masalah ini antara flutter stabil terbaru dan dev terbaru (seperti tulisan tertulis)
  • Bug ini tidak diperbaiki oleh penginstalan ulang Xcode dan tidak terkait dengan sertifikat Keychain
  • Masalah muncul hanya ketika membangun hanya untuk perangkat iOS fisik (iPhone X dalam kasus saya). Simulator (tanpa Pod) berjalan dengan baik.

Btw. Semuanya berjalan di MacBook Pro 13 dengan Catalina 10.15.3 diinstal dan Xcode 11.3.1.

Setiap Proses dijalankan dengan flag -v dan tidak ada yang mencurigakan ditemukan di log selama build s

Lagi. Saya minta maaf jika saya melakukan kesalahan posting ini tetapi saya tidak ingin menduplikasi masalah ini atau menyarankan OP mengedit karena posting ini cukup panjang.

Emin Guliev
sumber
Terima kasih banyak atas jawaban ini. Ini bukan solusinya tetapi sangat membantu. Jelas, ada yang salah dengan Flutter. Sepertinya Google tidak tahu persis apa yang Apple harapkan, atau Apple tidak tertarik membiarkan Flutter bekerja dengan lancar ... :)
Ferran Maylinch
Ngomong-ngomong, kemarin saya mencoba Flutter di Mac lain, dengan Mojave (punya saya Catalina), dan saya mendapat kesalahan yang sama.
Ferran Maylinch
Kemungkinan besar ini adalah sesuatu yang terkait dengan CodeSign atau Flutter itu sendiri. Kita harus membuka masalah github.com/flutter/flutter/issues
Emin Guliev
Iya. Ide bagus. Beri tahu saya jika Anda melakukannya, atau saya bisa melakukannya sendiri.
Ferran Maylinch
0

Cobalah untuk beralih ke saluran stabil melalui flutter channel stable, jalankan flutter upgradedan kemudian navigasikan ke proyek aplikasi dan jalankanflutter run

Gioele Pannetto
sumber
Sayangnya, saya mendapatkan kesalahan yang sama. Saya bahkan membuat aplikasi flutter baru setelah berganti ke saluran stabil. Saya memperbarui pertanyaan saya untuk menunjukkan bahwa sekarang saya berada di saluran stabil.
Ferran Maylinch
Saya juga menambahkan output dari flutter run.
Ferran Maylinch
0

Hanya untuk menjalankan aplikasi dalam mode Debug, tidak perlu akun berbayar apel. 1) Buka xCode untuk proyek itu dan pilih perangkat dan jalankan di dalamnya.

Buka XCode dari proyek itu dan periksa Build Settings karena ada jalur FLUTTER_ROOT yang benar, jika tidak ada buat root flutter dan berikan path.

balaji ks
sumber
Saya punya yang benar FLUTTER_ROOT. Bukan itu masalahnya ... :(
Ferran Maylinch
0

Apakah Anda memeriksa tautan ini yang mungkin memberi Anda hasil yang diinginkan https://github.com/flutter/flutter/issues/16507 . beri tahu saya jika ini berfungsi mungkin ini masalah penandatanganan, pos ini akan memberi Anda ide apa yang salah. Terima kasih

sagar acharya
sumber
Saya tidak memiliki Podfile, jadi saya memeriksa ini: stackoverflow.com/questions/51599686/... Lagi pula, saya tidak tahu Podfile apa yang saya butuhkan. Saya membuat satu tetapi saya masih mendapatkan kesalahan yang sama. Jadi mungkin saya tidak perlu Podfile atau masalah lain.
Ferran Maylinch
0

Oke, ada saat untuk membuat jawaban:

Mendasarkan pada Subaharan Vel jawaban , pertanyaan: Flutter Podfile dan folder Pods tidak dibuat di direktori ios dan jawaban menyarankan bahwa membangun untuk simulator iOS dapat membuat podfile di tempat yang salah (itu harus dibuat secara otomatis langsung di direktori iOS. Jadi sepertinya Podfile Anda ada di suatu tempat di sana. Cobalah untuk menemukan atau hanya menghapus seluruh direktori ios, bersihkan proyek dan buat ulang itu. Juga pastikan bahwa ini tidak terjadi. Membuat Podfile untuk menambahkan pod iOS sebelum menambahkan plugin Flutter apa pun tidak pernah mengaitkan pod plugin di Podfile yang ada .

Semoga beruntung, saya harap ini akan membantu Anda

Adam Tucholski
sumber
Tidak ada Podfiledimanapun. Saya berlari find . -name Podfiledan tidak mendapat apa-apa. Saya menghapus iosdirektori tetapi sekarang, bagaimana saya bisa membuatnya kembali? Jika saya menjalankan flutter build iossaya mendapatkan kesalahan Application not configured for iOS.
Ferran Maylinch
@Ferran Maylinch Cukup ulangi semua langkah dari Surbahan Vel (tautan pertama) - dia menghapus direktori ios, dan itu diciptakan kembali setelah proyek pembersihan. Jika perlu, tambahkan podfile secara manual (dari stackoverflow.com/a/53492243/7183675 , hapus pod yang tidak perlu dari sana, periksa juga komentar kedua di bawah jawaban ini). Sebagai upaya terakhir - mungkin membantu jika Anda menambahkan setidaknya satu paket ke pubspec untuk memaksa Flutter untuk membuat Podfile secara otomatis. Bahkan jika paket ini tidak benar-benar digunakan
Adam Tucholski
0

Bukan solusi ideal tetapi yang berikut ini berhasil untuk saya.

  1. Tingkatkan perangkat Anda ke iOS 13.4 beta.
  2. Lakukan lari bergetar
  3. Membangun harus berhasil.
  4. Ini akan melempar kesalahan "Versi Xcode Anda mungkin terlalu tua untuk versi iOS Anda" .
  5. Aplikasi terinstal di perangkat. Catatan: Aplikasi tidak akan diluncurkan secara otomatis saat proses berakhir.
  6. Klik ikon aplikasi yang terinstal di perangkat Anda untuk meluncurkan aplikasi.

Meskipun, Anda tidak akan dapat melihat apa pun di jendela debug karena proses berakhir setelah melempar kesalahan. Ini bukan solusi ideal, tetapi jelas merupakan solusi hingga kami mendapatkan pembaruan Xcode berikutnya. 

Dhruva Phulsundar
sumber