Android 11アプリケーションの適応

Android 11の主な変更点

1.1互換性

1.1.1パーティションストレージ

説明:パーティション化されたストレージメカニズムにより、アプリケーションは外部ストレージスペースに独自の専用ストレージエリアを持つことができます。このエリアはプライベートです。したがって、このエリアはユーザーのプライベートデータの保存に非常に適しています。もちろん、アプリケーションは他のアプリケーションの専用ストレージ領域にアクセスできません。ただし、アプリケーションが独自の専用ストレージ領域にある特定のファイルを他のアプリケーションからアクセスできるようにする必要がある場合、ファイル共有方法を設定することで、これらのファイルを共有可能としてマークできます。パーティションストレージは、ファイル管理、アプリケーション保護、ユーザープライバシーデータ保護において非常に優れた役割を果たします。

影響範囲:

1)targetSdkVersionが30のアプリケーション。

2)targetSdkVersionが29であり、requestLegacyExternalStorageがtrueに設定されていないため、パーティションストレージアプリケーションが無効になっています。

適応の提案:

アプリケーションが引き続き古いストレージメカニズムを使用している場合は、パーティションストレージと互換性のあるディレクトリにデータを移行する必要があります。

ファイルにアクセスする場所

必要な権限

アクセス方法

アプリケーションのプライベートディレクトリ

無断アクセス

getExternalFilesDir()

他のアプリケーションのプライベートディレクトリ

なし。ただし、ターゲットファイルは、FileProviderを使用するアプリケーションで共有可能としてマークする必要があります。

ParcelFileDescriptorおよびFileDescriptorを通じて取得

メディアファイルディレクトリ(オーディオ、写真、ビデオファイル)

READ_EXTERNAL_STORAGE(他のアプリケーションのファイルにアクセスする場合にのみ必要)

MediaStore API

カタログダウンロード(ドキュメントファイル等)

無断アクセス

ストレージアクセスフレームワークSAF

パーティションストレージの詳細な紹介:https://developer.android.google.cn/preview/privacy/storage

1.1.2単一の承認

説明:Android 11開発者プレビューバージョンでは、アクセス許可をより細かく分割し、「単一認証」の概念を導入しています。ユーザーは、次の図に示すように、単一の認証を実行して、アプリケーションがユーザーの場所、カメラ、またはマイクに一時的にアクセスできるようにすることができます。この許可を取得した後、アプリケーションは次の期間内に対応するデータへのアクセスを取得できます。

1)アプリケーションのアクティビティが表示されている場合。

2)アプリケーションがバックグラウンドになった後の短い期間。

3)アクティビティが表示されているときにフォアグラウンドサービスが開始され、アプリケーションがバックグラウンドに転送され、アプリケーションはフォアグラウンドサービスが停止するまで関連データにアクセスし続けることができます。

影響の範囲:Android 11で実行されるすべてのアプリケーション。

適応のアドバイス:アプリがアクセス許可に関連するベストプラクティス(https://developer.android.google.com/privacy/best-practices)に従っている場合、アプリを変更せずに単一の承認をサポートできます。

image.png

図:アプリの許可要求ウィンドウは、1回限りの許可オプションを提供します

1.1.3バックグラウンドの位置情報アクセス権限を取得する方法

注:アプリケーションがバックグラウンドの位置情報アクセス許可に適用される場合、ユーザーが許可を付与することを許可するポップアップウィンドウでは、[常に許可]のオプションが提供されなくなります。このオプションは、設定のアプリケーション許可付与ページにのみ存在するため、ある程度削減できます。次の図に示すように、アプリケーションの「バックドア」の状況が発生し、バックグラウンドロケーション許可のアプリケーションでは、アプリケーションにフォアグラウンドロケーション許可が必要です。

影響を受ける領域:Android 11開発者プレビューバージョンで実行されているすべてのアプリケーション

適応の提案:バックグラウンド位置情報アクセス許可を取得する必要があるとアプリケーションが判断した場合、フォアグラウンド位置情報アクセス許可なしでバックグラウンド位置情報アクセス許可を直接申請することはできなくなったため、2つのステップに分ける必要があります。

1)まず、フロント位置情報アクセス許可申請

2)次に、「常に許可」と呼ばれるバックグラウンドの位置情報アクセス許可を申請すると、ユーザーは許可する設定に誘導されます

image.png

図:バックグラウンドの位置情報アクセス許可を申請すると、アプリの許可要求ポップアップに「常に許可」が含まれなくなりました

