MapConductor iOS SDK 1.3.1 を公開しました。Swift Package Manager 向けに 16 モジュールへタグを打ち、このプロジェクトとして初めて CocoaPods にも 10 個の pod を公開しています。
Swift Package Manager
swift
dependencies: [
.package(url: "https://github.com/MapConductor/ios-sdk-core", from: "1.3.1"),
.package(url: "https://github.com/MapConductor/ios-for-maplibre", from: "1.3.1"),
]CocoaPods
ruby
pod 'MapConductorCore', '~> 1.3.1' pod 'MapConductorForMapLibre', '~> 1.3.1'
モジュールと配布経路
| モジュール | リポジトリ | 配布 | 地図 SDK |
|---|---|---|---|
MapConductorCore | ios-sdk-core | SPM + CocoaPods | — |
MapConductorHeatmap | ios-heatmap | SPM + CocoaPods | — |
MapConductorMarkerClustering | ios-marker-clustering | SPM + CocoaPods | — |
MapConductorGeoJSON | ios-geojson | SPM + CocoaPods | — |
MapConductorKML | ios-kml | SPM + CocoaPods | — |
MapConductorForMapLibre | ios-for-maplibre | SPM + CocoaPods | MapLibre 6.20.0 |
MapConductorForMapTiler | ios-for-maptiler | SPM + CocoaPods | MapLibre 6.20.0 |
MapConductorForGoogleMaps | ios-for-googlemaps | SPM + CocoaPods | Google Maps 11.0.0 |
MapConductorForMapbox | ios-for-mapbox | SPM + CocoaPods | Mapbox 11.0.0 |
MapConductorForLongdo | ios-for-longdo | SPM + CocoaPods | Longdo 4.1.0 |
MapConductorForArcGIS | ios-for-arcgis | SPM のみ | ArcGIS 300.1.0 |
MapConductorForHERE | ios-for-here | SPM のみ | HERE 4.27.2.0 |
MapConductorForTomTom | ios-for-tomtom | SPM のみ | TomTom 0.73.1 |
3 つが SPM 専用な理由
ArcGIS / HERE / TomTom は CocoaPods に出していません。設定の不備ではなく、配布元の制約です。
- ArcGIS — Esri は SPM でのみ配布しており、xcframework はビルド時にダウンロードされます
- HERE — SDK は HERE のポータルからの手動ダウンロードのみで、再配布できません
- TomTom — 依存する
TomTomSDKMapDisplayが CocoaPods trunk に存在しません
いずれも公開前の事前調査で分かっていたもので、実行してから判明したわけではありません。SPM ではこの 3 つも通常どおり使えます。
Google Maps は静的ライブラリ
MapConductorForGoogleMaps の pod trunk push は、GoogleMaps.xcframework が静的リンクされているため一度失敗します。--use-libraries を付けると通ります。設計上の問題ではなく、検証時のリンク方法の話です。
動作環境
| iOS | 16.0 以上 |
| Xcode | 15 以上 |
| Swift tools | 5.9 |
補足
ライブラリは BUILD_LIBRARY_FOR_DISTRIBUTION=YES でビルドしており、.swiftinterface を持ちます。@_spi(MapConductorDriver) を付けた宣言は公開 API サーフェスには数えていません ── Android の @InternalMapConductorApi、React の /** @internal */ に対応する位置づけです。
各モジュールは github.com/MapConductor にリポジトリごとに分かれています。