본문 바로가기
Flutter/Error

Flutter 3.16+에서 Deprecated Imperative Apply를 안전하게 교체하는 방법: 초보자를 위한 쉬운 가이드 [마이그레이션]

by Maccrey Coding 2024. 8. 25.
반응형

 

안녕하세요, Flutter 개발자 여러분! 오늘은 Flutter 3.16부터 추천되는 새로운 Gradle 플러그인 적용 방식에 대해 알아보겠습니다.

이전에는 Flutter의 Gradle 플러그인들을 적용할 때 imperative 방식으로 적용했지만, 이제는 Gradle의 declarative Plugin DSL을 사용하는 것이 권장됩니다.

이 가이드를 통해 여러분의 프로젝트를 새로운 방식으로 마이그레이션하는 방법을 쉽고 간단하게 설명해 드리겠습니다.

왜 Plugin DSL로 전환해야 할까요?

Imperative 방식은 오래된 방식으로, 유지보수와 확장이 어렵습니다.

Plugin DSL을 사용하면 코드가 더 직관적이고 관리하기 쉬워지며, Kotlin을 Gradle 스크립트에서 활용할 수 있는 기반을 마련해줍니다.

이렇게 전환하면 향후 Flutter와 Gradle의 새로운 기능을 더 쉽게 사용할 수 있습니다.

마이그레이션 단계별 가이드

1. Android Gradle Plugin(AGP)과 Kotlin 버전 확인

먼저, 기존 프로젝트의 Android Gradle Plugin과 Kotlin 버전을 확인해야 합니다.

보통 android/build.gradle 파일의 buildscript 블록에서 확인할 수 있습니다.

buildscript {
    ext.kotlin_version = '1.7.10'
    dependencies {
        classpath 'com.android.tools.build:gradle:7.3.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

여기서 kotlin_version과 gradle 버전을 확인하세요.

 

2. settings.gradle 파일 수정

settings.gradle 파일을 열고 아래와 같이 수정하세요.

여기서 {agpVersion}과 {kotlinVersion}을 앞서 확인한 값으로 교체하세요.

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 파일 수정

android/build.gradle 파일에서 buildscript 블록을 제거합니다.

// 제거할 부분
buildscript {
    ext.kotlin_version = '{kotlinVersion}'
    dependencies {
        classpath "org.jetbrains.kotlin:gradle-plugin:$kotlin_version"
    }
}

android/app/build.gradle 파일에서 기존 apply plugin 구문을 제거하고 새로운 방식으로 플러그인을 적용합니다.

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

 

4. Google Mobile Services 및 Crashlytics 마이그레이션 (선택 사항)

만약 Google Mobile Services나 Crashlytics를 사용 중이라면, 해당 플러그인들도 Plugin DSL로 전환해야 합니다.

settings.gradle 파일에 아래와 같은 플러그인 설정을 추가하세요.

plugins {
    id "com.google.gms.google-services" version "4.4.0" apply false
    id "com.google.firebase.crashlytics" version "2.9.9" apply false
}

그리고 android/app/build.gradle 파일에 다음과 같이 추가합니다.

plugins {
    id "com.google.gms.google-services"
    id "com.google.firebase.crashlytics"
}

 

5. 검증 및 실행

모든 변경을 마쳤다면, flutter run 명령어를 실행하여 앱이 정상적으로 빌드되고 실행되는지 확인합니다.

 

Flutter 3.16 이상 버전에서는 새로운 Plugin DSL 방식이 더욱 강력하고 관리하기 쉬운 방법으로 추천됩니다.

이번 가이드가 여러분의 프로젝트를 안전하게 마이그레이션하는 데 도움이 되었기를 바랍니다.

계속해서 Flutter의 최신 기능을 활용해보세요!

공감과 댓글은 저에게 큰 힘이 됩니다.

Starting Google Play App Distribution! "Tester Share" for Recruiting 20 Testers for a Closed Test.

 

Tester Share [테스터쉐어] - Google Play 앱

Tester Share로 Google Play 앱 등록을 단순화하세요.

play.google.com

 
반응형