0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Android15の重要そうな差分まとめ

Last updated at Posted at 2024-12-14

はじめに

Android14が出てきたのがつい先日のように感じますが、もうAndroid15がリリースされましたね。
Android14ではフォアグラウンドサービス関連の差分が多かった認識なのですが、15ではどうでしょうか?
先んじて重要そうな差分を備忘録的にまとめておこうと思います。

最小ターゲットSDKバージョンの引き上げ

Android 15 では、 24 未満の targetSdkVersion はインストールできません。

とのことです。
Android7である24でも2016年なので、8年前以上・・・
これを機に最小バージョンをしっかり見直してもらうのも良いと思います。

フォアグラウンドサービスの変更

今回のバージョンでもフォアグラウンドサービスに関しての差分がいくつかあります。

1. 新しいサービス種別の追加

Android 15 では、新しいフォアグラウンド サービス タイプ mediaProcessing が導入されています。

とのことで、15よりmediaProcessingという新たなフォアグラウンドサービス種別が導入され、メディアファイルのダウンロードや変換時にバックグラウンドでの処理が可能となります。
ただし、過去24時間で合計6時間の実行制限がありますので、この点については注意が必要です。

2. BOOT_COMPLETEDブロードキャストレシーバーに関する制限

BOOT_COMPLETED ブロードキャスト レシーバに対する新しい制限事項がリリースされます フォアグラウンド サービスの場合。BOOT_COMPLETED レシーバーは、API 呼び出しを起動できない フォアグラウンド サービスのタイプを使用できます。

特定のサービス種別(該当の種別は以下)は、BOOT_COMPLETEDブロードキャストを受信しても起動できなくなります。

  • dataSync
  • camera
  • mediaPlayback
  • phoneCall
  • mediaProjection
  • microphone

以前はアプリがSYSTEM_ALERT_WINDOW権限を保持している場合には特例的にフォアグラウンドサービスを起動することが可能でしたが、15よりこの特例に関する条件がかなり限定的になります。
Android15では上記権限に合わせて表示可能なオーバーレイウィンドウの対応が必要になります。
フォアグラウンドサービスを起動する前にまずTYPE_APPLICATION_OVERLAYウィンドウを起動し、そのウィンドウを表示する必要があります。

また、Android14でも同様だったと思いますが、アプリが上記要件を満たさずにバックグラウンドからフォアグラウンドサービスを起動しようとすると、システムは ForegroundServiceStartNotAllowedExceptionをスローする点に注意です。

インテントのセキュリティ強化

Android 15 では、インテントをより安全かつ堅牢にするために、新しいオプションのセキュリティ対策が導入されています。この変更は、悪意のあるアプリによって悪用されるおそれのある潜在的な脆弱性やインテントの不正使用を防止することを目的としています。Android 15 では、インテントのセキュリティに関して、主に 2 つの改善点があります。

以前のバージョンアップでもインテントに関する修正を含んでいることがありましたが、Android15でも2点差分がある点に注意です。

1. ターゲットのインテント フィルタに一致させる

特定のコンポーネントをターゲットとするインテントは、ターゲットのインテントフィルタの仕様に正確に一致する必要があります
基本的に一致していないことの方が現状では珍しい気がしますが、受信側と送信側できちんと揃える必要があります。

2. インテントにはアクションが必要

アクションのないインテントは、インテントフィルタと一致しなくなります。
当然と言えば当然なのですが、アクティビティやサービスを起動する際には、明確に定義されたアクションをインテントに設定するようにしましょう。

ウィンドウインセットの変更

Android 15 のウィンドウ インセットに関連する変更点は 2 つあります。エッジ ツー エッジがデフォルトで適用されます。もう 1 つは、システムバーのデフォルト構成などの構成の変更です。

差分は二つありますが、重要なのは前者であるエッジツーエッジがデフォルトでつく点ですね。
デフォルトで設定されてしまうということは、適切にインセットを処理しないとUI要素がシステムバーの背後に隠れる可能性があります。

エッジツーエッジを対応しているプロジェクトと対応していないプロジェクトで確認すべき観点が異なるので、以下該当する方を熟読し早めにご確認いただくことをオススメします。

エッジツーエッジ対応済み

エッジツーエッジ非対応

さいごに

今年も残すところ半年、早過ぎる・・・

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?