プロダクト ニュース

Android 17 の最初のベータ版

所要時間: 7 分
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)では、大画面デバイス(画面幅 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すべて

除外とユーザー制御

これらの変更は大画面に固有のものであり、画面幅 600 dp 未満の画面(従来のスレート型スマートフォンを含む)には適用されません 。また、ゲームとして分類されるアプリ(android:appCategory フラグに基づく)は、これらの制限から除外されます。

ユーザーが引き続き制御できることも重要です。システムの画面のアスペクト比の設定を使用して、アプリのデフォルトの動作を明示的にオプトイン/オプトアウトできます。

構成変更の更新

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

アプリを準備する

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

パフォーマンス

ロックフリー MessageQueue

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

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

Android 17 では、ART の並行マーク圧縮コレクタに世代別ガベージ コレクションが導入されています。この最適化により、完全ヒープ コレクションに加えて、リソース消費量の少ない若い世代のコレクションがより頻繁に実行され、ガベージ コレクションの 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 では、シームレスなトランジションや標準化されたラウドネスなどの機能により、メディア アプリとカメラアプリにプロフェッショナル グレードのツールが提供されます。

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

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

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
    }
}

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

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

Versatile Video Coding(VVC)のサポート

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

動画撮影の一定の品質

MediaRecorder に set0}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 測距が新しい近接検出機能で強化され、継続的な測距と安全なピアツーピア検出がサポートされています。Wi-Fi Aware測距のアップデートには、ピアハンドルと 11az の安全な測距のための PMKID キャッシュ用の新しい API が含まれています。

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

コンパニオン デバイスのアプリのアップデート

デバイスの区別と権限処理を改善するため、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 への無線(OTA)アップデートが提供されます。

Android 26Q1 ベータ版をお持ちで、26Q1 の最終安定版リリースを入手してベータ版を終了する場合は、26Q2 ベータ版 1 への無線(OTA)アップデートを無視して、26Q1 のリリースを待つ必要があります。

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

Android 17 の開発エクスペリエンスを最適化するには、Android Studio(Panda)の最新プレビュー版を使用することをおすすめします。セットアップが完了したら、次のことを行ってください。

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

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

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

会話に参加する

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

作成者:

続きを読む