Android 10 の機能と API

Android 10 には、ユーザーにとっても、 開発できます。このドキュメントでは、デベロッパー向けの機能について紹介します。

API について詳しくは、 API 差分レポートにアクセスするか、 Android API リファレンス - 「 API レベル 29" です。Android 10 の動作も必ずご確認ください 変更点(API レベル 29 をターゲットとするアプリすべてのアプリ)、およびプライバシー をご覧ください。、 影響します。

セキュリティの機能強化

Android 10 には、以下のセクションで説明する多くのセキュリティ機能が追加されています。

生体認証ダイアログの改善

Android 10 では、以下の点が改善されています。 生体認証のサポート:

  • 生体認証機能の確認。
  • ユーザーがデバイスを使用して認証できるようにするフォールバック メカニズム PIN、パターン、またはパスワード(生体認証で認証できない場合) 表示されます。
  • ユーザーが暗黙的な生体認証モダリティを使用して認証を行った場合は、その後にユーザー確認を要求しないようにシステムに通知。たとえば、 ユーザーがログインした後はそれ以上の確認は不要であることをシステムに伝える 顔認証で認証されます。

APK から埋め込み DEX コードを直接実行する

Android 10 では、埋め込み DEX を実行するようプラットフォームに指示できます。 コードを直接デプロイできます。この方法では攻撃の防止と ローカルにコンパイルされたコードを攻撃者が改ざんして ダウンロードします

詳細については、次をご覧ください: APK から埋め込み DEX コードを直接実行する

TLS 1.3 のサポート

Android 10 では、以下がサポートされます。 TLS 1.3。TLS 1.3 は、TLS 1.3 の パフォーマンス上のメリットとセキュリティの強化を含む TLS 標準。Google ベンチマークによると、最大 40% の安全な接続を確立できます。 TLS 1.3 は TLS 1.2 よりも高速です。

TLS 1.3 の実装について詳しくは、TLS に関するセクション すべてのアプリの動作変更の中で ページをご覧ください

公開 Conscrypt API

Android 10 以降、Conscrypt セキュリティ プロバイダには TLS 機能用の公開 API を使用します。

クラスのコレクションは、 android.net.ssl には 一般的な API 呼び出しでは利用できない機能に、 javax.net.ssl API。これらのクラスの名前は複数形であると推測できます。 (対応する javax.net.ssl クラスの)たとえば、Compute Engine インスタンス上で javax.net.ssl.SSLSocket のインスタンスでは、代わりに次のメソッドを使用できます。 SSLSockets

接続機能

Android 10 では、ネットワークおよび接続に関する機能がいくつか改善されています。

Wi-Fi ネットワーク接続 API

Android 10 では、ピアツーピア接続がサポートされるようになりました。この 機能を使用すると、アプリでアクセス ポイントを変更するよう 接続に使われる WifiNetworkSpecifier リクエストされたネットワークのプロパティを記述します。ピアツーピア接続は ブートストラップ構成など、ネットワーク提供以外の目的で セカンダリ デバイスに接続できます。

詳しくは、ピアツーピアの Wi-Fi Network Request API をご覧ください。 接続します

Wi-Fi ネットワーク候補 API

Android 10 では、アプリがユーザーに接続を求めるサポートが追加されました。 Wi-Fi アクセス ポイントに接続します。接続するネットワークの候補を指定できます できます。プラットフォームは、基準に基づいて、受け入れるアクセス ポイントを最終的に選択します。 他のアプリからの入力です。

この機能の詳細については、 Wi-Fi の候補が表示されます。

Wi-Fi 高性能モードと Wi-Fi 低遅延モードの改善

Android 10 では、基盤となるモデムに次のようなヒントを提供できます。 レイテンシを短縮できます。

Android 10 では Wi-Fi lock API が拡張され、高パフォーマンスを効果的にサポートします 低遅延モードがありますWi-Fi 省電力機能は、高パフォーマンスと 低レイテンシ モードです。また、低レイテンシ モードでは、さらに遅延を最適化できます 自動モードになります。

低遅延モードが有効になるのは、ロックを取得するアプリが 画面がオンの状態で動作しています低遅延モードは リアルタイムのモバイルゲーム アプリケーションで特に有用です。

