Google Play Instant を使用すると、デバイスに APK をインストールしなくても、ユーザーがアプリを利用できるようになります。インストールする代わりに、ユーザーは Google Play ストアの [今すぐ試す] ボタンか、デベロッパーが作成した URL を使ってアプリを利用できます。このコンテンツ配信形式を使用すると、Android アプリのユーザー エンゲージメントを高めるのが容易になります。
機能を Instant 対応にすることができるのは、アプリのベース モジュールも Instant 対応にしている場合のみです。これは、ユーザーがアプリの Instant 対応の機能を利用しようとした場合、共通のコードとリソース用のアプリのベース モジュールもデバイスにダウンロードする必要があるためです。Google Play Instant をサポートするには、ベース モジュールと機能のダウンロードで以下の条件を満たす必要があります。
- 最大サイズ: Instant 対応のベース モジュールと Instant 対応の機能モジュールを合わせたサイズを 10 MB 以下にする必要があります。詳しくは、アプリやゲームのサイズを減らして Instant 版を有効にするをご覧ください。
- バックグラウンド アクティビティ: Instant 対応モジュールでバックグラウンド サービスは使用できません。また、そのモジュールがバックグラウンドで実行されている場合、通知を送信できません。
このセクションで説明しているように、Android Studio 3.5 以上を使用して Instant 対応の機能モジュールを作成すると、IDE によってベース モジュールと機能モジュールの各マニフェストに次の内容が追加され、両方のモジュールが自動的に Instant 対応になります。
<manifest xmlns:dist="http://schemas.android.com/apk/distribution"
... >
<dist:module dist:instant="true" />
...
また、アプリをダウンロードしてインストールする際に、アプリのベース APK とともに Instant 対応の機能モジュールが自動的にダウンロードおよびインストールされます。したがって、Instant 対応の機能モジュールには、IDE により次の内容も追加されます。
<dist:module ...>
<dist:delivery>
<dist:install-time />
</dist:delivery>
</dist:module>
この動作により、dist:instant="true"
を設定する場合に <dist:on-demand />
も含めることはできません。ただし、Play Feature Delivery Library を使用することにより、Instant 版で Instant 対応モジュールをオンデマンドでリクエストできます。
Instant 配信用の新しいモジュールを設定する
Android Studio を使用して Instant 対応の機能モジュールをアプリ プロジェクトに追加する手順は次のとおりです。
- IDE 内でアプリ プロジェクトをまだ開いていない場合は、開きます。
- メニューバーから [File] > [New] > [New Module] を選択します。
- [Create New Module] ダイアログで [Instant 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 レベルを選択します。この値はベース モジュールの値と一致している必要があります。
[Module title] にモジュールのタイトルを半角 50 文字(全角 25 文字)以内で指定します。プラットフォームはこのタイトルを使用してモジュールを識別します。そのため、アプリのベース モジュールのタイトルを、文字列リソースとして指定して、翻訳できるようにする必要があります。Android Studio を使ってこのモジュールを作成すると、IDE はその文字列リソースをベース モジュールに追加して、次のようなエントリをその機能モジュールのマニフェストに挿入します。
<dist:module ... dist:title="@string/feature_title"> </dist:module>
Android 4.4(API レベル 20)以下を搭載したデバイスでこのモジュールを使用可能にして、マルチ APK に含める場合は、[Fusing] チェックボックスをオンにします。Android Studio はデベロッパーの選択に合わせて、モジュールのマニフェストに以下を挿入します。
<dist:module> <dist:fusing dist:include="true" /> </dist:module>
[Finish] をクリックします。
Android Studio でモジュールの作成を終えた後、[Project] ペインでモジュールの内容を確認します(メニューバーから [View] > [Tool Windows] > [Project] を選択します)。デフォルトのコード、リソース、編成は、標準のアプリ モジュールの場合と同様です。
オンデマンドでダウンロードする機能を実装した後は、Play Feature Delivery Library を使用してダウンロードをリクエストする方法をご確認ください。
アプリをデプロイする
機能モジュールをサポートするアプリの開発中も、通常のように、接続されたデバイスにアプリをデプロイできます。それには、メニューバーから [Run] > [Run] を選択します(またはツールバーで実行アイコン をクリックします)。
アプリ プロジェクトに機能モジュールが含まれる場合、アプリのデプロイ時にどの機能を含めるかを選択できます。それには、次のようにして既存の実行 / デバッグ構成を変更します。
- メニューバーから [Run] > [Edit Configurations] を選択します。
- [Run/Debug Configurations] ダイアログの左パネルの [Android App] で該当するアプリの構成を選択します。
- [General] タブの [Dynamic features to deploy] で、アプリのデプロイ時に含める各機能モジュールのチェックボックスをオンにします。
- [OK] をクリックします。
デフォルトでは、Android Studio が Instant 対応モジュールを Instant 版としてデプロイする、またはアプリを App Bundle でデプロイすることはありません。代わりに、IDE が APK をビルドしてデバイスにインストールします。この APK は、サイズよりもデプロイの早さについて最適化されます。IDE ではなく、Android Studio で App Bundle からの APK と Instant 版のビルド、デプロイを行うように構成するには、実行 / デバッグ構成を変更します。