概要
今年もtargetSdkVersionの引き上げ対応が必要になりました。
その際に調査・整理した内容を記載します。
基本的には下記リンクの内容を確認して、1つずつアプリ影響有無をチェックしていく作業です。
エッジ ツー エッジのオプトアウトの廃止
エッジツーエッジのオプトアウトが出来なくなりました。
予告もされていたので困ることはなかったですが、当時対応するのが少し面倒だったのは覚えています。
予測型「戻る」には移行またはオプトアウトが必要
戻る操作をした時、戻り先がちらっと見えるようになりました。戻る操作は手が入れられることが多いですね。
これ自体は良いのですが、下記の記載がさらっと書かれています。
onBackPressed が呼び出されなくなり、 KeyEvent.KEYCODE_BACK がディスパッチされなくなります。
長く運用されているアプリだと、どちらもまだ使われているのではないでしょうか。
対応自体はonBackPressedDispatcher等の新しい仕組みに移行すれば良いので、そこまで大変ではありませんでした。
下記のようにオプトアウトも可能です。数年で廃止される可能性はありますが・・。
<application
...
android:enableOnBackInvokedCallback="false"
...
>
Elegant フォント API のサポート終了と無効化
elegantTextHeight機能が無効化されました。
一部言語の時に自動でフォントが入れ替わる仕組みのようですが・・・、多言語対応をしているアプリでは確認が必要そうです。
固定レートの作業スケジュールの最適化
定期実行系の処理の動作変更のようです。タスクの実行を逃した場合というのが具体的にどのタイミングを指すのか分かりかねたのですが・・・、これまで不定だった実行回数が最大1回になるようです。
向き、サイズ変更の可能性、アスペクト比の制限を無視する
今回、一番影響が大きい変更点と思っています。
最小幅が 600 dp 以上のディスプレイで画面の向き、サイズ変更、アスペクト比の制限が適用されなくなりました。
特に縦向き固定にしているアプリは多いと思います。ちゃんと対処するならデザインから見直しが必要ですね。
なお、下記のようにオプトアウトは可能なものの、一時的な措置とのことです。
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
今後、アプリを構築する際に悩むことが一つ増えてしまいました。
健康とフィットネスの権限
センサー周りの権限が細分化されたようです。Wear OS系はいつかやってみたいと思いつつ中々機会がありません。
Bluetoothの変更
Bluetoothのペアリング周りで変更が入ったようです。
Bluetoothを使用しているアプリでは一通り機能の動作確認をした方が良さそうですね。
セキュリティ
Intentやローカルネットワーク周りのセキュリティ強化が行われています。
action無しのIntent実装がないか確認した方が良さそうです。
また、自身が受け手側のアプリを作成している場合は、intentMatchingFlagsの導入要否を検討すると良いのではないでしょうか。
まとめ
今回のバージョンは、アプリによって影響度合いが全然違っていたんじゃないかと思います。
幸い?にして、私の担当するアプリは影響軽微でした。
参考
- https://developer.android.com/about/versions/16/behavior-changes-all
- https://www.jssec.org/dl/android_securecoding_20250827/4_using_technology_in_a_safe_way.html#safer-intents