DNS リゾルバの特殊ルックアップ

Android 10 では、クリアテキスト ルックアップと DNS over TLS モードの両方を使用する特殊な DNS ルックアップがネイティブでサポートされるようになりました。これまでプラットフォームの DNS には、 リゾルバは A レコードと AAAA レコードのみをサポートしており、A レコードと AAAA レコードのみを 他のレコードタイプはサポートしていませんでした。 DnsResolver API は、汎用の 非同期解決に対応しており、SRVNAPTR などを 構成されます応答の解析はアプリが行う必要があります。

NDK ベースのアプリについては、android_res_nsend をご覧ください。

Wi-Fi Easy Connect

Android 10 で Easy Connect を使用して Wi-Fi をプロビジョニング可能に 認証情報をピアデバイスに引き継いでください。これはサポートが終了した WPS の代わりとなります。 セットアップとプロビジョニングのフローに Easy Connect を統合できます。 ACTION_PROCESS_WIFI_EASY_CONNECT_URI 使用します。

この機能の詳細については、 Wi-Fi Easy Connect

Wi-Fi Direct connection API

Android 10 で API クラス WifiP2pConfigWifiP2pManager が更新されました 使用して Wi-Fi Direct への高速接続を確立する機能をサポート 情報を提供します。この事前決定済み情報は、Bluetooth や NFC などのサイドチャネル経由で共有されます。

次のコードサンプルは、事前定義されたリソースを使用してグループを作成する方法を示しています。 含まれます

Kotlin

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

Java

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

認証情報を使用してグループに参加するには、manager.createGroup() を 次のとおりです。

Kotlin

manager.connect(channel, config, null)

Java

manager.connect(channel, config, null);

Bluetooth LE Connection Oriented Channels(CoC)

Android 10 では、アプリで BLE CoC 接続を使用して大量のデータを転送できます 通信できるようになりました。このインターフェースは、Bluetooth と接続の仕組みを抽象化することで、実装を簡素化します。

電話機能

Android 10 では、電話機能に関して以下のように改善されています。

通話品質の向上

Android 10 では、進行中のアクティビティの品質に関する情報を収集する機能が追加されています。 IP マルチメディア サブシステム(IMS)通話(ネットワークとの品質を含む) 機能に対応しているデバイスで利用できます。

コール スクリーニングと発信者番号

Android 10 では、アプリが Google Cloud 内の ユーザーのアドレス帳に迷惑電話の疑いがあり、迷惑電話を着信させている可能性がある 自動的に拒否されますブロックされた通話に関する情報 通話履歴にブロックされた通話として記録されるため、 ユーザーに気づかれないようにすることができます。この API を使用すると 通話スクリーニングを提供するため、ユーザーから READ_CALL_LOG 権限を取得する 発信者番号通知のための機能です

通話転送サービス API

Android 10 では、通話インテントの処理方法が変更されました。「 NEW_OUTGOING_CALL ブロードキャストは非推奨となったため、 CallRedirectionService API。CallRedirectionService API は、Android プラットフォームが行う発信通話を編集するためのインターフェースを提供します。対象 たとえば、サードパーティ製アプリが通話をキャンセルし、VoIP 経由で再ルーティングすることがあります。

外部ストレージ上でのファイルの作成に関する改善点

スコープ設定には storage Android 10 では、外部 IP アドレスに関連する次の機能が追加されています。 storage:

メディアとグラフィック

Android 10 では、メディアとグラフィックに関する以下の機能および API が新しく導入されています。

音声入力の共有

Android 10 では、2 つのアプリで音声入力を同時に共有する機能が追加されています。 詳しくは、音声入力を共有するをご覧ください。

音声再生キャプチャ

Android 10 では、他のアプリによる音声の再生をアプリでキャプチャすることができます。詳しくは、再生キャプチャをご覧ください。

MediaStyle 通知のシークバー

