티스토리 뷰

반응형

이전에 만들었던 플러터 앱을 실행하니 다음과 같은 경고문이 나타났다.

Running Gradle task 'assembleDebug'...

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

You are applying Flutter's main 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

 

플러터 3.16 이전에는 apply 스크립트를 사용하여 Gradle 플러그인을 적용하는 방식이었지만, 이제 플러그인 방식을 사용하라는 내용이다.

 

기존 apply 방식

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'

 

새로운 플러그인 방식

plugins {
    id 'com.android.application'
    id 'kotlin-android'
    id 'com.google.gms.google-services'
}

 

 

이를 해결하기 위해서는 수동으로 마이그레이션을 해야 한다.

 

 

 

1. android / settings.gradle 수정하기

먼저, 현재 프로젝트에서 사용 중인 안드로이드 그래들 플러그인과 코틀린 버전을 찾아야 한다. 이 값은 android / build.gradle 파일에서 확인할 수 있다. 

 

buildscript {
    ext.kotlin_version = '1.7.10'
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        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
}

 

안드로이드 그래들 플러그인 버전은 classpath 'com.android.tools.build:gradle:7.3.0'에 나와 있는 7.3.0이 된다. 그리고 코틀린 버전은 ext.kotlin_version = '1.7.10'에 나와 있는 1.7.10이 된다.

 

다음으로 android / settings.gradle 파일의 내용을 아래 내용으로 교체하고, {agVersion}과 {kotlinVeersion}을 앞에

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 "{안드로이드 그래들 플러그인 버전}" apply false
    id "org.jetbrains.kotlin.android" version "{코틀린 버전}" apply false
}

include ":app"

 

 

 

2. android / build.gradle 수정하기

android / build.gradle 에서 buildscript 블록을 제거한다. 그러면 보통 아래와 같이 수정될 것이다.

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
}

 

 

 

3. android / app / build.gradle 수정하기

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.")
}
apply plugin: 'com.android.application'
apply plugin: 'com.jetbrains.kotlin.android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

 

파일의 최상단에 다음을 추가한다.

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

 

그리고 파일에서 dependenies 블록에 "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"에 대한 종속성이 포함되어 있는 경우, 해당 종속성을 제거하자. 만약 이것이 유일한 종속성이라면 블록을 완전히 제거해도 된다.

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
}

 

 

 

검증하기

모든 수정이 끝이 났다. 이제 경고 문구가 없이 앱이 잘 실행되는지 확인해 보자! 끝

반응형
댓글
공지사항