DFM이란?

DFM(Dynamic Feature Module)은 기본 모듈 앱(APK)로 부터 특정 기능이나 리소스를 분리하여 추후에 Play Feature Delivery를 통해 다운로드하고 설치 할 수 있다.

앱 설치후 추가적인 기능 사용을 위해, DFM(모듈)을 다운로드 하는 모습

일반적인 DFM의 다운로드 경로는 Play store console에 업로드한 aab 파일로 부터 생성 된 별도의 apk로 진행되기 때문에, 앱번들로 빌드한 aab 파일을 콘솔에 업로드해야 한다.

하지만 개발시에 다운로드, 진행율 표시, 실패 처리 등을 테스트하기 위해 콘솔에 매번 aab를 새로 업로드 할수는 없기에 별도의 모듈 설치 로컬 테스트 방법을 제공한다.

로컬 테스트

1. 최신 버전의 bundletool이 필요하다. 아래의 링크에서 최신 버전을 다운받자.

2. 편의를 위해 다운받은 파일의 이름을 적당히 변경하자.

bundletool-all-1.8.0.jar -> bundletool.jar

3. bundletool.jar를 적당한 경로로 이동한다. 나의 경우 안드로이드 sdk 디렉토리내 tools로 이동시켰다.

4. .bash_profile에 tools 경로를 export 해서 터미널에서 인지 할 수 있도록 한다.

export PATH=${PATH}:/Users/charles/Library/Android/sdk/tools

5. 이제 터미널에서 java -jar bundletool.jar 를 입력한다.ㄷ

대충 이런식으로 나왔다면 성공.

Error: Unable to access jarfile bundletool.jar 이라고 메시지가 뜨면, chmod 명령으로 파일 접근 권한을 변경하도록 하자.

6. 이제 bundletool을 이용하기 위한 준비는 끝났고, DFM이 포함된 프로젝트를 안드로이드 스튜디오에서 bundle로 빌드해야 한다. 터미널에 다음과 같이 입력할 수 있다.

./gradlew bundleDebug

각자 자신의 프로젝트 빌드 타입 또는 flavor에 맞게 태스크명을 입력하자.

안드로이드 스튜디오의 터미널에 ./gradlew 을 입력하면 다음과 같은 팝업을 볼 수 있다.

안드로이드 스튜디오(IDE)에서 관련된 기능을 제공하니 터미널대신 쓰라는 내용같다.
cmd+return을 입력하면 빌드탭에 이쁘게 정리되어 나오니 이용해보자.

7. 빌드가 완료되었다면 aab파일이 나왔을텐데, 일반적으로 app모듈의 build/outputs/bundle에 포함된 디렉토리에서 aab를 찾을 수 있을 것이다.

8. 이제 bundletool을 사용하여 모든 기기 구성을 위한 APK세트를 생성할 수 있다.

java -jar bundletool build-apks --local-testing --bundle ${aab경로} --ouput ${저장할 apks 경로}

9. 저장된 apks파일을 이제 테스트할 기기에 밀어 넣으면 끝

java -jar bundletool install-apks --apks ${apks 경로}

10. 이제 앱을 실행해 보면 DFM이 설치되지 않은 상태이며, 플레이 스토어 콘솔없이도 DFM 주문형 설치를 테스트 해볼 수 있다. (끝)

카테고리: 미분류

1개의 댓글

안드용 · 2022년 3월 3일 5:56 오후

Bundletool을 이용해 DFM 테스트 시 국가 코드에 따른 모듈 설치 여부를 확인 하는 방법도 있을까요?

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.