Googleがスマホなど向け次期OS「Android 14」の開発者向けプレビュー版をリリース!

Googleは8日(現地時間)、スマートフォン(スマホ)やタブレットなど向けプラットフォーム「Android」の次期バージョン「Android 14」(開発コード名:UpsideDownCake)を発表しています。合わせて開発者向けプレビュー版「Android 14 Developer Preview 1」( https://developer.android.com/about/versions/14 )を公開しています。

今回提供されたAndroid 14 Developer Preview 1はAndroidエミュレーターのほか、Pixel 4a (5G)、Pixel 5、Pixel 5a、Pixel 6、Pixel 6 Pro、Pixel 6a、Pixel 7、Pixel 7 ProでテストするためのファクトリーイメージやSDKが含まれており、ファクトリーイメージからパソコン(PC)と接続して「Android Flash Tool」を使って導入するようになっています。

なお、ネットワーク経由によるソフトウェア更新(OTA)は現時点では用意されておらず、今後提供が開始される予定の一般向けベータ版「Android Beta Program」( https://g.co/androidbeta )によって提供され、ベータ版はPixelシリーズ以外にも従来通りに他メーカーの一部製品にも順次提供される見込み。

Android 14 Developer Preview 1のPixelシリーズにおけるビルド番号は「UPP1.230113.009」で、Androidセキュリティーパッチレベルは「February 2023」となっており、Google Play servicesは「23.03.13」となります。またエミュレーターではx86 64bitとARM v8-Aがサポートされ、APIレベルは「U DP1」となっているということです。


Android 14は現在の最新バージョンの「Android 13」の次のメジャーアップデートとなる予定のバージョンで、最近の流れであるセキュリティーやプライバシーをより拡充しており、さらにパフォーマンスやユーザーカスタマイズの機能を強化し、開発者向けにも生産性を向上する取り組みと続けており、これまで通りに正式版に向けて徐々にAndroid 14の新機能を追加していくということです。

また最近では四半期ごとに新機能「Feature Drop」を追加しており、Android Beta Programでもプラットフォームリリース(QPR)を実施し、年間を通じて拡張機能と新機能を提供し続けてAndroidの継続的な改善に重要な役割を果たしているとのこと。またAndroid 14でも引き続いてAndroid 12LやAndroid 13で提供されたタブレットやフォルダブルスマホなどの大画面に適用する取り組みが継続されます。

なお、Developer PreviewやBetaでは変更の簡単なテストとデバッグができるようになっており、アプリに影響を与える可能性のあるオプトインの変更を簡単にテストできるようにするために今年はそれらの多くを再び切り替え可能にします。トグルを使用すると、開発者向けオプションまたはadbから個別に変更を強制的に有効または無効にすることができます。詳細は https://developer.android.com/about/versions/14/reference/compat-framework-changes をご覧ください。


Android 14の正式版のリリースまでのスケジュールは今回のDeveloper Preview 1に続いて3月に「Developer Preview 2」、4月に初のベータ版となる「Beta 1」が提供され、5月に「Beta 2」、6月に最初の安定版(Platform Stability)となる「Beta 3」、7月に正式版に近い最終テストとなる「Beta 4」や「Beta 5」が提供され、その後にAOSPとエコシステム向けの正式版がリリースされる予定となっています。今回、案内された新機能は以下の通り。

<バックグラウンド作業の合理化>
Android 14 ではアプリの連携方法を最適化してシステムの状態とバッテリー寿命を改善し、ユーザーエクスペリエンス(UX)を向上させるための努力を続けています。

・JobSchedulerとForeground Servicesの更新と追加
Wi-Fiが利用可能なときに大きなファイルをダウンロードするなど、いくつかのバックグラウンド作業を実行するのは必要以上に複雑です。アプリ開発を簡素化して潜在的にUXを向上させるため、この作業の標準パスを作成しています。 Androidがリソース消費とバッテリー寿命を改善できるようにフォアグラウンドサービスをどのように使用するかについてもより優先度の高いタスクのみに予約するようにしています。

Android 14では既存のAndroid API(フォアグラウンドサービスとJobScheduler)に変更を加えています。これには利用者が開始するデータ転送のための新しい機能の追加やフォアグラウンド サービスタイプを宣言するための更新された要件が含まれます。利用者が開始したデータ転送ジョブによって特にWi-Fiのみでダウンロードするなどの制約が必要な場合に利用者が開始したダウンロードとアップロードの管理が容易になります。

またフォアグラウンドサービスタイプを宣言するという要件によってフォアグラウンドサービスに適したケースを明確にしながらアプリのバックグラウンド作業の意図を明確に定義できます。 さらにGoogle PlayはこれらのAPIの適切な使用を確保するための新しいポリシーを展開する予定です。詳細は近日中に発表されます。

・最適化されたブロードキャスト
バッテリー寿命と応答性を改善するために内部ブロードキャストシステムにいくつかの最適化を行いました。ほとんどの最適化はAndroidの内部的なものであり、アプリに影響を与えることはありませんが、アプリがキャッシュされた状態になったときにアプリがコンテキスト登録ブロードキャストを受信する方法を調整しました。

またコンテキストに登録されたレシーバーへのブロードキャストはキューに入れられ、アプリがキャッシュされた状態から抜けた後にのみアプリに配信される場合があります。さらに「BATTERY_CHANGED」などの一部の繰り返しコンテキスト登録ブロードキャストはアプリがキャッシュされた状態から抜け出すと、配信される前に1つの最終ブロードキャストにマージされる場合があります。

・正確なアラーム
正確なアラームの呼び出しはバッテリー寿命などのデバイスのリソースに大きな影響を与える可能性があります。そのため、Android 14では、Android 13以降(SDK33以降)を対象とする新しくインストールされた時計やカレンダーではないアプリは正確なアラームを設定する前に「SCHEDULE_EXACT_ALARM」の特別なアクセス許可を付与するよう要求する必要があります。

アプリはこの権限を切り替えるインテントを介して利用者を設定ページに誘導できますが、それぞれのケースを評価して可能な場合はより柔軟にスケジュールされた代替手段を選択することをお勧めします。Android 13以降(SDK33以降)を対象とする時計およびカレンダーアプリはコアアプリワークフローの一部として正確なアラームに依存しています。

代わりに「USE_EXACT_ALARM」といった通常のアクセス許可を宣言できます(これはインストール時に付与されます)。アプリはポリシーの言語に基づいて資格がない限り、アプリのバージョンをマニフェストでこの許可を使用して Playストアに公開することはできません。

<カスタマイズ>
アクセシビリティーの強化や国際化機能など、Androidの利用者が個々のニーズに合わせて体験を調整できるように引き続き取り組んでいます。

・非線形スケーリングによる大きなフォント
Android 14以降ではフォントを200%に拡大できます。以前はPixelデバイスの最大フォントサイズスケールは130%でした。またテキストが大きくなりすぎる問題を軽減するためにAndroid 14以降では非線形のフォントスケーリングカーブが自動的に適用されます。これにより、すでに十分な大きさのテキストが小さいテキストと同じ割合で増加することはありません。

Android 14では「アクセシビリティ」→「表示サイズとテキスト」の設定内の「フォントサイズ」オプションを使用して最大フォントサイズでアプリのUIをテストする必要があります。調整された大きな文字サイズの設定がUIに反映され、文字が途切れないことを確認します。ドキュメントには、ベストプラクティスの詳細が記載されています。


左側の100%(スケーリングなし)、中央の標準的なスケーリング(200%)、右側の非線形スケーリング(200%)での標準フォントのサイズ変更の違いを示すテキストスケーリングの例


・アプリごとの言語設定
アプリの「localeConfig」を「LocaleManager.setOverrideLocaleConfig」で動的に更新してAndroid設定のアプリごとの言語リストに表示される言語のセットをカスタマイズできます。これにより、地域ごとに言語リストをカスタマイズしたり、A/B実験を実行したり、アプリがサーバー側のローカリゼーションプッシュを利用している場合に更新されたロケールを提供したりできます。

また文字入力アプリ(IME)は「LocaleManager.getApplicationLocales」を使って現在のアプリのユーザーインターフェース(UI)言語を認識してキーボード言語を更新できるようになりました。

・文法活用API
Grammatical Infection APIを使用すると、文法上の性別を持つ言語におけるサポートをより簡単に追加できます。例えば、

男性:「Vousetesabonnea...」
女性:「Vousetesabonneea…」
ニュートラル:「Abonnementa…active」

といった場合に文法上の性別はその言語に固有のものであり、英語以外の言語では簡単に回避できません。この新しいAPIはICUで文字列ごとに適用する必要があるSelectFormatを使用する場合と比較して視聴者の性別(UIを見ているのは誰であり、誰が話しているのかではありません)をサポートする労力を軽減します。

パーソナライズされた翻訳を表示するには影響を受ける言語の文法上の性別ごとに語形を変えた翻訳を追加してAPIを統合するだけです。

<プライバシーとセキュリティ>
・ランタイムレシーバー
Android 14を対象とするアプリは動的なContext.registerReceiver()の使用を「エクスポート済み」または「未エクスポート」として扱う必要があるかどうかを示す必要があります。これは以前のリリースからのマニフェストレベルの作業の継続です。詳しくは https://developer.android.com/about/versions/14/behavior-changes-14#runtime-receivers-exported をご確認ください。

・より安全な暗黙のインテント
悪意のあるアプリがインテントを傍受するのを防ぐためにAndroid 14を対象とするアプリはパッケージを指定しないインテントを内部的に送信することを制限されています。詳しくは https://developer.android.com/about/versions/14/behavior-changes-14#safer-intents をご確認ください。

・より安全な動的コード読み込み
動的コードローディング(DCL)は動的にダウンロードされた実行可能ファイルが予期せずに操作されてコードインジェクションを引き起こす可能性があるため、マルウェアとエクスプロイトの出口をもたらします。Android 14を対象とするアプリでは動的に読み込まれるファイルを読み取り専用としてマークする必要があります。詳しくは https://developer.android.com/about/versions/14/behavior-changes-14#safer-dynamic-code-loading をご確認ください。

・アプリのインストールをブロックする
マルウェアは多くの場合に古いAPIレベルを標的にして新しいAndroidバージョンで導入されたセキュリティーとプライバシー保護を回避します。これを防ぐためにAndroid 14以降ではtargetSdkVersion 23未満のアプリはインストールできません。

この特定のバージョンが選択されたのは一部のマルウェアアプリがtargetSdkVersion 22を使用している2015年に提供されたAndroid 6.0(APIレベル23)によって導入されたランタイム許可モデルの対象にならないようにするためです。

ただし、Android 14にアップグレードするデバイスではtargetSdkVersionが23未満のアプリはすべてインストールされたままになります。また次のADBコマンドを使用して古いAPIレベルを対象とするアプリをテストできます。

adb install --bypass-low-target-sdk-block FILENAME.apk


・Credential Managerとパスキーのサポート
Googleではつい最近に「Credential Manager」のアルファリリースを発表しました。これはパスキーのサポートによってセキュリティーを強化しながら認証プロセスを簡素化できる新しいJetpack APIです。パスキーはパスワードやその他のフィッシング可能な認証要素に代わる非常に安全な手段であり、利用者にとってより便利です(任意のデバイスで安全にサインインするには生体認証のスワイプだけが必要です)。詳しくは https://android-developers.googleblog.com/2023/02/bringing-together-sign-in-solutions-and-passkeys-android-new-credential-manager.html?m=1 をご覧ください。

・アプリの互換性
アプリの互換性を優先することでプラットフォームのリリースごとに更新をより迅速かつスムーズに行えるよう取り組んでいます。Android 14では必要なアプリの変更を行うためにより多くの時間を提供するためにほとんどのアプリ向けの変更をオプトインにしました。またツールとプロセスを更新してより早く準備できるようにしました。

・OpenJDK 17をサポート
このプレビューには300個のOpenJDK 17クラスへのアクセスが含まれています。今後の開発者プレビューでJava 17言語機能を完全に有効にするために懸命に取り組んでいます。これらにはレコードクラスや複数行の文字列、パターン マッチング instanceof が含まれます。

Google Play システムアップデート(Project Mainline)のおかげで6億を超えるデバイスがこれらの変更を含む最新のAndroidランタイム(ART)アップデートを受信できるようになりました。これはデバイス間でより一貫性のある安全な環境をアプリに提供し、プラットフォームのリリースに関係なく新しい機能を提供するという取り組みの一環です。



記事執筆:memn0ck


■関連リンク
・エスマックス(S-MAX)
・エスマックス(S-MAX) smaxjp on Twitter
・S-MAX - Facebookページ
・Android 14 関連記事一覧 - S-MAX
・Android Developers Blog: The first developer preview of Android 14
・Android 14 Developer Preview  |  Android Developers