デベロッパー向け Android 7.0

Android 7.0 Nougat では、 ユーザーとデベロッパー向けに 新機能を提供することにしました このドキュメントでは、デベロッパー向けの最新情報を紹介します。

詳しくは、 <ph type="x-smartling-placeholder"></ph> Android 7.0 の動作変更(プラットフォームの変更点について) がアプリに影響することがあります。

詳細情報 一般ユーザー向けの Android 7.0 の機能については、www.android.com をご覧ください。

マルチウィンドウのサポート

Android 7.0 では、ご要望の多かった新しい マルチタスク機能を導入しました

画面上で 2 つのアプリを同時にポップオープンできるようになりました。

  • スマートフォンとタブレット 場合、ユーザーは 2 つのアプリを並べて実行したり、 画面上に重ねて表示されますユーザーはドラッグしてアプリのサイズを変更できる 分割します
  • Android TV デバイスでは、アプリはピクチャー イン ピクチャーに設定できます。 モードを使用すると、ユーザーがコンテンツを閲覧または閲覧している間も、コンテンツを表示し続けることができます。 他のアプリと連携します。
分割画面モードでアプリを実行しているモバイル

図 1. 分割画面モードで実行されているアプリ。

特にタブレットやその他の大画面デバイスでは、マルチウィンドウがサポートされます。 新たな方法でユーザーを引きつけることができます。スペース内のドラッグ&ドロップを ユーザーがアプリとの間でコンテンツを簡単にドラッグできるようになります。これは、 おすすめの方法を紹介します

アプリにマルチウィンドウのサポートを追加して、そのサポートを構成するのは簡単です。 マルチウィンドウ表示を処理しますたとえば、アクティビティの 最小許容サイズ(ユーザーがそれより小さいアクティビティのサイズを変更できないようにする) 表示されます。また、アプリのマルチウィンドウ ディスプレイを無効にすることもできます。 システムが全画面モードでのみアプリを表示するようにします。

詳しくは、マルチウィンドウのサポートをご覧ください。 デベロッパー向けドキュメントをご覧ください

通知の機能強化

Android 7.0 では、通知のデザインが刷新され、 より迅速に使用できるようになります。変更の一部は次のとおりです。

  • テンプレートの更新: 通知テンプレートが ヒーロー画像とアバターに 新たに重点を置いています開発者ができること コードの調整を最小限に抑えて 新しいテンプレートを活用できます
  • メッセージ スタイルのカスタマイズ: メッセージ スタイルのカスタマイズ: 通知に関連付けられたユーザー インターフェース ラベルが表示されます。 MessagingStyle クラス。メッセージの設定、 コンテンツビューが表示されます。
  • バンドル通知: システムがメッセージをグループ分けできる グループ化したり、グループを表示したりできます。ユーザーは 閉じるやアーカイブなどの操作を自動的に行うことができます。すでに 通知の実装方法については、すでにご存じの方も このモデル。
  • ダイレクト返信: リアルタイム通信アプリの場合、 Android システムはインライン返信をサポートしており、ユーザーはすぐに返信できます。 SMS やテキスト メッセージを通知インターフェース内で直接送信できます。
  • カスタムビュー: システムの活用を可能にする 2 つの新しい API カスタム モードを使用する場合は、通知ヘッダーやアクションなどの 表示されなくなります。
バンドル メッセージの通知を表示しているモバイル
1 通のメッセージ通知を表示しているモバイル
通知インターフェース内にインライン メッセージ返信を表示しているモバイル

図 2. バンドル通知とダイレクト返信。

新機能の実装方法については、 通知 ご覧ください

プロファイルに基づく JIT/AOT コンパイル

Android 7.0 では、コードを含む Just in Time(JIT)コンパイラを追加しました。 ART にプロファイリングできます。これにより、 実行中の Android アプリ。JIT コンパイラは ART の現行の 実行時のパフォーマンスの向上、 保存容量を増やし、アプリ アップデートとシステム アップデートを高速化します。

プロファイル ガイド付きコンパイルを使用すると、アプリの AOT/JIT コンパイルを ART が管理できるようになります。 アプリが実際に使用状況やデバイス上の条件に応じて 異なる結果になることがあります。 たとえば、ART は各アプリのホットメソッドのプロファイルを保持し、 それらのメソッドをプリコンパイルしてキャッシュに保存することで、最適なパフォーマンスを実現する。他の部分は アプリが実際に使用されるまでコンパイルされないままとなります。

プロファイル ベースでは、アプリの重要な部分のパフォーマンスを向上させるだけでなく、 コンパイルによって、アプリの全体的な RAM 使用量が削減されます。 ダウンロードされます。この機能は、メモリの少ないデバイスで特に重要です。

ART は、プロファイル ベースのコンパイルを、 デバイスのバッテリー。デバイスがアイドル状態の場合にのみプリコンパイルされます。 充電、その作業を事前に行うことで時間とバッテリーを節約できます。

アプリ インストールのクイックパス

