サービスに関する最新情報

Android 17 の最初のベータ版

所要時間: 7 分
Matthew McCullough のプロフィールを表示
Matthew McCullough Android デベロッパー、プロダクト管理担当バイス プレジデント

本日、Android 17 の最初のベータ版をリリースします。Google は、プライバシー、セキュリティ、洗練されたパフォーマンスを優先するプラットフォームの構築に引き続き取り組んでいます。このビルドでは、Android アプリの適応性を高める取り組みを継続し、カメラとメディアの機能の大幅な強化、接続性を最適化する新しいツール、コンパニオン デバイスのプロファイルの拡張を導入しています。このリリースは、デベロッパー コミュニティに新しいリリースを提供する際の根本的な変化も示しています。従来のデベロッパー プレビュー モデルから Android Canary プログラムへの移行です。

デベロッパー プレビューの先

Android では、従来の「デベロッパー プレビュー」に代わり、継続的な Canary チャンネルが導入されました。この新しい「常時稼働」モデルには、主に次の 3 つのメリットがあります。

  • 迅速なアクセス: 機能と API は、四半期ごとのリリースを待つことなく、内部テストに合格するとすぐに Canary にリリースされます。
  • 安定性の向上: Canary で早期に「実地テスト」を行うことで、ベータ版の機能がより洗練され、新しい API や動作変更が最終版に近づきます。
  • テストの簡素化: Canary は OTA アップデートをサポートしているため、手動でフラッシュする必要がありません。また、別のアップデート チャンネルとして CI ワークフローに簡単に統合できるため、今後の潜在的な変更について、最も早い段階でフィードバックを提供できます。

Android 17 のスケジュール

このベータ版から、3 月を予定しているプラットフォームの安定版マイルストーンに迅速に移行する予定です。このマイルストーンでは、最終的な SDK / NDK API と、ほぼ最終的なアプリとのインターフェース動作が提供されます。この時点から最終リリースまで数か月あるため、その間にテストを完了できます。

timeline1.png

1 年間のリリース

Android 17 では、四半期ごとのリリースで引き続きアップデートを提供する予定です。第 2 四半期のリリースは、アプリの動作に影響する変更が予定されている唯一のリリースです。第 4 四半期には、API と機能を追加した SDK のマイナー リリースを予定しています。

timeline2.png

向きとサイズ変更の制限

Android 17 ベータ版のリリースに伴い、アダプティブ ロードマップの次のフェーズに移行します。Android 17(API レベル 37)では、大画面デバイス(sw > 600 dp)での画面の向きとサイズ変更の制限に関するデベロッパーのオプトアウトが削除されます。

アプリが SDK 37 をターゲットとする場合は、適応できるように準備する必要があります。ユーザーは、タブレットでのマルチタスク、デバイスの展開、デスクトップ ウィンドウ環境の使用など、あらゆる場面でアプリが動作することを期待しています。また、UI がスペースを埋め、デバイスの姿勢を尊重することを期待しています。

SDK 37 の主な変更点

Android 17 をターゲットとするアプリは、Android 16 で導入されたマニフェスト属性とランタイム API の段階的な廃止との互換性を確保する必要があります。大画面(小さい方のサイズが 600 dp 以上)で実行する場合、次の属性と API は無視されます。

マニフェスト属性/API無視される値
screenOrientationportrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape
setRequestedOrientation()portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape
resizeableActivityすべて
minAspectRatioすべて
maxAspectRatioすべて

免除とユーザー コントロール

これらの変更は大画面に固有のものであり、sw600dp より小さい画面(従来のストレート型スマートフォンを含む)には適用されません。また、ゲームのアプリのカテゴリ(android:appCategory フラグに基づく)は、これらの制限の対象外となります。

また、ユーザーが管理権限を保持していることも重要です。ユーザーは、システムのアスペクト比設定を使用して、アプリのデフォルトの動作を明示的に有効または無効にできます。

構成変更の更新

