プロダクト ニュース

Android 17 の第 2 ベータ版

所要時間: 6 分
Matthew McCullough
Android デベロッパー、プロダクト マネジメント担当バイス プレジデント

本日、Android 17 の 2 つ目のベータ版をリリースします。プライバシー、セキュリティ、洗練されたパフォーマンスを重視したプラットフォームの構築に向けた取り組みを継続しています。このアップデートでは、スポイト API やプライバシーの保護型の連絡先ピッカーなど、さまざまな新機能が提供されます。また、高度な測距、クロスデバイス ハンドオフ API なども追加します。

このリリースでは、リリース ケイデンスの変更が継続されます。第 2 四半期にこの年次メジャー SDK リリースを行った後、マイナー SDK アップデートを行います。

ユーザー エクスペリエンスとシステム UI

バブル

バブルは、メッセージ バブル API とは別の新しいフローティング UI エクスペリエンスを提供するウィンドウ モード機能です。ランチャーでアプリアイコンを長押しすると、スマートフォン、折りたたみ式デバイス、タブレットにアプリバブルを作成できます。大画面では、タスクバーの一部としてバブルバーが表示されます。ユーザーは、バブルバーでバブルを整理したり、バブル間を移動したり、バブルを画面上のアンカー ポイントに移動したりできます。

Bubbles.gif

アプリがバブルとして正しく動作するように、マルチウィンドウ モードをサポートするためのガイドラインに沿って対応する必要があります。

バブルはベータ版 2 ではまだ完全に有効になっていません。Android 17 の今後のビルドでご確認ください。

EyeDropper API

新しいシステムレベルの EyeDropper API を使用すると、アプリは機密性の高い画面キャプチャ権限を必要とせずに、ディスプレイ上の任意のピクセルから色をリクエストできます。

Eyedropper_Tester.webp
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
  result -> if (result.resultCode == Activity.RESULT_OK) {
    val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
    // Use the picked color in your app
  }
}

fun launchColorPicker() {
  val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
  eyeDropperLauncher.launch(intent)
}

連絡先選択ツール

ACTION_PICK_CONTACTS を介した新しいシステムレベルの連絡先選択ツールにより、ユーザーがリクエストした特定のデータ フィールドのみに一時的なセッションベースの読み取りアクセス権が付与されるため、広範な READ_CONTACTS 権限の必要性が軽減されます。また、デバイスの個人用プロファイルまたは仕事用プロファイルから選択することもできます。

android-17-contact-picker.gif
val contactPicker = rememberLauncherForActivityResult(StartActivityForResult()) {
    if (it.resultCode == RESULT_OK) {
        val uri = it.data?.data ?: return@rememberLauncherForActivityResult
        // Handle result logic
        processContactPickerResults(uri)
    }
}

val dataFields = arrayListOf(Email.CONTENT_ITEM_TYPE, Phone.CONTENT_ITEM_TYPE)
val intent = Intent(ACTION_PICK_CONTACTS).apply {
    putStringArrayListExtra(EXTRA_PICK_CONTACTS_REQUESTED_DATA_FIELDS, dataFields)
    putExtra(EXTRA_ALLOW_MULTIPLE, true)
    putExtra(EXTRA_PICK_CONTACTS_SELECTION_LIMIT, 5)
}

contactPicker.launch(intent)

タッチパッドでのポインタ キャプチャの互換性が向上

以前は、アプリがポインタをキャプチャしたときに、タッチパッドはマウスとはまったく異なる方法でイベントを報告していました。マウスが報告する相対的な移動ではなく、パッド上の指の位置を報告していました。そのため、一人称視点のゲームでタッチパッドを適切にサポートすることが非常に困難でした。これで、タッチパッドがキャプチャされると、ポインタの移動とスクロールのジェスチャーがデフォルトで認識され、マウスイベントと同様に報告されるようになります。新しい「絶対」モードで明示的にキャプチャをリクエストすることで、以前の詳細な指の位置データをリクエストすることもできます。

// To request the new default relative mode (mouse-like events)
// This is the same as requesting with View.POINTER_CAPTURE_MODE_RELATIVE
view.requestPointerCapture()

