앱을 5.0으로 마이그레이션할 어떻게 할까요? Xamarin.Forms 있나요?
Xamarin.Forms 5.0에는 다음과 같은 주요 변경 내용이 포함됩니다.
Expander
은 Xamarin 커뮤니티 도구 키트로 이동했습니다. 자세한 내용은 .에서 Xamarin.Forms이동된 기능을 참조하세요.MediaElement
은 Xamarin 커뮤니티 도구 키트로 이동했습니다. 자세한 내용은 .에서 Xamarin.Forms이동된 기능을 참조하세요.- DataPages 및 관련 프로젝트가 .에서 Xamarin.Forms제거되었습니다.
MasterDetailPage
의 이름이FlyoutPage
로 바뀌었습니다. 마찬가지로 열거형의MasterBehavior
이름이 .로FlyoutLayoutBehavior
변경되었습니다.UIWebView
iOS에서 Xamarin.Forms 제거된 참조입니다.- Visual Studio 2017에 대한 지원이 제거되었습니다.
- XFCorePostProcessor.Tasks가 제거되었습니다. 이 프로젝트는 2.5 호환성을 기본 Xamarin.Forms 위해 IL을 삽입했습니다.
또한 5.0으로 Xamarin.Forms 빌드된 Android 및 UWP 프로젝트에는 업데이트가 필요합니다.
Important
애플리케이션을 5.0으로 업데이트할 Xamarin.Forms 때 NuGet 패키지를 참조 Xamarin.Forms 하는 각 프로젝트를 동일한 버전으로 업데이트해야 합니다.
Android
5.0으로 Xamarin.Forms 빌드된 Android 프로젝트에는 개발 환경에 AndroidX(Android 10.0) 플랫폼을 설치해야 합니다. 이 작업은 Android SDK 관리자를 사용하여 수행할 수 있습니다. AndroidX에 대한 자세한 내용은 AndroidX 마이그레이션을 참조 하세요 Xamarin.Forms.
그런 다음 Android 프로젝트를 올바르게 빌드하려면 몇 가지 업데이트가 필요합니다.
최소 TargetFrameworkVersion
Xamarin.Forms 5.0에는 Android 프로젝트에 대한 최소 대상 프레임워크 버전 10.0(AndroidX)이 필요합니다. 대상 프레임워크 버전은 Visual Studio 또는 Android .csproj 파일에서 설정할 수 있습니다.
<TargetFrameworkVersion>v10.0</TargetFrameworkVersion>
이 최소 요구 사항이 충족되지 않으면 빌드 오류가 생성됩니다.
error XF005: The $(TargetFrameworkVersion) for MyProject.Android (v9.0) is less than the minimum required $(TargetFrameworkVersion) for Xamarin.Forms (10.0). You need to increase the $(TargetFrameworkVersion) for MyProject.Android.
최소 TargetSDKVersion
AndroidX를 사용하려면 Android 매니페스트가 targetSdkVersion
29+로 설정해야 합니다.
<uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
이 targetSdkVersion
작업을 수행하지 않으면 .로 설정 minSdkVersion
됩니다. 또한 일부 상황에서 Android.Views.InflateException
는 올바르게 설정되지 않은 경우 targetSdkVersion
생성됩니다.
Android.View.InflateException has been thrown.
Binary XML file line #1 in com.companyname.myproject:layout/toolbar: Binary XML file line #1 in com.companyname.myproject:/layout/toolbar: Error inflating class android.support.v7.widget.Toolbar
참고 항목
Visual Studio 2019에서는 대상 프레임워크 버전이 v10.0으로 targetSdkVersion
설정된 경우 API 29를 지정하도록 Android 매니페스트가 자동으로 업데이트됩니다.
AndroidX로 자동 마이그레이션
Android 프로젝트에서 직접 종속성 또는 전이적 종속성으로 Android 지원 라이브러리를 참조하는 경우 이러한 지원 라이브러리 종속성 및 바인딩은 빌드 프로세스 중에 AndroidX 종속성과 자동으로 교환됩니다. 자동 AndroidX 마이그레이션에 대한 자세한 내용은 다음에서 자동 마이그레이션을 Xamarin.Forms참조하세요.
AndroidX로 수동 마이그레이션
Android 프로젝트에 Android 지원 라이브러리에 대한 직접 또는 전이적 종속성이 없지만 코드를 통해 지원 라이브러리 형식을 계속 사용하려는 경우 앱을 AndroidX로 수동으로 마이그레이션해야 합니다. AndroidX 형식을 사용하고 사용자 지정하지 않은 AXML 파일을 제거하여 이 작업을 수행할 수 있습니다.
팁
AndroidX로 수동 마이그레이션하면 앱의 빌드 프로세스가 가장 빠릅니다.
AndroidX 형식 사용
AndroidX는 Android 지원 라이브러리를 대체하므로 Android 지원 라이브러리 형식에 대한 모든 참조를 AndroidX 형식에 대한 참조로 바꿔야 합니다.
이 작업은 네임스페이스가 아닌 Android.Support
네임스페이스를 사용하도록 AndroidX
문을 업데이트 using
하여 수행할 수 있습니다. 다음 표에서는 Android 지원 라이브러리에서 AndroidX로 이동할 때 일반적인 네임스페이스 변경 내용 중 일부를 나열합니다.
Android 지원 라이브러리 네임스페이스 | AndroidX 네임스페이스 |
---|---|
Android.Support.V4.App |
AndroidX.Core.App |
Android.Support.V4.Content |
AndroidX.Core.Content |
Android.Support.V4.App |
AndroidX.Fragment.App |
Android.Support.V7.App |
AndroidX.AppCompat.App |
Android.Support.V7.Widget |
AndroidX.AppCompat.Widget |
지원 라이브러리에서 AndroidX로의 클래스 매핑의 전체 목록은 github.com AndroidX 클래스 매핑을 참조하세요. 지원 라이브러리에서 AndroidX로의 어셈블리 매핑의 전체 목록은 github.com AndroidX 어셈블리를 참조하세요.
AXML 파일 제거
사용자 지정된 AXML 파일을 사용하지 않는 경우 Android 프로젝트에서 AXML 파일을 삭제해야 합니다. 삭제 후 클래스에서 MainActivity
다음 줄을 제거해야 합니다.
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
Important
이러한 파일이 AndroidX 형식을 사용하도록 사용자 지정된 AXML 파일이 있는 Android 프로젝트를 업데이트해야 합니다.
UWP
Xamarin.Forms 5.0은 UWP 프로젝트의 대상 플랫폼 버전 >= 10.0.18362.0을 권장합니다. 대상 플랫폼 버전은 Visual Studio 또는 UWP .csproj 파일에서 설정할 수 있습니다.
<TargetPlatformVersion Condition=" '$(TargetPlatformVersion)' == '' ">10.0.18362.0</TargetPlatformVersion>
UWP 프로젝트에서 더 낮은 대상 플랫폼 버전을 사용하는 경우 빌드 경고가 생성됩니다.