기기 타겟팅을 사용하면 특정 기기에 전송되는 App Bundle의 부분을 더 세부적으로 제어할 수 있습니다. 예를 들어 대용량 애셋을 RAM이 많은 기기에만 전송하거나 기기에 따라 애셋의 여러 버전을 전송할 수 있습니다.
다음과 같은 기기 속성을 타겟팅할 수 있습니다.
- 기기 모델
- 기기 RAM
- 시스템 기능
- SoC (API 수준이 31 이상인 기기의 경우)
필수 단계 개요
기기 타겟팅을 사용 설정하려면 다음 단계를 따르세요.
- XML 파일에서 기기 그룹을 정의합니다.
- 번들의 어떤 부분이 어떤 기기 그룹으로 이동해야 하는지 지정합니다.
- [선택사항] 로컬에서 구성을 테스트합니다.
- 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 이상인 기기에서만 타겟팅할 수 있습니다.
- manufacturer: 칩셋 제조업체
- model: 시스템 온 칩 모델
단일 선택기에 여러 속성을 포함하면 논리곱(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').
지원되는 기기의 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에서 기기 타겟팅을 사용하려면 조건부 전송 문서를 참고하세요.