티스토리 뷰
You are applying Flutter's app_plugin_loader Gradle plugin imperatively using the apply script method, which is deprecated and will be removed in a future release 처리하기
순진이 2024. 6. 13. 17:17Flutter를 3.22.2로 업그레이드 했더니, 아래와 같은 메시지가 발생!
You are applying Flutter's app_plugin_loader Gradle plugin imperatively using the apply script method, which is deprecated and will be removed in a future release. Migrate to applying Gradle plugins with the declarative plugins block: https://flutter.dev/go/flutter-gradle-plugin-apply
메시지에서 안내해준 링크로 가보니 내용이 아래와 같음
- 과거 방식 (Flutter 3.16 이전):
- Gradle의 기존 명령어 방식 (apply script)을 사용하여 플러그인 적용.
- 이 방식은 더 이상 권장되지 않습니다.
- 현재 방식 (Flutter 3.16부터):
- Gradle의 선언적 플러그인 블록 (plugins {}) 을 사용하여 플러그인 적용.
- 이 방식이 현재 권장되는 방식입니다.
- flutter create 명령어로 생성된 프로젝트는 기본적으로 이 방식을 사용합니다.
- Flutter 3.16 이전 버전으로 생성된 프로젝트는 수동으로 이전해야 합니다.
나는 3.16 버전 이전에 생성한 프로젝트라 수동으로 이전하는 작업이 필요함!
안내된 대로 플러그인 블록을 심어보겠음
링크 ⬇️
https://flutter.dev/go/flutter-gradle-plugin-apply
Deprecated imperative apply of Flutter's Gradle plugins
How to migrate your Flutter app's Android Gradle build files to the new, declarative format.
docs.flutter.dev
1. AGP(Android Gradle Plugin)과 코틀린 버전 알아오기
위치 : <app-src>/android/build.gradle
여기서 AGP 버전은 7.3.0이고, 코틀린 버전은 1.7.10임.
이걸 기억해두고
buildscript {
///⭐️코틀린 버전
ext.kotlin_version = '1.7.10'
repositories {
google()
mavenCentral()
}
dependencies {
///⭐️AGP 버전
classpath 'com.android.tools.build:gradle:7.3.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
2. setting.gradle 셋팅 변경하기
위치 : <app-src>/android/settings.gradle
위에서 외워온 버전을 Plugin 문법에 잘 넣어주기
{appVersion} = 7.3.0
{kotlinVersion} = 1.7.10
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. build.gradle에서 build script 지우기
위치: <app-src/android/build.gradle
아래 부분을 전부 지워줌
-buildscript {
- ext.kotlin_version = '{kotlinVersion}'
- repositories {
- google()
- mavenCentral()
- }
-
- dependencies {
- classpath "org.jetbrains.kotlin:gradle-plugin:$kotlin_version"
- }
-}
그러면 android>build.gradle에 남는 부분은 이것 뿐임
allprojects {
repositories {
google()
mavenCentral()
}
}
rootProject.buildDir = '../build'
subprojects {
project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
project.evaluationDependsOn(':app')
}
tasks.register("clean", Delete) {
delete rootProject.buildDir
}
4. 레거시 적용된 코드 제거하기
위치 : <app-src>/android/app/build.gradle
지울 부분
//1
-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.")
-}
//2
-apply plugin: 'com.android.application'
-apply plugin: 'com.jetbrains.kotlin.android'
-apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
그리고 이제 Plugin DSL 문법을 통해 다시 적어줌. 맨위에!!
plugins {
id "com.android.application"
id "kotlin-android"
id "dev.flutter.flutter-gradle-plugin"
}
5. dependency 부분에서 제거하기
위치 : <app-src>/android/app/build.gradle
만약 dependencis {} 부분에 "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 내용이 있다면 이것도 지워주기
dependencies {
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}
6. 구글 처리하기
만약 구글 서비스를 이용중이라면 아래와 같이 기존 내용을 지우고 plugin 안에 추가해주면 됨!
1) 지울 곳 : 2곳
위치1 : <app-src>/android/build.gradle
💡 이 때 버전 외워두기
google-services = 4.4.0
firebase-crashlytics = 2.9.9
buildscript {
// ...
dependencies {
// ...
- classpath "com.google.gms:google-services:4.4.0"
- classpath "com.google.firebase:firebase-crashlytics-gradle:2.9.9"
}
}
위치2 : <app-src>/android/app/build.gradle
-apply plugin: 'com.google.gms.google-services'
-apply plugin: 'com.google.firebase.crashlytics'
2) 추가할 곳 : 2곳
위치1 : <app-src>/android/settings.gradle
💡외워둔 버전은 여기다가 쓰기
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
+ id "com.google.gms.google-services" version "4.4.0" apply false
+ id "com.google.firebase.crashlytics" version "2.9.9" apply false
}
위치2 : <app-src>/android/app/build.gradle
plugins {
id "com.android.application"
id "dev.flutter.flutter-gradle-plugin"
id "org.jetbrains.kotlin.android"
+ id "com.google.gms.google-services"
+ id "com.google.firebase.crashlytics"
}
이제 flutter run을 통해 앱이 잘 빌드되고 실행되는지 확인하면 됨!
'Flutter' 카테고리의 다른 글
WillPopScope가 deprecated 건에 대하여 (1) | 2024.06.17 |
---|---|
Navigator.pushNamed route에서 데이터 넘기고 받기 (1) | 2024.06.14 |
[Flutter] push, pop 화면 전환하며 데이터 넘겨 받는 방법 (1) | 2024.06.12 |
[Flutter] Flutter M1에서 셋팅하기 (0) | 2023.08.21 |
3. flutter에 이미지와 폰트 추가하기 (vscode) (0) | 2023.04.28 |
- Total
- Today
- Yesterday