Android SDK 1.3.1 — 18 อาร์ทิแฟกต์บน Maven Central พร้อมรองรับ Jetpack Compose

เผยแพร่ 18 อาร์ทิแฟกต์รวมถึง BOM บน Maven Central กรุณาใช้ 1.3.1 เพราะ 1.3.0 มีข้อบกพร่องใน POM และ minSdk เปลี่ยนเป็น 28 แล้ว

เราเผยแพร่ MapConductor Android SDK 1.3.1 บน Maven Central แล้ว อาร์ทิแฟกต์ทั้ง 18 รายการใช้เวอร์ชันเดียวกัน รวมถึง BOM ด้วย

วิธีใช้

ถ้าใส่ BOM ก็ไม่ต้องระบุเวอร์ชันของแต่ละโมดูล

kotlin
dependencies {
    implementation(platform("com.mapconductor:mapconductor-bom:1.3.1"))
    implementation("com.mapconductor:core")
    implementation("com.mapconductor:compose")
    implementation("com.mapconductor:for-maplibre")
}

หากไม่ใช้ BOM ก็ขอให้กำหนดเป็น 1.3.1 ให้ตรงกันทั้งหมด เนื่องจาก 1.3.0 มีข้อบกพร่องตามที่อธิบายด้านล่าง

สิ่งที่เผยแพร่

อาร์ทิแฟกต์เนื้อหาSDK แผนที่รีโพซิทอรี
com.mapconductor:mapconductor-bomBOM จัดเวอร์ชันของทุกโมดูลให้ตรงกันmapconductor-bom
com.mapconductor:coreแกนหลักที่ไม่ผูกกับผู้ให้บริการandroid-sdk-core
com.mapconductor:composeการเชื่อมต่อกับ Jetpack Composeandroid-sdk-compose
com.mapconductor:iconsไอคอนandroid-icons
com.mapconductor:heatmapฮีตแมปandroid-heatmap
com.mapconductor:marker-clusteringการจัดกลุ่มมาร์กเกอร์android-marker-clustering
com.mapconductor:geojsonเลเยอร์ GeoJSONandroid-geojson-layer
com.mapconductor:kmlเลเยอร์ KMLandroid-kml
com.mapconductor:for-googlemapsGoogle Mapsplay-services-maps 20.0.0android-for-googlemaps
com.mapconductor:for-maplibreMapLibremaplibre 13.4.1android-for-maplibre
com.mapconductor:for-mapboxMapboxmapbox 11.28.0android-for-mapbox
com.mapconductor:for-hereHERE.aar 4.27.2.0.309975android-for-here
com.mapconductor:for-arcgisArcGISarcgis-maps-kotlin 300.1.0android-for-arcgis
com.mapconductor:for-maptilerMapTilermaptiler 2.1.0android-for-maptiler
com.mapconductor:for-tomtomTomTomtomtom 2.4.2android-for-tomtom
com.mapconductor:for-longdoLongdolongdo 1.3.0android-for-longdo
com.mapconductor:for-mapplsMapplsmappls 9.0.3android-for-mappls
com.mapconductor:for-openmobilemapsOpen Mobile Mapsomm 4.0.0android-for-openmobilemaps

มีบางรายการที่ชื่ออาร์ทิแฟกต์กับชื่อรีโพซิทอรีไม่ตรงกัน รีโพซิทอรีของ core และ compose ใช้ชื่อ android-sdk-* ส่วนของ geojson ยังคงเป็น android-geojson-layer เพราะพิกัด Maven กำหนดไว้เป็น geojson แล้ว และพิกัดที่เผยแพร่ไปแล้วเปลี่ยนไม่ได้

Jetpack Compose

com.mapconductor:compose คือส่วนเชื่อมต่อกับ Compose วางแผนที่เป็นคอมโพสเซเบิล MapView และให้อ็อบเจกต์สถานะถือสถานะไว้ รูปแบบการเรียกใช้นี้ไม่เปลี่ยนแม้จะสลับผู้ให้บริการ

ยังมีอีกเหตุผลหนึ่งที่ต้องใช้ 1.3.1 เมื่อทำงานกับ Compose นั่นคือ BOM ของ Compose ไม่ปรากฏใน POM ที่เผยแพร่ เพราะ BOM เป็นกลไกสำหรับตัดสินเวอร์ชันของดีเพนเดนซี ผลของการตัดสินนั้นไม่ได้ถูกฝังลงใน POM ใน 1.3.0 เรามองข้ามจุดนี้ ทำให้ดีเพนเดนซีของ Compose ปรากฏใน POM โดยไม่มีเวอร์ชัน

กรุณาใช้ 1.3.1 แทน 1.3.0

ตอนเผยแพร่ 1.3.0 ระบบสร้าง POM ที่ดีเพนเดนซีของ Compose ไม่มีเวอร์ชัน ออกมา Maven Central ปฏิเสธกรณีแบบนี้ for-arcgis for-here และ for-tomtom จึงเผยแพร่ไม่สำเร็จตั้งแต่ต้น แต่ for-googlemaps for-maplibre และ for-mapbox ผ่านออกไปทั้งที่พัง ฝั่งที่นำไปใช้จะแก้ปัญหาดีเพนเดนซีของ Compose ไม่ได้

Maven Central ไม่อนุญาตให้แทนที่พิกัดที่เผยแพร่ไปแล้ว เราจึงออกฉบับแก้ไขเป็น 1.3.1 กรุณาอย่าใช้ 1.3.0

สภาพแวดล้อมที่รองรับ

minSdk28
compileSdk37
targetSdk35
Java17
Kotlin2.4.10

minSdk ขยับจาก 26 เป็น 28 ตามข้อกำหนดของ ArcGIS Maps SDK ซีรีส์ 300 และ compileSdk 37 ก็ด้วยเหตุผลเดียวกัน แม้จะเป็นการตั้งค่าที่ไม่ใช้ ArcGIS เราก็ปรับให้ตรงกันทั้งหมด เพราะโมดูลที่เข้าชุดกันดูแลง่ายกว่า

แต่ละโมดูลแยกเป็นรีโพซิทอรีของตัวเองที่ github.com/MapConductor