// To request the legacy absolute mode (raw touch coordinates)
view.requestPointerCapture(View.POINTER_CAPTURE_MODE_ABSOLUTE)

インタラクティブ選択ツールの静止境界

Android の ChooserSessiongetInitialRestingBounds を呼び出すことで、アニメーションとデータ読み込みの完了後に Chooser が占めるターゲット位置をアプリで特定し、UI の調整をより適切に行うことができます。

接続性とクロスデバイス

クロスデバイス アプリのハンドオフ

新しいハンドオフ API を使用すると、Android タブレットなどの別のデバイスで再開するアプリケーションの状態を指定できます。有効にすると、システムは CompanionDeviceManager を介して状態を同期し、ユーザーの近くのデバイスのランチャーにハンドオフの候補を表示します。この機能は、タスクをシームレスに継続できるように設計されており、Android エコシステム全体でワークフローを中断したところから正確に再開できます。重要なのは、Handoff がネイティブ アプリ間の移行とアプリからウェブへのフォールバックの両方をサポートしていることです。これにより、最大限の柔軟性が実現し、受信側のデバイスにネイティブ アプリがインストールされていない場合でも、完全なエクスペリエンスが保証されます。

高度な距離測定 API

新たに 2 つの測距テクノロジーのサポートを追加します。

  1. UWB DL-TDOA: アプリが屋内ナビゲーションに UWB を使用できるようにします。この API サーフェスは FIRA(Fine Ranging Consortium)4.0 DL-TDOA 仕様に準拠しており、プライバシーを保護した屋内ナビゲーション(アンカーによるデバイスのトラッキングを回避)を可能にします。
  2. 近接検出: アプリが WFA(Wi-Fi Alliance)で採用されている新しい測距仕様を使用できるようにします。このテクノロジーにより、既存の Wi-Fi Aware ベースの測距仕様と比較して、信頼性と精度が向上します。

データプランの強化

メディア品質を最適化するため、アプリは getStreamingAppMaxDownlinkKbpsgetStreamingAppMaxUplinkKbps を使用して、ストリーミング アプリケーション用に割り当てられた最大データレートを取得できるようになりました。

コア機能、プライバシー、パフォーマンス

ローカル ネットワークへのアクセス

Android 17 では、ユーザーを不正なローカル ネットワーク アクセスから保護するため、ACCESS_LOCAL_NETWORK 実行時の権限が導入されました。これは既存の NEARBY_DEVICES 権限グループに該当するため、すでに他の NEARBY_DEVICES 権限を付与しているユーザーには、再度プロンプトが表示されることはありません。この権限を宣言してリクエストすることで、アプリはスマートホーム デバイスやキャスト レシーバなどのローカル エリア ネットワーク(LAN)上のデバイスを検出して接続できます。これにより、悪意のあるアプリが制限のないローカル ネットワーク アクセスを利用して、ユーザー トラッキングやフィンガープリントを密かに実行することを防ぎます。Android 17 以降をターゲットとするアプリには、LAN デバイスとの通信を維持するための 2 つの方法が用意されています。システムが仲介するプライバシー保護デバイス選択ツールを採用して権限プロンプトをスキップするか、実行時にこの新しい権限を明示的にリクエストしてローカル ネットワーク通信を維持します。

タイムゾーン オフセット変更ブロードキャスト

Android では、システム タイムゾーンのオフセットが変更されたときに(夏時間への移行時など)トリガーされる信頼性の高いブロードキャスト インテント ACTION_TIMEZONE_OFFSET_CHANGED が提供されるようになりました。これは、Unix タイムスタンプが変更されたときにトリガーされる ACTION_TIME_CHANGED と、タイムゾーン ID が変更されたときにトリガーされる ACTION_TIMEZONE_CHANGED という既存のブロードキャスト インテントを補完するものです。

NPU の管理と優先順位付け

