기기 타겟팅 (베타)

기기 타겟팅을 사용하면 특정 기기에 전송되는 App Bundle의 부분을 더 세부적으로 제어할 수 있습니다. 예를 들어 대용량 애셋을 RAM이 많은 기기에만 전송하거나 기기에 따라 애셋의 여러 버전을 전송할 수 있습니다.

다음과 같은 기기 속성을 타겟팅할 수 있습니다.

  • 기기 모델
  • 기기 RAM
  • 시스템 기능
  • SoC (API 수준이 31 이상인 기기의 경우)

필수 단계 개요

기기 타겟팅을 사용 설정하려면 다음 단계를 따르세요.

  1. XML 파일에서 기기 그룹을 정의합니다.
  2. 번들의 어떤 부분이 어떤 기기 그룹으로 이동해야 하는지 지정합니다.
  3. [선택사항] 로컬에서 구성을 테스트합니다.
  4. XML 파일이 포함된 번들을 Google Play에 업로드합니다.

Android Gradle 플러그인 버전 확인

기기 타겟팅을 사용하려면 Android Gradle 플러그인 (AGP) 버전이 8.10.0-alpha01 이상인지 확인하세요. 이 도구는 Android 스튜디오 Meerkat 2 이상과 함께 패키징됩니다.

Android Gradle 플러그인에서 기기 타겟팅 사용 설정

gradle.properties 파일에서 기기 타겟팅을 명시적으로 사용 설정해야 합니다.

android.experimental.enableDeviceTargetingConfigApi=true

기기 타겟팅 구성 XML 파일 만들기

기기 타겟팅 구성 파일은 맞춤 기기 그룹을 정의하는 XML 파일입니다. 예를 들어 RAM이 8GB 이상인 모든 기기가 포함된 high_ram라는 기기 그룹을 정의할 수 있습니다.

<config:device-targeting-config
    xmlns:config="http://schemas.android.com/apk/config">

    <config:device-group name="high_ram">
        <config:device-selector ram-min-bytes="8000000000"/>
    </config:device-group>

</config:device-targeting-config>

기기 그룹은 최대 5개의 기기 선택기로 구성됩니다. 기기가 기기 선택기 중 하나를 충족하는 경우 기기 그룹에 포함됩니다.

기기 선택기에는 하나 이상의 기기 속성이 있을 수 있습니다. 기기가 선택기의 모든 기기 속성과 일치하면 선택됩니다.

사용 가능한 기기 속성

  • device_ram: 기기 RAM 요구사항
    • min_bytes (양 끝값 포함): 필요한 최소 RAM (바이트)
    • max_bytes (제외): 필요한 최대 RAM (바이트)
  • included_device_ids: 이 선택기에 포함할 기기 모델(그룹당 최대 1만 개 device_ids). 기기가 목록의 device_id와 일치하면 이 속성이 충족됩니다.
    • build_brand: 기기 제조업체
    • build_device: 기기 모델 코드
  • excluded_device_ids: 이 선택기에서 제외할 기기 모델(그룹당 최대 1만 개 device_ids). 기기가 목록의 device_id와 일치하지 않으면 이 속성이 충족됩니다.
    • build_brand: 기기 제조업체
    • build_device: 기기 모델 코드
  • required_system_features: 이 선택기에 포함되기 위해 기기에 필요한 기능(그룹당 최대 100개 기능). 이 속성을 충족하려면 기기에 이 목록의 모든 시스템 기능이 있어야 합니다.

    시스템 기능 참조

    • name: 시스템 기능
  • forbidden_system_features: 이 선택기에 포함되기 위해 기기에 있어서는 안 되는 기능(그룹당 최대 100개 기능). 이 목록에 있는 시스템 기능 중 하나라도 기기에 있는 경우 기기는 이 속성을 충족하지 않습니다.

    시스템 기능 참조

    • name: 시스템 기능
  • system-on-chip: 이 선택기에 포함할 단일 칩 시스템입니다. 이 속성을 충족하려면 기기에 이 목록에 있는 칩이 있어야 합니다. SoC는 API 수준이 31 이상인 기기에서만 타겟팅할 수 있습니다.

