Google은 흑인 공동체를 위한 인종 간 평등을 진전시키기 위해 노력하고 있습니다. Google에서 어떤 노력을 하고 있는지 확인하세요.

Dynamic Delivery 정보

Google Play의 앱 제공 모델인 Dynamic DeliveryAndroid App Bundle을 사용하여 각 사용자의 기기 설정에 최적화된 APK를 생성하고 제공하므로, 사용자는 앱 실행에 필요한 코드와 리소스만 다운로드하면 됩니다. 개발자가 더 이상 다양한 기기를 지원하기 위해 여러 개의 APK를 빌드하고 서명하고 관리할 필요가 없으며 사용자는 더 작고 최적화된 앱을 다운로드하게 됩니다.

대부분의 앱 프로젝트는 큰 노력을 기울이지 않아도 Dynamic Delivery를 사용하여 최적화된 분할 APK를 제공하도록 지원하는 App Bundle을 빌드할 수 있습니다. 예를 들어 기존 협약에 따라 앱의 코드 및 리소스를 정리했다면 Android 스튜디오 또는 명령줄을 사용하여 서명한 Android App Bundle을 빌드하고 Google Play에 업로드하세요. 그러면 Dynamic Delivery가 자동 혜택이 됩니다.

앱의 특정 기능을 구성하여 전송 조건을 지정하거나 주문 시 다운로드하는 등 Dynamic Delivery의 고급 기능을 지원하려면 기능 제공 맞춤설정 방법에 관한 섹션을 참조하세요.

분할 APK를 이용한 Dynamic Delivery

Dynamic Delivery의 기본 구성요소는 Android 5.0(API 수준 21) 이상에서 사용 가능한 분할 APK 메커니즘입니다. 분할 APK는 일반 APK와 매우 유사하며 컴파일된 DEX 바이트 코드, 리소스, Android manifest가 포함되어 있습니다. 하지만 Android 플랫폼은 설치된 여러 개의 분할 APK를 단일 앱처럼 처리할 수 있습니다. 즉, 일반 코드 및 리소스에 액세스할 수 있는 여러 개의 분할 APK를 설치할 수 있으며 기기에는 설치된 하나의 앱처럼 표시됩니다.

분할 APK의 장점은 모놀리식 APK, 즉 앱에서 지원하는 모든 기능 및 기기 설정에 관련된 코드와 리소스를 포함하는 APK를 요구에 따라 사용자 기기에 설치된 더 작은 별개의 패키지로 나눌 수 있다는 점입니다.

예를 들어 하나의 분할 APK에 일부 사용자에게만 필요한 추가 기능에 관련된 코드 및 리소스를 포함하고 또 다른 분할 APK에는 특정 언어나 화면 밀도에만 사용되는 리소스를 포함할 수 있습니다. 이러한 각 분할 APK는 사용자가 요청하거나 기기에서 요구할 경우 다운로드 및 설치됩니다.

