web-dev-qa-db-ja.com

@UnsupportedAppUsageアノテーションは何を表現していますか

システム権限を持つエンタープライズアプリを作成していますが、BluetoothAdapterクラスsetScanModeの関数を使用する必要があります。これは隠しAPIであり、システム署名付きAPKでのみ使用できます。この関数の上に@UnsupportedAppUsageがあり、誰でもこの注釈を理解できます。

https://Android.googlesource.com/platform/frameworks/base/+/master/core/Java/Android/bluetooth/BluetoothAdapter.Java

9
Manishika

注釈ソース に移動すると:

/**
 * Indicates that a class member, that is not part of the SDK, is used by apps.
 * Since the member is not part of the SDK, such use is not supported.
 *
 * <p>This annotation acts as a heads up that changing a given method or field
 * may affect apps, potentially breaking them when the next Android version is
 * released. In some cases, for members that are heavily used, this annotation
 * may imply restrictions on changes to the member.
 *
 * <p>This annotation also results in access to the member being permitted by the
 * runtime, with a warning being generated in debug builds.
 *
 * <p>For more details, see go/UnsupportedAppUsage.
 *
 * {@hide}
 */

基本的には、技術的にはSDKの一部ではないため、アプリで使用されているため、サポートされていません。これは、AOSPに貢献している人にとっては、あまり心配する必要があるものではなく、むしろ警告のようです。

4
TheWanderer

上記の注釈ソースの説明は正しいです。 Pieのコードで今までにない例外が発生します。 TextView.classのいくつかのフィールドでカーソルハンドラーの色を設定しています。これらのフィールドはサポートされなくなり、Pieでハンドルの色を設定できない場合に例外が発生します。これは単なる警告ではありません。

2
Thomas