
Почему добавление Firestore замедляет разветвление iOS - и как его исправить
7 августа 2025 г.Если вы используете Firebase Firestore в своем проекте Flutter и не знаете, почему ваши сборки iOS занимают так много времени для компиляции, вы не одиноки, эта проблема древняя, и большинство разработчиков страдают через это, но не волнуйтесь, я вас покрыл.
На моей машине,M3 Pro MacBookс 18 ГБ оперативной памяти и быстрым SSD, мое время настраивалось время750 секунддля первой сборки (после добавления Firestore вpubspec.yaml
и бегflutter clean && flutter pub get
)
Копаясь в этой проблеме, я нашел виновника, и это была сама библиотека Firestore. Хотя размер загрузки может быть не такой большой проблемой, поскольку его можно уменьшить с помощью высокоскоростного подключения к Интернету, но ядро библиотеки. Мы обсудим эту проблему подробно позже в этой статье.
Только доступное решение прямо сейчас состоит в том, чтобы перейти к предварительно скомпилированной библиотеке Firestore для iOS. Переключение на предварительно скомпилированную библиотеку сократила время моей сборки iOS, чтобы просто142 секунды,массивный81%Сокращение времени компиляции для iOS.
Прежде чем мы погрузимся в пошаговое руководство, мы должны сначала пройти через саму проблему, которая вызывает такое длительное время компиляции для iOS.
Ядро C ++ Firestore - проблема
Фактической проблемой является огромный размер библиотеки Core C ++, на которой построен пакет Flutter Firebase. Пакет Flutter Firestore сильно зависит от библиотеки C ++, которая состоит из вокруг500 000 строккода и когда вы добавляете пакет в свойpubspec.yaml
Файл, какао -капсулы должны сначала загрузить эту огромную библиотеку из источника, а затем собирать это в библиотеку Flutter, это здание библиотеки с использованием Core C ++ является фактическим трудоемким виновником, и потребуется более длительное время компиляции iOS независимо от того, насколько мощным является ваше оборудование.
Использование предварительно скомпилированной библиотеки - решение
Команда Flutterfire представила предварительную версию библиотеки Firestore, которую вы можете напрямую подключиться с стручками, она пропускает процесс преобразования кода C ++ и резко сокращает время сборки для iOS.
Давайте теперь погрузимся в пошаговое руководство по интеграции предварительно скомпилированной библиотеки Firestore в свой проект Flutter и сэкономить время.
Добавление предварительного библиотеки Firestore
1. Найдите правильную версию для использования
Прежде всего, вам нужна правильная версия предварительной библиотеки Firestore для загрузки. Открытьios/Podfile.lock
и ищите линию, похожую на- Firebase/Firestore (= 11.15.0)
и обратите внимание на версию, в моем случае, это11.15.0,он будет использоваться вtag
При подключении предварительной библиотеки, чтобы указать правильную версию (неверные/несоответствующие версии могут привести к компиляции или ошибкам времени выполнения и могут стать трудно отслеживать).
2. Добавить библиотеку в свойPodfile
В вашем проекте Flutter, Openios/Podfile
и добавитьpod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.15.0'
вtarget ‘Runner’
Блок, как ниже:
target 'Runner' do
use_frameworks!
use_modular_headers!
# Precompiled Firestore SDK:
pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '11.15.0'
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
target 'RunnerTests' do
inherit! :search_paths
end
end
Обратите внимание, что версия, которую вы скопировали ранее, она используется сразу после:tag
И это указывает на версию библиотеки, которая будет загружена.
3. Очистите свой проект
Очистить проект, запустивflutter clean
4. Переключитесь на каталог iOS
Переключиться в каталог iOS, запустивcd ios
5. Очистить все стручки
Очистить стручки иios/Podfile.lock
Бегrm -rf Pods Podfile.lock
6. Обновление PODS Repo & Установите стручки
Обновите репозиторий PODS и установите стручки, запустивpods install
с--repo-update
Флаг, окончательная команда для запуска будет выглядеть какpod install --repo-update
7. Скачать библиотеки
Прежде чем вы сможете загрузить библиотеки, вам нужно вернуться в Root Directory проекта, чтобы сделать это, запуститьcd ..
а затем бегиflutter pub get
Если вы правильно выполнили шаги, вы увидите в консоли, что библиотека Firestore будет загружена отдельно от предварительно скомпилированного источника, упомянутого вios/Podfile
а затем остальные библиотеки, добавленные в ваш проектpubspec.yaml
будет загружен
8. запустить проект
Как только библиотеки будут успешно загружены, запустите проект на любом симуляторе iOS или реальном устройстве iOS, вы увидите резкое сокращение времени компиляции вашей сборки iOS, чем раньше. Это может быть не совсем81%Как и я, как оборудование и многие другие факторы также вступают в игру, но сокращение будет достаточно значительным, чтобы вы могли ясно заметить.
Вы можете бежатьflutter clean
?
Хорошие новости - это,да, вы можете абсолютно бежатьflutter clean
без необходимости скачать стручки снова, потому что загруженная предварительно скомпилированная версия библиотеки была сделана черезios/Podfile
вместоpubspec.yaml
кто хранит библиотеку в стручках и работаетflutter clean
Не удаляет стручки из вашего проекта.
Существуют ли предварительные библиотеки и для других пакетов Firebase?
Нет,Для других библиотек Firebase для iOS нет предварительных версий для других библиотек Firebase, но это хорошая новость, потому что добавление других библиотек Firebase, таких как обмен сообщениями, удаленная конфигурация или хранилище, существенно не увеличивает время сборки для iOS, что делает совершенно непрактичным публиковать предварительные версии для остальных библиотек Firebase.
Мне нужно беспокоиться о размере сборки?
НезачемЧтобы беспокоиться о размере сборки приложения для iOS только потому, что предварительно скомпилированная библиотека Firestore была добавлена непосредственно в стручки с использованиемios/Podfile
По мере того, как Frume Framework удаляет дополнительный код для сборов выпуска и приводит к уменьшению размера приложения.
Оригинал