다음은 전체 앱 환경을 구성하기 위해 기기에 함께 설치될 다양한 APK 유형에 관해 설명합니다. 이 페이지의 뒷부분에서 이러한 APK를 지원하기 위해 앱 프로젝트를 구성하는 방법에 관해 배웁니다.

  • 기본 APK: 이 APK에는 모든 다른 분할 APK가 액세스할 수 있는 코드와 리소스가 포함되며 앱의 기본 기능을 제공합니다. 사용자가 앱을 다운로드하도록 요청하면 이 APK가 가장 먼저 다운로드되어 설치됩니다. 기본 APK의 manifest에만 앱의 서비스, 콘텐츠 제공업체, 권한, 플랫폼 버전 요구사항, 시스템 기능 종속성에 관한 전체 선언이 포함되어 있기 때문입니다. Google Play는 프로젝트의 앱(또는 기본) 모듈에서 앱의 기본 APK를 생성합니다. 앱의 초기 다운로드 크기를 줄이려는 경우 이 모듈에 포함된 모든 코드와 리소스가 앱의 기본 APK에 제공된다는 사실에 유의해야 합니다.
  • 구성 APK: 각 구성 APK에는 특정 화면 밀도, CPU 아키텍처, 언어에 관한 네이티브 라이브러리 및 리소스가 포함됩니다. 사용자가 앱을 다운로드하면 사용자 기기에서는 기기를 타겟팅하는 구성 APK만 다운로드하여 설치합니다. 각 구성 APK는 기본 APK 또는 동적 기능 APK 중 하나의 종속성입니다. 즉, 코드 및 리소스를 제공하는 대상인 APK와 함께 다운로드되고 설치됩니다. 기본 및 동적 기능 모듈과 달리 구성 APK와 관련해 별도 모듈을 생성하지 않습니다. 표준 권장사항을 사용하여 기본 및 동적 기능 모듈과 관련해 대체 가능한, 설정 관련 리소스를 구성하는 경우, Google Play에서 자동으로 구성 APK를 생성합니다.
  • 동적 기능 APK: 각 동적 기능 APK에는 동적 기능 모듈을 사용하여 모듈화하는 앱 기능과 관련된 코드 및 리소스가 포함됩니다. Dynamic Delivery를 통해 해당 기능이 언제 어떻게 기기로 다운로드될지 맞춤설정할 수 있습니다. 예를 들어 Play Core 라이브러리를 사용하면 동적 APK는 기기에 기본 APK가 설치된 후 요청에 따라 설치되어 사용자에게 추가 기능을 제공합니다. 사용자가 사진을 캡처하여 전송하는 기능을 사용하도록 요청했을 때만 채팅 앱이 해당 기능을 다운로드 및 설치하도록 할 수 있습니다. 동적 기능이 설치 시 제공되지 않을 수 있기 때문에 기본 APK에 모든 일반 코드 및 리소스를 포함해야 합니다. 즉, 동적 기능은 설치 시 기본 APK의 코드 및 리소스만 제공된다고 가정해야 합니다. Google Play는 프로젝트의 동적 기능 모듈에서 앱의 동적 기능 APK를 생성합니다.

동적 기능 모듈이 3개 있고 여러 기기 설정을 지원하는 기기가 있다고 생각해 보겠습니다. 아래의 그림 1에서 앱의 다양한 APK와 관련된 종속성 트리의 모양을 볼 수 있습니다. 기본 APK는 트리의 최상위에 위치하고 기타 모든 APK는 기본 APK에 종속됩니다. (Android App Bundle에서 이와 같은 APK 모듈이 표시되는 방식이 궁금하다면 Android App Bundle 형식을 참조하세요.)

기본 APK는 동적 기능 APK가 포함된 트리의 최상위에 위치하며 동적 기능 APK는 기본 APK에 종속성을 갖습니다. 구성 APK는 기본 APK 및 각 동적 기능 APK의 기기 설정에 필요한 코드와 리소스를 포함하고 있으며 종속 트리의 리프 노드를 구성합니다.

그림 1. 분할 APK를 사용하여 게재된 앱의 종속성 트리

이러한 APK는 개발자가 직접 빌드할 필요가 없습니다. Google Play에서는 개발자가 Android 스튜디오를 사용하여 빌드한 단일 서명된 App Bundle을 이용하여 APK를 대신 빌드해 줍니다. App Bundle 형식 및 빌드 방법에 관해 자세히 알아보려면 Android App Bundle 빌드, 배포, 업로드를 참조하세요.

Android 4.4(API 수준 19) 이하를 실행 중인 기기

Android 4.4(API 수준 19) 이하를 실행하는 기기는 분할 APK 다운로드 및 설치를 지원하지 않으므로 Google Play에서는 이러한 기기에 해당 기기 설정에 최적화된 멀티 APK라고 하는 단일 APK를 제공합니다. 즉, 멀티 APK는 전체 앱 환경을 나타내지만 다른 화면 밀도 및 CPU 아키텍처와 같은 불필요한 코드 및 리소스를 포함하지 않습니다.

하지만 앱에서 지원하는 모든 언어 관련 리소스는 포함되어 있습니다. 이에 따라 사용자는 다른 멀티 APK를 다운로드하지 않아도 앱의 기본 언어 설정을 변경할 수 있습니다.

