Android Pie対応についてまとめ


Android Pieとは

公式:https://developer.android.com/about/versions/pie?hl=ja
Android 9.0のこと。
何故Pieかというと、毎versionでお菓子の愛称を付けているから。
6.0はMarshmallow、7.0はNougat、8.0はOreoだった。

機能的な変更点

参考:【まとめ】Android Pie 9.0の新機能、特徴、レビュー、変更点、不具合

  • ホームボタンが廃止になり、バーになった。iPhone XのようなUXに
  • 最近使用したアプリの表示が新しくなり、よく使うアプリが5つ表示された状態の画面になった
  • アプリドロワーが新しくなり、頻繁に使用されるアプリが一番上に表示されるようになった
  • 「アプリのダッシュボードの表示」を搭載
  • 「アプリタイマー」機能の搭載(アプリの利用時間がグラフィックに表示できる)
  • 端末を平面に置き、画面を下にして起動する「Shushモード」の搭載(自動的に音声通知と振動をミュートに)
  • 「ビール」の絵文字デザイン変更
  • テキスト拡大表示 etc

開発面でのAndroid 9移行対応について

公式:Migrating to Android 9

移行は「基本的な互換性の確認」と「targetSdkVersionを28にする対応」の二つのフェーズがあるとのこと。

基本的な互換性の確認

参考:Behavior changes for all apps
targetSdkVersionを変えなくても、Android 9ではアプリの動作に影響を与える可能性がある。具体的には、以下のような変更点があり、これによってAndroid 9では一部機能が動かないなどの可能性が存在する。

  • non-SDKインターフェースの制限:一部APIでリフレクション経由などでのアクセスがブロックされる
  • Cryptoプロバイダの廃止:SecureRandom.getInstance("SHA1PRNG", "Crypto") を呼び出すと、NoSuchProviderExceptionがスローされる
  • UTF-8デコーダが厳密になり、Unicode標準に準拠するようになる
  • アイドル状態でカメラ、マイク、SensorManagerセンサーにアクセスできなくなる
  • アプリスタンバイバケットの導入:アプリの使用頻度に応じてバケットが割り当てられ、優先度が変化する
  • バッテリーセーバーの改善
  • 電話番号や通話履歴へのアクセスの制限

targetSdkVersionを28にする対応

参考:Behavior changes for apps targeting API 28+

  • フォアグラウンド サービスを使用する際に FOREGROUND_SERVICE パーミッションをリクエストする必要がある
  • ビルドシリアル番号のサポートの終了(Build.SERIALが常に"UNKNOWN"になる)
  • プライベートDNS APIの考慮が必要
  • isCleartextTrafficPermitted()がデフォルトfalseになる。必要に応じてcleartextTrafficPermittedtrueに指定する必要がある
  • アプリが複数のプロセス間で単一のWebViewデータディレクトリを共有できなくなっている
  • ワールドアクセスが可能な Unix パーミッションを使用して、他のアプリとデータを共有できない
  • 現在のデフォルトではないネットワーク上のネットワークトラフィックがカウントされ、そのトラフィックをクエリするために、NetworkStatsManagerクラスのメソッドが提供される
  • Apache HTTP クライアントのサポートが削除される
  • 面積が0のビューはフォーカス不可
  • 4桁および8桁の16進数CSS色を扱うために、CSS Color Module Level 4で策定された動作を有効にする必要がある
  • ドキュメントのルート要素がスクロール要素である場合、適切な処理が実行される
  • 保留されたアプリからの通知が、アプリ再開まで非表示になる

Pie関連のリンク

https://github.com/operando/Notes/tree/master/potatotips_52
https://developers-jp.googleblog.com/2018/10/introducing-android-9-pie.html
https://feel-log.net/android/developer/android_9_pie_migrations_apps/

その他のリンク

[Android]Androidバージョンと対応するAPIレベル/コードネーム一覧
AndroidのAPI LevelとVersionの対応関係一覧表