Computer >> 컴퓨터 >  >> 시스템 >> Android

Flutter 튜토리얼:최신 V2 Android 임베딩으로 앱 마이그레이션

Flutter 튜토리얼:최신 V2 Android 임베딩으로 앱 마이그레이션

초기에 Flutter의 편에 섰다면 Flutter 버전 1.12 이전에 생성된 프로젝트가 한두 개 있을 가능성이 높습니다. 그렇다면 프로젝트 중 하나에서 Pub get을 실행할 때마다 다음 메시지를 보았을 것입니다:

이 앱은 더 이상 사용되지 않는 Android 임베딩 버전을 사용하고 있습니다.
예상치 못한 런타임 오류 또는 향후 빌드 오류를 방지하려면 이 앱을 V2 임베딩으로 마이그레이션해 보세요.

앱 마이그레이션에 대한 문서를 살펴보세요:https://github.com/flutter/flutter/wiki/Upgrading-pre-1.12-Android-projects

이제 문서 자체에는 이 경고를 사라지게 하기 위해 따라야 할 단계가 있지만 무엇을, 어디서 변경해야 하는지 항상 명확하게 설명하지는 않습니다.

이 문서에서는 Flutter 애플리케이션을 V2 Embedding으로 마이그레이션하여 해당 경고를 완전히 없앨 수 있는 단계별 안내를 제공합니다.

자동 마이그레이션 – 손쉬운 방법

애플리케이션을 쉽게 다시 만들 수 있다면 이 마이그레이션 프로세스를 생략할 수 있습니다. 그럼 그게 무슨 뜻인가요?

애플리케이션의 코드가 복잡하지 않다면 lib 폴더에 파일을 저장하고 flutter create를 사용하여 새 프로젝트를 만들 수 있습니다. . 이렇게 하면 이미 V2 Embedding으로 마이그레이션된 프로젝트가 있게 되며 lib 폴더에 있는 코드를 복사하여 붙여넣기만 하면 됩니다.

그러나 프로젝트가 더 복잡하다면(플랫폼별 코드가 포함된 패키지라고 가정) 수동으로 마이그레이션하는 것이 더 나을 것입니다.

수동 마이그레이션 – 다음 단계를 따르세요

  1. MainActivity 열기 애플리케이션의 .kt(또는 .java) 파일
  2. 이 파일에 있는 모든 콘텐츠를 제거하고 클래스 선언으로 그대로 두어야 합니다(특정 논리가 없는 경우).
  3. 모든 가져오기를 제거하고 다음과 같은 하나의 가져오기가 있는지 확인하세요.
import io.flutter.embedding.android.FlutterActivity;

최종 결과는 다음과 같습니다:

import io.flutter.embedding.android.FlutterActivity;
public class MainActivity extends FlutterActivity { 
 // Nothing should be here
}
  1. AndroidManifest.xml 파일을 열고 애플리케이션 태그 아래의 이름 속성을 ${applicationName}으로 변경합니다. – 그래서 다음과 같습니다:
<application 
 android:name="${applicationName}"> 
 .... 
</application>
  1. 애플리케이션 태그 내에 다음 메타데이터를 추가해야 합니다.
<meta-data 
 android:name="flutterEmbedding" 
 android:value="2" />
  1. 특정 스플래시 화면 동작을 원하는 경우 스플래시 화면 메타 태그를 제거해야 합니다.
<meta-data android:name="io.flutter.app.android.SplashScreenUntilFirstFrame" android:value="true" />
  1. 그런 다음 styles.xml 파일로 이동하여 원하는 드로어블로 LaunchTheme를 구성하십시오.
<?xml version="1.0" encoding="utf-8"?>
<resources> 
 <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background
 </item> 
 </style>
</resources>

위의 모든 변경 사항을 적용하면 AndroidManifest.xml이 다음과 같이 표시됩니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="PACKAGE_NAME">
<application 
 android:name="${applicationName}" 
 android:label="APPLICATION_LABEL" 
 android:icon="@mipmap/ic_launcher"> 
 <activity 
 android:name=".MainActivity"
 android:exported="true" 
 android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> 
 <intent-filter> 
 <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> 
 </intent-filter> 
 </activity> 
 <meta-data 
 android:name="flutterEmbedding" 
 android:value="2" /> 
 </application>