멀티 APK에는 주문형으로 동적 기능 모듈을 추후 다운로드할 수 있는 기능이 없습니다. 이 APK에 동적 모듈을 포함하려면 동적 기능 모듈 생성주문형을 사용 중지하거나 융합을 사용 설정해야 합니다.

Dynamic Delivery를 사용하면 앱이 지원하는 기기 설정마다 APK를 빌드, 서명, 업로드, 관리하지 않아도 됩니다. 전체 앱의 단일 App Bundle을 빌드하고 업로드하기만 하면 Google Play에서 나머지 과정을 처리해 줍니다. Android 4.4 이하를 실행 중인 기기를 지원할 계획인지 여부에 관계없이 Dynamic Delivery는 개발자 및 사용자 모두에게 유연성 있는 게재 메커니즘을 제공합니다.

앱 모듈화하기

앱 모듈화는 앱 프로젝트의 논리적 구성요소를 분리형 모듈로 구분하는 프로세스입니다.

앱 기능을 이러한 분리형 구성요소로 재구성하려면 신중하게 고려해야 하며 일정한 시간이 소요됩니다. 하지만 모듈화할 경우 프로젝트에 다음과 같은 이점이 있습니다.

  • 동시 개발: 앱의 논리적 구성요소를 모듈로 분리함으로써 조직의 다양한 팀 또는 개인이 각 모듈의 소유권을 갖고 작업하여 병합 충돌 또는 다른 팀과의 충돌을 줄일 수 있습니다. 또한 앱의 다양한 부분에 사용되는 논리가 있다면 라이브러리 모듈을 사용하여 코드를 재사용하고 캡슐화할 수 있습니다.
  • 빌드 시간 개선: Gradle을 사용한 Android 스튜디오 빌드 시스템과 같은 빌드 시스템은 모듈로 조직된 프로젝트에 최적화되어 있습니다. 예를 들어 다중 코어 프로세서가 포함된 워크스테이션에서 Gradle의 병렬 프로젝트 실행 최적화를 사용 설정하면 빌드 시스템에서 여러 모듈을 동시에 빌드하여 빌드 시간을 크게 줄일 수 있습니다. 모듈화 작업을 많이 진행한 프로젝트일수록 빌드 성능은 더 크게 개선됩니다.
  • 기능 제공 맞춤설정: 앱의 기능을 동적 기능 모듈로 모듈화하는 작업은 주문형, 조건부 및 즉시 전송과 같은 Dynamic Delivery의 맞춤 전송 옵션 활용 시 필요합니다. 주문형 동적 기능을 생성하려면 더 큰 노력이 필요하고 앱을 리팩토링해야 할 수도 있습니다. 따라서 동적 기능으로 모듈화하면 앱의 어떤 기능에 가장 좋을지, 그리고 맞춤 전송 옵션을 통해 얻을 수 있는 이점이 가장 큰 기능은 무엇인지에 관해 신중하게 고려해야 합니다.

앱 기능별로 프로젝트를 모듈화하는 작업을 완료하려면 시간이 필요하며 여러 사항을 고려해야 합니다. 앱 모듈화를 시작하기로 결정했다면 가장 먼저 모듈화 기능을 지원하는 데 필요한 속성이 포함된 기본 모듈을 설정해야 합니다. 그런 다음 설치 시 제공되는 동적 기능 모듈을 설정하여 앱의 현재 동작을 변경하지 않고 앱 기능을 점진적으로 모듈화하면 됩니다.

맞춤 전송을 위한 동적 기능 모듈 사용

Dynamic Delivery의 특별한 장점은 Android 5.0(API 수준 21) 이상을 실행 중인 기기로 다양한 앱 기능을 어떻게 언제 다운로드할지 맞춤설정하는 기능입니다. 예를 들어 앱의 최초 다운로드 크기를 줄이기 위해, 특정 기능이 요청 시에만 다운로드되도록 설정하거나 해당 기능을 지원하는 기기(예: 사진 찍기, 증강 현실 기능 지원)에만 다운로드되도록 설정할 수 있습니다.

