ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 오래된 Flutter 프로젝트 버전 맞추기
    개발 공부/Flutter 2023. 12. 21. 14:48

     

    현재 Udemy Flutter 부트캠프 수강중인데... 너무 오래전 강의를 듣고있어서 벌써부터 난항이다.

     

    https://github.com/londonappbrewery/mi_card_flutter

     

    GitHub - londonappbrewery/mi_card_flutter: Starter code for the Mi Card Project from the Complete Flutter Development Bootcamp

    Starter code for the Mi Card Project from the Complete Flutter Development Bootcamp - GitHub - londonappbrewery/mi_card_flutter: Starter code for the Mi Card Project from the Complete Flutter Devel...

    github.com

     

    위의 프로젝트를 클론해서 빌드하려고 하는데 안되는게 많았어서 해결한 기록을 적어본다.

     


    의존성 맞추기

     

    - Error Message

    Resolving dependencies...
    The lower bound of "sdk: '>=2.1.0 <3.0.0'" must be 2.12.0'
    or higher to enable null safety.
    
    The current Dart SDK (3.2.3) only supports null safety.

     

    해당 오류는 Dart SDK 버전이 Null Safety를 지원하지 않아서 발생했음. 따라서 프로젝트의 Dart SDK 버전을 올려줘야함.

     

     

    - 해결

    environment:
      sdk: ">=2.12.0 <4.0.0"
      
    dependencies:
      flutter:
        sdk: flutter
        
      cupertino_icons: 1.0.6

     

    pubspec.yaml 파일의 environment 섹션 부분과 dependencies의 cupertino_icons을 변경

     

    이어서 빌드해보면 다른 모듈도 업데이트 시켜야한다.

    터미널에서 아래 커맨드 실행

    flutter pub add cupertino_icons:^1.0.6

     

     

     


     

    Gradle 버전 맞추기

     

    - Error Message

    Unsupported class file major version 61

     

     

    Gradle 버전과 java sdk 버전이 맞지 않아서 발생하는 문제다..

     

    해당 Gradle 버전이 Java SDK 버전의 어디까지를 지원하는지 알아야한다.

    아래 링크에 Gradle 버전이 지원하는 JAVA SDK 표가 나와있다. 해당 표가 나와있다.

    https://docs.gradle.org/current/userguide/compatibility.html

     

    Compatibility Matrix

    The sections below describe Gradle’s compatibility with several integrations. Versions not listed here may or may not work.

    docs.gradle.org

     

     

    - 해결

     

    Gradle 버전을 올려서 해결하고 싶었지만.. 삽질에 지쳐서 Gradle 버전에 맞춰서 Java 버전을 낮추는 방법으로 해결했다.

     

    1. 위의 표의 맞춰서 해당되는 Java SDK 설치

    2. JAVA_HOME 시스템 환경변수를 해당 Java SDK의 설치 경로로 설정

    3. gradle.properties 파일에 아래 내용 추가

    org.gradle.java.home=C:\\Program Files\\Java\\jdk-16.0.2

     

     


    안드로이드 버전 맞추기

     

    - Error Message

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app:checkDebugAarMetadata'.
    
    ...
    
    The minCompileSdk (31) specified in a
    dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
    is greater than this module's compileSdkVersion (android-29).

     

     

    - 해결

     

    프로젝트에서 설정한 compileSdkVersion의 의존성이 최소 요구사항보다 낮아서 올리기를 요청

    해당 에러가 뜨면 Flutter Fix로 어떻게 수정하면 될지 알려준다.

     

    1. android/app/build.gradle 파일 수정

    (android 폴더 바로 아래에도 build.gradle 파일이 있으니 유의..)

    android {
        compileSdkVersion 31
        ...
    }

     

     


    Android 12(API 레벨 31) 이상 대상 요구사항 맞추기

     

    - Error Message

    * What went wrong:
    Execution failed for task ':app:processDebugMainManifest'.
    > Manifest merger failed : android:exported needs to be explicitly specified for <activity>. Apps targeting Android 12 and higher are required to specify an explicit value for `android:exported` when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

     

     

    - 해결

     

    1. android/app/src/main/AndroidManifest.xml 파일을 열기

    2. <activity> 태그를 찾아 android:exported 속성을 추가하기

        <activity android:name=".MainActivity" android:exported="true">

     

     

     

     

     

     

    아 정말 맞추기 까다롭다.. 오류 메시지도 눈에 잘 안들어오고 😂

    근데 결국 이런것들이 실무에서 난항을 겪는 일 중 하나겠지;

    돌아가는 길이지만 훗날에 도움되려니....

    댓글

Designed by Tistory.