Найти тему
Тарасов

Обновление Flutter. Миграция gradle за 10 шагов.

Решил обновить один из старых проектов и при сборке версии для Андроид вижу ошибку с ссылкой в тексте https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply. И для статьи может и не было бы смысла. Но.... Я не смог сходу разобраться, поэтому решил разложить все немного подробнее.

Погнали.

1. Открываем файл /android/build.gradle и находим версию kotlin и версию gradle

-2

2. Открываем файл android/settings.gradle (я тоже удивился что такой файл есть) и просто вставляем текст ниже

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 }() includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") repositories { google() mavenCentral() gradlePluginPortal() } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "{agpVersion}" apply false id "org.jetbrains.kotlin.android" version "{kotlinVersion}" apply false } include ":app"

Можно скопировать по оригинальной ссылке, для простоты

3. Заменяем {agpVersion} на версию gradle из пункта 1

4. Заменяем {kotlinVersion} на версию kotlin из пункта 1

5. Открываем файл /android/build.gradle и удаляем все, что связано с buildScript

-3

6. Открываем файл /android/app/build.gradle и удаляем

-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.")
-}

-4

7. В том же файле комментируем применение плагинов

-apply plugin: 'com.android.application'
-apply plugin: 'com.jetbrains.kotlin.android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

-5

8. Теперь переписываем закоментированый кусок в новом формате

plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}

Важный момент! Кусок plugins должен быть в самом верху файла

-6

9. В этом же файле в блоке dependencies удаляем org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version (если есть)

-7

10. flutter run и выдыхаем