本日、Android 17 の最初のベータ版をリリースします。Google は、プライバシー、セキュリティ、洗練されたパフォーマンスを重視したプラットフォームの構築に取り組んでいます。このビルドでは、Android アプリの適応性を高める作業を継続し、カメラとメディアの機能を大幅に強化し、接続を最適化するための新しいツールを導入し、コンパニオン デバイスのプロファイルを拡張しています。また、このリリースでは、デベロッパー コミュニティに新しいリリースを提供する方法が、従来のデベロッパー プレビュー モデルから Android Canary プログラムへと根本的に変わっています。
デベロッパー プレビューの先へ
Android では、従来の「デベロッパー プレビュー」が継続的な Canary チャンネル に置き換えられました。この新しい「常時稼働」モデルには、次の 3 つの主なメリットがあります。
- 迅速なアクセス: 機能と API は、四半期ごとのリリースを待つのではなく、内部テストに合格するとすぐに Canary に追加されます。
- 安定性の向上: Canary での早期の「実戦テスト」により、新しい API と動作変更が最終版に近い、洗練されたベータ版エクスペリエンスが実現します。
- テストの簡素化: Canary は OTA アップデートをサポートし(手動での書き込みは不要)、独立したアップデート チャンネルとして CI ワークフローとの統合が容易になり、今後の潜在的な変更について迅速にフィードバックを提供できる早期の機会が得られます。
Android 17 のスケジュール
このベータ版から、3 月に予定されているプラットフォームの安定版のマイルストーンに迅速に移行します。このマイルストーンでは、最終版の SDK/NDK API と、ほぼ最終版のアプリとのインターフェース動作を提供します。最終リリースまでの数か月間、テストを完了できます。
1 年間のリリース
Android 17 は、四半期ごとのリリースでアップデートが継続される予定です。第 2 四半期の今後のリリースでは、アプリの動作を中断させる可能性のある変更が導入されます。第 4 四半期には、追加の API と機能を備えたマイナー SDK リリースを予定しています。
画面の向きとサイズ変更の制限
Android 17 ベータ版のリリースに伴い、適応型ロードマップの次のフェーズに移行します。Android 17(API レベル 37)では、大画面デバイス(画面幅 600 dp 超)での画面の向きとサイズ変更の制限に対するデベロッパーのオプトアウトが削除されます。
アプリが SDK 37 をターゲットとする場合は、適応できるように準備する必要があります。ユーザーは、タブレットでのマルチタスク、デバイスの展開、デスクトップ ウィンドウ環境の使用など、あらゆる場所でアプリが動作することを期待しています。また、UI がスペースを埋め、デバイスの姿勢を尊重することを期待しています。
SDK 37 の主な変更点
Android 17 をターゲットとするアプリは、Android 16 で導入されたマニフェスト属性とランタイム API の段階的な廃止との互換性を確保する必要があります。大画面(小さい方のサイズが 600 dp 以上)で実行する場合、次の属性と API は無視されます。
| マニフェスト属性/API | 無視される値 |
| screenOrientation | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
| setRequestedOrientation() | portrait、reversePortrait、sensorPortrait、userPortrait、landscape、reverseLandscape、sensorLandscape、userLandscape |
| resizeableActivity | すべて |
| minAspectRatio | すべて |
| maxAspectRatio | すべて |
例外とユーザー制御
これらの変更は大画面に固有のものであり、sw600dp 未満の画面(従来の**フォーム ファクタ**のスマートフォンを含む)には適用されません 。また、ゲームとして分類されるアプリ(android:appCategory フラグに基づく)は、これらの制限の対象外です。
ユーザーが引き続き制御できることも重要です。システムの画面のアスペクト比の設定を使用して、アプリのデフォルトの動作を明示的にオプトイン/オプトアウトできます。
構成変更の更新
アプリの互換性を向上させ、動画再生の中断、入力の欠落、その他の種類の破壊的な状態の損失を最小限に抑えるため、アクティビティの再作成のデフォルトの動作を更新しています。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 を指定できます。
アプリを準備する
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 では、シームレスなトランジションや標準化されたラウドネスなどの機能を備えたプロフェッショナル向けのツールがメディア アプリとカメラアプリに提供されます。
動的なカメラセッションの更新
CameraCaptureSession に updateOutputConfigurations() が導入されました。これにより、カメラ キャプチャ セッション全体を再構成することなく、出力サーフェスを動的にアタッチおよびデタッチできます。この変更により、カメラの起動時にアプリが必要とする可能性のあるすべてのカメラ出力サーフェスを構成して保持する際のメモリコストとコードの複雑さを回避し、カメラのユースケースとモード(静止画の撮影と動画の撮影など)をシームレスに切り替えることができます。これにより、操作中にユーザーに表示される不具合やフリーズを解消できます。
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 に設定すると、CaptureRequest でこのキーを ON に設定すると、TotalCaptureResult にこれらの追加のアクティブな物理カメラのメタデータが含まれます。TotalCaptureResult.getPhysicalCameraTotalResults() を使用してこの包括的なメタデータにアクセスすると、カメラ アプリケーションのリソース使用量を最適化できる詳細情報を取得できます。
Versatile Video Coding(VVC)のサポート
Android 17 では、Versatile Video Coding(VVC)標準がサポートされています。これには、MediaFormatでvideo/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 ベータ版アップデートを無線で入手できます。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 を実行しているデバイスまたはエミュレータにアプリをインストールして、徹底的にテストします。
Android 17 のリリース サイクル全体を通して、プレビュー/ベータ版のシステム イメージと SDK を定期的に更新します。ベータ版ビルドをインストールすると、それ以降のすべてのプレビュー版とベータ版のアップデートが無線で自動的に提供されます。
詳細については、Android 17 デベロッパー サイトをご覧ください。
会話に参加する
今年後半にプラットフォームの安定版 と Android 17 の最終安定版リリースに向けて進むにつれて、フィードバックは最も貴重なアセットとなります。Canary チャンネルの早期導入者でも、ベータ版 1 でテストしているアプリ デベロッパーでも、コミュニティに参加してフィードバックを送信してください。ぜひお聞かせください。
続きを読む
-
プロダクト ニュース
本日、The Android Show で発表されたように、Android はオペレーティング システムからインテリジェンス システムに移行し、アプリとのエンゲージメントの機会を増やしています。
Matthew McCullough • 所要時間 4 分
-
プロダクト ニュース
本日、複雑な推論と自律的なツール呼び出し機能を備えた最新の最先端オープンモデルである Gemma 4 を使用して、Android 開発を強化します。
Matthew McCullough • 所要時間 2 分
-
プロダクト ニュース
Android 17 は、本日ベータ版 3 でプラットフォームの安定版に正式に到達しました。つまり、API サーフェスがロックされています。最終的な互換性テストを実施し、Android 17 をターゲットとするアプリを Google Play ストアに公開できます。
Matthew McCullough • 所要時間 5 分
最新情報の入手
Android 開発に関する最新の分析情報を毎週メールでお届けします。