機能モジュールを使用すると、アプリのベース モジュールから特定の機能とリソースを分離して App Bundle に組み込むことができます。その後、配信オプションをカスタマイズして、Android 5.0(API レベル 21)以上を搭載したデバイスがアプリの機能をいつどのようにダウンロードするかを制御できます。
このタイプのモジュール化には、より多くの労力が必要であり、アプリの既存のコードのリファクタリングが必要になる可能性があるため、アプリのどの機能がオンデマンドでユーザーに提供されることで最もメリットを得られるかを慎重に検討してください。
アプリの動作を変更したり高度な配信オプションをカスタマイズしたりせずに、時間をかけて徐々にアプリの機能をモジュール化する場合は、インストール時の配信を設定した機能モジュールを作成します。つまり、高度なオプションを有効にせずに機能モジュールとして機能をモジュール化することにより、ユーザーがアプリをインストールした際に機能を使用できるように設定可能です。
さらに、インストール時の配信に設定されている機能モジュールは、不要になった場合に後でアンインストールすることもできます。そのためには、取り外し可能として設定する必要があります。
このセクションでは、インストール時に配信する機能モジュールの作成方法について説明します。はじめに、Android Studio 3.5 以上と Android Gradle Plugin 3.5.0 以上を使用していることをご確認ください。
インストール時の配信用の新しいモジュールを設定する
新しい機能モジュールを作成する最も簡単な方法は、Android Studio 3.5 以上を使用することです。機能モジュールは本来的にベースアプリ モジュールと依存関係にあるため、既存のアプリ プロジェクトにしか追加できません。
Android Studio を使用してアプリ プロジェクトに機能モジュールを追加する手順は次のとおりです。
- まだ行っていない場合は、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>属性を挿入します。 - モジュールのパッケージ名を指定します。Android Studio でのデフォルトのパッケージ名は、ベース モジュールのルート パッケージ名と、前のステップで指定したモジュール名を組み合わせた名前です。
- [Minimum API level] で、モジュールがサポートする最小 API レベルを選択します。この値はベース モジュールの値と一致している必要があります。
- [Next] をクリックします。
[Module Download Options] セクションで次のように入力します。
[Module title] にモジュールのタイトルを半角 50 文字(全角 25 文字)以内で指定します。アプリのベース モジュールには、翻訳可能な文字列リソースとしてモジュールのタイトルを含める必要があります。Android Studio を使用してモジュールを作成すると、IDE によって文字列リソースがベース モジュールに追加され、機能モジュールのマニフェストに次のエントリが挿入されます。
<dist:module ... dist:title="@string/feature_title"> </dist:module>注: リリースビルドの際などに、不要なリソースの削除を有効にすると、ベース モジュール内のコードから参照されていないモジュール タイトルの文字列リソースは、圧縮ツールによって削除される場合があります。文字列リソースがビルドの出力で保持されるようにするには、リソースをカスタム リソース keep ファイルに追加します。
[Install-time inclusion] のプルダウン メニューで、[Include module at install-time] を選択します。Android Studio は、選択内容を反映するために、モジュールのマニフェストに以下を挿入します。
<dist:module ... > <dist:delivery> <dist:install-time /> </dist:delivery> </dist:module>アプリのインストール後にダウンロードできる機能モジュールの作成方法については、オンデマンド配信の設定をご覧ください。
Android 4.4(API レベル 20)以下を搭載したデバイスでこのモジュールを使用可能にして、マルチ APK に含める場合は、[Fusing] チェックボックスをオンにします。つまり、分割 APK のダウンロードとインストールをサポートしていないデバイスでは、この要素を省略できます。Android Studio は、選択内容を反映するために、モジュールのマニフェストに以下を挿入します。
<dist:module ...> <dist:fusing dist:include="true | false" /> </dist:module>
[Finish] をクリックします。
Android Studio でモジュールの作成を終えた後、[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>