targetSdkVersionをAPIレベル26(Android 8.0)に変更する

android_logo

この記事には広告を含む場合があります。

記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

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

AndroidのtargetSdkVersionの変更

Androidアプリのリリース対応を行おうとしたらtargetSdkVersionでエラーが発生。

去年(2017年)の年末にtargetSdkVersionを引き上げますよとGoogleからアナウンスがあったことを思い出して、今更ながらメモ代わりに情報をまとめていきます。

 

対応時期とバージョン

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

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

 

なお今後 Google Play 以外で配布しているアプリに対しても規制が入ります。

2019年8月
新しいアプリがAPIレベル26以上を設定していない場合、インストール時に警告を表示します。

2019年11月
既存アプリがAPIレベル26以上を設定していない場合、バージョンアップ時に警告を表示します。

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

 

修正が必要な機能

多くのアプリは、targetSdkVersionを26に変更するだけで対応が完了します。ただ提供が終了する機能を利用しているアプリは修正が必要となります。

bindService() での暗黙的インテントのサポート終了(Android 5.0)
実行時パーミッション(Android 6.0)
保護された接続において、デフォルトでユーザーが追加した CA を信頼しない(Android 7.0)
ユーザーが明示的に同意しないと、アプリはユーザー アカウントにアクセスできない(Android 8.0)

引用元:https://android-developers.googleblog.com/2017/12/improving-app-security-and-performance.html

 

GPS(位置情報)を利用しているアプリは要注意

GPS(位置情報)は「実行時パーミッション(Android 6.0)」に該当するため、権限周りの設定やプログラムに注意が払う必要があります。

targetSdkVersionを26に引き上げ。そして適切な対処を行わずにAndroid6.0以上の端末でGPSを利用すると、アプリが強制終了します(苦笑)。曲者なのがAndroid6.0未満の端末では、今まで通りに何事もなく動作することです。特によくアプリの最低保証端末とされているAndroid4.4やAndroid5.0/5.1のみで動作確認していると見落とす可能性があるため注意して下さい。
GPSを利用しようとしたタイミングでアプリが強制終了するため、アプリによって落ちるタイミングが異なります。

 

バックグラウンド実行するアプリ(目覚ましアプリなど)も注意が必要

修正が必要な機能には記載されていませんが、Android8.0からバックグラウンド実行制限が規制されています。例えば目覚ましアプリで、アラームをBroadcastReceiverで処理しているときはブロードキャストの制限事項に抵触する可能性があります。

公式のリンクを記載しておきますので、詳細はそちらでご確認ください。

Android 8.0 を対象にしているアプリは、暗黙的なブロードキャストに対するブロードキャスト レシーバーをマニフェストで登録できなくなりました。

バックグラウンド実行制限
https://developer.android.com/about/versions/oreo/background?hl=ja

本項目は2018/09/28追記しました。

 

その他

同じGoogle開発者ブログで記載されていますが、すべてのアプリは2019年08月までに64ビット対応が必須となります。現在の端末の多くは64ビットで動作するものの、32ビットとの互換性は維持しているようです。今後32ビットのサポートを随時打ち切るようなので、アプリによっては改修工数が大きいため早めの対策が必要です。

または別記事で Android9.0(targetSdkVersion28) の対応記事を作成しましたので、必要な方は本記事と合わせて参照してください。
[Android]targetSdkVersionのAPIレベル28に変更する
https://www.t3a.jp/blog/android/android-api28/

 

さいごに

2019年以降、毎年targetSdkVersionを上げていくと注意喚起しています。Androidアプリの開発を行われている方は情報を収集を十分に行い、事前の対応をおススメします。
私のようにアプリをリリースしようとしたタイミングで「リリースできない!!」となるのは、さすがに問題があると思いますので(苦笑)