Android 10 以降では、MediaStyle 通知にシークバーが表示されます。シークバーが表示され、 再生の進行状況 PlaybackState.getPosition() 場合によっては、シークバーを使用して再生中の位置を 。シークバーの外観と動作は、以下のルールによって制御されます。

  • アクティブな MediaSession とその時間がある場合、シークバーが表示されます (MediaMetadata.METADATA_KEY_DURATION で指定)が 0 より大きい場合。 つまり、ライブストリーム、ラジオ放送など、不確定なストリームに対しては表示されません。
  • セッションで ACTION_SEEK_TO が実装されている場合、ユーザーはシークバーをドラッグして移動できます。 再生場所を制御します。

Native MIDI API

Android Native MIDI API(AMidi)を使用すると、 C/C++ コードで MIDI データを送受信できるようになり、 JNI の必要性を最小限に抑えることができます。

詳細については、Android Native MIDI API をご覧ください。

MediaCodecInfo の改善

Android 10 では、以下のメソッドが追加されています。 MediaCodecInfo で詳細を確認 情報が含まれています。

詳しくは、メディア コーデックをご覧ください。

Thermal API

デバイスが熱くなると、CPU や GPU がスロットルされ、アプリやゲームも予想外の影響を受けることがあります。複雑なグラフィック、高負荷のアプリ 持続的なネットワーク アクティビティが原因で問題が発生する可能性が高くなります。 これらは、チップセットとコア周波数、デバイスのセキュリティ レベル、 デバイスのパッケージングやフォームファクタも 考慮する必要があります

Android 10 では、アプリやゲームで Thermal API を使用して、以下のデバイスの変化をモニタリングできます。 消費電力を抑えて通常の状態に戻すための対策を講じることができます 温度。アプリで PowerManagerリスナーを登録することで、温度ステータス(低、中、高、重大、緊急、シャットダウン)がシステムから継続的に報告されます。

デバイスから熱ストレスが報告された場合、アプリやゲームはバックオフすることでサポートできます 継続的なアクティビティを行い、さまざまな方法で電力使用量を削減しています。たとえば、ストリーミング アプリの場合は解像度やビットレートを下げる、またはネットワーク トラフィックを低減させる、カメラアプリの場合は負荷の高い画像加工やフラッシュを無効にする、ゲームの場合はフレームレートやポリゴン テッセレーションを制限する、メディアアプリの場合はスピーカーの音量を下げる、地図アプリの場合は GPS をオフにする、といった対応が可能です。

Thermal API には新しいデバイス HAL レイヤが必要です。デバイス HAL レイヤは現在、Android 10 が実行されている Google Pixel デバイスでサポートされており、Google はパートナーのデバイス メーカーと共同で、できる限り早くエコシステムに幅広いサポートを提供できるよう取り組んでいます。

カメラと画像

Android 10 では、カメラと画像に関連する次の新機能が導入されています。

モノクロカメラのサポート

Android 9(API レベル 28)で初めてモノクロカメラ機能が導入されました。 Android 10 では、モノクロカメラのサポートに次のような機能が追加されています。

  • Y8 ストリーム形式がサポートされ、メモリ効率が改善されています。
  • モノクロ RAW DNG キャプチャがサポートされるようになりました。
  • 通常の CFA と NIR CFA を区別するための MONO 列挙型と NIR CFA 列挙型を導入 モノクロカメラと近赤外線カメラです

この機能を使用することで、ネイティブ モノクロ画像をキャプチャすることができます。論理 マルチカメラ デバイスではモノクロカメラを物理サブカメラとして使用し、 低照度での画質を向上させます

Dynamic Depth 形式

Android 10 以降、カメラは画像の奥行きデータを Dynamic Depth Format(DDF)という新しいスキーマを使用します。アプリは JPG 画像とその深度メタデータの両方をリクエストし、その情報を使用して 元の写真を修正せずに、後処理で必要なぼかしを適用できます 作成します。

この形式の仕様については、以下をご覧ください。 Dynamic Depth 形式

High Efficiency Image File 形式

High Efficiency Image File(HEIF)形式は、画像や動画の標準形式です より高品質なエンコードを実現し、ファイルサイズを縮小できる 使用できます。

ファイル形式の詳細については、HEIC をご覧ください。

マルチカメラの改善

