nashcft's blog

時々何か書く。

Android 13 で getSerializable/getParcelable の API 置き換えが発生して、でも getParcelable にはバグがあって、その後

Android 13 のリリースに関して以下のような Serializable / Parcelable の扱いがしんどいという話があった。この記事ではその後どうなったかについて簡単に記録しておこうと思う。

speakerdeck.com

先に結論を書いておくと、 AndroidX Core に compatible API が実装されたのでそれらを使えば OK という状況になった*1

スライドの要点

その後

Parcelable 向けの対応

https://issuetracker.google.com/issues/242048899 を読むと、実はスライド発表時点で Parcelable 関係の compatible API の対応については既に実装されていたことがわかる。ただしその時点では未リリースだったし、 issue の関連付けも行われていなかった*2。この変更は年が明けてすぐの 2023-01-11 に行われた AndroidX Core の 1.10.0-alpha01 でリリースされている。

Serializable 向けの対応

上記の Parcelable への対応に関する issue に以下の issue が Serializable 向けの feature request としてリンクされており、こちらでトラッキングされるものと思って見ていたが結局使われることはなかった。

その後以下の issue と CL が提出され、 Serializable についてはこちらで話が進められることになった。

この変更は 2024-01-10 に AndroidX Core の 1.13.0-alpha03 でリリースされている。なぜか release note に記載はない。

まとめ

  • AndroidX Core の BundleCompat, IntentCompat, ParcelCompat を使おう
    • Parcelable 取得の compatible API1.10.0 から
    • Serializable 取得の compatible API1.13.0 から

*1:Serializable に関しては AndroidX Core 1.13.0-alpha03 からなので 2024-03-31 時点で stable は未リリース

*2:NPE バグの報告 issue にはリンクされていた https://issuetracker.google.com/issues/240585930#comment6