앱을 App Bundle로 업로드하면 기본적으로 매우 최적화된 다운로드를 받을 수 있지만 보다 더 전문적이고 맞춤 가능한 기능 제공 옵션을 사용하려면 동적 기능 모듈을 사용하여 추가적으로 설정하고 앱 기능을 모듈화해야 합니다. 즉, 동적 기능 모듈은 필요할 때 각각 다운로드되도록 설정할 수 있는 모듈화된 기능을 생성하는 기본 구성 요소를 제공합니다.

사용자가 온라인 마켓플레이스에서 상품을 사고팔 수 있는 앱을 생각해 보세요. 앱의 다음 각 기능을 별도의 동적 기능 모듈로 모듈화할 수 있습니다.

  • 계정 로그인 및 생성
  • 마켓플레이스 탐색
  • 판매할 상품 배치
  • 결제 처리

아래 표는 동적 기능 모듈이 지원하는 다양한 전송 옵션들을 소개하고, 샘플 마켓플레이스 앱의 최초 다운로드 크기를 최적화하기 위해 이러한 옵션들이 어떻게 사용되는지 설명합니다.

전송 옵션 동작 샘플 사용 사례 시작하기
설치 시 전송 구성 위에서 설명한 전송 옵션을 전혀 설정하지 않는 동적 기능 모듈은 기본적으로 앱 설치 시 다운로드됩니다. 이 동작은 고급 전송 옵션을 점진적으로 수용할 수 있다는 의미이기 때문에 중요합니다. 예를 들어 Play Core 라이브러리를 사용하여 주문형 다운로드를 완전히 구현한 후에만 앱 기능 모듈화를 활용하고 주문형 전송을 사용 설정할 수 있습니다.

또한 앱에서 나중에 기능을 제거하도록 요청할 수 있습니다. 만약 앱 설치 시 특정 기능이 필요하며 그 후에는 필요하지 않다면 기기에서 해당 기능을 삭제하도록 요청함으로써 설치 크기를 줄일 수 있습니다.

마켓플레이스에서 상품을 사고파는 방법에 관한 대화형 가이드와 같은 특정 교육 활동이 앱에 있다면 기본적으로 앱 설치 시 이러한 기능을 포함할 수 있습니다.

하지만 앱의 설치 크기를 줄이기 위해 앱에서는 사용자가 교육을 마친 후 이 기능을 삭제하도록 요구할 수 있습니다.

고급 전송 옵션을 설정하지 않는 동적 기능 모듈을 사용하여 앱을 모듈화하세요.

사용자에게 더 이상 필요하지 않은 특정 동적 기능 모듈을 삭제함으로써 앱의 설치 크기를 줄이는 방법에 관해 알아보려면 설치된 모듈 관리를 참조하세요.

주문형 전송 앱이 필요할 때 동적 기능 모듈을 요청하고 다운로드할 수 있도록 허용합니다. 마켓플레이스 앱을 사용하는 사용자의 20%만 판매를 위해 상품을 게시한다면 대부분의 사용자가 최초 다운로드 크기를 줄일 수 있는 좋은 전략은 사진을 찍고 상품 설명을 추가하며 상품을 판매 가능하도록 배치하는 것에 관련된 기능을 주문형 다운로드로 설정하는 것입니다. 즉, 앱의 판매 기능에 관한 동적 기능 모듈이 사용자가 마켓플레이스에 상품을 판매하도록 배치하는 데 관심을 가질 경우에만 다운로드되도록 설정할 수 있습니다.

또한, 사용자가 일정 기간이 지난 후 더 이상 상품을 판매하지 않는다면 앱에서 이 기능을 제거하도록 요청하여 설치 크기를 줄일 수 있습니다.