Android 10 では、複数のカメラを 1 つの論理カメラに統合する方法が改善されています。 Android 9(API レベル 28)で導入された機能。次のアイテムが追加されました Camera2 API:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig) - 渡されたセッションがあるかどうかを照会できます。 カメラ キャプチャ セッションを作成できます。

  • LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID - 論理カメラデバイスに関連付けられているアクティブな物理カメラの ID を特定できます。返された ID を使用して、論理ストリームのリクエストに 複数の物理サブカメラ ストリームを接続して電力効率を向上させています。

ユーザー補助サービス API

Android 10 では、ユーザー補助サービスに関する以下の機能と API が新しく導入されています。

AccessibilityNodeInfo 入力キーフラグ

Android 10 以降では、 isTextEntryKey() 指定された AccessibilityNodeInfo がテキスト入力キーを表すかどうかを判断する キーボードやキーパッドに搭載されたボタンです

ユーザー補助ダイアログ音声フィードバック

ユーザーがユーザー補助のショートカットを使用して起動し、 ユーザー補助サービスの場合、Android 10 ではダイアログに それとともに、サービスから要求された場合はテキスト読み上げプロンプトが表示されます。

ジェスチャー ナビゲーションが有効であるときのユーザー補助ショートカット

ジェスチャー ナビゲーション機能が有効になっている場合 Android 10 では、ユーザー補助機能が ボタンが 選択します。ユーザーがユーザー補助サービス メニューにアクセスするには、 次のいずれかの操作を行います。

  • 2 本の指で上にスワイプ
  • 2 本の指で上にスワイプして長押し

物理キーボード用のユーザー補助ショートカット

Android 10 では、Android 10 のデバイスでユーザー補助のショートカットをトリガーできます。 Ctrl+Alt+Z キーを押します。

ソフト キーボード コントローラの機能強化

Android 10 では、ユーザー補助サービスはソフト デバイスがハード キーボードの接続を検出しても、キーボードが表示されます。 ユーザーはこの動作をオーバーライドできます。

ユーザー定義のユーザー補助機能タイムアウト

Android 10 では、 getRecommendedTimeoutMillis() APIこのメソッドは、インタラクティブ モードとインタラクティブ モードの 非インタラクティブ UI 要素です。戻り値は、どちらのユーザーも ユーザー補助サービス API を使用しています。

自動入力の改善

Android 10 では、自動入力サービスが以下のように改善されています。

互換性に関連する自動入力リクエスト

こちらの FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST 自動入力リクエストが互換性を介して生成されたかどうかを判別するフラグ モードです。

ユーザー名とパスワードを同時に保存する

アプリが複数のアクティビティを使用して複数のアクティビティを使用して ユーザー名やパスワードなどのフィールドを表示するには、 SaveInfo.FLAG_DELAY_SAVE 設定されます。

保存 UI のユーザー操作

アクションを設定して、保存ダイアログのパスワード フィールドの表示と非表示を切り替えることができます。 使用して、対応するパスワードの公開設定を できます。

データセット更新のサポート

自動入力で既存のパスワードを更新できます。たとえば、ユーザーがすでに ユーザーがパスワードを保存し、新しいパスワードを保存すると、 新しいパスワードを保存せずに既存のパスワードを更新する。

フィールド分類の改善

Android 10 では、Field Classification API が以下のように改善されています。

UserData.Builder コンストラクタ

UserData.Builder コンストラクタが Builder パターンに合わせて変更されました。

1 つの値を複数のカテゴリ ID タイプにマッピング可能にする

使用する場合 UserData.Builder インチ Android 10 では、1 つの値を複数のタイプのカテゴリ ID にマッピングできるようになりました。以前のリリースでは、1 つの値が複数回追加されると、例外がスローされていました。

クレジット カード番号のサポート向上

フィールド分類で、末尾の 4 桁として 4 桁の数字を検出できるようになりました です。

アプリ固有のフィールド分類のサポート

Android 10 に追加された機能 FillResponse.setUserData() セッション中にアプリ固有のユーザーデータを設定できます。 これにより、自動入力サービスがアプリ固有のフィールドの型を検出できるようになります。 説明します。

UI とシステム制御

Android 10 では、ユーザー インターフェースが次のように改善されています。

JVMTI PopFrame キャップのサポート

