게시 고려사항

대부분의 Android 휴대전화에는 ARM 칩셋이 있습니다. 하지만 많은 ChromeOS 기기는 x86 칩을 사용합니다. Kotlin 또는 Java로 작성된 앱에서는 이 차이가 중요하지 않습니다. 그러나 게임 엔진으로 만든 앱을 비롯하여 Android NDK로 작성된 앱의 경우 기기의 칩셋이 중요한 문제가 될 수 있습니다.

Android NDK 코드가 있는 모든 앱은 네 가지 주요 Android ABI (Application Binary Interface) 즉, armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32), x86_64와 함께 제공되어야 합니다.

이렇게 하면 각 기기에서 최고의 성능을 구현하고 배터리 소모를 최소화할 수 있습니다. 예를 들어 cmake 기반 build.gradle 파일에는 다음이 포함될 수 있습니다.

externalNativeBuild {
  cmake {
    abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
  }
}

APK 크기

모놀리식 APK의 각 ABI는 크기를 늘립니다. 이는 사용자의 디스크 사용량, 앱 다운로드 크기에 영향을 줄 수 있으며 Play 스토어 크기 제한에 위배될 수 있습니다. 이를 방지하는 가장 좋은 방법은 Android App Bundle을 사용하는 것입니다. App Bundle을 사용하면 Android 스튜디오 내에서 4개의 ABI를 모두 쉽게 번들로 묶을 수 있지만 사용자의 다운로드 크기가 증가하지는 않습니다. 또한 Dynamic Delivery를 쉽게 활용할 수 있으므로 사용자는 요청 시에만 대용량 게임 콘텐츠를 다운로드할 수 있습니다. App Bundle을 사용할 수 없다면 유사한 동작을 위해 이전의 다중 APK를 사용할 수 있습니다.

32비트와 64비트 비교

모든 Android 앱은 64비트 빌드 버전을 제공해야 합니다. 32비트 빌드는 ARM 및 x86 기기 모두에서 선택사항입니다. 자세한 내용은 Android 64비트 문서를 참고하세요.

64비트 빌드만 제공하면 필요한 빌드 타겟 수와 테스트 표시 경로가 줄어들지만 게임을 실행할 수 있는 기기의 종류도 제한됩니다. 예를 들어 다른 하드웨어 제한으로 인해 많은 이전 Chromebook은 64비트 CPU가 있더라도 32비트 Android 앱만 실행할 수 있습니다. 앱이 이러한 기기에서 실행될 수 있도록 하려면 32비트 및 64비트 지원을 모두 포함해야 합니다.

참고: 신규 앱과 업데이트된 앱은 모두 64비트 앱 버전을 포함해야 합니다. Play 스토어에서 64비트를 처리할 수 있는 기기에 32비트 앱을 제공하지 않습니다. 많은 Chromebook에서 64비트를 지원하므로 ChromeOS에서 앱 사용자의 연속성을 보장하기 위해 가능한 한 빨리 64비트 버전을 포함하도록 앱을 업데이트하는 것이 좋습니다.

ARM 변환

x86 Chromebook은 가능할 때마다 ARM 코드를 변환하려고 합니다. 하지만 변환은 성능을 저하시키고 배터리 사용량을 증가시킵니다. 간단한 게임이라도 최상의 사용자 환경을 위해 x86 빌드를 제공하는 것이 좋습니다. x86 빌드를 제공할 수 없는 경우 일부 x86 Chromebook은 arm64 코드를 변환할 수 없습니다. 이 경우 빌드에 arm32 및 arm64 ABI를 모두 포함해야 합니다.

arm32 변환은 모든 Android 지원 Chromebook에서 제공되지만 모든 Chromebook이 arm64 코드를 변환할 수 있는 것은 아닙니다. 즉, 게임에 arm64 빌드 타겟만 있다면 다수의 ChromeOS 기기에서 게임을 사용할 수 없습니다. x86 바이너리를 제공할 수 없다면 빌드에 arm32 및 arm64 ABI를 모두 포함해야 합니다.

                                                                               
포함된 ABIChromeOS 지원

arm64

나쁨

arm32/arm64

좋음(변환 포함)

arm32/arm64/x86_32/x86_64

최고