동적 기능 모듈을 만들고 주문형 전송을 설정하세요. 그런 다음 앱에서 Play Core 라이브러리를 사용하여 주문형 모듈을 다운로드하도록 요청할 수 있습니다.
조건부 전송 앱 설치 시 모듈화된 기능이 다운로드될지 여부를 결정하기 위해 하드웨어 기능, 언어, 최소 API 수준과 같은 특정 사용자 기기 요구사항을 지정하도록 허용합니다. 마켓플레이스 앱이 전 세계에 제공되는 경우 특정 지역에서만 사용되는 결제 수단을 지원해야 할 수 있습니다. 최초 앱 다운로드 크기를 줄이려면 특정 결제 수단 유형을 처리하는 별도의 동적 기능 모듈을 만들어 등록된 언어에 따라 사용자 기기에 조건부로 설치하면 됩니다. 동적 기능 모듈을 만들고 조건부 전송을 설정하세요.
즉시 전송 Google Play 인스턴트를 사용하면 기기에 APK를 설치하지 않고도 앱과 상호작용할 수 있습니다. 또는 Google Play 스토어의 '사용해 보기' 버튼이나 개발자가 만든 URL을 통해 앱을 사용해 볼 수 있습니다. 이런 형식으로 콘텐츠를 제공하면 더 쉽게 앱 참여도를 높일 수 있습니다.

즉시 전송 기능을 사용하면 사용자가 Google Play 인스턴트를 활용하여 앱을 설치하지 않고도 앱의 특정 기능을 즉시 사용해 볼 수 있습니다.

게임의 처음 몇 레벨을 가벼운 동적 기능 모듈에 포함시켰다고 생각해 보세요. 해당하는 모듈을 즉시 사용 설정함으로써 사용자는 URL 링크나 '사용해 보기' 버튼을 통해 앱을 설치하지 않고도 게임을 즉시 해볼 수 있습니다. 동적 기능 모듈을 만들고 즉시 전송을 설정하세요. 그런 다음 앱에서 Play Core 라이브러리를 사용하여 주문형 모듈을 다운로드하도록 요청할 수 있습니다.

동적 기능 모듈을 사용하여 앱 기능을 모듈화하는 것은 첫 단계에 불과합니다. Google Play 인스턴트를 지원하려면 앱의 기본 모듈 다운로드 크기 및 해당 인스턴트 지원 동적 기능은 엄격한 크기 제한을 충족해야 합니다. 자세한 내용은 앱 또는 게임 크기를 줄여 인스턴트 환경 사용 설정을 참조하세요.

동적 기능 모듈 manifest

Android 스튜디오를 사용하여 새로운 동적 기능 모듈을 만들 때 IDE에는 모듈이 동적 기능처럼 작동하기 위해 필요한 대부분의 manifest 속성이 포함됩니다. 또한 일부 속성은 컴파일 시간에 빌드 시스템에 의해 삽입되므로 직접 지정하거나 수정하지 않아도 됩니다. 다음 표는 동적 기능 모듈에 중요한 manifest 속성에 관해 설명합니다.

속성 설명
<manifest
...
일반적인 <manifest> 블록입니다.
xmlns:dist="http://schemas.android.com/apk/distribution" 새로운 dist: XML 네임스페이스를 지정하며 아래에서 자세히 설명합니다.
split="split_name" Android 스튜디오에서 App Bundle을 빌드할 때 속성을 포함합니다. 따라서 이 속성을 직접 포함하거나 수정하면 안 됩니다.

Play Core 라이브러리를 사용하여 주문형 모듈을 요청할 때 앱이 지정하는 모듈 이름을 정의합니다.

Gradle에서 이 속성의 값을 결정하는 방법

기본적으로 Android 스튜디오를 사용하여 동적 기능 모듈을 만드는 경우 IDE 는 모듈 이름으로 지정하는 항목을 사용하여 모듈을 Gradle 설정 파일에 있는 Gradle 하위 프로젝트로 식별합니다.

App Bundle을 빌드할 때 Gradle은 하위 프로젝트 경로의 마지막 요소를 사용하여 모듈의 manifest에 이 manifest 속성을 삽입합니다. 예를 들어 MyAppProject/features/ 디렉토리에 새로운 동적 기능 모듈을 생성하고 모듈 이름을 'dynamic_feature1'이라고 지정했다면 IDE는 ':features:dynamic_feature1'settings.gradle 파일의 하위 프로젝트로 추가합니다. App Bundle을 빌드할 때 Gradle은 모듈의 manifest에 <manifest split="dynamic_feature1">을 삽입합니다.

