Skip to content

Commit 839fa12

Browse files
thanhdang198thanhdt-vietmapjosxha
authored andcommitted
feat: upgrade FGP & compatible with flutter 3.29.0 (maplibre#542)
This pull request includes several changes to the Android project setup and dependencies, as well as some code refactoring in the `GlobalMethodHandler` class. The most important changes are grouped by theme and summarized below: ### Android Project Setup: Upgrade to latest Flutter Gradle plugins configuration: https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply ### Dependency Updates: * [`example/pubspec.yaml`](diffhunk://#diff-565b0869896732da3b937c64bc8fd5f0ca37ea1f629d579c29fc70e0f1e3e48eL20-R20): Updated the `path_provider` dependency version from `2.0.15` to `2.1.5`. * Set minimum supported Flutter version to 3.22.0 ### Code Refactoring: * [`maplibre_gl/android/src/main/java/org/maplibre/maplibregl/GlobalMethodHandler.java`](diffhunk://#diff-9c836abc6c8048cf093a291198c86b17f16530e99328202318c54f9fe1c65c40L29-L37): Removed the `registrar` field and related code, updating the constructor and `openTilesDbFile` method to use `flutterAssets` instead. [[1]](diffhunk://#diff-9c836abc6c8048cf093a291198c86b17f16530e99328202318c54f9fe1c65c40L29-L37) [[2]](diffhunk://#diff-9c836abc6c8048cf093a291198c86b17f16530e99328202318c54f9fe1c65c40L155-R149) --------- Co-authored-by: thanhdt-vietmap <[email protected]> Co-authored-by: Joscha <[email protected]>
1 parent d2f0c5e commit 839fa12

File tree

13 files changed

+53
-54
lines changed

13 files changed

+53
-54
lines changed

.github/workflows/flutter_ci.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
strategy:
4242
fail-fast: false
4343
matrix:
44-
sdk: [ '3.10.5', '' ]
44+
sdk: [ '3.22.0', '' ]
4545
steps:
4646
- uses: actions/checkout@v4
4747
- uses: subosito/flutter-action@v2
@@ -72,7 +72,7 @@ jobs:
7272
strategy:
7373
fail-fast: false
7474
matrix:
75-
sdk: [ '3.10.5', '' ]
75+
sdk: [ '3.22.0', '' ]
7676
steps:
7777
- uses: actions/checkout@v4
7878
- uses: subosito/flutter-action@v2
@@ -101,7 +101,7 @@ jobs:
101101
strategy:
102102
fail-fast: false
103103
matrix:
104-
sdk: [ '3.10.5', '' ]
104+
sdk: [ '3.22.0', '' ]
105105
steps:
106106
- uses: actions/checkout@v4
107107
- uses: subosito/flutter-action@v2

example/android/.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ gradle-wrapper.jar
55
/gradlew.bat
66
/local.properties
77
GeneratedPluginRegistrant.java
8-
8+
/app/.cxx/
99
# Remember to never publicly share your keystore.
1010
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
1111
key.properties

example/android/app/build.gradle

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
plugins {
2+
id "com.android.application"
3+
id "kotlin-android"
4+
id "dev.flutter.flutter-gradle-plugin"
5+
}
6+
17
def localProperties = new Properties()
28
def localPropertiesFile = rootProject.file('local.properties')
39
if (localPropertiesFile.exists()) {
@@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
612
}
713
}
814