단일 선택기에 여러 속성을 포함하면 논리곱(AND)이 생성됩니다. 예를 들면 다음과 같습니다.

  <config:device-selector ram-min-bytes="7000000000">
      <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

RAM이 7GB를 초과하고(AND) Pixel 4인 모든 기기의 조건이 생성되고 다음과 같이 작성됩니다.

OR 조건을 원하는 경우 단일 기기 그룹에 별도의 선택기를 만듭니다. 예를 들면 다음과 같습니다.

  <config:device-selector ram-min-bytes="7000000000"/>
  <config:device-selector>
        <config:included-device-id brand="google" device="flame"/>
  </config:device-selector>

RAM이 7GB를 초과하거나(OR) Pixel 4인 모든 기기의 조건이 생성되고 다음과 같이 작성됩니다.

다음은 가능한 모든 기기 속성을 보여주는 예입니다.

<config:device-targeting-config
    xmlns:config="http://schemas.android.com/apk/config">

    <config:device-group name="myCustomGroup1">
      <config:device-selector ram-min-bytes="8000000000">
        <config:included-device-id brand="google" device="redfin"/>
        <config:included-device-id brand="google" device="sailfish"/>
        <config:included-device-id brand="good-brand"/>
        <config:excluded-device-id brand="google" device="caiman"/>
        <config:system-on-chip manufacturer="Sinclair" model="ZX80"/>
        <config:system-on-chip manufacturer="Commodore" model="C64"/>
      </config:device-selector>
      <config:device-selector ram-min-bytes="16000000000"/>
    </config:device-group>

    <config:device-group name="myCustomGroup2">
      <config:device-selector ram-min-bytes="4000000000" ram-max-bytes="8000000000">
        <config:required-system-feature name="android.hardware.bluetooth"/>
        <config:required-system-feature name="android.hardware.location"/>
        <config:forbidden-system-feature name="android.hardware.camera"/>
        <config:forbidden-system-feature name="mindcontrol.laser"/>
      </config:device-selector>
    </config:device-group>

</config:device-targeting-config>

공식 기기 제조업체 및 기기 모델 코드

Google Play Console에서 기기 카탈로그를 사용하여 다음 중 한 가지 방법으로 기기 제조업체 및 모델 코드의 올바른 형식을 찾을 수 있습니다.

  • 기기 카탈로그를 사용하여 개별 기기를 검사하고 아래 예와 같은 위치에서 제조업체 및 모델 코드를 찾습니다(Google Pixel 4a의 경우 제조업체는 'Google'이고 모델 코드는 'sunfish').

    기기 카탈로그의 Pixel 4a 페이지

    기기 카탈로그의 Pixel 4a 페이지

  • 지원되는 기기의 CSV를 다운로드하고 build_brand 필드와 build_device 필드에 각각 제조업체모델 코드를 사용합니다.

앱 번들에 기기 타겟팅 구성 파일 포함

기본 모듈의 build.gradle 파일에 다음을 추가합니다.

android {
  ...
  bundle {
    deviceTargetingConfig = file('device_targeting_config.xml')
    deviceGroup {
      enableSplit = true   // split bundle by #group
      defaultGroup = "other"  // group used for standalone APKs
    }
  }
  ...
}

device_targeting_config.xml은 기본 모듈을 기준으로 한 구성 파일의 경로입니다. 이렇게 하면 구성 파일이 앱 번들과 함께 패키징됩니다.

deviceGroup 절은 번들에서 생성된 APK가 기기 그룹별로 분할되도록 합니다.

Play Feature Delivery를 위한 기기 타겟팅

Play Feature Delivery에서 기기 타겟팅을 사용하려면 조건부 전송 문서를 참고하세요.