Dynamic System Updates(DSU)

Dynamic System Updates(DSU)は、Android 10 で導入されたシステム機能で、以下の処理を行うことができます。

  • 新しい GSI や各種 Android システム イメージをデバイスにダウンロードします。
  • 新しい動的パーティションを作成します。
  • ダウンロードした GSI を新しいパーティションにロードします。
  • GSI をゲスト OS としてデバイス上でブートします。

DSU を使用すると、現在のシステム イメージと GSI を簡単に切り替えることができるため、現在のシステム イメージを破損することなく GSI を試すことができます。

DSU の要件

DSU は Android 動的パーティション機能に依存しており、使用する GSI は Google または OEM によって認定システム イメージとして署名されている必要があります。

DSU はデバイス メーカーが提供する機能です。お使いのデバイスが対応しているかどうかについては、デバイス メーカーのサポートページをご覧ください。Google では、Android 10 Beta 4 リリースから、Pixel 3 以降のデバイスで DSU を有効にしています。

DSU とコマンドラインを使用して GSI をインストールする

このセクションでは、DSU とコマンドラインを使用して GSI をインストールする方法を説明します。

DSU 機能フラグを有効にする

DSU を使用する前に、対応する機能フラグが有効になっているか確認してください。フラグを有効にするには、次のいずれかを行います。

  • userdebug Android ビルドを搭載したデバイスの場合: [設定] > [システム] > [開発者向けオプション] > [機能フラグ] > [settings_dynamic_system] で、この機能を有効にできます。
  • その他のデバイスの場合: 次の adb コマンドを使用します。

    adb shell setprop persist.sys.fflag.override.settings_dynamic_system true
    

DSU を起動する

機能を有効にしたら、adb ツールを使用して DSU を起動します。

  1. GSI リリースページまたは別の GSI イメージ サーバーから、GSI をダウンロードします。

  2. GSI を gzip で圧縮します。

    gzip -c system_raw.img > system_raw.gz
    
  3. GSI をデバイスにプッシュします。

    adb push system_raw.gz /storage/emulated/0/Download/
    
  4. adb を使用して DSU を起動します。

    adb shell am start-activity \
    -n com.android.dynsystem/com.android.dynsystem.VerificationActivity  \
    -a android.os.image.action.START_INSTALL  \
    -d file:///storage/emulated/0/Download/system_raw.gz  \
    --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1)  \
    --el KEY_USERDATA_SIZE 8589934592
    

    次のような通知はインストールのステータスを示しています。

    GSI のインストール状況を示す通知

GSI をブートする

図 1. DSU の制御に使用できる永続的な通知。

DSU が GSI のインストールを完了すると、DSU メニューが永続的な通知としてシステム通知ドロワー内に表示されます(図 1 を参照)。

この段階で、次のいずれかを行うことができます。

  • [再起動] をタップして GSI をブートする。
  • [破棄] をタップして GSI をクリーンアップする。

デバイスの元のシステム イメージに戻す

GSI を使用してアプリのテストが完了したら、コードリブートを実行し、元のシステム イメージに戻してシステムをブートできます。

次回のリブート時に GSI を使用するように設定する場合、スティッキー モードを有効にすると、GSI が破棄されるまで複数のブートサイクルを横断してインストール状態を維持することができます。スティッキー モードを無効にすると、単一のブートサイクルだけで GSI を使用できます。

スティッキー モードを有効にするには、次のコマンドを使用します。

adb shell gsi_tool enable

スティッキー モードを無効にするには、次のコマンドを使用します。

adb shell gsi_tool disable
adb shell gsi_tool enable -s
adb shell gsi_tool disable

DSU と DSU ローダを使用して GSI をインストールする

Android 11 には DSU ローダが導入されました。これはデバイスの開発者向けオプションにある、システムの UI から GSI を完全にダウンロード、インストール、管理できるツールです。

DSU ローダを使用して GSI をインストールするには、Android 11 以降を搭載するデバイスで次の手順を行います。

  1. デバイスの開発者向けオプションを有効にします。
  2. デバイスの設定アプリを開き、[開発者向けオプション] > [DSU ローダ] をタップします。
  3. デバイスにインストールする GSI を選択します。

    GSI を選択するための DSU ローダ インターフェース

  4. GSI の利用規約に同意します。

    利用規約に同意すると、選択した GSI のダウンロードが開始されます。ダウンロードのステータスは DSU 通知によって確認できます。

  5. ダウンロードが完了したら、[再起動] をタップして GSI をブートします。

    GSI を管理するオプションがある DSU 通知

  6. デバイスの元のシステム イメージに戻すには、DSU システム通知から [再起動] をタップします。

    元のシステム イメージを使用してデバイスを再起動できるオプションがある DSU 通知

フィードバックを送信

お寄せいただいたフィードバックは、DSU やその他の GSI の機能向上に役立てさせていただきます。ご意見やご感想、または GSI の問題を報告いただく場合は、GSI のバグの報告、Stack Overflow に関するトピックのディスカッション、Reddit の GSI ページへの投稿をご利用ください。