Android 10 では、 can_pop_frames Android JVMTI 実装の機能です。デバッグ時にこの機能を使用すると、 ブレークポイントで一時停止して調整した後に、関数を再実行 ローカル、グローバル、または関数の実装です。詳細については、次をご覧ください: Oracle の Pop Frame リファレンス ページ

Surface Control API

Android 10 では、 SurfaceControl API システム コンポジタへの低レベルのアクセス用 (SurfaceFlinger)。対象 コンポジタを活用するには SurfaceView が適切な方法です。「 SurfaceControl API は、次のような特定のケースで有用です。

  • 複数のサーフェスの同期
  • クロスプロセス サーフェス埋め込み
  • ローレベル ライフタイム管理

SurfaceControl API は両方で使用できます。 SDK と NDK のバインディング。 NDK 実装には、手動でバッファを交換するための API が コンポジタ。これは、以前の環境で問題が発生したユーザーに対して、 Kubernetes の BufferQueue

WebView ハングレンダラの検出

Android 10 では、WebViewRenderProcessClient 抽象クラスが導入されました。アプリは、このクラスを使用して WebView が応答しなくなったかどうかを検出できます。宛先 このクラスを使用します。

  1. 独自のサブクラスを定義し、そのサブクラスを実装する onRenderProcessResponsive() および onRenderProcessUnresponsive() あります。
  2. WebViewRenderProcessClient のインスタンスを 1 つ以上のインスタンスにアタッチする WebView オブジェクト。
  3. WebView が応答しなくなると、システムは クライアントの onRenderProcessUnresponsive() メソッドを呼び出し、WebViewWebViewRenderProcess。(WebView がシングル プロセスの場合、WebViewRenderProcess パラメータは null です)。これにより、レンダリング プロセスを中止するかどうかを尋ねるダイアログ ボックスをユーザーに表示するなど、アプリが適切なアクションを実行できるようになります。

WebView が応答しない場合、システムは onRenderProcessUnresponsive() を呼び出します。 頻度は 5 秒に 1 回以下)、その他のアクションは行いません。 WebView が応答する場合 この場合も、システムは onRenderProcessResponsive() を 1 回だけ呼び出します。

設定パネル

Android 10 では、設定パネルが導入され、アプリに設定パネルを表示するための API が導入されました。 ユーザーに付与する必要があります。これにより、ユーザーは必要ない [設定] に移動して [NFC] や [モバイルデータ] などを変更できます 使用する必要があります。

図 1. デバイスでウェブページを開こうとしている ネットワークに接続されていません。Chrome の [インターネット接続] をポップアップする 設定パネル...

図 2. お客様は Wi-Fi をオンにしてネットワークを選択できる アクセスできます。
で確認できます。

たとえば、デバイスが機内モードのときにユーザーがウェブブラウザを開いたとします。Android 10 より前のバージョンでは、アプリに汎用メッセージしか表示できませんでした。 接続を復元するために [設定] を開くようユーザーに求める。Android 10 では、 ブラウザアプリは、主要な接続設定を示すインライン パネルを表示できます 自動的に同期します。あり このパネルから、ユーザーはアプリを離れることなく接続を復元できます。

設定パネルを表示するには、次のいずれかでインテントを起動します。 Settings.Panel の操作:

Kotlin

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

Java

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type は、以下のいずれかになります。

ACTION_INTERNET_CONNECTIVITY
機内モード、Wi-Fi、 モバイルデータ通信です
ACTION_WIFI
Wi-Fi の設定が表示されますが、その他の接続設定は表示されません。これは、 Wi-Fi 接続が必要なアプリで、大規模なアップロードや ダウンロード
ACTION_NFC
近距離無線通信(NFC)に関連するすべての設定を示します。
ACTION_VOLUME
すべての音声ストリームの音量設定を示します。

共有の改善

Android 10 では、共有機能にさまざまな改善が加えられています。

Sharing Shortcuts API

ダイレクト シェア APISharing Shortcuts API に置き換えられました。

Shared Shortcuts API を使用すると、事後対応的にオンデマンドで結果を取得するのではなく、 を使用すると、アプリが事前にダイレクト共有ターゲットを公開できます。このように ShortcutManager が機能します。 2 つの API は似ているため、ShortcutInfo API を拡張して両方の機能を使いやすくしました。Shared Shortcuts API を使用すると、ユーザーの 共有ターゲットに追加できます。共有ターゲットはシステム内に保持される 同じアプリが更新されるか、アプリをアンインストールするまで続きます。

