デベロッパー向け Android 7.0

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

詳しくは、 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 では、 コンテンツ プロバイダの変更に基づいて機能します。それと同時に システム パフォーマンスを低下させる可能性がある古いパターンの一部を非推奨にする メモリ不足のデバイスでは特にそうです

一般的に使用される暗黙的なブロードキャストである CONNECTIVITY_ACTIONACTION_NEW_PICTUREACTION_NEW_VIDEO は複数のアプリのバックグラウンド処理を同時に起動するので、メモリと電池に負荷をかける可能性があります。そのため、Android 7.0 では、この 3 つのブロードキャストが削除されています。条件 受け取っている場合は、Android 7.0 を利用して 代わりに JobScheduler と関連 API に移行してください。

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

SurfaceView

Android 7.0 では、SurfaceView クラスに同期処理が追加され、次のような特定のケースでは TextureView よりも電池の持ちが良くなります。動画または 3D コンテンツをレンダリングするとき、スクロールや動画アニメーションの配置が含まれるアプリは、SurfaceView よりも TextureView を使用したほうが消費電力を節約できます。

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) メソッドを使用します。
  • 絵文字が異体字セレクターをサポートしていることを確認する。 異体字セレクターを使用すると、特定の絵文字をカラーまたは白黒で表示できます。モバイル デバイスでは、アプリで絵文字を白黒ではなくカラーで表す必要があります。ただし、アプリでテキスト メッセージ内に絵文字を表示する場合は、白黒バージョンを使用する必要があります。絵文字にバリエーションがあるかどうかを確認するには、バリエーション セレクタを使用します。 異体字のある文字の完全なリストについては、異体字に関する Unicode ドキュメント絵文字異体字シーケンス セクションを確認してください。
  • 絵文字が肌の色に対応していることを確認する。Android 7.0 では、ユーザーが 絵文字の肌の色を好みに合わせて調整できます。キーボードアプリでは 複数の肌の色があり、ユーザーが お好みの肌の色を選択します。どのシステム絵文字に 肌の色の修飾子(hasGlyph(String) を使用) メソッドを呼び出します。肌の色を使用する絵文字は、 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 の任意のバージョン(開発、ベータ、安定版)か、スタンドアロンの Webview APK を使用して、WebView の実装として動作させることができます。

マルチプロセス

Android 7.0 の Chrome バージョン 51 以降では、WebView でウェブ コンテンツが 開発者向けオプションの [マルチプロセス 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 入力サービスでは、録画できるチャンネル データや録画したセッションを保存する方法の制御、ユーザーによる録画されたコンテンツの操作の管理を行うことができます。このサービスは、既存の time-shifting API を使用して構築されています。

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

Android for Work

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

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

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 では、鍵構成証明という新しいセキュリティ ツールが導入されており、 デバイスに保存されているキーペアがハードウェア格納型 キーストアで、アプリの機密情報を適切に保護する あります。このツールを使用すると、アプリを実行するデバイスがルート権限を取得している場合でも、安全なハードウェアに存在するキーをアプリで操作することで信頼性が向上します。ハードウェア格納型キーストアの鍵を使用する場合 特にキーを使用して次の操作を行う場合は、このツールを アプリの機密情報を検証できます。

鍵構成証明を使用すると、RSA または EC 鍵ペアが デバイスのキーストア内に、デバイスのハードウェア格納型キーストアに 高信頼実行環境(TEE)で実行しますこのツールでは、 などのデバイス外サービス(アプリのバックエンド サーバーなど)に送られ、 鍵ペアの使用と有効性を厳密に検証します。これらの機能により、端末にルート権限が付与されていたり、端末を実行する 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 を使用してアプリに署名した後で APK にさらに変更を加えると、アプリの署名は無効になります。そのため、APK 署名スキーム v2 を使用してアプリに署名する場合は、署名後ではなく署名前に zipalign などのツールを使用します。

詳細については、Android Studio でアプリに署名する方法や、Gradle 用の Android プラグインを使用してアプリへの署名用ビルドファイルを構成する方法について説明している Android Studio ドキュメントをご覧ください。

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

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

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

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

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

Android 7.0 では、Meta + / キーを押すことで、 利用可能なすべてのショートカットを表示するキーボード ショートカット画面 アプリからの通知も確認できます。システムはこれらのトークンを ショートカットが存在する場合は、アプリのメニューからショートカットが自動的に追加されます。独自に調整したショートカットのリストを画面に表示することもできます。あなたなら onProvideKeyboardShortcuts() メソッドをオーバーライドします。

注: Meta キーはすべてのキーボードに存在するわけではありません。Macintosh キーボードでは Command キー、Windows キーボードでは Windows キー、Google Pixel C と ChromeOS キーボードでは 検索キーが Meta キーになります。

アプリのどこからでもキーボード ショートカット ヘルパーをトリガーするには、 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 では、ストレージ アクセスに仮想ファイルのコンセプトが追加されました。 説明します。仮想ファイル機能を使用すると、バイトコードの直接表現がなくても、ACTION_VIEW インテントで使用できるドキュメント URI を DocumentsProvider で返すことができます。Android 7.0 では ユーザー ファイル用の代替形式(仮想またはそれ以外)を指定します。

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