アプリの互換性を向上させ、動画再生の中断、入力のドロップ、その他の種類の破壊的な状態損失を最小限に抑えるため、Activity の再作成のデフォルトの動作を更新します。Android 17 以降、通常は UI の再作成を必要としない特定の構成変更(CONFIG_KEYBOARD、CONFIG_KEYBOARD_HIDDEN、CONFIG_NAVIGATION、CONFIG_UI_MODE(UI_MODE_TYPE_DESK のみが変更された場合)、CONFIG_TOUCHSCREEN、CONFIG_COLOR_MODE など)に対して、システムはデフォルトでアクティビティを再起動しなくなります。代わりに、実行中のアクティビティは onConfigurationChanged を介してこれらの更新を受け取ります。これらの変更のためにリソースを再読み込みする完全な再起動にアプリが依存している場合は、新しい android:recreateOnConfigChanges マニフェスト属性を使用して明示的にオプトインする必要があります。これにより、完全なアクティビティのライフサイクル(停止から破棄、再作成まで)をトリガーする構成変更を、関連する定数 mcc、mnc、新しい定数 keyboard、keyboardHidden、navigation、touchscreen、colorMode とともに指定できます。

アプリを準備する

この作業を簡単に行えるよう、ツールとドキュメントをリリースしました。こちらのブログ投稿では、一般的な問題に対処するための戦略など、より詳しいガイダンスをご紹介しています。アプリは、あらゆるアスペクト比のウィンドウ サイズで横向きと縦向きのレイアウトをサポートする必要があります。向きやアスペクト比を制限することはできなくなります。Android 17 ベータ版 1 を使用して、Google Pixel Tablet または Google Pixel Fold のエミュレータ(targetSdkPreview = "CinnamonBun" に設定)でアプリをテストすることをおすすめします。または、アプリ互換性フレームワークを使用して、Android 16 デバイスで UNIVERSAL_RESIZABLE_BY_DEFAULT を有効にすることをおすすめします。

パフォーマンス

ロックフリーの MessageQueue

Android 17 では、SDK 37 以降をターゲットとするアプリに、ロックフリー実装の android.os.MessageQueue の新しい実装が提供されます。新しい実装では、パフォーマンスが向上し、フレームの欠落が減少しますが、MessageQueue のプライベート フィールドとメソッドを反映するクライアントが破損する可能性があります。

世代別ガベージ コレクション

Android 17 では、ART の Concurrent Mark-Compact コレクタに世代別ガベージ コレクションが導入されています。この最適化により、完全ヒープ コレクションに加えて、リソース消費量の少ない若い世代のコレクションがより頻繁に実行されるようになります。これにより、ガベージ コレクションの全体的な CPU コストと所要時間を削減することを目指しています。ART の改善は、Google Play システム アップデートを通じて、Android 12(API レベル 31)以降を搭載した 10 億台以上のデバイスでも利用できます。

static final フィールドが真に final に

Android 17 以降、Android 17 以降をターゲットとするアプリは「static final」フィールドを変更できなくなります。これにより、ランタイムはパフォーマンスの最適化をより積極的に適用できるようになります。リフレクション(およびディープ リフレクション)を介してこれを行おうとすると、常に IllegalAccessException がスローされます。JNI の SetStatic<Type>Field メソッド ファミリーを介して変更すると、アプリが直ちにクラッシュします。

カスタム通知ビューの制限

メモリ使用量を削減するため、カスタム通知ビューのサイズを制限しています。今回のアップデートにより、アプリが URI を使用して既存の制限を回避できるという抜け穴が解消されます。この動作はターゲット SDK バージョンによって制限され、API 37 以降をターゲットとするアプリに適用されます。

新しいパフォーマンス デバッグ ProfilingManager トリガー

ProfilingManager にいくつかの新しいシステム トリガーが導入され、パフォーマンスの問題をデバッグするための詳細なデータを収集できるようになりました。これらのトリガーは、TRIGGER_TYPE_COLD_START、 TRIGGER_TYPE_OOM、 TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE です。