image.png

図:背景の位置情報のアクセス許可の付与は、設定でのみ実行できます

1.1.4パッケージの可視性

説明:Android 11開発者プレビューバージョンでは、アプリが同じデバイスにインストールされている他のアプリをクエリする方法と、アプリとの対話方法が変更されています。

影響を受ける範囲:targetSdkVersionが30のアプリケーション

適応策の提案:アプリケーションは、<queries>要素をアプリケーションマニフェストファイルに追加して、インストールされている他のどのアプリケーションを表示する必要があるかをシステムが認識できるようにする必要があります。アプリが他のアプリとの共通の操作を実行する場合、アプリを変更する必要はありません。Android 11開発者プレビューパッケージの可視性の詳細については、次を参照してください。

https://developer.android.google.cn/preview/privacy/package-visibility。

1.1.5新しいフォアグラウンドサービスタイプ

説明:Android 11では、フォアグラウンドサービスがカメラとマイクに関連するデータにアクセスする方法が変更され、ユーザーのプライバシーがさらに保護されています。

影響を受ける範囲:targetSdkVersionが30のアプリケーション

適応の提案:フォアグラウンドサービス宣言のforegroundServiceType属性に新しいカメラとマイクのタイプを追加する必要があります。追加しないと、カメラとマイクのデータが取得されません。

1.1.6カスタムビューメッセージボックスの使用が制限されている

注:バックグラウンドから発行されたカスタムビューメッセージボックスは、システムによってブロックされます。このタイプのメッセージボックスは、図に示すように、setView()を使用してそれ自体のレイアウトを定義します。セキュリティとユーザーエクスペリエンスを考慮して、システムはバックグラウンドから開始されたカスタムビューメッセージボックスをブロックします。ただし、フォアグラウンドからパブリッシュされたカスタムビューメッセージボックスは通常どおり有効になり、Toast.makeText()で作成されたテキストメッセージボックスは影響を受けず、フォアグラウンドとバックグラウンドでパブリッシュされたときに通常どおり有効になります。

影響を受ける範囲:targetSdkVersionが30のアプリケーション

適応の提案:代わりに情報プロンプトコントロール(Snackbar)を使用することをお勧めします。

image.png

図:Android Qのバックグラウンドから発行されたカスタムビューメッセージボックスの例

1.1.7非SDKインターフェースリストの更新

注:Android 11では、SDK以外のインターフェースのリストが多数更新されています。インターフェースのリストの更新については、https://developer.android.google.cn/preview/non-sdk-11を確認してください。これらのインターフェースの一部はAndroid 11のブラックリストに含まれているため、これらの変更により、SDK以外のインターフェースに依存する一部のアプリケーション、特にAndroid Qグレーリストインターフェースに依存するアプリケーションにさまざまな程度の互換性の問題が発生する可能性があります。 。

影響の範囲:Android 11で実行されるすべてのアプリケーション。

適応の提案:アプリケーションがAndroid 11の制限されたインターフェースに依存している場合、SDKのアップグレードを計画し、SDKの代替に移行する必要があります。

 

1.2新しいインタラクティブな体験と方法

Androidシステムがアップグレードされるたびに、インタラクティブエクスペリエンスにいくつかの新しい変更が加えられます。今回はAndroid 11も例外ではありません。

例えば:

1.2.1チャットふきだし

チャットのふきだしの会話方法が正式にリリースされ、実験的な機能ではなくなりました。この機能により、会話ウィンドウを1つ以上の浮動のふきだしに最小化でき、ふきだしを小さなウィンドウモードのページに拡張できます。

image.png

図:バブル形式のメッセージ通知

image.png

図:バブルが小さなセッションウィンドウに拡大

1.2.2新しい入力方式のキーボード遷移アニメーション

2つの新しいAPIインターフェイス(Insets Animation ListenerとWindowInsets Animation Controller)の助けを借りて、Android 11は、毎日処理しなければならないインプットメソッドキーボードに新しい遷移をもたらしますアニメーション。これらのAPIを使用すると、アプリケーションのコンテンツをより簡単に調整でき、IMEと、ステータスやナビゲーションバーなどの他の要素の表示と非表示に同期します。これは、Google https://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimationによって提供されるサンプルです。現在の主流バージョンで下から直接ポップアップするアニメーションと比較して、新しい入力メソッドのキーボードアニメーションは、実際の指の動きに合わせてフレームごとに変化し、よりスムーズで自然なスライドイン/アウトエフェクトなどを表示できます。

 