9-
def flutterRoot = localProperties.getProperty('flutter.sdk')
10-
if (flutterRoot == null) {
11-
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
12-
}
13-
1415
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
1516
if (flutterVersionCode == null) {
1617
flutterVersionCode = '1'
@@ -21,14 +22,10 @@ if (flutterVersionName == null) {
2122
flutterVersionName = '1.0'
2223
}
2324

24-
apply plugin: 'com.android.application'
25-
apply plugin: 'kotlin-android'
26-
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
27-
2825
android {
2926
namespace "org.maplibre.example"
3027
compileSdkVersion 34
31-
ndkVersion "26.1.10909125"
28+
ndkVersion "27.0.12077973"
3229

3330
compileOptions {
3431
sourceCompatibility JavaVersion.VERSION_17

example/android/build.gradle

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,3 @@
1-
buildscript {
2-
ext.kotlin_version = '1.9.0'
3-
repositories {
4-
google()
5-
mavenCentral()
6-
}
7-
8-
dependencies {
9-
classpath 'com.android.tools.build:gradle:8.2.0'
10-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
11-
}
12-
}
131

142
allprojects {
153
repositories {

example/android/gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
#Wed Feb 19 16:20:21 ICT 2025
12
distributionBase=GRADLE_USER_HOME
23
distributionPath=wrapper/dists
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
35
zipStoreBase=GRADLE_USER_HOME
46
zipStorePath=wrapper/dists
5-
distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip

example/android/settings.gradle

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
1-
include ':app'
1+
pluginManagement {
2+
def flutterSdkPath = {
3+
def properties = new Properties()
4+
file("local.properties").withInputStream { properties.load(it) }
5+
def flutterSdkPath = properties.getProperty("flutter.sdk")
6+
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
7+
return flutterSdkPath
8+
}()
29

3-
def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
4-
def properties = new Properties()
10+
includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
511

6-
assert localPropertiesFile.exists()
7-
localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
12+
repositories {
13+
google()
14+
mavenCentral()
15+
gradlePluginPortal()
16+
}
17+
}
818

9-
def flutterSdkPath = properties.getProperty("flutter.sdk")
10-
assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
11-
apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
19+
plugins {
20+
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
21+
id "com.android.application" version "8.2.2" apply false
22+
id "org.jetbrains.kotlin.android" version "2.0.20" apply false
23+
}
24+
25+
include ":app"

example/pubspec.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ repository: https://github.com/maplibre/flutter-maplibre-gl
66
issue_tracker: https://github.com/maplibre/flutter-maplibre-gl/issues
77

88
environment:
9-
sdk: '>=3.0.0 <4.0.0'
10-
flutter: '>=3.10.0'
9+
sdk: '>=3.4.0 <4.0.0'
10+
flutter: '>=3.22.0'
1111

1212
dependencies:
1313
collection: ^1.17.1
@@ -17,7 +17,7 @@ dependencies:
1717
http: ^1.1.0
1818
location: ^5.0.3
1919
maplibre_gl: ^0.20.0
20-
path_provider: ^2.0.15
20+
path_provider: ^2.1.5
2121

2222
dev_dependencies:
2323
flutter_test:

maplibre_gl/android/src/main/java/org/maplibre/maplibregl/GlobalMethodHandler.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,9 @@ class GlobalMethodHandler implements MethodChannel.MethodCallHandler {
2626
private static final int BUFFER_SIZE = 1024 * 2;
2727
@NonNull private final Context context;
2828
@NonNull private final BinaryMessenger messenger;
29-
@Nullable private PluginRegistry.Registrar registrar;
3029
@Nullable private FlutterPlugin.FlutterAssets flutterAssets;
3130
@Nullable private OfflineChannelHandlerImpl downloadOfflineRegionChannelHandler;
3231

33-
GlobalMethodHandler(@NonNull PluginRegistry.Registrar registrar) {
34-
this.registrar = registrar;
35-
this.context = registrar.activeContext();
36-
this.messenger = registrar.messenger();
37-
}
3832

3933
GlobalMethodHandler(@NonNull FlutterPlugin.FlutterPluginBinding binding) {
4034
this.context = binding.getApplicationContext();
@@ -152,9 +146,7 @@ private InputStream openTilesDbFile(String tilesDb) throws IOException {
152146
return new FileInputStream(new File(tilesDb));
153147
} else {
154148
String assetKey;
155-
if (registrar != null) {
156-
assetKey = registrar.lookupKeyForAsset(tilesDb);
157-
} else if (flutterAssets != null) {
149+
if (flutterAssets != null) {
158150
assetKey = flutterAssets.getAssetFilePathByName(tilesDb);
159151
} else {
160152
throw new IllegalStateException();

maplibre_gl/lib/src/color_tools.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// ignore_for_file: deprecated_member_use
2+
13
part of '../maplibre_gl.dart';
24

35
extension MapLibreColorConversion on Color {

maplibre_gl/pubspec.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ repository: https://github.com/maplibre/flutter-maplibre-gl
55
issue_tracker: https://github.com/maplibre/flutter-maplibre-gl/issues
66

77
environment:
8-
sdk: ">=3.0.0 <4.0.0"
9-
flutter: ">=3.10.0"
8+
sdk: '>=3.4.0 <4.0.0'
9+
flutter: '>=3.22.0'
1010

1111
dependencies:
1212
flutter:

0 commit comments

Comments
 (0)