CPU 아키텍처

Xamarin.Android는 32비트 및 64비트 디바이스를 비롯한 여러 CPU 아키텍처를 지원합니다. 이 문서에서는 하나 이상의 Android 지원 CPU 아키텍처에 앱을 대상으로 지정하는 방법을 설명합니다.

CPU 아키텍처 개요

릴리스를 위해 앱을 준비할 때 앱에서 지원하는 플랫폼 CPU 아키텍처를 지정해야 합니다. 단일 APK가 여러 서로 다른 아키텍처를 지원하는 머신 코드를 포함할 수 잇습니다. 아키텍처별 코드의 각 컬렉션은 ABI( 애플리케이션 이진 인터페이스 )와 연결됩니다. 각 ABI는 이 머신 코드가 런타임에 Android와 상호 작용하는 방법을 정의합니다. 이 작동 방식에 대한 자세한 내용은 Multi-Core 디바이스 & Xamarin.Android를 참조하세요.

지원되는 아키텍처를 지정하는 방법

일반적으로 앱이 릴리스용으로 구성된 경우 아키텍처(또는 아키텍처)를 명시적으로 선택합니다. 앱이 디버그용으로 구성된 경우 공유 런타임 사용빠른 배포 사용 옵션이 활성화되어 명시적 아키텍처 선택을 사용하지 않도록 설정합니다.

Visual Studio 솔루션 탐색기 아래에서 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. Android 옵션 페이지에서 패키징 속성 섹션을 확인하고 공유 런타임 사용이 비활성화되어 있는지 확인합니다(이 기능을 해제하면 지원할 API를 명시적으로 선택할 수 있습니다). 고급 단추를 클릭하고 지원되는 아키텍처에서 지원하려는 아키텍처를 확인합니다.

Selecting armeabi and armeabi-v7a

Xamarin.Android는 다음과 같은 아키텍처를 지원합니다.

  • armeabi – ARMv5TE 명령 집합 이상을 지원하는 ARM 기반 CPU입니다. armeabi 스레드로부터 안전하지 않으며 다중 CPU 디바이스에서 사용해서는 안 됩니다.

참고

Xamarin.Android 9.2부터는 armeabi가 더이상 지원되지 않습니다.

  • armeabi-v7a – 하드웨어 부동 소수점 작업 및 여러 CPU(SMP) 디바이스가 있는 ARM 기반 CPU입니다. 머신 코드는 armeabi-v7a ARMv5 디바이스에서 실행되지 않습니다.

  • arm64-v8a – 64비트 ARMv8 아키텍처를 기반으로 하는 CPU입니다.

  • x86 – x86 (또는 IA-32) 명령 집합을 지원하는 CPU입니다. 이 명령 집합은 MMX, SSE, SSE2 및 SSE3 지침을 포함하여 펜티엄 Pro 것과 동일합니다.

  • x86_64 64비트 x86(x64 및 AMD64라고도 함) 명령 집합을 지원하는 CPU입니다.

Xamarin.Android는 릴리스 빌드의 armeabi-v7a 기본값입니다. 이 설정은 armeabi. 64비트 ARM 플랫폼(예: Nexus 9)을 대상으로 하는 경우 선택합니다 arm64-v8a. x86 디바이스에 앱을 배포하는 경우 를 선택합니다 x86. 대상 x86 디바이스에서 64비트 CPU 아키텍처를 사용하는 경우 선택합니다 x86_64.

여러 플랫폼 대상 지정

여러 CPU 아키텍처를 대상으로 지정하려면 둘 이상의 ABI를 선택할 수 있습니다(APK 파일 크기가 클 경우). 선택한 ABI 옵션(패키징 속성 설정에 설명됨)당 하나의 패키지 생성(.apk)을 사용하여 지원되는 각 아키텍처에 대해 별도의 APK를 만들 수 있습니다.

arm64-v8a 또는 x86_64 선택하여 64비트 디바이스를 대상으로 지정할 필요는 없습니다. 64비트 하드웨어에서 앱을 실행하려면 64비트 지원이 필요하지 않습니다. 예를 들어 64비트 ARM 디바이스(예: Nexus 9)는 구성된 armeabi-v7a앱을 실행할 수 있습니다. 64비트 지원을 사용하도록 설정하는 주요 이점은 앱이 더 많은 메모리를 처리할 수 있도록 하는 것입니다.

참고

2018년 8월부터 새 앱은 API 레벨 26을 대상으로 해야 하고, 2019년 8월부터 앱은 32비트 버전 외에 ‘64비트 버전을 제공’해야 합니다.

추가 정보

경우에 따라 각 아키텍처에 대해 별도의 APK를 만들어야 할 수 있습니다(APK 크기를 줄이려면 또는 앱에 특정 CPU 아키텍처와 관련된 공유 라이브러리가 있기 때문). 이 방법에 대한 자세한 내용은 빌드 ABI-Specific APK를 참조하세요.