android:isFeatureSplit="true | false"> Android 스튜디오에서 App Bundle을 빌드할 때 이 속성을 포함시킵니다. 따라서 이 속성을 직접 추가하거나 수정하면 안 됩니다.

이 모듈이 동적 기능 모듈인지 지정합니다. 기본 모듈 및 구성 APK의 manifest는 이 속성을 생략하거나 false로 설정합니다.

<dist:module 이 새로운 XML 요소는 모듈이 패키징되는 방식 및 APK로 배포되는 방식을 결정하는 속성을 정의합니다.
dist:instant="true | false" 모듈이 Google Play 인스턴트를 통해 인스턴트 환경으로 사용 가능한지 여부를 지정합니다.

앱에 하나 이상의 인스턴트 지원 동적 기능 모듈이 포함되어 있다면 기본 모듈도 인스턴트를 지원하도록 설정해야 합니다. Android 스튜디오 3.5 이상을 사용 중이라면 인스턴트 지원 동적 기능 모듈을 생성할 때 IDE에서 이 작업을 해줍니다.

XML 요소를 true로 설정하는 동시에 <dist:on-demand/>도 설정할 수 없습니다. 하지만 계속해서 Play Core 라이브러리를 사용하여 인스턴트 환경으로 인스턴트 지원 동적 기능의 주문형 다운로드를 요청할 수 있습니다. . 사용자가 앱을 다운로드하고 설치하면 기기는 앱의 인스턴트 지원 동적 기능과 함께 기본 APK를 기본적으로 다운로드하여 설치합니다.

dist:title="@string/feature_name" 사용자에게 표시될 모듈 제목을 지정합니다. 예를 들어 기기에서 다운로드 확인을 요청할 때 이 제목을 표시합니다.

기본 모듈의 module_root/src/source_set/res/values/strings.xml 파일에 이 제목의 문자열 리소스를 포함해야 합니다.

<dist:fusing dist:include="true | false" />
</dist:module>
Android 4.4(API 수준 20) 이하를 실행 중인 기기를 타겟팅하는 멀티 APK에 모듈을 포함할지 여부를 지정합니다.

또한 App Bundle에서 APK를 생성할 때 bundletool을 사용할 경우 이 속성을 true로 설정하는 동적 기능 모듈만 범용 APK에 포함됩니다. 범용 APK란 앱이 지원하는 모든 기기 설정에 관련된 코드와 리소스가 포함된 모놀리식 APK입니다.

<dist:delivery> 아래 표시된 것처럼 모듈 전송을 맞춤설정하는 옵션을 캡슐화합니다. 각 동적 기능 모듈은 이러한 맞춤 전송 옵션 유형 한 가지만 설정해야 합니다.
<dist:install-time/> 모듈이 설치 시간에 사용 가능해야 하는지 명시합니다. 이는 다른 맞춤 전송 옵션 유형을 지정하지 않는 동적 기능 모듈의 기본 동작입니다.

설치 시 다운로드 항목에 관해 자세히 알아보려면 설치 시 전송 구성을 참조하세요.

또한 이 노드는 기기 기능, 사용자 국가, 최소 API 수준과 같은 특정 요구사항에 부합하는 기기로 모듈을 제한하는 조건을 지정할 수도 있습니다. 자세한 내용은 조건부 전송 구성을 참조하세요.

<dist:on-demand/> 모듈이 주문형 다운로드로 사용 가능한지 여부를 지정합니다. 즉, 설치 시에는 모듈을 사용할 수 없지만 앱에서 나중에 다운로드하도록 요청할 수 있습니다.

주문형 다운로드에 관한 자세한 내용은 주문형 전송 구성을 참조하세요.