Android 17 をターゲットとし、NPU に直接アクセスする必要があるアプリは、NPU へのアクセスがブロックされないように、マニフェストで FEATURE_NEURAL_PROCESSING_UNIT を宣言する必要があります。これには、LiteRT NPU デリゲート、ベンダー固有の SDK、非推奨の NNAPI を使用するアプリが含まれます。

ICU 78 と Unicode 17 のサポート

コア国際化ライブラリが ICU 78 に更新され、新しいスクリプト、文字、絵文字ブロックのサポートが拡大され、time オブジェクトの直接フォーマットが可能になりました。

SMS OTP 保護

Android では、OTP を含む SMS メッセージへのアクセスを自動的に遅延させることで、SMS OTP の保護を強化しています。以前は、主に SMS Retriever 形式に重点が置かれており、SMS Retriever ハッシュを含むメッセージの配信がほとんどのアプリで 3 時間遅延していました。ただし、デフォルトの SMS アプリなどの特定のアプリと、ハッシュに対応するアプリは、この遅延の対象外です。このアップデートにより、OTP を含むすべての SMS メッセージが保護の対象となります。ほとんどのアプリでは、OTP を含む SMS メッセージは 3 時間の遅延後にのみアクセス可能になります。これは、OTP のハイジャックを防ぐためです。SMS_RECEIVED_ACTION ブロードキャストは保留され、SMS プロバイダのデータベース クエリはフィルタされます。SMS メッセージは、遅延後にこれらのアプリで利用できるようになります。

WebOTP 形式の SMS メッセージへのアクセスが遅延する

アプリに SMS メッセージを読み取る権限があるものの、ドメイン認証によって OTP の対象受信者ではないと判断された場合、WebOTP 形式の SMS メッセージには 3 時間経過後にのみアクセスできます。この変更は、メッセージに記載されているドメインに関連付けられたアプリのみが確認コードをプログラマティックに読み取れるようにすることで、ユーザーのセキュリティを強化することを目的としています。この変更は、対象 API レベルに関係なく、すべてのアプリに適用されます。

OTP を使用した標準 SMS メッセージへのアクセス遅延

WebOTP または SMS Retriever 形式を使用しない OTP を含む SMS メッセージの場合、ほとんどのアプリで OTP SMS にアクセスできるのは 3 時間後のみとなります。この変更は、Android 17(API レベル 37)以上をターゲットとするアプリにのみ適用されます。

デフォルトの SMS アプリ、アシスタント アプリ、コネクテッド デバイスのコンパニオン アプリなど、一部のアプリはこの遅延の対象外となります。

OTP の抽出のために SMS メッセージの読み取りに依存するすべてのアプリは、機能を継続的に利用できるように、SMS Retriever API または SMS User Consent API を使用するように移行する必要があります。

Android 17 のスケジュール

このベータ版から、3 月を目標とするプラットフォームの安定性のマイルストーンに迅速に移行する予定です。このマイルストーンでは、最終版の SDK/NDK API を提供します。それ以降、アプリは SDK 37 をターゲットにして Google Play に公開できるようになり、Android 17 の一般提供が開始されるまでの数か月間、テストを完了してユーザー フィードバックを収集できます。

Android Release Timeline.png

1 年間のリリース

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

Android Release Timeline_2.png

Android 17 を使ってみる

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

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

Android 26Q1 ベータ版をご利用で、26Q1 の最終安定版に移行してベータ版を終了したい場合は、26Q2 ベータ版 2 への無線(OTA)アップデートを無視して、26Q1 のリリースをお待ちください。

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

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

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

Android 17 のリリース サイクルを通して、プレビュー/ベータ版のシステム イメージと SDK は定期的に更新されます。ベータ版ビルドをインストールすると、今後のアップデートが自動的に提供されます。

以降のすべてのプレビュー版とベータ版の無線(OTA)アップデート。

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

会話に参加する

プラットフォームの安定性と、今年後半の Android 17 の一般提供に向けて、皆様からのフィードバックは引き続き最も貴重な資産となります。Canary チャンネルのアーリー アダプターでも、Beta 2 でテストしているアプリ デベロッパーでも、コミュニティに参加してフィードバックを送信することを検討してください。ぜひお聞かせください。

作成者:

続きを読む