From 015a0a43b56700907977d9efe484df11a1439b4b Mon Sep 17 00:00:00 2001
From: Volodymyr <v.buberenko@gmail.com>
Date: Sat, 30 Mar 2024 13:15:16 +0200
Subject: [PATCH] refactor(device_info_plus): Migrate Android example to use
 the new plugins declaration

---
 .../example/android/app/build.gradle          | 19 ++++--------
 .../example/android/build.gradle              | 13 --------
 .../example/android/settings.gradle           | 30 ++++++++++++++-----
 3 files changed, 28 insertions(+), 34 deletions(-)

diff --git a/packages/device_info_plus/device_info_plus/example/android/app/build.gradle b/packages/device_info_plus/device_info_plus/example/android/app/build.gradle
index c1fe0aad7d..4d2cdcf215 100644
--- a/packages/device_info_plus/device_info_plus/example/android/app/build.gradle
+++ b/packages/device_info_plus/device_info_plus/example/android/app/build.gradle
@@ -1,3 +1,9 @@
+plugins {
+    id "com.android.application"
+    id "kotlin-android"
+    id "dev.flutter.flutter-gradle-plugin"
+}
+
 def localProperties = new Properties()
 def localPropertiesFile = rootProject.file('local.properties')
 if (localPropertiesFile.exists()) {
@@ -6,11 +12,6 @@ if (localPropertiesFile.exists()) {
     }
 }
 
-def flutterRoot = localProperties.getProperty('flutter.sdk')
-if (flutterRoot == null) {
-    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
-}
-
 def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
 if (flutterVersionCode == null) {
     flutterVersionCode = '1'
@@ -21,10 +22,6 @@ if (flutterVersionName == null) {
     flutterVersionName = '1.0'
 }
 
-apply plugin: 'com.android.application'
-apply plugin: 'kotlin-android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
-
 android {
     compileSdk 34
 
@@ -67,7 +64,3 @@ android {
 flutter {
     source '../..'
 }
-
-dependencies {
-    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
-}
diff --git a/packages/device_info_plus/device_info_plus/example/android/build.gradle b/packages/device_info_plus/device_info_plus/example/android/build.gradle
index 762233b702..bc157bd1a1 100644
--- a/packages/device_info_plus/device_info_plus/example/android/build.gradle
+++ b/packages/device_info_plus/device_info_plus/example/android/build.gradle
@@ -1,16 +1,3 @@
-buildscript {
-    ext.kotlin_version = '1.7.22'
-    repositories {
-        google()
-        mavenCentral()
-    }
-
-    dependencies {
-        classpath 'com.android.tools.build:gradle:8.3.0'
-        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
-    }
-}
-
 allprojects {
     repositories {
         google()
diff --git a/packages/device_info_plus/device_info_plus/example/android/settings.gradle b/packages/device_info_plus/device_info_plus/example/android/settings.gradle
index 44e62bcf06..5133de22fb 100644
--- a/packages/device_info_plus/device_info_plus/example/android/settings.gradle
+++ b/packages/device_info_plus/device_info_plus/example/android/settings.gradle
@@ -1,11 +1,25 @@
-include ':app'
+pluginManagement {
+    def flutterSdkPath = {
+        def properties = new Properties()
+        file("local.properties").withInputStream { properties.load(it) }
+        def flutterSdkPath = properties.getProperty("flutter.sdk")
+        assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+        return flutterSdkPath
+    }()
 
-def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
-def properties = new Properties()
+    includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
 
-assert localPropertiesFile.exists()
-localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+    repositories {
+        google()
+        mavenCentral()
+        gradlePluginPortal()
+    }
+}
 
-def flutterSdkPath = properties.getProperty("flutter.sdk")
-assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
-apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
+plugins {
+    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+    id "com.android.application" version "8.3.1" apply false
+    id "org.jetbrains.kotlin.android" version "1.7.22" apply false
+}
+
+include ":app"