1.3ハードウェアレベルでの新しいサポート

1.3.1 Android 11は、さまざまな携帯電話画面をよりよくサポートして、ユーザーエクスペリエンスを向上させます

●ウォーターフォール画面:ウォーターフォール画面の「ウォーターフォール」領域により、エッジコンテンツに歪みや偶発的なタッチが表示されます。Android 11では、開発者はすでに「ウォーターフォール」領域の相互作用を制御できます。既存のDisplayCutout.getSafeInset ...()メソッドは、ウォーターフォール領域と強打を回避できる安全な境界領域を返すようになりました。

●高リフレッシュ画面:Android 11には新しいAPI-Surface.setFrameRate()が追加され、アプリが優先リフレッシュレートを設定できるようになりました。これにより、高リフレッシュ画面を利用してユーザーエクスペリエンスを向上させると同時に、システムの実行を支援します。アプリケーション中のインテリジェントな切り替えは、システムレベルからの高いリフレッシュレートによって引き起こされる可能性がある電力消費の問題を解決します。

1.3.2 Android 11は複数のカメラの同時使用をサポートしています

開発者は新しいAPIを使用して、複数のカメラ(フロントカメラとリアカメラを含む)の同時使用のサポートを照会できます。アプリケーションを実行しているデバイスのサポートステータスを確認する必要がある場合は、次の2つのメソッドを使用できます。getConcurrentCameraIds()メソッドはカメラIDの組み合わせを返すことができ、isConcurrentSessionConfigurationSupported()はカメラデバイスが対応するセッション構成を同時にサポートできるかどうかをクエリできます。

 

1.4強化された5Gサポート

Android 11は、5Gの「ダイナミックメータリング」と「帯域幅の見積もり」を提供し、5Gの高帯域幅と低レイテンシの特性をより有効に活用します。さまざまなシナリオやさまざまなネットワーク条件に対応できる柔軟なストリーミングメディア品質。

 

1.5その他の機能

1.5.1 ADBインクリメンタルAPKインストール

デバイスに大きなAPKをインストールするのには時間がかかる場合があります。ADBインクリメンタルAPKインストールでは、バックグラウンドで残りのデータをストリーミングしながらアプリケーションを開始するのに十分なAPKをインストールできるため、プロセスが高速化されます。デバイスがこの機能をサポートし、最新のSDKプラットフォームツールをインストールしている場合、adb installコマンドは自動的にこの機能を使用します。または、この機能を使用するには、このコマンドadb install –incrementalを実行します。ADBインクリメンタルAPKインストールを実行する前に、まずAPKに署名し、APK署名スキームv4ファイルを作成する必要があります。また、この機能を正しく動作させるには、v4署名ファイルをAPKの隣に配置する必要があります。

1.5.2アプリケーションプロセスの終了理由

Android 11ではActivityManager.getHistoricalProcessExitReasons()メソッドが導入され、最近プロセスが終了した理由を報告しています。アプリケーションは、このメソッドを使用して、ANRによるプロセスの終了、メモリの問題、またはその他の理由などのクラッシュ診断情報を収集できます。さらに、新しいsetProcessStateSummary()メソッドを使用して、後で分析するためにカスタム状態情報を保存することもできます。

1.5.3動的リソースローダー

Android 11は、ResourcesLoaderとResourcesProviderという2つの新しいAPIクラスを導入して、動的に拡張するリソースの検索と読み込みのメソッドをサポートしています。主な使用例の1つは、アプリケーションがAPKの外部の特定のディレクトリにあるリソースにアクセスできるようにすることです。

参照リンク

 Android 11のストレージメカニズムの更新:https://developer.android.google.cn/preview/privacy/storage

権限に関するベストプラクティスに従ってください:https://developer.android.google.com/privacy/best-practices

 Android 11でのパッケージの可視性:https://developer.android.google.cn/preview/privacy/package-visibility

 Android 11のメッセージボックスの更新:g.co/dev/toast

 更新された非SDKインターフェースのリスト:https://developer.android.google.cn/preview/non-sdk-11

 新しい入力メソッドのキーボード遷移アニメーションの例:https://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimation

 Android 11での重要なプライバシーの変更:https://developer.android.google.cn/preview/privacy

Android 11の新機能とAPIの概要:https://developer.android.google.cn/preview/features

おすすめ

転載: blog.csdn.net/weixin_40611659/article/details/108747906