From 53a414e1e6dc9f33bcec9a5ae0bb91f4feaa1f4c Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Sun, 23 Jun 2024 23:02:07 +0200 Subject: [PATCH 1/3] Fix #445 stop listening for updates before stopping/destroying the view (#459) Fixes #445 changing the order of cleanup and view disposal. Co-authored-by: Joscha <34318751+josxha@users.noreply.github.com> --- .../org/maplibre/maplibregl/MapLibreMapController.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapController.java b/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapController.java index cd87dccf..724c39c1 100644 --- a/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapController.java +++ b/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapController.java @@ -1770,15 +1770,17 @@ private void destroyMapViewIfNecessary() { if (mapView == null) { return; } - mapViewContainer.removeView(mapView); - mapView.onStop(); - mapView.onDestroy(); if (locationComponent != null) { locationComponent.setLocationComponentEnabled(false); } stopListeningForLocationUpdates(); + mapViewContainer.removeView(mapView); + + mapView.onStop(); + mapView.onDestroy(); + mapView = null; } From 5c11535327e3eaad1593b5e1ee1bb9be09f8f719 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Sun, 23 Jun 2024 23:36:27 +0200 Subject: [PATCH 2/3] Update Android plugin Gradle configuration (#460) We require a very recent Kotlin version (1.9.0) due to MapLibre native dependency. These changes ensure that the plugin requires the same version. Also remove unused imports and old embedding settings in the example. Co-authored-by: Joscha <34318751+josxha@users.noreply.github.com> --- maplibre_gl/android/build.gradle | 8 +++++--- .../android/gradle/wrapper/gradle-wrapper.properties | 3 +-- .../java/org/maplibre/maplibregl/MapLibreMapsPlugin.java | 8 -------- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/maplibre_gl/android/build.gradle b/maplibre_gl/android/build.gradle index 1c8ea390..c10fbb9b 100644 --- a/maplibre_gl/android/build.gradle +++ b/maplibre_gl/android/build.gradle @@ -2,13 +2,15 @@ group 'org.maplibre.maplibregl' version '1.0-SNAPSHOT' buildscript { + ext.kotlin_version = '1.9.0' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.3' + classpath 'com.android.tools.build:gradle:7.2.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -20,7 +22,7 @@ rootProject.allprojects { } apply plugin: 'com.android.library' -apply plugin: 'org.jetbrains.kotlin.android' +apply plugin: 'kotlin-android' android { if (project.android.hasProperty("namespace")) { @@ -28,7 +30,7 @@ android { } compileSdkVersion 34 - ndkVersion "20.1.5948944" + ndkVersion "26.1.10909125" defaultConfig { minSdkVersion 21 diff --git a/maplibre_gl/android/gradle/wrapper/gradle-wrapper.properties b/maplibre_gl/android/gradle/wrapper/gradle-wrapper.properties index 5d117957..ae04661e 100644 --- a/maplibre_gl/android/gradle/wrapper/gradle-wrapper.properties +++ b/maplibre_gl/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sat Mar 06 23:07:28 CET 2021 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip diff --git a/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapsPlugin.java b/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapsPlugin.java index d73b1dfe..edf891ca 100644 --- a/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapsPlugin.java +++ b/maplibre_gl/android/src/main/java/org/maplibre/maplibregl/MapLibreMapsPlugin.java @@ -4,20 +4,14 @@ package org.maplibre.maplibregl; -import android.app.Activity; -import android.app.Application; -import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.Lifecycle; -import androidx.lifecycle.LifecycleOwner; -import androidx.lifecycle.LifecycleRegistry; import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; import io.flutter.embedding.engine.plugins.lifecycle.HiddenLifecycleReference; import io.flutter.plugin.common.MethodChannel; -import io.flutter.plugin.common.PluginRegistry.Registrar; /** * Plugin for controlling a set of MapLibreMap views to be shown as overlays on top of the Flutter @@ -27,8 +21,6 @@ */ public class MapLibreMapsPlugin implements FlutterPlugin, ActivityAware { - private static final String VIEW_TYPE = "plugins.flutter.io/maplibre_gl"; - static FlutterAssets flutterAssets; private Lifecycle lifecycle; From 887ee1c610748097eb3ebfc3f0a341c6a3a4bcc5 Mon Sep 17 00:00:00 2001 From: Peter Leibiger Date: Mon, 24 Jun 2024 11:19:17 +0200 Subject: [PATCH 3/3] Fix the package name for SPM configuration (#467) Co-authored-by: Joscha <34318751+josxha@users.noreply.github.com> --- maplibre_gl/ios/Assets/.gitkeep | 0 maplibre_gl/ios/maplibre_gl.podspec | 4 ++-- .../ios/{maplibre_gl_ios => maplibre_gl}/Package.swift | 9 +++++---- .../Sources/maplibre_gl}/Constants.swift | 0 .../Sources/maplibre_gl}/Convert.swift | 0 .../Sources/maplibre_gl}/Enums.swift | 0 .../Sources/maplibre_gl}/Extensions.swift | 0 .../Sources/maplibre_gl}/LayerPropertyConverter.swift | 0 .../Sources/maplibre_gl}/MGLMapView+setLanguage.swift | 0 .../Sources/maplibre_gl}/MapLibreMapController.swift | 0 .../Sources/maplibre_gl}/MapLibreMapFactory.swift | 0 .../Sources/maplibre_gl}/MapLibreMapOptionsSink.swift | 0 .../Sources/maplibre_gl}/MapLibreMapsPlugin.swift | 0 .../Sources/maplibre_gl}/MethodCallError.swift | 0 .../Sources/maplibre_gl}/OfflineChannelHandler.swift | 0 .../Sources/maplibre_gl}/OfflineManagerUtils.swift | 0 .../maplibre_gl}/OfflinePackDownloadManager.swift | 0 .../Sources/maplibre_gl}/OfflineRegion.swift | 0 .../Sources/maplibre_gl}/OfflineRegionDefinition.swift | 0 .../Sources/maplibre_gl}/SourcePropertyConverter.swift | 0 20 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 maplibre_gl/ios/Assets/.gitkeep rename maplibre_gl/ios/{maplibre_gl_ios => maplibre_gl}/Package.swift (72%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/Constants.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/Convert.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/Enums.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/Extensions.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/LayerPropertyConverter.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/MGLMapView+setLanguage.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/MapLibreMapController.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/MapLibreMapFactory.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/MapLibreMapOptionsSink.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/MapLibreMapsPlugin.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/MethodCallError.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/OfflineChannelHandler.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/OfflineManagerUtils.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/OfflinePackDownloadManager.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/OfflineRegion.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/OfflineRegionDefinition.swift (100%) rename maplibre_gl/ios/{maplibre_gl_ios/Sources/maplibre_gl_ios => maplibre_gl/Sources/maplibre_gl}/SourcePropertyConverter.swift (100%) diff --git a/maplibre_gl/ios/Assets/.gitkeep b/maplibre_gl/ios/Assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/maplibre_gl/ios/maplibre_gl.podspec b/maplibre_gl/ios/maplibre_gl.podspec index cface905..ebbdf1af 100644 --- a/maplibre_gl/ios/maplibre_gl.podspec +++ b/maplibre_gl/ios/maplibre_gl.podspec @@ -12,10 +12,10 @@ A new Flutter plugin. s.license = { :file => '../LICENSE' } s.author = { 'Your Company' => 'email@example.com' } s.source = { :path => '.' } - s.source_files = 'maplibre_gl_ios/Sources/maplibre_gl_ios/**/*' + s.source_files = 'maplibre_gl/Sources/maplibre_gl/**/*' s.dependency 'Flutter' # When updating the dependency version, - # make sure to also update the version Package.swift. + # make sure to also update the version in Package.swift. s.dependency 'MapLibre', '6.5.0' s.swift_version = '5.0' s.ios.deployment_target = '12.0' diff --git a/maplibre_gl/ios/maplibre_gl_ios/Package.swift b/maplibre_gl/ios/maplibre_gl/Package.swift similarity index 72% rename from maplibre_gl/ios/maplibre_gl_ios/Package.swift rename to maplibre_gl/ios/maplibre_gl/Package.swift index 5b813799..9d0bd87f 100644 --- a/maplibre_gl/ios/maplibre_gl_ios/Package.swift +++ b/maplibre_gl/ios/maplibre_gl/Package.swift @@ -4,25 +4,26 @@ import PackageDescription let package = Package( - name: "maplibre_gl_ios", + name: "maplibre_gl", platforms: [ .iOS("12.0"), ], products: [ - .library(name: "maplibre-gl-ios", targets: ["maplibre_gl_ios"]) + .library(name: "maplibre-gl", targets: ["maplibre_gl"]) ], dependencies: [ // When updating the dependency version, + // make sure to also update the version in maplibre_gl.podspec. .package(url: "https://github.com/maplibre/maplibre-gl-native-distribution.git", exact: "6.5.0"), ], targets: [ .target( - name: "maplibre_gl_ios", + name: "maplibre_gl", dependencies: [ .product(name: "MapLibre", package: "maplibre-gl-native-distribution") ], cSettings: [ - .headerSearchPath("include/maplibre_gl_ios") + .headerSearchPath("include/maplibre_gl") ] ) ] diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Constants.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Constants.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Constants.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Constants.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Convert.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Convert.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Convert.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Convert.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Enums.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Enums.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Enums.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Enums.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Extensions.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Extensions.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/Extensions.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/Extensions.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/LayerPropertyConverter.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/LayerPropertyConverter.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/LayerPropertyConverter.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/LayerPropertyConverter.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MGLMapView+setLanguage.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MGLMapView+setLanguage.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MGLMapView+setLanguage.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MGLMapView+setLanguage.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapController.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapController.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapController.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapController.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapFactory.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapFactory.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapFactory.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapFactory.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapOptionsSink.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapOptionsSink.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapOptionsSink.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapOptionsSink.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapsPlugin.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapsPlugin.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MapLibreMapsPlugin.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MapLibreMapsPlugin.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MethodCallError.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MethodCallError.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/MethodCallError.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/MethodCallError.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineChannelHandler.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineChannelHandler.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineChannelHandler.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineChannelHandler.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineManagerUtils.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineManagerUtils.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineManagerUtils.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineManagerUtils.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflinePackDownloadManager.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflinePackDownloadManager.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflinePackDownloadManager.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflinePackDownloadManager.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineRegion.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineRegion.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineRegion.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineRegion.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineRegionDefinition.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineRegionDefinition.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/OfflineRegionDefinition.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/OfflineRegionDefinition.swift diff --git a/maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/SourcePropertyConverter.swift b/maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/SourcePropertyConverter.swift similarity index 100% rename from maplibre_gl/ios/maplibre_gl_ios/Sources/maplibre_gl_ios/SourcePropertyConverter.swift rename to maplibre_gl/ios/maplibre_gl/Sources/maplibre_gl/SourcePropertyConverter.swift