запускаем 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)
[!] Подключенные устройства
! Нет доступных устройств
@ 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?
Спасибо.
(обратите внимание, на скриншоте):
@mvanbeusekom еще одно обновление, мне наконец удалось собрать приложение: в моем подфайле была прокомментирована следующая строка:
use_frameworks!
Строка раскомментирована, и приложение компилируется с использованием вашего плагина. Теперь приложение вылетает при запуске, но я изучу это (возможно, для этого приложения потребуется некоторая настройка, чтобы использовать службы определения местоположения на ios)
Надеюсь это поможет.
@mvanbeusekom только что провел несколько тестов в чистом, только что созданном приложении flutter - это факт - когда "use_frameworks!" нет, сборка не выполняется.
Кроме того, я только что загрузил сборку в магазин приложений (еще бета-версия), но все прошло гладко.
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.
Самый полезный комментарий
@mvanbeusekom только что провел несколько тестов в чистом, только что созданном приложении flutter - это факт - когда "use_frameworks!" нет, сборка не выполняется.
Кроме того, я только что загрузил сборку в магазин приложений (еще бета-версия), но все прошло гладко.
AFAIK, по крайней мере, для меня, проблема решена.