新しいシステム トリガーの設定方法については、トリガーベースのプロファイリングとプロファイリング データの取得と分析のドキュメントをご覧ください。

メディアとカメラ

Android 17 では、シームレスな移行や標準化されたラウドネスなどの機能により、メディアアプリやカメラアプリにプロ仕様のツールが提供されます。

動的なカメラ セッションの更新

updateOutputConfigurations() を CameraCaptureSession に導入しました。これにより、カメラ キャプチャ セッション全体を再構成することなく、出力サーフェスを動的にアタッチおよびデタッチできます。この変更により、カメラのユースケースとモード(静止画の撮影と動画の撮影など)をシームレスに切り替えることができます。カメラの起動時にアプリが必要とする可能性のあるすべてのカメラ出力サーフェスを構成して保持する必要がないため、メモリコストを削減し、コードの複雑さを軽減できます。これにより、操作中にユーザーに表示される不具合やフリーズを排除できます。

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

論理マルチカメラ デバイスのメタデータ

複数の物理カメラセンサーを組み合わせた論理カメラを使用する場合、メインの物理カメラだけでなく、キャプチャに関与するすべてのアクティブな物理カメラから追加のメタデータをリクエストできるようになりました。以前は、セカンダリ アクティブ カメラからメタデータを取得するために(ズーム用のレンズ切り替え時にフォロワー カメラがアクティブになる場合など)、回避策を実装する必要があり、不要な物理ストリームを割り当てることもありました。この機能により、CaptureRequest と CaptureResult に新しいキー LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS が導入されます。CaptureRequest でこのキーを ON に設定すると、TotalCaptureResult に、これらの追加のアクティブな物理カメラのメタデータが含まれます。この包括的なメタデータにアクセスするには、TotalCaptureResult.getPhysicalCameraTotalResults() を使用して、カメラアプリのリソース使用量を最適化できる詳細な情報を取得します。

Versatile Video Coding(VVC)のサポート

Android 17 では、Versatile Video Coding(VVC)標準のサポートが追加されています。これには、MediaFormat での video/vvc MIME タイプの定義、MediaCodecInfo への新しい VVC プロファイルの追加、MediaExtractor へのサポートの統合が含まれます。この機能は、ハードウェア デコードをサポートし、対応するドライバを搭載したデバイスで利用できるようになります。

動画撮影時の画質の安定性

MediaRecorder に setVideoEncodingQuality() を追加しました。これにより、動画エンコーダの固定品質(CQ)モードを構成できるため、単純なビットレート設定を超えて動画の画質をより細かく制御できます。

バックグラウンド音声の強化

Android 17 以降、オーディオ フレームワークは、オーディオ再生、オーディオ フォーカス リクエスト、音量変更 API などのバックグラウンド オーディオ インタラクションに制限を適用し、これらの変更がユーザーによって意図的に開始されるようにします。

アプリが有効なライフサイクルにないときにオーディオ API を呼び出そうとすると、オーディオ再生 API と音量変更 API は、例外がスローされたり、エラー メッセージが表示されたりすることなく、サイレントに失敗します。オーディオ フォーカス API は、結果コード AUDIOFOCUS_REQUEST_FAILED で失敗します。

プライバシーとセキュリティ

クリアテキスト トラフィック属性のサポート終了

android:usesCleartextTraffic 属性は非推奨になりました。アプリが Android 17 以降をターゲットとしていて、対応するネットワーク セキュリティ構成なしで usesCleartextTraffic="true" に依存している場合、デフォルトでクリアテキスト トラフィックが許可されなくなります。きめ細かい制御を行うには、ネットワーク セキュリティ構成ファイルに移行することをおすすめします。

HPKE ハイブリッド暗号

HPKE ハイブリッド暗号の実装用に、公開サービス プロバイダ インターフェース(SPI)を導入します。これにより、公開鍵暗号と対称暗号(AEAD)を組み合わせて安全な通信を実現できます。

