iOS SDK 1.3.1 ── SPM に 16 モジュール、CocoaPods は初公開

Swift Package Manager 向けに 16 モジュール、CocoaPods に 10 pod を公開しました。ArcGIS / HERE / TomTom は配布元の制約により SPM 専用です。

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
MapConductorCoreios-sdk-coreSPM + CocoaPods
MapConductorHeatmapios-heatmapSPM + CocoaPods
MapConductorMarkerClusteringios-marker-clusteringSPM + CocoaPods
MapConductorGeoJSONios-geojsonSPM + CocoaPods
MapConductorKMLios-kmlSPM + CocoaPods
MapConductorForMapLibreios-for-maplibreSPM + CocoaPodsMapLibre 6.20.0
MapConductorForMapTilerios-for-maptilerSPM + CocoaPodsMapLibre 6.20.0
MapConductorForGoogleMapsios-for-googlemapsSPM + CocoaPodsGoogle Maps 11.0.0
MapConductorForMapboxios-for-mapboxSPM + CocoaPodsMapbox 11.0.0
MapConductorForLongdoios-for-longdoSPM + CocoaPodsLongdo 4.1.0
MapConductorForArcGISios-for-arcgisSPM のみArcGIS 300.1.0
MapConductorForHEREios-for-hereSPM のみHERE 4.27.2.0
MapConductorForTomTomios-for-tomtomSPM のみ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 は静的ライブラリ

MapConductorForGoogleMapspod trunk push は、GoogleMaps.xcframework が静的リンクされているため一度失敗します。--use-libraries を付けると通ります。設計上の問題ではなく、検証時のリンク方法の話です。

動作環境

iOS16.0 以上
Xcode15 以上
Swift tools5.9

補足

ライブラリは BUILD_LIBRARY_FOR_DISTRIBUTION=YES でビルドしており、.swiftinterface を持ちます。@_spi(MapConductorDriver) を付けた宣言は公開 API サーフェスには数えていません ── Android の @InternalMapConductorApi、React の /** @internal */ に対応する位置づけです。

各モジュールは github.com/MapConductor にリポジトリごとに分かれています。