機能モジュールを使用すると、アプリのベース モジュールから特定の機能とリソースを分離して 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>
属性を機能モジュールのマニフェストに挿入するために使用されます。 - [Package name] にモジュールのパッケージ名を指定します。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>
[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>