MapConductor iOS SDK 1.3.1 을 공개했습니다. Swift Package Manager용으로 16개 모듈에 태그를 붙이고, 이 프로젝트로서 처음으로 CocoaPods에도 10개의 pod을 공개하고 있습니다.
Swift Package Manager
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
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 에 저장소별로 나뉘어 있습니다.