TL; DR
Zobacz odpowiedź poniżej: https://stackoverflow.com/a/60013390/1121497
Wygląda na to, że był to problem z iOS 13.3, ponieważ właśnie zainstalowałem 13.4, a teraz Flutter działa na moim iPhonie. :)
Próbuję uruchomić nową aplikację Flutter (przykładową aplikację utworzoną przez flutter create
) na urządzeniu z systemem iOS (iPhone XS). Xcodeowi udaje się go zainstalować, ale następnie ulega awarii z komunikatem:
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'
Jeśli spróbuję flutter run
, aplikacja również się otworzy i ulegnie awarii. A polecenie czeka wiecznie:
$ 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.) ⢿
W Xcode skonfigurowałem zespół (zespół osobisty), a certyfikat podpisywania (certyfikat Apple Development) wydaje się w porządku, ponieważ mogę zainstalować projekt Hello world Swift na moim urządzeniu.
Uwaga: nie płacę kontem programu Apple Developer . Czy jest to absolutnie konieczne do uruchamiania aplikacji Flutter na urządzeniach z iOS?
Postępowałem zgodnie z instrukcjami macOS i flutter doctor
powiedziałem, że mam wszystko, czego potrzebuję na 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.
Jak widać, użyłem kanału stabilnego, aby odrzucić problemy z kanałem beta, ale zwykle pracuję w kanale beta, aby zbudować trzepotanie dla sieci (co działa dobrze).
W symulatorze iOS aplikacja działa również dobrze.
Ostatnio zauważyłem, że nie mam pliku ios/Podfile
. Znalazłem ten post mówiący o tym. Nie wiem, czy w moim przypadku jest to ważne, czy nie, ale próbowałem ręcznie dodać ten plik Podfile . W każdym razie pojawia się ten sam błąd podpisu.
Sfrustrowany tym, na razie przełączyłem się na NativeScript .
flutter build ios --release
Odpowiedzi:
EDYCJA: Naprawiono to w iOS 13.4, który został wydany 24 marca.
Jest to regresja iOS 13.3.1 niezwiązana z Flutter. Udało mi się odtworzyć awarię bez żadnego kodu Flutter lub CocoaPods, tworząc nowy projekt Xcode, dodając cel struktury i wybierając profil obsługi osobistej zespołu.
Zobacz problem z GitHub: https://github.com/flutter/flutter/issues/49504#issuecomment-581554697 .
Błąd nie powinien wpływać na profile udostępniania aplikacji zespołu kont ani na aplikacje, które są już podpisane i dystrybuowane w App Store.
Niestety jedynym rozwiązaniem może być uniknięcie aktualizacji urządzeń programistycznych do wersji 13.3.1, dopóki nie zostanie to rozwiązane.
źródło
Z tego, co widzę, jest to problem ze zgodnością Fluttera z iOS 13.3.1. W moim przypadku moja aplikacja działa idealnie na iPhonie XR z iOS 13.3, ale zawiesza się podczas uruchamiania na innym iPhone XR z iOS 13.3.1. Nie można przetestować w symulatorze, ponieważ jest to aplikacja aparatu, ale działa zarówno na fizycznych urządzeniach z Androidem, jak i emulatorach Androida.
źródło
sudo xcodebuild -license
.pod install
wtedypod update
Jeśli to nie zadziała, przejdź do folderu ios w projekcie trzepotania i otwórz Runner.xcworkspace, stukając go dwukrotnie. To powinno wyglądać tak:
Kiedy otworzy się xcode, kliknij Runner w lewym górnym rogu.
Następnie przejdź do Podpisywanie i możliwości, a następnie w polu rozwijanym „Zespół” wybierz pole. Jeśli nie istnieje, utwórz konto.
Następnie w „Identyfikatorze pakietu” powinna pojawić się nazwa pakietu aplikacji. Dodaj .app na końcu. Na przykład, jeśli jego „com.example.yourapp” to „com.example.yourapp.app” i naciśnij klawisz enter.
Naciśnij przycisk odtwarzania w lewym górnym rogu, aby uruchomić aplikację na wybranym urządzeniu.
źródło
Czy możesz wykonać krok po kroku
źródło
Ten post nie jest odpowiedzią, ponieważ również zmagam się z tym problemem i piszę go, ponieważ minęło trochę czasu od poprawki
Chcę tylko podać więcej szczegółów OP i innym członkom tutaj. Mam więc wszystko, jak stwierdził OP.
Oto, co próbowałem:
Podfile nie jest tworzony (nawet po uruchomieniu na Symulatorze itp.) I dlatego próbowałem dołączyć jedną z przykładowej aplikacji Flutter Github.
Usunięto wszystkie certyfikaty z Keychain Access i przywrócono je za pomocą Xcode.
Usunięto Xcode, kapsuły i związane z tym ustawienia. Usunięte certyfikaty. Przywrócono wszystko po ponownym uruchomieniu (świeża instalacja)
Zaktualizowałem Flutter do kanału deweloperów (1.14.1) i zregenerowałem projekt używając
flutter create .
Próbowałem także zmienić podpis z programisty Apple na programistę iOS na wszystkich urządzeniach docelowych (w zestawie kapsułka)
Gdy korzystam z urządzenia z iOS 13.3.1 Beta, zaktualizowałem Target do 13.2 (maksymalna dostępna teraz?).
Mam włączone kompilacje macOS i zbudowałem aplikację Mac
Podsumowując:
Btw. Wszystko działało na MacBooku Pro 13 z zainstalowaną Cataliną 10.15.3 i Xcode 11.3.1.
Każde uruchomienie miało flagę -v i podczas kompilacji nie znaleziono niczego podejrzanego w logach
Jeszcze raz. Przykro mi, jeśli zrobiłem coś złego, publikując to, ale nie chciałem powielać tego problemu ani sugerować OP edycji, ponieważ ten post jest dość długi.
źródło
Spróbuj przełączyć się na stabilny kanał przez
flutter channel stable
, uruchom,flutter upgrade
a następnie przejdź do projektu aplikacji i uruchomflutter run
źródło
Aby uruchomić aplikację w trybie debugowania, nie potrzebujesz żadnego konta płatnego Apple. 1) Otwórz xCode dla tego projektu, wybierz urządzenie i uruchom w nim.
Otwórz XCode tego projektu i sprawdź ustawienia kompilacji, ponieważ ścieżka FLUTTER_ROOT jest poprawna, jeśli nie, utwórz korzeń trzepotania i podaj ścieżkę.
źródło
FLUTTER_ROOT
. To nie jest problem ... :(Otwórz Xcode i kliknij
Product -> Clean
lub (CMD
-Shift
-K
). Jeśli to nie zadziała, spróbuj wykonać następujące czynności: https://macpaw.com/how-to/clear-xcode-cacheJeśli to również nie działa, daj mi znać.
źródło
Czy sprawdziłeś ten link, który może dać pożądane wyjście https://github.com/flutter/flutter/issues/16507 . daj mi znać, czy to może być problem z podpisywaniem, ten post da ci pojęcie, co się dzieje. Dzięki
źródło
Ok, mając chwilę na stworzenie odpowiedzi:
Opierając się na odpowiedzi Subaharan Vel , pytanie: Flutter Podfile i foldery Pods nie zostały utworzone w katalogu ios i odpowiedź sugerująca, że budynek dla symulatora iOS może utworzyć plik podfile w niewłaściwym miejscu (powinien zostać utworzony automatycznie bezpośrednio w katalogu iOS. Wygląda więc na to, że Twój Podfile istnieje gdzieś tam. Spróbuj go znaleźć lub po prostu usuń cały katalog ios, wyczyść projekt i utwórz go ponownie. Upewnij się też, że tak nie jest. Tworzenie pliku Podfile w celu dodania podsystemów iOS przed dodaniem jakichkolwiek wtyczek Flutter nigdy nie łączy się istniejący Podfile .
Powodzenia, mam nadzieję, że ci to pomoże
źródło
Podfile
. Biegnęfind . -name Podfile
i nic nie dostaję. Usunąłemios
katalog, ale teraz jak go odtworzyć? Jeśli uruchomięflutter build ios
, pojawia się błądApplication not configured for iOS
.Nie było to idealne rozwiązanie, ale następujące działało dla mnie.
Chociaż nic nie będzie widoczne w oknie debugowania, ponieważ proces kończy się po zgłoszeniu błędu. To nie jest idealne rozwiązanie, ale zdecydowanie obejście, dopóki nie otrzymamy kolejnej aktualizacji Xcode.
źródło