6 月 3 日の「#Android11: The Beta Launch Show」にぜひご参加ください。

Instant 配信の設定

Google Play Instant を使用すると、デバイスに APK をインストールしなくても、ユーザーがアプリを利用できるようになります。インストールする代わりに、ユーザーは Google Play ストアの [今すぐ試す] ボタンか、デベロッパーが作成した URL を使ってアプリを利用できます。このコンテンツ配信形式を使用すると、Android アプリのユーザー エンゲージメントを高めるのが容易になります。

アプリのベース モジュールを Instant 対応にしている場合にのみ、動的機能を Instant 対応にすることができます。これは、ユーザーがアプリの Instant 対応の動的機能を体験したいと考えた場合、デバイスでは共通のコードとリソース用のアプリのベース モジュールもダウンロードする必要があるためです。Google Play Instant をサポートするには、ベース モジュールと動的機能のダウンロードで厳しいサイズ制限を守る必要があります。詳しくは、アプリまたはゲームのサイズを削減して Instant エクスペリエンスを有効にする場合についての説明をご覧ください。

ここで説明するように、Android Studio 3.3 以降を使用して Instant 対応の動的機能モジュールを作成する場合、IDE は各モジュールのマニフェストに以下の記述を含めることで、ベース モジュールと動的機能モジュールの両方を自動的に Instant 対応にします。

<manifest xmlns:dist="http://schemas.android.com/apk/distribution"
        ... >
        <dist:module dist:instant="true" />
        ...
    

dist:instant="true" を設定する場合、dist:onDemand="true" を設定することはできません。つまり、アプリをダウンロードしてインストールする場合、アプリのベース APK とともに Instant 対応の動的機能が自動的にダウンロードされインストールされます。ただし、Play のコアライブラリを使用して Instant エクスペリエンス内でオンデマンドで Instant 対応モジュールをリクエストすることもできます。

Instant 配信用の新しいモジュールを設定する

Android Studio を使用して Instant 対応の動的機能モジュールをアプリ プロジェクトに追加する手順は次のとおりです。

  1. IDE 内でアプリ プロジェクトをまだ開いていない場合は、開きます。
  2. メニューバーから [File] > [New] > [New Module] を選択します。
  3. [Create New Module] ダイアログで [Instant Dynamic Feature Module] を選択して [Next] をクリックします。
  4. [Configure your new module] で、次のように入力します。

    1. [Base application module] プルダウン メニューからそのアプリ プロジェクトのベースアプリ モジュールを選択します。
    2. [Module name] にモジュール名を指定します。IDE はこの名前を使ってそのモジュールを Gradle 設定ファイル内の Gradle サブプロジェクトとして特定します。App Bundle をビルドする際、Gradle はそのサブプロジェクト名の最後の要素を使って、<manifest split> 属性を動的機能モジュールのマニフェストに挿入します。
    3. [package name] にモジュールのパッケージ名を指定します。Android Studio はデフォルトでは、ベース モジュールのルート パッケージ名と、1 つ前の手順で指定したモジュール名をつなげて、パッケージ名の候補とします。
    4. [Minimum API level] で、モジュールがサポートする最小 API レベルを選択します。この値はベース モジュールの値と一致している必要があります。
    5. [Module title] にモジュールのタイトルを半角 50 文字(全角 25 文字)以内で指定します。プラットフォームはこのタイトルを使用してモジュールを識別します。そのため、アプリのベース モジュールのタイトルを、文字列リソースとして指定して、翻訳できるようにする必要があります。Android Studio を使ってこのモジュールを作成すると、IDE はその文字列リソースをベース モジュールに追加して、次のようなエントリをその動的機能モジュールのマニフェストに挿入します。

      <dist:module
              ...
              dist:title="@string/title_dynamic_feature">
          </dist:module>
          
    6. このモジュールを Android 4.4(API レベル 20)以下を稼働するデバイスで利用可能にし、マルチ APK に含める場合は、[Fusing] チェックボックスをオンにします。Android Studio はデベロッパーの選択を反映させるために、モジュールのマニフェストに以下を挿入します。

      <dist:module>
              <dist:fusing dist:include="true" />
          </dist:module>
          
  5. [Finish] をクリックします。

Android Studio でモジュールの作成を終えた後、[Project] ペインでモジュールの内容を確認します(メニューバーから [View] > [Tool Windows] > [Project] を選択します)。デフォルトのコード、リソース、および構造は、標準のアプリ モジュールの場合と同様です。

オンデマンドでダウンロードする機能を実装した後は、Play のコアライブラリを使用してダウンロードをリクエストする方法をご確認ください。

アプリをデプロイする

Dynamic Delivery をサポートするアプリを開発する一方で、アプリを通常のように、接続されたデバイスにデプロイすることができます。それには、メニューバーから [Run] > [Run] を選択します(またはツールバーで実行アイコン をクリックします)。

アプリ プロジェクトに動的機能モジュールが含まれる場合、アプリのデプロイ時にどの動的機能を含めるかを選択できます。それには、次のように既存の実行 / デバッグ設定を変更します。

  1. メニューバーから [Run] > [Edit Configurations] を選択します。
  2. [Run/Debug Configurations] ダイアログの左パネルの [Android App] で該当するアプリの設定を選択します。
  3. [General] タブの [Dynamic features to deploy] で、アプリのデプロイ時に含める各動的機能モジュールのチェックボックスをオンにします。
  4. [OK] をクリックします。

デフォルトでは、Android Studio が Instant 対応のモジュールを Instant エクスペリエンスとしてデプロイしたり、App Bundle を使用してアプリをデプロイしたりすることはありません。代わりに、IDE は APK のサイズではなくデプロイの速度に関して最適化されている APK をビルドして、デバイスにインストールします。デフォルトではなく、App Bundle から APK と Instant エクスペリエンスをビルドしてデプロイするように Android Studio を設定するには、実行 / デバッグの設定を変更します。

参考情報

Dynamic Delivery のサポートについて詳しくは、以下のリソースをご覧ください。

サンプル

ブログ投稿

動画