[Android]targetSdkVersionのAPIレベル28に変更する

[Android]targetSdkVersionのAPIレベル28に変更する

android_logo
Android Robotは、Googleが作成および提供した作品であり、Creative Commons 3.0 Attribution ライセンスに記載された条件に従って使用しています。

Android 9(Pie)にアプリを対応する

Android アプリの動作確認をしていたところ、Android9の端末にて不具合が発生。

今年中に Android9 には対応しないといけないことが分かっていたものの、もう Android9 端末に由来する問題に遭遇したので、情報をまとめていきます。

Advertisement

Android9 の対応時期とバージョン

api26 のときと同じく、アプリが新規リリースなのか、バージョンアップなのかで、最低必須のtargetSdkVersionが異なるようです。

対応必須となる時期 最低必須バージョン
新規アプリ 2019年08月から対応必須 APIレベル28(Android 9)以上
バージョンアップ 2019年11月から対応必須 APIレベル28(Android 9)以上

情報元は、Android 開発者ブログなので、該当のURLも載せておきます。
※ちなみに英語ページなので悪しからず。

2019年度のAPIレベル要件の拡大について(Expanding target API level requirements in 2019)
https://android-developers.googleblog.com/2019/02/expanding-target-api-level-requirements.html

 

Android9で修正が必要な項目

まずは修正項目の一覧を記載している Android の公式サイトの URL を載せておきます。

動作の変更点: API レベル 28+ をターゲットとするアプリ
https://developer.android.com/about/versions/pie/android-9.0-changes-28?hl=ja

その中でも現時点で気になっている点はの4点です。

フォアグラウンド サービス
Android 9 以降をターゲットにするアプリは、フォアグラウンド サービスを使用する際に FOREGROUND_SERVICE パーミッションをリクエストする必要があります。

デフォルトで有効になっているネットワーク TLS
アプリが Android 9 以降をターゲットにしている場合、isCleartextTrafficPermitted() メソッドによって false がデフォルトで返されます。

View のフォーカス
面積が 0 のビュー(幅または高さが 0)はフォーカス不可となりました。

CSS RGBA 16 進値の処理
Android 9 以降をターゲットとするアプリでは、4 桁および 8 桁の 16 進数 CSS 色を扱うために、ドラフトの CSS Color Module Level 4 で策定された動作を有効にする必要があります。

 

テスト環境でも実質 HTTPS(TLS) が必須になる

本記事を書くきっかけになった問題がデフォルトでは HTTPS(TLS) が必須となったことです。

Android8.0(targetSdkVersion26)向けのアプリを作成していたのですが、公開用のアプリは動くけどテスト用のアプリが動かないよ!との連絡が知人からありました。調べてみたところ本番環境は「HTTPS」対応で、テスト環境は「HTTPS」非対応、且つ該当端末のバージョンが Android9 でした。

こいつが曲者でアプリの途中まで操作した後に Android8 → Android9 にバージョンアップしようものなら、アプリが途中から全く動かなくなった!という別の不具合っぽい挙動に見えます。

無料SSL「Let’s Encrypt」の普及が進んでいるので、アプリの通信においては、全ての環境で SSL は対応しましょう!ということですね(涙)。

 

補足説明:Android8.0(targetSdkVersion26)の対応

本記事では Android9.0(targetSdkVersion28)の説明を行っています。

ただ Android4.4 や Android5.0 のアプリを新しいバージョンに対応するときは、Android8.0(targetSdkVersion26)の対応も必要になるので注意が必要です。別記事にはなりますが、以前に上げた記事のURLを載せておくので必要な方は合わせて確認して下さい。

targetSdkVersionをAPIレベル26(Android 8.0)に変更する
https://www.t3a.jp/blog/android/android-api26/

 

さいごに

私自身、Android9 への対応を始めたばかりなので、気づいた点やハマるポイントがあれば、随時この記事を更新していきます。

Android は悪質なアプリを排除して個人情報を保護するために、アプリのセキュリティ面を強化しています。ただ Android のバージョンを上げると根柢の部分で動作が異なるようになるのは何とかならないのでしょうか(涙)。

Advertisement

androidカテゴリの最新記事