</manifest>

AndroidX 지원

이전 지원 라이브러리 대신 AndroidX 라이브러리를 사용하려면 프로젝트를 마이그레이션해야 할 수도 있습니다. 애플리케이션을 구축하고 실행할 때 이에 대한 알림을 받게 됩니다:

귀하의 앱은 AndroidX를 사용하지 않습니다. 잠재적인 빌드 실패를 방지하려면 https://goo.gl/CP92wY의 단계에 따라 앱을 빠르게 마이그레이션할 수 있습니다.

Android Studio에는 AndroidX로의 마이그레이션 지원 기능이 내장되어 있으므로 이 문제를 해결하는 것은 다소 간단합니다.

Flutter 애플리케이션의 Android 폴더를 독립형 프로젝트로 열어 시작하세요

리팩터링 → AndroidX로 마이그레이션을 클릭하세요:

Flutter 튜토리얼:최신 V2 Android 임베딩으로 앱 마이그레이션 AndroidX로 마이그레이션하기 위한 드롭다운 메뉴

그런 다음 프로젝트 사본을 저장하라는 메시지가 표시되고 그 이후에는 마이그레이션 프로세스가 진행됩니다.

볼 수 있는 오류

이 마이그레이션 프로세스 중에 애플리케이션을 빌드할 때 몇 가지 오류가 발생할 수 있습니다. 가장 눈에 띄는 것은 다음과 같습니다:

  • 변경 가능한 Windows 환경 변수 맵을 가져올 수 없습니다
  • cvc-complex-type.2.4.a:'base-extension' 요소로 시작하는 잘못된 콘텐츠가 발견되었습니다. '{layoutlib}' 중 하나가 필요합니다
  • 경고:이 버전은 SDK XML 버전 2까지만 이해하지만 버전 3의 SDK XML 파일이 발견되었습니다. 이는 Android Studio 버전과 다른 시기에 출시된 명령줄 도구를 사용하는 경우 발생할 수 있습니다.

처음 두 오류는 서로 관련되어 있으며 둘 다 동일한 근본 원인에서 비롯됩니다. 프로젝트가 이전 Gradle 버전으로 설정되어 있어 업그레이드가 필요하기 때문입니다.

그렇게 하려면 다음 단계를 따르십시오:

  1. Flutter 애플리케이션에서 Android 폴더를 독립형 프로젝트로 엽니다.
  2. 파일 → 프로젝트 구조를 클릭하세요:

Flutter 튜토리얼:최신 V2 Android 임베딩으로 앱 마이그레이션 프로젝트 구조를 선택하는 드롭다운 메뉴

  1. Gradle 버전을 현재 사용 중인 Android Studio 버전과 일치하는 최신 버전으로 변경하세요.

Flutter 튜토리얼:최신 V2 Android 임베딩으로 앱 마이그레이션 AGP 및 Gradle 설정 화면

도구 →AGP 업그레이드 도우미로 이동하여 AGP 업그레이드 도우미를 사용하여 이 작업을 수행할 수도 있습니다.

Flutter 튜토리얼:최신 V2 Android 임베딩으로 앱 마이그레이션 AGP 업그레이드 도우미를 사용하여 AGP를 업그레이드하기 위한 드롭다운 메뉴

경고인 세 번째 문제는 이전 버전의 Android SDK 도구를 사용하여 발생할 수 있습니다. 그 방법을 알아보려면 여기로 이동하세요.

이제 프로젝트가 완전히 마이그레이션되어 원활하게 컴파일 및 실행될 것입니다.

제가 작성한 다른 기사를 읽고 싶으시면 여기에서 확인하실 수 있습니다:

무료로 코딩을 배우세요. freeCodeCamp의 오픈 소스 커리큘럼은 40,000명 이상의 사람들이 개발자로 취업하는 데 도움을 주었습니다. 시작하세요