Flutter-geolocator: Ошибка сборки для iOS: файл geolocator / geolocator-Swift.h не найден

Созданный на 26 июн. 2018  ·  12Комментарии  ·  Источник: Baseflow/flutter-geolocator

запускаем flutter build ios --release:

=== СОЗДАТЬ ЦЕЛЬ firebase_messaging ПОД ПРОЕКТАМИ С КОНФИГУРАЦИЕЙ Release ===
/ Users / * * / development / flutter / .pub-cache / hosted / pub.dartlang.org / geolocator-0.0.1 / ios / Classes / GeolocatorPlugin.m: 2: 9: фатальная ошибка: 'geolocator / geolocator-Swift .h 'файл не найден

Импортировать

Вывод моего врача:
Сводка доктора (чтобы увидеть все подробности, запустите flutter doctor -v):
[✓] Flutter (Channel dev, v0.5.5, в Mac OS X 10.13.3 17D102, локаль pt-PT)
[✗] Android toolchain - разработка для устройств Android
✗ Невозможно найти Android SDK.
Установите Android Studio с: https://developer.android.com/studio/index.html
При первом запуске он поможет вам установить компоненты Android SDK.
(или посетите https://flutter.io/setup/#android-setup для получения подробных инструкций).
Если Android SDK был установлен в произвольном месте, установите $ ANDROID_HOME в это место.
[✓] Набор инструментов iOS - разработка для устройств iOS (Xcode 9.2)
[✗] Android Studio (не установлена)
[!] VS Code (версия 1.14.2)
[!] Подключенные устройства
! Нет доступных устройств

Самый полезный комментарий

@mvanbeusekom только что провел несколько тестов в чистом, только что созданном приложении flutter - это факт - когда "use_frameworks!" нет, сборка не выполняется.

Кроме того, я только что загрузил сборку в магазин приложений (еще бета-версия), но все прошло гладко.
image

AFAIK, по крайней мере, для меня, проблема решена.

Все 12 Комментарий

@ manuelgomes2 большое спасибо за то, что

Мы проанализировали проблему, смогли воспроизвести ее и работаем над исправлением (см. PR № 18).

@ manuelgomes2 после обращения в Google кажется, что в настоящий момент существует проблема с приложениями Flutter, созданными с использованием Objective-C (который по умолчанию), использующих плагины Swift. См. Также отзывы, которые я получил на свой вопрос о переполнении стека .

На данный момент обходным путем является создание вашего приложения для использования Swift на iOS (например, с помощью следующей команды Flutter CLI flutter create -i swift my_app , обратите внимание на переключатель -i swift ). Однако я должен предупредить вас, что это приведет к значительным накладным расходам на размер приложения.

Тем временем мы будем работать над переводом плагина с Swift на Objective-C, чтобы вышеуказанный обходной путь не понадобился и не повлиял отрицательно на размер приложения.

Спасибо за потраченное время, но «flutter create -i swift my_app» не является решением - я с самого начала создал свое приложение для ios, используя «-i swift», но проблема не устранена ...

Одна странная вещь, когда я открываю GeneratedPluginRegistrant.m в XCode, ваш плагин отображается другим цветом (пурпурным) по сравнению со всеми другими плагинами, и это единственный плагин, который не начинается с «FLT» в имени - извините за мое невежество, но знаете ли вы, почему и если это каким-то образом связано? Кажется ли вам то же самое, если вы откроете этот файл в XCode?

Спасибо.

(обратите внимание, на скриншоте):
image

@mvanbeusekom еще одно обновление, мне наконец удалось собрать приложение: в моем подфайле была прокомментирована следующая строка:
use_frameworks!
Строка раскомментирована, и приложение компилируется с использованием вашего плагина. Теперь приложение вылетает при запуске, но я изучу это (возможно, для этого приложения потребуется некоторая настройка, чтобы использовать службы определения местоположения на ios)
Надеюсь это поможет.

@mvanbeusekom только что провел несколько тестов в чистом, только что созданном приложении flutter - это факт - когда "use_frameworks!" нет, сборка не выполняется.

Кроме того, я только что загрузил сборку в магазин приложений (еще бета-версия), но все прошло гладко.
image

AFAIK, по крайней мере, для меня, проблема решена.

@ manuelgomes2 , это отличные новости, большое спасибо за отзыв.

На всякий случай, вероятная причина сбоя вашего приложения при запуске связана с тем фактом, что в файле Info.plist отсутствует разрешение на использование служб, основанных на местоположении (документация о том, какие разрешения нужно добавить, в файле README.md ).

После некоторого поиска в Google я нашел следующую ветку, которая может быть полезна (я также добавлю ее в наш README): https://github.com/flutter/flutter/issues/16049

Привет!

Увидев эту проблему, я вижу, что в начале @ manuelgomes2 использовал firebase_messaging и geolocator , и у него были проблемы.

Позже он создал новое приложение, по-видимому, без firebase_messaging , и смог его собрать.

Мануэль, удалось ли вам совместить их обоих в одном проекте?

В настоящее время это моя проблема . По-видимому, при использовании плагинов Firebase их нельзя комбинировать с другим плагином, который использует код Swift, поскольку для FB требуется use_frameworks! , а плагины кода Swift требуют use_frameworks! Быть в! : - /

(Я действительно ожидаю, что это будет ложью)

@ffeu в связанном вопросе SO, который вы упомянули, вы столкнулись со следующей ошибкой:

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.

Мне кажется, что вам нужно указать версию Swift в вашем Podfile , добавив следующую строку:

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

Он должен быть частью блока post_install , например:

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

Не уверен, что это сработает, так как я не тестировал его, но я бы сказал, что попробовать стоит. Пожалуйста, дайте мне знать, если это поможет.

PS Я также опубликовал это как ответ на переполнение стека.

Привет, Мауриц, это сработало !! \ o /

Я тестировал это ранее, но только с «3.2»! Работало и с 4.0, и с 4.1.

Большое спасибо!

Я тестировал его, используя все 3.2, 4.0, 4.1 и 4.2, но все же XCode показывает ошибку
'geolocator/geolocator-Swift.h' file not found Это код в моем файле

#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>

Кто-нибудь может меня направить?

Думаю, это твоя версия Xcode.

Отметьте этот вопрос SO.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги