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 에 저장소별로 나뉘어 있습니다.