ART の JIT コンパイラの最も具体的なメリットの一つは、 インストールとシステム アップデートに利用できます。データの入力に数分かかっていた大規模なアプリでも、 Android 6.0 の最適化とインストールは、わずかな手間でインストールできるようになりました。 秒です。また、最適化手順がなくなるため、システム アップデートも高速化されます。

Doze on the Go...

Android 6.0 では Doze というシステムモードが導入されました。Doze は、遅延を発生させてバッテリーを節約するシステムモードです。 アプリCPU とネットワークのアクティビティ(デバイスがアイドル状態のときなど) 机の上や引き出しの中にあります。

Android 7.0 では Doze モードがさらに進化し、外出先でもバッテリーを節約できます。 画面が一定時間オフになっていて、デバイスを電源から外していると、 Doze では、一般的な CPU とネットワークの制限の一部がアプリに適用されます。 つまり、ユーザーがデバイスを ありません。

Doze が第 1 レベルのシステム アクティビティ制限を適用してバッテリーを長持ちさせる様子を示すイラスト

図 3. Doze が適用されるようになりました さまざまな制限により、デバイスが静止していないときでも、バッテリーを長持ちさせることができます。

デバイスがバッテリーで動作しているときに画面がオフになってから少し時間が経つと、Doze モードになります。 ネットワーク アクセスを制限し、ジョブと同期を延期する。短時間のメンテナンス中 アプリケーションにはネットワーク アクセスが許可され、 実行されます。画面をオンにするかデバイスを電源に接続すると、 デバイスの Doze モードが解除されます。

画面がオフでバッテリーがオンになった状態で、デバイスが再び静止した状態になったとき Doze モードは、PowerManager.WakeLockAlarmManager アラーム、および GPS/Wi-Fi スキャン。

アプリを Doze に適応させるためのおすすめの方法は、 アプリが動作しているかどうかを確認できます。アプリが 以上で完了ですそうでない場合は、導入と アプリを Doze モードにします

Project Svelte: バックグラウンド処理の最適化

プロジェクト Svelte は、システムとアプリによる RAM の使用を最小限に抑えるための継続的な取り組みです エコシステムの幅広い Android デバイスでご利用いただけます。Android 7.0 では、プロジェクト Svelte は、アプリのバックグラウンドでの実行を最適化することに重点を置いています。