</dist:delivery>
<application
android:hasCode="true | false">
...
</application>
동적 기능 모듈이 DEX 파일을 생성하지 않는다면, 즉 나중에 DEX 파일 형식으로 컴파일되는 코드가 포함되어 있지 않다면 다음 작업을 실행하세요. 그러지 않으면 런타임 오류가 표시될 수 있습니다.
  1. 동적 기능 모듈의 manifest에서 android:hasCode"false"로 설정합니다.
  2. 기본 모듈의 manifest에 다음을 추가합니다.
    
    <application
      android:hasCode="true"
      tools:replace="android:hasCode">
      ...
    </application>
    

Dynamic Delivery 테스트

Dynamic Delivery를 테스트하는 가장 좋은 방법은 Google Play 스토어를 통해 테스트하는 것입니다. Dynamic Delivery의 장점 대부분이 최적화된 APK 생성, 서명, Play 스토어에 게재를 지연하는 것과 관련이 있기 때문입니다. 따라서 App Bundle을 업로드하여 Dynamic Delivery의 기본 지원을 포함하거나 맞춤 전송 옵션을 설정할 때 다음 방법으로 Dynamic Delivery를 사용하여 앱을 테스트해야 합니다.

  • URL로 앱 공유. 이 형태가 App Bundle을 업로드하고 앱을 신뢰할 수 있는 테스터와 Google Play 스토어 링크 형태로 공유할 수 있는 가장 빠른 방법입니다. 또한 주문형 기능 다운로드와 같은 맞춤 전송 옵션을 테스트할 수 있는 가장 빠른 방법이기도 합니다.
  • 공개, 비공개 또는 내부 테스트를 설정. 이 방법은 구조화된 테스트 채널을 제공하며 외부 사용자에게 앱을 출시하기 전에 최종 출시 버전을 테스트할 수 있는 좋은 방법입니다.

동적 기능 고려사항

동적 기능 모듈을 포함하고 있는 앱을 프로덕션 트랙에 게시하려면 다음 사항에 유의하세요.

  • Android 5.0(API 수준 21) 이상을 실행하는 기기에서만 주문형 동적 기능을 다운로드하고 설치하는 기능이 지원됩니다. 이전 버전의 Android에서 동적 기능을 사용 설정하려면 동적 기능 모듈을 만들 때 융합을 사용 설정해야 합니다.
  • SplitCompat을 사용 설정하여 앱이 다운로드된 동적 기능 모듈에 즉시 액세스할 수 있도록 합니다.
  • 동적 기능의 다운로드 크기가 큰 경우 기기에 동적 기능을 다운로드하려면 앱은 사용자의 확인을 받아야 합니다.
  • 동적 기능 모듈은 android:exportedtrue로 설정된 상태에서 manifest의 활동을 지정하면 안 됩니다. 다른 앱이 활동을 실행하려고 할 때 기기가 동적 기능 모듈을 다운로드했다고 보장할 수 없기 때문입니다. 또한 앱에서 코드와 리소스에 액세스하기 전에 동적 기능을 다운로드하도록 확인해야 합니다. 자세한 내용은 설치된 모듈 관리를 참조하세요.
  • Dynamic Delivery를 사용하려면 App Bundle을 사용하여 앱을 게시해야 하므로 App Bundle의 알려진 문제에 관해 알고 있어야 합니다.

추가 리소스

Dynamic Delivery 지원을 사용하는 방법에 관한 자세한 내용은 다음의 자료를 참조하세요.

샘플

  • PlayCore API 샘플: PlayCore API를 사용하여 동적 기능을 요청하고 다운로드하는 방법을 보여줍니다.
  • 동적 코드 로드 샘플, 설치된 동적 기능 모듈에서 안전하게 코드에 액세스하는 세 가지 접근 방식을 보여줍니다.

Codelab

  • 첫 번째 Android App Bundle: Android App Bundle의 기본 원리를 살펴보고 Android 스튜디오를 사용하여 자신만의 고유한 App Bundle 구성을 빠르게 시작하는 방법을 보여주는 Codelab입니다. 이 Codelab에서는 bundletool을 사용해 App Bundle을 테스트하는 방법도 알아봅니다.
  • 주문형 모듈: 주문형 동적 기능을 다운로드하여 설치하는 앱을 만드는 데 도움을 줍니다.

블로그 게시물

동영상