1 min read

Android 9系のUAにはマイナーバージョンが含まれない場合がある

Table of Contents

先日遭遇した小ネタ。

どういうことか

通常(?)、UA には OS のバージョンが含まれている。[major ver].[minor ver].[maintenance ver]の 3 つ、もしくは[major ver].[minor ver]の 2 つ。

が、最新の Android 9 系は、[major ver]だけで UA が来ていた。つまり、Android 9.0を期待していたのに、Android 9までしか来てなかったということ。

影響としては、UA をparseする処理を書いていると、下手したらparse出来なくて意図しない値になってしまう。僕が今担当しているプロジェクトでは、どストライクでバグっていた。最低でもminor verまでは来る想定で正規表現にかけていたので、見事に爆死。

使っているプロダクトとは全く関係ないが、同様のバグを踏んでいるプロジェクトもあった。

Android 9: Exception on plugin load due to issue with UA parsing · Issue #1404 · flowplayer/flowplayer

open が 8 月だから…僕気づくの遅すぎって話だけど。国内で Android 9 が降ってきてる端末はまだまだそんなに多くないはずなので、今のうちに bugfix 出来たのは不幸中の幸いってところか。

ただし

これ、Android 9 系が全部そうかっていうと全くそういうことはなく、普通にAndroid 9.0で送ってくるやつもいる。具体的にどの端末が〜ってところまでは調べてないし調べる気もないけど、普通にお行儀よくメジャーバージョンだけでも処理できるようにしておくのが吉。