Android 13 では、Android デベロッパーの協力と直近の内部テストに基づいて、制限を受ける非 SDK インターフェースのリストが更新されています。Google は、非 SDK インターフェースを制限する前に、可能な限り、その代わりとなる公開インターフェースを利用可能にしています。
Android 13 をターゲットとしないアプリでは、この変更の一部はすぐには影響しない可能性があります。ただし、現時点で(アプリのターゲット API レベルに応じて)一部の非 SDK インターフェースを利用できていても、非 SDK のメソッドまたはフィールドをそのまま使用し続けると、将来的にアプリが機能しなくなるリスクが高くなります。
アプリが非 SDK インターフェースを使用しているかどうか不明な場合は、アプリをテストして確認できます。アプリが非 SDK インターフェースに依存している場合は、SDK の代替インターフェースへの移行を計画してください。ただし Google も、一部のアプリには非 SDK インターフェースを使用する正当なユースケースがあると承知しています。アプリの機能で使用している非 SDK インターフェースの代替インターフェースが見つからない場合は、新しい公開 API をリクエストしてください。
Android 13 でのリスト内容の変更
Android 13 でのリスト内容の変更は、次のカテゴリに分類されます。
- Android 12(API レベル 31)でサポートが終了し、Android 13 でブロックされた非 SDK インターフェース。
Android 13 のすべての非 SDK インターフェースの完全なリストを入手するには、次のファイルをダウンロードします。
ファイル: hiddenapi-flags.csv
SHA-256 チェックサム: 233a277aa8ac475b6df61bffd95665d86aac6eb2ad187b90bf42a98f5f2a11a3
Android 13 でブロックされた非 SDK インターフェース
次のコードボックスに、Android 12(API レベル 31)でサポートが終了し、Android 13(API レベル 33)でブロックされた非 SDK インターフェースのリストを示します。そのようなインターフェースは max-target-s
リストに含まれているため、それらをアプリで使用できるのは、アプリが Android 12(API レベル 31)以下をターゲットとする場合に限られます。
Google は、非 SDK インターフェースを制限する前に、その代替となる公開インターフェースを利用可能にすることを目指しています。また、アプリによってはそうしたインターフェースを使用する正当なユースケースがあることを承知しています。以前のバージョンでアプリが使用しているインターフェースが Android 13 でブロックされた場合は、そのインターフェースについて新しい公開 API をリクエストしてください。
Landroid/app/Activity;->setDisablePreviewScreenshots(Z)V # Use setRecentsScreenshotEnabled() instead. Landroid/os/PowerManager;->isLightDeviceIdleMode()Z # Use isDeviceLightIdleMode() instead. Landroid/os/Process;->setArgV0(Ljava/lang/String;)V # In general, do not try to change the process name. If you must change the process name (for instance, for debugging), you can use pthread_setname_np() instead, though be aware that doing this might confuse the system. Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache(I)V # Use android.accessibilityservice.AccessibilityService#clearCache() instead.