티스토리 뷰
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
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