以前のダイレクト シェア メカニズムは引き続き機能しますが、このメカニズムを使用するアプリの場合は、 Sharing Shortcuts API を使用するアプリよりも優先度が高くなります。

ShortcutInfo.Builder によって、共有ターゲットに関する追加情報を提供するメソッドが追加および強化されます。

ダイレクト シェア ターゲット

動的ショートカットはダイレクト共有ターゲットとして公開できます。 直接共有ターゲットを公開するをご覧ください。

ShortcutManagerCompat は、古い DirectShare API との下位互換性を維持するための新しい AndroidX API です。シェア ターゲットを公開する場合は、この方法をおすすめします。

テキストのプレビュー

アプリがテキスト コンテンツを共有する際、共有しているテキストのプレビューをオプションとして Sharesheet UI の内容。

リッチテキスト プレビューの追加をご覧ください。

詳細

アプリでデータを共有する方法について詳しくは、 他のアプリへのシンプルなデータの送信他のアプリからのシンプルなデータの受信

ダークモード

Android 10 では、ダークモードと システム UI とデバイスで実行されているアプリ。詳しくは ダークモードをご覧ください。

フォアグラウンド サービスのタイプ

Android 10 では、 foregroundServiceType XML マニフェスト属性(特定の属性の定義に含める) 提供します。複数のフォアグラウンド サービスのタイプを特定のサービスに割り当てることも可能ですが、ほとんどの場合、これは適切ではありません。

次の表に、フォアグラウンド サービスの各種タイプと、そのタイプを宣言する必要があるサービスを示します。

フォアグラウンド サービスのタイプ 各タイプを宣言する必要があるサービスの例
connectedDevice ウェアラブル フィットネス トラッカーを監視する
dataSync ネットワークからファイルをダウンロードする
location 続行 ユーザーが開始したアクション
mediaPlayback オーディオブック、ポッドキャスト、音楽を再生する
mediaProjection デバイスのディスプレイに表示された動画を短時間録画する
phoneCall 通話を処理する

Kotlin

Android 10 では、Kotlin 開発向けに以下のアップデートが導入されています。

libcore API 向けの null 可能性アノテーション

Android 10 では、 SDK for libcore API について説明します。アプリ デベロッパーはこれらのアノテーションを使用すると、 Android Studio で Kotlin または Java の null 可能性分析を行って null 可能性を取得する 情報を提供します。

通常、Kotlin で null 可能性のコントラクトに違反すると、コンパイルが発生します。 エラーになります。既存のコードとの互換性を維持するため、追加されているのは @RecentlyNullable アノテーションと @RecentlyNonNull アノテーションだけです。つまり null 可能性違反がエラーではなく警告に陥るようになっています。

また、以前に適用されていた @RecentlyNullable アノテーションや @RecentlyNonNull アノテーションも、 Android 9 で追加された機能は、それぞれ @Nullable@NonNull に変更されています。 これにより、Android 10 以降で null 可能性違反があると警告ではなくエラーが出力されます。

アノテーションの変更の詳細については、以下をご覧ください。 Android Pie SDK が Kotlin への対応を強化 をご覧ください。

NDK

Android 10 では、NDK が次のように変更されています。

ファイル記述子オーナー権限のデバッグの改善

Android 10 では、fdsan が追加されました。これにより、ファイル記述子のオーナー権限に関する問題を簡単に見つけて修正できます。

ファイル記述子のオーナー権限の処理の誤りに関連するバグで、 use-after-closedouble-close を指定するため、これらはメモリ割り当てと同様です。 use-after-free バグと double-free バグですが、 診断と修正を行いますfdsan: ファイル記述子の検出や防止を試みる ファイル ディスクリプタの所有権を強制適用することで、不適切な管理を阻止できます。

これらの問題に関連するクラッシュについて詳しくは、 fdsan によって検出されたエラー。 fdsan について詳しくは、このモジュールの fdsan の Googlesource ページ