接続性と通信

VoIP 通話履歴の強化

アプリの VoIP 通話履歴の統合に関するユーザー設定管理を導入します。これには、システム ダイヤラーでの発信者と参加者のアバター URI のサポート、通話履歴のプライバシーに関するきめ細かいユーザー制御、統合された VoIP 通話履歴の視覚的な表示の強化が含まれます。

Wi-Fi 測距と近接

Wi-Fi Ranging が新しい近接検出機能で強化され、継続的な測距と安全なピアツーピア検出がサポートされるようになりました。Wi-Fi Aware 測距の更新には、ピアハンドルの新しい API と 11az セキュア測距の PMKID キャッシュが含まれます。

デベロッパーの生産性とツール

コンパニオン デバイス アプリの更新

デバイスの識別と権限の処理を改善するため、CompanionDeviceManager に 2 つの新しいプロファイルが導入されました。

  • 医療機器: このプロファイルを使用すると、医療機器のモバイルアプリは 1 回のタップですべての必要な権限をリクエストできるため、セットアップ プロセスが簡素化されます。
  • フィットネス トラッカー: DEVICE_PROFILE_FITNESS_TRACKER プロファイルを使用すると、コンパニオン アプリはフィットネス トラッカーを管理していることを明示的に示すことができます。これにより、既存のスマートウォッチのロール権限を再利用しながら、個別のアイコンを使用して正確なユーザー エクスペリエンスを実現できます。

また、CompanionDeviceManager に、デバイスの関連付けと付近のデバイスの権限のリクエスト用の統合ダイアログが追加されました。AssociationRequest.Builder の新しい setExtraPermissions メソッドを使用すると、既存の関連付けフロー内で付近の権限プロンプトをバンドルし、ユーザーに表示されるダイアログの数を減らすことができます。

Android 17 を使い始める

サポート対象の Google Pixel デバイスを登録すると、このアップデートと今後の Android ベータ版のアップデートを無線(OTA)で入手できます。Google Pixel デバイスをお持ちでない場合は、Android Studio で Android Emulator で 64 ビット システム イメージを使用できます。

現在 Android ベータ プログラムに参加している場合は、ベータ版 1 への無線アップデートが提供されます。

Android 26Q1 ベータ版をご利用で、26Q1 の最終安定版リリースを適用してベータ版を終了する場合は、26Q2 ベータ版 1 への無線アップデートを無視して、26Q1 のリリースをお待ちください。

皆様からのフィードバックをお待ちしております。フィードバック ページから、問題の報告や機能リクエストの送信を行ってください。早期にフィードバックをお送りいただくと、最終リリースにより多くのフィードバックを反映させることができます。

Android 17 の開発エクスペリエンスを最適化するには、Android Studio(Panda)の最新のプレビュー版を使用することをおすすめします。設定が完了したら、次のことを行う必要があります。

  • 新しい SDK でコンパイルし、CI 環境でテストし、フィードバック ページのトラッカーで問題を報告してください。
  • 現在のアプリの互換性をテストし、Android 17 の変更による影響を受けるかどうかを確認します。また、Android 17 を搭載したデバイスまたはエミュレータにアプリをインストールして、広範なテストを行います。

プレビュー / ベータ版のシステム イメージと SDK は、Android 17 のリリース サイクル全体を通じて定期的に更新されます。ベータ版ビルドをインストールすると、それ以降のすべてのプレビュー版とベータ版のアップデートが無線(OTA)で自動的に提供されます。

詳しくは、Android 17 デベロッパー サイトをご覧ください。

アンケートに回答する

プラットフォームの安定版、そして今年後半の Android 17 の最終安定版のリリースに向けて、皆様からのフィードバックは引き続き Google にとって最も貴重な資産です。Canary チャンネルのアーリー アダプターの方も、Beta 1 でテストしているアプリ デベロッパーの方も、ぜひコミュニティに参加してフィードバックをお寄せください。ぜひお聞かせください。

作成者:
続きを読む