バックグラウンド処理は、ほとんどのアプリに不可欠な要素です。正しく扱えば コンテキスト アウェアで高速かつ高速に、優れたユーザー エクスペリエンスを実現できます。 適切に処理されないと、バックグラウンド処理が不必要に RAM を消費する可能性があります( 他のアプリのシステム パフォーマンスに影響を及ぼします。

Android 5.0 以降、JobScheduler は バックグラウンド処理を実行する際の 望ましい方法です 提供しますアプリはジョブのスケジュールを設定でき、その一方で メモリ、電源、接続の状態を確認できます。JobScheduler を使用すると、 すべてのアプリで使えるようにしたいと考えています。

もう 1 つの適切なオプションは です。 GCMNetworkManager: Google Play 開発者サービスの一部であり、 ジョブ スケジューリングが似ており、Google Cloud の Android。

JobSchedulerは引き続き延長され、 GCMNetworkManager で、より多くの たとえば Android 7.0 では、Android 7.0 では、 コンテンツ プロバイダの変更に基づいて機能します。それと同時に システム パフォーマンスを低下させる可能性がある古いパターンの一部を非推奨にする メモリ不足のデバイスでは特にそうです

Android 7.0 では、よく使用される次の 3 つの暗黙的なブロードキャストが削除されます。 CONNECTIVITY_ACTIONACTION_NEW_PICTUREACTION_NEW_VIDEO - これらによって 複数のアプリのバックグラウンド プロセスが同時に実行され、メモリやバッテリーの負荷が高くなります。条件 受け取っている場合は、Android 7.0 を利用して 代わりに JobScheduler と関連 API に移行してください。

[背景] 最適化のドキュメントをご覧ください。

SurfaceView

Android 7.0 では、SurfaceView に同期移動が導入されました。 クラスに組み込まれているため、バッテリー性能が TextureView を超えることがあります。たとえば、動画または 3D コンテンツ、スクロールやアニメーション動画を表示するアプリを使用すると、 TextureViewよりSurfaceViewです

SurfaceView クラスを使用すると、 専用ハードウェアで、アプリとは別に合成されるため 表示されます。その結果 TextureView を超えるコピー。

SurfaceView オブジェクトのコンテンツの位置が同期的に更新されるようになりました 含まれているアプリ コンテンツが返されます。この変更により、 SurfaceViewで再生される動画の翻訳または縮尺 ビューを移動するときに黒いバーが表示されなくなりました。

Android 7.0 以降では、 TextureViewSurfaceView に変更。

データセーバー

[設定] のデータセーバー

図 4. [設定] のデータセーバー。

モバイル デバイスのライフサイクル全体では、通常、モバイルデータ プランのコストは デバイス自体の価格を上回ります多くのユーザーにとって、モバイルデータは 節約したいと考えるかもしれません。

Android 7.0 では、新しいシステム サービスであるデータセーバー モードが導入され、 アプリでのモバイルデータ使用量(ローミングか、請求期間の終盤か) 少量のプリペイドのデータパックで 実行できますデータセーバーを使うと、 使用できるようにして、デベロッパーはモバイルデータ通信で 割安便がオンです。

ユーザーが [設定] でデータセーバーを有効にし、デバイスが 従量制ネットワークの場合、システムはバックグラウンドでのデータ使用をブロックし、アプリに通知します。 可能な限りフォアグラウンドでのデータ使用を削減する(例: ストリーミングのビットレート、画質の低下、楽観的プレキャッシュの延期、 といった具合ですユーザーは特定のアプリにバックグラウンドでの従量制課金接続を許可できる データセーバーがオンになっていても

Android 7.0 では、ConnectivityManager が拡張され、アプリ 取得する方法は、 ユーザーのデータセーバー設定モニタリング 設定の変更。すべてのアプリは、ユーザーがデータが有効になっているかどうかを確認する必要があります。 フォアグラウンドとバックグラウンドでのデータ使用量を抑えるように努めてください。

Vulkan API

Android 7.0 では、新しい 3D レンダリング API である VulkanTM がプラットフォームに統合されています。高評価 OpenGLTM ES など、Vulkan は 3D グラフィックと 3D レンダリングのオープン標準であり、 開発されました。

Vulkan は、ドライバの CPU オーバーヘッドを最小限に抑えるためにゼロから設計されています。 アプリが GPU の動作をより直接的に制御できるようになります。Vulkan また、複数のスレッドで並列処理を実行できるため、 一度に作成することもできます。

Vulkan の開発ツールとライブラリは、Android 7.0 SDK に含まれています。。 含める:

  • ヘッダー
  • 検証レイヤ(デバッグ ライブラリ)
  • SPIR-V シェーダー コンパイラ
  • SPIR-V ランタイム シェーダー コンパイル ライブラリ

Vulkan は、Vulkan 対応のハードウェアを搭載したデバイスのアプリでのみ使用できます。 たとえば Nexus 5X、Nexus 6P、Nexus Player など私たちは より多くのデバイスに Vulkan をできるだけ早く導入できるよう、パートナーと提携しています。

詳しくは、API ドキュメントをご覧ください。

クイック設定 Tile API

通知シェードのクイック設定タイル

図 5. 通知シェードのクイック設定タイル

クイック設定は、主要な設定や操作を簡単に公開できる一般的な方法です。 直接移動することもできます。Android 7.0 では、Android 7.0 の クイック設定を使用して、さらに便利で便利にします。

クイック設定タイル用のスペースが拡大され、 アクセスするには、ページ分けされた表示領域を左右にスワイプします。また、 表示されるクイック設定タイルと表示場所をユーザーが制御可能に タイルをドラッグ&ドロップするだけで、タイルを追加または移動できます。

Android 7.0 では、デベロッパー向けの新しい API が追加され、独自の API を定義できるようになりました。 クイック設定タイルで、ユーザーがアプリの主なコントロールやアクションに簡単にアクセスできるようにします。

クイック設定タイルは、次のいずれかのコントロールまたはアクション用に予約されています。 頻繁に使用することになるため、本来は使用すべきではない 起動します。

タイルを定義すると、ユーザーにそのタイルを表示できます。ユーザーは、 ドラッグ&ドロップするだけでクイック設定に移動できます。

アプリタイルの作成方法については、リファレンス ドキュメントをご覧ください。 Tile

番号のブロック

Android 7.0 では、プラットフォームで番号ブロックがサポートされ、 フレームワーク API を使用して、サービス プロバイダがブロック番号のリストを維持できるようにします。「 デフォルトの SMS アプリ、デフォルトの電話アプリ、携帯通信会社アプリは、 ブロック番号のリストに書き込みます。他のアプリはこのリストにアクセスできません。

番号のブロックをプラットフォームの標準機能にすることで、Android は次の機能を提供します。 番号ブロックをアプリでサポートするための一貫した方法 できます。アプリが活用できるその他のメリットには、次のようなものがあります。

  • 通話でブロックした電話番号は、テキスト メッセージでもブロックされます
  • ブロックした番号は、バックアップとプロビジョニングによるリセットやデバイス間でも保持されます。 機能を復元
  • 複数のアプリで同じ番号ブロックのリストを使用できます

さらに、Android を介した携帯通信会社アプリの統合により、携帯通信会社は ブロックした電話番号のリストを読み取り、サービス側のブロックを実行する 不要な電話やテキスト メッセージがユーザーに届かないようにする必要があります。 VoIP エンドポイントや電話転送などの あらゆるメディアを経由して接続できます

詳細については、このモジュールのコースリソースに BlockedNumberContract

コール スクリーニング

Android 7.0 では、デフォルトの電話アプリで着信をスクリーニングできます。スマートフォン そのためには、新しい CallScreeningService を実装します。 これにより、スマートフォン アプリはユーザーの 次のような着信通話の Call.Details:

  • 着信を拒否する
  • 通話履歴への通話を許可しない
  • ユーザーに通話の通知を表示しない

詳細については、このモジュールのコースリソースに CallScreeningService

マルチロケールのサポート、より多くの言語

Android 7.0 では、[設定] で複数の言語 / 地域を選択できるようになりました。 より効果的にサポートできるようになりますアプリで使用できる機能 ユーザーが選択した言語 / 地域を取得して、より高度な処理を 複数の言語 / 地域ユーザー向けのユーザー エクスペリエンスを提供する(たとえば検索結果を 同じ言語のウェブページを翻訳する機能は です。

Android 7.0 では、マルチロケールのサポートに加え、言語の範囲も拡張されています。 ユーザーに提供します一般的な用途ごとに 25 種類以上のバリエーションがある スペイン語、フランス語、アラビア語などの言語に対応しますまた、部分的な 新たに 100 以上の言語がサポートされるようになりました。

アプリは、ユーザーが設定した言語 / 地域のリストを取得するには、次の呼び出しを使用します。 LocaleList.GetDefault()。ロケール数の拡張をサポートするために、Android 7.0 では リソースの解決方法を変更します。アプリをテストして検証する 新しいリソース解決ロジックで想定どおりに動作します。

新しいリソース解決の動作と、リソース解決のためのベスト プラクティスについては、 多言語サポートをご覧ください。

新しい絵文字

Android 7.0 では、次のような絵文字および絵文字関連の機能が追加されています。 肌の色の絵文字とバリエーションのサポート あります。アプリが絵文字に対応している場合は これらの絵文字関連機能を活用するには、以下のガイドラインに従ってください。

  • 絵文字を挿入する前に、デバイスに絵文字が含まれていることを確認します。 会話に参加している hasGlyph(String) メソッドを使用します。
  • 絵文字がバリエーション セレクタに対応していることを確認します。 バリエーションセレクタを使用すると 特定の絵文字をカラーまたは白黒で表示する。 モバイル デバイスでは、アプリで絵文字を白黒ではなくカラーで表す必要があります。ただし、 テキストと一緒に絵文字を表示する場合は、白黒のバリエーションを使用する必要があります。 絵文字にバリエーションがあるかどうかを確認するには、バリエーション セレクタを使用します。 キャラクターのさまざまなバリエーションについては、 絵文字変形シーケンス セクション( <ph type="x-smartling-placeholder"></ph> バリエーションに関する Unicode ドキュメントをご覧ください。
  • 絵文字が肌の色に対応していることを確認する。Android 7.0 では、ユーザーが 絵文字の肌の色を好みに合わせて調整できます。キーボードアプリでは 複数の肌の色があり、ユーザーが お好みの肌の色を選択します。どのシステム絵文字に 肌の色の修飾子(hasGlyph(String) を使用) メソッドを呼び出します。肌の色を使用する絵文字は、 <ph type="x-smartling-placeholder"></ph> Unicode ドキュメントをご覧ください。

Android の ICU4J API

Android 7.0 では、Android フレームワークの ICU4J API のサブセットが android.icu パッケージ。移行は簡単で、ほとんどの移行作業に com.java.icu Namespace を android.icu。アプリケーションで ICU4J バンドルをすでに使用している場合は、 Android で提供されている android.icu API に切り替えてください。 APK サイズを大幅に削減できます。

Android ICU4J API について詳しくは、ICU4J サポートをご覧ください。

WebView

Chrome と WebView の連携

Android 7.0 以降の Chrome バージョン 51 以降では、デバイス上の Chrome APK Android システムの WebView を提供してレンダリングするために使用されます。この方法では デバイス自体の使用量を減らし、デバイス自体の通信量を抑えつつ、 WebView が最新であること(スタンドアロンの WebView APK は更新されなくなるため) 。

WebView プロバイダを選択するには、開発者向けオプションを有効にし、 [WebView の実装] を選択します。互換性のある任意の デバイスにインストールされている Chrome のバージョン(Dev、Beta、Stable)、または WebView 実装として機能するスタンドアロン WebView APK。

マルチプロセス

Android 7.0 の Chrome バージョン 51 以降では、WebView でウェブ コンテンツが 開発者向けオプション [Multiprocess WebView] を使用している場合、サンドボックス化されたプロセスが個別に 有効になります。

N での互換性とランタイム パフォーマンスに関するフィードバックをお待ちしています 今後の Android バージョンでマルチプロセス WebView を有効にする前に確認してください。この バージョン、起動時間の回帰、合計メモリ使用量、ソフトウェア レンダリングのパフォーマンスは期待できます。

マルチプロセス モードで予期しない問題が見つかった場合は、 できます。Chromium バグトラッカーから WebView チームにお問い合わせください。

ページの読み込み前に JavaScript が実行される

Android 7.0 を対象とするアプリでは、JavaScript のコンテキストがリセットされます。 新しいページが読み込まれると認識されます現在、コンテキストは 新しい WebView インスタンスで読み込まれるようにします。

WebView への JavaScript の挿入を検討しているデベロッパーは、 開始した後のスクリプトを実行します

安全でないオリジンの位置情報

Android 7.0 をターゲットとするアプリでは、Geolocation API は (HTTPS 経由)で許可されるようにします。このポリシーは、 ユーザーの個人情報を保護するわけではありません。

WebView ベータ版でのテスト

WebView は定期的に更新されるため、互換性をテストすることをおすすめします。 WebView の Beta チャンネルを使用して、頻繁にアプリを操作できます。テストを開始するには Android 7.0 の WebView のプレリリース版を使用する場合は、 [Chrome Dev] または [Chrome Beta] を選択して、WebView の実装として選択します。 開発者向けオプションを使用します問題は Chromium から報告してください WebView の新しいバージョンがリリースされる前に修正できるように、バグトラッカー リリースされます。

OpenGLTM ES 3.2 API

Android 7.0 では、OpenGL ES 3.2 のフレームワーク インターフェースとプラットフォーム サポートが追加されています。次に例を示します。

  • のすべての拡張機能 Android 拡張機能パック(AEP)(EXT_texture_sRGB_decode を除く)。
  • HDR と遅延シェーディング用の浮動小数点フレームバッファ。
  • バッチ処理とストリーミングの改善を可能にする BaseVertex 描画呼び出し。
  • WebGL のオーバーヘッドを軽減する堅牢なバッファ アクセス制御。

Android 7.0 の OpenGL ES 3.2 用のフレームワーク API は、 GLES32 クラス。OpenGL ES 3.2 を使用する場合は、 マニフェスト ファイルで <uses-feature> タグを指定し、 android:glEsVersion 属性。

OpenGL ES の使用方法(デバイスの認証情報の確認方法など)は、 ランタイム時にサポートされている OpenGL ES バージョンを確認するには、OpenGL ES API ガイドをご覧ください。

Android TV の録画

Android 7.0 で、Android TV 入力からコンテンツを録画、再生する機能を追加 録音サービスを提供します。既存のタイムシフトを基盤に構築 TV 入力サービスは、録画できるチャンネル データ、録画方法、 録画されたセッションは保存され、録画コンテンツに対するユーザー操作を管理します。

詳しくは、Android TV Recording API をご覧ください。

Android for Work

Android for Work では、Android 7.0 搭載デバイス向けに多くの新しい機能と API が追加されています。 以下に、主な機能の一部を示します。機能の完全なリストについては、 Android Enterprise の機能 list を使用します。

仕事用プロファイルのセキュリティ チャレンジ

N SDK をターゲットとするプロファイル オーナー 別個にセキュリティ チャレンジを指定できます。 仕事用プロファイルに報告します。ユーザーが仕事用のチャレンジを開こうとすると、このチャレンジが表示される 使用できます。セキュリティ チャレンジに成功すると、次のバッジを獲得できます。 必要に応じて復号化できます。プロファイル所有者の場合 ACTION_SET_NEW_PASSWORD: ユーザーに課題を設定するよう求める チャレンジ、ACTION_SET_NEW_PARENT_PROFILE_PASSWORD 個のプロンプト ユーザーに端末ロックを設定してもらいます。

プロファイル オーナーは仕事用プロファイルのチャレンジに個別のパスコード ポリシーを設定できます (PIN に必要な時間や指紋の可否や プロファイルのロックを解除する)setPasswordQuality() setPasswordMinimumLength() と関連メソッド。プロフィール 所有者は DevicePolicyManager を使用してデバイスのロックを設定することもできます。 新しい getParentProfileInstance() メソッドによって返されるインスタンス。 さらに、プロファイル オーナーは 新しい setOrganizationColor()setOrganizationName() メソッド。

仕事用をオフにする

仕事用プロファイルが設定されたデバイスでは、ユーザーは仕事用モードを切り替えることができます。仕事用モードが シャットダウンされ、仕事用プロファイルが無効になります。 アプリ、バックグラウンド同期、通知があります。これにはプロフィールの所有者も含まれます 説明します。ワークモードがオフの場合、システムに永続的なステータスが表示される アイコンをクリックして、仕事用アプリを起動できないことをユーザーに知らせます。ランチャー 仕事用のアプリやウィジェットにアクセスできないことを示します。

常時接続 VPN

デバイス所有者とプロファイル所有者は、仕事用アプリが常に接続されるように設定することができます 通信できます。一定の時間が経過すると、システムは VPN を自動的に起動します。 起動します。

新しい DevicePolicyManager メソッドは次のとおりです。 setAlwaysOnVpnPackage()getAlwaysOnVpnPackage()

アプリを使用せずに VPN サービスがシステムから直接バインドできるため VPN クライアントは常時接続 VPN の新しいエントリ ポイントを処理する必要があります。として サービスは、インテント フィルタ マッチングによってシステムに示されます。 アクション android.net.VpnService

常時接続 VPN クライアントを手動で設定して、 VPNService メソッドを使用する [設定] > [その他] > [VPN]。常時接続 VPN を有効にするオプション [設定] からの操作は、VPN クライアントが API レベル 24 をターゲットとしている場合にのみ使用できます。

カスタマイズされたプロビジョニング

アプリケーションでプロファイル所有者とデバイス所有者のプロビジョニングをカスタマイズできる コーポレート カラーやロゴを使ったフローが一般的です。 DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR のカスタマイズ フローカラー。DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI 企業ロゴでフローをカスタマイズします。

ユーザー補助機能の強化

Android 7.0 では、新しい画面のスタート画面に直接 [Vision Settings] が表示されます。 セットアップできます。これにより、ユーザーがこれまでよりもはるかに簡単に のユーザー補助機能(拡大操作、フォント オプションなど) 表示サイズ、TalkBack です

こうしたユーザー補助機能が一段と目立つようになったことで、 有効にしてアプリを試す可能性が高くなります必ずアプリをテストしてください 早めに設定することをおすすめします[設定] > ユーザー補助。

また Android 7.0 では、運動障がいのあるユーザーをサポートするユーザー補助機能サービスも追加されました。 画面をタップする機能も 用意されていますこの新しい API を使用すると、 顔追跡、視線追跡、ポイントスキャンなどの ユーザーのニーズを満たすことができます。

詳細については、このモジュールのコースリソースに GestureDescription

ダイレクト ブート

ダイレクト ブートにより、デバイスの起動時間が短縮され、 予期せぬ再起動があっても、アプリの機能は制限されます。 たとえば、ユーザーの睡眠中に暗号化されたデバイスが再起動された場合、 登録済みのアラーム、メッセージ、着信に対して、 ユーザーに表示されます。これはまた、ユーザー補助サービスも 使用できるようになります。

Android 7.0 ではダイレクト ブートでファイルベースの暗号化を利用 を使用すると、システムデータとアプリデータの両方に対してきめ細かい暗号化ポリシーが有効になります。 システムは一部のシステムデータに対してデバイス暗号化ストアを使用し、明示的に 登録済みのアプリデータを取得します。デフォルトでは、認証情報暗号化ストアがすべての その他のシステムデータ、ユーザーデータ、アプリ、アプリデータ。

起動時に、システムは制限付きモードで起動し、 デバイスで暗号化されたデータのみであり、アプリやデータへの一般的なアクセス権はありません。 このモードで実行するコンポーネントがある場合は、 マニフェスト内でフラグを設定することで、それらの Pod をバインドできます。再起動すると LOCKED_BOOT_COMPLETED をブロードキャストして、登録済みのコンポーネントを 使用します。システムにより、登録済みのデバイス暗号化アプリデータが利用可能であることが保証されます ロック解除します。その他のデータはすべて、ユーザーがロックを確認するまで利用できません。 認証情報を使って復号できます。

詳細については、ダイレクト ブートをご覧ください。

鍵構成証明

Android 7.0 では、鍵構成証明という新しいセキュリティ ツールが導入されており、 デバイスに保存されているキーペアがハードウェア格納型 キーストアで、アプリの機密情報を適切に保護する あります。このツールを使用することで、アプリの品質に関する セキュア ハードウェア内にある鍵とやり取りします。鍵が root 権限が取得されています。ハードウェア格納型キーストアの鍵を使用する場合 特にキーを使用して次の操作を行う場合は、このツールを アプリの機密情報を検証できます。

鍵構成証明を使用すると、RSA または EC 鍵ペアが デバイスのキーストア内に、デバイスのハードウェア格納型キーストアに 高信頼実行環境(TEE)で実行しますこのツールでは、 などのデバイス外サービス(アプリのバックエンド サーバーなど)に送られ、 鍵ペアの使用と有効性を厳密に検証します。これらの機能により 鍵ペアを保護する追加のセキュリティ レベルが実現します。たとえば、 デバイスの root 権限を取得する、または実行中の Android プラットフォームのセキュリティを侵害する 確認できます。

注: Android 7.0 を搭載した少数のデバイスのみ ハードウェア レベルのキー構成証明をサポートする。Android 7.0 搭載の他のすべてのデバイス 代わりにソフトウェア レベルの鍵構成証明を使用してください。プロパティを確認する前に デバイスのハードウェア格納型キーの暗号鍵を本番環境に導入する場合は、 デバイスがハードウェア レベルのキー構成証明をサポートしていることを確認する必要があります。宛先 証明書チェーンにルート モジュールが含まれていることを Google 構成証明ルート鍵によって署名された証明書と、 キー内の attestationSecurityLevel 要素 description データ構造が、TrustedEnvironment セキュリティ できます。

詳しくは、 鍵構成証明 デベロッパー向けドキュメントをご覧ください

ネットワーク セキュリティ構成

Android 7.0 では、アプリでセキュアな(HTTPS、TLS)の動作をカスタマイズできます。 安全に接続できるようにサポートしています。宣言型の ネットワーク セキュリティ構成。従来の構成を使用するのではなく、 エラーが発生しやすいプログラマティック API(X509TrustManager など)。

サポートされている機能:

  • カスタム トラスト アンカー。アプリケーションでどの Pod が 認証局(CA)は、安全な接続で信頼されています。対象 たとえば、特定の自己署名証明書や制限された一連の公的 CA を信頼できます。
  • デバッグ限定のオーバーライド。アプリ デベロッパーが安全にデバッグ アプリケーションの安全な接続を インストール環境に対する追加のリスクなしに あります。
  • クリアテキスト トラフィックのオプトアウト。アプリケーション自体を 意図せずクリアテキスト トラフィックが使用されたとします。
  • 証明書のピン留め。高度な機能により、アプリケーションを 安全な接続で信頼するサーバーキーを制限します。

詳細については、ネットワーク セキュリティ構成をご覧ください。

デフォルトの信頼できる認証局

デフォルトでは、Android 7.0 をターゲットとするアプリはシステム提供の証明書のみを信頼します ユーザーが追加した認証局(CA)を信頼しなくなります。Android 7.0 をターゲットとするアプリ (API レベル 24)でユーザーが追加した CA を信頼する場合は、 ネットワーク セキュリティ構成 どのようにユーザーの CA を信頼するかを指定します。

APK 署名スキーム v2

Android 7.0 では、APK 署名スキーム v2 という新しいアプリ署名スキームが導入されました。 アプリのインストール時間を短縮し、不正な行為者からの保護を強化 APK ファイルの変更。Android Studio 2.2 と Android Studio は、 Plugin for Gradle 2.2 は、APK 署名スキーム v2 と JAR 署名を使用する従来の署名スキームに 移行できます

APK 署名スキーム v2 をアプリに適用することをおすすめしますが、この新しい 必須ではありません。APK の使用時にアプリが正しくビルドされない場合 署名スキーム v2 では、新しいスキームを無効にできます。無効化プロセス これにより、Android Studio 2.2 と Android Plugin for Gradle 2.2 が 署名するアプリを構築します。署名に モジュール レベルの build.gradle ファイルを開き、 v2SigningEnabled false という行をリリース署名に追加します。 構成:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

注意: APK を使用してアプリに署名した場合 署名スキーム v2 を実行し、アプリ、つまりアプリの署名にさらに変更を加えます。 無効になります。このため、zipalign などのツールを使用してください。 APK 署名スキーム v2 を使用してアプリに署名する前に署名する必要があります。

詳細については、Android Studio のドキュメントで <ph type="x-smartling-placeholder"></ph> Android Studio でのアプリへの署名と、 設定方法 (Android Plugin for Gradle を使用してアプリに署名するためのビルドファイル)

特定のディレクトリへのアクセス

Android 7.0 では、アプリが新しい API を使用して、特定の外部 ストレージ ディレクトリ(SD などのリムーバブル メディア上のディレクトリを含む) 表示されます。新しい API は、アプリケーションが標準のアクセス方法を大幅に簡素化します。 外部ストレージ ディレクトリ(Pictures ディレクトリなど)にエクスポートできます。アプリ 代わりにこれらの API を使用でき、 READ_EXTERNAL_STORAGE - すべてのストレージへのアクセスを許可 またはストレージ アクセス フレームワークを使用して、ユーザーが特定の環境に 表示されます。

さらに、新しい API により、ユーザーが外部サービス アカウントへのアクセス権を アプリへのストレージ アクセスを管理できます。新しい API を使用すると、システムはシンプルな アプリがどのディレクトリであるかを明確に示す権限 UI アクセスをリクエストします。

詳しくは、 対象範囲別 ディレクトリ アクセスに関するデベロッパー向けドキュメントをご覧ください。

キーボード ショートカット ヘルパー

Android 7.0 では、Meta + / キーを押すことで、 利用可能なすべてのショートカットを表示するキーボード ショートカット画面 フォーカスされているアプリからの エラーが表示されますシステムはこれらのトークンを ショートカットが存在する場合は、アプリのメニューからショートカットが自動的に表示されます。Google Chat では 画面の微調整済みのショートカット リストも提供します。あなたなら onProvideKeyboardShortcuts() メソッドをオーバーライドします。

注: Meta キーは一部のプロダクトにのみ存在します。 Macintosh キーボードの場合は Command キー、 Windows キー、 Google Pixel C と ChromeOS キーボードでは、検索キーです。

アプリのどこからでもキーボード ショートカット ヘルパーをトリガーするには、 requestShowKeyboardShortcuts() アクティビティから抽出できます

カスタム ポインタ API

Android 7.0 では、カスタム ポインタ API が導入されており、 ポインタの外観、可視性、動作。この機能は ユーザーがマウスやタッチパッドを使って操作する場合に特に便利です UI オブジェクトですデフォルトのポインタでは標準のアイコンが使用されます。この API には ポインタ アイコンの外観の変更など、 特定のマウスやタッチパッドの動きに 反応するようになっています

ポインタ アイコンを設定するには、onResolvePointerIcon() をオーバーライドします。 メソッド(View クラスのメソッド)を使用します。このメソッドでは、 PointerIcon オブジェクトを使用して、 検出します。

Sustained Performance API

長時間実行されるアプリでは、パフォーマンスが著しく変動することがあります。これは、 システム オン チップ エンジンは、デバイス コンポーネントがネットワーク内に到達すると、 温度の上限を設定します。この変動がアプリのターゲットを変えている 高パフォーマンスで長時間実行される アプリを作成するデベロッパーに適しています

こうした制限に対処するため、Android 7.0 では以下がサポートされています。 パフォーマンス維持モード: OEM がパフォーマンス維持に関する 長時間実行アプリのデバイス パフォーマンス機能を提供します。アプリ デベロッパー これらのヒントを使用して、予測可能で 長期間にわたって安定したレベルのデバイス パフォーマンスを実現します。

アプリ デベロッパーは Android 7.0 のこの新しい API を Nexus 6P デバイスのみ。この機能を使用するには、 ウィンドウにパフォーマンス維持のウィンドウ フラグを設定する 選択しますこのフラグを設定するには、 Window.setSustainedPerformanceMode() メソッドを使用します。システムが自動的に ウィンドウがフォーカスされなくなった場合に、このモードを無効にします。

VR サポート

Android 7.0 では、新しい VR モードのプラットフォーム サポートと最適化が追加され、デベロッパーは 質の高いモバイル VR 体験をユーザーに提供できます。Chronicle にはさまざまな VR アプリ専用の CPU コアへのアクセスなど、機能強化を行いました。 アプリでは、インテリジェントなヘッド トラッキング、 3 種類あります最も重要な点は、Android 7.0 では 低遅延のグラフィックが実現します。Android 7.0 向け VR アプリの開発について詳しくは、 Android 用 Google VR SDK をご覧ください。

Android 7.0 では、印刷サービスのデベロッパーが追加情報を表示できるようになりました 詳細情報を確認できます

個々のプリンタを一覧表示する場合、印刷サービスでプリンタごとに設定可能に 次の 2 つの方法があります。

さらに、プリンタごとのアクティビティを設定して、 setInfoIntent() を呼び出して情報を取得します。

印刷ジョブで印刷ジョブの進行状況とステータスを指定できます。 呼び出すことで、 setProgress()、 それぞれ setStatus() です。

Frame Metrics API

Frame Metrics API を使用すると、アプリは UI レンダリングをモニタリングできます。 向上しますこの API は、フレーム転送用のストリーミング Pub/Sub API を公開することで、この機能を提供します。 アプリの現在のウィンドウのタイミング情報。返されるデータは、 これは adb shell dumpsys gfxinfo framestats で表示されるフレームと同等ですが、過去 120 フレームに限定されません。

Frame Metrics API を使用して、インタラクション レベルの UI を測定できる 高いパフォーマンスを維持できますこの API より細かい粒度でデータを収集できる adb shell dumpsys gfxinfo。このように細かく制御できるのは アプリ内での特定の操作に関するデータを収集できる。システム アプリ全体の要約や分析情報を グローバルな状態をクリアできます。こちらの パフォーマンス データを収集し、UI パフォーマンスの低下を検出する機能 アプリの実際のユースケースに合わせて調整できます。

ウィンドウをモニタリングするには、 OnFrameMetricsAvailableListener.onFrameMetricsAvailable() そのウィンドウに登録します。

API には、FrameMetrics オブジェクトが用意されています。 レンダリング サブシステムがさまざまなマイルストーンについて報告するタイミング データが含まれます。 重要な役割を果たしますサポートされている指標: UNKNOWN_DELAY_DURATIONINPUT_HANDLING_DURATIONANIMATION_DURATIONLAYOUT_MEASURE_DURATIONDRAW_DURATIONSYNC_DURATIONCOMMAND_ISSUE_DURATIONSWAP_BUFFERS_DURATIONTOTAL_DURATIONFIRST_DRAW_FRAME などがあります。

仮想ファイル

以前のバージョンの Android では、アプリはストレージ アクセスを使用して、 ユーザーがクラウド ストレージ アカウントからファイルを選択できるフレームワーク Google ドライブなどですしかしながら、 直接的なバイトコード表現を持たないすべてのファイルに 生成します。

Android 7.0 では、ストレージ アクセスに仮想ファイルのコンセプトが追加されました。 説明します。仮想ファイル機能を使用すると DocumentsProvider が返されたドキュメント URI を返し、 ACTION_VIEW インテントで使用されることはあっても、 直接のバイトコード表現はありません。Android 7.0 では ユーザー ファイル用の代替形式(仮想またはそれ以外)を指定します。

仮想ファイルを開く方法について詳しくは、以下をご覧ください。 Google Chat で仮想ファイルを開く ストレージ アクセス フレームワーク ガイドをご覧ください。