はじめに
Android14に関する記事を上げてから、もう一年近く経つとは、、、。
本当に驚くほど早く時間が経過していますが、現在Android15のベータ版が公開されている状況です。
例年通りであればもう少しで正式リリースされると思いますが、Android15に関してもいくつか修正が必要になりそうです。
フォアグラウンドサービスに関しては、Androidバージョンが上がる度に厳しくなり、サービスによってはもはやWorkerへの置き換えを強制されているような状況に陥るかもしれません。
ご自身が対応されているプロジェクトがどの程度影響がありそうか、一つの判断材料にしてもらえれば幸いです。
最小ターゲット SDK バージョンを 23 から 24 に引き上げ
Android15端末では、一律で下限バージョンが24に引き上げられます。
24未満を対象としているアプリはインストールができなくなるので、注意が必要です。
ちなみに24未満のアプリをインストールしようとすると、以下エラーが表示されます。
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
フォアグラウンド サービスの変更:新しいサービスタイプの追加
今回もフォアグラウンドサービスに関して差分がいくつかあります。
そのひとつが、Android15より新しくサービスタイプに追加されたmediaProcessingです。
このタイプは名前の通り主にメディア系のアプリが対象となり、設定しておくと動画ファイルや音声ファイルをダウンロードし変換する際にアプリがバックグラウンドにいたとしても続行可能となるようです。
ただし、このタイプを設定した場合、実行可能なのは過去24日間で合計6時間のみなので、かなり使用条件が限られている印象です。
また、mediaProcessingを設定しているサービスを重複して起動することはできません、これを行うとForegroundServiceStartNotAllowedExceptionをスローします。
フォアグラウンド サービスの変更:BOOT_COMPLETEDブロードキャストレシーバに関する制限
これは対象となるアプリ、多いのではないでしょうか?
BOOT_COMPLETEDを使用する場合、以下サービスタイプを設定しているフォアグラウンドサービスは起動できなくなります。
- dataSync
- camera
- mediaPlayback
- phoneCall
- mediaProjection
- microphone(この制限は Android 14 以降 microphone に適用されています)
BOOT_COMPLETEDは主に端末を再起動した際にサービスを起動させたい場合などに使用している印象ですね。
もし該当する場合はサービスタイプを変えるか、Workerに処理を置き換える必要がありそうです。
より安全なインテント
Intentに関してAndroid14に続き、Android15でさらに安全性と堅牢性を高めるための変更が含まれています。
ターゲットのインテントフィルタと一致する
これ今まで一致してなくても起動できたのかと驚きましたが、Android15より完全に一致していないと別アプリのActivityを起動させられなくなったようですね。
インテントにはアクションが必要
Intentを使用する際にはactionが必須になったようですね。
このactionが指定されていない、どのインテントフィルタにも一致しないということはactionのないIntentは全く機能しなくなるということのようです。
また、事前にこれらのIntentに関する問題を見つけたい場合は厳格モードを有効にすると便利です。
Intentが上記に違反しているかどうかを知りたい場合は以下を実装することで、違反した際に詳細なログを表示することが可能です。
fun onCreate() {
StrictMode.setVmPolicy(VmPolicy.Builder()
.detectUnsafeIntentLaunch()
.build()
)
}
Android15対応をする前に一度厳格モードを有効にして一通り違反がないかどうか確認しておくと安心ですね。
emojiTextHeight 属性のデフォルトを true に設定
タイトルの通りですが、TextViewが持つemojiTextHeightがデフォルトでtrueになったようです。
これまでアラビア語、ラオ語、ミャンマー、タミル語、グジャラート語、カンナダ語、マラヤーラム語、オディア語、テルグ語、タイ語などをサポートしている場合、上下の高さぴったりのサイズとなっていましたが、Android15より上下に余白ができる形となります。
これはUIによってはこの余白分崩れる可能性があるので、上記言語を対象としているアプリはAndroid15対応前にこのフラグを有効にしてみてUIが崩れていないかどうか確認が必要だと思います。
さいごに
Android15も古いサービスを運用していて該当する場合はなかなか大変そうですね、、、
あとで慌てないように、なるべく早めに対応が必要かどうかご確認されることをオススメします。