Help us understand the problem. What is going on with this article?

Android11の変更点ピックアップ

初投稿です。

Android11の登場に向けて、優先的に対応しておいた方が良さそうだと思う変更点をピックアップします。
既存アプリへの対応という観点で見ているので、新機能にはあまり触れていません。
(今後もドキュメントの変更に応じて加筆修正するかもしれません)

主な情報引用元

Android11上でアプリを動かす際に適応される項目。
https://developer.android.com/preview/behavior-changes-all?hl=ja

targetSdkVersion=30とした時に適応される項目。
https://developer.android.com/preview/behavior-changes-11?hl=ja

プライバシー関連。
https://developer.android.com/preview/privacy?hl=ja

機能全般。
https://developer.android.com/preview/features?hl=ja

ちなみに、上記ドキュメントは更新頻度がそれなりに高いため、定期的にチェックした方が良いです。
一ヶ月前に確認した時と比較して、内容が結構変わっていました。

(個人的な意見)
なぜ、今年はこんなに細かい変更が多いのか。

Android11上の変更点

ファイル記述子サニタイザー(fdsan)

https://developer.android.com/preview/behavior-changes-all?hl=ja#fdsan

fdsan が何者かよく理解していないのですが、

エラーを検出すると中断するようになります。以前は、警告をログに記録して、続行していました。

上記の変更内容が嫌な予感してます。
アプリ自体をクラッシュさせるということであれば、大きな挙動変更点かと思います。
変なメモリ解放とかやっていなければ特に問題はなさげですが、注意ポイントです。

マップ v1 共有ライブラリの削除

マップ ?!?!?!
私は初見時、HashMapか何かか? とか思ってしまいましたが、
これは Google Maps Android API v1 のことかと思います。

Android10で機能しなくなり、11で完全に消えるとのことです。
GCPの Maps SDK for Android へ移行してくれと注意喚起されています。

対応する <uses-liblary> をマニフェストから外さないと、
GooglePlayでユーザーにアプリが表示されない場合があるとのことなので、ちゃんと外しておきましょう。

targetSdkVersion=30の変更点

カスタム トーストビューのブロック

デザインをカスタマイズした toast を、
バックグラウンドから動かすことができなくなったようです。
代わりに SnackBar が推奨されています。
※ 画面下から にゅるっ と出てくるやつ

その他、 text toast にも変更点があり、
getView() 等の一部のメソッドが機能しなくなっています。
詳しくは以下を確認してください。(丸投げ)
https://developer.android.com/preview/features/toasts?hl=ja

APK 署名スキーム v2 が必要

APKをビルドする際、Scheme v1だけでなくv2も署名してくださいとのことです。
Android Studioで署名付きビルドをする際、チェックボックスで選択可能ですね。

Android Studio 2.2(gradle plugin 2.2)以降では、
デフォルトの挙動が v1 + v2 となっているので、
明示的にスキーム設定を無効にしていなければ、特に心配する必要はありません。
https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.SigningConfig.html
https://developers-jp.googleblog.com/2016/11/understanding-apk-packaging-in-android-studio-2-2.html

メディア インテントのアクションにはシステムのデフォルト カメラが必要

以下のintentに対応できるのが、プリインストールのカメラアプリだけになるそうです。

  • android.media.action.VIDEO_CAPTURE
  • android.media.action.IMAGE_CAPTURE
  • android.media.action.IMAGE_CAPTURE_SECURE

デバイス間のファイル転送

allowBackup の挙動が変更される模様です。
アプリのセーブデータ等をバックアップ不可にするとのことで、
FCMの仕様上の都合(registration_idの記録封じ)等でこのフラグを false にしている方はそれなりにいらっしゃると思います。

ただ、 デバイス間 と書かれているので、
同一のOS同士のファイル転送だけが無効化できなくなったのだと思います。
クラウドへのバックアップは問題なく封じることが出来るはずです。

プライバシー関連

直近一ヶ月の間にも続々と内容が更新され、かつ、例年と比較してボリュームが膨大なので、
特に注視しておいた方が良い項目です。

対象範囲別ストレージの適用

targetSdkVersion=30の時、requestLegacyExternalStorage フラグが無視されます。
つまり、対象範囲別ストレージが強制的に反映されることになります。
Android10以前のデバイスではフラグは有効なのですが、この点が地味に厄介で、
Android10以前と11以降で、処理を分けなければいけない場面が出てくるかと思います。

最も影響を受けるのはメディアファイルを扱っている場合ですが、ユースケース毎の対応が用意されています。
https://developer.android.com/training/data-storage/use-cases?hl=ja

他のアプリのプライベート ディレクトリへのアクセス

表題の通り、他アプリの外部ストレージディレクトリにはアクセスできなくなります。

権限

アプリが Android 11 をターゲットとしている場合、WRITE_EXTERNAL_STORAGE 権限と WRITE_MEDIA_STORAGE 特権の両方で、追加のアクセス権を提供しなくなりました。

徹底的にファイル書き込みを封じに来てますね。
代替っぽい権限として、後述の MANAGE_EXTERNAL_STORAGE が追加されていますが。

すべてのファイルへのアクセス

MANAGE_EXTERNAL_STORAGE 権限が追加。
Added in API level 30 なので、Android11 OSで利用可能。

付与すると、 他のアプリの専用ディレクトリ以外 であれば、
大抵のディレクトリへの読み書きが出来るようになる模様です。

ただし、プライバシーポリシーに利用制限が存在するので注意が必要です。
これを守らないとAPKファイルのアップロードが出来ない可能性があります。
https://support.google.com/googleplay/android-developer/answer/9956427?hl=ja

機能全般

パッケージの公開設定

targetSdkVersion=30から、他アプリとの連携に queries を利用する必要があります。
この項目、そこそこ大きい変更点かと思うのですが、
私の理解が追いついて無く、そもそもどういった場面で必要になるかが不明です。
https://developer.android.com/preview/privacy/package-visibility-use-cases?hl=ja

Custom URL Scheme(DeepLink)等を利用している場合、
少なからず関係があるとは思うのですが。

ただ、問題は他にもあり、

  • Android Studio 3.6.1以上
  • Android Gradle プラグインの最新リリース(最新ってどの時点のですかね)

この2つがビルド条件に含まれている事の方が大きな影響があります。
特に、Gradle Pluginが一気に新しくなると、
使用できなくなるライブラリがあってもおかしくありません。
今までこまめにアップデートしていれば、問題にならなそうですが。

OpenGL ES に ANGLE を使用する

OpenGL ES利用時、ベンダーのNativeドライバかVulkanかを選択出来るようなります。
Android 11 beta2.5時点では、初期ドライバがNativeとの事なので、
今のところは影響はないと思われますが、将来的にこちらがデフォルトになる可能性もありそうです。

omochi99
これといった得意分野もないプログラマーとなりつつあるので、方向性を色々模索中です。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away