Flutter-geolocator: Build fehlgeschlagen, für iOS: Datei 'geolocator / geolocator-Swift.h' nicht gefunden

Erstellt am 26. Juni 2018  ·  12Kommentare  ·  Quelle: Baseflow/flutter-geolocator

Running Flutter Build ios - Release:

=== BUILD TARGET firebase_messaging VON PROJEKT-Pods MIT KONFIGURATION Release ===
/ Users / * * / development / flutter / .pub-cache / gehostet / pub.dartlang.org / geolocator-0.0.1 / ios / Classes / GeolocatorPlugin.m: 2: 9: Schwerwiegender Fehler: 'geolocator / geolocator-Swift .h 'Datei nicht gefunden

importieren

Mein Arzt hat ausgegeben:
Zusammenfassung des Arztes (um alle Details zu sehen, führen Sie den Flatterarzt -v aus):
[✓] Flattern (Channel dev, v0.5.5, unter Mac OS X 10.13.3 17D102, Gebietsschema pt-PT)
[✗] Android-Toolchain - Entwickeln für Android-Geräte
✗ Android SDK konnte nicht gefunden werden.
Installieren Sie Android Studio unter: https://developer.android.com/studio/index.html
Beim ersten Start werden Sie bei der Installation der Android SDK-Komponenten unterstützt.
(oder besuchen Sie https://flutter.io/setup/#android-setup für detaillierte Anweisungen).
Wenn Android SDK an einem benutzerdefinierten Speicherort installiert wurde, setzen Sie $ ANDROID_HOME auf diesen Speicherort.
[✓] iOS-Toolchain - Entwicklung für iOS-Geräte (Xcode 9.2)
[✗] Android Studio (nicht installiert)
[!] VS Code (Version 1.14.2)
[!] Verbundene Geräte
! Keine Geräte verfügbar

bug

Hilfreichster Kommentar

@mvanbeusekom hat gerade einige Tests in einer sauberen, frisch erstellten Flatter-App durchgeführt - es ist eine Tatsache - wenn "use_frameworks!" nicht vorhanden ist, schlägt der Build fehl.

Außerdem habe ich gerade einen Build in den Appstore hochgeladen (Beta noch), aber alles verlief reibungslos.
image

AFAIK, zumindest für mich, Problem gelöst.

Alle 12 Kommentare

@ manuelgomes2 Vielen Dank für die

Wir haben das Problem analysiert und konnten es reproduzieren und arbeiten an einer Lösung (siehe PR # 18).

@ manuelgomes2 Nach der Kontaktaufnahme mit Google scheint es derzeit ein Problem mit Flutter-Apps zu geben, die mit Objective-C (Standardeinstellung) erstellt wurden und Swift-Plugins verbrauchen. Siehe auch das Feedback, das ich zu meiner Frage zum Stapelüberlauf erhalten habe .

Die Problemumgehung besteht derzeit darin, Ihre App für die Verwendung von Swift unter iOS zu generieren (z. B. mit dem folgenden Flutter-CLI-Befehl flutter create -i swift my_app , beachten Sie den schnellen Schalter

In der Zwischenzeit werden wir daran arbeiten, das Plugin von Swift nach Objective-C zu übersetzen, damit die oben genannte Problemumgehung nicht benötigt wird und sich auch nicht negativ auf die App-Größe auswirkt.

Vielen Dank für Ihre Zeit, aber das "Flattern erstellen -i swift my_app" ist nicht die Lösung - ich habe meine iOS-App von Anfang an mit "-i swift" erstellt, aber das Problem bleibt bestehen ...

Eine seltsame Sache, wenn ich GeneratedPluginRegistrant.m in XCode öffne, erscheint Ihr Plugin in einer anderen Farbe (lila) als alle anderen Plugins und ist das einzige, das nicht mit "FLT" im Namen beginnt - Entschuldigung für meine Unwissenheit, aber weißt du warum und ob das irgendwie verwandt ist? Erscheint es für Sie gleich, wenn Sie diese Datei in XCode öffnen?

Vielen Dank.

(Hinweis im Screenshot):
image

@mvanbeusekom ein weiteres Update, ich habe es endlich geschafft, die App zu erstellen: Die folgende Zeile wurde in meinem Podfile kommentiert:
use_frameworks!
Kommentar kommentiert die Zeile und die App wird mit Ihrem Plugin kompiliert. Jetzt stürzt die App beim Start ab, aber ich werde das untersuchen (wahrscheinlich ist ein Setup erforderlich, damit diese App Ortungsdienste auf ios verwendet).
Hoffe das hilft.

@mvanbeusekom hat gerade einige Tests in einer sauberen, frisch erstellten Flatter-App durchgeführt - es ist eine Tatsache - wenn "use_frameworks!" nicht vorhanden ist, schlägt der Build fehl.

Außerdem habe ich gerade einen Build in den Appstore hochgeladen (Beta noch), aber alles verlief reibungslos.
image

AFAIK, zumindest für mich, Problem gelöst.

@ manuelgomes2 das sind tolle Neuigkeiten, vielen Dank für das Feedback.

Der wahrscheinliche Grund, warum Ihre App beim Start abgestürzt ist / ist, hängt mit der Tatsache zusammen, dass die Berechtigung zur Verwendung standortbasierter Dienste in der Datei Info.plist fehlt (Dokumentation, welche Berechtigungen zum Hinzufügen vorhanden sind in der Datei README.md ).

Nach einigem Googeln fand ich den folgenden Thread, der hilfreich sein könnte (ich werde ihn auch zu unserer README-Datei hinzufügen): https://github.com/flutter/flutter/issues/16049

Hallo!

Wenn ich dieses Problem sehe, sehe ich, dass @ manuelgomes2 am Anfang firebase_messaging und geolocator und er die Probleme hatte.

Später erstellte er eine neue App, anscheinend ohne firebase_messaging , und konnte sie erstellen.

Manuel, konnten Sie beide im selben Projekt zusammenmischen?

Das ist momentan mein Problem . Wenn man die Firebase-Plugins verwendet, kann man sie anscheinend nicht mit einem anderen Plugin kombinieren, das Swift-Code verwendet, da FB use_frameworks benötigt! Um draußen zu sein, benötigen Swift-Code-Plugins use_frameworks! in sein! : - /

(Ich erwarte tatsächlich, dass das falsch ist)

@ffeu auf der verknüpften SO-Frage, die Sie erwähnen,

The “Swift Language Version” (SWIFT_VERSION) build setting must be set to a supported value for targets which use Swift. This setting can be set in the build settings editor.

Für mich sieht es so aus, als müssten Sie die Swift-Version in Ihrem Podfile angeben, indem Sie die folgende Zeile hinzufügen:

config.build_settings['SWIFT_VERSION'] = '4.1'

Es sollte Teil des post_install -Blocks sein, wie folgt:

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
      config.build_settings['ENABLE_BITCODE'] = 'NO'
      config.build_settings['SWIFT_VERSION'] = '4.1'
    end
  end
end

Ich bin mir nicht sicher, ob dies funktionieren wird, da ich es nicht getestet habe, aber es ist einen Versuch wert, würde ich sagen. Bitte lassen Sie mich wissen, ob dies hilft.

PS Ich habe das oben genannte auch als Antwort auf Stack Overflow gepostet.

Hallo Maurits, es hat funktioniert !! \Ö/

Ich habe es vorher getestet, aber nur mit '3.2'! Es funktionierte sowohl mit 4.0 als auch mit 4.1.

Vielen Dank!

Ich habe es mit allen Versionen 3.2, 4.0, 4.1 und 4.2 getestet, aber der XCode zeigt immer noch den Fehler an
'geolocator/geolocator-Swift.h' file not found Dies ist der Code in meiner Datei

#import "GeolocatorPlugin.h"
#import <geolocator/geolocator-Swift.h> // this line causes error

<strong i="8">@implementation</strong> GeolocatorPlugin
+ (void)registerWithRegistrar:(NSObject<FlutterPluginRegistrar>*)registrar {
  [SwiftGeolocatorPlugin registerWithRegistrar:registrar];
}
<strong i="9">@end</strong>

Kann mich jemand führen?

Ich denke, es ist deine Xcode-Version.

Überprüfen Sie diese SO-Frage.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen