Android

[Android] ABI란? AAB빌드 시 ABI란? - Android Studio

곽코딩루카 2024. 10. 31. 11:55
반응형

우선 아래의 안드로이드 공식문서에도 ABI에 대해 자세하게 나와있다.
https://developer.android.com/ndk/guides/abis?hl=ko

 

Android ABI  |  Android NDK  |  Android Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Android ABI 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 다양한 Android 기기는 각기 다른 CPU를 사용하

developer.android.com

 

ABI, 또는 Application Binary Interface는 응용 프로그램이 기기 하드웨어 및 운영 체제와 상호작용하는 방식을 정의하는 규약입니다. ABI는 소프트웨어와 하드웨어 사이에서의 호환성을 보장하고, 코드가 특정 하드웨어에서 올바르게 실행될 수 있게 해줍니다. 명령어 집합, 데이터 타입 크기와 정렬 방식, 호출 규약 등이 포함됩니다. Android에서는 ABI에 따라 네이티브 라이브러리를 다르게 빌드해 특정 하드웨어 아키텍처와 운영 체제 버전에 맞춰 최적의 성능을 발휘하도록 지원합니다.

Android의 ABI와 관련된 아키텍처 종류

Android는 다양한 CPU 아키텍처를 지원하며, ABI는 각 아키텍처에 맞춰 네이티브 라이브러리가 동작할 수 있도록 해줍니다. 대표적인 ABI와 그 상세 설명은 다음과 같습니다.

  1. armeabi-v7a (32비트):
    • ARMv7 아키텍처를 기반으로 한 32비트 CPU용 ABI입니다.
    • NEON과 같은 SIMD(단일 명령, 다중 데이터) 명령어 지원이 포함되어 고성능 연산에 적합합니다.
    • 많은 중저가 Android 기기에서 지원되며, 과거에 널리 사용되었습니다.
    • 예시 CPU: Qualcomm Snapdragon 400, 410 등.
  2. arm64-v8a (64비트):
    • ARMv8 아키텍처를 기반으로 한 64비트 CPU용 ABI입니다.
    • 현재 많은 최신 Android 기기에서 이 ABI를 사용합니다. 향상된 메모리 접근 방식과 성능을 제공합니다.
    • 64비트로 동작하므로 메모리와 처리 속도가 최적화되어 고사양 작업에 적합합니다.
    • 예시 CPU: Qualcomm Snapdragon 845, 888 등 고성능 Snapdragon 시리즈와 같은 최신 모바일 칩셋.
    • 보통 우리가 갤럭시S 시리즈를 사용하니까 스냅드래곤 칩셋이 들어가는 S22 S23시리즈같은경우는 이에 해당한다.
  3. x86 (32비트):
    • Intel의 x86 아키텍처를 기반으로 하는 32비트 ABI로, Intel 기반 Android 기기에서 주로 사용됩니다.
    • 대부분의 Android 기기에서 많이 사용되지 않지만, Android 에뮬레이터에서 자주 사용됩니다.
    • 예시 CPU: Intel Atom 시리즈.
  4. x86_64 (64비트):
    • x86 아키텍처의 64비트 버전으로, 고성능 Intel 기반 기기에서 사용됩니다.
    • ARM과 다른 아키텍처 설계 덕분에 연산 성능이 높은 편이며, 주로 에뮬레이터와 일부 고성능 기기에서 사용됩니다.
    • 예시 CPU: Intel Core 시리즈가 탑재된 Android 기기나 고성능 Android 에뮬레이터.
  5. armeabi (구형 32비트):
    • ARMv5를 기반으로 한 32비트 ABI로, 주로 구형 저가형 기기에서 사용되었습니다.
    • NEON이나 SIMD 등의 최신 기술을 지원하지 않으며, 성능과 호환성 문제가 있어 거의 사용되지 않습니다.

AAB 빌드와 ABI 분할

AAB(Android App Bundle)로 빌드할 때, Google Play는 각 사용자의 기기 사양에 맞춘 ABI별 APK를 생성하여 다운로드할 수 있게 합니다. 이렇게 하면 최적화된 성능을 제공할 수 있으며, 사용하지 않는 ABI에 대한 라이브러리를 제외함으로써 APK 크기를 줄일 수 있습니다. 예를 들어, Snapdragon 888 기반의 ARM64 기기는 arm64-v8a ABI를 지원하므로, Google Play는 해당 기기에 맞춰 arm64-v8a 전용 APK를 생성합니다.

AAB를 사용하는 이점:

  • 다운로드 최적화: 기기별 맞춤 APK 제공으로, 불필요한 ABI 라이브러리 제거 및 용량 최적화.
  • 성능 최적화: 각 기기에 맞는 ABI 전용 라이브러리만 포함함으로써 시스템 자원 사용 최적화.

AAB로 빌드하면 기기에서 사용되지 않는 ABI용 라이브러리는 APK에서 제외되므로, 특정 ABI에서만 사용할 수 있는 네이티브 라이브러리가 존재할 경우 네이티브 라이브러리 경로를 기기와 연결된 ABI에 따라 동적으로 선택해야 합니다.




내 스마트폰은 어떤 아키텍처 기반일까?

삼성 갤럭시 S22, S23, S24는 최신 고성능 기기들이며, 기본적으로 ARM64-v8a ABI를 지원하는 64비트 아키텍처 기반입니다. 각 기기에 탑재된 SoC(System on Chip)는 다음과 같습니다.

갤럭시 S22 시리즈

  • 갤럭시 S22/S22+/S22 Ultra는 지역에 따라 Qualcomm Snapdragon 8 Gen 1 또는 Samsung Exynos 2200 칩셋을 탑재합니다.
    • Snapdragon 8 Gen 1은 ARM의 Cortex-X2, Cortex-A710, Cortex-A510 코어 기반이며, ARM64-v8a를 지원합니다.
    • Exynos 2200 역시 Cortex-X2, Cortex-A710, Cortex-A510 코어로 구성된 ARM64 아키텍처입니다.
  • ABI: arm64-v8a

갤럭시 S23 시리즈

  • 갤럭시 S23/S23+/S23 Ultra는 모든 지역에서 Qualcomm Snapdragon 8 Gen 2 칩셋으로 통일되었습니다.
    • 이 SoC 역시 ARM Cortex 코어를 사용한 ARM64 아키텍처 기반이며, 높은 성능과 전력 효율성을 제공합니다.
  • ABI: arm64-v8a

갤럭시 S24 시리즈

  • 갤럭시 S24/S24+/S24 UltraSnapdragon 8 Gen 3와 일부 지역에서 Exynos 2400 칩셋이 사용됩니다.
    • Snapdragon 8 Gen 3은 ARMv9 아키텍처 기반의 ARM64 아키텍처를 사용하며, 고급 연산을 위한 추가 명령어 세트를 포함하고 있습니다.
    • Exynos 2400 또한 최신 ARM 코어를 기반으로 ARM64 아키텍처를 지원하며, 한국 및 일부 유럽 국가에서 주로 출시됩니다.
  • ABI: arm64-v8a

요약

갤럭시 S22부터 S24까지 모두 ARM64-v8a ABI를 지원하며, Snapdragon과 Exynos 칩셋이 공통적으로 ARM64 아키텍처를 기반으로 하고 있어 고성능 64비트 네이티브 라이브러리를 사용할 수 있습니다.

반응형