この記事は Seang Chau による Android Developers Blog の記事 " Android 13 is in AOSP! " を元に翻訳・加筆したものです。詳しくは元記事をご覧ください。
8 月 15 日に、Android 13 のソースを Android オープンソース プロジェクト (AOSP) にプッシュし、Android の最新バージョンを正式にリリースしました。Android 13 のデベロッパー向け機能は、プライバシーとセキュリティ、デベロッパーの生産性という中核テーマに焦点を合わせており、ユーザーのために優れたエクスペリエンスを簡単に作れるようにします。また、Google は Android をタブレットや大画面にとって優れた OS にするための機能強化を続け、ツールの改善をして、世界中で使われている 2 億 7,000 万台以上の大画面デバイスを活用できるようにしています。ユーザー向けの Android 13 の機能の詳細は、The Keyword の記事 (英語 / 和訳はこちら) をご覧ください。
8 月 15 日より、Pixel デバイスへの Android 13 の配信が始まりました。今年中には、皆さんの Samsung Galaxy、ASUS、HMD (Nokia 製スマートフォン)、iQOO、Motorola、OnePlus、Oppo、realme、シャープ、Sony、TECNO、Vivo、Xiaomi などのデバイスにも Android 13 が配信されます。
いつものように、皆さんが寄せてくださったフィードバックに感謝いたします。また、アプリで 8 月 15 日のリリースへの互換性を確保する作業をしていただいたことにも感謝しています。Android があらゆる人のための偉大なプラットフォームであるのは、皆さんのサポートや貢献があってこそです。
ここでは、Android 13 の新機能の一部を紹介します。Android 13 デベロッパー サイトでは、すべての新機能について詳しく説明しているので、そちらもご覧ください。
テーマ対応アプリアイコン - Android 13 では、Material You のダイナミック カラーをすべてのアプリアイコンに拡張し、ユーザーが壁紙の色合いなどのテーマ設定を継承したアイコンを利用できるようにします。アプリで必要なのは、モノクロのアプリアイコンを提供し、アダプティブ アイコンの XML を微調整するだけです。詳しくはこちらをご覧ください。
アプリごとの言語設定 - Android 13 では、システム言語とは違う言語でアプリを使いたい多言語ユーザーを簡単にサポートできるようになっています。この機能をオプトイン (英語) したアプリには、標準の [App language] 設定パネルが表示されます。新しいプラットフォーム API (英語) を呼び出すと、実行時にユーザーが希望する言語 / 地域を取得したり設定したりできるので、ボイラープレート コードを減らして互換性の向上をすることができます。詳しくはこちら (英語) をご覧ください。
テキスト サポートの改善 - Android 13 にはテキストと言語の改善が含まれており、さらに洗練されたエクスペリエンスを提供できます。ハイフネーションの高速化では、ハイフネーションのパフォーマンスを最適化して 200% 近く向上させ、TextView で有効化してもレンダリング パフォーマンスにほとんど影響を与えなくなっています。テキスト変換 API は、日本語や中国語などの表音文字入力を使う場合に、検索やオートコンプリートを高速化します。Android 13 では、非ラテン文字(タミル文字、ビルマ文字、テルグ文字、チベット文字など)の行の高さの改善も行っているので、表示の際に文字が切れることはなくなり、読みやすくなります。詳しくはこちらをご覧ください。
カラー ベクター フォント - Android 13 では、COLR バージョン 1 (仕様 (英語)、紹介動画 (英語) ) フォントのレンダリングがサポートされ、システムの絵文字が COLRv1 形式にアップデートされます。COLRv1 は、非常にコンパクトな新しいフォント形式で、サイズを問わず高速にくっきりと表示できます。システムがすべての処理をしてくれるので、ほとんどのアプリでは何もしなくても動作します。詳しくは こちら (英語) をご覧ください。
クイック設定配置 API - Android 13 では、カスタムのクイック設定タイル (英語) を提供するアプリで、ユーザーが簡単にタイルを見つけられるようになります。新しいタイル配置 API (英語) を使うと、アプリを離れることなく、1 つの手順でカスタムのクイック設定タイルを直接追加するプロンプトを表示できます。詳しくはこちらをご覧ください。
プログラマブル シェーダー - Android 13 では、プログラム可能な RuntimeShader (英語) オブジェクトが導入されます。このオブジェクトの動作は、Android Graphics Shading Language (AGSL) (英語) で定義できます。このシェーダーを使うと、アプリでリップル、ブラー、ストレッチなどの高度な効果を作成できます。詳しくはこちら (英語) をご覧ください。
PlaybackState からのメディア コントロールの導出 - Android 13 をターゲットとしているアプリでは、システムが PlaybackState (英語) アクションからメディア コントロールを導出します。これにより、すべてのスマートフォンやタブレット デバイスで一貫した高度なコントロールが可能になり、Android Auto や Android TV などの他の Android プラットフォームとの整合性も向上します。詳しくはこちらをご覧ください。
Bluetooth LE Audio - 次世代ワイヤレス オーディオである LE (低電力) Audio (英語) は、友だちや家族にオーディオを共有またはブロードキャストしたり、情報や娯楽、ユーザー補助を目的として一般公開されているブロードキャストをサブスクライブしたりするといった新しいユースケースを実現します。また、電池寿命を犠牲にすることなく、非常に再現性の高いオーディオを受信し、ユースケース間でシームレスな切り替えができるように設計されています。Android 13 は LE Audio をビルトインでサポートするので、デベロッパーは互換デバイスで新機能を利用できます。詳しくはこちら (英語) をご覧ください。
MIDI 2.0 - Android 13 は、新しい MIDI 2.0 規格 (英語) をサポートします。これには、USB 経由で MIDI 2.0 ハードウェアに接続する機能も含まれます。この最新規格では、コントローラの分解能の増加、西洋以外の音調のサポート強化、音符単位のコントローラによる演奏の表現力向上などの機能が提供されます。詳しくはこちら (英語) をご覧ください。
OpenJDK 11 アップデート - Android 13 では、コア ライブラリを OpenJDK 11 LTS リリースに合わせています。これには、ライブラリのアップデートと、アプリやプラットフォーム デベロッパー向けの Java 11 プログラミング言語のサポートの両方が含まれます。また、Google Play システム アップデートにより、さらに多くのデバイスにコア ライブラリの変更を提供することを計画しています。このアップデートは、Android 12 以降を実行するデバイスを対象に、ART モジュール アップデートの一環として行う予定です。詳しくはこちらをご覧ください。
予測可能な「戻る」ジェスチャー - Android 13 には、「戻る」イベントを処理することを事前にシステムに伝えるための新しい API が導入されます。これは Ahead-Of-Time モデルと呼ばれる手法です。この新しいアプローチは複数年にわたる作業 (動画/英語) の一環であり、予測可能な「戻る」ジェスチャーをサポートできるようにします。今回のリリースではデベロッパー オプションからテストできるようになっています。詳しくはこちら (英語) をご覧ください。
Android 13 は今年リリースした 12L アップデート (英語) を拡張したもので、タブレットでのエクスペリエンスがさらに改善されています。マルチタスク用ツールバーの強化、システム UI やアプリでの大画面向けのレイアウトや最適化の継続、アプリの互換性モードの改善などの機能が含まれています。タブレットや Chromebook、折りたたみ式ですばらしいエクスペリエンスを実現するツールを提供する取り組みは、現在も継続しています。詳細については、大画面向けの最適化を始める方法や、大画面デベロッパー リソースをご覧ください。
写真ピッカーと API - システムの新しい写真ピッカーが、プライバシーを保護しつつローカルやクラウドにある写真を共有する標準的な方法を提供します。写真ピッカーは、Android で長年使われているドキュメント ピッカーを拡張し、ユーザーが特定の写真や動画をアプリと簡単に共有できるようにします。デバイス上のすべてのメディア ファイルを参照できるパーミッションをアプリに付与する必要はありません。写真ピッカーでは写真や動画に特化した操作ができるようになっており、アプリから共有メディア ファイルにアクセスする API が含まれています。この写真ピッカーは、Google Play システム アップデートを受信している Android 11 以降のデバイス(Go デバイスは除く)で利用できます。詳しくはこちら (英語) をご覧ください。
通知パーミッション - ユーザーが最も重要な通知に集中できるようにするために、Android 13 には新しい通知ランタイム パーミッション (英語) が導入されます。アプリは、通知を送信する前に、ユーザーに対してこの通知パーミッションをリクエストする必要があります。Android 12 以前をターゲットにするアプリでは、システムがアップグレード フローを処理します。詳しくはこちら (英語) をご覧ください。
近くにあるデバイスの Wi-Fi パーミッション - Android 13 では、近くにあるアクセス ポイントへの Wi-Fi 接続を管理するアプリに対して、NEARBY_WIFI_DEVICES (英語) ランタイム パーミッションを導入します。新しいパーミッションは多くのよく使われる Wi-Fi API に必要で、Wi-Fi 経由で近くにあるデバイスを検出したり接続したりできるようにします。その際に、位置情報のパーミッションを取得する必要はなくなります。詳しくはこちら (英語) をご覧ください。
メディア ファイルにアクセスする細かいパーミッション - 写真や動画を共有する場合は、ユーザー フレンドリーでパーミッションが不要なソリューションである写真ピッカーがお勧めですが、Android 13 では、まだ写真ピッカー (英語) に移行していないアプリやオーディオを扱うアプリのために、細かいメディア パーミッションを追加しています。この新しいパーミッションは READ_EXTERNAL_STORAGE (英語) パーミッションに替わるもので、イメージ、動画、オーディオなど、特定の種類のメディア ファイルにアクセスできます。可能な限り、アプリを写真ピッカーに移行することをお勧めしますが、それができない場合は、Android 13 をターゲットにするときに細かいメディア パーミッションをお使いください。詳しくはこちらをご覧ください。
デベロッパーがダウングレード可能なパーミッション - Android 13 より、ユーザーが以前に付与したパーミッションが不要になったアプリで、新しい API (英語) を使ってパーミッションをダウングレードできます。使わなくなったパーミッションを削除することで、必要最低限のパーミッションのみ使うことを示せるので、ユーザーの信頼が向上します。詳しくはこちらをご覧ください。
インテント フィルタの安全なエクスポート - Android 13 をターゲットにしたアプリでは、別のアプリからエクスポートされたインテント フィルタに明示的インテントを送る際に適用されるルールが厳格化されます。アクションを指定するインテントについては、受信側で宣言された <intent-filter> 要素にインテントが一致する場合にのみ、システムにより、エクスポートされたコンポーネントにインテントが送信されます。詳しくはこちらをご覧ください。
Android 13 では、ART ランタイムのアップデートにより、すべてのアプリのパフォーマンスと効率が向上しています。また、Google Play システム アップデートにより、さらに多くの Android ユーザーに改善を提供することを計画しています。このアップデートは、Android 12 以降を実行するデバイスを対象に、継続中の ART モジュール アップデートの一環として行う予定です。
ガベージ コレクションの改善 - 今後の Google Play システム アップデートで、Android 13 デバイスの ART に、Linux カーネル機能 userfaultfd に基づいた新しいガベージ コレクタを導入します。新しいガベージ コレクタでは、読み取りのバリアがなくなり、読み込まれたオブジェクト当たりの固定オーバーヘッドもなくなるため、メモリ負荷が減少し、コンパイル済みのコードのサイズが最大 10% 縮小します。圧縮が進むにつれてページが解放されるので、GC 時間の効率も上がります。新しいガベージ コレクタを使うと、電池の節約、GC 実行中のジャンクの回避、低メモリによるアプリ終了の防止といった全般的な効果を得ることができます。
ART の全般的な最適化 - Android 13 では、ART によってネイティブ コードとの間の切り替えや切り戻しが大幅に高速化され、JNI の呼び出しが最大 2.5 倍高速になっています。また、ランタイムの参照処理を再構築し、ほぼブロックが発生しなくなったことで、さらにジャンクが減少しています。新しいパブリック API である Reference.refersTo() (英語) も公開しました。この API は、到達不能なオブジェクトをすぐに再利用したい場合に役立ちます。また、クラスやメソッドの検索を最適化することで、インタープリタも高速化しました。さらに、ART が行うインストール時のバイトコード検証が増加しているので、実行時の検証コストが下がり、アプリの起動時間が短縮されています。詳しくはこちら (動画/英語)をご覧ください。
8 月 15 日、Android 13 が AOSP に一般公開リリースされたので、ユーザーがスムーズに Android 13 に移行できるようにするために、すべての Android デベロッパーの皆さんに互換性テストを終えて、できる限り早くアップデートを公開することをお願いします。
アプリの互換性をテストするには、Android 13 が動作するデバイスにインストールし、アプリのフローを確認して機能や UI の問題を探します。まず、Android 13 でのすべてのアプリが対象となる動作の変更点を確認し、現在のアプリが影響を受ける可能性がある領域を集中的にテストしてください。特にテストしておくべき変更点は、以下のとおりです。
アプリのライブラリや SDK の互換性テストも忘れずに行ってください。SDK の問題を見つけた場合は、最新バージョンの SDK にアップデートするか、デベロッパーに連絡してサポートを求めてください。
現行のアプリについて互換性のあるバージョンを公開すると、アプリの targetSdkVersion をアップデートするプロセスを開始できます。Android 13 をターゲットとしたアプリの動作の変更点を確認し、互換性フレームワークを使って問題をすばやく検知します。
Android 13 によってタブレットのエクスペリエンスが向上するので、アプリが最適な見栄えになるようにしてください。Android Studio で Android エミュレータをセットアップすると、大画面機能をテストできます。または、Android 13 ベータ版パートナー (英語) の大画面デバイスを使うことができます。以下に、注意すべき点を示します。
Android 13 のタブレット機能とテスト内容の詳細は、こちらからご覧ください。
8 月 15 日より、Pixel デバイスへの Android 13 の配信が始まりました。
現在 Android ベータ版プログラムに登録している方は、Android 13 の最終リリースを受け取ります。登録は今後も継続されるので、今年中に始まるベータ版アップデートで Android 13 の機能の追加を受信できます。デバイスをワイプせずにベータ版アップデートの登録を解除したい方は、Android 13 最終リリースを受け取ってから、Android 13 の機能の追加のベータ版を初めて受け取るまでの間に、Android ベータ版サイトにアクセスしてオプトアウトをしてください。
Pixel デバイス用のシステム イメージもこちら (英語) で公開しています。手動でダウンロードして更新する際に使用できます。最新の Android Emulator システム イメージは、Android Studio の SDK Manager から入手できます。Android 13 のソースを探している方は、Android オープンソース プロジェクトの Android 13 ブランチの下にあるリポジトリにあります。こちら (英語) をご覧ください。
繰り返しますが、早期プレビューやベータ版のプログラムにご参加いただき、ありがとうございました。Android 13 に対応した皆さんのアプリを楽しみにしています。
Java および OpenJDK は Oracle および/またはその関連会社の商標または登録商標です。