fix(ios): запуск на iOS — MapKit, ключ из xcconfig, CocoaPods

- AppDelegate: YMKMapKit до super, регистрация плагинов по шаблону Flutter 3.41
- Info.plist: YandexMapKitApiKey из $(YANDEX_MAPKIT_API_KEY)
- Debug/Release/Profile.xcconfig: ключ, include Pods и опциональный Secrets
- Podfile, workspace, pbxproj; .gitignore для Secrets.xcconfig, пример Secrets
- ios/README.md
This commit is contained in:
Alexander Shidlovsky
2026-05-14 10:18:07 +03:00
parent e7d2154d98
commit 9fa2fcfc63
15 changed files with 468 additions and 22 deletions

54
ios/README.md Normal file
View File

@@ -0,0 +1,54 @@
# iOS
Flutter + CocoaPods. Нативка через плагины — зависимости смотри в `Podfile` / `Podfile.lock`.
## Окружение
Полный Xcode (не только CLT). После апдейта Xcode:
```bash
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
sudo xcodebuild -runFirstLaunch
```
Нет нужного iOS в сборке — Xcode → Settings → Platforms, докачать runtime. `flutter doctor -v` для быстрой проверки toolchain.
## Сборка из репозитория
Из корня (важно для `Generated.xcconfig`):
```bash
flutter pub get
cd ios && pod install && cd ..
```
Открывать **`Runner.xcworkspace`**, не `Runner.xcodeproj`.
Ключ **Yandex MapKit**: в `Info.plist``YandexMapKitApiKey` = `$(YANDEX_MAPKIT_API_KEY)`. Значение задаётся в `ios/Flutter/Debug.xcconfig`, `Release.xcconfig`, `Profile.xcconfig` (в конце файла; опционально перед этим `#include? "Secrets.xcconfig"` — см. `Secrets.xcconfig.example`). В `AppDelegate.swift` до `super.application` вызываются `YMKMapKit.setLocale` / `setApiKey` из plist — иначе SDK падает при регистрации плагина.
## Подпись
Runner → Signing & Capabilities, свой Team. Bundle id: `com.sparkit.beHappy` — должен совпадать с App ID в developer portal под TestFlight / App Store.
## Артефакты
```bash
flutter build ipa
```
`.ipa` — в `build/ios/ipa/` (точный путь Flutter печатает в конце).
Альтернатива: Xcode → Archive → Distribute. `ExportOptions.plist` в репу не коммитим.
## Симулятор
```bash
flutter devices
flutter run -d <device_id>
```
У `mobile_scanner` 5.x в Pods тянется Google ML Kit; на симуляторах Apple Silicon под свежим iOS Xcode часто ругается на arm64 и криво матчит destination. Если `flutter run` на симе отвалился — собери на **физическом устройстве** или проверь обновления плагина / обходы в `Podfile` под твою связку Xcode + runtime.
## Ссылки
[Flutter: iOS deployment](https://docs.flutter.dev/deployment/ios)