公式サイトに学ぶtarget API level対応のポイント
Google Playで公開しているアプリのアップデート時にターゲット API レベル 26 以降への対応必須というルール、適用開始日が2018年11月1日に迫ってきました。
お仕事にせよ趣味にせよアプリを継続的にメンテしている方はそろそろ対応を迫られている時期かと思います。自分もそうです...
じゃあ具体的に何をすればいいんだろう、と思って調べていたら、AndroidのDevelopersサイトに Meet Google Play’s target API level requirement というページがあることに気づきました。API Level対応の勘所をまとめてくれているありがたいページです。
このページ自体は日本語版がないのですが、各バージョンの変更点をまとめたページは日本語版が用意されています。
そこで、両者を参照しながら気にすべきと思われる点をピックアップしてみました。あくまで「最低限これくらいはチェックしておこう」的な感じです。
Android 6.0 (API level 23) における重要な変更点
- Runtime Permissions
- アプリインストール時ではなくアプリ実行時にパーミッションを得る必要があります
- 実装レベルで結構インパクト大きくて大変ですが、ノウハウはネット上でいくらでも転がってるはずなのでそれを参考に粛々と直しましょう
- Dozeとアプリ スタンバイ
- 省電力機能強化の一環です
- バックグラウンド処理や通信が影響を受けます
- 条件を満たせばホワイトリストに登録する(=Dozeやアプリ スタンバイの影響を受けなくなる)ことができます
- Apache HTTP Client の削除
- HTTP通信周りを自前で実装している場合は要確認
- OkHttpあたりのライブラリに任せちゃうほうがラクな気が
- グローバル ブックマークの削除
- ブラウザのブックマークがプログラムから取得できなくなりました
- 以前にこちらの記事でまとめています
- この変更でブックマーク管理アプリが軒並み衰退しました...
Android 7.0 (API level 24) における重要な変更点
- Dozeとアプリ スタンバイ
- Android 6.0から挙動が若干変更されました
- 実装側が気を付ける点は変わっていないようです
- ファイル システム関連のパーミッション変更
- アプリ間でのファイルのやり取りに制限がかかりました
- FileProviderを使って書き換える必要があるかもしれません
- 画面のズーム
- ユーザーがディスプレイサイズ(≒端末の画面密度)を変更できるようになっています
- レイアウトの組み方がまずいと影響を受けるかも
- NDK に含まれていないネイティブ ライブラリの利用禁止
- NDK 以外のライブラリを動的にリンクできなくなりました
Android 8.0 (API level 26) における重要な変更点
- バックグラウンド実行制限
- アプリがバックグラウンドにあるときの動作に制限が課されました
- バックグラウンド時に何らかの処理をしているアプリは要検証です
- 位置情報の取得も同様に制限が課されています
- ちょっと追い切れていませんが、多岐に渡るこまごました変更が加わっています...
各バージョンにおける変更点
各バージョンの変更点一覧は日本語版があります。変更点だけではなく、注意事項や修正方法も載っているので、全てをくまなく確認するのが確実です(が大変です...)
- Android 6.0 の変更点 | Android Developers
- Android 7.0 の動作の変更点 | Android Developers
- Android 8.0 での動作変更点 | Android Developers
まとめてみて
バックグラウンド処理とパーミッション周りがキモかなとは思いますが、細かな変更も含めると多岐に渡る見直しが必要です。とにかくクオリティ重視なら十分な工数をかけて逐一確認でしょうし、主要機能が動けばいいやとある程度割り切るのも一案。状況に応じた判断が求められそうです。
個人的には、趣味のアプリは最低限直してあとは問題が見つかり次第対応でいいかなーと思っています。お仕事はそうもいかないので真面目にやらないと...
関連(するかもしれない)記事
おススメ