Windows SDK의 각 릴리스는 활용할 수 있는 새로운 기능을 추가합니다. 그러나 모든 고객이 동시에 최신 버전의 Windows 디바이스를 업데이트하는 것은 아닙니다. 사용 가능한 경우 새로운 기능을 활용하면서 앱이 가능한 가장 광범위한 디바이스에서 작동하도록 할 수 있습니다.
사전 요구 사항
- Windows 앱 SDK 1.0 이상
- Windows 애플리케이션 개발 워크로드가 설치된 Visual Studio 2022 이상
Overview
다음 세 단계를 수행하여 가장 광범위한 Windows 디바이스를 지원합니다.
- 최신 API를 대상으로 Visual Studio 프로젝트를 구성합니다. 이는 컴파일러가 빌드 시 액세스할 수 있는 액세스 권한에 영향을 줍니다.
- 런타임 검사를 수행하여 앱이 실행되는 디바이스에 있는 API만 호출하는지 확인합니다.
- Windows 최소 버전 및 대상 버전에서 앱을 테스트합니다.
Visual Studio 프로젝트 구성
여러 Windows 버전을 지원하는 첫 번째 단계는 Visual Studio 프로젝트에서 대상 및 최소 지원 OS/SDK 버전을 지정하는 것입니다.
- 대상 - Visual Studio 앱 코드를 컴파일하는 SDK 버전입니다. 이 SDK 버전의 모든 API 및 리소스는 컴파일 시간에 앱 코드에서 사용할 수 있습니다.
- 최소 - 앱이 실행될 수 있는 가장 빠른 OS 버전을 지원하는 SDK 버전입니다.
런타임 동안 앱은 배포된 OS 버전에 대해 실행됩니다. 해당 버전에서 사용할 수 없는 API를 사용하는 경우 앱이 예외를 throw합니다. 이 문서의 뒷부분에 설명된 대로 런타임 검사를 사용하여 올바른 API를 호출합니다.
팁 (조언)
Visual Studio API 호환성에 대해 경고하지 않습니다. 최소 및 대상을 포함하여 앱이 모든 OS 버전에서 올바르게 작동하는지 테스트하고 확인하는 것은 사용자의 책임입니다.
Visual Studio 새 프로젝트를 만들 때 앱에서 지원하는 대상 및 최소 버전을 설정합니다. 기본적으로 대상 버전은 설치된 SDK 버전이 가장 높고 최소 버전은 설치된 SDK가 가장 낮습니다.
기존 project 대한 최소 및 대상 버전을 변경하려면 Project>프로퍼티>애플리케이션>대상 지정으로 이동합니다.
API 검사 수행
버전 적응 앱의 핵심은 API 계약과 ApiInformation 클래스의 조합입니다. 이 클래스를 사용하면 다양한 디바이스 및 OS 버전에서 API 호출을 안전하게 수행할 수 있도록 지정된 API 계약, 유형 또는 멤버가 있는지 여부를 감지할 수 있습니다.
API 계약
디바이스 패밀리 내의 API 집합은 API 계약이라고 하는 세분화로 구분됩니다. 이 메서드를 ApiInformation.IsApiContractPresent 사용하여 API 계약의 존재를 테스트합니다. 이 기능은 모두 동일한 버전의 API 계약에 존재하는 많은 API를 테스트하려는 경우에 유용합니다.
bool isScannerContractPresent =
Windows.Foundation.Metadata.ApiInformation.IsApiContractPresent(
"Windows.Devices.Scanners.ScannerDeviceContract", 1);
API 계약은 특정 기능을 함께 제공하는 관련 API 집합인 기능을 나타냅니다. API 계약에서 API를 구현하는 플랫폼은 해당 계약의 모든 API를 구현해야 합니다. 계약을 한 번 테스트한 다음 해당 API를 안전하게 호출합니다.
가장 크고 가장 일반적으로 사용되는 계약은 대부분의 Windows 런타임 API를 포함하는 계약입니다Windows.Foundation.UniversalApiContract. 사용 가능한 계약 목록은 디바이스 패밀리 확장 SDK 및 API 계약을 참조하세요.
버전 적응 코드 및 조건부 XAML
코드의 ApiInformation 조건에서 클래스를 사용하여 API를 호출하기 전에 API가 있는지 테스트합니다.
IsTypePresent, IsEventPresent, IsMethodPresent, IsPropertyPresent와 같은 메서드를 사용하면 필요한 수준의 세분성으로 테스트할 수 있습니다.
자세한 내용 및 예제는 버전 적응 코드를 참조하세요.
앱의 최소 버전이 빌드 17763(버전 1809) 이상인 경우 조건부 XAML 을 사용하여 속성을 설정하고 코드 숨김 없이 태그에서 개체를 인스턴스화할 수 있습니다. 조건부 XAML은 마크업에서 ApiInformation.IsApiContractPresent를 직접 사용할 수 있는 방법을 제공합니다.
자세한 내용 및 예제는 조건부 XAML을 참조하세요.
버전 적응 앱 테스트
버전 적응 코드 또는 조건부 XAML을 사용하는 경우 최소 버전을 실행하는 디바이스와 대상 버전의 Windows 실행하는 디바이스에서 앱을 테스트합니다.
단일 디바이스에서 모든 조건부 코드 경로를 테스트할 수는 없습니다. 지원되는 최소 OS 버전을 실행하는 원격 디바이스(또는 가상 머신)에서 앱을 배포하고 테스트하여 모든 코드 경로가 올바르게 작동하는지 확인합니다.
관련 콘텐츠
Windows developer