기능 모듈을 사용하면 앱의 기본 모듈에서 특정 기능 및 리소스를 분리하여 App Bundle에 포함할 수 있습니다. 그런 다음, Android 5.0(API 수준 21) 이상을 실행하는 기기가 앱의 기능을 다운로드하는 시기와 방법을 제어하는 제공 옵션을 맞춤설정할 수 있습니다.
이런 유형의 모듈화는 더 많은 작업이 필요하고 앱의 기존 코드를 리팩터링해야 할 수 있으므로 사용자가 주문형으로 이용함으로써 얻을 수 있는 이점이 가장 큰 앱 기능이 어떤 것인지 신중하게 고려해야 합니다.
앱의 동작을 변경하거나 고급 제공 옵션을 맞춤설정하지 않고 시간 경과에 따라 앱 기능을 점차 모듈화하려면 설치 시 제공을 위해 구성되는 기능 모듈을 생성하면 됩니다. 즉 기능을 기능 모듈로 모듈화할 수 있지만 고급 옵션을 사용 설정하지 않으므로 사용자가 앱을 설치할 때 그 기능을 사용할 수 있습니다.
또한 설치 시 제공을 위해 구성된 기능 모듈은 더 이상 필요하지 않은 경우 나중에 제거할 수 있는 옵션이 있습니다. 이를 위해 삭제 가능으로 설정해야 합니다.
이 섹션에서는 설치 시 제공을 위한 기능 모듈을 만드는 방법을 설명합니다. 시작하기 전에 Android 스튜디오 3.5 이상 및 Android Gradle 플러그인 3.5.0 이상을 사용하고 있는지 확인하세요.
설치 시 제공을 위한 새 모듈 구성
새 기능 모듈을 만드는 가장 쉬운 방법은 Android 스튜디오 3.5 이상을 사용하는 것입니다. 기능 모듈은 본질적으로 기본 앱 모듈에 종속되기 때문에 기존 앱 프로젝트에만 추가할 수 있습니다.
Android 스튜디오를 사용하여 앱 프로젝트에 기능 모듈을 추가하려면 다음 단계를 따르세요.
- 아직 앱 프로젝트를 열지 않았다면 IDE에서 앱 프로젝트를 엽니다.
- 메뉴 바에서 File > New > New Module을 선택합니다.
- Create New Module 대화상자에서 Dynamic Feature Module을 선택하고 Next를 클릭합니다.
- Configure your new module 섹션에서 다음을 완료합니다.
- 드롭다운 메뉴에서 앱 프로젝트의 Base application module을 선택합니다.
- Module name을 지정합니다. IDE는 이 이름을 사용하여 Gradle 설정 파일에서 모듈을 Gradle 하위 프로젝트로 식별합니다. App Bundle을 빌드할 때 Gradle은 하위 프로젝트 이름의 마지막 요소를 사용하여 기능 모듈의 매니페스트에
<manifest split>
속성을 삽입합니다. - 모듈의 package name을 지정합니다. 기본적으로 Android 스튜디오는 기본 모듈의 루트 패키지 이름과 이전 단계에서 지정한 모듈 이름을 결합한 패키지 이름을 제안합니다.
- 모듈에서 지원할 Minimum API level을 선택합니다. 이 값은 기본 모듈의 값과 일치해야 합니다.
- Next를 클릭합니다.
Module Download Options 섹션에서 다음을 완료합니다.
최대 50자(영문 기준)를 사용하여 Module title을 지정합니다. 앱의 기본 모듈은 번역이 가능한 문자열 리소스로 된 모듈 제목을 포함해야 합니다. Android 스튜디오를 사용하여 모듈을 만들 때 IDE는 문자열 리소스를 기본 모듈에 추가하고 다음 항목을 기능 모듈의 매니페스트에 삽입합니다.
<dist:module ... dist:title="@string/feature_title"> </dist:module>
Install-time inclusion 아래의 드롭다운 메뉴에서 Include module at install-time을 선택합니다. Android 스튜디오는 모듈의 매니페스트에 다음을 삽입하여 선택사항을 반영합니다.
<dist:module ... > <dist:delivery> <dist:install-time /> </dist:delivery> </dist:module>
앱 설치 후 다운로드할 수 있는 기능 모듈을 만드는 방법에 관해 자세히 알아보려면 주문형 제공 구성을 참고하세요.
이 모듈을 Android 4.4(API 수준 20) 이하를 실행하는 기기에서 사용하고 다중 APK에 포함하려면 Fusing 옆에 있는 체크박스를 선택하세요. 즉, 분할 APK의 다운로드 및 설치를 지원하지 않는 기기에서는 모듈을 제외할 수 있습니다. Android 스튜디오는 모듈의 매니페스트에 다음을 삽입하여 선택사항을 반영합니다.
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
Finish를 클릭합니다.
Android 스튜디오에서 모듈 생성을 완료한 후에는 Project 창에서 직접 콘텐츠를 검사합니다(메뉴 바에서 View > Tool Windows > Project 선택). 기본 코드, 리소스 및 구성은 표준 앱 모듈과 비슷해야 합니다.
설치 시 모듈을 삭제 가능하도록 구성
설치 시 제공을 위한 기능 모듈이 더 이상 필요하지 않은 경우 나중에 제거하는 옵션이 있도록 구성하는 것이 유용할 수 있습니다. 예를 들어 앱의 설치 크기를 줄이려면 학습이나 온보딩에 필요한 콘텐츠를 모듈화하고 사용자가 사용할 수 있도록 앱이 설정된 후 Play Core API를 사용하여 기능 모듈을 제거하면 됩니다.
기본적으로 설치 시 모듈은 삭제할 수 없습니다. 모듈을 삭제 가능으로 표시하고 제거할 수 있도록 하려면 removable
태그를 추가하고 값을 true
로 설정합니다.
<dist:module ... >
<dist:delivery>
<dist:install-time>
<dist:removable dist:value="true"/>
</dist:install-time>
</dist:delivery>
</dist:module>