ELF TLS

API レベル 29 以上の NDK を使用してビルドされたアプリでは、ELF TLS を使用できます。 emutls の代わりに使用します。動的および静的リンカーのサポートが このメソッドを使用してスレッド ローカル変数を処理します。

API レベル 28 以前向けに構築されたアプリについて、改善が実装されました。 libgcc/compiler-rt で一部の emutls の問題を回避できます。

詳細については、次をご覧ください: NDK デベロッパー向けの Android の変更点

ランタイム

Android 10 では、ランタイムが次のように変更されています。

Mallinfo ベースのガベージ コレクション トリガー

スモール プラットフォームの Java オブジェクトが C++ ヒープ内の巨大なオブジェクトを参照する場合、 多くの場合、C++ オブジェクトは Java オブジェクトが収集されたときにのみ再利用できます。 ファイナライズされます以前のリリースでは、プラットフォームが推定したサイズ 多数の C++ オブジェクトもサポートしています。この推定値は必ずしも その結果、メモリ消費量が大幅に増加することがありました。 ガベージ コレクションを実行できませんでした。

Android 10 では、システム malloc() によって割り当てられたヒープサイズの合計がガベージ コレクタ(GC)によってトラッキングされ、malloc() の大きな割り当てが常に GC トリガー計算に含まれるようになります。多数の C++ 割り当てを Java 実行とインターリーブするアプリの場合は、結果的にガベージ コレクションの頻度が増加する可能性があります。他のアプリの場合は、少し減少する可能性があります。

テストとデバッグ

Android 10 では、テストとデバッグが次のように改善されています。

デバイス上のシステム トレースの改善

Android 10 では、サイズとサイズの制限を指定できます。 1 回または 2 回のトレースの所要時間を オンデバイス システム トレース。どちらかの値を指定すると、長時間トレースが記録される間、トレース バッファがファイルに定期的にコピーされます。トレースの完了 指定したサイズや期間の上限に達したとき。

これらの追加パラメータを使用して、テストとは異なるユースケースをテストします 通常のトレースと比較できますたとえば、パフォーマンスのバグを診断する場合、 アプリが長時間実行されている場合にのみ発生します。イン この場合、1 日にわたって長いトレースを記録し、 CPU スケジューラ、ディスクのアクティビティ、アプリのスレッドなど、レポート内のその他のデータを バグの原因の特定に役立ちます

Android 10 以降では、トレース ファイルは次の形式で保存されます。 Perfetto パフォーマンス計測とトレースのためのオープンソースプロジェクトです。Google Chat では Perfetto トレース ファイルを Systrace に変換する 形式

TextClassifier の改善

Android 10 では、 TextClassifier 行うことができます。

言語の検出

detectLanguage() 既存の分類方法と同様に機能します。これは、 が TextLanguage.Request このオブジェクトによって TextLanguage 渡されます。

TextLanguage オブジェクトは、順序付きペアのリストで構成されます。各ペア には、ロケールと、分類に対応する信頼スコアが含まれます。

会話アクションの候補

suggestConversationActions() メソッドは既存の分類メソッドと同様に機能します。受け取った ConversationActions.Request このオブジェクトによって ConversationActions 渡されます。

ConversationActions オブジェクトは、ConversationAction オブジェクトのリストで構成されています。各 ConversationAction オブジェクトには、 その信頼度スコアが表示されます。

スマート リプライと通知でのアクション

Android 9 で、通知内に定型返信文を表示する機能が導入されました。Android 10 では、この機能を拡張して、 インテントベースのアクションの提案を含めることもできます。さらにプラットフォームでは これらの候補が自動的に生成されますアプリは、引き続き独自の 自動提案機能を無効にするか、

これらの返信の生成に使用される API は、 TextClassifier Android 10 ではデベロッパーに直接公開されています。 TextClassifier の改善に関するセクションをご覧ください をご覧ください。

アプリで独自の候補を提供する場合、プラットフォームによる候補の自動生成は行われません。アプリの通知を表示したくない場合は 返信や操作の候補が表示されます。この自動返信機能を無効にすることもできます。 ルールとアクションを setAllowGeneratedReplies() および setAllowSystemGeneratedContextualActions()