Docs: Changes to source.android.com

  - 162883828 Devsite localized content from translation request bf65d1... by Android Partner Docs <[email protected]>
  - 162770253 Update log link to use pretty=full param by claym <[email protected]>
  - 162767505 Devsite localized content from translation request dfdcc0... by Android Partner Docs <[email protected]>
  - 162767224 Devsite localized content from translation request 078b52... by Android Partner Docs <[email protected]>
  - 162668252 Switch generic link for bug queues, add Instant Apps by claym <[email protected]>
  - 162668197 Add note describing adb setprop char length limit by claym <[email protected]>
  - 162619772 Fixed spelling typo by cqn <[email protected]>
  - 162363279 Fix undefined header values in ART Config by claym <[email protected]>
  - 162280768 Fixing silly typo by claym <[email protected]>

PiperOrigin-RevId: 162883828
Change-Id: Ic9b558e21ebf85d33eb3938d4e23deb326120175
diff --git a/en/devices/media/index.html b/en/devices/media/index.html
index 834c5cf..aec5a20 100644
--- a/en/devices/media/index.html
+++ b/en/devices/media/index.html
@@ -126,7 +126,7 @@
   device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \
 </pre>
 
-<p>For complete examples, seee <code>device/samsung/tuna/media_codecs.xml</code>
+<p>For complete examples, see <code>device/samsung/tuna/media_codecs.xml</code>
 and <code>device/samsung/tuna/media_profiles.xml</code> .</p>
 
 <p class="note"><strong>Note:</strong> As of Android 4.1, the
diff --git a/en/devices/tech/config/low-ram.html b/en/devices/tech/config/low-ram.html
index 100b4ab..d1ca5b5 100644
--- a/en/devices/tech/config/low-ram.html
+++ b/en/devices/tech/config/low-ram.html
@@ -229,7 +229,7 @@
 procrank, librank, &amp; ksminfo. These utilities allow you to see which KSM
 memory is mapped to what process, which processes use the most KSM memory.
 Once you have found a chunk of memory that looks worth exploring you can use
-either the hat utility if it's a duplicate object on the dalvik heap. </p>
+the hat utility if it's a duplicate object on the dalvik heap. </p>
 
 <h3 id="zram">Swap to zRAM</h3>
 
diff --git a/en/devices/tech/dalvik/configure.html b/en/devices/tech/dalvik/configure.html
index b6e7222..b7e80e1 100644
--- a/en/devices/tech/dalvik/configure.html
+++ b/en/devices/tech/dalvik/configure.html
@@ -293,7 +293,7 @@
 
 <h3 id=runtime_configuration>Runtime configuration</h3>
 
-<h4 id=undefined>Jit options</h4>
+<h4 id=jit_options>Jit options</h4>
 
 <p>The following options affect Android releases only where the ART JIT compiler
 is available.</p>
@@ -325,7 +325,7 @@
 </li>
 </ul>
 
-<h4 id=undefined>Package manager options</h4>
+<h4 id=pkg_mgr_options>Package manager options</h4>
 
 <p>
 Since Android 7.0, there's a generic way to specify the level of
@@ -364,7 +364,7 @@
 
 </ul>
 
-<h4 id=undefined>Dex2oat options</h4>
+<h4 id=dex2oat_options>Dex2oat options</h4>
 
 
 <p>Note that these options affect <code>dex2oat</code>
@@ -414,7 +414,7 @@
 
 <h2 id=other_odex>A/B specific configuration</h2>
 
-<h3 id=undefined>ROM configuration</h3>
+<h3 id=rom_config>ROM configuration</h3>
 
 <p>Starting in Android 7.0, devices may use two system partitions to enable
 <a href="/devices/tech/ota/ab_updates.html">A/B system updates</a>.
@@ -448,7 +448,7 @@
 SYSTEM_OTHER_ODEX_FILTER ?= app/% priv-app/%
 </pre>
 
-<h3 id=undefined>Background dexopt OTA</h3>
+<h3 id=background_ota>Background dexopt OTA</h3>
 
 <p>With A/B enabled devices, applications can be compiled in the background for
 updating to the new system image. See <a
diff --git a/en/devices/tech/debug/index.html b/en/devices/tech/debug/index.html
index 5400bb9..307c458 100644
--- a/en/devices/tech/debug/index.html
+++ b/en/devices/tech/debug/index.html
@@ -27,6 +27,14 @@
 tracing, and profiling native Android platform code when developing
 platform-level features.</p>
 
+<p class="note"><strong>Note:</strong> The pages in this section and elsewhere
+within this site recommend use of <code>adb</code> in conjunction with the
+<code>setprop</code> argument to debug certain aspects of Android. Please note,
+on pre-O versions of the Android OS, property names had a length limit of 32
+characters. This meant that to create a wrap property with the name of the app,
+it was necessary to truncate the name to fit. In Android O and later, this
+limit is much greater and should require no truncation.</p>
+
 <p>This page covers use of <code>debuggerd</code>, a daemon process for
 collecting error information after applications crash. Other pages in this
 section explore system services with
diff --git a/en/source/report-bugs.html b/en/source/report-bugs.html
index f273d7f..7635e0a 100644
--- a/en/source/report-bugs.html
+++ b/en/source/report-bugs.html
@@ -23,18 +23,17 @@
 <p>
 Thank you for your interest in Android! You can help improve Android by
 reporting issues and feature requests in the
-<a href="https://issuetracker.google.com/issues/new?component=190923">Android Issue
-Tracker</a>. The Android Issue Tracker contains a list of pending technical
-tasks across a variety of topics, information relevant to those tasks, and
-information about progress on those tasks, including which ones might get worked
-on in the short term.
+<a href="#bug-queues">Android Issue Tracker</a>. The Android Issue Tracker
+contains a list of pending technical tasks across a variety of topics,
+information relevant to those tasks, and information about progress on those
+tasks, including which ones might get worked on in the short term.
 </p>
 <p class="note">For more information about why we switched to Issue Tracker, see <a
 href="http://android-developers.googleblog.com/2017/04/a-new-issue-tracker-for-our-aosp.html">this
 blog post</a>.</p>
 <p>
 Issue Tracker is not a customer support forum. For support information, see the
-<a href="https://support.google.com/nexus">Nexus</a> and 
+<a href="https://support.google.com/nexus">Nexus</a> and
 <a href="https://support.google.com/pixelphone">Pixel</a> help centers. Support for
 other devices is provided by the device manufacturers or by the carriers selling
 those devices.
@@ -153,6 +152,12 @@
 class="material-icons">bug_report</i></a></td>
   </tr>
   <tr>
+   <td><a href="https://issuetracker.google.com/issues?q=componentid:316045%2B">Instant Apps</a></td>
+   <td><a href="https://issuetracker.google.com/issues/new?component=316045"><i
+class="material-icons">bug_report</i></a></td>
+  </tr>
+
+  <tr>
    <td><a href="https://issuetracker.google.com/issues?q=componentid:192694%2B">Jack</a></td>
    <td><a href="https://issuetracker.google.com/issues/new?component=192694"><i
 class="material-icons">bug_report</i></a></td>
diff --git a/en/source/site-updates.html b/en/source/site-updates.html
index d2f0afa..969f4cc 100644
--- a/en/source/site-updates.html
+++ b/en/source/site-updates.html
@@ -23,7 +23,7 @@
 
 
 <p>This page describes significant revisions to source.android.com. Please see the <a
-href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?no-merges">Android
+href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?pretty=full&no-merges">Android
 Open Source Project (AOSP) docs/source.android.com log</a> for the complete
 list of changes to this site.
 
diff --git a/ja/security/bulletin/2017-07-01.html b/ja/security/bulletin/2017-07-01.html
new file mode 100644
index 0000000..1a4cfe1
--- /dev/null
+++ b/ja/security/bulletin/2017-07-01.html
@@ -0,0 +1,1634 @@
+<html devsite><head>
+    <title>Android のセキュリティに関する公開情報 - 2017 年 7 月</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          //www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p><em>2017 年 7 月 5 日公開 | 2017 年 7 月 6 日更新</em></p>
+
+<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。2017 年 7 月 5 日以降のセキュリティ パッチレベルでは、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel と Nexus のアップデート スケジュール</a>をご覧ください。</p>
+
+<p>パートナーには、この公開情報に記載の問題について 1 か月前までに通知済みです。Android オープンソース プロジェクト(AOSP)レポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、こうしたパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
+
+<p>下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、離れた場所にいる攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の判定</a>は、攻撃を受けた端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的で無効にされるか不正に回避された場合を前提としています。</p>
+
+<p>この新たに報告された問題によって実際のユーザー端末が不正使用された報告はありません。<a href="/security/enhancements/index.html">Android セキュリティ プラットフォームの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google Play プロテクトのリスク軽減策</a>をご覧ください。こうした保護は、Android プラットフォームのセキュリティを改善します。</p>
+
+<p>ご利用の端末で上記の更新を行うことをすべてのユーザーにおすすめします。</p>
+
+<p class="note"><strong>注:</strong> 最新の無線(OTA)アップデートと Google 端末のファームウェア イメージについての情報は、<a href="#google-device-updates">Google 端末のアップデート</a>でご覧いただけます。</p>
+
+<h2 id="announcements">お知らせ</h2>
+<ul>
+  <li>この公開情報では、2 つのセキュリティ パッチレベル文字列を定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。詳しくは、<a href="#common-questions-and-answers">一般的な質問と回答</a>をご覧ください。
+    <ul>
+       <li><strong>2017-07-01</strong>: 部分的に対処したセキュリティ パッチレベル文字列。このセキュリティ パッチレベル文字列は、2017-07-01(およびそれ以前のすべてのセキュリティ パッチレベル文字列)に関連するすべての問題に対処していることを示します。</li>
+       <li><strong>2017-07-05</strong>: 完全に対処したセキュリティ パッチレベル文字列。このセキュリティ パッチレベル文字列は、2017-07-01 と 2017-07-05(およびそれ以前のすべてのセキュリティ パッチレベル文字列)に関連するすべての問題に対処していることを示します。</li>
+    </ul>
+  </li>
+</ul>
+
+<h2 id="mitigations">Android と Google Play プロテクトのリスク軽減策</h2>
+<p>ここでは、<a href="/security/enhancements/index.html">Android セキュリティ プラットフォーム</a>の保護と <a href="//www.android.com/play-protect">Google Play プロテクト</a>のようなサービスの保護によるリスクの軽減について概説します。こうした機能は、Android でセキュリティの脆弱性が悪用される可能性を減らします。</p>
+<ul>
+  <li>Android プラットフォームの最新版での機能強化により、Android にある多くの問題の悪用が困難になります。Google では、すべてのユーザーに対し、できる限り最新バージョンの Android に更新することをおすすめしています。</li>
+  <li>Android セキュリティ チームは、<a href="//www.android.com/play-protect">Google Play プロテクト</a>によって脆弱性の悪用を積極的に監視しており、<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">有害なおそれのあるアプリ</a>についてユーザーに警告しています。Google Play プロテクトは、<a href="//www.android.com/gms">Google モバイル サービス</a>を搭載した端末ではデフォルトで有効になっており、Google Play 以外からアプリをインストールするユーザーにとっては特に重要です。
+  </li>
+</ul>
+
+<h2 id="2017-07-01-details">セキュリティ パッチレベル 2017-07-01 の脆弱性の詳細</h2>
+<p>パッチレベル 2017-07-01 に該当するセキュリティ脆弱性の各項目について、下記に詳細を説明します。脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#common-questions-and-answers">脆弱性の種類</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、更新対象の AOSP バージョン(該当する場合)を表にまとめています。その問題に対処した、一般公開されている変更(AOSP の変更の一覧など)がある場合は、そのバグ ID にリンクを設定しています。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
+
+<h3 id="runtime">ランタイム</h3>
+<p>ランタイムに重大な脆弱性があるため、離れた場所にいる攻撃者が特別に細工したファイルを使用して、権限のないプロセス内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>更新対象の AOSP バージョン</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-3544</td>
+   <td><a href="https://android.googlesource.com/platform/libcore/+/c5dd90d62590425f04a261e0f6c927acca147f88">
+       A-35784677</a></td>
+   <td>RCE</td>
+   <td>中</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="framework">フレームワーク</h3>
+<p>フレームワークに重大な脆弱性があるため、悪意のあるローカルアプリが特別に細工したファイルを使用して、ライブラリを使用するアプリの任意のコードを実行するおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>更新対象の AOSP バージョン</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0664</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/base/+/59773dc2f213c3e645c7e04881afa0a8e6ffccca">
+       A-36491278</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/75edf04bf18d37df28fb58e1d75331ed4bcae230">
+       A-36991414</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5fc2df253c089b53b3e235a3f237f96a98b53977">
+       A-37285689</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5ac63e4547feaa7cb51ac81896250f47f367ffba">
+       A-37478824</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0668</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b3e3325d23289a94e66d8ce36a53a7ccf7b52c6d">
+       A-22011579</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0669</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/7b7ef84234cd3daea0e22025b908b0041885736c">
+       A-34114752</a></td>
+   <td>ID</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0670</td>
+   <td><a href="https://android.googlesource.com/platform/bionic/+/e102faee8b2f87c28616e7f5453f9a11eea9b122">
+       A-36104177</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="libraries">ライブラリ</h3>
+<p>ライブラリに重大な脆弱性があるため、離れた場所にいる攻撃者が特別に細工したファイルを使用して、ライブラリを使用するアプリ内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>更新対象の AOSP バージョン</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0671</td>
+   <td>A-34514762<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>4.4.4</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-2109</td>
+   <td><a href="https://android.googlesource.com/platform/external/boringssl/+/ccb2efe8d3fccb4321e85048d67c8528e03d4652">
+       A-35443725</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0672</td>
+   <td><a href="https://android.googlesource.com/platform/external/skia/+/c4087ff5486d36a690c681affb668164ec0dd697">
+       A-34778578</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="media-framework">メディア フレームワーク</h3>
+<p>メディア フレームワークに重大な脆弱性があるため、離れた場所にいる攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>更新対象の AOSP バージョン</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0540</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/a92b39ff0c47d488b81fecd62ba85e48d386aa68">
+       A-33966031</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0673</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/381ccb2b7f2ba42490bafab6aa7a63a8212b396f">
+       A-33974623</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0674</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/1603112cccbab3dff66a7eb1b82e858c1749f34b">
+       A-34231163</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0675</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/726108468dcfdabb833b8d55333de53cf6350aaa">
+       A-34779227</a>
+      [<a href="https://android.googlesource.com/platform/external/libhevc/+/4395fc2288e3f692765c73fce416e831fdaa5463">2</a>]</td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0676</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/8e415eabb5d2abd2f2bd40a675339d967f81521b">
+       A-34896431</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0677</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/b8fee6a6d0a91fb5ddca8f54b0c891e25c1b65ae">
+       A-36035074</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/64bc0b8c0c495c487604d483aa57978db7f634be">
+       A-36576151</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0679</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/91cb6b1745f3e9d341cf6decc2b916cb1e4eea77">
+       A-36996978</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0680</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989df73b34a7a698731cab3ee1e4a831a862fbe1">
+       A-37008096</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0681</td>
+   <td><a href="https://android.googlesource.com/platform/external/tremolo/+/822af05a1364d8dc6189dce5380a2703214dd799">
+       A-37208566</a></td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0682</td>
+   <td>A-36588422<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0683</td>
+   <td>A-36591008<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0684</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c7c9271740c29c02e7926265ed53a44b8113dbfb">
+       A-35421151</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0685</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/680b75dabb90c8c2e22886826554ad1bc99b36f1">
+       A-34203195</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0686</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/b8d7e85c10cc22e1a5d81ec3d8a2e5bdd6102852">
+       A-34231231</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0688</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/62c07468bc26d1f9487c5298bb2a2f3740db13b1">
+       A-35584425</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0689</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/2210ff5600d3f965352a3074adff8fedddcf347e">
+       A-36215950</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1f418f10f4319fc829360b7efee7fca4b3880867">
+       A-36592202</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691</td>
+   <td><a href="https://android.googlesource.com/platform/external/dng_sdk/+/c70264282305351abbec9b967333db4d896583b9">
+       A-36724453</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/6db482687caf12ea7d2d07d655b17413bc937c73">
+       A-36725407</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0693</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/632ff754836d22415136cb3f97fe4622c862ce81">
+       A-36993291</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0694</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/47750a5f1b19695ac64d6f7aa6e7e0918d3c8977">
+       A-37093318</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/cc5683451dd9be1491b54f215e9934d49f11cf70">
+       A-37094889</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0696</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/0d0ddb7cd7618ede5301803c526f066b95ce5089">
+       A-37207120</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c5eaf3ae70d5ea3a7d390294002e4cf9859b3578">
+       A-37239013</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1618337cac09284fddb5bb14b5e0cfe2946d3431">
+       A-35467458</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0699</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989b2afc3ebb1bbb4c962e2aff1fd9b3149f83f1">
+       A-36490809</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="system-ui">システム UI</h3>
+<p>システム UI に重大な脆弱性があるため、離れた場所にいる攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>更新対象の AOSP バージョン</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0700</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/38889ebd9b9c682bd1b64fd251ecd69b504a6155">
+       A-35639138</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0701</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/85e94f5b67c1beb9402c4de82bd481a5202470de">
+       A-36385715</a>
+      [<a href="https://android.googlesource.com/platform/external/libgdx/+/bd4c825d8fc5dd48f5c602e673ae210909b31fd0">2</a>]</td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0702</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/5d46e9a1784c02f347af107a978fe9fbd7af7fb2">
+       A-36621442</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/4af8f912aa1ee714638d0f9694d6f856bc8166f3">
+       A-33123882</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/179f0e9512100b0a403aab8b2b4cf5510bb20bee">
+       A-33059280</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+
+<h2 id="2017-07-05-details">セキュリティ パッチレベル 2017-07-05 の脆弱性の詳細</h2>
+<p>パッチレベル 2017-07-05 に該当するセキュリティ脆弱性の各項目について、下記に詳細を説明します。影響を受けるコンポーネントごとに脆弱性を分類し、CVE、関連する参照先、<a href="#common-questions-and-answers">脆弱性の種類</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、コンポーネント(該当する場合)、更新対象の AOSP バージョン(該当する場合)などの詳細を記載しています。その問題に対処した、一般公開されている変更(AOSP の変更の一覧など)がある場合は、そのバグ ID にリンクを設定しています。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
+
+<h3 id="broadcom-components">Broadcom コンポーネント</h3>
+<p>Broadcom コンポーネントに重大な脆弱性があるため、近くにいる攻撃者によってカーネル内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>A-38041027<a href="#asterisk">*</a><br />
+       B-RB#123023</td>
+   <td>RCE</td>
+   <td>重大</td>
+   <td>Wi-Fi ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705</td>
+   <td>A-34973477<a href="#asterisk">*</a><br />
+       B-RB#119898</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>A-35195787<a href="#asterisk">*</a><br />
+       B-RB#120532</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi ドライバ</td>
+  </tr>
+</tbody></table>
+<h3 id="htc-components">HTC コンポーネント</h3>
+<p>HTC コンポーネントに重大な脆弱性があるため、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0707</td>
+   <td>A-36088467<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>LED ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>A-35384879<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>サウンド ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0709</td>
+   <td>A-35468048<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>低</td>
+   <td>センサーハブ ドライバ</td>
+  </tr>
+</tbody></table>
+<h3 id="kernel-components">カーネル コンポーネント</h3>
+<p>カーネル コンポーネントに重大な脆弱性があるため、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-6074</td>
+   <td>A-35784697<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4">アップストリーム カーネル</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>ネットワーク サブシステム</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-5970</td>
+   <td>A-35805460<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34b2cef20f19c87999fff3da4071e66937db9644">アップストリーム カーネル</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>ネットワーク サブシステム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-5707</td>
+   <td>A-35841297<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=451a2886b6bf90e2fb378f7c46c655450fb96e81">アップストリーム カーネル</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdc81f45e9f57858da6351836507fbcf1b7583ee">2</a>]</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SCSI ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0710</td>
+   <td>A-34951864<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>TCB</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-7308</td>
+   <td>A-36725304<br />
+<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b6867c2ce76c596676bec7d2d525af525fdc6e2">アップストリーム カーネル</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b">2</a>]
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bcc5364bdcfe131e6379363f089e7b4108d35b70">3</a>]</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>ネットワーク ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9731</td>
+   <td>A-35841292<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14">アップストリーム カーネル</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>ファイル システム</td>
+  </tr>
+</tbody></table>
+<h3 id="mediatek-components">MediaTek コンポーネント</h3>
+<p>MediaTek コンポーネントに重大な脆弱性があるため、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td> CVE-2017-0711</td>
+   <td>A-36099953<a href="#asterisk">*</a><br />
+       M-ALPS03206781</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>ネットワーク ドライバ</td>
+  </tr>
+</tbody></table>
+<h3 id="nvidia-components">NVIDIA コンポーネント</h3>
+<p>NVIDIA コンポーネントに重大な脆弱性があるため、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0340</td>
+   <td>A-33968204<a href="#asterisk">*</a><br />
+       N-CVE-2017-0340</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>Libnvparser</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0326</td>
+   <td>A-33718700<a href="#asterisk">*</a><br />
+       N-CVE-2017-0326</td>
+   <td>ID</td>
+   <td>中</td>
+   <td>ビデオドライバ</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-components">Qualcomm コンポーネント</h3>
+<p>Qualcomm コンポーネントに重大な脆弱性があるため、悪意のあるローカルアプリによってカーネル内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-8255</td>
+   <td>A-36251983<br />
+<a href="//source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=cd42366a73b38c8867b66472f07d67a6eccde599">QC-CR#985205</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>ブートローダー</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10389</td>
+   <td>A-34500449<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=031c27b4b8414bc93a14e773503d9bfc0fc890d2">QC-CR#1009145</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>ブートローダー</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8253</td>
+   <td>A-35400552<br />
+<a href="//www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-4.4.git;a=commit;h=a5f07894058c4198f61e533d727b343c5be879b0">QC-CR#1086764</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>カメラドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8262</td>
+   <td>A-32938443<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-4.4/commit/?id=9ef4ee8e3dfaf4e796bda781826851deebbd89bd">QC-CR#2029113</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>GPU ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8263</td>
+   <td>A-34126808<a href="#asterisk">*</a><br />
+       QC-CR#1107034</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>無名共有メモリ サブシステム</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8267</td>
+   <td>A-34173755<a href="#asterisk">*</a><br />
+       QC-CR#2001129</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>無名共有メモリ サブシステム</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8273</td>
+   <td>A-35400056<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=dfe6691ba301c769179cabab12d74d4e952462b9">QC-CR#1094372</a>
+[<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=30d94c33dec0ffedc875d7853635a9773921320a">2</a>]</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>ブートローダー</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5863</td>
+   <td>A-36251182<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=daf0acd54a6a80de227baef9a06285e4aa5f8c93">QC-CR#1102936</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>USB HID ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8243</td>
+   <td>A-34112490<a href="#asterisk">*</a><br />
+       QC-CR#2001803</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SoC ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8246</td>
+   <td>A-37275839<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=30baaec8afb05abf9f794c631ad944838d498ab8">QC-CR#2008031</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>サウンド ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8256</td>
+   <td>A-37286701<br />
+<a href="//source.codeaurora.org/quic/la//platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=75e1e00d6b3cd4cb89fd5314a60c333aa0b03230">QC-CR#1104565</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8257</td>
+   <td>A-37282763<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=0f19fbd00c6679bbc524f7a6d0fc3d54cfd1c9ae">QC-CR#2003129</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>ビデオドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8259</td>
+   <td>A-34359487<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=68020103af00280393da10039b968c95d68e526c">QC-CR#2009016</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SoC ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>A-34624155<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=8f236391e5187c05f7f4b937856944be0af7aaa5">QC-CR#2008469</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>カメラドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8261</td>
+   <td>A-35139833<a href="#asterisk">*</a><br />
+       QC-CR#2013631</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>カメラドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264</td>
+   <td>A-33299365<a href="#asterisk">*</a><br />
+       QC-CR#1107702</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>カメラドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>A-32341313<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.10/commit/?id=193813a21453ccc7fb6b04bedf881a6feaaa015f">QC-CR#1109755</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>ビデオドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266</td>
+   <td>A-33863407<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=42627c94cf8c189332a6f5bfdd465ea662777911">QC-CR#1110924</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>ビデオドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268</td>
+   <td>A-34620535<a href="#asterisk">*</a><br />
+       QC-CR#2002207</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>カメラドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8270</td>
+   <td>A-35468665<a href="#asterisk">*</a><br />
+       QC-CR#2021363</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8271</td>
+   <td>A-35950388<a href="#asterisk">*</a><br />
+       QC-CR#2028681</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>ビデオドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8272</td>
+   <td>A-35950805<a href="#asterisk">*</a><br />
+       QC-CR#2028702</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>ビデオドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8254</td>
+   <td>A-36252027<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=70afce1d9be745005c48fd565c01ce452a565e7e">QC-CR#832914</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>サウンド ドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8258</td>
+   <td>A-37279737<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=31e2a2f0f2f3615cefd4400c707709bbc3e26170">QC-CR#2005647</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>カメラドライバ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269</td>
+   <td>A-33967002<a href="#asterisk">*</a><br />
+       QC-CR#2013145</td>
+   <td>ID</td>
+   <td>中</td>
+   <td>IPA ドライバ</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-closed-source-components">Qualcomm クローズドソース コンポーネント</h3>
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、2014~2016 年の Qualcomm AMSS のセキュリティに関する公開情報をご覧ください。これらは Android のセキュリティ パッチレベルとの関連付けのため、今回の「Android のセキュリティに関する公開情報」に追記されています。ここに記載されている脆弱性の修正は、Qualcomm から直接入手できます。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参照</th>
+   <th>タイプ</th>
+   <th>重大度</th>
+   <th>コンポーネント</th>
+  </tr>
+  <tr>
+   <td>CVE-2014-9411</td>
+   <td>A-37473054<a href="#asterisk">*</a><br />
+       QC-CR#532956</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9968</td>
+   <td>A-37304413<a href="#asterisk">*</a><br />
+       QC-CR#642084</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9973</td>
+   <td>A-37470982<a href="#asterisk">*</a><br />
+       QC-CR#646919</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9974</td>
+   <td>A-37471979<a href="#asterisk">*</a><br />
+       QC-CR#654072</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9975</td>
+   <td>A-37471230<a href="#asterisk">*</a><br />
+       QC-CR#700125</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9977</td>
+   <td>A-37471087<a href="#asterisk">*</a><br />
+       QC-CR#703002</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9978</td>
+   <td>A-37468982<a href="#asterisk">*</a><br />
+       QC-CR#709939</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9979</td>
+   <td>A-37471088<a href="#asterisk">*</a><br />
+       QC-CR#717304</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9980</td>
+   <td>A-37471029<a href="#asterisk">*</a><br />
+       QC-CR#709766</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-0575</td>
+   <td>A-37296999<a href="#asterisk">*</a><br />
+       QC-CR#715815</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8592</td>
+   <td>A-37470090<a href="#asterisk">*</a><br />
+       QC-CR#775396</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>コア</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8595</td>
+   <td>A-37472411<a href="#asterisk">*</a><br />
+       QC-CR#790151</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8596</td>
+   <td>A-37472806<a href="#asterisk">*</a><br />
+       QC-CR#802005</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9034</td>
+   <td>A-37305706<a href="#asterisk">*</a><br />
+       QC-CR#614512</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9035</td>
+   <td>A-37303626<a href="#asterisk">*</a><br />
+       QC-CR#750231</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9036</td>
+   <td>A-37303519<a href="#asterisk">*</a><br />
+       QC-CR#751831</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9037</td>
+   <td>A-37304366<a href="#asterisk">*</a><br />
+       QC-CR#753315</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9038</td>
+   <td>A-37303027<a href="#asterisk">*</a><br />
+       QC-CR#758328</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9039</td>
+   <td>A-37302628<a href="#asterisk">*</a><br />
+       QC-CR#760282</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9040</td>
+   <td>A-37303625<a href="#asterisk">*</a><br />
+       QC-CR#761216</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9041</td>
+   <td>A-37303518<a href="#asterisk">*</a><br />
+       QC-CR#762126</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9042</td>
+   <td>A-37301248<a href="#asterisk">*</a><br />
+       QC-CR#762214</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9043</td>
+   <td>A-37305954<a href="#asterisk">*</a><br />
+       QC-CR#762954</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9044</td>
+   <td>A-37303520<a href="#asterisk">*</a><br />
+       QC-CR#764858</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9045</td>
+   <td>A-37302136<a href="#asterisk">*</a><br />
+       QC-CR#766189</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9046</td>
+   <td>A-37301486<a href="#asterisk">*</a><br />
+       QC-CR#767335</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9047</td>
+   <td>A-37304367<a href="#asterisk">*</a><br />
+       QC-CR#779285</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9048</td>
+   <td>A-37305707<a href="#asterisk">*</a><br />
+       QC-CR#795960</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9049</td>
+   <td>A-37301488<a href="#asterisk">*</a><br />
+       QC-CR#421589、QC-CR#817165</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9050</td>
+   <td>A-37302137<a href="#asterisk">*</a><br />
+       QC-CR#830102</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9051</td>
+   <td>A-37300737<a href="#asterisk">*</a><br />
+       QC-CR#837317</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9052</td>
+   <td>A-37304217<a href="#asterisk">*</a><br />
+       QC-CR#840483</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9053</td>
+   <td>A-37301249<a href="#asterisk">*</a><br />
+       QC-CR#843808</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9054</td>
+   <td>A-37303177<a href="#asterisk">*</a><br />
+       QC-CR#856077</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9055</td>
+   <td>A-37472412<a href="#asterisk">*</a><br />
+       QC-CR#806464</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>コア</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9060</td>
+   <td>A-37472807<a href="#asterisk">*</a><br />
+       QC-CR#817343</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9061</td>
+   <td>A-37470436<a href="#asterisk">*</a><br />
+       QC-CR#824195</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9062</td>
+   <td>A-37472808<a href="#asterisk">*</a><br />
+       QC-CR#802039</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9067</td>
+   <td>A-37474000<a href="#asterisk">*</a><br />
+       QC-CR#848926</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9068</td>
+   <td>A-37470144<a href="#asterisk">*</a><br />
+       QC-CR#851114</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9069</td>
+   <td>A-37470777<a href="#asterisk">*</a><br />
+       QC-CR#854496</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9070</td>
+   <td>A-37474001<a href="#asterisk">*</a><br />
+       QC-CR#877102</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9071</td>
+   <td>A-37471819<a href="#asterisk">*</a><br />
+       QC-CR#877276</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9072</td>
+   <td>A-37474002<a href="#asterisk">*</a><br />
+       QC-CR#877361</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9073</td>
+   <td>A-37473407<a href="#asterisk">*</a><br />
+       QC-CR#878073</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10343</td>
+   <td>A-32580186<a href="#asterisk">*</a><br />
+       QC-CR#972213</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10344</td>
+   <td>A-32583954<a href="#asterisk">*</a><br />
+       QC-CR#1022360</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>モデム</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10346</td>
+   <td>A-37473408<a href="#asterisk">*</a><br />
+       QC-CR#896584</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>コア</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10347</td>
+   <td>A-37471089<a href="#asterisk">*</a><br />
+       QC-CR#899671</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>コア</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10382</td>
+   <td>A-28823584<a href="#asterisk">*</a><br />
+       QC-CR#944014</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10383</td>
+   <td>A-28822389<a href="#asterisk">*</a><br />
+       QC-CR#960624</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10388</td>
+   <td>A-32580294<a href="#asterisk">*</a><br />
+       QC-CR#992749</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10391</td>
+   <td>A-32583804<a href="#asterisk">*</a><br />
+       QC-CR#970283</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>WConnect</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5871</td>
+   <td>A-37473055<a href="#asterisk">*</a><br />
+       QC-CR#883013</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5872</td>
+   <td>A-37472809<a href="#asterisk">*</a><br />
+       QC-CR#886220</td>
+   <td>なし</td>
+   <td>高</td>
+   <td>セキュア システム グループ</td>
+  </tr>
+</tbody></table>
+<h2 id="google-device-updates">Google 端末のアップデート</h2>
+<p>この表には最新の無線(OTA)アップデートと Google 端末のファームウェア イメージのセキュリティ パッチレベルを記載しています。Google 端末のファームウェア イメージは、<a href="//developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Google 端末</th>
+   <th>セキュリティ パッチレベル</th>
+  </tr>
+  <tr>
+   <td>Pixel / Pixel XL</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 5X</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 6</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 6P</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 9</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus Player</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Pixel C</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+</tbody></table>
+<h2 id="acknowledgements">謝辞</h2>
+<p>調査にご協力くださった下記の皆様方に感謝いたします(敬称略)。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="83%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>研究者</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0711</td>
+   <td>Alibaba Mobile Security Group の Chengming Yang、Baozeng Ding、Yang Song</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>Tencent、Xuanwu Lab の Daxing Guo(<a href="//twitter.com/freener0">@freener0</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>Derrek(<a href="//twitter.com/derrekr6">@derrekr6</a>)、Scott Bauer</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>Tencent、KeenLab(<a href="//twitter.com/keen_lab?lang=en">@keen_lab</a>)の Di Shen(<a href="//twitter.com/returnsme?lang=en">@returnsme</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="//fb.me/dzimka">Dzmitry Lukyanenka</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692、CVE-2017-0694</td>
+   <td>Qihoo 360 Technology Co. Ltd.、Alpha Team の Elphet、Gong Guang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266、CVE-2017-8243、CVE-2017-8270</td>
+   <td>Qihoo 360 Technology Co. Ltd.、IceSword Lab の Gengjia Chen(<a href="//twitter.com/chengjia4574">@chengjia4574</a>)、<a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665、CVE-2017-0681</td>
+   <td><a href="//c0reteam.org">C0RE Team</a> の <a href="mailto:[email protected]">Hanxiang Wen</a>、Mingjian Zhou(<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)、Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268、CVE-2017-8261</td>
+   <td>Qihoo 360、IceSword Lab の Jianqiang Zhao(<a href="//twitter.com/jianqiangzhao">@jianqiangzhao</a>)、<a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td>Census Consulting Inc. の Joey Brand</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666、CVE-2017-0684</td>
+   <td><a href="//c0reteam.org">C0RE Team</a> の Mingjian Zhou(<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)、<a href="mailto:[email protected]">Chi Zhang</a>、Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697、CVE-2017-0670</td>
+   <td><a href="mailto:[email protected]">Niky1235</a>(<a href="//twitter.com/jiych_guru">@jiych_guru</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>Exodus Intelligence の Nitay Artenstein</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705、CVE-2017-8259</td>
+   <td><a href="//twitter.com/ScottyBauer1">Scott Bauer</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td>CSS Inc. の Timothy Becker</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0642、CVE-2017-0682、CVE-2017-0683、CVE-2017-0676、
+CVE-2017-0696、CVE-2017-0675、CVE-2017-0701、CVE-2017-0702、CVE-2017-0699</td>
+   <td>Vasily Vasiliev</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695、CVE-2017-0689、CVE-2017-0540、CVE-2017-0680、
+CVE-2017-0679、CVE-2017-0685、CVE-2017-0686、CVE-2017-0693、CVE-2017-0674、
+CVE-2017-0677</td>
+   <td><a href="//twitter.com/vysea">Trend Micro</a>、<a href="//blog.trendmicro.com/trendlabs-security-intelligence/category/mobile/">Mobile Threat Response Team</a> の V.E.O(<a href="//www.trendmicro.com">@VYSEa</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>Tencent Security Platform Department の Xiling Gong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td>Qihoo 360 Qex Team の Yangkang(<a href="//twitter.com/dnpushme">@dnpushme</a>)、Liyadong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269、CVE-2017-8271、CVE-2017-8272、CVE-2017-8267</td>
+   <td>Qihoo 360 Technology Co. Ltd.、IceSword Lab の Yonggang Guo(<a href="//twitter.com/guoygang">@guoygang</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264、CVE-2017-0326、CVE-2017-0709</td>
+   <td><a href="mailto:[email protected]">C0RE Team</a> の Yuan-Tsung Lo(<a href="//c0reteam.org">[email protected]</a>)、Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704、CVE-2017-0669</td>
+   <td>Tencent Security Platform Department の Yuxiang Li(<a href="//twitter.com/xbalien29">@Xbalien29</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td>Qihoo 360 Technology Co. Ltd.、Chengdu Security Response Center の <a href="//weibo.com/ele7enxxh">Zinuo Han</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691、CVE-2017-0700</td>
+   <td>Qihoo 360 Technology Co. Ltd.、Chengdu Security Response Center の <a href="//weibo.com/ele7enxxh">Zinuo Han</a>、<a href="//www.pwnzen.com/">Pangu Team</a> の Ao Wang(<a href="//twitter.com/ArayzSegment">@ArayzSegment</a>)</td>
+  </tr>
+</tbody></table>
+<h2 id="common-questions-and-answers">一般的な質問と回答</h2>
+<p>上記の公開情報に対する一般的な質問についての回答は以下のとおりです。</p>
+
+<p><strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+</strong></p>
+
+<p>端末のセキュリティ パッチレベルを確認する方法については、<a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。</p>
+<ul>
+  <li>セキュリティ パッチレベル 2017-07-01 以降では、セキュリティ パッチレベル 2017-07-01 に関連するすべての問題に対処しています。</li>
+  <li>セキュリティ パッチレベル 2017-07-05 以降では、セキュリティ パッチレベル 2017-07-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
+</ul>
+<p>このアップデートを組み込んだ端末メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
+<ul>
+  <li>[ro.build.version.security_patch]:[2017-07-01]</li>
+  <li>[ro.build.version.security_patch]:[2017-07-05]</li>
+</ul>
+<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
+
+<p>この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。</p>
+<ul>
+  <li>2017 年 7 月 1 日のセキュリティ パッチレベルを使用する端末では、そのセキュリティ パッチレベルに関連するすべての問題と、これまでのセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+  <li>2017 年 7 月 5 日以降のセキュリティ パッチレベルを使用する端末では、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを含める必要があります。</li>
+</ul>
+<p>パートナーには、対処するすべての問題の修正を 1 つのアップデートにまとめて提供することが推奨されています。</p>
+
+<p><strong>3. 「タイプ」列の項目はどういう意味ですか?<em></em></strong></p>
+
+<p>脆弱性の詳細の表で「タイプ」列に記載した項目は、セキュリティの脆弱性の分類を示しています。<em></em></p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>略語</th>
+   <th>定義</th>
+  </tr>
+  <tr>
+   <td>RCE</td>
+   <td>リモートコード実行</td>
+  </tr>
+  <tr>
+   <td>EoP</td>
+   <td>権限昇格</td>
+  </tr>
+  <tr>
+   <td>ID</td>
+   <td>情報開示</td>
+  </tr>
+  <tr>
+   <td>DoS</td>
+   <td>サービス拒否</td>
+  </tr>
+  <tr>
+   <td>なし</td>
+   <td>該当する分類なし</td>
+  </tr>
+</tbody></table>
+
+<p><strong>4. 「参照」の列の項目はどういう意味ですか?<em></em></strong></p>
+
+<p>脆弱性の詳細の表で「参照」列に記載した項目には、その参照番号が属す組織を示す接頭辞を含めている場合があります。<em></em></p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>接頭辞</th>
+   <th>参照</th>
+  </tr>
+  <tr>
+   <td>A-</td>
+   <td>Android バグ ID</td>
+  </tr>
+  <tr>
+   <td>QC-</td>
+   <td>Qualcomm の参照番号</td>
+  </tr>
+  <tr>
+   <td>M-</td>
+   <td>MediaTek の参照番号</td>
+  </tr>
+  <tr>
+   <td>N-</td>
+   <td>NVIDIA の参照番号</td>
+  </tr>
+  <tr>
+   <td>B-</td>
+   <td>Broadcom の参照番号</td>
+  </tr>
+</tbody></table>
+
+<p id="asterisk"><strong>5. 「参照」列の Android バグ ID の横にある「*」はどういう意味ですか?<em></em></strong></p>
+
+<p>公開されていない問題には、「参照」列の Android バグ ID の横に「*」を付けています。<em></em>この問題のアップデートは、通常、<a href="//developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Nexus 端末用最新バイナリ ドライバに含まれています。</p>
+
+<h2 id="versions">バージョン</h2>
+<table>
+  <colgroup><col width="25%" />
+  <col width="25%" />
+  <col width="50%" />
+  </colgroup><tbody><tr>
+   <th>バージョン</th>
+   <th>日付</th>
+   <th>メモ</th>
+  </tr>
+  <tr>
+   <td>1.0</td>
+   <td>2017 年 7 月 5 日</td>
+   <td>情報公開</td>
+  </tr>
+  <tr>
+   <td>1.1</td>
+   <td>2017 年 7 月 6 日</td>
+   <td>公開情報を改訂し AOSP リンクを追加</td>
+  </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file
diff --git a/ko/security/bulletin/2017-07-01.html b/ko/security/bulletin/2017-07-01.html
new file mode 100644
index 0000000..2719b84
--- /dev/null
+++ b/ko/security/bulletin/2017-07-01.html
@@ -0,0 +1,1736 @@
+<html devsite><head>
+    <title>Android 보안 게시판 - 2017년 7월</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          //www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p><em>2017년 7월 5일에 게시됨 | 2017년 7월 6일에 업데이트됨</em></p>
+
+<p>Android 보안 게시판에서는 Android 기기에 영향을 미치는 보안 취약성
+세부정보를 다룹니다. 이러한 모든 문제는 2017년 7월 5일 보안 패치 수준 이상에서
+모두 해결되었습니다. <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 및 Nexus 업데이트 일정</a>을 참조하여
+기기의 보안 패치 수준을 확인하는 방법을 알아보세요.</p>
+
+<p>파트너에게는 게시판에 설명된 문제에 관한 알림을 최소 한 달 전에
+전달했습니다. 이러한 문제를 해결하기 위한 소스 코드 패치는 Android 오픈소스
+프로젝트(AOSP) 저장소에 배포되었으며 이 게시판에도 링크되어 있습니다. 이
+게시판에는 AOSP 외부의 패치 링크도 포함되어 있습니다.</p>
+
+<p>이러한 문제 중 가장 심각한 것은 미디어 프레임워크의 심각한 보안 취약성으로,
+특별히 제작된 파일을 사용하는 원격 공격자가 권한이 설정된 프로세스의 컨텍스트
+내에서 임의의 코드를 실행할 수 있습니다. <a href="/security/overview/updates-resources.html#severity">심각도 평가</a>는
+개발 목적으로 플랫폼 및 서비스 완화를 사용할 수 없거나
+우회에 성공한 경우 취약성 악용으로 인해 대상 기기가 받는 영향을
+기준으로 합니다.</p>
+
+<p>실제 고객이 새로 보고된 이러한 문제로 인해 악용당했다는 신고는
+접수되지 않았습니다. Android 플랫폼의 보안을 개선하는
+<a href="/security/enhancements/index.html">Android 보안 플랫폼 보호</a> 및
+Google Play Protect 관련 세부정보를
+보려면 <a href="#mitigations">Android 및 Google Play Protect 완화</a>
+섹션을 참조하세요.</p>
+
+<p>모든 고객은 기기에서 이 업데이트를 수락하는 것이 좋습니다.</p>
+
+<p class="note"><strong>참고:</strong> Google 기기의 최신 무선 업데이트(OTA) 및 펌웨어 이미지 관련 정보는 <a href="#google-device-updates">Google 기기 업데이트</a> 섹션을 참조하세요.</p>
+
+<h2 id="announcements">공지사항</h2>
+<ul>
+  <li>이 게시판에는 Android 파트너가 모든 Android 기기에서 유사하게 발생하는
+  취약성 문제의 일부를 더욱 빠르고 유연하게 해결하기 위한
+  두 가지 보안 패치 수준 문자열이 포함되어 있습니다.
+ 자세한 내용은 <a href="#common-questions-and-answers">일반적인 질문 및 답변</a>을
+  참조하세요.
+    <ul>
+       <li><strong>2017-07-01</strong>: 부분 보안 패치 수준 문자열입니다. 이 보안 패치 수준 문자열은
+      2017-07-01 및 이전의 보안 패치 수준 문자열과 관련된 문제가
+      모두 해결되었음을 나타냅니다.</li>
+       <li><strong>2017-07-05</strong>: 전체 보안 패치 수준 문자열입니다. 이 보안 패치 수준 문자열은
+      2017-07-01과 2017-07-05 및 이전의 보안 패치 수준
+      문자열과 관련된 문제가 모두
+      해결되었음을 나타냅니다.</li>
+    </ul>
+  </li>
+</ul>
+
+<h2 id="mitigations">Android 및 Google Play Protect 완화</h2>
+<p>다음은 <a href="//www.android.com/play-protect">Google Play Protect</a>와 같은 <a href="/security/enhancements/index.html">Android 보안 플랫폼</a>
+및 서비스 보호 기능에서 제공하는 완화에 관한
+요약입니다. 이러한 기능을 통해 Android에서 보안 취약성이
+악용될 가능성을 줄입니다.</p>
+<ul>
+  <li>Android 플랫폼 최신 버전의 향상된 기능으로 Android의 여러 문제를
+  악용하기 더욱 어려워졌습니다. 가능하다면 모든 사용자는 최신 버전의 Android로
+  업데이트하는 것이 좋습니다.</li>
+  <li>Android 보안팀에서는 <a href="//www.android.com/play-protect">Google Play Protect</a>를 통해
+  악용사례를 적극 모니터링하고
+  <a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">잠재적으로 위험한 애플리케이션</a>에 관해 사용자에게 경고를 보냅니다. Google Play Protect는 <a href="//www.android.com/gms">Google 모바일 서비스</a>가 적용된
+  기기에 기본적으로 사용 설정되어 있으며
+  Google Play 외부에서 가져온 앱을 설치하는 사용자에게 특히 중요합니다.
+  </li>
+</ul>
+
+<h2 id="2017-07-01-details">2017-07-01 보안 패치 수준—취약성 세부정보</h2>
+<p>다음 섹션에서는 2017-07-01 패치 수준에 적용되는
+각 보안 취약성에 관해 자세히 알아볼 수 있습니다. 취약성은 영향을 받는
+구성요소 아래에 분류되어 있습니다. 여기에는 문제 설명 및
+CVE, 관련 참조, <a href="#common-questions-and-answers">취약성 유형</a>, <a href="/security/overview/updates-resources.html#severity">심각도</a>, 업데이트된 AOSP 버전(해당하는 경우)이
+포함된 표가 제시됩니다. 가능한 경우 AOSP 변경사항 목록과 같이
+문제를 해결한 공개 변경사항을 버그 ID에 연결합니다. 하나의
+버그와 관련된 변경사항이 여러 개인 경우 추가 참조가 버그 ID 다음에 오는
+번호에 연결됩니다.</p>
+
+<h3 id="runtime">런타임</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는 원격 공격자가
+권한이 설정되지 않은 프로세스의 컨텍스트 내에서 임의의 코드를
+실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>업데이트된 AOSP 버전</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-3544</td>
+   <td><a href="https://android.googlesource.com/platform/libcore/+/c5dd90d62590425f04a261e0f6c927acca147f88">
+       A-35784677</a></td>
+   <td>RCE</td>
+   <td>보통</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="framework">프레임워크</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는 로컬 악성 애플리케이션이 라이브러리를 사용하는 애플리케이션의 컨텍스트 내에서 임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>업데이트된 AOSP 버전</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0664</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/base/+/59773dc2f213c3e645c7e04881afa0a8e6ffccca">
+       A-36491278</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/75edf04bf18d37df28fb58e1d75331ed4bcae230">
+       A-36991414</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5fc2df253c089b53b3e235a3f237f96a98b53977">
+       A-37285689</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5ac63e4547feaa7cb51ac81896250f47f367ffba">
+       A-37478824</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0668</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b3e3325d23289a94e66d8ce36a53a7ccf7b52c6d">
+       A-22011579</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0669</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/7b7ef84234cd3daea0e22025b908b0041885736c">
+       A-34114752</a></td>
+   <td>ID</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0670</td>
+   <td><a href="https://android.googlesource.com/platform/bionic/+/e102faee8b2f87c28616e7f5453f9a11eea9b122">
+       A-36104177</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="libraries">라이브러리</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는 원격 공격자가
+라이브러리를 사용하는 애플리케이션의 컨텍스트 내에서 임의의 코드를
+실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>업데이트된 AOSP 버전</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0671</td>
+   <td>A-34514762<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>높음</td>
+   <td>4.4.4</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-2109</td>
+   <td><a href="https://android.googlesource.com/platform/external/boringssl/+/ccb2efe8d3fccb4321e85048d67c8528e03d4652">
+       A-35443725</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0672</td>
+   <td><a href="https://android.googlesource.com/platform/external/skia/+/c4087ff5486d36a690c681affb668164ec0dd697">
+       A-34778578</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="media-framework">미디어 프레임워크</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는 원격 공격자가
+권한이 설정된 프로세스의 컨텍스트 내에서 임의의 코드를
+실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>업데이트된 AOSP 버전</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0540</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/a92b39ff0c47d488b81fecd62ba85e48d386aa68">
+       A-33966031</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0673</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/381ccb2b7f2ba42490bafab6aa7a63a8212b396f">
+       A-33974623</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0674</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/1603112cccbab3dff66a7eb1b82e858c1749f34b">
+       A-34231163</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0675</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/726108468dcfdabb833b8d55333de53cf6350aaa">
+       A-34779227</a>
+      [<a href="https://android.googlesource.com/platform/external/libhevc/+/4395fc2288e3f692765c73fce416e831fdaa5463">2</a>]</td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0676</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/8e415eabb5d2abd2f2bd40a675339d967f81521b">
+       A-34896431</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0677</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/b8fee6a6d0a91fb5ddca8f54b0c891e25c1b65ae">
+       A-36035074</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/64bc0b8c0c495c487604d483aa57978db7f634be">
+       A-36576151</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0679</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/91cb6b1745f3e9d341cf6decc2b916cb1e4eea77">
+       A-36996978</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0680</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989df73b34a7a698731cab3ee1e4a831a862fbe1">
+       A-37008096</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0681</td>
+   <td><a href="https://android.googlesource.com/platform/external/tremolo/+/822af05a1364d8dc6189dce5380a2703214dd799">
+       A-37208566</a></td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0682</td>
+   <td>A-36588422<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>높음</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0683</td>
+   <td>A-36591008<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>높음</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0684</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c7c9271740c29c02e7926265ed53a44b8113dbfb">
+       A-35421151</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0685</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/680b75dabb90c8c2e22886826554ad1bc99b36f1">
+       A-34203195</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0686</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/b8d7e85c10cc22e1a5d81ec3d8a2e5bdd6102852">
+       A-34231231</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0688</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/62c07468bc26d1f9487c5298bb2a2f3740db13b1">
+       A-35584425</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0689</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/2210ff5600d3f965352a3074adff8fedddcf347e">
+       A-36215950</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1f418f10f4319fc829360b7efee7fca4b3880867">
+       A-36592202</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691</td>
+   <td><a href="https://android.googlesource.com/platform/external/dng_sdk/+/c70264282305351abbec9b967333db4d896583b9">
+       A-36724453</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/6db482687caf12ea7d2d07d655b17413bc937c73">
+       A-36725407</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0693</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/632ff754836d22415136cb3f97fe4622c862ce81">
+       A-36993291</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0694</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/47750a5f1b19695ac64d6f7aa6e7e0918d3c8977">
+       A-37093318</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/cc5683451dd9be1491b54f215e9934d49f11cf70">
+       A-37094889</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0696</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/0d0ddb7cd7618ede5301803c526f066b95ce5089">
+       A-37207120</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c5eaf3ae70d5ea3a7d390294002e4cf9859b3578">
+       A-37239013</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1618337cac09284fddb5bb14b5e0cfe2946d3431">
+       A-35467458</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0699</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989b2afc3ebb1bbb4c962e2aff1fd9b3149f83f1">
+       A-36490809</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="system-ui">시스템 UI</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는 원격 공격자가
+권한이 설정된 프로세스의 컨텍스트 내에서 임의의 코드를
+실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>업데이트된 AOSP 버전</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0700</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/38889ebd9b9c682bd1b64fd251ecd69b504a6155">
+       A-35639138</a></td>
+   <td>RCE</td>
+   <td>높음</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0701</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/85e94f5b67c1beb9402c4de82bd481a5202470de">
+       A-36385715</a>
+      [<a href="https://android.googlesource.com/platform/external/libgdx/+/bd4c825d8fc5dd48f5c602e673ae210909b31fd0">2</a>]</td>
+   <td>RCE</td>
+   <td>높음</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0702</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/5d46e9a1784c02f347af107a978fe9fbd7af7fb2">
+       A-36621442</a></td>
+   <td>RCE</td>
+   <td>높음</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/4af8f912aa1ee714638d0f9694d6f856bc8166f3">
+       A-33123882</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/179f0e9512100b0a403aab8b2b4cf5510bb20bee">
+       A-33059280</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+
+<h2 id="2017-07-05-details">2017-07-05 보안 패치 수준—취약성 세부정보</h2>
+<p>다음 섹션에서는 2017-07-05 패치 수준에 적용되는
+각 보안 취약성에 관해 자세히 알아볼 수 있습니다. 취약성은
+영향을 받는 구성요소 아래에 분류되어 있으며 CVE, 관련 참조,
+<a href="#common-questions-and-answers">취약성 유형</a>, <a href="/security/overview/updates-resources.html#severity">심각도</a>, 구성요소(해당하는 경우),
+업데이트된 AOSP 버전(해당하는 경우)과 같은
+세부정보가 포함되어 있습니다. 가능한 경우
+AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을 버그 ID에
+연결합니다. 하나의 버그와 관련된 변경사항이 여러 개인 경우 추가
+참조가 버그 ID 다음에 오는 번호에 연결됩니다.</p>
+
+<h3 id="broadcom-components">Broadcom 구성요소</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 인접한 공격자가 커널 컨텍스트 내에서
+임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>A-38041027<a href="#asterisk">*</a><br />
+       B-RB#123023</td>
+   <td>RCE</td>
+   <td>심각</td>
+   <td>Wi-Fi 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705</td>
+   <td>A-34973477<a href="#asterisk">*</a><br />
+       B-RB#119898</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>Wi-Fi 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>A-35195787<a href="#asterisk">*</a><br />
+       B-RB#120532</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>Wi-Fi 드라이버</td>
+  </tr>
+</tbody></table>
+<h3 id="htc-components">HTC 구성요소</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+권한이 설정된 프로세스 내에서 임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0707</td>
+   <td>A-36088467<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>LED 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>A-35384879<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>사운드 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0709</td>
+   <td>A-35468048<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>낮음</td>
+   <td>센서 허브 드라이버</td>
+  </tr>
+</tbody></table>
+<h3 id="kernel-components">커널 구성요소</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+권한이 설정된 프로세스 내에서 임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-6074</td>
+   <td>A-35784697<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4">업스트림
+커널</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>네트워킹 하위 시스템</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-5970</td>
+   <td>A-35805460<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34b2cef20f19c87999fff3da4071e66937db9644">업스트림
+커널</a></td>
+   <td>DoS</td>
+   <td>높음</td>
+   <td>네트워킹 하위 시스템</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-5707</td>
+   <td>A-35841297<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=451a2886b6bf90e2fb378f7c46c655450fb96e81">업스트림 커널</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdc81f45e9f57858da6351836507fbcf1b7583ee">2</a>]</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>SCSI 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0710</td>
+   <td>A-34951864<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>TCB</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-7308</td>
+   <td>A-36725304<br />
+<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b6867c2ce76c596676bec7d2d525af525fdc6e2">업스트림 커널</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b">2</a>]
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bcc5364bdcfe131e6379363f089e7b4108d35b70">3</a>]</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>네트워크 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9731</td>
+   <td>A-35841292<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14">업스트림
+커널</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>파일 시스템</td>
+  </tr>
+</tbody></table>
+<h3 id="mediatek-components">MediaTek 구성요소</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+권한이 설정된 프로세스 내에서 임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td> CVE-2017-0711</td>
+   <td>A-36099953<a href="#asterisk">*</a><br />
+       M-ALPS03206781</td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>네트워크 드라이버</td>
+  </tr>
+</tbody></table>
+<h3 id="nvidia-components">NVIDIA 구성요소</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+권한이 설정된 프로세스 내에서 임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0340</td>
+   <td>A-33968204<a href="#asterisk">*</a><br />
+       N-CVE-2017-0340</td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>Libnvparser</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0326</td>
+   <td>A-33718700<a href="#asterisk">*</a><br />
+       N-CVE-2017-0326</td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>동영상 드라이버</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-components">Qualcomm 구성요소</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+커널 컨텍스트 내에서 임의의 코드를 실행할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-8255</td>
+   <td>A-36251983<br />
+<a href="//source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=cd42366a73b38c8867b66472f07d67a6eccde599">QC-CR#985205</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>부트로더</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10389</td>
+   <td>A-34500449<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=031c27b4b8414bc93a14e773503d9bfc0fc890d2">QC-CR#1009145</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>부트로더</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8253</td>
+   <td>A-35400552<br />
+<a href="//www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-4.4.git;a=commit;h=a5f07894058c4198f61e533d727b343c5be879b0">QC-CR#1086764</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>카메라 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8262</td>
+   <td>A-32938443<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-4.4/commit/?id=9ef4ee8e3dfaf4e796bda781826851deebbd89bd">QC-CR#2029113</a></td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>GPU 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8263</td>
+   <td>A-34126808<a href="#asterisk">*</a><br />
+       QC-CR#1107034</td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>익명의 공유 메모리 하위 시스템</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8267</td>
+   <td>A-34173755<a href="#asterisk">*</a><br />
+       QC-CR#2001129</td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>익명의 공유 메모리 하위 시스템</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8273</td>
+   <td>A-35400056<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=dfe6691ba301c769179cabab12d74d4e952462b9">QC-CR#1094372</a>
+[<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=30d94c33dec0ffedc875d7853635a9773921320a">2</a>]</td>
+   <td>EoP</td>
+   <td>높음</td>
+   <td>부트로더</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5863</td>
+   <td>A-36251182<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=daf0acd54a6a80de227baef9a06285e4aa5f8c93">QC-CR#1102936</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>USB HID 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8243</td>
+   <td>A-34112490<a href="#asterisk">*</a><br />
+       QC-CR#2001803</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>SoC 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8246</td>
+   <td>A-37275839<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=30baaec8afb05abf9f794c631ad944838d498ab8">QC-CR#2008031</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>사운드 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8256</td>
+   <td>A-37286701<br />
+<a href="//source.codeaurora.org/quic/la//platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=75e1e00d6b3cd4cb89fd5314a60c333aa0b03230">QC-CR#1104565</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>Wi-Fi 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8257</td>
+   <td>A-37282763<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=0f19fbd00c6679bbc524f7a6d0fc3d54cfd1c9ae">QC-CR#2003129</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>동영상 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8259</td>
+   <td>A-34359487<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=68020103af00280393da10039b968c95d68e526c">QC-CR#2009016</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>SoC 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>A-34624155<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=8f236391e5187c05f7f4b937856944be0af7aaa5">QC-CR#2008469</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>카메라 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8261</td>
+   <td>A-35139833<a href="#asterisk">*</a><br />
+       QC-CR#2013631</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>카메라 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264</td>
+   <td>A-33299365<a href="#asterisk">*</a><br />
+       QC-CR#1107702</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>카메라 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>A-32341313<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.10/commit/?id=193813a21453ccc7fb6b04bedf881a6feaaa015f">QC-CR#1109755</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>동영상 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266</td>
+   <td>A-33863407<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=42627c94cf8c189332a6f5bfdd465ea662777911">QC-CR#1110924</a></td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>동영상 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268</td>
+   <td>A-34620535<a href="#asterisk">*</a><br />
+       QC-CR#2002207</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>카메라 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8270</td>
+   <td>A-35468665<a href="#asterisk">*</a><br />
+       QC-CR#2021363</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>Wi-Fi 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8271</td>
+   <td>A-35950388<a href="#asterisk">*</a><br />
+       QC-CR#2028681</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>동영상 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8272</td>
+   <td>A-35950805<a href="#asterisk">*</a><br />
+       QC-CR#2028702</td>
+   <td>EoP</td>
+   <td>보통</td>
+   <td>동영상 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8254</td>
+   <td>A-36252027<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=70afce1d9be745005c48fd565c01ce452a565e7e">QC-CR#832914</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>사운드 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8258</td>
+   <td>A-37279737<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=31e2a2f0f2f3615cefd4400c707709bbc3e26170">QC-CR#2005647</a></td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>카메라 드라이버</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269</td>
+   <td>A-33967002<a href="#asterisk">*</a><br />
+       QC-CR#2013145</td>
+   <td>ID</td>
+   <td>보통</td>
+   <td>IPA 드라이버</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-closed-source-components">Qualcomm 비공개 소스
+구성요소</h3>
+<p>다음의 취약성은 Qualcomm 구성요소에 영향을 주며 Qualcomm AMSS
+2014~2016년 보안 게시판에 자세히 설명되어 있습니다. 이러한 취약성은
+각 취약성의 수정사항을 Android 보안 패치 수준과 연결하기 위해 Android 보안
+게시판에 포함되었습니다. 이러한 취약성의 수정사항은 Qualcomm에서 직접 받을 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>참조</th>
+   <th>형식</th>
+   <th>심각도</th>
+   <th>구성요소</th>
+  </tr>
+  <tr>
+   <td>CVE-2014-9411</td>
+   <td>A-37473054<a href="#asterisk">*</a><br />
+       QC-CR#532956</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9968</td>
+   <td>A-37304413<a href="#asterisk">*</a><br />
+       QC-CR#642084</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9973</td>
+   <td>A-37470982<a href="#asterisk">*</a><br />
+       QC-CR#646919</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9974</td>
+   <td>A-37471979<a href="#asterisk">*</a><br />
+       QC-CR#654072</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9975</td>
+   <td>A-37471230<a href="#asterisk">*</a><br />
+       QC-CR#700125</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9977</td>
+   <td>A-37471087<a href="#asterisk">*</a><br />
+       QC-CR#703002</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9978</td>
+   <td>A-37468982<a href="#asterisk">*</a><br />
+       QC-CR#709939</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9979</td>
+   <td>A-37471088<a href="#asterisk">*</a><br />
+       QC-CR#717304</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9980</td>
+   <td>A-37471029<a href="#asterisk">*</a><br />
+       QC-CR#709766</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-0575</td>
+   <td>A-37296999<a href="#asterisk">*</a><br />
+       QC-CR#715815</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8592</td>
+   <td>A-37470090<a href="#asterisk">*</a><br />
+       QC-CR#775396</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>코어</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8595</td>
+   <td>A-37472411<a href="#asterisk">*</a><br />
+       QC-CR#790151</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8596</td>
+   <td>A-37472806<a href="#asterisk">*</a><br />
+       QC-CR#802005</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9034</td>
+   <td>A-37305706<a href="#asterisk">*</a><br />
+       QC-CR#614512</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9035</td>
+   <td>A-37303626<a href="#asterisk">*</a><br />
+       QC-CR#750231</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9036</td>
+   <td>A-37303519<a href="#asterisk">*</a><br />
+       QC-CR#751831</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9037</td>
+   <td>A-37304366<a href="#asterisk">*</a><br />
+       QC-CR#753315</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9038</td>
+   <td>A-37303027<a href="#asterisk">*</a><br />
+       QC-CR#758328</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9039</td>
+   <td>A-37302628<a href="#asterisk">*</a><br />
+       QC-CR#760282</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9040</td>
+   <td>A-37303625<a href="#asterisk">*</a><br />
+       QC-CR#761216</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9041</td>
+   <td>A-37303518<a href="#asterisk">*</a><br />
+       QC-CR#762126</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9042</td>
+   <td>A-37301248<a href="#asterisk">*</a><br />
+       QC-CR#762214</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9043</td>
+   <td>A-37305954<a href="#asterisk">*</a><br />
+       QC-CR#762954</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9044</td>
+   <td>A-37303520<a href="#asterisk">*</a><br />
+       QC-CR#764858</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9045</td>
+   <td>A-37302136<a href="#asterisk">*</a><br />
+       QC-CR#766189</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9046</td>
+   <td>A-37301486<a href="#asterisk">*</a><br />
+       QC-CR#767335</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9047</td>
+   <td>A-37304367<a href="#asterisk">*</a><br />
+       QC-CR#779285</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9048</td>
+   <td>A-37305707<a href="#asterisk">*</a><br />
+       QC-CR#795960</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9049</td>
+   <td>A-37301488<a href="#asterisk">*</a><br />
+       QC-CR#421589, QC-CR#817165</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9050</td>
+   <td>A-37302137<a href="#asterisk">*</a><br />
+       QC-CR#830102</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9051</td>
+   <td>A-37300737<a href="#asterisk">*</a><br />
+       QC-CR#837317</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9052</td>
+   <td>A-37304217<a href="#asterisk">*</a><br />
+       QC-CR#840483</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9053</td>
+   <td>A-37301249<a href="#asterisk">*</a><br />
+       QC-CR#843808</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9054</td>
+   <td>A-37303177<a href="#asterisk">*</a><br />
+       QC-CR#856077</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9055</td>
+   <td>A-37472412<a href="#asterisk">*</a><br />
+       QC-CR#806464</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>코어</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9060</td>
+   <td>A-37472807<a href="#asterisk">*</a><br />
+       QC-CR#817343</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9061</td>
+   <td>A-37470436<a href="#asterisk">*</a><br />
+       QC-CR#824195</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9062</td>
+   <td>A-37472808<a href="#asterisk">*</a><br />
+       QC-CR#802039</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9067</td>
+   <td>A-37474000<a href="#asterisk">*</a><br />
+       QC-CR#848926</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9068</td>
+   <td>A-37470144<a href="#asterisk">*</a><br />
+       QC-CR#851114</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9069</td>
+   <td>A-37470777<a href="#asterisk">*</a><br />
+       QC-CR#854496</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9070</td>
+   <td>A-37474001<a href="#asterisk">*</a><br />
+       QC-CR#877102</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9071</td>
+   <td>A-37471819<a href="#asterisk">*</a><br />
+       QC-CR#877276</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9072</td>
+   <td>A-37474002<a href="#asterisk">*</a><br />
+       QC-CR#877361</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9073</td>
+   <td>A-37473407<a href="#asterisk">*</a><br />
+       QC-CR#878073</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10343</td>
+   <td>A-32580186<a href="#asterisk">*</a><br />
+       QC-CR#972213</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10344</td>
+   <td>A-32583954<a href="#asterisk">*</a><br />
+       QC-CR#1022360</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>모뎀</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10346</td>
+   <td>A-37473408<a href="#asterisk">*</a><br />
+       QC-CR#896584</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>코어</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10347</td>
+   <td>A-37471089<a href="#asterisk">*</a><br />
+       QC-CR#899671</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>코어</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10382</td>
+   <td>A-28823584<a href="#asterisk">*</a><br />
+       QC-CR#944014</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10383</td>
+   <td>A-28822389<a href="#asterisk">*</a><br />
+       QC-CR#960624</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10388</td>
+   <td>A-32580294<a href="#asterisk">*</a><br />
+       QC-CR#992749</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10391</td>
+   <td>A-32583804<a href="#asterisk">*</a><br />
+       QC-CR#970283</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>WConnect</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5871</td>
+   <td>A-37473055<a href="#asterisk">*</a><br />
+       QC-CR#883013</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5872</td>
+   <td>A-37472809<a href="#asterisk">*</a><br />
+       QC-CR#886220</td>
+   <td>해당 없음</td>
+   <td>높음</td>
+   <td>보안 시스템 그룹</td>
+  </tr>
+</tbody></table>
+<h2 id="google-device-updates">Google 기기 업데이트</h2>
+<p>이 표에는 Google 기기의 최신 무선 업데이트(OTA) 및 펌웨어 이미지의 보안 패치 수준이 포함되어 있습니다. Google 기기 펌웨어 이미지는
+<a href="//developers.google.com/android/nexus/images">Google 개발자 사이트</a>에서 받을 수
+있습니다.</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Google 기기</th>
+   <th>보안 패치 수준</th>
+  </tr>
+  <tr>
+   <td>Pixel/Pixel XL</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+  <tr>
+   <td>Nexus 5X</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+  <tr>
+   <td>Nexus 6</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+  <tr>
+   <td>Nexus 6P</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+  <tr>
+   <td>Nexus 9</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+  <tr>
+   <td>Nexus Player</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+  <tr>
+   <td>Pixel C</td>
+   <td>2017년 7월 5일</td>
+  </tr>
+</tbody></table>
+<h2 id="acknowledgements">감사의 말씀</h2>
+<p>참여해 주신 다음 연구원에게 감사드립니다.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="83%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>연구원</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0711</td>
+   <td>Alibaba Mobile Security Group의
+Chengming Yang, Baozeng Ding, Yang Song</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>Tencent Xuanwu Lab의
+Daxing Guo(<a href="//twitter.com/freener0">@freener0</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>Derrek(<a href="//twitter.com/derrekr6">@derrekr6</a>), Scott
+Bauer</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>Tencent KeenLab(<a href="//twitter.com/keen_lab?lang=en">@keen_lab</a>)의
+Di Shen(<a href="//twitter.com/returnsme?lang=en">@returnsme</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="//fb.me/dzimka">Dzmitry Lukyanenka</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692, CVE-2017-0694</td>
+   <td>Qihoo 360 Technology Co. Ltd., Alpha Team의
+Elphet, Gong Guang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266, CVE-2017-8243, CVE-2017-8270</td>
+   <td>Qihoo 360 Technology Co. Ltd., IceSword Lab의
+Gengjia Chen(<a href="//twitter.com/chengjia4574">@chengjia4574</a>), <a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665, CVE-2017-0681</td>
+   <td><a href="//c0reteam.org">C0RE Team</a>의
+<a href="mailto:[email protected]">Hanxiang Wen</a>, Mingjian Zhou(<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>), Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268, CVE-2017-8261</td>
+   <td>Qihoo 360 IceSword Lab의 Jianqiang Zhao(<a href="//twitter.com/jianqiangzhao">@jianqiangzhao</a>), <a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td>Census Consulting Inc.의 Joey Brand</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666, CVE-2017-0684</td>
+   <td><a href="//c0reteam.org">C0RE Team</a>의 Mingjian Zhou(<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>), <a href="mailto:[email protected]">Chi Zhang</a>, Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697, CVE-2017-0670</td>
+   <td><a href="mailto:[email protected]">Niky1235</a>(<a href="//twitter.com/jiych_guru">@jiych_guru</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>Exodus Intelligence의 Nitay Artenstein</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705, CVE-2017-8259</td>
+   <td><a href="//twitter.com/ScottyBauer1">Scott Bauer</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td>CSS Inc.의 Timothy Becker</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0642, CVE-2017-0682, CVE-2017-0683, CVE-2017-0676,
+CVE-2017-0696,CVE-2017-0675, CVE-2017-0701, CVE-2017-0702, CVE-2017-0699</td>
+   <td>Vasily Vasiliev</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695, CVE-2017-0689, CVE-2017-0540, CVE-2017-0680,
+CVE-2017-0679, CVE-2017-0685, CVE-2017-0686, CVE-2017-0693,CVE-2017-0674,
+CVE-2017-0677</td>
+   <td><a href="//twitter.com/vysea">Trend Micro</a> <a href="//blog.trendmicro.com/trendlabs-security-intelligence/category/mobile/">Mobile
+Threat Response Team</a>의 V.E.O(<a href="//www.trendmicro.com">@VYSEa</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>Tencent Security Platform Department의 Xiling Gong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td>Qihoo 360 Qex Team의
+Yangkang(<a href="//twitter.com/dnpushme">@dnpushme</a>), Liyadong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269, CVE-2017-8271, CVE-2017-8272, CVE-2017-8267</td>
+   <td>Qihoo 360 Technology Co. Ltd., IceSword Lab의
+Yonggang Guo(<a href="//twitter.com/guoygang">@guoygang</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264, CVE-2017-0326, CVE-2017-0709</td>
+   <td><a href="mailto:[email protected]">C0RE Team</a>의 Yuan-Tsung Lo(<a href="//c0reteam.org">[email protected]</a>),
+Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704, CVE-2017-0669</td>
+   <td>Tencent Security Platform Department의
+Yuxiang Li(<a href="//twitter.com/xbalien29">@Xbalien29</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td>Qihoo 360 Technology Co. Ltd.,
+Chengdu Security Response Center의 <a href="//weibo.com/ele7enxxh">Zinuo Han</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691, CVE-2017-0700</td>
+   <td>Qihoo 360 Technology Co. Ltd.,
+Chengdu Security Response Center의 <a href="//weibo.com/ele7enxxh">Zinuo Han</a> 및
+<a href="//www.pwnzen.com/">Pangu Team</a>의 Ao Wang(<a href="//twitter.com/ArayzSegment">@ArayzSegment</a>)</td>
+  </tr>
+</tbody></table>
+<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
+<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문에 대한 답변을 제시합니다.</p>
+
+<p><strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수 있나요?
+</strong></p>
+
+<p>기기의 보안 패치 수준을 확인하는 방법을 알아보려면
+<a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 및 Nexus 업데이트 일정</a>의
+안내를 읽어 보세요.</p>
+<ul>
+  <li>2017-07-01 보안 패치 수준과 관련된 모든 문제는 2017-07-01
+보안 패치 수준 이상에서 해결됩니다.</li>
+  <li>2017-07-05 보안 패치 수준 및 그 이전의 모든 패치 수준과 관련된
+모든 문제는 2017-07-05 보안 패치 수준 이상에서 해결됩니다.</li>
+</ul>
+<p>이러한 업데이트를 포함하는 기기 제조업체는 패치 문자열 수준을
+다음과 같이 설정해야 합니다.</p>
+<ul>
+  <li>[ro.build.version.security_patch]:[2017-07-01]</li>
+  <li>[ro.build.version.security_patch]:[2017-07-05]</li>
+</ul>
+<p><strong>2. 이 게시판에 두 가지 보안 패치 수준이 있는 이유가 무엇인가요?</strong></p>
+
+<p>이 게시판에서는 Android 파트너가 모든 Android 기기에서 유사하게 발생하는
+취약성 문제의 일부를 더욱 빠르고 유연하게 해결하도록 하기 위해 두 가지 보안 패치 수준이 포함되어 있습니다. Android 파트너는 이 게시판에 언급된 문제를 모두 수정하고
+최신 보안 패치 수준을 사용하는 것이 좋습니다.</p>
+<ul>
+  <li>2017년 7월 1일의 보안 패치 수준을 사용하는 기기는 이 보안 패치 수준과
+  관련된 모든 문제와 이전 보안 게시판에 보고된 모든 문제의 수정사항을
+  포함해야 합니다.</li>
+  <li>2017년 7월 5일 이후의 보안 패치 수준을 사용하는 기기는 이 보안 게시판과
+  이전 게시판의 모든 관련 패치를 포함해야 합니다.</li>
+</ul>
+<p>파트너는 해결하는 모든 문제의 수정사항을 단 한 번의 업데이트에서 번들로 묶는 것이
+좋습니다.</p>
+
+<p><strong>3. <em>유형</em> 열의 항목은 무엇을 의미하나요?</strong></p>
+
+<p>취약성 세부정보 표의 <em>유형</em> 열에 있는 항목은
+보안 취약성 분류를 참조합니다.</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>약어</th>
+   <th>정의</th>
+  </tr>
+  <tr>
+   <td>RCE</td>
+   <td>원격 코드 실행</td>
+  </tr>
+  <tr>
+   <td>EoP</td>
+   <td>권한 승격</td>
+  </tr>
+  <tr>
+   <td>ID</td>
+   <td>정보 공개</td>
+  </tr>
+  <tr>
+   <td>DoS</td>
+   <td>서비스 거부</td>
+  </tr>
+  <tr>
+   <td>해당 없음</td>
+   <td>분류 없음</td>
+  </tr>
+</tbody></table>
+
+<p><strong>4. <em>참조</em> 열의 항목은 무엇을 의미하나요?</strong></p>
+
+<p>취약성 세부정보 표의 <em>참조</em> 열에 있는 항목은 참조 값이 속한
+조직을 나타내는 접두어를 포함할 수 있습니다.</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>접두어</th>
+   <th>참조</th>
+  </tr>
+  <tr>
+   <td>A-</td>
+   <td>Android 버그 ID</td>
+  </tr>
+  <tr>
+   <td>QC-</td>
+   <td>Qualcomm 참조 번호</td>
+  </tr>
+  <tr>
+   <td>M-</td>
+   <td>MediaTek 참조 번호</td>
+  </tr>
+  <tr>
+   <td>N-</td>
+   <td>NVIDIA 참조 번호</td>
+  </tr>
+  <tr>
+   <td>B-</td>
+   <td>Broadcom 참조 번호</td>
+  </tr>
+</tbody></table>
+
+<p id="asterisk"><strong>5. <em>참조</em> 열에서 Android 버그 ID 옆에 있는 * 표시는
+무엇을 의미하나요?</strong></p>
+
+<p>공개되지 않은 문제는 <em>참조</em> 열의 Android 버그 ID 옆에 * 표시가 있습니다. 일반적으로 해당 문제의 업데이트는 <a href="//developers.google.com/android/nexus/drivers">Google 개발자 사이트</a>에서
+제공하는 Nexus 기기용 최신 바이너리 드라이버에 포함되어 있습니다.</p>
+
+<h2 id="versions">버전</h2>
+<table>
+  <colgroup><col width="25%" />
+  <col width="25%" />
+  <col width="50%" />
+  </colgroup><tbody><tr>
+   <th>버전</th>
+   <th>날짜</th>
+   <th>메모</th>
+  </tr>
+  <tr>
+   <td>1.0</td>
+   <td>2017년 7월 5일</td>
+   <td>게시판이 게시됨</td>
+  </tr>
+  <tr>
+   <td>1.1</td>
+   <td>2017년 7월 6일</td>
+   <td>게시판이 수정되어 AOSP 링크 포함됨</td>
+  </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file
diff --git a/ru/security/bulletin/2017-07-01.html b/ru/security/bulletin/2017-07-01.html
new file mode 100644
index 0000000..748ee71
--- /dev/null
+++ b/ru/security/bulletin/2017-07-01.html
@@ -0,0 +1,1636 @@
+<html devsite><head>
+    <title>Бюллетень по безопасности Android – июль 2017 г.</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          //www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p><em>Опубликовано 5 июля 2017 г. | Обновлено 6 июля 2017 г.</em></p>
+
+<p>В этом бюллетене содержится информация об уязвимостях в защите устройств Android. Все актуальные проблемы, перечисленные здесь, устранены в исправлении от 5 июля 2017 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Справочном центре</a>.</p>
+
+<p>Мы сообщили партнерам о проблемах, описанных в бюллетене, по крайней мере месяц назад. Исправления уязвимостей доступны в хранилище Android Open Source Project (AOSP). В этом бюллетене также приведены ссылки на исправления вне AOSP.</p>
+
+<p>Самая серьезная из этих проблем – критическая уязвимость в Media Framework, которая позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла. <a href="/security/overview/updates-resources.html#severity">Уровень серьезности</a> зависит от того, какой ущерб будет нанесен устройству при атаке с использованием уязвимости, если средства защиты будут отключены разработчиком или взломаны.</p>
+
+<p>У нас нет информации о том, что обнаруженные уязвимости эксплуатировались. В разделе <a href="#mitigations">Предотвращение атак</a> рассказывается, как <a href="/security/enhancements/index.html">платформа безопасности</a> и Google Play Защита помогают снизить вероятность атак на Android.</p>
+
+<p>Мы рекомендуем всем пользователям установить перечисленные здесь обновления.</p>
+
+<p class="note"><strong>Примечание.</strong> Информация о последних автоматических обновлениях (OTA) и об образах прошивок для устройств Google находится в разделе <a href="#google-device-updates">Обновления устройств Google</a>.</p>
+
+<h2 id="announcements">Объявления</h2>
+<ul>
+  <li>Мы включили в этот бюллетень сведения о двух обновлениях, чтобы помочь нашим партнерам как можно скорее устранить уязвимости, затрагивающие все устройства Android. Дополнительную информацию вы найдете в разделе <a href="#common-questions-and-answers">Часто задаваемые вопросы</a>.
+    <ul>
+       <li><strong>2017-07-01:</strong> частичное обновление системы безопасности, в котором исправлены все уязвимости уровня 2017-07-01 и более ранние.</li>
+       <li><strong>2017-07-05:</strong> полное обновление системы безопасности, в котором исправлены все уязвимости уровней 2017-07-01 и 2017-07-05, а также более ранние.</li>
+    </ul>
+  </li>
+</ul>
+
+<h2 id="mitigations">Предотвращение атак</h2>
+<p>Ниже рассказывается, как <a href="/security/enhancements/index.html">платформа безопасности</a> и средства защиты сервисов, например <a href="//www.android.com/play-protect">Google Play Защита</a> позволяют снизить вероятность атак на Android.</p>
+<ul>
+  <li>Использование многих уязвимостей затрудняется в новых версиях Android, поэтому мы рекомендуем всем пользователям своевременно обновлять систему.</li>
+  <li>Команда, отвечающая за безопасность Android, активно отслеживает злоупотребления с помощью <a href="//www.android.com/play-protect">Google Play Защиты</a> и предупреждает пользователей об установке <a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">потенциально опасных приложений</a>. Google Play Защита включена по умолчанию на всех устройствах с <a href="//www.android.com/gms">сервисами Google для мобильных устройств</a>. Она особенно важна, если пользователь устанавливает ПО из сторонних источников.
+  </li>
+</ul>
+
+<h2 id="2017-07-01-details">Описание уязвимостей (обновление системы безопасности 2017-07-01)</h2>
+<p>В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2017-07-01. Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведено описание и таблица с CVE, ссылками, <a href="#common-questions-and-answers">типом</a>, <a href="/security/overview/updates-resources.html#severity">уровнем серьезности</a>, а также версиями AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), и дополнительные ссылки в квадратных скобках.</p>
+
+<h3 id="runtime">Runtime</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте непривилегированного процесса с помощью специально созданного файла.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Обновленные версии AOSP</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-3544</td>
+   <td><a href="https://android.googlesource.com/platform/libcore/+/c5dd90d62590425f04a261e0f6c927acca147f88">
+       A-35784677</a></td>
+   <td>УВК</td>
+   <td>Средний</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="framework">Framework</h3>
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте приложения, которое использует библиотеку, с помощью специально созданного файла.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Обновленные версии AOSP</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0664</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/base/+/59773dc2f213c3e645c7e04881afa0a8e6ffccca">
+       A-36491278</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/75edf04bf18d37df28fb58e1d75331ed4bcae230">
+       A-36991414</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5fc2df253c089b53b3e235a3f237f96a98b53977">
+       A-37285689</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5ac63e4547feaa7cb51ac81896250f47f367ffba">
+       A-37478824</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0668</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b3e3325d23289a94e66d8ce36a53a7ccf7b52c6d">
+       A-22011579</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0669</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/7b7ef84234cd3daea0e22025b908b0041885736c">
+       A-34114752</a></td>
+   <td>РИ</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0670</td>
+   <td><a href="https://android.googlesource.com/platform/bionic/+/e102faee8b2f87c28616e7f5453f9a11eea9b122">
+       A-36104177</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="libraries">Библиотеки</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте приложения, которое использует библиотеку, с помощью специально созданного файла.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Обновленные версии AOSP</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0671</td>
+   <td>A-34514762<a href="#asterisk">*</a></td>
+   <td>УВК</td>
+   <td>Высокий</td>
+   <td>4.4.4</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-2109</td>
+   <td><a href="https://android.googlesource.com/platform/external/boringssl/+/ccb2efe8d3fccb4321e85048d67c8528e03d4652">
+       A-35443725</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0672</td>
+   <td><a href="https://android.googlesource.com/platform/external/skia/+/c4087ff5486d36a690c681affb668164ec0dd697">
+       A-34778578</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="media-framework">Media Framework</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Обновленные версии AOSP</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0540</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/a92b39ff0c47d488b81fecd62ba85e48d386aa68">
+       A-33966031</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0673</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/381ccb2b7f2ba42490bafab6aa7a63a8212b396f">
+       A-33974623</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0674</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/1603112cccbab3dff66a7eb1b82e858c1749f34b">
+       A-34231163</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0675</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/726108468dcfdabb833b8d55333de53cf6350aaa">A-34779227</a>
+      [<a href="https://android.googlesource.com/platform/external/libhevc/+/4395fc2288e3f692765c73fce416e831fdaa5463">2</a>]</td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0676</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/8e415eabb5d2abd2f2bd40a675339d967f81521b">
+       A-34896431</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0677</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/b8fee6a6d0a91fb5ddca8f54b0c891e25c1b65ae">
+       A-36035074</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/64bc0b8c0c495c487604d483aa57978db7f634be">
+       A-36576151</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0679</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/91cb6b1745f3e9d341cf6decc2b916cb1e4eea77">
+       A-36996978</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0680</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989df73b34a7a698731cab3ee1e4a831a862fbe1">
+       A-37008096</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0681</td>
+   <td><a href="https://android.googlesource.com/platform/external/tremolo/+/822af05a1364d8dc6189dce5380a2703214dd799">
+       A-37208566</a></td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0682</td>
+   <td>A-36588422<a href="#asterisk">*</a></td>
+   <td>УВК</td>
+   <td>Высокий</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0683</td>
+   <td>A-36591008<a href="#asterisk">*</a></td>
+   <td>УВК</td>
+   <td>Высокий</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0684</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c7c9271740c29c02e7926265ed53a44b8113dbfb">
+       A-35421151</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0685</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/680b75dabb90c8c2e22886826554ad1bc99b36f1">
+       A-34203195</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0686</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/b8d7e85c10cc22e1a5d81ec3d8a2e5bdd6102852">
+       A-34231231</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0688</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/62c07468bc26d1f9487c5298bb2a2f3740db13b1">
+       A-35584425</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0689</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/2210ff5600d3f965352a3074adff8fedddcf347e">
+       A-36215950</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1f418f10f4319fc829360b7efee7fca4b3880867">
+       A-36592202</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691</td>
+   <td><a href="https://android.googlesource.com/platform/external/dng_sdk/+/c70264282305351abbec9b967333db4d896583b9">
+       A-36724453</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/6db482687caf12ea7d2d07d655b17413bc937c73">
+       A-36725407</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0693</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/632ff754836d22415136cb3f97fe4622c862ce81">
+       A-36993291</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0694</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/47750a5f1b19695ac64d6f7aa6e7e0918d3c8977">
+       A-37093318</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/cc5683451dd9be1491b54f215e9934d49f11cf70">
+       A-37094889</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0696</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/0d0ddb7cd7618ede5301803c526f066b95ce5089">
+       A-37207120</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c5eaf3ae70d5ea3a7d390294002e4cf9859b3578">
+       A-37239013</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1618337cac09284fddb5bb14b5e0cfe2946d3431">
+       A-35467458</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0699</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989b2afc3ebb1bbb4c962e2aff1fd9b3149f83f1">
+       A-36490809</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="system-ui">Интерфейс системы</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Обновленные версии AOSP</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0700</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/38889ebd9b9c682bd1b64fd251ecd69b504a6155">
+       A-35639138</a></td>
+   <td>УВК</td>
+   <td>Высокий</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0701</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/85e94f5b67c1beb9402c4de82bd481a5202470de">A-36385715</a>
+      [<a href="https://android.googlesource.com/platform/external/libgdx/+/bd4c825d8fc5dd48f5c602e673ae210909b31fd0">2</a>]</td>
+   <td>УВК</td>
+   <td>Высокий</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0702</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/5d46e9a1784c02f347af107a978fe9fbd7af7fb2">
+       A-36621442</a></td>
+   <td>УВК</td>
+   <td>Высокий</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/4af8f912aa1ee714638d0f9694d6f856bc8166f3">
+       A-33123882</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>4.4.4, 5.0.2, 5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/179f0e9512100b0a403aab8b2b4cf5510bb20bee">
+       A-33059280</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>7.1.1, 7.1.2</td>
+  </tr>
+</tbody></table>
+
+<h2 id="2017-07-05-details">Описание уязвимостей (обновление системы безопасности 2017-07-05)</h2>
+<p>В этом разделе вы найдете подробную информацию обо всех уязвимостях обновления системы безопасности 2017-07-05. Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведена таблица с CVE, ссылками, <a href="#common-questions-and-answers">типом</a>, <a href="/security/overview/updates-resources.html#severity">уровнем серьезности</a>, а также версиями AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), и дополнительные ссылки в квадратных скобках.</p>
+
+<h3 id="broadcom-components">Компоненты Broadcom</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте ядра.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>A-38041027<a href="#asterisk">*</a><br />
+       B-RB#123023</td>
+   <td>УВК</td>
+   <td>Критический</td>
+   <td>Драйвер Wi-Fi</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705</td>
+   <td>A-34973477<a href="#asterisk">*</a><br />
+       B-RB#119898</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер Wi-Fi</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>A-35195787<a href="#asterisk">*</a><br />
+       B-RB#120532</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер Wi-Fi</td>
+  </tr>
+</tbody></table>
+<h3 id="htc-components">Компоненты HTC</h3>
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте привилегированного процесса.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0707</td>
+   <td>A-36088467<a href="#asterisk">*</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>LED-драйвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>A-35384879<a href="#asterisk">*</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>Аудиодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0709</td>
+   <td>A-35468048<a href="#asterisk">*</a></td>
+   <td>РИ</td>
+   <td>Низкий</td>
+   <td>Драйвер контроллера датчиков</td>
+  </tr>
+</tbody></table>
+<h3 id="kernel-components">Компоненты ядра</h3>
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте привилегированного процесса.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-6074</td>
+   <td>A-35784697<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4">Upstream
+kernel</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Сетевая подсистема</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-5970</td>
+   <td>A-35805460<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34b2cef20f19c87999fff3da4071e66937db9644">Upstream
+kernel</a></td>
+   <td>ОО</td>
+   <td>Высокий</td>
+   <td>Сетевая подсистема</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-5707</td>
+   <td>A-35841297<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=451a2886b6bf90e2fb378f7c46c655450fb96e81">Upstream kernel</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdc81f45e9f57858da6351836507fbcf1b7583ee">2</a>]</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>SCSI-драйвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0710</td>
+   <td>A-34951864<a href="#asterisk">*</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>ДВБ</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-7308</td>
+   <td>A-36725304<br />
+<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b6867c2ce76c596676bec7d2d525af525fdc6e2">Upstream kernel</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b">2</a>]
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bcc5364bdcfe131e6379363f089e7b4108d35b70">3</a>]</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Сетевой драйвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9731</td>
+   <td>A-35841292<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14">Upstream
+kernel</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>Файловая система</td>
+  </tr>
+</tbody></table>
+<h3 id="mediatek-components">Компоненты MediaTek</h3>
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте привилегированного процесса.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td> CVE-2017-0711</td>
+   <td>A-36099953<a href="#asterisk">*</a><br />
+       M-ALPS03206781</td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Сетевой драйвер</td>
+  </tr>
+</tbody></table>
+<h3 id="nvidia-components">Компоненты NVIDIA</h3>
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте привилегированного процесса.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0340</td>
+   <td>A-33968204<a href="#asterisk">*</a><br />
+       N-CVE-2017-0340</td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Libnvparser</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0326</td>
+   <td>A-33718700<a href="#asterisk">*</a><br />
+       N-CVE-2017-0326</td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>Видеодрайвер</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-components">Компоненты Qualcomm</h3>
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте ядра.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-8255</td>
+   <td>A-36251983<br />
+<a href="//source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=cd42366a73b38c8867b66472f07d67a6eccde599">QC-CR#985205</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Загрузчик</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10389</td>
+   <td>A-34500449<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=031c27b4b8414bc93a14e773503d9bfc0fc890d2">QC-CR#1009145</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Загрузчик</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8253</td>
+   <td>A-35400552<br />
+<a href="//www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-4.4.git;a=commit;h=a5f07894058c4198f61e533d727b343c5be879b0">QC-CR#1086764</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Драйвер камеры</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8262</td>
+   <td>A-32938443<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-4.4/commit/?id=9ef4ee8e3dfaf4e796bda781826851deebbd89bd">QC-CR#2029113</a></td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Драйвер графического процессора</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8263</td>
+   <td>A-34126808<a href="#asterisk">*</a><br />
+       QC-CR#1107034</td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Подсистема разделения анонимной памяти</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8267</td>
+   <td>A-34173755<a href="#asterisk">*</a><br />
+       QC-CR#2001129</td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Подсистема разделения анонимной памяти</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8273</td>
+   <td>A-35400056<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=dfe6691ba301c769179cabab12d74d4e952462b9">QC-CR#1094372</a>
+[<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=30d94c33dec0ffedc875d7853635a9773921320a">2</a>]</td>
+   <td>ПП</td>
+   <td>Высокий</td>
+   <td>Загрузчик</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5863</td>
+   <td>A-36251182<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=daf0acd54a6a80de227baef9a06285e4aa5f8c93">QC-CR#1102936</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>USB HID-драйвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8243</td>
+   <td>A-34112490<a href="#asterisk">*</a><br />
+       QC-CR#2001803</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер процессора</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8246</td>
+   <td>A-37275839<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=30baaec8afb05abf9f794c631ad944838d498ab8">QC-CR#2008031</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Аудиодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8256</td>
+   <td>A-37286701<br />
+<a href="//source.codeaurora.org/quic/la//platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=75e1e00d6b3cd4cb89fd5314a60c333aa0b03230">QC-CR#1104565</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер Wi-Fi</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8257</td>
+   <td>A-37282763<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=0f19fbd00c6679bbc524f7a6d0fc3d54cfd1c9ae">QC-CR#2003129</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Видеодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8259</td>
+   <td>A-34359487<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=68020103af00280393da10039b968c95d68e526c">QC-CR#2009016</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер процессора</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>A-34624155<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=8f236391e5187c05f7f4b937856944be0af7aaa5">QC-CR#2008469</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер камеры</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8261</td>
+   <td>A-35139833<a href="#asterisk">*</a><br />
+       QC-CR#2013631</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер камеры</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264</td>
+   <td>A-33299365<a href="#asterisk">*</a><br />
+       QC-CR#1107702</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер камеры</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>A-32341313<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.10/commit/?id=193813a21453ccc7fb6b04bedf881a6feaaa015f">QC-CR#1109755</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Видеодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266</td>
+   <td>A-33863407<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=42627c94cf8c189332a6f5bfdd465ea662777911">QC-CR#1110924</a></td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Видеодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268</td>
+   <td>A-34620535<a href="#asterisk">*</a><br />
+       QC-CR#2002207</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер камеры</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8270</td>
+   <td>A-35468665<a href="#asterisk">*</a><br />
+       QC-CR#2021363</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Драйвер Wi-Fi</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8271</td>
+   <td>A-35950388<a href="#asterisk">*</a><br />
+       QC-CR#2028681</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Видеодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8272</td>
+   <td>A-35950805<a href="#asterisk">*</a><br />
+       QC-CR#2028702</td>
+   <td>ПП</td>
+   <td>Средний</td>
+   <td>Видеодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8254</td>
+   <td>A-36252027<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=70afce1d9be745005c48fd565c01ce452a565e7e">QC-CR#832914</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>Аудиодрайвер</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8258</td>
+   <td>A-37279737<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=31e2a2f0f2f3615cefd4400c707709bbc3e26170">QC-CR#2005647</a></td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>Драйвер камеры</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269</td>
+   <td>A-33967002<a href="#asterisk">*</a><br />
+       QC-CR#2013145</td>
+   <td>РИ</td>
+   <td>Средний</td>
+   <td>Драйвер усилителя</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-closed-source-components">Закрытые компоненты Qualcomm</h3>
+<p>Эти уязвимости затрагивают компоненты Qualcomm и описаны в бюллетенях по безопасности Qualcomm AMSS за 2014–2016 года. Они включены в этот бюллетень по безопасности Android, чтобы связать их исправления с обновлением системы безопасности. Сами исправления доступны напрямую у Qualcomm.</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Ссылки</th>
+   <th>Тип</th>
+   <th>Уровень серьезности</th>
+   <th>Компонент</th>
+  </tr>
+  <tr>
+   <td>CVE-2014-9411</td>
+   <td>A-37473054<a href="#asterisk">*</a><br />
+       QC-CR#532956</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9968</td>
+   <td>A-37304413<a href="#asterisk">*</a><br />
+       QC-CR#642084</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9973</td>
+   <td>A-37470982<a href="#asterisk">*</a><br />
+       QC-CR#646919</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9974</td>
+   <td>A-37471979<a href="#asterisk">*</a><br />
+       QC-CR#654072</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9975</td>
+   <td>A-37471230<a href="#asterisk">*</a><br />
+       QC-CR#700125</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9977</td>
+   <td>A-37471087<a href="#asterisk">*</a><br />
+       QC-CR#703002</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9978</td>
+   <td>A-37468982<a href="#asterisk">*</a><br />
+       QC-CR#709939</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9979</td>
+   <td>A-37471088<a href="#asterisk">*</a><br />
+       QC-CR#717304</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9980</td>
+   <td>A-37471029<a href="#asterisk">*</a><br />
+       QC-CR#709766</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-0575</td>
+   <td>A-37296999<a href="#asterisk">*</a><br />
+       QC-CR#715815</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8592</td>
+   <td>A-37470090<a href="#asterisk">*</a><br />
+       QC-CR#775396</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Ядро</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8595</td>
+   <td>A-37472411<a href="#asterisk">*</a><br />
+       QC-CR#790151</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8596</td>
+   <td>A-37472806<a href="#asterisk">*</a><br />
+       QC-CR#802005</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9034</td>
+   <td>A-37305706<a href="#asterisk">*</a><br />
+       QC-CR#614512</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9035</td>
+   <td>A-37303626<a href="#asterisk">*</a><br />
+       QC-CR#750231</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9036</td>
+   <td>A-37303519<a href="#asterisk">*</a><br />
+       QC-CR#751831</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9037</td>
+   <td>A-37304366<a href="#asterisk">*</a><br />
+       QC-CR#753315</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9038</td>
+   <td>A-37303027<a href="#asterisk">*</a><br />
+       QC-CR#758328</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9039</td>
+   <td>A-37302628<a href="#asterisk">*</a><br />
+       QC-CR#760282</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9040</td>
+   <td>A-37303625<a href="#asterisk">*</a><br />
+       QC-CR#761216</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9041</td>
+   <td>A-37303518<a href="#asterisk">*</a><br />
+       QC-CR#762126</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9042</td>
+   <td>A-37301248<a href="#asterisk">*</a><br />
+       QC-CR#762214</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9043</td>
+   <td>A-37305954<a href="#asterisk">*</a><br />
+       QC-CR#762954</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9044</td>
+   <td>A-37303520<a href="#asterisk">*</a><br />
+       QC-CR#764858</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9045</td>
+   <td>A-37302136<a href="#asterisk">*</a><br />
+       QC-CR#766189</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9046</td>
+   <td>A-37301486<a href="#asterisk">*</a><br />
+       QC-CR#767335</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9047</td>
+   <td>A-37304367<a href="#asterisk">*</a><br />
+       QC-CR#779285</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9048</td>
+   <td>A-37305707<a href="#asterisk">*</a><br />
+       QC-CR#795960</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9049</td>
+   <td>A-37301488<a href="#asterisk">*</a><br />
+       QC-CR#421589, QC-CR#817165</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9050</td>
+   <td>A-37302137<a href="#asterisk">*</a><br />
+       QC-CR#830102</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9051</td>
+   <td>A-37300737<a href="#asterisk">*</a><br />
+       QC-CR#837317</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9052</td>
+   <td>A-37304217<a href="#asterisk">*</a><br />
+       QC-CR#840483</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9053</td>
+   <td>A-37301249<a href="#asterisk">*</a><br />
+       QC-CR#843808</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9054</td>
+   <td>A-37303177<a href="#asterisk">*</a><br />
+       QC-CR#856077</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9055</td>
+   <td>A-37472412<a href="#asterisk">*</a><br />
+       QC-CR#806464</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Ядро</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9060</td>
+   <td>A-37472807<a href="#asterisk">*</a><br />
+       QC-CR#817343</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9061</td>
+   <td>A-37470436<a href="#asterisk">*</a><br />
+       QC-CR#824195</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9062</td>
+   <td>A-37472808<a href="#asterisk">*</a><br />
+       QC-CR#802039</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9067</td>
+   <td>A-37474000<a href="#asterisk">*</a><br />
+       QC-CR#848926</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9068</td>
+   <td>A-37470144<a href="#asterisk">*</a><br />
+       QC-CR#851114</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9069</td>
+   <td>A-37470777<a href="#asterisk">*</a><br />
+       QC-CR#854496</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9070</td>
+   <td>A-37474001<a href="#asterisk">*</a><br />
+       QC-CR#877102</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9071</td>
+   <td>A-37471819<a href="#asterisk">*</a><br />
+       QC-CR#877276</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9072</td>
+   <td>A-37474002<a href="#asterisk">*</a><br />
+       QC-CR#877361</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9073</td>
+   <td>A-37473407<a href="#asterisk">*</a><br />
+       QC-CR#878073</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10343</td>
+   <td>A-32580186<a href="#asterisk">*</a><br />
+       QC-CR#972213</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10344</td>
+   <td>A-32583954<a href="#asterisk">*</a><br />
+       QC-CR#1022360</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Модем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10346</td>
+   <td>A-37473408<a href="#asterisk">*</a><br />
+       QC-CR#896584</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Ядро</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10347</td>
+   <td>A-37471089<a href="#asterisk">*</a><br />
+       QC-CR#899671</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Ядро</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10382</td>
+   <td>A-28823584<a href="#asterisk">*</a><br />
+       QC-CR#944014</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10383</td>
+   <td>A-28822389<a href="#asterisk">*</a><br />
+       QC-CR#960624</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10388</td>
+   <td>A-32580294<a href="#asterisk">*</a><br />
+       QC-CR#992749</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10391</td>
+   <td>A-32583804<a href="#asterisk">*</a><br />
+       QC-CR#970283</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>WConnect</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5871</td>
+   <td>A-37473055<a href="#asterisk">*</a><br />
+       QC-CR#883013</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5872</td>
+   <td>A-37472809<a href="#asterisk">*</a><br />
+       QC-CR#886220</td>
+   <td>Н/Д</td>
+   <td>Высокий</td>
+   <td>Группа защищенных систем</td>
+  </tr>
+</tbody></table>
+<h2 id="google-device-updates">Обновления устройств Google</h2>
+<p>В таблице указаны обновление системы безопасности, которые находится в последнем автоматическом обновлении (OTA) и <a href="//developers.google.com/android/nexus/images">образах прошивок для устройств Google</a>.</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Устройство</th>
+   <th>Обновление системы безопасности</th>
+  </tr>
+  <tr>
+   <td>Pixel/Pixel XL</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+  <tr>
+   <td>Nexus 5X</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+  <tr>
+   <td>Nexus 6</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+  <tr>
+   <td>Nexus 6P</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+  <tr>
+   <td>Nexus 9</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+  <tr>
+   <td>Nexus Player</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+  <tr>
+   <td>Pixel С</td>
+   <td>5 июля 2017 г.</td>
+  </tr>
+</tbody></table>
+<h2 id="acknowledgements">Благодарности</h2>
+<p>Благодарим всех, кто помог обнаружить уязвимости:</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="83%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>Специалисты</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0711</td>
+   <td>Чэнмин Ян, Баоцзэн Дин и Ян Сун из Alibaba Mobile Security Group</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>Дасин Го (<a href="//twitter.com/freener0">@freener0</a>) из Xuanwu Lab, Tencent</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>Derrek (<a href="//twitter.com/derrekr6">@derrekr6</a>) и Скотт Бауэр</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>Ди Шэнь (<a href="//twitter.com/returnsme?lang=en">@returnsme</a>) из KeenLab (<a href="//twitter.com/keen_lab?lang=en">@keen_lab</a>), Tencent</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="//fb.me/dzimka">Дзмитрий Лукьяненка</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692, CVE-2017-0694</td>
+   <td>Elphet и Гуан Гун из Alpha Team, Qihoo 360 Technology Co. Ltd</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266, CVE-2017-8243, CVE-2017-8270</td>
+   <td>Гэнцзя Чэнь (<a href="//twitter.com/chengjia4574">@chengjia4574</a>) и <a href="//weibo.com/jfpan">pjf</a> из IceSword Lab, Qihoo 360 Technology Co. Ltd.</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665, CVE-2017-0681</td>
+   <td><a href="mailto:[email protected]">Ханьсян Вэнь</a>, Минцзянь Чжоу (<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>) и Сюйсянь Цзян из <a href="//c0reteam.org">C0RE Team</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268, CVE-2017-8261</td>
+   <td>Цзяньцян Чжао (<a href="//twitter.com/jianqiangzhao">@jianqiangzhao</a>) и <a href="//weibo.com/jfpan">pjf</a> из IceSword Lab, Qihoo 360</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td>Джоуи Брэнд из Census Consulting Inc.</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666, CVE-2017-0684</td>
+   <td>Минцзянь Чжоу (<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>), <a href="mailto:[email protected]">Чи Чжан</a> и Сюйсянь Цзян из <a href="//c0reteam.org">C0RE Team</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697, CVE-2017-0670</td>
+   <td><a href="mailto:[email protected]">Niky1235</a> (<a href="//twitter.com/jiych_guru">@jiych_guru</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>Нитай Артенштейн из Exodus Intelligence</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705, CVE-2017-8259</td>
+   <td><a href="//twitter.com/ScottyBauer1">Скотт Бауэр</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td>Тимоти Беккер из CSS Inc.</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0642, CVE-2017-0682, CVE-2017-0683, CVE-2017-0676,
+CVE-2017-0696,CVE-2017-0675, CVE-2017-0701, CVE-2017-0702, CVE-2017-0699</td>
+   <td>Василий Васильев</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695, CVE-2017-0689, CVE-2017-0540, CVE-2017-0680,
+CVE-2017-0679, CVE-2017-0685, CVE-2017-0686, CVE-2017-0693,CVE-2017-0674,
+CVE-2017-0677</td>
+   <td>V.E.O (<a href="//twitter.com/vysea">@VYSEa</a>) из <a href="//blog.trendmicro.com/trendlabs-security-intelligence/category/mobile/">команды по изучению угроз для мобильных устройств</a>, <a href="//www.trendmicro.com">Trend Micro</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>Силин Гун из отдела безопасности платформы Tencent</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td>Янкан (<a href="//twitter.com/dnpushme">@dnpushme</a>) и Лиядон из Qex Team, Qihoo 360</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269, CVE-2017-8271, CVE-2017-8272, CVE-2017-8267</td>
+   <td>Юнган Го (<a href="//twitter.com/guoygang">@guoygang</a>) из IceSword Lab, Qihoo 360 Technology Co. Ltd.</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264, CVE-2017-0326, CVE-2017-0709</td>
+   <td>Юань-Цун Ло (<a href="mailto:[email protected]">[email protected]</a>) и Сюйсянь Цзян из <a href="//c0reteam.org">C0RE Team</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704, CVE-2017-0669</td>
+   <td>Юйсян Ли (<a href="//twitter.com/xbalien29">@Xbalien29</a>) из отдела безопасности платформы Tencent</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td><a href="//weibo.com/ele7enxxh">Цзыно Хань</a> из Chengdu Security Response Center, Qihoo 360 Technology Co. Ltd.</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691, CVE-2017-0700</td>
+   <td><a href="//weibo.com/ele7enxxh">Цзыно Хань</a> из Chengdu Security Response Center, Qihoo 360 Technology Co. Ltd. и Ао Ван (<a href="//twitter.com/ArayzSegment">@ArayzSegment</a>) из <a href="//www.pwnzen.com/">Pangu Team</a></td>
+  </tr>
+</tbody></table>
+<h2 id="common-questions-and-answers">Часто задаваемые вопросы</h2>
+<p>В этом разделе мы отвечаем на вопросы, которые могут возникнуть
+после прочтения бюллетеня.</p>
+
+<p><strong>1. Как определить, установлено ли на устройство обновление, в котором устранены перечисленные проблемы?
+</strong></p>
+
+<p>Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Справочном центре</a>.</p>
+<ul>
+  <li>В исправлении от 1 июля 2017 года или более новом устранены все проблемы, связанные с обновлением 2017-07-01.</li>
+  <li>В исправлении от 5 июля 2017 года или более новом устранены все проблемы, связанные с обновлением 2017-07-05.</li>
+</ul>
+<p>Производители устройств, позволяющие установить эти обновления, должны присвоить им один из этих уровней:</p>
+<ul>
+  <li>[ro.build.version.security_patch]:[2017-07-01]</li>
+  <li>[ro.build.version.security_patch]:[2017-07-05]</li>
+</ul>
+<p><strong>2. Почему в этом бюллетене говорится о двух обновлениях системы безопасности?</strong></p>
+
+<p>Мы включили в этот бюллетень сведения о двух обновлениях, чтобы помочь нашим партнерам как можно скорее устранить уязвимости, затрагивающие все устройства Android. Рекомендуем партнерам Android исправить все вышеперечисленные проблемы и установить последнее обновление системы безопасности.</p>
+<ul>
+  <li>На устройствах с установленным обновлением от 1 июля 2017 года должны быть исправлены все проблемы, упомянутые в соответствующем разделе этого бюллетеня, а также в предыдущих выпусках.</li>
+  <li>На устройствах с установленным обновлением от 5 июля 2017 года или более новым должны быть исправлены все проблемы, упомянутые в этом бюллетене и предыдущих выпусках.</li>
+</ul>
+<p>Рекомендуем партнерам собрать все исправления проблем в одно обновление.</p>
+
+<p><strong>3. Что означают сокращения в столбце <em>Тип</em>?</strong></p>
+
+<p>А этой столбце указан<em></em> тип уязвимости по следующей классификации:</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Сокращение</th>
+   <th>Описание</th>
+  </tr>
+  <tr>
+   <td>УВК</td>
+   <td>Удаленное выполнение кода</td>
+  </tr>
+  <tr>
+   <td>ПП</td>
+   <td>Повышение привилегий</td>
+  </tr>
+  <tr>
+   <td>РИ</td>
+   <td>Раскрытие информации</td>
+  </tr>
+  <tr>
+   <td>ОО</td>
+   <td>Отказ в обслуживании</td>
+  </tr>
+  <tr>
+   <td>Н/Д</td>
+   <td>Классификация недоступна</td>
+  </tr>
+</tbody></table>
+
+<p><strong>4. На что указывают записи в столбце <em>Ссылки</em>?</strong></p>
+
+<p>В таблицах с описанием уязвимостей есть столбец <em>Ссылки</em>. Каждая запись в нем может содержать префикс, указывающий на источник ссылки, а именно:</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Префикс</th>
+   <th>Значение</th>
+  </tr>
+  <tr>
+   <td>A-</td>
+   <td>Идентификатор ошибки Android</td>
+  </tr>
+  <tr>
+   <td>QC-</td>
+   <td>Ссылочный номер Qualcomm</td>
+  </tr>
+  <tr>
+   <td>M-</td>
+   <td>Ссылочный номер MediaTek</td>
+  </tr>
+  <tr>
+   <td>N-</td>
+   <td>Ссылочный номер NVIDIA</td>
+  </tr>
+  <tr>
+   <td>B-</td>
+   <td>Ссылочный номер Broadcom</td>
+  </tr>
+</tbody></table>
+
+<p id="asterisk"><strong>6. Что означает значок * рядом с идентификатором ошибки Android в столбце <em>Ссылки</em>?</strong></p>
+
+<p>Значок * (звездочка) означает, что исправление для уязвимости не опубликовано<em></em>. Необходимое обновление содержится в последних бинарных драйверах для устройств Nexus, которые можно скачать на <a href="//developers.google.com/android/nexus/drivers">сайте для разработчиков</a>.</p>
+
+<h2 id="versions">Версии</h2>
+<table>
+  <colgroup><col width="25%" />
+  <col width="25%" />
+  <col width="50%" />
+  </colgroup><tbody><tr>
+   <th>Версия</th>
+   <th>Дата</th>
+   <th>Примечания</th>
+  </tr>
+  <tr>
+   <td>1.0</td>
+   <td>5 июля 2017 г.</td>
+   <td>Бюллетень опубликован.</td>
+  </tr>
+  <tr>
+   <td>1.1</td>
+   <td>6 июля 2017 г.</td>
+   <td>Добавлены ссылки на AOSP.</td>
+  </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/contact-us.html b/zh-cn/compatibility/contact-us.html
new file mode 100644
index 0000000..a32e776
--- /dev/null
+++ b/zh-cn/compatibility/contact-us.html
@@ -0,0 +1,40 @@
+<html devsite><head>
+    <title>与我们联系</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>本页介绍了针对 Android 兼容性计划(包括兼容性定义文档 (CDD) 和兼容性测试套件 (CTS))进行问询的联系方式。有关其他主题的沟通渠道,请参阅<a href="/source/community.html">社区</a>页面。</p>
+
+<h2 id="for-android-compatibility-definition-and-compatibility-test-suite-technical-questions">对于 CDD 和 CTS 技术问题</h2>
+<p>如果您有关于 Android 兼容性的技术问题,但本网站未提供相关解答,则您可以向 <a href="https://groups.google.com/forum/?fromgroups#!forum/android-compatibility">android-compatibility</a> 用户名单上的同行寻求帮助。</p>
+
+<ul>
+<li>使用 Google 网上论坛订阅:<a href="https://groups.google.com/forum/?fromgroups#!forum/android-compatibility">android-compatibility</a></li>
+<li>通过电子邮件订阅:<a href="mailto:[email protected]">android-compatibility</a></li>
+</ul>
+
+<p>为了充分利用此名单,请先阅读“社区”页面上的<a href="/source/community.html#getting-the-most-from-our-lists">充分利用我们的用户名单</a>。需要 Android 设备相关帮助的用户应联系运营商或制造商以寻求帮助。</p>
+
+<h2 id="for-business-inquiries">对于许可 Google 移动服务的问询</h2>
+<p>请通过 <a href="https://www.android.com/gms/contact/">GMS 联系</a>表单发送关于许可 <a href="https://www.android.com/gms/">Google 移动服务</a>的问询。其他非 GMS 合作伙伴关系问询可发送至 <a href="mailto:[email protected]">[email protected]</a>。</p>
+
+<p>我们会阅读收到的每封邮件,但无法一一进行回复。如果我们能够提供帮助,则保证会与您联系!</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/audio-framework.html b/zh-cn/compatibility/cts/audio-framework.html
new file mode 100644
index 0000000..62d7db1
--- /dev/null
+++ b/zh-cn/compatibility/cts/audio-framework.html
@@ -0,0 +1,331 @@
+<html devsite><head>
+    <title>音频框架 CTS 验证程序</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>这套新的测试需要人为干预和一些外部硬件,包括<a href="#loopback_latency">回环插头</a>、<a href="#audio_frequency_speaker_test">USB 参照麦克风</a>和<a href="#audio_frequency_microphone_test">外部扬声器</a>。对于没有 3.5 毫米 (⅛") 耳机端口的设备,用户将能够跳过测试并将其标记为成功。有关详情,请参阅以下部分。</p>
+
+<h2 id="loopback_latency">回环插头延迟测试</h2>
+
+<p>音频中的<a href="/devices/audio/latency_measure.html#measuringRoundTrip">往返延迟</a>是指录制、处理并回放音频信号所需的时间。</p>
+
+<p>要使用 CTS 验证程序测量往返延迟,请将回环插头连接到 3.5 毫米 (⅛") 耳机连接器。(如果没有回环插头,您可以按照<a href="/devices/audio/loopback.html">音频回环外接小配件</a>说明轻松制作一个回环插头。)</p>
+
+<table>
+ <tbody><tr>
+    <td width="50%">开始 CTS 验证程序回环测试</td>
+    <td width="50%"><img src="/compatibility/cts/images/audio-framework0.png" alt="音频延迟回环" width="300" id="audio_latency_loopback"/></td>
+ </tr>
+ <tr>
+    <td>显示的说明摘要</td>
+    <td><img src="/compatibility/cts/images/audio-framework1.png" alt="说明摘要" width="300" id="loopback_instructions"/></td>
+ </tr>
+ <tr>
+    <td>报告设备是否具有耳机端口:<br />
+        如果被测设备具有物理耳机端口,则为 <strong>YES</strong><br />
+        如果没有耳机端口,则为 <strong>NO</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework-port.png" alt="音频回环延迟" width="300" id="port_check"/></td>
+ </tr>
+ <tr>
+    <td>如果上一步中的回答为 <strong>NO</strong>,请按测试底部的<strong>通过</strong>(绿色对勾标记)并完成。</td>
+    <td><img src="/compatibility/cts/images/audio-framework-pass.png" alt="音频通过按钮" width="300" id="port_pass"/></td>
+ </tr>
+ <tr>
+     <td>如果上一步的回答为 <strong>YES</strong>,请继续连接回环插头。<br />将回环插头连接到耳机端口<br />按 <strong>LOOPBACK PLUG READY</strong> 按钮</td><td><img src="/compatibility/cts/images/audio-framework2.png" alt="音频通过按钮" width="300" id="port_pass"/></td>
+ </tr>
+ <tr>
+    <td>移动滑块,直到信号电平大于 60%<br />按 <strong>TEST</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework3.png" alt="音量 1" width="300" id="audio_level1"/>
+        <img src="/compatibility/cts/images/audio-framework4.png" alt="音量 2" width="300" id="audio_level2"/></td>
+ </tr>
+ <tr>
+    <td>等待几秒,直到延迟时间测试完成</td>
+    <td><img src="/compatibility/cts/images/audio-framework5.png" alt="测试正在运行" width="300" id="test_running"/></td>
+ </tr>
+ <tr>
+    <td>测试结束后,系统将显示结果<br />成功的测试的最低置信水平为 0.6<br />延迟时间数字越低越好,但不强制要求达到某个数字</td>
+    <td><img src="/compatibility/cts/images/audio-framework6.png" alt="测试已完成" width="300" id="test_finished"/>
+</td>
+ </tr>
+ <tr>
+    <td>按<strong>通过</strong>(绿色,仅在成功时可用)或<strong>失败</strong>(红色)按钮记录结果。</td>
+    <td><img src="/compatibility/cts/images/audio-framework7.png" alt="通过按钮" width="300" id="pass_button"/><br />
+        <img src="/compatibility/cts/images/audio-framework8.png" alt="失败按钮" width="300" id="failed_button"/></td>
+ </tr>
+</tbody></table>
+
+<h2 id="audio_frequency_line_test">音频频响曲线测试</h2>
+
+<p>此测试使用回环插头来表征左/右线路音频输出,并使用来自插头的麦克风反馈来截取音频和计算每个频道的频率响应。</p>
+
+<p>对每个频道会应用每个频段(共四个)的预期最小能量这一简单条件。</p>
+<table>
+ <tbody><tr>
+    <td width="50%">开始 CTS 音频频响曲线测试</td>
+    <td width="50%"><img src="/compatibility/cts/images/audio-framework9.png" alt="开始频响曲线" width="300" id="start_line_test"/></td>
+ </tr>
+ <tr>
+    <td>显示的说明摘要</td>
+    <td><img src="/compatibility/cts/images/audio-framework10.png" alt="说明" width="300" id="summary_instructions"/></td>
+ </tr>
+ <tr>
+    <td>报告设备是否具有耳机端口:<br />
+        如果被测设备具有物理耳机端口,则为 <strong>YES</strong><br />
+        如果没有耳机端口,则为 <strong>NO</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework-line-port.png" alt="音频频响曲线" width="300" id="line_port_check"/></td>
+ </tr>
+ <tr>
+    <td>如果上一步中的回答为 <strong>NO</strong>,请按测试底部的<strong>通过</strong>(绿色对勾标记)并完成。</td>
+    <td><img src="/compatibility/cts/images/audio-framework-pass.png" alt="音频通过按钮" width="300" id="port_pass"/></td>
+ </tr>
+ <tr>
+     <td>如果上一步的回答为 <strong>YES</strong>,请继续连接回环插头<br />  将回环插头连接到耳机连接器(请参阅<a href="#loopback_latency">回环插头延迟测试</a>)<br />按 <strong>LOOPBACK PLUG READY</strong> 按钮</td><td><img src="/compatibility/cts/images/audio-framework11.png" alt="loopback plug ready" width="300" id="port_pass"/></td>
+ </tr>
+    <tr><td>按 <strong>TEST</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework12.png" alt="回环插头测试" width="300" id="loopback_plug_test"/></td>
+ </tr>
+ <tr>
+    <td>等待几秒,直到频响测试完成</td>
+    <td><img src="/compatibility/cts/images/audio-framework13.png" alt="测试左截取" width="300" id="left_capture"/></td>
+ </tr>
+ <tr>
+    <td>测试结束后,系统将显示结果</td>
+    <td><img src="/compatibility/cts/images/audio-framework14.png" alt="测试完成" width="300" id="test_complete"/></td>
+ </tr>
+    <tr><td>按<strong>通过</strong>(仅在成功时可用)或<strong>失败</strong>按钮以记录结果</td>
+    <td><img src="/compatibility/cts/images/audio-framework15.png" alt="通过按钮" width="300" id="pass_button"/><br />
+        <img src="/compatibility/cts/images/audio-framework16.png" alt="失败按钮" width="300" id="failed_button"/></td>
+ </tr>
+</tbody></table>
+
+<h2 id="audio_frequency_speaker_test">扬声器音频频响测试</h2>
+
+<p>此测试使用外部 USB 参照麦克风截取的信号来评估左侧(和右侧,如果存在)扬声器的频率响应。</p>
+
+<p>参照麦克风是指频响平缓、自然的麦克风。它们通常用于分析和测量设备。</p>
+
+<p>市面上有一些便宜的 USB 参照麦克风(例如,<a href="https://minidsp.com/products/acoustic-measurement/umik-1">miniDSP USB 测量校准麦克风</a>、<a href="http://www.daytonaudio.com/index.php/umm-6-usb-measurement-microphone.html">Dayton 音频 UMM-6 USB 测量麦克风</a>),主要供家庭影院爱好者用来校准其设置。</p>
+
+<p>推荐的最低参照麦克风特征:<br />介于 100 Hz - 20 kHz 之间的平缓频率响应:+/- 2 dB<br />信噪比为 70 dB(A 加权)<br />频率为 1000 Hz,声压级为 127 dB 时,总谐波畸变率小于 1%</p><p>
+
+<table>
+ <tbody><tr>
+    <td width="50%">开始 CTS 扬声器音频频响测试</td>
+    <td width="50%"><img src="/compatibility/cts/images/audio-framework17.png" alt="开始扬声器测试" width="300" id="start_speaker"/></td>
+ </tr>
+ <tr>
+    <td>显示的说明摘要</td>
+    <td><img src="/compatibility/cts/images/audio-framework18.png" alt="说明" width="300" id="summary_instructions"/></td>
+ </tr>
+ <tr>
+    <td>连接 USB 参照麦克风(请参阅<a href="#audio_frequency_speaker_test">扬声器音频频响测试</a>)<br />按 <strong>USB REFERENCE MICROPHONE READY</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework19.png" alt="麦克风就绪" width="300" id="mic_ready"/></td>
+ </tr>
+ <tr>
+    <td>在安静的房间中设置 DUT(被测设备),将 USB 麦克风放置在垂直于屏幕中心且距离为 20 厘米的位置</td>
+    <td><img src="/compatibility/cts/images/audio-framework20.png" alt="被测设备" width="300" id="dut"/></td>
+ </tr>
+ <tr>
+    <td>按 <strong>TEST</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework21.png" alt="点击测试" width="300" id="click_test"/></td>
+ </tr>
+ <tr>
+    <td>等待几秒,直到频响测试完成</td>
+    <td><img src="/compatibility/cts/images/audio-framework22.png" alt="测试进行中" width="300" id="right_capture"/></td>
+ </tr>
+ <tr>
+    <td>测试结束后,系统将显示结果</td>
+    <td><img src="/compatibility/cts/images/audio-framework23.png" alt="测试完成" width="300" id="test_complete"/></td>
+ </tr>
+
+    <tr><td>按<strong>通过</strong>(仅在成功时可用)或<strong>失败</strong>按钮以记录结果</td>
+    <td><img src="/compatibility/cts/images/audio-framework24.png" alt="通过按钮" width="300" id="pass_button"/><br />
+        <img src="/compatibility/cts/images/audio-framework25.png" alt="失败按钮" width="300" id="failed_button"/></td>
+ </tr>
+</tbody></table>
+
+</p><h2 id="audio_frequency_microphone_test">麦克风音频频响测试</h2>
+
+<p>该测试涉及的硬件比前面的测试要多。它需要使用以下两种硬件:用作白噪声声源的外部扬声器,以及用作声音参照的 USB 参照麦克风。尽管该过程涉及更多硬件,但可以使用经济实惠且易于获得的硬件来执行。</p>
+
+<p>距设备 40 厘米处的外部扬声器用于提供白噪声声源。这些扬声器不需要具有“平缓的”频率响应,但需要将低频 (100 Hz) 到高频 (20 khz) 之间的频率都很好地覆盖在内,通常便携式或中等尺寸的有源扬声器(例如 Sony SRS -X5 便携式扬声器)即可满足要求。</p>
+
+<p>关键在于执行校准步骤(使用 USB 参照麦克风),以估算扬声器的实际频率响应,从而作为可靠的参照供内置麦克风进行比较。</p>
+<table>
+ <tbody><tr>
+    <td width="50%">开始 CTS 麦克风音频频响测试</td>
+    <td width="50%"><img src="/compatibility/cts/images/audio-framework26.png" alt="开始麦克风测试" width="300" id="start_mic_test"/></td>
+ </tr>
+ <tr>
+    <td>显示的说明摘要</td>
+    <td><img src="/compatibility/cts/images/audio-framework27.png" alt="说明" width="300" id="summary_instructions"/></td>
+ </tr>
+ <tr>
+    <td>在一个安静的房间中设置 DUT<br />将扬声器放置在垂直于 DUT 屏幕中心的 40 厘米处(请参阅<a href="#audio_frequency_microphone_test">麦克风音频频响测试</a>)</td>
+    <td><img src="/compatibility/cts/images/audio-framework28.png" alt="被测设备" width="300" id="device_position"/></td>
+ </tr>
+ <tr>
+    <td>报告设备是否具有耳机端口:<br />
+        如果被测设备具有物理耳机端口,则为 <strong>YES</strong><br />
+        如果没有耳机端口,则为 <strong>NO</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework-mic-port.png" alt="音频麦克风测试" width="300" id="mic_port_check"/></td>
+ </tr>
+ <tr>
+    <td>如果上一步中的回答为 <strong>NO</strong>,请按测试底部的<strong>通过</strong>(绿色对勾标记)并完成。</td>
+    <td><img src="/compatibility/cts/images/audio-framework-pass.png" alt="麦克风耳机通过按钮" width="300" id="mic_port_pass"/></td>
+ </tr>
+ <tr>
+    <td>如果上一步中的回答为 <strong>YES</strong>,请继续连接外部扬声器。<br />使用耳机/线路输出连接器连接外部扬声器(请记住要拔掉所有 USB 麦克风)<br />按 <strong>EXTERNAL SPEAKERS READY</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework29.png" alt="外部扬声器就绪" width="300" id="speakers_ready"/></td>
+ </tr>
+ <tr>
+    <td>按 <strong>TEST 1</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework30.png" alt="没有 USB 设备" width="300" id="no_usb_device"/></td>
+ </tr>
+ <tr>
+    <td>等待几秒钟,以便测试 1 完成。</td>
+    <td><img src="/compatibility/cts/images/audio-framework31.png" alt="测试进行中" width="300" id="testing_incomplete"/></td>
+ </tr>
+ <tr>
+    <td>当测试 1 完成后,系统会显示内置麦克风的结果。</td>
+    <td><img src="/compatibility/cts/images/audio-framework32.png" alt="测试结果" width="300" id="testing_complete"/></td>
+ </tr>
+ <tr>
+    <td>连接 USB 参照麦克风(请参阅<a href="#audio_frequency_speaker_test">扬声器音频频响测试</a>)<br />按 <strong>USB REFERENCE MICROPHONE READY</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework33.png" alt="麦克风就绪" width="300" id="mic_ready"/></td>
+ </tr>
+ <tr>
+    <td>将 USB 麦克风放置在 DUT 中的内置麦克风旁边,使其指向外部扬声器</td>
+    <td><img src="/compatibility/cts/images/audio-framework34.jpg" alt="设备位置" width="300" id="device_position"/><br />
+        <img src="/compatibility/cts/images/audio-framework35.png" alt="麦克风位置" width="300" id="mic-position"/></td>
+ </tr>
+ <tr>
+    <td>按 <strong>TEST 2</strong></td>
+    <td><img src="/compatibility/cts/images/audio-framework36.png" alt="检测到 USB" width="300" id="usb-detected"/></td>
+ </tr>
+ <tr>
+    <td>等待几秒,直到测试 2 完成</td>
+    <td><img src="/compatibility/cts/images/audio-framework37.png" alt="测试正在运行" width="132" id="test_running"/></td>
+ </tr>
+ <tr>
+    <td>当测试 2 完成后,系统会显示 USB 参照麦克风的结果。</td>
+    <td><img src="/compatibility/cts/images/audio-framework38.png" alt="测试已完成" width="300" id="testing_completed"/></td>
+ </tr>
+ <tr>
+    <td>按<strong>通过</strong>(仅在成功时可用)或<strong>失败</strong>按钮以记录结果。</td>
+    <td><img src="/compatibility/cts/images/audio-framework39.png" alt="通过按钮" width="300" id="pass_button"/><br />
+        <img src="/compatibility/cts/images/audio-framework40.png" alt="失败按钮" width="300" id="failed_button"/></td>
+ </tr>
+</tbody></table>
+
+<h2>音频频响未处理测试</h2>
+<p>对于该测试,除了 USB 参照麦克风和外部扬声器之外,还需要使用声压级电平表(SPL 表)。
+</p>
+<p>另外值得一提的是,在本测试中,每个测试的播放和测试部分都具有自己的按钮。这样做是为了帮助测试不具备轻松播放功能,但仍然可以测试未处理录音源的某些设备。</p>
+<table>
+  <tbody><tr>
+   <td width="50%">开始 CTS 频响未处理测试。</td>
+   <td width="50%">
+<img src="/compatibility/cts/images/audio-framework41.png" alt="开始测试" title="开始测试"/>
+   </td>
+  </tr>
+  <tr>
+   <td>显示的说明摘要。
+   </td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework42.png" alt="说明摘要" title="说明摘要"/>
+   </td>
+  </tr>
+  <tr>
+    <td>在一个安静的房间中设置 DUT。使用耳机/线路输出连接器连接外部扬声器(请确保没有连接任何 USB 麦克风)。
+   </td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework43.jpg" alt="DUT 设置照片" title="DUT 设置"/>
+   </td>
+  </tr>
+  <tr>
+    <td>测试音调<br />按 [PLAY] 并将 SPL 表移至扬声器的正面,直到声压级显示为 94 dB SPL。</td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework44.jpg" alt="测试音调设置照片" title="测试音调设置"/>
+   </td>
+  </tr>
+  <tr>
+   <td>将 SPL 表对着扬声器沿直线来回移动,直到屏幕上显示的声压级为 94 dB SPL。记下该位置。
+   </td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework45.jpg" alt="SPL 表放置照片" title="SPL 表放置"/>
+   </td>
+  </tr>
+  <tr>
+   <td>移动 DUT 并将麦克风放置在上一步找到的位置处。按 [TEST]。DUT 会执行短暂的音频截取,并自动停止播放。如果需要,也可以按 [STOP] 来停止播放。
+   </td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework46.png" alt="音频截取屏幕截图" title="音频截取"/>
+   </td>
+  </tr>
+  <tr>
+    <td>测试噪声<br />将扬声器放置在垂直于 DUT 屏幕中心的 40 厘米处(请参阅<a href="#audio_frequency_microphone_test">麦克风音频频响测试</a>)。
+   </td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework47.png" alt="扬声器放置照片" title="扬声器放置"/>
+   </td>
+  </tr>
+  <tr>
+   <td>按 [PLAY]。按 [TEST]。等待测试完成。它会自动停止播放。
+<p>如果需要,也可以按 [STOP] 来停止播放。
+   </p></td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework48.png" alt="运行测试屏幕截图" title="运行测试"/>
+   </td>
+  </tr>
+  <tr>
+    <td>测试 USB 背景噪声<br />连接 USB 参照麦克风(请参阅<a href="#audio_frequency_speaker_test">扬声器音频频响测试</a>)。找到位于 DUT 麦克风附近的 USB 麦克风<p>按 [TEST]。
+</p><p>此时系统将运行一个简短的测试,并在屏幕上显示结果。
+   </p></td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework49.jpg" alt="USB 参照麦克风照片" title="USB 参照麦克风"/>
+<img src="/compatibility/cts/images/audio-framework50.png" alt="运行测试屏幕截图" title="运行测试"/>
+   </td>
+  </tr>
+  <tr>
+    <td>测试 USB 噪声<br />将 USB 麦克风保持在上一次测试中的位置。<p>按 [PLAY]。外部扬声器应播放宽带噪声。按 [TEST]。此时系统将运行一个简短的测试,并在屏幕上显示结果。
+   </p></td>
+   <td>.
+<img src="/compatibility/cts/images/audio-framework51.png" alt="USB 噪声测试屏幕截图" title="USB 噪声测试"/>
+   </td>
+  </tr>
+  <tr>
+   <td>完成测试的 4 个部分后,系统会将每个测试的通过/失败信息更新到总结果中。如果需要,可重复执行测试的各个步骤。</td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework52.png" alt="测试结果" title="测试结果"/>
+   </td>
+  </tr>
+  <tr>
+   <td>按通过(仅在成功时可用)或失败按钮以记录结果。如果 DUT 未定义音频频响未处理功能,则需要运行测试,但不强制要求在所有测量中均成功。
+   </td>
+   <td>
+<img src="/compatibility/cts/images/audio-framework53.png" alt="测试已通过" title="测试已通过"/>
+<p>
+<img src="/compatibility/cts/images/audio-framework54.png" alt="测试未通过" title="测试未通过"/>
+   </p></td>
+  </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/camera-hal.html b/zh-cn/compatibility/cts/camera-hal.html
new file mode 100644
index 0000000..bda0833
--- /dev/null
+++ b/zh-cn/compatibility/cts/camera-hal.html
@@ -0,0 +1,413 @@
+<html devsite><head>
+    <title>相机 HAL 测试核对清单</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>本文档列出了可用于评估 Android 相机硬件抽象层 (HAL) 的所有测试,面向的是原始设备制造商 (OEM) 和应用处理器 (AP) 供应商,旨在帮助他们确保能正确实施相机 HAL,并最大限度减少缺陷。尽管这是 Android 兼容性测试套件 (CTS) 的自愿性补充测试,但它显著扩大了相机测试覆盖范围,并且确实能够发现一些潜在错误。</p>
+
+<p>通过执行这些测试,原始设备制造商 (OEM) 可验证其是否正确集成了最新的 Android 相机硬件抽象层 (HAL) 3.2 接口。当符合核对清单中的所有规范时,设备实施可被视为<em></em>完全符合新的 Android 相机 HAL 接口规范。这反过来又使得设备能够正确支持构建相机应用所依据的全新 <code>android.hardware.camera2</code> 文件包。</p>
+
+<h2 id="camera_hal_3_2_specification">[  ] 1. 相机 HAL 3.2 规范</h2>
+
+<p>Android 相机 HAL 3.2 规范是有关设备必须满足哪些要求的权威信息来源;本文档提供了所有测试的摘要,可将其用作核对清单。相机 HAL 实施方(例如 AP 供应商)应逐条检查 HAL 3.2 规范,并确保其设备符合该规范。</p>
+
+<p>最新的 HAL 3.2 规范的相关定义请参见 L 常规 Android 平台开发套件 (PDK) 中的以下文件:</p>
+
+<ul>
+  <li><em></em>相机 HAL 3.x 接口和规范:<code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h">hardware/libhardware/include/hardware/camera3.h</a></code>、<code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h">hardware/libhardware/include/hardware/camera_common.h</a></code>
+  </li><li><em></em>相机 HAL 3.x 元数据规范:<code><a href="https://android.googlesource.com/platform/system/media/+/master/camera/docs/docs.html">system/media/camera/docs/docs.html</a></code>
+  </li><li><em></em>HAL 像素格式接口和规范:<code><a href="https://android.googlesource.com/platform/system/core/+/master/include/system/graphics.h">system/core/include/system/graphics.h</a></code>
+</li></ul>
+
+<h2 id="camera_test_types">[  ] 2. 相机测试类型</h2>
+
+<p>以下是适用于最新 Android 相机的主要测试类型以及相关说明:</p>
+
+<ul>
+  <li><em><a href="#native_tests">原生</a></em>:直接针对相机 HAL 接口的测试</li><li><em><a href="#cts_tests">兼容性测试套件 (CTS)</a></em>:自动运行的标准 Android 测试,可确保设备兼容性;有关详情请参阅 <a href="/compatibility/cts/index.html">CTS 简介</a>和<a href="/devices/tech/test_infra/tradefed/index.html">贸易联盟概述</a>
+  </li><li><em><a href="#its_tests">图像测试套件 (ITS)</a></em>:手动运行的测试,可确保图像正确性;有关设置说明,请参见顶级和测试专用的 <code>README</code> 文件以及 tutorial.py</li><li><em><a href="#manual_tests_with_aosp_camera_app">针对 Android 开源项目 (AOSP) 相机应用的手动测试</a></em>:对常见相机功能进行类似于用户体验的测试</li><li><em><a href="#manual_testingcam_tests">手动 TestingCam 测试</a></em>:从源中的 <code>pdk/apps/TestingCamera/</code> 运行
+  </li><li><em><a href="#manual_testingcam2_tests">手动 TestingCam2.1 测试</a></em>:从源中的 <code>pdk/apps/TestingCamera2/</code> 运行
+</li></ul>
+
+<p>下面详细介绍了所有这些测试类型。我们按照 OEM 应执行这些测试的时间先后顺序对它们进行了介绍。</p>
+
+<p>例如,如果设备未通过原生测试,那么肯定无法通过随后的兼容性测试套件 (CTS) 测试。如果设备未能通过 CTS,则没必要继续进行图像测试套件 (ITS) 测试。我们建议先解决每种测试类型中发现的问题,然后再进行下一组测试。</p>
+
+<h2 id="native_tests">[  ] 3. 原生测试</h2>
+
+<p>这类测试会直接测试相机 HAL 接口。</p>
+
+<p>相机原生测试的起始路径为:<code>platform/hardware/libhardware</code></p>
+
+<p>设置这类测试的命令如下:</p>
+
+<pre>
+$ cd hardware/libhardware/tests/camera*/
+$ mm
+$ adb remount; adb sync
+</pre>
+
+<h3 id="hal_3_x_tests">[  ] 3.1. HAL 3.x 测试</h3>
+
+<p>这类相机测试位于以下路径:<code>hardware/libhardware/tests/camera3/*</code></p>
+
+<p>运行所有测试的命令如下:</p>
+
+<pre>
+$ adb shell /data/nativetest/camera3_test/camera3_test
+</pre>
+
+<p>对于每项通过的测试,您会收到 <strong>OK</strong>。在输出信息末尾处会提供错误日志,以及有关所有已通过测试的摘要。</p>
+
+<h3 id="hal_2_3_tests">[  ] 3.2. HAL 2/3 测试</h3>
+
+<p>这类相机测试位于以下路径:<code>hardware/libhardware/tests/camera2/*</code></p>
+
+<p>运行所有测试的命令如下:</p>
+
+<pre>
+$ adb shell /data/nativetest/camera3_test/camera3_test
+</pre>
+
+<p>要运行单个测试,请传递 <code>--gtest_filter</code> 参数和相应测试名称,命令如下:</p>
+
+<pre>
+$ adb shell /data/nativetest/camera2_test/camera2_test \
+--gtest_filter=Camera2Test.OpenClose
+</pre>
+
+<p>要运行一小组测试,请使用带有 <code>--gtest_filter</code> 参数的通配符,命令如下:</p>
+
+<pre>
+$ adb shell /data/nativetest/camera2_test/camera2_test \
+--gtest_filter=Camera2Test.*
+</pre>
+
+<h3 id="3_tests_that_interact_with_the_camera_service">[  ] 3.3. 与相机服务交互的测试</h3>
+
+<p>这类相机测试位于以下路径:<code>frameworks/av/camera/tests/*</code></p>
+
+<h3 id="camera_metadata_tests">[  ] 3.4. 相机元数据测试</h3>
+
+<p>这类相机测试位于以下路径:<code>system/media/camera/tests/*</code></p>
+
+<h2 id="cts_tests">[  ] 4. 兼容性测试套件 (CTS) 测试</h2>
+
+<p>相机 Android 兼容性测试套件 (CTS) 测试重点测试设备兼容性。这类测试不需要特定的测试环境(唯一的例外是视野范围/FOV CTS 验证程序测试)。</p>
+
+<p>相机 CTS 测试的起始路径为:<code>platform/cts</code></p>
+
+<p>有关运行 CTS 的常规说明,请参阅 <a href="/compatibility/cts/index.html">CTS 简介</a>及其子页面。</p>
+
+<h3 id="cts_tests_for_the_android_hardware_camera_api">[  ] 4.1. 针对 <code>android.hardware.Camera</code> API 的 CTS 测试</h3>
+
+<p>这类相机测试位于 <code>cts/tests/tests/</code> 路径下的下列位置:</p>
+
+<ul>
+  <li><code>hardware/src/android/hardware/cts/CameraTest.java</code>
+  </li><li><code>hardware/src/android/hardware/cts/CameraGLTest.java</code>
+  </li><li><code>hardware/src/android/hardware/cts/Camera_SizeTest.java</code>
+  </li><li><code>permission/src/android/permission/cts/CameraPermissionTest.java</code>
+</li></ul>
+
+<h3 id="cts_tests_for_the_android_hardware_camera2_api">[  ] 4.2. 针对 <code>android.hardware.camera2</code> API 的 CTS 测试</h3>
+
+<p>这类相机测试位于 <code>cts/tests/tests/</code> 路径下的下列位置:</p>
+
+<ul>
+  <li><code>hardware/src/android/hardware/camera2/cts/*</code>
+  </li><li><code>permission/src/android/permission/cts/Camera2PermissionTest.java</code>
+</li></ul>
+
+<h3 id="cts_verifier_camera_tests">[  ] 4.3. CTS 验证程序相机测试</h3>
+
+<p>这类相机测试位于以下路径:<code>cts/apps/CtsVerifier/src/com/android/cts/verifier/camera/*</code></p>
+
+<h2 id="its_tests">[  ] 5. 图像测试套件 (ITS) 测试</h2>
+
+<p>CameraITS 测试重点测试图像的正确性。这些 Python 脚本在通过 USB 连接 Android 设备的工作站上手动运行。该工作站可以运行具备必需的 Python 2.7 环境的任何操作系统。</p>
+
+<p class="note">由于 ITS 是 CTS 验证程序的子测试,因此请在运行 Python 脚本之前启动 CTS 验证程序和 ITS 子测试,以便这些脚本具有可与之通信的进程。</p>
+
+<p>CameraITS 基础设施和测试位于以下路径:<code>cts/apps/CameraITS</code></p>
+
+<p>有关如何设置和运行测试的说明,请参阅此顶级文件夹中的最新 <code>README</code> 文件。设置方法如下:<code>make
+cts</code></p>
+
+<pre>
+$ extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip
+$ cd android-cts-verifier
+$ adb install -r CtsVerifier.apk
+$ cd CameraITS
+</pre>
+
+<p>有关脚本使用方法的演示,请参见 <code>tests</code> 子目录中的 <code>tutorial.py</code>。每项测试都归属于相应的 <code>tests/scene<#></code> 子目录。有关具体的测试说明,请参阅每个子目录中的 <code>README</code> 文件。</p>
+
+<p>您将需要使用由可重复使用的特定目标(如白色墙面、灰色卡片和台灯)构建的简单物理环境。Android 设备安装在三脚架上,而设备的相机功能通过脚本运行。大多数测试的结果要么是通过,要么是失败,不过有些测试还会提供一些指标。</p>
+
+<p>这些测试仍在不断开发改进,还不够全面,无法对相机 HAL 进行完全自动化的通过/失败验证。但是,这些脚本确实可以测试未在 CTS 中测试的情景,而且还是整个 HAL 3.2 测试计划的重要组成部分。</p>
+
+<h3 id="its_tests_on_scene_0_plain">[  ] 5.1. 对场景 0(纯色)的 ITS 测试</h3>
+
+<p>此测试不需要特定设置。所有相机(背面 + 正面 + 任何其他相机)都必须通过 <code>tests/scene0</code> 文件夹中的所有测试。</p>
+
+<h3 id="its_tests_on_scene_1_grey_card">[  ] 5.2. 对场景 1(灰色卡片)的 ITS 测试</h3>
+
+<p>所有相机(背面 + 正面 + 任何其他相机)都必须通过 <code>tests/scene1</code> 文件夹中的所有测试。<code>tests/scene1/README</code> 文件对场景设置进行了说明。</p>
+
+<h3 id="its_tests_on_scene_2_camera_lab">[  ] 5.3. 对场景 2(相机实验室)的 ITS 测试</h3>
+
+<p>所有相机(背面 + 正面 + 任何其他相机)都必须通过 <code>tests/scene2</code> 文件夹中的所有测试。<code>tests/scene2/README</code> 文件对场景设置进行了说明。</p>
+
+<h2 id="manual_tests_with_aosp_camera_app">[  ] 6. 针对 AOSP 应用的手动测试</h2>
+
+<h3 id="camera_mode_aosp_camera_app">[  ] 6.1. 相机模式</h3>
+
+<p>对于设备上的所有相机(正面、背面和任何其他相机),您需要验证以下内容:</p>
+
+<ol>
+  <li>可以在设备上拍照和查看图像,并且图像效果良好,没有明显的问题。
+  </li><li>点按对焦、连续自动对焦、微距对焦、无限远对焦、自动白平衡和自动曝光控制均可正常使用。
+  </li><li>使用数码变焦时(拍摄期间),点按对焦、连续自动对焦、自动白平衡和自动曝光控制均可正常使用。
+  </li><li>闪光灯设置(开启/关闭/自动)可正常使用,并且能与 3A 有效同步。
+</li></ol>
+
+<h3 id="video_mode_aosp_camera_app">[  ] 6.2. 视频模式</h3>
+
+<p>对于设备上的所有相机(正面、背面和任何其他相机),您需要验证以下内容:</p>
+
+<ol>
+  <li>可以在设备上拍摄和查看视频,并且视频效果良好,没有明显的问题。
+  </li><li>在录制视频的过程中能够正常拍摄快照。
+  </li><li>点按对焦、连续自动对焦、微距对焦、无限远对焦、自动白平衡和自动曝光控制均可正常使用。
+  </li><li>使用数码变焦时(拍摄期间),点按对焦、连续自动对焦、自动白平衡和自动曝光控制均可正常使用。
+  </li><li>手电筒设置(开启/关闭)可正常使用,并且能与 3A 有效同步。
+</li></ol>
+
+<h3 id="camera_settings_resolution">[  ] 6.3. 相机设置:分辨率</h3>
+
+<p>对于设备上的所有相机(正面、背面和任何其他相机)以及菜单中可用的所有分辨率,您需要验证是否返回并应用了正确的分辨率设置:</p>
+
+<ul>
+  <li>相机模式</li><li>视频模式</li><li>镜头模糊</li><li>PhotoSphere</li><li>全景</li></ul>
+
+<h3 id="camera_settings_exposure_compensation">[  ] 6.4. 相机设置:曝光补偿</h3>
+
+<p>验证是否应用了曝光补偿(+2 和 -2)。</p>
+
+<h3 id="photosphere">[  ] 6.5. PhotoSphere</h3>
+
+<p>分别通过前置和后置摄像头拍摄 360 度全景 PhotoSphere 图像。确认每一帧都对焦在无限远处,并且各个拍摄画面之间的曝光和白平衡是一致的。</p>
+
+<h3 id="panorama">[  ] 6.6. 全景</h3>
+
+<p>拍摄纵向、横向和广角全景(分别使用前置和后置摄像头),然后确认每一帧都对焦在无限远处,并且各个拍摄画面之间的曝光和白平衡是一致的。</p>
+
+<h3 id="lensblur">[  ] 6.7. 镜头模糊</h3>
+
+<p>分别使用前置和后置摄像头拍摄一张镜头模糊图像,然后确认(在查看拍摄的照片时)重新对焦于不同景深的功能能够正常运行。</p>
+
+<p>此外,在此模式下验证点按对焦、连续自动对焦、自动白平衡和自动曝光控制是否能正常使用。</p>
+
+<h2 id="media_framework_tests">[  ] 7. 媒体框架测试</h2>
+
+<p>通过 MediaFrameworkTest 中与相机相关的所有媒体测试。请注意,运行这些测试需要在 Android 设备上安装 mediaframeworktest.apk。您将需要 <code>make mediaframeworktest</code>,然后使用 adb 来安装生成的 .apk。下面提供了命令示例。</p>
+
+<p>相机相关的媒体框架测试的起始路径为:<code>platform/frameworks/base</code></p>
+
+<p>这类测试的源代码位于以下路径:<code>frameworks/base/media/tests/MediaFrameworkTest</code></p>
+
+<p>设置这类测试的命令如下:</p>
+
+<pre>
+$ make mediaframeworktest
+$ adb install out/target/product/<em>&lt;name&gt;</em>/data/app/mediaframeworktest.apk
+</pre>
+
+<p>其中 <em><code><name></name></code></em> 变量表示包含供应商产品的目录。</p>
+
+<p>查找以下目录或其子目录中的所有测试:</p>
+
+<pre>
+frameworks/base/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest
+</pre>
+
+<p>每个子目录都代表一个测试类:</p>
+
+<ul>
+  <li><code>functional/</code>
+  </li><li><code>integration/</code>
+  </li><li><code>performance/</code>
+  </li><li><code>power/</code>
+  </li><li><code>stress/</code>
+  </li><li><code>unit/</code>
+</li></ul>
+
+<h3 id="running_media_framework_tests">[  ] 7.1. 运行媒体框架测试</h3>
+
+<p>查看所有可用测试的命令如下:</p>
+
+<pre>
+$ adb shell pm list instrumentation
+</pre>
+
+<p>这将会产生类似以下信息的结果:</p>
+
+<pre>
+instrumentation:com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
+(target=com.android.mediaframeworktest)
+instrumentation:com.android.mediaframeworktest/.MediaRecorderStressTestRunner
+(target=com.android.mediaframeworktest)
+instrumentation:com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
+(target=com.android.mediaframeworktest)
+instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
+(target=com.android.mediaframeworktest)
+</pre>
+
+<p>从每个测试行中识别并提取组件(位于 <code>instrumentation:</code> 和 <code>(target=com.android.mediaframeworktest) </code>之间)。该组件包含目标文件包名称 (<code>com.android.mediaframeworktest</code>) 和测试运行器名称 (<code>MediaFramework<type>TestRunner</type></code>)。</p>
+
+<p>例如:</p>
+
+<pre>
+com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
+com.android.mediaframeworktest/.MediaRecorderStressTestRunner
+com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
+com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
+</pre>
+
+<p>然后,您可以将每个组件传递到 <code>adb shell am instrument</code>,如下所示:</p>
+
+<pre>
+$ adb shell am instrument -w &lt;component.name&gt;
+</pre>
+
+<p>其中 &lt;component.name&gt; 等同于上面提取的值。例如:</p>
+
+<pre>
+$ adb shell am instrument -w \
+com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
+</pre>
+
+<p>请注意,虽然类路径是 Java 文件包 + 类名称,但工具包不一定与 Java 文件包相同。连接组件名称时,请确保您使用的是 AndroidManifest.xml 文件包,而不是测试运行器类所在的 Java 文件包。</p>
+
+<p>要运行某一类测试,请传递 -e 类 <test-class> 参数,命令如下:</test-class></p>
+
+<pre>
+$ adb shell am instrument -e class \
+com.android.mediaframeworktest.integration.CameraBinderTest -w \
+com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
+</pre>
+
+<p>如果只运行某个测试类中的单个方法,请将井号 (#) 和方法名称(在本例中为 <code>testConnectPro</code>)附加到类名称,如下所示:</p>
+
+<pre>
+$ adb shell am instrument -e class \
+'com.android.mediaframeworktest.integration.CameraBinderTest#testConnectPro' -w
+\ com.android.mediaframeworktest/.MediaFrameworkIntegrationTestRunner
+</pre>
+
+<h3 id="media_settings_functional_tests">[  ] 7.2. 媒体设置功能测试</h3>
+
+<p>下面是一个运行功能测试的示例。该测试用于验证不同相机设置(即闪光灯、曝光、白平衡、场景、照片大小和地理标记)组合的基本功能。</p>
+
+<p>运行以下测试命令:</p>
+<pre>
+$ adb shell am instrument -w -r  -e delay_msec 15 -e log true -e class \
+com.android.mediaframeworktest.functional.camera.CameraPairwiseTest \
+com.android.mediaframeworktest/com.android.mediaframeworktest.CameraStressTestRunner
+</pre>
+
+<h3 id="media_integration_tests">[  ] 7.3. 媒体集成测试</h3>
+
+<p>下面是一个运行集成测试的示例,此例中包括 mediaframeworktest/integration/CameraBinderTest.java 和 mediaframeworktest/CameraStressTestRunner.java:</p>
+
+<pre>
+$ adb  shell am instrument -e class \ 'com.android.mediaframeworktest.<strong>integration</strong>.<strong>CameraBinderTest'</strong> -w \ 'com.android.mediaframeworktest/.<strong>CameraStressTestRunner'</strong>
+</pre>
+
+<p>如果成功通过测试,则会产生类似如下输出信息的结果:</p>
+
+<pre>
+-----
+
+com.android.mediaframeworktest.integration.CameraBinderTest:...........
+Test results for CameraStressTestRunner=...........
+Time: 3.328
+
+OK (11 tests)
+
+-----
+</pre>
+
+<h3 id="media_performance_tests">[  ] 7.4. 媒体性能测试</h3>
+
+<p>此预览存储空间测试将打开并释放 200 次相机预览。系统每隔 20 次迭代会记录一次 ps mediaserver 的快照,并且在 200 次迭代后比较存储空间使用量的差异。如果差异大于 150kM,则表明未通过测试。</p>
+
+<p>运行以下测试命令:</p>
+<pre>
+$ adb shell am instrument -w -r  -e class \
+com.android.mediaframeworktest.performance.MediaPlayerPerformance#testCameraPreviewMemoryUsage
+\ com.android.mediaframeworktest/.MediaFrameworkPerfTestRunner
+</pre>
+
+<p>更详细的输出信息位于以下路径:<code>/sdcard/mediaMemOutput.txt</code></p>
+
+<h3 id="media_unit_tests">[  ] 7.5. 媒体单元测试</h3>
+
+<p>用于执行单元测试的命令很相似。例如,对于 CameraMetadataTest.java,测试命令如下:</p>
+
+<pre>
+$ adb  shell am instrument -e class \
+'com.android.mediaframeworktest.unit.CameraMetadataTest' -w \
+'com.android.mediaframeworktest/.CameraStressTestRunner'
+</pre>
+
+<h3 id="media_stress_tests">[  ] 7.6. 媒体压力测试</h3>
+
+<p>该测试用于对相机进行拍照压力测试和视频录制压力测试。</p>
+
+<p>运行以下测试命令:</p>
+
+<pre>
+$ adb shell am instrument -w
+com.google.android.camera.tests/com.android.camera.stress.CameraStressTestRunner
+</pre>
+
+<p>您必须确保通过所有测试。</p>
+
+<h2 id="manual_testingcam_tests">[  ] 8. 手动 TestingCam 测试</h2>
+
+<p>您必须手动运行 TestingCam 应用并执行以下检查。TestingCam 的来源位于以下位置:<code>pdk/apps/TestingCamera/</code></p>
+
+<h3 id="infinity_focus_with_camera_tilt">[  ] 8.1. 利用相机倾斜度进行无限远聚焦</h3>
+
+<p>启动 TestingCam,打开预览,并确保将自动对焦模式设置为无限远。使用<strong>拍照</strong>按钮,给距离较远(至少 10 米距离)的对象拍摄照片,且相机方向为水平、向上(接近垂直)和向下(接近垂直);例如,向上拍摄可以是从下面拍摄大树高处的树叶/分枝,而向下拍摄则可以是从建筑物的顶部俯拍下面的街道。在所有情况下,距离较远的拍摄对象都必须成像清晰且对焦准确。保存并查看图库视图中的照片,以便您可以放大并且更轻松地检查锐度。</p>
+
+<p>请注意,对于具有 VCM 执行器的相机,要通过此测试,则需要使用闭环自动对焦控制系统,或者需要使用加速度计数据来确定相机方向,并据此进行一些 SW 校正。此外,还需要对镜头无限远位置进行可靠的工厂校准。</p>
+
+<h2 id="manual_testingcam2_tests">[  ] 9. 手动 TestingCam2 测试</h2>
+
+<p>您必须手动运行 TestingCam2 应用并执行以下检查。TestingCam2 的来源位于以下位置:<code>pdk/apps/TestingCamera2/</code></p>
+
+<h3 id="9_1_jpeg_capture">[  ] 9.1. JPEG 拍照</h3>
+
+<p>启动 TestingCam2,然后按 <strong>JPEG</strong> 按钮。显示在取景器图像右侧的图像应与取景器相同,包括具有一致的方向。</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/camera-its-box-assembly.html b/zh-cn/compatibility/cts/camera-its-box-assembly.html
new file mode 100644
index 0000000..00e096e
--- /dev/null
+++ b/zh-cn/compatibility/cts/camera-its-box-assembly.html
@@ -0,0 +1,166 @@
+<html devsite><head>
+    <title>组装盒装 ITS</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>盒装 ITS 包含一个根据计算机辅助设计 (CAD) 图纸进行激光切割的塑料盒、一部图表平板电脑和一部被测设备 (DUT)。本页提供了组装盒装 ITS 的分步说明。</p>
+
+<p><img src="images/camera_iab_cad.png"/></p>
+<p class="caption"><strong>图 1</strong>. 盒装 ITS 的 CAD 图纸。</p>
+
+<h2>所需工具</h2>
+<p>在开始之前,请确保您已<a href="camera_its_iab_tech_drawings.zip">下载盒装 ITS 的技术图纸</a>,并准备好以下工具:</p>
+<ul>
+<li>十字头螺丝刀</li>
+<li>钳子</li>
+<li>手持雕刻刀</li>
+<li>钢丝钳或剪刀(可选)</li>
+</ul>
+
+<h2 id="lighting">第 1 步:照明</h2>
+<p>组装盒装 ITS 照明组件:</p>
+
+<ol>
+<li>找到图 2 所示的照明硬件并放在一起:<br /><img src="images/camera_iab_light_assembly_parts.png" width="50%"/><br />
+<strong>图 2</strong>. 灯配件。<br /><br />
+硬件包括 LED 灯条、塑料挡光板、塑料灯座、LED 照明套件中包含的金属灯夹,以及四个 6-32 螺钉和盖形螺母。</li>
+<li>将 LED 灯条放在安装座上,使灯向下朝向桌子,如图 3(左侧)所示:<br /><img src="images/camera_iab_light_bar.png" width="50%"/><br />
+<strong>图 3</strong>. 灯条特写,灯朝下且螺钉已拧进灯夹。<br /><br />
+握住金属夹,同时使用螺丝刀将螺钉拧进灯夹。螺钉头应在灯夹 C 形区域的内侧,如图 3(右侧)所示。需要用力拧螺钉,以便紧密贴合。</li>
+<li>用螺栓将灯夹固定到塑料挡板上,如图 4 所示:<br /><img src="images/camera_iab_light_baffles.png" width="50%"/><br />
+<strong>图 4</strong>. 连接了灯夹的挡光板(盖形螺母在塑料板未显示的一侧)。</li>
+<li>用灯夹将挡板夹在 LED 灯背面,将灯装好。
+<br /><img src="images/camera_iab_light_assembled.png" width="50%"/><br />
+<strong>图 5</strong>. 组装好的灯。<br /><br />
+LED 灯应朝下,塑料板应形成灯的背板,以阻挡 LED 灯条背面的强烈反射光。</li>
+</ol>
+
+<h2 id="phone-mount">第 2 步:手机底座</h2>
+<p>组装手机底座:</p>
+
+<ol>
+<li>找到图 6 所示的手机底座硬件并放在一起:<br /><img src="images/camera_iab_phone_mount_parts.png" width="50%"/><br />
+<strong>图 6</strong>. 手机底座组装配件。<br /><br />
+硬件包括两个铝合金手机托架、两个柱塞、两个橡胶头和四个 8-32 盘头螺钉。</li>
+<li>将橡胶头切割得足够短,使其不会干扰柱塞工作(大致切割一半),然后使用橡胶头盖住柱塞。</li>
+<li>使用盘头螺钉组装手机底座,从而将柱塞装置固定在铝合金托架上。
+<br /><img src="images/camera_iab_phone_mount_assembled.png" width="50%"/><br />
+<strong>图 7</strong>. 组装好的手机底座。<br /><br />确保螺钉在柱塞收缩或延长时不会伸到柱塞之外。</li>
+</ol>
+
+<h2 id="phone-mount">第 3 步:孔板</h2>
+<p>组装前孔板:</p>
+<ol>
+<li>找到图 8 所示的前孔板硬件并放在一起:<br /><img src="images/camera_iab_front_plate_parts.png" width="50%"/><br />
+<strong>图 8</strong>. 前孔板组装配件(前板顶部从卡舌插槽到边缘的空间越来越窄)。<br /><br />
+硬件包括四个较短的尼龙螺钉(包含在盒装 ITS 工具包中)和八个垫圈(用于避免螺钉从塑料板的背面伸出来)。</li>
+<li>将手机底座安装到前侧方形孔板上,如图 9 所示:<br /><img src="images/camera_iab_front_plate_assembled.jpg" width="50%"/><br />
+<strong>图 9</strong>. 组装好的前板,手机底座位于中间位置。</li>
+</ol>
+
+<h2 id="tablet-holder">第 4 步:平板电脑固定支架</h2>
+<p>组装平板电脑固定支架:</p>
+
+<ol>
+<li>找到图 10 所示的平板电脑固定支架部件并放在一起:<br /><img src="images/camera_iab_tab_holder_parts.png" width="50%"/><br />
+<strong>图 10</strong>. 平板电脑固定支架隔离组装配件。</li>
+
+<li>将尼龙螺钉拧进平板电脑固定支架左下角或右下角的小孔内(仅沿一个方向正确拧紧螺钉),将间隔条连接到平板电脑固定支架的背面。</li>
+
+<li>在尼龙螺钉的相对侧安装间隔条,如图 11 所示:<br /><img src="images/camera_iab_tablet_spacer_detail.jpg" width="50%"/><br />
+<strong>图 11</strong>. 平板电脑固定支架,塑料间隔条和尼龙螺钉的位置。</li>
+
+<li>将螺钉头拧进反钻塑料中来组装平板电脑固定支架;然后组装剩余的部件,如图 12 所示。
+<br /><img src="images/camera_iab_tab_holder_spacer.png" width="50%"/><br />
+<strong>图 12</strong>. 组装好的平板电脑固定支架间隔件(垫圈用于调整不同厚度的塑料)。</li>
+
+<li>找到图 13 所示的平板电脑柱塞部件并放在一起:<br /><img src="images/camera_iab_plunger_parts.png" width="50%"/><br />
+<strong>图 13</strong>. 切割了塑料头的平板电脑柱塞部件(较新的设计在中心位置只有一个柱塞)。</li>
+
+<li>将塑料头切割为合适的长度,并用塑料头盖住柱塞头。</li>
+
+<li>将柱塞连接到塑料间隔条,将盖形螺母朝外,以确保平板电脑内部空隙最小(并防止干扰柱塞工作)。</li>
+
+<li>连接柱塞,螺钉头要朝向盒子,如图 14 所示:<br /><img src="images/camera_iab_tabholder_assembled.png" width="50%"/><br />
+<strong>图 14</strong>. 组装好的平板电脑固定支架(盖形螺母背向盒子的后板)。<br /><br />
+所有盖形螺母都位于平板电脑固定支架的同一侧,以最大限度增加平板电脑的空隙。</li>
+</ol>
+
+<h2 id="box-assembly">第 5 步:组装盒子</h2>
+<p>组装盒子:</p>
+<ol>
+<li>将具有圆形孔的前板平放在桌子上,内侧朝上。</li>
+<li>将卡舌插入插槽来连接前壁和后壁,如图 15 所示:<br /><img src="images/camera_iab_top_bottom_placed.png" width="50%"/><br />
+<strong>图 15</strong>. 顶板和底板已连接到前板(从右侧看)。<br /><br />
+放置好前板,使圆形孔的倒角侧在盒子的内侧。底板的正面可以通过电源线盒出口的小孔(不在视野内)来识别。侧面的塑料钩应指向相同的方向。</li>
+<li>将背板连接到顶板和底板,如图 16 所示:<br /><img src="images/camera_iab_back_no_sides.jpg" width="50%"/><br />
+<strong>图 16</strong>. 背板已连接,无侧板。<br /><br />
+推动背板使其卡入卡舌,然后将背板向右滑动(面向盒子背板时)以卡扣到钩形卡舌下。</li></ol>
+
+<h2 id="light-install">第 6 步:安装灯</h2>
+<p>安装灯:</p>
+<ol>
+<li>将灯放在组装好的盒子中,如图 17 所示:<br /><img src="images/camera_iab_light_installed.jpg" width="50%"/><br />
+<strong>图 17</strong>. 灯的正确放置方式(已拆下背板)。<br /><br />
+确保灯朝向正确的方向(朝向盒子的顶板和底板并朝向盒子的前板)。</li>
+<li>将销钉插入从顶板/底板插槽伸出的矩形卡舌上的小孔来固定灯,如图 18 所示:<br /><img src="images/camera_iab_pin_led_mount_details.png" width="50%"/><br />
+<strong>图 18</strong>. 在盒子外侧的 LED 灯安装卡舌中插入的销钉详图。<br /><br />
+最好使用两把钳子轻轻插入销钉;当销钉插入到位时,您应该感觉到塑料中有一点弹力。为底板和顶板上的灯组插入销钉。由于销钉很小且容易掉落,因此插入它们的最方便方法是将盒子倒置放置并插入底部。</li>
+<li>将电源线连接到下部灯条,如图 19 所示:<br /><img src="images/camera_iab_light_cord.jpg" width="50%"/><br />
+<strong>图 19</strong>. 照明电源线的详图。<br /><br />将电源线穿过前板右下方的孔。电源线两端具有不同的连接器:窄连接器对应 LED 灯条,较大的连接器对应电源适配器。</li>
+<li>为防止电源线拉动灯具组件,请使用束线带将电源线固定到盒子底板上,如图 20 所示:<br /><img src="images/camera_iab_light_cord_secured.jpg" width="50%"/><br />
+<strong>图 20</strong>. 盒子底板的电源线束线带(显示在其侧面);可根据需要修剪束线带。</li>
+<li>在左侧,将顶部灯连接到底部灯,并将电缆固定到盒子前板。一些图纸显示电缆固定在盒子的侧板,但是将它们连接到前板的角落处更加方便,如图 21 所示:<br /><img src="images/camera_iab_light_cord_zip.jpg" width="50%"/><br />
+<strong>图 21</strong>. 灯线详图,其固定位置在视野外。</li>
+</ol>
+
+<h2 id="sides-holder">第 7 步:安装侧板、平板电脑固定支架和手柄</h2>
+<p>安装盒子侧板、平板电脑固定支架和带锁定功能的手柄:</p>
+<ol>
+<li>推动右板并向上滑动,使其固定到位。平板的底部应与前板和后板的底部齐平,如图 22 所示:<br /><img src="images/camera_iab_right_side_placed.jpg" width="50%"/><br />
+<strong>图 22</strong>. 右侧板安装到位(后视图)。</li>
+<li>将组装好的平板电脑固定支架放在右侧卡舌中,如图 23 所示:<br /><img src="images/camera_iab_tabholder_inserted.jpg" width="50%"/><br />
+<strong>图 23</strong>. 右侧,平板电脑固定支架插入插槽(从盒子的背面看,因此它显示在左侧)。<br /><br />
+如果卡舌太紧,无法让平板电脑固定支架上下移动,请用 100 目的砂纸将卡舌磨得薄一些,使其更好地贴合。</li>
+<li>推动左侧板并向上滑动,使其固定到位,如图 24 所示:<br /><img src="images/camera_iab_left_side_placed.jpg" width="50%"/><br />
+<strong>图 24</strong>. 左侧板已固定好。</li>
+<li>找到图 25 所示的手柄部件并放在一起:<br /><img src="images/camera_iab_handle_parts.png" width="50%"/><br />
+<strong>图 25</strong>. 手柄及盒锁部件。<br /><br />
+硬件包括四个宽塑料件(用于盒子外部)和两个窄件(用于顶部)。螺钉孔在塑料条上的位置不对称。</li>
+<li>组装手柄,如图 26 所示:<br /><img src="images/camera_iab_handle_assembled.png" width="50%"/><br />
+<strong>图 26</strong>. 组装好的手柄。<br /><br />
+盖形螺母通常放在盒子的顶部。尽管这不是绝对必要的,但是这样可以使手柄的外部尽可能平坦。如果手柄有点松动,请插入垫圈使盖形螺母有效拧紧。
+</li>
+</ol>
+
+<h2 id="final-assembly">第 8 步:最终组装</h2>
+<p>进行盒装 ITS 的最终组装:</p>
+<ol>
+<li>使用两个尼龙螺钉(短或长)将带有手机底座的方形孔板装到盒子的正面,如图 27 所示:<br /><img src="images/camera_iab_front_attached.jpg" width="50%"/><br />
+<strong>图 27</strong>. 已装前板。<br /><br />
+将一个螺钉拧进盒子的顶板,将另一个螺钉拧进盒子的底板。</li>
+<li>检查 4"x4" 冲孔板孔的空白处,确保它与方形开口贴合,如图 28 所示:<br /><img src="images/camera_iab_gater_no_aperture.jpg" width="50%"/><br />
+<strong>图 28</strong>. 安装好的冲孔板,未切割孔。<br /><br />
+空白处应刚好贴合。如果太紧,则对其进行修剪;如果太松,则需再做一个。</li>
+<li>为相机切割孔。您可以切割一个孔(用于测试一部手机)或两个孔(用于测试两部手机)。Pixel 和 Pixel XL 前置摄像头和后置摄像头的孔如图 29 所示:<br /><img src="images/camera_iab_front_apertures.jpg" width="50%"/><br />
+<strong>图 29</strong>. 切割了前置摄像头孔和后置摄像头孔的盒装 ITS 的正面。<br /><br />
+前置摄像头对应的是圆形孔,因为没有闪光灯或激光器,而后置摄像头对应的是矩形孔,以免遮挡闪光灯和激光器。</li></ol>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/camera-its-box.html b/zh-cn/compatibility/cts/camera-its-box.html
new file mode 100644
index 0000000..70b62f4
--- /dev/null
+++ b/zh-cn/compatibility/cts/camera-its-box.html
@@ -0,0 +1,155 @@
+<html devsite><head>
+    <title>相机盒装 ITS</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>Android 相机图像测试套件 (ITS) 是 Android 兼容性测试套件 (CTS) 验证程序的一部分,并且包含可验证图像内容的测试。从 CTS 7.0_r8 开始,CTS 验证程序通过相机盒装 ITS 支持 ITS 测试自动化;而且继续支持手动测试以确保涵盖所有类型的 Android 设备。</p>
+
+<p>盒装 ITS 具有以下优势:</p>
+<ul>
+<li><strong>自动化</strong>。在测试期间不需要人为干预。</li>
+<li><strong>缩短测试时间</strong>。可以对前置/后置摄像头进行并行测试,将测试周期缩短了 50%。</li>
+<li><strong>问题排查更轻松</strong>。测试环境保持一致,减少了设置错误并提升了重现能力。</li>
+<li><strong>高效</strong>。能够针对单个相机/场景进行重试,提高了测试执行效率。</li>
+</ul>
+
+<h2 id="get-started">开始设置</h2>
+<p>盒装 ITS 包含一个通过计算机辅助设计 (CAD) 绘图进行激光切割的塑料盒、一部图表平板电脑和一部被测设备 (DUT)。开始使用相机盒装 ITS:</p>
+<ol>
+<li><a href="camera_its_iab_tech_drawings.zip">下载技术图纸</a>。</li>
+<li><a href="camera-its-box-assembly.html">组装盒子</a>。</li>
+<li>使用 CameraITS 软件<a href="#configure-tablet">配置平板电脑</a>。</li>
+<li><a href="#run-tests">运行测试</a>。</li>
+<li>从 DUT 中<a href="#get-results">获取结果</a>。</li>
+</ol>
+
+<h2 id="configure-tablet">配置平板电脑</h2>
+<p>本部分将分步说明如何设置 Pixel C 平板电脑以与 CameraITS 软件配合使用。</p>
+
+<p class="note"><strong>注意</strong>:CameraITS python 脚本会自动在平板电脑上为您设置以下选项:<br /><em>设置 &gt; 显示 &gt; 休眠 &gt; 无操作 30 分钟后</em>
+<br /><em>自动调节亮度 &gt; 关闭</em>
+</p>
+
+<ol>
+<li>为平板电脑接通电源并开机。如果系统提示您设置帐号,请跳过(CameraITS 不需要与平板电脑配对任何帐号)。</li>
+<li>将平板电脑更新为 Android 7.0 或更高版本(Android 6.x 及更早版本不支持 CameraITS)。</li>
+<li><em></em>通过依次转到“设置”&gt;“关于平板电脑”并点按<strong>版本号</strong>五次来启用开发者模式。</li>
+<li><em></em>返回“设置”并选择<strong>开发者选项</strong>。
+
+<table>
+<tbody><tr>
+<th>启用选项</th>
+<td>
+<ul>
+<li>开启</li>
+<li>不锁定屏幕</li>
+<li>USB 调试(这样可以允许主机在调试模式下运行平板电脑。首次将平板电脑连接到主机时,平板电脑会提示您“允许 USB 调试吗?”。如果平板电脑没有显示调试提示,请断开连接,然后重新连接平板电脑。)</li>
+</ul>
+</td>
+</tr>
+<tr>
+<th>停用选项</th>
+<td>
+<ul>
+<li>自动系统更新</li>
+<li>通过 USB 验证应用</li>
+</ul>
+</td>
+</tr>
+</tbody></table>
+</li>
+<li>通过运行 <code>$ adb devices</code> 列出可用设备来确定 DUT 和图表 ID。要确定 <code>device_id</code> 和 <code>chart_id</code>,请插上再拔下设备并观察连接和断开连接的设备。</li>
+<li>执行三次测试,以隐藏可能会遮盖平板电脑屏幕上的图表的提示和用户提示。
+<ol style="list-style-lower-alpha">
+<li>将平板电脑正面朝上放在桌子上(请勿将平板电脑连接到盒子的后板)</li>
+<li>运行以下命令:<pre>$ python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3</pre>场景 2 和 3 需要平板电脑来显示图像,因此平板电脑会提示您“允许云端硬盘访问您设备上的照片、媒体和文件吗?”。通过按<strong>允许</strong>清除此提示(并防止以后再次出现提示)。</li>
+<li>再次运行该命令。平板电脑会提示您“保留此文件的副本吗?”,并建议保存到 Google 云端硬盘。通过按“云端硬盘”图标,然后按<strong>取消</strong>上传到云端硬盘,清除此提示(并防止以后再次出现提示)。</li>
+<li>最后,运行 <code>tools/run_all_tests.py</code> 并确认当前场景会随着脚本循环自动变换为不同的场景。尽管大多数测试将失败(因为相机未指向图表),但您可以验证平板电脑是否正确地循环播放场景,而不会在屏幕上显示任何提示或其他弹出式窗口。</li></ol></li></ol>
+
+<h2 id="run-tests">运行测试</h2>
+<p>在运行盒装 ITS 之前,请确保您的测试设置包含以下硬件和软件:</p>
+<ul>
+<li>一 (1) 个盒装 ITS</li>
+<li>一 (1) 部用于显示场景的 Pixel C,序列号:5811000011</li>
+<li>两 (2) 个 DUT,它们使用相同的版本号指纹并安装了 CTS 验证程序 7.0_8+ 应用。DUT 示例:<ul>
+<li>一 (1) 部用于后置摄像头 (0) 测试的 Pixel NOF26W,序列号:FA6BM0305016。要安装 CTS 验证程序应用,请解压缩 android-cts-verifier.zip,然后运行<pre>$ adb -s FA6BM0305016 install -r android-cts-verifier/CtsVerifier.apk</pre></li>
+<li>一 (1) 部用于前置摄像头 (1) 测试的 Pixel NOF26W,序列号:FA6BM0305439。要安装 CTS 验证程序应用,请解压缩 android-cts-verifier.zip,然后运行<pre>$ adb -s FA6BM0305439 install -r android-cts-verifier/CtsVerifier.apk</pre></li>
+</ul>
+</li></ul>
+
+<h3 id="scenes-0-4">运行场景 0-4</h3>
+<p>对前置和后置摄像头并行运行场景 0-4:</p>
+<pre>$ cd android-cts-verifier/CameraITS
+$ . build/envsetup.sh
+$ python tools/run_parallel_tests.py device0=FA6BM0305016 device1=FA6BM0305439 chart=5811000011
+</pre>
+
+<p>示例:</p>
+<table>
+<tbody><tr>
+<td><img src="images/camera_its_cam0.png" align="center"/></td>
+<td align="center"><img src="images/camera_its_cam0.png"/></td>
+</tr>
+<tr>
+<td align="center"><p class="caption"><strong>图 1</strong>. 相机 0 序列号:FA6BM0305016</p>
+</td>
+<td align="center"><p class="caption"><strong>图 2</strong>. 相机 1 序列号:FA6BM0305439</p>
+</td>
+</tr>
+</tbody></table>
+
+<h3 id="retry-scenes">重试场景</h3>
+<p>您可以为前置和后置摄像头或单个摄像头重试场景:</p><ul>
+<li>对前置和后置摄像头并行重试场景:<pre>$ python tools/run_parallel_tests.py device0=FA6BM0305016 device1=FA6BM0305439 chart=5811000011 scenes=3,4</pre></li>
+<li>对单个摄像头重试场景:<pre>$ python tools/run_all_tests.py device=FA6BM0305016 chart=5811000011 camera=1 scenes=3,4</pre></li>
+</ul>
+
+<h3 id="scenes-0-4">运行场景 5</h3>
+<p>场景 5 需要进行特殊设置并具有特定光线(有关详情,请参阅 CTS 验证程序下载内容中的 CameraITS.pdf 文档)。您可以单独运行场景 5(在盒子外部)以并行测试两部设备。</p>
+<ul>
+<li>在两部设备上为前置和后置摄像头并行运行场景 5:<pre>$ python tools/run_parallel_tests.py device0=FA6BM0305016 device1=FA6BM0305439 chart=5811000011 scenes=5</pre>
+<br /><img src="images/camera_its_scene5.png" width="50%"/><br />
+<strong>图 3</strong>. 相机场景 5。</li>
+<li>在单部设备上为前置和后置摄像头运行场景 5:<pre>$ python tools/run_all_tests.py device=FA6BM0305016 camera=0 scenes=5
+$ python tools/run_all_tests.py device=FA6BM0305016 camera=1 scenes=5
+</pre></li>
+</ul>
+
+<h2 id="get-results">获取结果</h2>
+<p>您可以在测试期间查看结果,并将完成的结果另存为报告。
+</p>
+<ul>
+<li><strong>查看运行测试的进度</strong>。命令 <code>run_parallel_tests</code> 仅在相机场景测试完成后输出结果,因此要在执行测试期间查看结果,您必须使用 Android 设备监控器或 <code>adb logcat</code> 来验证进度和/或查看屏幕截图。<br />
+<br />adb 命令示例:<pre>$ adb -s FA6BM0305016 logcat -v time</pre>屏幕截图命令示例:<pre>$ adb -s FA6BM0305016 shell screencap -p /sdcard/screencap.png
+$ adb -s FA6BM0305016 pull /sdcard/screencap.png
+$ display ./screencap.png
+</pre></li>
+<li><strong>查看结果</strong>。将相机 ITS 结果另存为报告:<ol>
+<li>按<strong>通过</strong>并保存报告:<br /><img src="images/camera_its_results.png" width="50%"/><br />
+<strong>图 4</strong>. 相机 ITS 报告。</li>
+<li>从设备中提取报告:<pre>$ adb -s FA6BM0305016 pull /sdcard/verifierReports</pre></li>
+<li>解压缩报告文件并查看 test_result.xml。
+<br /><img src="images/camera_its_reports.png"/><br />
+<strong>图 5</strong>. 相机 ITS 报告。<br /></li>
+</ol>
+</li>
+</ul>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/development.html b/zh-cn/compatibility/cts/development.html
new file mode 100644
index 0000000..c4c154f
--- /dev/null
+++ b/zh-cn/compatibility/cts/development.html
@@ -0,0 +1,236 @@
+<html devsite><head>
+    <title>CTS 开发</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<h2 id="initializing-your-repo-client">初始化您的 Repo 客户端</h2>
+<p>在发出 <code>repo
+init</code> 命令时,按照相关<a href="/source/downloading.html">说明</a>进行操作以获取并构建 Android 源代码,但指定一个特定的 CTS 分支名称,例如 <code>-b android-5.0_r2</code>。这可确保您的 CTS 更改将包含在下一个及后续 CTS 版本中。</p>
+
+<h2 id="building-and-running-cts">构建和运行 CTS</h2>
+
+<p>执行以下命令以构建 CTS 并启动交互式 CTS 控制台:</p>
+<p class="note"><strong>注意</strong>:您可以为 <code>TARGET_PRODUCT</code> 提供以下其他值之一,以针对不同的架构进行构建:<code>aosp_x86_64</code> 或 <code>aosp_mips</code></p>
+<pre><code>cd <em>/path/to/android/root</em>
+make cts -j32 TARGET_PRODUCT=aosp_arm64
+cts-tradefed
+</code></pre>
+
+<p>例如,在 cts-tf 控制台中,输入:</p>
+<pre><code>run cts --plan CTS
+</code></pre>
+
+<h2 id="writing-cts-tests">编写 CTS 测试</h2>
+
+<p>CTS 测试使用 JUnit 和 Android 测试 API。请查看<a href="https://developer.android.com/tools/testing/testing_android.html">测试和工具</a>教程,同时仔细了解 <code>cts/tests</code> 目录下的现有测试。您会发现 CTS 测试大部分情况下都遵循其他 Android 测试中使用的相同规范。</p>
+
+<p>由于 CTS 会在多种正式版设备上运行,因此测试必须遵循以下规则:</p>
+<ul>
+<li>必须考虑到不同的屏幕尺寸、屏幕方向和键盘布局。</li>
+<li>只能使用公共 API 方法。也就是说,避免使用用“隐藏”注释进行注释的所有类、方法和字段。</li>
+<li>避免依赖于特定视图布局,或者依靠可能不在某些设备上提供的某些大小的资源。</li>
+<li>请勿依赖根权限。</li>
+</ul>
+
+<h3 id="test-naming-and-location">测试命名和位置</h3>
+
+<p>大多数 CTS 测试用例都针对 Android API 中的特定类。这些测试具有以 <code>cts</code> 为后缀的 Java 软件包名称和以 <code>Test</code> 为后缀的类名称。每个测试用例包含多个测试,其中每个测试通常会对所测试的类采用特定方法。这些测试被安排在一个目录结构中且分为不同的类别,例如“微件”和“视图”。</p>
+
+<p>例如,用于 Java 软件包 <code>android.widget.TextView</code> 的 CTS 测试为 <code>android.widget.cts.TextViewTest</code>,其 Java 软件包名称为 <code>android.widget.cts</code>,类名称为 <code>TextViewTest</code>。</p>
+
+<ul>
+<li><strong>Java 软件包名称</strong><br />CTS 测试的 Java 软件包名称是所测试的类的软件包名称,后跟“.cts”。对于我们的示例来说,软件包名称为 <code>android.widget.cts</code>。
+
+</li><li><strong>类名称</strong><br />CTS 测试的类名称是所测试的类<strong></strong>名称加上“Test”。(例如,如果测试以 <code>TextView</code> 为目标,则类名称应为 <code>TextViewTest</code>。)
+
+</li><li><strong>模块名称(仅 CTS v2)</strong><br />CTS v2 按模块对测试进行整理。模块名称通常是 Java 软件包名称的第二个字符串(在我们的示例中为 <code>widget</code>),虽然不一定非得如此。</li>
+</ul>
+
+<p>目录结构和示例代码取决于您使用的是 CTS v1 还是 CTS v2。
+</p>
+<h4 id="cts-v1">CTS v1</h4>
+<p>对于 Android 6.0 及更早版本,请使用 CTS v1。对于 CTS v1,示例代码位于 <code>cts/tests/tests/example</code> 中。
+</p>
+<p>CTS v1 测试中的目录结构如下所示:</p>
+<pre class="no-pretty-print">
+cts/
+  tests/
+    tests/
+      <em>package-name</em>/
+        Android.mk
+        AndroidManifest.xml
+        src/
+          android/
+            <em>package-name</em>/
+              SampleDeviceActivity.java
+              cts/
+                SampleDeviceTest.java
+</pre>
+<h4 id="cts-v2"><strong>CTS v2</strong></h4>
+<p>对于 Android 7.0 及更高版本,请使用 CTS v2。有关详情,请参阅 <a href="https://android.googlesource.com/platform/cts/+/master/tests/sample/">AOSP 中的示例测试</a>。</p>
+<p>CTS v2 目录结构如下所示:</p>
+
+<pre class="no-pretty-print">
+cts/
+  tests/
+    <em>module-name</em>/
+      Android.mk
+      AndroidManifest.xml
+      src/
+        android/
+          <em>package-name</em>/
+            SampleDeviceActivity.java
+            cts/
+              SampleDeviceTest.java
+</pre>
+
+<h3 id="new-sample-packages">新建示例软件包</h3>
+
+<p>添加新测试时,可能没有现有目录用来放置测试。在这种情况下,您需要创建目录并复制相应的示例文件。</p>
+
+<h4 id="cts-v1">CTS v1</h4>
+
+<p>如果您使用的是 CTS v1,请参阅 <code>cts/tests/tests/example</code> 下的示例并创建一个新目录。另外,请确保从其 <code>Android.mk</code> 中将新软件包的模块名称添加到 <code>cts/CtsTestCaseList.mk</code> 中的 <code>CTS_COVERAGE_TEST_CASE_LIST</code>。该 Makefile 由 <code>build/core/tasks/cts.mk</code> 用来将所有测试组合在一起以创建最终 CTS 软件包。</p>
+
+<h4 id="cts-v2">CTS v2</h4>
+<p>按照下列步骤操作,使用示例测试 <code><a href="https://android.googlesource.com/platform/cts/+/master/tests/sample/">/cts/tests/sample/</a></code> 快速启动新的测试模块:</p>
+
+<ol>
+  <li>运行以下命令来创建测试目录并将示例文件复制到该目录:<pre class="no-pretty-print">$ mkdir cts/tests/<i>module-name</i> &amp;&amp; cp -r cts/tests/sample/* cts/tests/<i>module-name</i></pre>
+  </li><li>转到 <code>cts/tests/<em>module-name</em></code>,然后按照上述建议的命名规范替换掉出现的所有“[Ss]ample”。
+  </li><li>更新 <code>SampleDeviceActivity</code> 以运行您要测试的功能。
+  </li><li>更新 <code>SampleDeviceTest</code> 以确保相关测试成功或记录错误日志。</li>
+</ol>
+
+<h4><strong>其他目录</strong></h4>
+
+<p>此外,还可以添加其他 Android 目录,如 <code>assets</code>、<code>jni</code>、<code>libs</code> 和 <code>res</code>。要添加 JNI 代码,请在项目根目录中的 <code>src</code> 旁创建一个目录,并将原生代码和 <code>Android.mk</code> 包含在其中。</p>
+
+<p>Makefile 通常包含以下设置:</p>
+<pre>
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+LOCAL_MODULE := libCtsSample_jni
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := <i>list of source code files</i>
+LOCAL_C_INCLUDES := $(JNI_H_INCLUDE)
+
+# Tag this module as a cts test artifact
+LOCAL_COMPATIBILITY_SUITE := cts
+LOCAL_SHARED_LIBRARIES := libnativehelper
+LOCAL_SDK_VERSION := current
+include $(BUILD_SHARED_LIBRARY)
+</pre>
+
+<h4>Android.mk 文件</h4>
+
+<p>最后,需要修改项目根目录中的 <code>Android.mk</code> 文件,以构建原生代码并依赖于该代码,如下所示:</p>
+
+<pre>
+# All tests should include android.test.runner.
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+# Includes the jni code as a shared library
+LOCAL_JNI_SHARED_LIBRARIES := libCtsSample_jni
+
+# Include for InstrumentationCtsTestRunner
+LOCAL_STATIC_JAVA_LIBRARIES := ctstestrunner...
+LOCAL_SDK_VERSION := currentinclude $(BUILD_CTS_PACKAGE)
+
+#Tells make to look in subdirectories for more make files to include
+include $(call all-makefiles-under,$(LOCAL_PATH))
+</pre>
+
+<h2 id="Fix-remove-tests">修复或移除测试</h2>
+<p>除了添加新测试外,还可以通过其他方法为 CTS 做出贡献:修复或移除具有“BrokenTest”或“KnownFailure”注释的测试。</p>
+
+<h2 id="submitting-your-changes">提交您的更改</h2>
+<p>按照<a href="/source/submit-patches.html">提交补丁程序工作流程</a>向 CTS 贡献更改。系统会为您的更改分配审核者,您的更改很快即会得到审核!</p>
+
+<h2 id="release-schedule">版本发布时间表和分支信息</h2>
+
+<p>CTS 版本发布遵循以下时间表。</p>
+
+<p class="note"><strong>注意</strong>:该时间表是暂定的,可能会随着给定 Android 版本 CTS 的正式发布而不时更新。</p>
+
+<table>
+<tbody><tr>
+  <th>版本</th>
+  <th>分支</th>
+  <th>频率</th>
+</tr>
+
+</tbody><tbody>
+<tr>
+  <td>7.0</td>
+    <td>nougat-cts-dev</td>
+      <td>每月</td>
+      </tr>
+<tr>
+  <td>6.0</td>
+  <td>marshmallow-cts-dev</td>
+  <td>每月</td>
+</tr>
+<tr>
+  <td>5.1</td>
+  <td>lollipop-mr1-cts-dev</td>
+  <td>每月</td>
+</tr>
+<tr>
+  <td>5.0</td>
+  <td>lollipop-cts-dev</td>
+  <td>无版本发布计划</td>
+</tr>
+<tr>
+  <td>4.4</td>
+  <td>kitkat-cts-dev</td>
+  <td>无版本发布计划</td>
+</tr>
+<tr>
+  <td>4.3</td>
+  <td>jb-mr2-cts-dev</td>
+  <td>无版本发布计划</td>
+</tr>
+<tr>
+  <td>4.2</td>
+  <td>jb-mr1.1-cts-dev</td>
+  <td>无版本发布计划</td>
+</tr>
+</tbody></table>
+
+<h3 id="important-dates">版本发布当月的重要日期</h3>
+
+<ul>
+  <li><strong>第一周的周末</strong>:代码冻结。此时,不再接受与当前分支有关的提交内容,并且提交内容不会包含在下一版本的 CTS 中。我们选择了候选版本后,分支将再次开放并接受新的提交内容。
+
+  </li><li><strong>第二周或第三周</strong>:在 Android 开放源代码项目 (AOSP) 中发布 CTS。
+</li></ul>
+
+<h3 id="auto-merge">自动合并流程</h3>
+
+<p>CTS 开发分支已设置,因此提交到每个分支的更改将自动合并,如下所示:<br />jb-dev-&gt; jb-mr1.1-cts-dev -&gt; jb-mr2-cts-dev  -&gt; kitkat-cts-dev -&gt;
+lollipop-cts-dev -&gt; lollipop-mr1-cts-dev -&gt; marshmallow-cts-dev -&gt;
+nougat-cts-dev -&gt; &lt;private-development-branch for Android N MR1&gt;</p>
+
+<p>如果变更列表 (CL) 未能正确合并,CL 的作者将收到一封电子邮件,其中包含有关如何解决冲突的说明。在大多数情况下,CL 作者可以通过这些说明来跳过存在冲突的 CL 的自动合并流程。</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/downloads.html b/zh-cn/compatibility/cts/downloads.html
new file mode 100644
index 0000000..3df3cf2
--- /dev/null
+++ b/zh-cn/compatibility/cts/downloads.html
@@ -0,0 +1,135 @@
+<html devsite><head>
+    <title>兼容性测试套件下载</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>感谢您对 Android 兼容性计划的关注!您可以通过以下链接访问关于该计划的重要文档和信息。随着 CTS 的更新,此网页上会陆续添加新的版本。CTS 版本在链接名称中由 R&lt;数字&gt; 表示。</p>
+
+<h2 id="android-71">Android 7.1</h2>
+<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r6”标记同步。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r6-linux_x86-arm.zip">Android 7.1 R6 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r6-linux_x86-x86.zip">Android 7.1 R6 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r6-linux_x86-arm.zip">Android 7.1 R6 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r6-linux_x86-x86.zip">Android 7.1 R6 CTS 验证程序 - x86</a></li>
+</ul>
+
+<h2 id="android-70">Android 7.0</h2>
+<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r10”标记同步。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r10-linux_x86-arm.zip">Android 7.0 R10 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r10-linux_x86-x86.zip">Android 7.0 R10 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r10-linux_x86-arm.zip">Android 7.0 R10 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r10-linux_x86-x86.zip">Android 7.0 R10 CTS 验证程序 - x86</a></li>
+</ul>
+
+<h2 id="android-60">Android 6.0</h2>
+<p>Android 6.0 是代号为 Marshmallow 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-6.0_r19”标记同步。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-6.0_r19-linux_x86-arm.zip">Android 6.0 R19 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-6.0_r19-linux_x86-x86.zip">Android 6.0 R19 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r19-linux_x86-arm.zip">Android 6.0 R19 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r19-linux_x86-x86.zip">Android 6.0 R19 CTS 验证程序 -  x86</a></li>
+</ul>
+
+<h2 id="android-51">Android 5.1</h2>
+<p>Android 5.1 是代号为 Lollipop-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-5.1_r20”标记同步。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.1_r20-linux_x86-arm.zip">Android 5.1 R20 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.1_r20-linux_x86-x86.zip">Android 5.1 R20 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r20-linux_x86-arm.zip">Android 5.1 R20 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r20-linux_x86-x86.zip">Android 5.1 R20 CTS 验证程序 - x86</a></li>
+</ul>
+
+<h2 id="android-50">Android 5.0</h2>
+<p>Android 5.0 是代号为 Lollipop 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-5.0_r9”标记同步。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.0_r9-linux_x86-arm.zip">Android 5.0 R9 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.0_r9-linux_x86-x86.zip">Android 5.0 R9 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.0_r9-linux_x86-arm.zip">Android 5.0 R9 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.0_r9-linux_x86-x86.zip">Android 5.0 R9 CTS 验证程序 - x86</a></li>
+</ul>
+
+<h2 id="android-44">Android 4.4</h2>
+<p>Android 4.4 是代号为 KitKat 的开发里程碑版本。Android 4.4 的源代码位于开放源代码树中的“android-cts-4.4_r4”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-4.4_r4-linux_x86-arm.zip">Android 4.4 R4 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-4.4_r4-linux_x86-x86.zip">Android 4.4 R4 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-4.4_r4-linux_x86-arm.zip">Android 4.4 R4 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-4.4_r4-linux_x86-x86.zip">Android 4.4 R4 CTS 验证程序 - x86</a></li>
+</ul>
+
+<h2 id="android-43">Android 4.3</h2>
+<p>Android 4.3 是代号为 Jelly Bean-MR2 的开发里程碑版本。Android 4.3 的源代码位于开放源代码树中的“android-4.3_r2.2-cts”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-4.3_r2-linux_x86-arm.zip">Android 4.3 R2 兼容性测试套件 (CTS)</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-4.3_r1-linux_x86-arm.zip">Android 4.3 R1 CTS 验证程序</a></li>
+</ul>
+
+<h2 id="android-42">Android 4.2</h2>
+<p>Android 4.2 是代号为 Jelly Bean-MR1 的开发里程碑版本。Android 4.2 的源代码位于开放源码树中的“android-4.2.2_r1”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-4.2_r4-linux_x86-arm.zip">Android 4.2 R4 兼容性测试套件 (CTS)</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-4.2_r5-linux_x86-arm.zip">Android 4.2 R5 CTS 验证程序</a></li>
+</ul>
+<h2 id="android-41">Android 4.1</h2>
+<p>Android 4.1 是代码为 Jelly Bean 的开发里程碑版本。以下兼容性测试套件修订版的源代码位于开放源代码树中的“android-cts-4.1_r4”标记中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-4.1_r4-linux_x86-arm.zip">Android 4.1 R4 兼容性测试套件 (CTS)</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-4.1_r7-linux_x86-arm.zip">Android 4.1 R7 CTS 验证程序</a></li>
+</ul>
+<h2 id="android-403">Android 4.0.3</h2>
+<p>Android 4.0.3 是代号为 Ice Cream Sandwich 的开发里程碑版本。Android 4.0.3 的源代码位于开放源码树中的“android-4.0.3_r1”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-4.0.3_r3-linux_x86-arm.zip">Android 4.0.3 R3 兼容性测试套件 (CTS)</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-4.0.3_r2-linux_x86-arm.zip">Android 4.0.3 R2 CTS 验证程序</a></li>
+</ul>
+<h2 id="android-23">Android 2.3</h2>
+<p>Android 2.3 是代号为 Gingerbread 的开发里程碑版本。Android 2.3 的源代码位于开放源码树中的“gingerbread”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-2.3_r13-linux_x86-arm.zip">Android 2.3 R13 兼容性测试套件 (CTS)</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-2.3_r3-linux_x86-armv5.zip">Android 2.3 R3 CTS 验证程序</a></li>
+</ul>
+<h2 id="android-22">Android 2.2</h2>
+<p>Android 2.2 是代号为 FroYo 的开发里程碑版本。Android 2.2 的源代码位于开放源码树中的“froyo”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-2.2_r8-linux_x86-arm.zip">Android 2.2 R8 兼容性测试套件 (CTS)</a></li>
+</ul>
+<h2 id="android-21">Android 2.1</h2>
+<p>Android 2.1 是代号为 Eclair 的开发里程碑版本。Android 2.1 的源代码位于开放源码树中的“eclair”分支中。请注意,由于技术原因,我们尚未推出针对 Android 2.0 或 2.0.1 的兼容性计划,因此新设备必须使用 Android 2.1。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-2.1_r5-x86.zip">Android 2.1 R5 兼容性测试套件 (CTS)</a></li>
+</ul>
+<h2 id="android-16">Android 1.6</h2>
+<p>Android 1.6 是代号为 Donut 的开发里程碑版本。Android 1.6 已被 Android 2.1 淘汰。Android 1.6 的源代码位于开放源码树中的“donut”分支中。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-1.6_r1-x86.zip">Android 1.6 R1 兼容性测试套件 (CTS)</a></li>
+</ul>
+<h2 id="cts-media-files">CTS 媒体文件</h2>
+<p>以下媒体文件是进行 CTS 媒体压力测试所必需的。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-media-1.2.zip">CTS 媒体 1.2</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-media-1.1.zip">CTS 媒体 1.1</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-media-1.0.zip">CTS 媒体 1.0</a></li>
+</ul>
+<h2 id="older-android-versions">更早的 Android 版本</h2>
+<p>我们尚未推出针对更早 Android 版本(例如 Android 1.5,在开发过程中称为 Cupcake)的兼容性计划。新设备要想与 Android 兼容,必须搭载 Android 1.6 或更高版本。</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/index.html b/zh-cn/compatibility/cts/index.html
new file mode 100644
index 0000000..3a0a81b
--- /dev/null
+++ b/zh-cn/compatibility/cts/index.html
@@ -0,0 +1,122 @@
+<html devsite><head>
+    <title>兼容性测试套件</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<h2 id="how-does-the-cts-work">CTS 的工作原理是什么?</h2>
+
+<p>兼容性测试套件 (CTS) 是一个免费的商业级测试套件,可在<a href="downloads.html">此处下载</a>。CTS 代表兼容性的“机制”。</p>
+
+<p>CTS 在桌面设备上运行,并直接在连接的设备或模拟器上执行测试用例。CTS 是一套单元测试,旨在集成到工程师构建设备的日常工作流程(例如通过连续构建系统)中。其目的是尽早发现不兼容性,并确保软件在整个开发过程中保持兼容性。</p>
+
+<p>CTS 是一个自动化测试工具,其中包括两个主要软件组件:</p>
+<ul>
+<li>
+<p>CTS tradefed 自动化测试框架会在桌面设备上运行,并管理测试执行情况。</p>
+</li>
+<li>
+<p>单独的测试用例会在被测设备 (DUT) 上执行。测试用例采用 Java 语言编写为 JUnit 测试,并打包为 Android .apk 文件,以在实际目标设备上运行。</p>
+</li>
+</ul>
+
+<p>兼容性测试套件验证程序(CTS 验证程序)是对 CTS(可在<a href="downloads.html">此处下载</a>)的补充。CTS 验证程序为无法在没有手动输入(例如音频质量、加速度计等)的固定设备上进行测试的 API 和功能提供测试。</p>
+
+<p>CTS 验证程序是一款手动测试工具,包含以下软件组件:</p>
+<ul>
+<li>
+<p>在 DUT 上执行并收集结果的 CTS 验证程序应用。</p><p>
+</p></li>
+<li>
+<p>在桌面设备上执行,以便为 CTS 验证程序应用中的某些测试用例提供数据或额外控制的可执行文件或脚本。</p>
+</li>
+</ul>
+
+<h2 id="workflow">工作流程</h2>
+
+<div class="attempt-right" style="width:383px">
+  <img src="images/cts-0.png" alt="CTS 流程" height="340px" id="figure1"/>
+  <p class="img-caption">
+    <strong>图 1.</strong> 如何使用 CTS
+  </p>
+</div>
+
+<p>上图总结了 CTS 工作流程。有关详细说明,请参阅本部分的子页面(从<a href="setup.html">设置</a>开始)。</p>
+
+<h2 id="types-of-test-cases">测试用例的类型</h2>
+<p>CTS 包含以下类型的测试用例:</p>
+<ul>
+<li>
+<p><em></em>单元测试会测试 Android 平台中很微小的代码元素;例如 java.util.HashMap 等单个类。</p>
+</li>
+<li>
+<p><em></em>功能测试会通过较高级别的用例将 API 组合到一起进行测试。</p>
+</li>
+</ul>
+<p>CTS 的未来版本将包含以下类型的测试用例:</p>
+<ul>
+<li>
+<p><em></em>稳健性测试会测试系统在压力下的耐久性。</p>
+</li>
+<li>
+<p><em></em>性能测试会根据定义的基准测试系统的性能,例如每秒渲染帧数。</p>
+</li>
+</ul>
+<h2 id="areas-covered">涵盖的领域</h2>
+<p>单元测试用例涵盖以下领域,以确保兼容性:</p>
+<table>
+<thead>
+<tr>
+<th>领域</th>
+<th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>签名测试</td>
+<td>对于每个 Android 版本,都存在用于描述这一版本中所含的所有公开 API 签名的 XML 文件。CTS 包含一个实用工具,用于根据设备上可用的 API 检查这些 API 签名。签名检查的结果会记录在测试结果 XML 文件中。</td>
+</tr>
+<tr>
+<td>平台 API 测试</td>
+<td>按照 SDK <a href="https://developer.android.com/reference/classes.html">类索引</a>所述测试平台(核心库和 Android 应用框架)API,以确保 API 的正确性,包括正确的类、属性和方法签名以及正确的方法行为;此外执行负面测试,以确保不正确的参数处理产生预期行为。</td>
+</tr>
+<tr>
+<td>Dalvik 测试</td>
+<td>这类测试侧重于测试 Dalvik 可执行格式的文件。</td>
+</tr>
+<tr>
+<td>平台数据模型</td>
+<td>CTS 会按照 SDK <a href="https://developer.android.com/reference/android/provider/package-summary.html">android.provider</a> 软件包中所述测试通过内容提供程序提供给应用开发者的核心平台数据模型:通讯录、浏览器、设置等。</td>
+</tr>
+<tr>
+<td>平台 Intent</td>
+<td>CTS 会按照 SDK <a href="https://developer.android.com/guide/appendix/g-app-intents.html">可用 Intent</a> 中所述测试核心平台 Intent。</td>
+</tr>
+<tr>
+<td>平台权限</td>
+<td>CTS 会按照 SDK <a href="https://developer.android.com/reference/android/Manifest.permission.html">可用权限</a>中所述测试核心平台权限。</td>
+</tr>
+<tr>
+<td>平台资源</td>
+<td>CTS 会按照 SDK <a href="https://developer.android.com/guide/topics/resources/available-resources.html">可用资源类型</a>中所述进行测试以正确处理核心类型的平台资源。这包括对以下资源的测试:简单值、可绘制资源、九宫文件、动画、布局、样式和主题背景,以及加载备用资源。</td>
+</tr>
+</tbody>
+</table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/interpret.html b/zh-cn/compatibility/cts/interpret.html
new file mode 100644
index 0000000..6f69cfb
--- /dev/null
+++ b/zh-cn/compatibility/cts/interpret.html
@@ -0,0 +1,91 @@
+<html devsite><head>
+    <title>解读 CTS 结果</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>CTS 测试结果位于以下文件中:</p>
+<pre>
+$CTS_ROOT/android-cts/repository/results/&lt;start_time&gt;.zip
+</pre>
+
+<p>如果您自行编译了 CTS,则 <em>$CTS_ROOT</em> 将类似于路径 <em>out/host/linux-x86/cts</em>(但会因平台而异)。该路径即是您解压缩从此网站<a href="downloads.html">下载</a>的预编译官方 CTS 文件时所使用的路径。</p>
+
+<p>在 zip 压缩包中,testResult.xml 文件会包含实际的结果。在任何网络浏览器(推荐使用与 HTML 5 技术兼容的浏览器)中打开此文件,即可查看测试结果。</p>
+
+<p>使用 Chrome 浏览器时,如果 testResult.xml 显示空白页面,请<a href="https://www.chromium.org/developers/how-tos/run-chromium-with-flags">更改浏览器配置</a>以启用 <em>--allow-file-access-from-files</em> 命令行标记。</p>
+
+<h3 id="reading-the-test-results">阅读测试结果</h3>
+
+<p>测试结果的详细信息取决于您目前使用的 CTS 版本:</p>
+
+<ul>
+  <li>CTS v1 适用于 Android 6.0 及更早版本</li><li>CTS v2 适用于 Android 7.0 及更高版本</li></ul>
+
+<p class="note"><strong>注意:</strong>所提供的结果旨在帮助您确保软件在整个开发过程中一直是兼容的,并且可作为通用格式来说明您的设备与其他方的兼容性状态。</p>
+
+<h4 id="device-information">设备信息</h4>
+
+<p>在 CTS v6.0 及更早版本中,选择“Device Information”(“Test Summary”上方的链接)可查看关于设备、固件(品牌、型号、固件版本号、平台)和设备硬件(屏幕分辨率、键盘、屏幕类型)的详细信息(CTS v7.0 不显示设备信息)。</p>
+
+<h4 id="test-summary">测试摘要</h4>
+
+<p>“<em>Test Summary</em>”部分可提供已执行的测试计划的详细信息,例如 CTS 计划名称以及执行开始时间和结束时间。该部分还会提供通过、失败、超时或无法执行的测试数量的汇总摘要。</p>
+
+  <section class="expandable">
+    <h4 class="showalways">显示 CTS v1 测试摘要示例</h4>
+    <img src="images/cts-test-summary.png" alt="CTS v1 测试摘要" id="figure1a"/>
+    <p class="img-caption"><strong>图 1a.</strong> CTS v1 测试摘要示例</p>
+  </section>
+
+  <section class="expandable">
+    <h4 class="showalways">显示 CTS v2 测试摘要示例</h4>
+    <img src="images/cts-v2-test-summary.png" alt="CTS v2 测试摘要" id="figure1b"/>
+    <p class="img-caption"><strong>图 1b.</strong> CTS v2 测试摘要示例</p>
+  </section>
+
+<p> </p>
+
+<h4 id="test-report">测试报告</h4>
+<p>下一部分为 CTS 测试报告,它会以文件包的形式提供已通过的测试的摘要。</p>
+
+<p>接下来是所执行的实际测试的详细信息。该报告会列出测试包、测试套件、测试用例和执行的测试。它会显示以下测试执行结果:通过、失败、超时或未执行。如果测试失败,则该报告会提供详细信息以供诊断原因。</p>
+
+<p>此外,为了确保简洁性,故障的堆栈跟踪信息会包含在 XML 文件中,而不会包含在报告;使用文本编辑器查看 XML 文件可了解有关测试失败的详细信息(搜索与失败的测试对应的 <em>&lt;Test&gt;</em> 标记,并在其中查找 <em>&lt;StackTrace&gt;</em> 标记)。</p>
+
+  <section class="expandable">
+    <h4 class="showalways">显示 CTS v1 测试报告示例</h4>
+    <img src="images/cts-test-report.png" alt="CTS v1 测试报告" id="figure2a"/>
+    <p class="img-caption"><strong>图 2a.</strong> CTS v1 测试报告示例</p>
+  </section>
+
+  <section class="expandable">
+    <h4 class="showalways">显示 CTS v2 测试报告示例</h4>
+    <img src="images/cts-v2-test-report.png" alt="CTS v2 测试报告" id="figure2b"/>
+    <p class="img-caption"><strong>图 2b.</strong> CTS v2 测试报告示例</p>
+  </section>
+
+<p> </p>
+
+<h3 id="incomplete-test-modules">查看 test_result.xml 以了解未完成的测试模块</h3>
+
+<p>要确定某个测试会话中的未完成模块数量,请运行命令“list results”。系统会列出之前每个会话的“已完成模块数量”和“模块总数量”。要确定哪些模块已完成,哪些模块未完成,请打开 test_result.xml 文件,并读取结果报告中每个模块的“done”属性的值。“done”值为 false 表示模块尚未完成运行。
+</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/near-ultrasound.html b/zh-cn/compatibility/cts/near-ultrasound.html
new file mode 100644
index 0000000..cea4c56
--- /dev/null
+++ b/zh-cn/compatibility/cts/near-ultrasound.html
@@ -0,0 +1,137 @@
+<html devsite><head>
+    <title>近超声测试</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>本文档包含执行近超声(以前称为高保真超声)麦克风和扬声器测试的步骤。请参阅<a href="/devices/audio/index.html">音频</a>部分,了解常规音频实施说明。</p>
+
+<h2 id="ultrasound_microphone_tests">近超声麦克风测试</h2>
+
+<p>准备工作:准备两台设备,一台用作测试设备,另一台用作参照设备。参照设备可以是 Nexus 6、Nexus 5,或是任何您确定能产生近超声波声音的设备。</p>
+<table>
+ <tbody><tr>
+    <td width="50%">步骤 1:在两台设备上打开近超声麦克风测试</td>
+    <td width="50%"></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near1.png" alt="麦克风步骤 1, 测试设备" width="300" id="mic_step1_test_device"/><br />测试设备</td>
+    <td><img src="images/Near2.png" alt="麦克风步骤 1, 参照设备" width="300" id="mic_step1_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 2:打开测试后,按下测试设备上的“RECORD”,然后快速按下参照设备上的“PLAY”。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near3.png" alt="麦克风步骤 2, 测试设备" width="300" id="mic_step2_test_device"/><br />测试设备</td>
+    <td><img src="images/Near4.png" alt="麦克风步骤 2, 参照设备" width="300" id="mic_step2_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 3:等待测试完成。在等待期间,设备上的显示画面应类似于下面的屏幕截图。在看到步骤 4 中显示的屏幕画面之前,请勿执行任何操作。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near5.png" alt="麦克风步骤 3, 测试设备" width="300" id="mic_step3_test_device"/><br />测试设备</td>
+    <td><img src="images/Near6.png" alt="麦克风步骤 3, 参照设备" width="300" id="mic_step3_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 4a:在测试设备上,如果显示文本 PASS,那么您可以通过按绿色按钮报告测试已通过。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near7.png" alt="麦克风步骤 4a, 测试设备" width="300" id="mic_step4a_test_device"/><br />测试设备</td>
+    <td><img src="images/Near8.png" alt="麦克风步骤 4a, 参照设备" width="300" id="mic_step4a_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 4b:在测试设备上,如果显示文本 FAIL,那么您可以通过按红色按钮报告测试未通过。然后,您可以根据需要从步骤 1 开始重复操作,重新再测试一次。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near9.png" alt="麦克风步骤 4b, 测试设备" width="300" id="mic_step4b_test_device"/><br />测试设备</td>
+    <td><img src="images/Near10.png" alt="麦克风步骤 4b, 参照设备" width="300" id="mic_step4b_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>额外步骤:此步骤不是必须执行的步骤。您可以使用测试设备上的“PLOT”按钮绘制计算的响应。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near11.png" alt="麦克风额外步骤 1, 测试设备" width="300" id="mic_extrastep1_test_device"/><img src="images/Near12.png" alt="麦克风额外步骤 2, 测试设备" width="300" id="mic_extrastep2_test_device"/><br />测试设备</td>
+    <td><br />参照设备不适用</td>
+ </tr>
+</tbody></table>
+
+<h2 id="ultrasound_speaker_tests">近超声扬声器测试</h2>
+
+<p>准备工作:准备两台设备,一台用作测试设备,另一台用作参照设备。参照设备可以是 Nexus 6、Nexus 5,或是任何您确定能记录近超声波的设备。</p>
+<table>
+ <tbody><tr>
+    <td width="50%">步骤 1:在两台设备上打开近超声扬声器测试</td>
+    <td width="50%"></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near13.png" alt="扬声器步骤 1, 测试设备" width="300" id="speaker_step1_test_device"/><br />测试设备</td>
+    <td><img src="images/Near14.png" alt="扬声器步骤 1, 参照设备" width="300" id="speaker_step1_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 2:打开测试后,按参照设备上的“RECORD”,然后快速按测试设备上的“PLAY”。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near15.png" alt="扬声器步骤 2, 测试设备" width="300" id="speaker_step2_test_device"/><br />测试设备</td>
+    <td><img src="images/Near16.png" alt="扬声器步骤 2, 参照设备" width="300" id="speaker_step2_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 3:等待测试完成。在等待期间,设备上的显示画面应类似于下面的屏幕截图。在看到步骤 4 中显示的屏幕画面之前,请勿执行任何操作。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near17.png" alt="扬声器步骤 3, 测试设备" width="300" id="speaker_step3_test_device"/><br />测试设备</td>
+    <td><img src="images/Near18.png" alt="扬声器步骤 3, 参照设备" width="300" id="speaker_step3_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 4:当您在参照设备上看到弹出窗口时,在测试设备上按“OK”。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near19.png" alt="扬声器步骤 4, 测试设备" width="300" id="speaker_step4_test_device"/><br />测试设备</td>
+    <td><img src="images/Near20.png" alt="扬声器步骤 4, 参照设备" width="300" id="speaker_step4_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 5a:在参照设备上,如果显示文本“PASS”,您可以通过在测试设备上按绿色按钮报告测试已通过。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near21.png" alt="扬声器步骤 5a, 测试设备" width="300" id="speaker_step5a_test_device"/><br />测试设备</td>
+    <td><img src="images/Near22.png" alt="扬声器步骤 5a, 参照设备" width="300" id="speaker_step5a_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>步骤 5b:在参照设备上,如果显示文本“FAIL”,您可以通过在测试设备上按红色按钮报告测试未通过。然后,您可以根据需要从步骤 1 开始重复操作,重新再测试一次。</td>
+    <td></td>
+ </tr>
+ <tr>
+    <td><img src="images/Near23.png" alt="扬声器步骤 5b, 测试设备" width="300" id="speaker_step5b_test_device"/><br />测试设备</td>
+    <td><img src="images/Near24.png" alt="扬声器步骤 5b, 参照设备" width="300" id="speaker_step5b_ref_device"/><br />参照设备</td>
+ </tr>
+ <tr>
+    <td>额外步骤:此步骤不是必须执行的步骤。您可以使用参照设备上的“PLOT”按钮绘制计算的响应。请参阅有关近超声麦克风测试的说明。</td>
+    <td></td>
+ </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/rotation-vector.html b/zh-cn/compatibility/cts/rotation-vector.html
new file mode 100644
index 0000000..62de812
--- /dev/null
+++ b/zh-cn/compatibility/cts/rotation-vector.html
@@ -0,0 +1,105 @@
+<html devsite><head>
+    <title>旋转矢量 CV 交叉检验</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<div class="attempt-right" style="width:214px">
+  <img src="images/acircles_pattern_reduced.png" alt="测试图案缩略图" height="166"/>
+  <p class="img-caption">
+    <strong>图 1.</strong> 测试图案的缩略图。请下载上面给出链接的完整分辨率图片。
+  </p>
+</div>
+<p>本页面讲述了对<a href="https://source.android.com/devices/sensors/sensor-types.html#rotation_vector">旋转矢量传感器</a>实现的兼容性进行正确测试的步骤。如果设备声明具有 TYPE_ROTATION_VECTOR 复合传感器功能,则应该运行该测试。要了解更多详情,请观看此<a href="https://www.youtube.com/watch?v=MsDVmsH1PaI">视频教程</a>。</p>
+
+<h2 id="testing">测试</h2>
+
+<ol>
+  <li>在接受测试的 Android 设备上安装 OpenCV Manager。
+  </li><li>从 <a href="https://sourceforge.net/projects/opencvlibrary/files/opencv-android/3.0.0">SourceForge.net</a> 下载 <code>OpenCV-3.0.0-android-sdk.zip</code> 软件包。
+  </li><li>从下载内容中的 <code>apk</code> 文件夹中查找相关 APK。有关从计算机中将 APK 加载到 Android 设备的命令,请参阅<a href="http://developer.android.com/tools/help/adb.html#move">安装应用</a>。
+  </li><li>如果存在登录到 Google Play 的有效帐号,则同时在 Google Play 中找到 OpenCV Manager,并在上下文菜单(“...”按钮触发的弹出菜单)中停用自动更新。<em></em>
+  <img src="images/openvc-play.png" alt="停用 OpenCV Manager 自动更新" height="533" id="disable-opencv"/>
+  <p class="img-caption">
+    <strong>图 2.</strong> 在 Google Play 中停用自动更新。
+  </p>
+  </li><li>打印链接的<a href="images/acircles_pattern.pdf">测试图案</a>,并在打印时停用任何缩放选项。横向的 US Letter 纸张应该可以完整打印出该图案,您也可以使用更大尺寸的纸张打印。
+<p class="note"><strong>注意</strong>:上面正文中的图片分辨率较低,仅用于说明。请勿直接将其作为图案进行打印。</p>
+  </li><li>将该图案放在水平面上。
+  </li><li>在 CTS 验证程序应用中开始<strong>旋转矢量 CV 交叉检验</strong>。按照下面的指南开启飞行模式,关闭自动屏幕旋转,并调整自动调节亮度和位置信息(如果尚未进行这些更改)。<br />
+  <img src="images/RVCVXCheck_start.png" alt="测试开始" height="533" id="test-start"/>
+  <p class="img-caption">
+    <strong>图 3.</strong> 启动测试。
+  </p>
+  </li><li>当视频预览出现时,将手机放置在图案上方三英尺(或一米)处,使主摄像头朝向图案且屏幕上的黄色标记与图案上的黄色标记在同一角落对齐。<br />
+<img src="images/RVCVXCheck_down.png" alt="放置测试图案" height="207" id="test-pattern-placement"/>
+  <p class="img-caption">
+    <strong>图 4.</strong> 放置测试图案。
+  </p>
+  </li><li>使图案一直完全位于摄像头的取景范围内,同时围绕图案以三个不同的方向旋转 Android 被测设备 (DUT):按照旋转范围指示图的提示,逐个方向进行旋转(1、2,然后是 3,如下图所示)。请保持平稳移动,以达到最佳效果。<br />
+  <img src="images/RVCVXCheck_flow.png" alt="设备移动操作" height="426" id="device-movement"/>
+  <p class="img-caption">
+    <strong>图 5.</strong> 操控被测设备。
+  </p>
+  </li><li>拍照后,摄像头预览将消失,且分析过程将开始。耐心等待分析完成;该过程通常需要一到五分钟,具体取决于手机的性能。分析完成后,手机会发出提示音并振动。如果分析成功,屏幕上会出现数值结果。<br />
+  <img src="images/RVCVXCheck_next.png" alt="测试完成" height="533" id="test-complete"/>
+  <p class="img-caption">
+    <strong>图 6.</strong> 完成测试。
+  </p>
+  </li><li>点击 <strong>NEXT</strong> 以转到通过/失败屏幕并查看结果。<br />
+  <img src="images/RVCVXCheck_pass.png" alt="测试成功" height="533" id="test-success"/>
+  <p class="img-caption">
+    <strong>图 7.</strong> 通过测试。
+  </p>
+</li><li>按照以下提示进行操作以获得最佳效果:
+  <ol>
+    <li>这是一个比较复杂的手动测试,因此您可能需要尝试多次以获得最佳效果。
+    </li><li>测试之前,应对加速度计、陀螺仪和磁力计进行校准,以获得良好效果。
+    </li><li>要了解更多详情,请观看此<a href="https://www.youtube.com/watch?v=MsDVmsH1PaI">视频教程</a>。
+  </li></ol>
+</li></ol>
+
+<h2 id="troubleshooting">问题排查</h2>
+  <ol>
+    <li>症状:启动测试用例时或视频录制刚刚完成后测试就崩溃了。<br />
+	原因:可能存在 OpenCV Manager 兼容性问题。请检查 <code>logcat</code> 以进行确认。如果确认是兼容性问题,则检查安装的 OpenCV Manager 的版本和架构。
+    </li><li>症状:由于出现“太多无效帧”错误,测试频繁失败。<br />
+        原因:可能是由于视频质量较低所致。请确认以下条件:
+      <ol>
+        <li>有足够的环境光用于测试。自然光线通常能实现最佳效果。但是,如果没有自然光线,来自多个角度且不会形成明显阴影的丰富光线也可达到效果。避免低角度光线,以减少眩光。
+        </li><li>在视频拍摄期间动作应保持平稳。抖动会导致画面变模糊,并使计算机视觉软件产生混淆。
+        </li><li>图案应始终完全位于视频预览范围内,并位于中心附近。图案的大小应为视频预览窗口大小的 1/4 〜 1/2。如果图案太小,则准确度会降低。如果图案太大,则镜头失真会更加明显,而且更难于将图案始终保持在视频录制取景范围内。
+        </li><li>摄像头能够很好地聚焦。某些设备在视频录制过程中难以聚焦。这通常是由于场景变化太少,例如纯色的光滑地板表面。通常,将测试图案移到具有纹理表面的位置或在测试图案周围放置物品可帮助解决该问题。
+        </li><li>防抖功能已关闭。
+      </li></ol>
+    </li><li>症状:Pitch 和 Roll 测试正常,但 Yaw 测试经常失败。<br />	原因:首先,确保磁场传感器校准良好。如果没有校准磁场传感器,则旋转矢量无法正常工作。<br />此外,偏航轴也可能因拍摄视频而出现故障。对于 Yaw 测试,请让设备保持稳定,然后围绕测试图案行走/移动。用手旋转设备时很难保持视频质量。
+  </li></ol>
+
+<h2 id="reporting">报告反馈</h2>
+
+<p>如果上述步骤无法解决问题,请务必按照以下反馈步骤报告您的问题。</p>
+
+<p>请在报告错误时收集以下信息:</p>
+  <ol>
+    <li>Android 错误报告</li><li>屏幕截图(如果屏幕上有任何错误消息)。
+    </li><li><code>/sdcard/RVCVRecData/</code> 中的内容。该文件夹包含视频文件,因此如果已进行多次测试,则可能会非常大。清空该文件夹并再次执行测试将有助于减小大小。检查其中的视频文件,找出录制方面的明显问题。
+    </li><li>OpenCV Manager 应用的屏幕截图。
+  </li></ol>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/run.html b/zh-cn/compatibility/cts/run.html
new file mode 100644
index 0000000..8902cc3
--- /dev/null
+++ b/zh-cn/compatibility/cts/run.html
@@ -0,0 +1,363 @@
+<html devsite><head>
+    <title>运行 CTS 测试</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<h2 id="cts_tradefed">CTS tradefed 使用入门</h2>
+<p>您可以参阅 <a href="/devices/tech/test_infra/tradefed/index.html">Trade Federation 概述</a>,了解有关 Trade Federation(简称 tradefed 或 TF)持续测试框架的说明。</p>
+
+<p>运行测试计划的方法如下:</p>
+<ol>
+  <li>至少连接一个设备。
+  </li><li>在开始运行 CTS 时,按<strong>主屏幕</strong>按钮将设备设置为显示主屏幕。</li><li>当设备在运行测试时,它不能用于执行任何其他任务,并且必须保持静止状态(以免触发传感器活动),同时要让相机指向某个可以聚焦的对象。
+  </li><li>在运行 CTS 时,不要按设备上的任何键。按测试设备上的键或触摸其屏幕会干扰正在运行的测试,并且可能导致测试失败。
+  </li><li>通过运行 CTS 包所在的压缩文件夹中的 cts-tradefed<em></em> 脚本((例如 <code>$ ./android-cts/tools/cts-tradefed</code>))来启动 CTS 控制台。
+  </li><li>通过附加以下命令启动默认测试计划(包含所有测试包):<code>run
+    cts --plan CTS</code>。这将启动测试兼容性所需的所有 CTS 测试。
+      <ul>
+        <li>对于 CTS v1(Android 6.0 及更早版本),您可以输入 <code>list plans</code> 来查看存储区中的测试计划列表,也可以输入 <code>list package</code> 来查看存储区中的测试包列表。
+        </li><li>对于 CTS v2(Android 7.0 及更高版本),您可以输入 <code>list modules</code> 来查看测试模块的列表。
+      </li></ul>
+  </li>
+  <li>或者,使用以下命令从命令行中运行您选择的 CTS 计划:<code>cts-tradefed run cts --plan
+      <plan_name>
+      </plan_name></code>
+<p class="note"><strong>注意</strong>:仅在运行 Android 6.0 (Marshmallow) CTS 时,我们建议您使用 <code>--skip-preconditions</code> 选项来跳过在执行 CTS 测试时可能导致问题且存在前提条件的实验性功能测试。</p>
+  </li><li>查看控制台中报告的测试进度和结果。
+  </li><li>如果您的设备运行的是 Android 5.0 或更高版本,并且声明支持 ARM 和 x86 ABI,则应运行 ARM 和 x86 CTS 包。
+</li></ol>
+
+<h2 id="using-cts-v1">使用 CTS v1 控制台</h2>
+
+<p>对于 Android 6.0 或更早版本,您将使用 CTS v1。</p>
+<h3 id="selecting_cts_plans">选择计划</h3>
+<p>您可以选择以下测试计划:</p>
+<ul>
+  <li><em></em>CTS - 兼容性所需的所有测试。</li>
+  <li><em></em>Signature - 所有公开 API 的签名验证</li>
+  <li><em></em>Android - 针对 Android API 的测试</li>
+  <li><em></em>Java - 针对 Java 核心库的测试</li>
+  <li><em></em>VM - 针对 ART 或 Dalvik 的测试</li>
+  <li><em></em>Performance - 针对实施的性能测试</li>
+</ul>
+<p>您可以使用 <code>run cts</code> 命令执行这些测试。</p>
+<h3 id="cts_reference">CTS v1 控制台命令参考</h3>
+
+<p class="table-caption" id="console-commands">
+  <strong>表 1.</strong> 该表总结了用于各种用途的 CTS v1 控制台命令。</p>
+<table>
+  <tbody>
+    <tr>
+      <th>主机</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>help</code></td>
+      <td>显示最常用命令的摘要</td>
+    </tr>
+    <tr>
+      <td><code>help all</code></td>
+      <td>显示可用命令的完整列表</td>
+    </tr>
+    <tr>
+      <td><code>exit</code></td>
+      <td>正常退出 CTS 控制台。所有当前正在运行的测试完成后,控制台将关闭</td>
+    </tr>
+    <tr>
+      <th>运行</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>run cts</code></td>
+      <td>运行指定的测试并显示进度信息。需要指定 <code>--plan</code>、<code>--package</code>、<code>--class</code> 或 <code>--continue-session</code> 中的一个。<p>在测试过程中,CTS 控制台可以接受其他命令</p>
+        <p>如果没有连接任何设备,CTS 台式机(或主机)将等待连接设备后再开始测试</p>
+        <p>如果连接了多台设备,则 CTS 主机将自动选择一台设备</p></td>
+    </tr>
+    <tr>
+      <td><code>--plan &lt;test_plan_name&gt;</code></td>
+      <td>运行指定的测试计划</td>
+    </tr>
+    <tr>
+      <td><code>--package/-p &lt;test_package_name&gt;  [--package/-p &lt;test_package2&gt;...]</code></td>
+      <td>运行指定的测试包</td>
+    </tr>
+    <tr>
+      <td><code>--class/-c &lt;class_name&gt; [--method/-m &lt;test_method_name&gt;</code></td>
+      <td>运行指定的测试类和/或方法</td>
+    </tr>
+    <tr>
+      <td><code>--continue-session</code></td>
+      <td>运行上一个 CTS 会话中所有未执行的测试;会话 testResult.xml 将会更新成最新结果</td>
+    </tr>
+    <tr>
+      <td><code>--shards &lt;number_of_shards&gt;</code></td>
+      <td>将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行</td>
+    </tr>
+    <tr>
+      <td><code>--serial/-s &lt;deviceID&gt;</code></td>
+      <td>在特定设备上运行 CTS</td>
+    </tr>
+    <tr>
+      <td><code>-t &lt;class_name&gt;#&lt;test_method_name&gt;</code></td>
+      <td>运行特定测试方法</td>
+    </tr>
+    <tr>
+      <td><code>--force-abi 32|64</code></td>
+      <td>在 64 位设备上,仅对 32 位或 64 位 ABI 运行测试</td>
+    </tr>
+    <tr>
+      <th>列表</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>list packages</code></td>
+      <td>列出存储区中的所有可用测试包</td>
+    </tr>
+    <tr>
+      <td><code>list plans</code></td>
+      <td>列出存储区中的所有可用测试计划</td>
+    </tr>
+    <tr>
+      <td><code>list invocations</code></td>
+      <td>列出设备上当前正在执行的“运行”命令</td>
+    </tr>
+    <tr>
+      <td><code>list commands</code></td>
+      <td>列出当前在队列中等待分配给设备的所有“运行”命令</td>
+    </tr>
+    <tr>
+      <td><code>list results</code></td>
+      <td>列出当前存储在存储区中的 CTS 结果</td>
+    </tr>
+    <tr>
+      <td><code>list devices</code></td>
+      <td>列出当前连接的设备及其状态<p> </p>
+        <p>“可用”设备是可正常运行的空闲设备,可用于运行测试</p>
+        <p> </p>
+        <p>“不可用”设备是可通过 adb 查看但不响应 adb 命令的设备,不会分配用于测试</p>
+        <p> </p>
+        <p>“已分配”设备是当前正在运行测试的设备</p></td>
+    </tr>
+    <tr>
+      <th>添加</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>add derivedplan --plan &lt;plan_name&gt;<br />
+        --result/-r<br />
+        [pass | fail | timeout | notExecuted]<br />
+        [--session/-s &lt;session_id&gt;]</code></td>
+      <td>创建从给定结果会话衍生的计划;使用此选项可重新运行报告并验证测试问题</td>
+    </tr>
+  </tbody>
+</table>
+
+<h2 id="using-cts-v2">使用 CTS v2 控制台</h2>
+
+<p>对于 Android 7.0 或更高版本,您将使用 CTS v2。</p>
+<h3 id="selecting_ctsv2_plans">选择计划</h3>
+<p>您可以选择以下测试计划:</p>
+<ul>
+  <li><em></em>cts - 从预装的 CTS 运行 CTS。</li>
+  <li><em></em>cts-camera - 从预装的 CTS 运行 CTS-camera。</li>
+  <li><em></em>cts-java - 从预装的 CTS 运行核心 Java 测试。</li>
+  <li><em></em>cts-pdk - 运行有助于验证与 PDK 融合的产品的测试。</li>
+  <li><em></em>everything - 兼容性套件的通用配置。</li>
+</ul>
+<p>其他可用配置如下:</p>
+<ul>
+  <li><em></em>basic-reporters - 基本 CTS 报告程序的配置。</li>
+  <li><em></em>collect-tests-only - 从现有 CTS 安装运行 CTS。</li>
+  <li><em></em>common-compatibility-config - 兼容性套件的通用配置。</li>
+  <li><em></em>cts-filtered-sample - 兼容性套件的通用配置。</li>
+  <li><em></em>cts-known-failures - CTS 已知故障的配置。</li>
+  <li><em></em>cts-preconditions - CTS 前提条件配置。</li>
+  <li><em></em>host - 在现有设备上运行单个基于主机的测试。</li>
+  <li><em></em>instrument - 在现有设备上运行单个 Android 工具测试。</li>
+  <li><em></em>native-benchmark - 在现有设备上运行原生压力测试。</li>
+  <li><em></em>native-stress - 在现有设备上运行原生压力测试。</li>
+  <li><em></em>recharge - 等待电量接近耗尽的设备并将它们保持在充电状态的虚设测试。</li>
+  <li><em></em>testdef - 在现有设备上运行包含在 test_def.xml 文件中的测试。</li>
+  <li><em></em>util/wifi - 用于在设备上配置 WLAN 的实用程序配置。</li>
+  <li><em></em>util/wipe - 擦除设备上的用户数据。</li>
+</ul>
+<p>所有这些计划和配置都可以使用 <code>run cts</code> 命令执行。</p>
+
+<h3 id="ctsv2_reference">CTS v2 控制台命令参考</h3>
+
+<p class="table-caption" id="console-commands">
+  <strong>表 1.</strong> 该表总结了用于各种用途的 CTS V2 控制台命令。</p>
+<table>
+  <tbody>
+    <tr>
+      <th>主机</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>help</code></td>
+      <td>显示最常用命令的摘要</td>
+    </tr>
+    <tr>
+      <td><code>help all</code></td>
+      <td>显示可用命令的完整列表</td>
+    </tr>
+    <tr>
+      <td><code>version</code></td>
+      <td>显示版本。</td>
+    </tr>
+    <tr>
+      <td><code>exit</code></td>
+      <td>正常退出 CTS 控制台。所有当前正在运行的测试完成后,控制台将关闭。</td>
+    </tr>
+    <tr>
+      <th>运行</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>run cts</code></td>
+      <td><p>运行默认的 CTS 计划(即完整的 CTS 调用)。</p>
+      <p>在测试过程中,CTS 控制台可以接受其他命令。</p>
+        <p>如果没有连接任何设备,CTS 台式机(或主机)将等待连接设备后再开始测试。</p>
+        <p>如果连接了多台设备,则 CTS 主机将自动选择一台设备。</p></td>
+    </tr>
+    <tr>
+      <td><code>--plan &lt;test_plan_name&gt;</code></td>
+      <td>运行指定的测试计划。</td>
+    </tr>
+    <tr>
+      <td><code>--module/-m &lt;test_module_name&gt;  [--module/-m &lt;test_module2&gt;...]</code></td>
+      <td>运行指定的测试类和/或方法。例如,<code>run cts --module CtsGestureTestCases</code> 会执行手势测试模块(该命令可以简化为 <code>run cts -m Gesture</code>)。<br />
+          <code>run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes</code> 会运行指定的包、类或测试。</td>
+    </tr>
+    <tr>
+      <td><code>--subplan  &lt;subplan_name&gt;</code></td>
+      <td>运行指定的子计划。</td>
+    </tr>
+    <tr>
+      <td><code>-- module/-m &lt;test_module_name&gt; -- test &lt;test_name&gt; </code></td>
+      <td>运行指定的模块并进行测试。例如,<code>run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes</code> 会运行指定的包、类或测试。</td>
+    </tr>
+    <tr>
+      <td><code>--retry</code></td>
+      <td>重新尝试运行在以前的会话中失败或未执行的所有测试。使用 <code>list results</code> 获取会话 ID。</td>
+    </tr>
+    <tr>
+      <td><code>--shards &lt;number_of_shards&gt;</code></td>
+      <td>将 CTS 运行分为指定数量的独立块,以便在多台设备上并行运行。</td>
+    </tr>
+    <tr>
+      <td><code>--serial/-s &lt;deviceID&gt;</code></td>
+      <td>在特定设备上运行 CTS。</td>
+    </tr>
+    <tr>
+      <td><code>--include-filter &lt;module_name&gt;  [--include-filter &lt;module2&gt;...]</code></td>
+      <td>仅使用指定的模块运行。</td>
+    </tr>
+    <tr>
+      <td><code>--exclude-filter &lt;module_name&gt;  [--exclude-filter &lt;module2&gt;...]</code></td>
+      <td>运行时排除指定的模块。</td>
+    </tr>
+    <tr>
+      <td><code>--log-level-display/-l &lt;log_level&gt;</code></td>
+      <td>以显示给 STDOUT 的最小指定日志级别运行。有效值:[VERBOSE, DEBUG, INFO, WARN, ERROR, ASSERT]。</td>
+    </tr>
+    <tr>
+      <td><code>--abi &lt;abi_name&gt;</code></td>
+      <td>强制要求测试在给定的 ABI(32 或 64)上运行。默认情况下,CTS 会为设备支持的每个 ABI 运行一次测试。</td>
+    </tr>
+    <tr>
+      <td><code>--logcat</code>、<code>--bugreport</code> 和 <code>--screenshoot-on-failure</code></td>
+      <td>显示更详尽的故障信息并帮助进行诊断。</td>
+    </tr>
+    <tr>
+      <td><code>--device-token</code></td>
+      <td>指定具有给定令牌的给定设备,例如 <code>--device-token 1a2b3c4d:sim-card.</code>。</td>
+    </tr>
+    <tr>
+      <td><code>--skip-device-info</code></td>
+      <td>跳过收集设备相关信息的过程。注意:运行 CTS 以寻求批准时,请勿使用此选项。</td>
+    </tr>
+    <tr>
+      <td><code>--skip-preconditions</code></td>
+      <td>绕过对设备配置的验证和设置,例如推送媒体文件或检查 WLAN 连接。</td>
+    </tr>
+    <tr>
+      <th>列表</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>list modules</code></td>
+      <td>列出存储区中的所有可用测试模块。
+    </td></tr>
+    <tr>
+      <td><code>list plans</code> 或 <code>list configs</code></td>
+      <td>列出存储区中的所有可用测试计划(配置)。</td>
+    </tr>
+    <tr>
+      <td><code>list subplans</code></td>
+      <td>列出存储区中的所有可用子计划。</td>
+    </tr>
+    <tr>
+      <td><code>list invocations</code></td>
+      <td>列出设备上当前正在执行的“运行”命令。</td>
+    </tr>
+    <tr>
+      <td><code>list commands</code></td>
+      <td>列出当前在队列中等待分配给设备的所有“运行”命令。</td>
+    </tr>
+    <tr>
+      <td><code>list results</code></td>
+      <td>列出当前存储在存储区中的 CTS 结果。</td>
+    </tr>
+    <tr>
+      <td><code>list devices</code></td>
+      <td>列出当前连接的设备及其状态。
+        <p> </p>
+        <p>“可用”设备是可正常运行的空闲设备,可用于运行测试。</p>
+        <p> </p>
+        <p>“不可用”设备是可通过 adb 查看但不响应 adb 命令的设备,不会分配用于测试。</p>
+        <p> </p>
+        <p>“已分配”设备是当前正在运行测试的设备。</p></td>
+    </tr>
+    <tr>
+      <th>转储</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>dump logs</code></td>
+      <td>为所有正在运行的调用转储 tradefed 日志。</td>
+    </tr>
+    <tr>
+      <th>添加</th>
+      <th>说明</th>
+    </tr>
+    <tr>
+      <td><code>add subplan --name/-n &lt;subplan_name&gt;<br />
+        --result-type<br />
+        [pass | fail | timeout | notExecuted]<br />
+        [--session/-s &lt;session_id&gt;]</code></td>
+      <td>创建从上一会话衍生的子计划;此选项会生成可用于运行测试子集的子计划。<br /><br />只有 <code>--session</code> 是必选的选项。其他选项都是可选的,但如果选用这些选项,必须后跟一个值。<code>--result-type</code> 选项是可重复使用的;例如 <code>add subplan --session 0 --result-type passed --result-type
+        failed</code> 是有效的。</td>
+
+    </tr>
+  </tbody>
+</table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/setup.html b/zh-cn/compatibility/cts/setup.html
new file mode 100644
index 0000000..5af2c39
--- /dev/null
+++ b/zh-cn/compatibility/cts/setup.html
@@ -0,0 +1,167 @@
+<html devsite><head>
+    <title>设置 CTS</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<h2 id="physical_environment">物理环境</h2>
+<h3 id="wifi">WLAN 和 IPv6</h3>
+<p>CTS 测试需要满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为隔离客户端,并可以连接到互联网。隔离客户端是一种配置,可将 DUT 配置为无法接收子网络上的广播/多网消息;这种配置可通过 WLAN AP 配置或通过在未连接其他设备的隔离子网络上运行 DUT 来实现。</p>
+
+<p>如果您无法访问原生 IPv6 网络、IPv6 运营商网络或 IPv6 VPN,以致无法通过基于 IPv6 的一些测试,则可以改为使用 WLAN 接入点和 IPv6 隧道。请参阅维基百科 <a href="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">IPv6 隧道代理列表</a>。</p>
+
+<h3 id="ble_beacons">蓝牙 LE 信标</h3>
+<p>如果 DUT 支持蓝牙 LE 功能,则至少应在距离 DUT 五米的范围内放置三个蓝牙 LE 信标,以进行蓝牙 LE 扫描测试。这些信标可以为任何类型,不需要进行配置或发射任何特定信号,并且可以包括 iBeacon、Eddystone 甚至模拟 BLE 信标的设备。</p>
+
+<h2 id="desktop_setup">台式机设置</h2>
+<p>CTS 目前支持 64 位 Linux 和 Mac OS 主机。</p>
+
+<h3 id="adb">ADB 和 AAPT</h3>
+<p>在运行 CTS 之前,请确保您已安装最新版本的 <a href="http://developer.android.com/tools/help/adb.html">Android 调试桥 (adb)</a> 和 <a href="http://developer.android.com/guide/topics/manifest/uses-feature-element.html#testing">Android 资源打包工具 (AAPT)</a>,并将这些工具的位置添加到计算机的系统路径中。</p>
+
+<p>要安装 ADB,请下载适用于您的操作系统的 <a href="http://developer.android.com/sdk/index.html#Other">Android SDK 工具</a>包,打开它,然后按照附带的 README 文件中的说明进行操作。要了解问题排查相关信息,请参阅<a href="http://developer.android.com/sdk/installing/index.html?pkg=tools">安装独立 SDK 工具</a>。</p>
+
+<p>确保 <code>adb</code> 和 <code>aapt</code> 位于您的系统路径中。以下命令假定您已在主目录中打开了软件包归档文件:</p>
+<hr />
+<pre>
+$ export PATH=$PATH:$HOME/android-sdk-linux/build-tools/&lt;version&gt;
+</pre>
+
+<p class="note"><strong>注意:</strong>请确保起始路径和目录名称均准确无误。</p>
+
+<h3 id="JDK">Java 开发套件 (JDK)</h3>
+<p>安装适当版本的 Java 开发套件 (JDK)。对于 Android 7.0 -
+</p>
+<ul>
+  <li>在 Ubuntu 上,使用 <a href="http://openjdk.java.net/install/">OpenJDK 8</a>。
+  </li><li>在 Mac OS 上,使用 <a href="http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR">jdk 8u45 或更高版本</a>。</li>
+</ul>
+<p>如需了解详情,请参阅 <a href="https://source.android.com/source/requirements.html#jdk">JDK 要求</a>。
+</p>
+
+<h3 id="CTS_files">CTS 文件</h3>
+
+<p><a href="downloads.html">下载</a>并打开与您设备的 Android 版本以及您的设备支持的所有应用二进制接口 (ABI) 相匹配的 CTS 包。</p>
+
+<p>下载并打开最新版本的 <a href="downloads.html#cts-media-files">CTS 媒体文件</a>。</p>
+
+<h3 id="system_detect">设备检测</h3>
+<p>请按照相应的步骤<a href="http://developer.android.com/tools/device.html#setting-up">设置您的系统以检测您的设备</a>,例如为 Ubuntu Linux 创建 <code>udev</code> 规则文件。</p>
+
+<h2 id="device_setup">Android 设备设置</h2>
+
+<h3 id="user_builds">用户版本</h3>
+
+<p>兼容的设备会被定义为具有用户/release-key 签名版本的设备,因此您的设备应基于<a href="/source/build-numbers.html">代号、标签和版本号</a>中已知兼容的用户版本(Android 4.0 及更高版本)运行系统映像。<br />
+
+</p><p class="caution"><strong>注意:</strong>使用 CTS 确认最终系统映像的 Android 兼容性时,您必须在具有用户版本的设备上执行 CTS。</p>
+
+<h3 id="first-api-level">第一个 API 级别版本属性</h3>
+
+<p>特定的 CTS 要求取决于设备最初搭载的版本。例如,如果设备最初搭载的是较低的版本,则不符合适用于搭载较高版本的设备的系统要求。</p>
+
+<p>为了保证在 CTS 中可读取到这些信息,设备制造商可以定义编译时属性:<code>ro.product.first_api_level</code>。该属性的值是以商业化形式发布该设备时所采用的第一个 API 级别。</p>
+
+<p>原始设备制造商(OEM) 可以将 <code>PRODUCT_PROPERTY_OVERRIDES</code> 添加到其 device.mk 文件以设置这项属性,具体如以下示例所示:</p>
+
+<pre>
+#ro.product.first_api_level indicates the first api level, device has been commercially launched on.
+PRODUCT_PROPERTY_OVERRIDES +=\
+ro.product.first_api_level=21
+</pre>
+
+<aside class="note">
+<b>注意:</b>对于产品的第一个版本,ro.product.first_api_level 属性应取消设置 (0);而对于所有后续版本,该属性应设置为正确的 API 级别值。通过这种方式,该属性可以正确识别新产品,而且我们不会丢失任何关于产品第一个 API 级别的信息(0 值意味着 ro.product.first_api_level = Build.VERSION.SDK_INT)。
+</aside>
+
+<h3 id="cts-shim-apps">CTS Shim 应用</h3>
+
+<p>Android 7.0 包含以下预编译的应用(通过<a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/CtsShim/build/">此来源</a>编译),这些应用不包含除清单以外的任何代码:</p>
+
+<ul>
+  <li><code><a href="https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r1/packages/CtsShim/CtsShim.apk">
+  frameworks/base/packages/CtsShim/CtsShim.apk</a></code><br />
+  该 apk 文件将复制到系统映像上的 <code>/system/app/CtsShimPrebuilt.apk</code>。
+  </li><li><code><a href="https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r1/packages/CtsShim/CtsShimPriv.apk">
+  frameworks/base/packages/CtsShim/CtsShimPriv.apk</a></code><br />
+  该 apk 文件将复制到系统映像上的 <code>/system/priv-app/CtsShimPrivPrebuilt.apk</code>。</li>
+</ul>
+
+<p>CTS 会使用这些应用来测试特权和权限。要通过测试,您必须将应用预加载到系统映像上的相应目录下,而无需对它们重新签名。</p>
+
+<h3 id="storage_requirements">存储空间要求</h3>
+<p>CTS 媒体压力测试要求将视频剪辑存放在外部存储设备 (<code>/sdcard</code>) 上。大部分剪辑来自 <a href="https://peach.blender.org/">Big Buck Bunny</a>,其版权归 Blender Foundation 所有并已获得<a href="http://creativecommons.org/licenses/by/3.0/">知识共享署名 3.0 许可</a>。</p>
+<p>所需空间取决于设备支持的最大视频播放分辨率(要查看所需分辨率的平台版本,请参阅兼容性定义文档中的第 5 部分)。请注意,被测设备的视频播放功能将通过 <code>android.media.CamcorderProfile</code> API(针对早期 Android 版本)和 <code>android.media.MediaCodecInfo.CodecCapabilities</code> API(针对 Android 5.0)进行检测。</p>
+<p>以下是按最大视频播放分辨率列出的存储空间要求:</p>
+<ul>
+  <li>480x360:98 MB</li><li>720x480:193 MB</li><li>1280x720:606 MB</li><li>1920x1080:1863 MB</li></ul>
+
+<h3 id="screen_storage">屏幕和存储空间</h3>
+<ol>
+<li>任何没有嵌入式屏幕的设备都需要连接到屏幕。</li>
+<li>如果设备具有存储卡插槽,请插入空的 SD 卡。<em>请使用支持超高速 (UHS) 总线且具有 SDHC 或 SDXC 容量的 SD 卡,或使用至少具有 Class 10 速度的 SD 卡,以确保设备能够通过 CTS。</em>
+<p class="warning"><strong>警告:</strong>CTS 可能会修改/清空插入设备的 SD 卡上的数据。</p>
+</li>
+<li>如果设备具有 SIM 卡插槽,请将激活的 SIM 卡插入每个插槽。如果设备支持短信,则应填充每个 SIM 卡的号码字段。</li>
+
+</ol>
+
+<h3 id="developer_uicc">开发者 UICC</h3>
+
+<p>为了执行 CTS 运营商 API 测试,该设备需要使用运营商授权的 SIM 卡。请参阅<a href="/devices/tech/config/uicc.html#prepare_uicc">准备 UICC</a>。</p>
+
+<h2 id="config_device">Android 设备配置</h2>
+<ol>
+  <li>将设备恢复出厂设置:<strong>设置 &gt; 备份和重置 &gt; 恢复出厂设置</strong>
+    <p class="warning"><strong>警告:</strong>这将清空设备中的所有用户数据。</p>
+  </li><li>将设备的语言设置为英语(<strong>美国</strong>):<strong>设置 &gt; 语言和输入法 &gt; 语言</strong>
+  </li><li>如果设备上具有 GPS 或 WLAN/移动网络功能,则打开位置信息设置:<strong>设置 &gt; 位置信息 &gt; 开启</strong>
+  </li><li>连接到满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为<em>隔离客户端</em>(请参阅上文的<a href="#physical_environment">物理环境</a>部分),并可以连接到互联网:<strong>设置 &gt; WLAN</strong>
+  </li><li>确保设备上未设置锁定图案或密码:<strong>设置 &gt; 安全 &gt; 屏幕锁定 &gt; 无</strong>
+  </li><li>在设备上启用 <strong>USB 调试</strong>:<strong>设置 &gt; 开发者选项 &gt; USB 调试</strong>。
+       <p class="note"><strong>注意:</strong>在 Android 4.2 及更高版本中,默认情况下会隐藏<strong>开发者选项</strong>。要显示这些选项,请依次转到<strong>设置 &gt; 关于手机</strong>,然后点按<strong>版本号</strong>七次。返回上一屏幕以查找<strong>开发者选项</strong>。要查看其他详细信息,请参阅<a href="http://developer.android.com/studio/run/device.html#developer-device-options">启用设备上的开发者选项</a>。</p>
+       </li><li>确保将时间设置为 12 小时格式:<strong>设置 &gt; 日期和时间 &gt; 使用 24 小时制 &gt; 关闭</strong>
+  </li><li>依次选择:<strong>设置 &gt; 开发者选项 &gt; 不锁定屏幕 &gt; 开启</strong>
+  </li><li>依次选择:<strong>设置 &gt; 开发者选项 &gt; 允许模拟位置 &gt; 开启</strong>
+    <p class="note"><strong>注意:</strong>此模拟位置设置仅适用于 Android 5.x 和 4.4.x。</p>
+  </li><li>依次选择:<strong>设置 &gt; 开发者选项 &gt; 通过 USB 验证应用 &gt; 关闭</strong>
+    <p class="note"><strong>注意:</strong>此验证应用步骤在 Android 4.2 中为必需步骤。</p>
+  </li><li>启动浏览器并关闭任何启动/设置屏幕。
+  </li><li>使用 USB 数据线连接用于测试设备的台式机<p class="note"><strong>注意:</strong>将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。选择<em>允许 USB 调试</em>。</p>
+  </li><li>在设备上安装和配置帮助程序应用。
+<p class="note"><strong>注意:</strong>对于 CTS 版本 2.1 R2 至 4.2 R4,请将您的设备(或模拟器)设置为通过以下命令执行无障碍测试:<br />
+<code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br />在设备上,依次启用:<strong>设置 &gt; 无障碍 &gt; 无障碍 &gt; Delegating Accessibility</strong></p>
+<p class="note"><strong>注意:</strong>对于 7.0 之前的 CTS 版本,请在声明 <code>android.software.device_admin</code> 的设备上,将您的设备设置为使用以下命令执行设备管理测试:<br />
+<code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code><br />
+</p><p>依次选择“设置”&gt;“安全”&gt;“设备管理器”,然后启用两个 <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> 设备管理器。确保 <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> 和任何其他预加载的设备管理器保持停用状态。
+</p>
+</li><li>将 CTS 媒体文件复制到设备上,如下所示:<p class="note"><strong>注意:</strong>对于 CTS 2.3 R12 及更高版本,如果设备支持视频编解码器,则必须将 CTS 媒体文件复制到设备上。</p>
+<ul>
+  <li>导航 (cd) 到下载并解压缩媒体文件的目标路径。
+  </li><li>更改文件权限:<code>chmod u+x copy_media.sh</code>
+  </li><li>运行 <code>copy_media.sh</code>:<ul>
+      <li>要复制分辨率高达 720x480 的剪辑,请运行:<code>./copy_media.sh 720x480</code>
+      </li><li>如果您不确定最大分辨率,请尝试运行 <code>./copy_media.sh all</code>,以便复制所有文件。
+      </li><li>如果 adb 下有多个设备,请将 -s(序列号)选项添加到末尾。
+        例如,要将高达 720x480 的分辨率复制到序列号为 1234567 的设备,请运行:<code>./copy_media.sh 720x480 -s 1234567</code>
+    </li></ul>
+</li></ul>
+</li></ol>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/cts/verifier.html b/zh-cn/compatibility/cts/verifier.html
new file mode 100644
index 0000000..81163af
--- /dev/null
+++ b/zh-cn/compatibility/cts/verifier.html
@@ -0,0 +1,158 @@
+<html devsite><head>
+    <title>使用 CTS 验证程序</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>Android 兼容性测试套件验证程序(CTS 验证程序)是对兼容性测试套件 (CTS) 的补充。CTS 可以对具备测试自动化功能的 API 和功能进行测试,而 CTS 验证程序则可以针对一些必须依赖于手动操作才能在固定设备上进行测试的 API 和功能(例如音频质量、触摸屏、加速度计、相机等)提供测试。</p>
+<h2 id="test_preparation">测试前的准备</h2>
+<p>设备必须成功地通过“兼容性测试套件”测试,才能验证其 Android API 兼容性。</p>
+<h3 id="hardware_requirements">硬件要求</h3>
+<ul>
+  <li>一台具有 USB 2.0 兼容端口的 Linux 计算机</li><li>具有已知可兼容蓝牙、WLAN 直连和 NFC 主机卡模拟 (HCE) 功能的第二台 Android 设备</li></ul>
+<h3 id="setup">设置</h3>
+<ul>
+  <li>在 Linux 计算机上安装 <a href="http://developer.android.com/sdk/index.html">Android SDK</a></li><li>下载与被测 Android 版本对应的 <a href="downloads.html">CTS Verifier.apk</a>。</li><li>将 CTS Verifier.apk 安装到<em>被测设备</em> (DUT)。<br />
+    <code>adb install -r -g CtsVerifier.apk</code>
+  </li><li>确保设备的系统数据和时间均已正确设置。
+</li></ul>
+<h2 id="cts_test_procedure">CTS 验证程序测试程序</h2>
+<ol>
+  <li>在安装 CTS Verifier.apk 之后,启动 CTS 验证程序应用:<img src="images/cts-verifier-icon.png" alt="启动器中的 CTS 验证程序图标" id="figure1"/>
+<p class="img-caption">
+  <strong>图 1.</strong> CTS 验证程序图标</p>
+
+  </li><li>打开应用后,CTS 验证程序将显示适用于手动验证的所有测试集的列表:<img src="images/cts-verifier-menu.png" alt="CTS 验证程序测试菜单" id="figure2"/>
+<p class="img-caption">
+  <strong>图 2.</strong> CTS 验证程序测试菜单</p>
+
+  </li><li>每项测试均包含一组常用元素(在某些测试中,系统会自动确认测试结果为通过/失败):<ul>
+      <li><em>信息</em> - 用于运行测试的一组说明。首次打开每个测试或每当按<strong>信息</strong>按钮 (?) 时,此信息都会以弹出窗口的形式显示。
+      </li><li><em>通过</em> - 如果 DUT 符合“信息”中的说明规定的测试要求,请按<strong>通过</strong>按钮 (✓)。
+      </li><li><em>失败</em> - 如果 DUT 不符合“信息”中的说明规定的测试要求,请按<strong>失败</strong>按钮 (!)。
+    </li></ul>
+
+<img src="images/video-verifier.png" alt="流式视频品质验证程序" id="figure3"/>
+<p class="img-caption">
+  <strong>图 3.</strong> 视频品质验证程序</p>
+
+</li></ol>
+
+<h2 id="specific_test_requirements">具体测试要求</h2>
+<h3 id="usb_accessory">USB 配件</h3>
+<p>为了运行 USB 配件测试,您需要一台 Linux 计算机来运行 USB 台式机(主机)程序。</p>
+<ol>
+  <li>将 DUT 连接到计算机。
+  </li><li>在计算机上执行 cts-usb-accessory 程序(存放在 CTS 验证程序包中)。
+  </li><li>DUT 上将显示一条弹出消息。选择 <strong>OK</strong> 进入 CTS 验证程序应用中的 USB 配件测试。
+<br />
+<img src="images/screen-lock-test.png" alt="CTS 验证程序屏幕锁定测试" id="figure4"/>
+<p class="img-caption">
+  <strong>图 4.</strong> 屏幕锁定测试</p>
+
+  </li><li>在计算机的控制台上,您将看到类似以下内容的输出内容。
+</li></ol>
+<pre>
+out/host/linux-x86/cts-verifier/android-cts-verifier$ <strong>./cts-usb-accessory</strong>
+CTS USB Accessory Tester
+Found possible Android device (413c:2106) - attempting to switch to accessory
+mode...
+Failed to read protocol version
+Found Android device in accessory mode (18d1:2d01)...
+[RECV] Message from Android device #0
+[SENT] Message from Android accessory #0
+[RECV] Message from Android device #1
+[SENT] Message from Android accessory #1
+[RECV] Message from Android device #2
+[SENT] Message from Android accessory #2
+[RECV] Message from Android device #3
+[SENT] Message from Android accessory #3
+[RECV] Message from Android device #4
+[SENT] Message from Android accessory #4
+[RECV] Message from Android device #5
+[SENT] Message from Android accessory #5
+[RECV] Message from Android device #6
+[SENT] Message from Android accessory #6
+[RECV] Message from Android device #7
+[SENT] Message from Android accessory #7
+[RECV] Message from Android device #8
+[SENT] Message from Android accessory #8
+[RECV] Message from Android device #9
+[SENT] Message from Android accessory #9
+[RECV] Message from Android device #10
+[SENT] Message from Android accessory #10
+</pre>
+<h3 id="camera_field_of_view_calibration">相机视野校准</h3>
+<p>这种视野校准程序主要用于快速确定具备适中精确度的设备视野。
+</p><p><strong>设置</strong> - 打印 <a href="/compatibility/calibration-pattern.pdf">calibration-pattern.pdf</a> 目标文件,并将它贴在一个硬材质底板上。打印尺寸为 11“x 17” 或 A3。将相机设备和打印出来的图纸按如下位置和方向摆放:</p>
+
+<img src="images/camera-printed-target.png" alt="相机打印目标" id="figure5"/>
+<p class="img-caption">
+  <strong>图 5.</strong> 相机打印目标</p>
+
+<p><strong>设置目标宽度</strong> - 测量目标图案上两条实线之间的距离(以厘米为单位),以考虑打印误差(约 38 厘米)。</p>
+<ol>
+  <li>启动校准应用。
+  </li><li>按设置按钮,然后选择“Marker distance”输入距离。
+  </li><li>测量并输入到目标图案的距离(大约 100 厘米)。
+  </li><li>按后退按钮返回到校准预览。
+</li></ol>
+<p><strong>校准过程</strong> - 检查设备和目标是否均放在图中所示的位置,以及是否在设置对话框中输入了正确的距离。在预览中,图片上会叠加显示一条垂直线。该垂直线应与目标图案的中心线对齐。透明网格可与其他垂直线配合使用,以确保光轴与目标正交。</p>
+<ol>
+  <li>从左下角的选择器中选择要测试的图片分辨率。</li><li>点按屏幕以拍摄照片并进入校准模式(如下所述)。
+  </li><li>按后退按钮,并为所有支持的图片分辨率重复上述操作。
+</li></ol>
+<p><strong>校准测试(按分辨率)</strong>在校准模式下,照片将显示叠加在图片上的两条垂直线。这两条线应与目标图案上的垂直线对齐(误差控制在几个像素内)。如果没有对齐,则针对该模式报告的视野将不准确(假设设置正确)。调整屏幕底部的滑块,直到叠加层尽可能紧密地与目标图案对齐。当叠加层和目标图案图片对齐时,所显示的视野将近似于正确的值。报告的视野应在校准值的 +/- 1 度范围内。</p>
+<h2 id="exporting_test_reports">导出测试报告</h2>
+<ol>
+  <li>完成所有测试后,点按<strong>保存(磁盘)</strong>图标。
+    <br />
+    <img src="images/verifier-save-icon.png" alt="CTS 验证程序保存图标" id="figure6"/>
+    <p class="img-caption">
+      <strong>图 6.</strong> CTS 验证程序保存图标。<em>注意:</em>Android 7.0 及更高版本中已移除预览功能:<img src="images/verifier-preview-icon.png" width="24" height="24"/>
+    </p>
+  </li>
+  <li>
+    所保存报告的路径将显示在弹出窗口中(例如 <code>/sdcard/verifierReports/ctsVerifierReport-date-time.zip</code>)。记录该路径。
+    <br />
+    <img src="images/path-saved-report.png" alt="CTS 验证程序保存报告的路径" id="figure7"/>
+    <p class="img-caption">
+      <strong>图 7.</strong> CTS 验证程序保存报告的路径</p>
+  </li>
+  <li>
+    通过 USB 将设备连接到安装了 SDK 的计算机。
+  </li>
+  <li>
+    从计算机的 SDK 安装中,运行 <code>adb pull CTSVerifierReportPath</code> 以从设备中下载报告。
+    <ul>
+      <li>
+        要下载所有报告,请运行:<code>adb pull /sdcard/verifierReports</code>
+        <br />对于 Android 6.0 及更早版本,请运行:<code>adb pull /mnt/sdcard/ctsVerifierReports/</code>
+      </li>
+      <li>
+        报告的名称会加上时间戳(基于 DUT 的系统时间)。
+      </li>
+      <li>
+        要清除选择的结果,请依次选择 <strong>Menu &gt; Clear</strong>。该操作将清除通过/失败结果。
+      </li>
+    </ul>
+  </li>
+</ol>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/index.html b/zh-cn/compatibility/index.html
new file mode 100644
index 0000000..bc8abed
--- /dev/null
+++ b/zh-cn/compatibility/index.html
@@ -0,0 +1,59 @@
+<html devsite><head>
+    <title>Android 兼容性</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>Android 的目的是创建一个开放平台,供开发者编译创新应用。</p>
+<ul>
+<li>Android 兼容性计划定义了 Android 平台的技术细节,并为原始设备制造商 (OEM) 提供了各种工具,以确保开发者应用可以在各种设备上顺利运行。</li>
+<li>Android SDK 为开发者提供了内置工具,方便他们清楚地说明其应用所需的设备功能。
+</li><li>Google Play 只会将应用显示给可以正常运行这些应用的设备。</li>
+
+<h2 id="why-build-compatible-android-devices">为什么要打造兼容的 Android 设备?</h2>
+
+<h3 id="users-want-a-customizable-device">用户需要可自定义的设备</h3>
+
+<div class="attempt-right">
+  <img src="images/compat-ecosystem.png" alt="兼容性生态系统" id="figure1"/>
+  <p class="img-caption">
+    <strong>图 1.</strong> 设备兼容性让 Android 生态系统得以蓬勃发展</p>
+</div>
+
+<p>手机是一个高度个人化、永远在线、永远存在的互联网访问入口。我们还没有遇到过不希望通过扩展手机功能来自定义手机的用户。这就是为什么我们会将 Android 设计为用于运行售后市场应用的强大平台。</p>
+
+<h3 id="developers-outnumber-us-all">开发者人数超过我们的总开发者人数</h3>
+<p>任何设备制造商都无法编写用户希望拥有的所有软件。我们需要第三方开发者来编写用户需要的应用,因此 Android 开放源代码项目 (AOSP) 的目的就是让应用开发流程尽量简单和开放。</p>
+
+<h3 id="everyone-needs-a-common-ecosystem">所有人都需要一个共同的生态系统</h3>
+<p>开发者为解决某个错误而编写的每一行代码都是没有添加新功能的一行代码。移动设备的兼容性越高,可在这些设备上运行的应用就越多。通过打造完全兼容的 Android 设备,您可以享用针对 Android 编写的大量应用,同时还能增强促使开发者编译更多应用的动力。</p>
+
+<h2 id="android-compatibility-is-free-and-its-easy">Android 兼容性计划是免费的,而且申请步骤很简单</h2>
+<p>要打造与 Android 兼容的移动设备,请遵循以下三个步骤进行操作:</p>
+<ol>
+<li><em>获取<a href="/source/index.html"> Android 软件源代码</a></em>。这是移植到您的硬件的 Android 平台源代码。</li>
+<li><em>符合 Android 兼容性定义文档 (CDD)</em>(<a href="/compatibility/android-cdd.pdf">PDF</a>、<a href="/compatibility/android-cdd.html">HTML</a>)的要求。CDD 列举了有关兼容的 Android 设备的软件和硬件要求。</li>
+<li><em>通过<a href="/compatibility/cts/">兼容性测试套件 (CTS)</a></em> 测试。在开发过程中随时借助 CTS 评估兼容性。</li> </ol>
+
+<p>在符合 CDD 要求且通过 CTS 测试后,您的设备即是与 Android 兼容的设备,这意味着生态系统中的 Android 应用在您的设备上运行时可提供一致的体验。有关 Android 兼容性计划的详细信息,请参阅<a href="overview.html">计划概述</a>。</p>
+
+<h2 id="licensing-gms">为 Google 移动服务 (GMS) 授予许可</h2>
+<p>打造 Android 兼容设备后,请考虑为在 Android 上运行的 Google 移动服务 (GMS)、Google 拥有的一系列应用(Google Play、YouTube、Google 地图、Gmail 等)授予许可。GMS 不是 Android 开放源代码项目的一部分,仅通过 Google 授予许可的方式提供。有关如何申请 GMS 许可的信息,请参阅<a href="contact-us.html">与我们联系</a>。</p>
+
+</ul></body></html>
\ No newline at end of file
diff --git a/zh-cn/compatibility/overview.html b/zh-cn/compatibility/overview.html
new file mode 100644
index 0000000..eabf1bf
--- /dev/null
+++ b/zh-cn/compatibility/overview.html
@@ -0,0 +1,56 @@
+<html devsite><head>
+    <title>兼容性计划概览</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>Android 兼容性计划使移动设备制造商可以轻松开发兼容的 Android 设备。</p>
+
+<h2 id="program-goals">计划目标</h2>
+
+<p>Android 兼容性计划旨在让整个 Android 社区(包括用户、开发者和设备制造商)受益。</p>
+<p>每个群体都依赖于其他群体。用户希望有各式各样的设备和精彩的应用;精彩的应用源于受到庞大市场激励的开发者,他们的应用能够用于用户手中的许多设备;设备制造商则依靠各种精彩应用来提高其产品对消费者的价值。</p>
+<p>我们的目标是使每个群体都受益:</p>
+<ul>
+<li>
+<p><em>为应用开发者提供一致的应用和硬件环境。</em> 如果没有完善的兼容性标准,设备可能会有很大的变化,以致开发者必须为不同的设备设计不同版本的应用。兼容性计划精确定义了开发者在 API 和功能方面可以从兼容设备上获得什么内容。开发者可以使用这些信息做出明智的设计决策,并确信他们的应用可以在任何兼容设备上顺畅地运行。</p>
+</li>
+<li>
+<p><em>为消费者提供一致的应用体验。</em>如果某个应用在一个兼容的 Android 设备上运行良好,那么它在与同一 Android 平台版本兼容的任何其他设备上也应运行良好。Android 设备在硬件和软件功能方面将有所不同,因此兼容性计划还提供了分发系统(如 Google Play)所需的工具,以进行适当的过滤。这意味着用户只能看到他们可以实际运行的应用。</p>
+</li>
+<li>
+<p><em>使设备制造商在实现兼容性的同时能够保持与众不同。</em>Android 兼容性计划侧重的是 Android 中与运行第三方应用相关的方面,这使得设备制造商能够灵活地创建既兼容又独特的设备。</p>
+</li>
+<li>
+<p><em>最大限度降低与兼容性相关的成本和开销。</em>设备制造商能够轻松地实现兼容性,并且成本低廉。测试工具是免费的且开放源代码,可在<a href="cts/downloads.html">此处下载</a>。该工具旨在用于在设备开发过程中进行连续自检,以消除更改工作流程或将设备送给第三方进行测试产生的成本。同时,无需认证,因此也没有相应的成本和费用。</p>
+</li>
+</ul>
+
+<h2 id="program-components">计划组成部分</h2>
+
+<p>Android 兼容性计划由三个关键组成部分组成:</p>
+<ul>
+<li><a href="https://android.googlesource.com/">Android 开放源代码项目</a>源代码</li>
+<li><a href="cdd.html">兼容性定义文档 (CDD)</a><a>,代表兼容性的“政策”方面</a></li><a>
+</a><li><a></a><a href="cts/index.html">兼容性测试套件 (CTS)</a>,代表兼容性的“机制”</li>
+</ul>
+
+<p>就像每个版本的 Android 平台存在于源代码树的单独分支中一样,每个版本也具有单独的 CTS 和 CDD。CDD、CTS 和源代码以及硬件和软件自定义内容即是创建兼容设备所需的一切。</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/devices/tech/dalvik/dalvik-bytecode.html b/zh-cn/devices/tech/dalvik/dalvik-bytecode.html
new file mode 100644
index 0000000..8b644ea
--- /dev/null
+++ b/zh-cn/devices/tech/dalvik/dalvik-bytecode.html
@@ -0,0 +1,1068 @@
+<html devsite><head>
+    <title>Dalvik 字节码</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<h2 id="design">通用设计</h2>
+
+<ul>
+<li>机器模型和调用规范旨在大致模仿常见的真实架构和 C 样式的调用规范:<ul>
+  <li>机器基于寄存器,而帧的大小在创建时确定后就固定不变。每一帧由特定数量的寄存器(由相应方法指定)以及执行该方法所需的所有辅助数据构成,例如(但不限于)程序计数器和对包含该方法的 <code>.dex</code> 文件的引用。
+  </li>
+  <li>当用于位值(例如整数和浮点数)时,寄存器会被视为宽度为 32 位。如果值是 64 位,则使用两个相邻的寄存器。对于寄存器对,没有对齐要求。
+  </li>
+  <li>当用于对象引用时,寄存器会被视为其宽度能够正好容纳一个此类引用。
+  </li>
+  <li>对于按位表示,<code>(Object) null == (int)
+    0</code>。
+  </li>
+  <li>如果一个方法有 N 个参数,则在该方法的调用帧的最后 N 个寄存器中按顺序传递参数。<i></i><i></i>较宽的参数占用两个寄存器。给实例方法传递一个 <code>this</code> 引用作为其第一个参数。
+  </li>
+  </ul>
+</li><li>指令流中的存储单元是 16 位无符号数。某些指令中的某些位会被忽略/必须为 0。
+</li>
+<li>指令并非一定限于特定类型。例如,在不做任何解释的情况下移动 32 位寄存器值的指令不一定非得指定是在移动整数还是浮点数。
+</li>
+<li>对字符串、类型、字段和方法的引用有单独枚举和已编入索引的常量池。
+</li>
+<li>按位字面数据在指令流中内嵌表示。</li>
+<li>在实践中,一个方法需要 16 个以上的寄存器不太常见,而需要 8 个以上的寄存器却相当普遍,因此很多指令仅限于寻址前 16 个寄存器。<i></i>在合理的可能情况下,指令允许引用最多前 256 个寄存器。此外,某些指令还具有允许更多寄存器的变体,包括可寻址 <code>v0</code> - <code>v65535</code> 范围内的寄存器的一对 catch-all <code>move</code> 指令。如果指令变体不能用于寻址所需的寄存器,寄存器内容会(在运算前)从原始寄存器移动到低位寄存器和/或(在运算后)从低位结果寄存器移动到高位寄存器。
+</li>
+<li>存在几个“伪指令”,用来容纳被常规指令(例如,<code>fill-array-data</code>)引用的可变长度数据有效负荷。在正常的执行流程中绝对不能遇到这类指令。此外,这类指令必须位于偶数字节码偏移(即以 4 字节对齐)上。为了满足这一要求,如果这类指令未对齐,则 dex 生成工具必须发出额外的 <code>nop</code> 指令来进行填充。最后,虽然并非必须这样做,但是大多数工具会选择在方法的末尾发出这些额外的指令,否则可能需要在这些方法周围分布额外的指令。
+</li>
+<li>如果安装到正在运行的系统中,那么在安装过程中,静态链接优化可能会更改某些指令的格式。这样可以在链接已知之后加快执行的速度。有关建议的变体,请参阅相关的<a href="instruction-formats.html">指令格式文档</a>。使用“建议”一词是因为并非必须强制实施这些变体。
+</li>
+<li>人类语法和助记符:<ul>
+  <li>对参数进行 Dest-then-source 排序。</li>
+  <li>一些运算码具有消除歧义的名称后缀,这些后缀用来表明运算类型:<ul>
+    <li>常规类型的 32 位运算码未标记。</li>
+    <li>常规类型的 64 位运算码以 <code>-wide</code> 为后缀。</li>
+    <li>特定类型的运算码以其类型(或简单缩写)为后缀,这些类型包括:<code>-boolean</code>、<code>-byte</code>、<code>-char</code>、<code>-short</code>、<code>-int</code>、<code>-long</code>、<code>-float</code>、<code>-double</code>、<code>-object</code>、<code>-string</code>、<code>-class</code> 和 <code>-void</code>。</li>
+    </ul>
+  </li>
+  <li>一些运算码具有消除歧义的后缀,这些后缀用于区分具有不同指令版式或选项的相同运算。这些后缀与主要名称之间以斜杠(“<code>/</code>”)分开,主要目的是使生成和解析可执行文件的代码中存在与静态常量的一对一映射关系(即,降低让代码查看者感到模糊不清的可能性)。
+  </li>
+  <li>在本文档的说明部分,我们使用 4 位宽的字符来强调值的宽度(例如,表示常量的范围或可能寻址的寄存器的数量)。
+  </li>
+  <li>例如,在指令“<code>move-wide/from16 vAA, vBBBB</code>”中:<ul>
+    <li>“<code>move</code>”为基础运算码,表示这是基本运算(移动寄存器的值)。</li>
+    <li>“<code>wide</code>”为名称后缀,表示指令对较宽(64 位)数据进行运算。</li>
+    <li>“<code>from16</code>”为运算码后缀,表示具有 16 位寄存器引用源的变体。</li>
+    <li>“<code>vAA</code>”为目标寄存器(隐含在运算中;并且,规定目标参数始终在前),取值范围为 <code>v0</code> - <code>v255</code>。</li>
+    <li>“<code>vBBBB</code>”为源寄存器,取值范围为 <code>v0</code> - <code>v65535</code>。</li>
+    </ul>
+  </li>
+  </ul>
+</li>
+<li>请参阅<a href="instruction-formats.html">指令格式文档</a>,详细了解各种指令格式(在“运算和格式”下列出)以及运算码语法。
+</li>
+<li>请参阅 <a href="dex-format.html"><code>.dex</code> 文件格式文档</a>,详细了解字节码如何融入整个编码环境。
+</li>
+</ul>
+
+<h2 id="instructions">字节码集合的总结</h2>
+
+<table class="instruc">
+<thead>
+<tr>
+  <th>运算和格式</th>
+  <th>助记符/语法</th>
+  <th>参数</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>00 10x</td>
+  <td>nop</td>
+  <td> </td>
+  <td>空循环。
+    <p class="note"><strong>注意</strong>:数据传送伪指令用此运算码来标记,在这种情况下,运算码单元的高阶字节表示数据的性质。请参阅下文的“<code>packed-switch-payload</code> 格式”、“<code>sparse-switch-payload</code> 格式”和“<code>fill-array-data-payload</code> 格式”。</p>
+  </td>
+</tr>
+<tr>
+  <td>01 12x</td>
+  <td>move vA, vB</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 源寄存器(4 位)</td>
+  <td>将一个非对象寄存器的内容移到另一个非对象寄存器中。</td>
+</tr>
+<tr>
+  <td>02 22x</td>
+  <td>move/from16 vAA, vBBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 源寄存器(16 位)</td>
+  <td>将一个非对象寄存器的内容移到另一个非对象寄存器中。</td>
+</tr>
+<tr>
+  <td>03 32x</td>
+  <td>move/16 vAAAA, vBBBB</td>
+  <td><code>A:</code> 目标寄存器(16 位)<br />
+    <code>B:</code> 源寄存器(16 位)</td>
+  <td>将一个非对象寄存器的内容移到另一个非对象寄存器中。</td>
+</tr>
+<tr>
+  <td>04 12x</td>
+  <td>move-wide vA, vB</td>
+  <td><code>A:</code> 目标寄存器对(4 位)<br />
+    <code>B:</code> 源寄存器对(4 位)</td>
+  <td>将一个寄存器对的内容移到另一个寄存器对中。
+    <p class="note"><strong>注意</strong>:可以从 <code>v<i>N</i></code> 移到 <code>v<i>N-1</i></code> 或 <code>v<i>N+1</i></code>,因此必须在执行写入运算之前,为要读取的寄存器对的两部分均安排实现。</p>
+  </td>
+</tr>
+<tr>
+  <td>05 22x</td>
+  <td>move-wide/from16 vAA, vBBBB</td>
+  <td><code>A:</code> 目标寄存器对(8 位)<br />
+    <code>B:</code> 源寄存器对(16 位)</td>
+  <td>将一个寄存器对的内容移到另一个寄存器对中。
+    <p class="note"><strong>注意</strong>:实现的注意事项与上文的 <code>move-wide</code> 相同。</p>
+  </td>
+</tr>
+<tr>
+  <td>06 32x</td>
+  <td>move-wide/16 vAAAA, vBBBB</td>
+  <td><code>A:</code> 目标寄存器对(16 位)<br />
+    <code>B:</code> 源寄存器对(16 位)</td>
+  <td>将一个寄存器对的内容移到另一个寄存器对中。
+    <p class="note"><strong>注意</strong>:实现的注意事项与上文的 <code>move-wide</code> 相同。</p>
+  </td>
+</tr>
+<tr>
+  <td>07 12x</td>
+  <td>move-object vA, vB</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 源寄存器(4 位)</td>
+  <td>将一个对象传送寄存器的内容移到另一个对象传送寄存器中。</td>
+</tr>
+<tr>
+  <td>08 22x</td>
+  <td>move-object/from16 vAA, vBBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 源寄存器(16 位)</td>
+  <td>将一个对象传送寄存器的内容移到另一个对象传送寄存器中。</td>
+</tr>
+<tr>
+  <td>09 32x</td>
+  <td>move-object/16 vAAAA, vBBBB</td>
+  <td><code>A:</code> 目标寄存器(16 位)<br />
+    <code>B:</code> 源寄存器(16 位)</td>
+  <td>将一个对象传送寄存器的内容移到另一个对象传送寄存器中。</td>
+</tr>
+<tr>
+  <td>0a 11x</td>
+  <td>move-result vAA</td>
+  <td><code>A:</code> 目标寄存器(8 位)</td>
+  <td>将最新的 <code>invoke-<i>kind</i></code> 的单字非对象结果移到指定的寄存器中。该指令必须紧跟在(单字非对象)结果不会被忽略的 <code>invoke-<i>kind</i></code> 之后执行,否则无效。</td>
+</tr>
+<tr>
+  <td>0b 11x</td>
+  <td>move-result-wide vAA</td>
+  <td><code>A:</code> 目标寄存器对(8 位)</td>
+  <td>将最新的 <code>invoke-<i>kind</i></code> 的双字结果移到指定的寄存器对中。该指令必须紧跟在(双字)结果不会被忽略的 <code>invoke-<i>kind</i></code> 之后执行,否则无效。</td>
+</tr>
+<tr>
+  <td>0c 11x</td>
+  <td>move-result-object vAA</td>
+  <td><code>A:</code> 目标寄存器(8 位)</td>
+  <td>将最新的 <code>invoke-<i>kind</i></code> 的对象结果移到指定的寄存器中。该指令必须紧跟在(对象)结果不会被忽略的 <code>invoke-<i>kind</i></code> 或 <code>filled-new-array</code> 之后执行,否则无效。</td>
+</tr>
+<tr>
+  <td>0d 11x</td>
+  <td>move-exception vAA</td>
+  <td><code>A:</code> 目标寄存器(8 位)</td>
+  <td>将刚刚捕获的异常保存到给定寄存器中。该指令必须为捕获的异常不会被忽略的任何异常处理程序的第一条指令,且该指令必须仅作为异常处理程序的第一条指令执行,否则无效。<i></i></td>
+</tr>
+<tr>
+  <td>0e 10x</td>
+  <td>return-void</td>
+  <td> </td>
+  <td>从 <code>void</code> 方法返回。</td>
+</tr>
+<tr>
+  <td>0f 11x</td>
+  <td>return vAA</td>
+  <td><code>A:</code> 返回值寄存器(8 位)</td>
+  <td>从单字宽度(32 位)非对象值返回方法返回。
+  </td>
+</tr>
+<tr>
+  <td>10 11x</td>
+  <td>return-wide vAA</td>
+  <td><code>A:</code> 返回值寄存器对(8 位)</td>
+  <td>从双字宽度(64 位)值返回方法返回。</td>
+</tr>
+<tr>
+  <td>11 11x</td>
+  <td>return-object vAA</td>
+  <td><code>A:</code> 返回值寄存器(8 位)</td>
+  <td>从对象返回方法返回。</td>
+</tr>
+<tr>
+  <td>12 11n</td>
+  <td>const/4 vA, #+B</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 有符号整数(4 位)</td>
+  <td>将给定的字面值(符号扩展为 32 位)移到指定的寄存器中。</td>
+</tr>
+<tr>
+  <td>13 21s</td>
+  <td>const/16 vAA, #+BBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 有符号整数(16 位)</td>
+  <td>将给定的字面值(符号扩展为 32 位)移到指定的寄存器中。</td>
+</tr>
+<tr>
+  <td>14 31i</td>
+  <td>const vAA, #+BBBBBBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 任意 32 位常量</td>
+  <td>将给定的字面值移到指定的寄存器中。</td>
+</tr>
+<tr>
+  <td>15 21h</td>
+  <td>const/high16 vAA, #+BBBB0000</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 有符号整数(16 位)</td>
+  <td>将给定的字面值(右零扩展为 32 位)移到指定的寄存器中。</td>
+</tr>
+<tr>
+  <td>16 21s</td>
+  <td>const-wide/16 vAA, #+BBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 有符号整数(16 位)</td>
+  <td>将给定的字面值(符号扩展为 64 位)移到指定的寄存器对中。</td>
+</tr>
+<tr>
+  <td>17 31i</td>
+  <td>const-wide/32 vAA, #+BBBBBBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 有符号整数(32 位)</td>
+  <td>将给定的字面值(符号扩展为 64 位)移到指定的寄存器对中。</td>
+</tr>
+<tr>
+  <td>18 51l</td>
+  <td>const-wide vAA, #+BBBBBBBBBBBBBBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 任意双字宽度(64 位)常量</td>
+  <td>将给定的字面值移到指定的寄存器对中。</td>
+</tr>
+<tr>
+  <td>19 21h</td>
+  <td>const-wide/high16 vAA, #+BBBB000000000000</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 有符号整数(16 位)</td>
+  <td>将给定的字面值(右零扩展为 64 位)移到指定的寄存器对中。</td>
+</tr>
+<tr>
+  <td>1a 21c</td>
+  <td>const-string vAA, string@BBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 字符串索引</td>
+  <td>将通过给定的索引获取的字符串引用移到指定的寄存器中。</td>
+</tr>
+<tr>
+  <td>1b 31c</td>
+  <td>const-string/jumbo vAA, string@BBBBBBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 字符串索引</td>
+  <td>将通过给定的索引获取的字符串引用移到指定的寄存器中。</td>
+</tr>
+<tr>
+  <td>1c 21c</td>
+  <td>const-class vAA, type@BBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 类型索引</td>
+  <td>将通过给定的索引获取的类引用移到指定的寄存器中。如果指定的类型是原始类型,则将存储对原始类型的退化类的引用。</td>
+</tr>
+<tr>
+  <td>1d 11x</td>
+  <td>monitor-enter vAA</td>
+  <td><code>A:</code> 引用传送寄存器(8 位)</td>
+  <td>获取指定对象的监视锁。</td>
+</tr>
+<tr>
+  <td>1e 11x</td>
+  <td>monitor-exit vAA</td>
+  <td><code>A:</code> 引用传送寄存器(8 位)</td>
+  <td>释放指定对象的监视锁。
+    <p class="note"><strong>注意</strong>:如果该指令需要抛出异常,则必须以 pc 已提前超出该指令的方式抛出。不妨将其想象成,该指令(在一定意义上)已成功执行,并且在该指令之后但又在下一条指令找到机会执行之前抛出异常。<i></i><i></i>这种定义使得某个方法有可能将监视锁清理 catch-all(例如 <code>finally</code>)分块用作分块自身的监视锁清理,以便处理可能由于 <code>Thread.stop()</code> 的既往实现而抛出的任意异常,同时仍尽力维持适当程度的监视锁安全机制。</p>
+  </td>
+</tr>
+<tr>
+  <td>1f 21c</td>
+  <td>check-cast vAA, type@BBBB</td>
+  <td><code>A:</code> 引用传送寄存器(8 位)<br />
+    <code>B:</code> 类型索引(16 位)</td>
+  <td>如果给定寄存器中的引用不能转型为指定的类型,则抛出 <code>ClassCastException</code>。
+    <p class="note"><strong>注意</strong>:由于 <code>A</code> 必须始终是引用(而非原始值),因此如果 <code>B</code> 引用原始类型,则必然会在运行时失败(即抛出异常)。</p>
+  </td>
+</tr>
+<tr>
+  <td>20 22c</td>
+  <td>instance-of vA, vB, type@CCCC</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 引用传送寄存器(4 位)<br />
+    <code>C:</code> 类型索引(16 位)</td>
+  <td>如果指定的引用是给定类型的实例,则为给定目标寄存器赋值 <code>1</code>,否则赋值 <code>0</code>。
+    <p class="note"><strong>注意</strong>:由于 <code>B</code> 必须始终是引用(而非原始值),因此如果 <code>C</code> 引用原始类型,则始终赋值 <code>0</code>。</p></td>
+</tr>
+<tr>
+  <td>21 12x</td>
+  <td>array-length vA, vB</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 数组引用传送寄存器(4 位)</td>
+  <td>将指定数组的长度(条目个数)赋值给给定目标寄存器</td>
+</tr>
+<tr>
+  <td>22 21c</td>
+  <td>new-instance vAA, type@BBBB</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 类型索引</td>
+  <td>根据指定的类型构造新实例,并将对该新实例的引用存储到目标寄存器中。该类型必须引用非数组类。</td>
+</tr>
+<tr>
+  <td>23 22c</td>
+  <td>new-array vA, vB, type@CCCC</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 大小寄存器<br />
+    <code>C:</code> 类型索引</td>
+  <td>根据指定的类型和大小构造新数组。该类型必须是数组类型。</td>
+</tr>
+<tr>
+  <td>24 35c</td>
+  <td>filled-new-array {vC, vD, vE, vF, vG}, type@BBBB</td>
+  <td>
+    <code>A:</code> 数组大小和参数字数(4 位)<br />
+    <code>B:</code> 类型索引(16 位)<br />
+    <code>C..G:</code> 参数寄存器(每个寄存器各占 4 位)</td>
+  <td>根据给定类型和大小构造数组,并使用提供的内容填充该数组。该类型必须是数组类型。数组的内容必须是单字类型(即不接受 <code>long</code> 或 <code>double</code> 类型的数组,但接受引用类型的数组)。构造的实例会存储为一个“结果”,方式与方法调用指令存储其结果的方式相同,因此构造的实例必须移到后面紧跟 <code>move-result-object</code> 指令(如果要使用的话)的寄存器。</td>
+</tr>
+<tr>
+  <td>25 3rc</td>
+  <td>filled-new-array/range {vCCCC .. vNNNN}, type@BBBB</td>
+  <td><code>A:</code> 数组大小和参数字数(8 位)<br />
+    <code>B:</code> 类型索引(16 位)<br />
+    <code>C:</code> 第一个参数寄存器(16 位)<br />
+    <code>N = A + C - 1</code></td>
+  <td>根据给定类型和大小构造数组,并使用提供的内容填充该数组。相关的说明和限制与上文所述 <code>filled-new-array</code> 的相同。</td>
+</tr>
+<tr>
+  <td>26 31t</td>
+  <td>fill-array-data vAA, +BBBBBBBB(有关补充数据,请参阅下文的“<code>fill-array-data-payload</code> 格式”)<i></i></td>
+  <td><code>A:</code> 数组引用(8 位)<br />
+    <code>B:</code> 到表格数据伪指令的有符号“分支”偏移量(32 位)</td>
+  <td>用指定的数据填充给定数组。必须引用原始类型的数组,且数据表格的类型必须与数组匹配;此外,数据表格所包含的元素个数不得超出数组中的元素个数。也就是说,数组可能比表格大;如果是这样,仅设置数组的初始元素,而忽略剩余元素。
+  </td>
+</tr>
+<tr>
+  <td>27 11x</td>
+  <td>throw vAA</td>
+  <td><code>A:</code> 异常传送寄存器(8 位)<br /></td>
+  <td>抛出指定的异常。</td>
+</tr>
+<tr>
+  <td>28 10t</td>
+  <td>goto +AA</td>
+  <td><code>A:</code> 有符号分支偏移量(8 位)</td>
+  <td>无条件地跳转到指定的指令。
+    <p class="note"><strong>注意</strong>:分支偏移量不得为 <code>0</code>。(自旋循环可以用 <code>goto/32</code> 或通过在分支之前添加 <code>nop</code> 作为目标来正常构造)。</p>
+  </td>
+</tr>
+<tr>
+  <td>29 20t</td>
+  <td>goto/16 +AAAA</td>
+  <td><code>A:</code> 有符号分支偏移量(16 位)<br /></td>
+  <td>无条件地跳转到指定的指令。
+    <p class="note"><strong>注意</strong>:分支偏移量不得为 <code>0</code>。(自旋循环可以用 <code>goto/32</code> 或通过在分支之前添加 <code>nop</code> 作为目标来正常构造)。</p>
+  </td>
+</tr>
+<tr>
+  <td>2a 30t</td>
+  <td>goto/32 +AAAAAAAA</td>
+  <td><code>A:</code> 有符号分支偏移量(32 位)<br /></td>
+  <td>无条件地跳转到指定的指令。</td>
+</tr>
+<tr>
+  <td>2b 31t</td>
+  <td>packed-switch vAA, +BBBBBBBB(有关补充数据,请参阅下文的“<code>packed-switch-payload</code> 格式”)<i></i></td>
+  <td><code>A:</code> 要测试的寄存器<br />
+    <code>B:</code> 到表格数据伪指令的有符号“分支”偏移量(32 位)</td>
+  <td>通过使用与特定整数范围内的每个值相对应的偏移量表,基于给定寄存器中的值跳转到新指令;如果没有匹配项,则跳转到下一条指令。
+  </td>
+</tr>
+<tr>
+  <td>2c 31t</td>
+  <td>sparse-switch vAA, +BBBBBBBB(有关补充数据,请参阅下文的“<code>sparse-switch-payload</code> 格式”)<i></i></td>
+  <td><code>A:</code> 要测试的寄存器<br />
+    <code>B:</code> 到表格数据伪指令的有符号“分支”偏移量(32 位)</td>
+  <td>通过使用偏移值对的有序表,基于给定寄存器中的值跳转到新指令;如果没有匹配项,则跳转到下一条指令。
+  </td>
+</tr>
+<tr>
+  <td>2d..31 23x</td>
+  <td>cmp<i>kind</i> vAA, vBB, vCC<br />2d: cmpl-float <i>(lt bias)</i><br />2e: cmpg-float <i>(gt bias)</i><br />2f: cmpl-double <i>(lt bias)</i><br />30: cmpg-double <i>(gt bias)</i><br />31: cmp-long</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 第一个源寄存器或寄存器对<br />
+    <code>C:</code> 第二个源寄存器或寄存器对</td>
+  <td>执行指定的浮点或 <code>long</code> 比较;如果 <code>b == c</code>,则将 <code>a</code> 设为 <code>0</code>,如果 <code>b &gt; c</code>,则设为 <code>1</code>,或者,如果 <code>b &lt; c</code>,则设为 <code>-1</code>。浮点运算列出的“bias”表示如何处理 <code>NaN</code> 比较:对于 <code>NaN</code> 比较,“gt bias”指令返回 <code>1</code>,而“lt bias”指令返回 <code>-1</code>。
+    <p>例如,建议使用 <code>cmpg-float</code> 来检查浮点数是否满足条件 <code>x &lt; y</code>;如果结果是 <code>-1</code>,则表示测试为 true,其他值则表示测试为 false,原因是当前比较是有效比较但是结果不符合预期或其中一个值是 <code>NaN</code>。</p>
+  </td>
+</tr>
+<tr>
+  <td>32..37 22t</td>
+  <td>if-<i>test</i> vA, vB, +CCCC<br />32: if-eq<br />33: if-ne<br />34: if-lt<br />35: if-ge<br />36: if-gt<br />37: if-le<br />
+  </td>
+  <td><code>A:</code> 要测试的第一个寄存器(4 位)<br />
+    <code>B:</code> 要测试的第二个寄存器(4 位)<br />
+    <code>C:</code> 有符号分支偏移量(16 位)</td>
+  <td>如果两个给定寄存器的值比较结果符合预期,则分支到给定目标寄存器。
+    <p class="note"><strong>注意</strong>:分支偏移量不得为 <code>0</code>。(自旋循环可以通过围绕后向 <code>goto</code> 进行分支或通过在分支之前添加 <code>nop</code> 作为目标来正常构造。)</p>
+  </td>
+</tr>
+<tr>
+  <td>38..3d 21t</td>
+  <td>if-<i>test</i>z vAA, +BBBB<br />38: if-eqz<br />39: if-nez<br />3a: if-ltz<br />3b: if-gez<br />3c: if-gtz<br />3d: if-lez<br />
+  </td>
+  <td><code>A:</code> 要测试的寄存器(8 位)<br />
+    <code>B:</code> 有符号分支偏移量(16 位)</td>
+  <td>如果给定寄存器的值与 0 的比较结果符合预期,则分支到给定目标寄存器。
+    <p class="note"><strong>注意</strong>:分支偏移量不得为 <code>0</code>。(自旋循环可以通过围绕后向 <code>goto</code> 进行分支或通过在分支之前添加 <code>nop</code> 作为目标来正常构造。)</p>
+  </td>
+</tr>
+<tr>
+  <td>3e..43 10x</td>
+  <td><i>(未使用)</i></td>
+  <td> </td>
+  <td><i>(未使用)</i></td>
+</tr>
+<tr>
+  <td>44..51 23x</td>
+  <td><i>arrayop</i> vAA, vBB, vCC<br />44: aget<br />45: aget-wide<br />46: aget-object<br />47: aget-boolean<br />48: aget-byte<br />49: aget-char<br />4a: aget-short<br />4b: aput<br />4c: aput-wide<br />4d: aput-object<br />4e: aput-boolean<br />4f: aput-byte<br />50: aput-char<br />51: aput-short</td>
+  <td><code>A:</code> 值寄存器或寄存器对;可以是源寄存器,也可以是目标寄存器(8 位)<br />
+    <code>B:</code> 数组寄存器(8 位)<br />
+    <code>C:</code> 索引寄存器(8 位)</td>
+  <td>在给定数组的已标识索引处执行已确定的数组运算,并将结果加载或存储到值寄存器中。</td>
+</tr>
+<tr>
+  <td>52..5f 22c</td>
+  <td>i<i>instanceop</i> vA, vB, field@CCCC<br />52: iget<br />53: iget-wide<br />54: iget-object<br />55: iget-boolean<br />56: iget-byte<br />57: iget-char<br />58: iget-short<br />59: iput<br />5a: iput-wide<br />5b: iput-object<br />5c: iput-boolean<br />5d: iput-byte<br />5e: iput-char<br />5f: iput-short</td>
+  <td><code>A:</code> 值寄存器或寄存器对;可以是源寄存器,也可以是目标寄存器(4 位)<br />
+    <code>B:</code> 对象寄存器(4 位)<br />
+    <code>C:</code> 实例字段引用索引(16 位)</td>
+  <td>对已标识的字段执行已确定的对象实例字段运算,并将结果加载或存储到值寄存器中。
+    <p class="note"><strong>注意</strong>:这些运算码是静态链接的合理候选项,将字段参数更改为更直接的偏移量。</p>
+  </td>
+</tr>
+<tr>
+  <td>60..6d 21c</td>
+  <td>s<i>staticop</i> vAA, field@BBBB<br />60: sget<br />61: sget-wide<br />62: sget-object<br />63: sget-boolean<br />64: sget-byte<br />65: sget-char<br />66: sget-short<br />67: sput<br />68: sput-wide<br />69: sput-object<br />6a: sput-boolean<br />6b: sput-byte<br />6c: sput-char<br />6d: sput-short</td>
+  <td><code>A:</code> 值寄存器或寄存器对;可以是源寄存器,也可以是目标寄存器(8 位)<br />
+    <code>B:</code> 静态字段引用索引(16 位)</td>
+  <td>对已标识的静态字段执行已确定的对象静态字段运算,并将结果加载或存储到值寄存器中。
+    <p class="note"><strong>注意</strong>:这些运算码是静态链接的合理候选项,将字段参数更改为更直接的偏移量。</p>
+  </td>
+</tr>
+<tr>
+  <td>6e..72 35c</td>
+  <td>invoke-<i>kind</i> {vC, vD, vE, vF, vG}, meth@BBBB<br />6e: invoke-virtual<br />6f: invoke-super<br />70: invoke-direct<br />71: invoke-static<br />72: invoke-interface</td>
+  <td>
+    <code>A:</code> 参数字数(4 位)<br />
+    <code>B:</code> 方法引用索引(16 位)<br />
+    <code>C..G:</code> 参数寄存器(每个寄存器各占 4 位)</td>
+  <td>调用指定的方法。所得结果(如果有的话)可能与紧跟其后的相应 <code>move-result*</code> 变体指令一起存储。
+    <p>使用 <code>invoke-virtual</code> 调用正常的虚方法(该方法不是 <code>private</code>、<code>static</code> 或 <code>final</code>,也不是构造函数)。</p>
+    <p>当 <code>method_id</code> 引用非接口类方法时,使用 <code>invoke-super</code> 调用最近超类的虚方法(这与调用类中具有相同 <code>method_id</code> 的方法相反)。<code>invoke-virtual</code> 具有相同的方法限制。</p>
+    <p>在版本 <code>037</code> 或更高版本的 Dex 文件中,如果 <code>method_id</code> 引用接口方法,则使用 <code>invoke-super</code> 来调用在该接口上定义的该方法的最具体、未被覆盖版本。<code>invoke-virtual</code> 具有相同的方法限制。在版本 <code>037</code> 之前的 Dex 文件中,具有接口 <code>method_id</code> 是不当且未定义的。</p>
+    <p><code>invoke-direct</code> 用于调用非 <code>static</code> 直接方法(也就是说,本质上不可覆盖的实例方法,即 <code>private</code> 实例方法或构造函数)。</p>
+    <p><code>invoke-static</code> 用于调用 <code>static</code> 方法(该方法始终被视为直接方法)。</p>
+    <p><code>invoke-interface</code> 用于调用 <code>interface</code> 方法,也就是说,在具体类未知的对象上,使用引用 <code>interface</code> 的 <code>method_id</code>。</p>
+    <p class="note"><strong>注意</strong>:这些运算码是静态链接的合理候选项,将方法参数更改为更直接的偏移量(或相关的寄存器对)。</p>
+  </td>
+</tr>
+<tr>
+  <td>73 10x</td>
+  <td><i>(未使用)</i></td>
+  <td> </td>
+  <td><i>(未使用)</i></td>
+</tr>
+<tr>
+  <td>74..78 3rc</td>
+  <td>invoke-<i>kind</i>/range {vCCCC .. vNNNN}, meth@BBBB<br />74: invoke-virtual/range<br />75: invoke-super/range<br />76: invoke-direct/range<br />77: invoke-static/range<br />78: invoke-interface/range</td>
+  <td><code>A:</code> 参数字数(8 位)<br />
+    <code>B:</code> 方法引用索引(16 位)<br />
+    <code>C:</code> 第一个参数寄存器(16 位)<br />
+    <code>N = A + C - 1</code></td>
+  <td>调用指定的方法。有关详情、注意事项和建议,请参阅上文第一个 <code>invoke-<i>kind</i></code> 说明。
+  </td>
+</tr>
+<tr>
+  <td>79..7a 10x</td>
+  <td><i>(未使用)</i></td>
+  <td> </td>
+  <td><i>(未使用)</i></td>
+</tr>
+<tr>
+  <td>7b..8f 12x</td>
+  <td><i>unop</i> vA, vB<br />7b: neg-int<br />7c: not-int<br />7d: neg-long<br />7e: not-long<br />7f: neg-float<br />80: neg-double<br />81: int-to-long<br />82: int-to-float<br />83: int-to-double<br />84: long-to-int<br />85: long-to-float<br />86: long-to-double<br />87: float-to-int<br />88: float-to-long<br />89: float-to-double<br />8a: double-to-int<br />8b: double-to-long<br />8c: double-to-float<br />8d: int-to-byte<br />8e: int-to-char<br />8f: int-to-short</td>
+  <td><code>A:</code> 目标寄存器或寄存器对(4 位)<br />
+    <code>B:</code> 源寄存器或寄存器对(4 位)</td>
+  <td>对源寄存器执行已确定的一元运算,并将结果存储到目标寄存器中。</td>
+</tr>
+
+<tr>
+  <td>90..af 23x</td>
+  <td><i>binop</i> vAA, vBB, vCC<br />90: add-int<br />91: sub-int<br />92: mul-int<br />93: div-int<br />94: rem-int<br />95: and-int<br />96: or-int<br />97: xor-int<br />98: shl-int<br />99: shr-int<br />9a: ushr-int<br />9b: add-long<br />9c: sub-long<br />9d: mul-long<br />9e: div-long<br />9f: rem-long<br />a0: and-long<br />a1: or-long<br />a2: xor-long<br />a3: shl-long<br />a4: shr-long<br />a5: ushr-long<br />a6: add-float<br />a7: sub-float<br />a8: mul-float<br />a9: div-float<br />aa: rem-float<br />ab: add-double<br />ac: sub-double<br />ad: mul-double<br />ae: div-double<br />af: rem-double</td>
+  <td><code>A:</code> 目标寄存器或寄存器对(8 位)<br />
+    <code>B:</code> 第一个源寄存器或寄存器对(8 位)<br />
+    <code>C:</code> 第二个源寄存器或寄存器对(8 位)</td>
+  <td>对两个源寄存器执行已确定的二元运算,并将结果存储到目标寄存器中。
+    <p class="note"><strong>注意</strong>:与其他 <code>-long</code> 数学运算(对第一个和第二个源寄存器都采用寄存器对的运算)相反,<code>shl-long</code>、<code>shr-long</code> 和 <code>ushr-long</code> 对第一个源寄存器采用寄存器对(存放要移动的值),而对第二个源寄存器采用单个寄存器(存放移动的距离)。
+    </p>
+</td>
+</tr>
+<tr>
+  <td>b0..cf 12x</td>
+  <td><i>binop</i>/2addr vA, vB<br />b0: add-int/2addr<br />b1: sub-int/2addr<br />b2: mul-int/2addr<br />b3: div-int/2addr<br />b4: rem-int/2addr<br />b5: and-int/2addr<br />b6: or-int/2addr<br />b7: xor-int/2addr<br />b8: shl-int/2addr<br />b9: shr-int/2addr<br />ba: ushr-int/2addr<br />bb: add-long/2addr<br />bc: sub-long/2addr<br />bd: mul-long/2addr<br />be: div-long/2addr<br />bf: rem-long/2addr<br />c0: and-long/2addr<br />c1: or-long/2addr<br />c2: xor-long/2addr<br />c3: shl-long/2addr<br />c4: shr-long/2addr<br />c5: ushr-long/2addr<br />c6: add-float/2addr<br />c7: sub-float/2addr<br />c8: mul-float/2addr<br />c9: div-float/2addr<br />ca: rem-float/2addr<br />cb: add-double/2addr<br />cc: sub-double/2addr<br />cd: mul-double/2addr<br />ce: div-double/2addr<br />cf: rem-double/2addr</td>
+  <td><code>A:</code> 目标寄存器和第一个源寄存器或寄存器对(4 位)<br />
+    <code>B:</code> 第二个源寄存器或寄存器对(4 位)</td>
+  <td>对两个源寄存器执行已确定的二元运算,并将结果存储到第一个源寄存器中。
+    <p class="note"><strong>注意</strong>:与其他 <code>-long/2addr</code> 数学运算(对目标寄存器/第一个源寄存器和第二个源寄存器都采用寄存器对的运算)相反,<code>shl-long/2addr</code>、<code>shr-long/2addr</code> 和 <code>ushr-long/2addr</code> 对目标寄存器/第一个源寄存器采用寄存器对(存放要移动的值),而对第二个源寄存器采用单个寄存器(存放移动的距离)。
+    </p>
+  </td>
+</tr>
+<tr>
+  <td>d0..d7 22s</td>
+  <td><i>binop</i>/lit16 vA, vB, #+CCCC<br />d0: add-int/lit16<br />d1: rsub-int (reverse subtract)<br />d2: mul-int/lit16<br />d3: div-int/lit16<br />d4: rem-int/lit16<br />d5: and-int/lit16<br />d6: or-int/lit16<br />d7: xor-int/lit16</td>
+  <td><code>A:</code> 目标寄存器(4 位)<br />
+    <code>B:</code> 源寄存器(4 位)<br />
+    <code>C:</code> 有符号整数常量(16 位)</td>
+  <td>对指定的寄存器(第一个参数)和字面值(第二个参数)执行指定的二元运算,并将结果存储到目标寄存器中。
+    <p class="note"><strong>注意</strong>:<code>rsub-int</code> 不含后缀,因为此版本是其一系列运算码中的主运算码。另外,有关语义的详细信息,请参阅下文。
+    </p>
+  </td>
+</tr>
+<tr>
+  <td>d8..e2 22b</td>
+  <td><i>binop</i>/lit8 vAA, vBB, #+CC<br />d8: add-int/lit8<br />d9: rsub-int/lit8<br />da: mul-int/lit8<br />db: div-int/lit8<br />dc: rem-int/lit8<br />dd: and-int/lit8<br />de: or-int/lit8<br />df: xor-int/lit8<br />e0: shl-int/lit8<br />e1: shr-int/lit8<br />e2: ushr-int/lit8</td>
+  <td><code>A:</code> 目标寄存器(8 位)<br />
+    <code>B:</code> 源寄存器(8 位)<br />
+    <code>C:</code> 有符号整数常量(8 位)</td>
+  <td>对指定的寄存器(第一个参数)和字面值(第二个参数)执行指定的二元运算,并将结果存储到目标寄存器中。
+    <p class="note"><strong>注意</strong>:有关 <code>rsub-int</code> 语义的详细信息,请参阅下文。</p>
+  </td>
+</tr>
+<tr>
+  <td>e3..f9 10x</td>
+  <td><i>(未使用)</i></td>
+  <td> </td>
+  <td><i>(未使用)</i></td>
+</tr>
+<tr>
+  <td>fa 45cc</td>
+  <td>invoke-polymorphic {vC, vD, vE, vF, vG}, meth@BBBB, proto@HHHH</td>
+  <td>
+    <code>A:</code> 参数字数(4 位)<br />
+    <code>B:</code> 方法引用索引(16 位)<br />
+    <code>C:</code> 要调用的方法句柄引用(16 位)<br />
+    <code>D..G:</code> 参数寄存器(每个寄存器各占 4 位)<br />
+    <code>H:</code> 原型引用索引(16 位)<br />
+  </td>
+  <td>调用指定的方法句柄。所得结果(如果有的话)可能与紧跟其后的相应 <code>move-result*</code> 变体指令一起存储。
+    <p>方法引用必须针对 <code>java.lang.invoke.MethodHandle.invoke</code> 或 <code>java.lang.invoke.MethodHandle.invokeExact</code>。
+    </p><p>原型引用说明了所提供的参数类型和预期的返回类型。
+    </p><p><code>invoke-polymorphic</code> 字节码执行时可能会引发异常。有关这些异常的详情,请参阅 <code>java.lang.invoke.MethodHandle.invoke</code> 和 <code>java.lang.invoke.MethodHandle.invokeExact</code> 的 API 文档。
+    </p><p>存在于 <code>038</code> 和更高版本的 Dex 文件中。
+  </p></td>
+</tr>
+<tr>
+  <td>fb 4rcc</td>
+  <td>invoke-polymorphic/range {vCCCC .. vNNNN}, meth@BBBB, proto@HHHH</td>
+  <td>
+    <code>A:</code> 参数字数(8 位)<br />
+    <code>B:</code> 方法引用索引(16 位)<br />
+    <code>C:</code> 要调用的方法句柄引用(16 位)<br />
+    <code>H:</code> 原型引用索引(16 位)<br />
+    <code>N = A + C - 1</code>
+  </td>
+  <td>调用指定的方法句柄。有关详情,请参阅上文的 <code>invoke-polymorphic</code> 说明。
+    <p>存在于 <code>038</code> 和更高版本的 Dex 文件中。
+  </p></td>
+</tr>
+<tr>
+  <td>fc 35c</td>
+  <td>invoke-custom {vC, vD, vE, vF, vG}, call_site@BBBB</td>
+  <td>
+    <code>A:</code> 参数字数(4 位)<br />
+    <code>B:</code> 调用点引用索引(16 位)<br />
+    <code>C..G:</code> 参数寄存器(每个寄存器各占 4 位)</td>
+  <td>解析并调用指定的调用点。调用的结果(如果有的话)可能与紧跟其后的相应 <code>move-result*</code> 变体指令一起存储。
+
+    <p>该指令分两个阶段执行:调用点解析和调用点调用。
+
+    </p><p>调用点解析会检查指定的调用点是否有关联的 <code>java.lang.invoke.CallSite</code> 实例。如果没有,则使用 Dex 文件(请参阅 <a href="dex-format.html#call-site-item">call_site_item</a>)中存在的参数调用指定的调用点的引导链接器方法。引导链接器方法会返回 <code>java.lang.invoke.CallSite</code> 实例;如果不存在关联,则该实例将与指定的调用点关联。另一个线程可能已先进行了关联;如果是这种情况,则通过第一个关联的 <code>java.lang.invoke.CallSite</code> 实例继续执行该指令。
+
+    </p><p>调用点调用是对 <code>java.lang.invoke.MethodHandle</code> 目标进行调用,该目标属于所解析的 <code>java.lang.invoke.CallSite</code> 实例。调用目标就像执行 <code>invoke-polymorphic</code>(如上所述)一样,使用 <code>invoke-custom</code> 指令的方法句柄和作为精确方法句柄调用的参数。
+
+    </p><p>引导链接器方法引发的异常封装在 <code>java.lang.BootstrapMethodError</code> 中。如果出现下列情况,还将引发 <code>BootstrapMethodError</code>:</p><ul>
+        <li>该引导链接器方法无法返回 <code>java.lang.invoke.CallSite</code> 实例。</li>
+        <li>返回的 <code>java.lang.invoke.CallSite</code> 具有 <code>null</code> 方法句柄目标。</li>
+        <li>该方法句柄目标不属于所请求的类型。</li>
+      </ul>
+    <p>存在于 <code>038</code> 和更高版本的 Dex 文件中。
+  </p></td>
+</tr>
+<tr>
+  <td>fd 3rc</td>
+  <td>invoke-custom/range {vCCCC .. vNNNN}, call_site@BBBB</td>
+  <td>
+    <code>A:</code> 参数字数(8 位)<br />
+    <code>B:</code> 调用点引用索引(16 位)<br />
+    <code>C:</code> 第一个参数寄存器(16 位)<br />
+    <code>N = A + C - 1</code>
+  </td>
+  <td>解析并调用一个调用点。有关详情,请参阅上文的 <code>invoke-custom</code> 说明。
+    <p>存在于 <code>038</code> 和更高版本的 Dex 文件中。
+  </p></td>
+</tr>
+<tr>
+  <td>fe..ff 10x</td>
+  <td><i>(未使用)</i></td>
+  <td> </td>
+  <td><i>(未使用)</i></td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="packed-switch">packed-switch-payload 格式</h2>
+
+<table class="supplement">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>ident</td>
+  <td>ushort = 0x0100</td>
+  <td>识别伪运算码</td>
+</tr>
+<tr>
+  <td>size</td>
+  <td>ushort</td>
+  <td>表格中的条目数</td>
+</tr>
+<tr>
+  <td>first_key</td>
+  <td>int</td>
+  <td>第一位(即最低位)switch case 的值</td>
+</tr>
+<tr>
+  <td>targets</td>
+  <td>int[]</td>
+  <td>与 <code>size</code> 相对的分支目标的列表。这些目标相对应的是 switch 运算码的地址(而非此表格的地址)。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<p class="note"><strong>注意</strong>:此表格的实例的代码单元总数为 <code>(size * 2) + 4</code>。</p>
+
+<h2 id="sparse-switch">sparse-switch-payload 格式</h2>
+
+<table class="supplement">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>ident</td>
+  <td>ushort = 0x0200</td>
+  <td>识别伪运算码</td>
+</tr>
+<tr>
+  <td>size</td>
+  <td>ushort</td>
+  <td>表格中的条目数</td>
+</tr>
+<tr>
+  <td>keys</td>
+  <td>int[]</td>
+  <td><code>size</code> 键值列表,从低到高排序</td>
+</tr>
+<tr>
+  <td>targets</td>
+  <td>int[]</td>
+  <td>与 <code>size</code> 相对应的分支目标的列表,每一个目标对应相同索引下的键值。这些目标相对应的是 switch 运算码的地址(而非此表格的地址)。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<p class="note"><strong>注意</strong>:此表格的实例的代码单元总数为 <code>(size * 4) + 2</code>。</p>
+
+<h2 id="fill-array">fill-array-data-payload 格式</h2>
+
+<table class="supplement">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>ident</td>
+  <td>ushort = 0x0300</td>
+  <td>识别伪运算码</td>
+</tr>
+<tr>
+  <td>element_width</td>
+  <td>ushort</td>
+  <td>每个元素的字节数</td>
+</tr>
+<tr>
+  <td>size</td>
+  <td>uint</td>
+  <td>表格中的元素数</td>
+</tr>
+<tr>
+  <td>data</td>
+  <td>ubyte[]</td>
+  <td>数据值</td>
+</tr>
+</tbody>
+</table>
+
+<p class="note"><strong>注意</strong>:此表格的实例的代码单元总数为 <code>(size * element_width + 1) / 2 + 4</code>。</p>
+
+<h2 id="math">数学运算详情</h2>
+
+<p class="note"><strong>注意</strong>:除非另有说明,否则浮点运算必须遵循 IEEE 754 规则,使用最近舍入和渐进式下溢。</p>
+
+<table class="math">
+<thead>
+<tr>
+  <th>运算码</th>
+  <th>C 语义</th>
+  <th>备注</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>neg-int</td>
+  <td>int32 a;<br />int32 result = -a;</td>
+  <td>一元二进制补码。</td>
+</tr>
+<tr>
+  <td>not-int</td>
+  <td>int32 a;<br />int32 result = ~a;</td>
+  <td>一元反码。</td>
+</tr>
+<tr>
+  <td>neg-long</td>
+  <td>int64 a;<br />int64 result = -a;</td>
+  <td>一元二进制补码。</td>
+</tr>
+<tr>
+  <td>not-long</td>
+  <td>int64 a;<br />int64 result = ~a;</td>
+  <td>一元反码。</td>
+</tr>
+<tr>
+  <td>neg-float</td>
+  <td>float a;<br />float result = -a;</td>
+  <td>浮点否定。</td>
+</tr>
+<tr>
+  <td>neg-double</td>
+  <td>double a;<br />double result = -a;</td>
+  <td>浮点否定。</td>
+</tr>
+<tr>
+  <td>int-to-long</td>
+  <td>int32 a;<br />int64 result = (int64) a;</td>
+  <td>将 <code>int32</code> 符号扩展为 <code>int64</code>。</td>
+</tr>
+<tr>
+  <td>int-to-float</td>
+  <td>int32 a;<br />float result = (float) a;</td>
+  <td>使用最近舍入,将 <code>int32</code> 转换为 <code>float</code>。这会导致某些值不够精准。
+  </td>
+</tr>
+<tr>
+  <td>int-to-double</td>
+  <td>int32 a;<br />double result = (double) a;</td>
+  <td>将 <code>int32</code> 转换为 <code>double</code>。</td>
+</tr>
+<tr>
+  <td>long-to-int</td>
+  <td>int64 a;<br />int32 result = (int32) a;</td>
+  <td>将 <code>int64</code> 截断为 <code>int32</code>。</td>
+</tr>
+<tr>
+  <td>long-to-float</td>
+  <td>int64 a;<br />float result = (float) a;</td>
+  <td>使用最近舍入,将 <code>int64</code> 转换为 <code>float</code>。这会导致某些值不够精准。
+  </td>
+</tr>
+<tr>
+  <td>long-to-double</td>
+  <td>int64 a;<br />double result = (double) a;</td>
+  <td>使用最近舍入,将 <code>int64</code> 转换为 <code>double</code>。这会导致某些值不够精准。
+  </td>
+</tr>
+<tr>
+  <td>float-to-int</td>
+  <td>float a;<br />int32 result = (int32) a;</td>
+  <td>使用向零舍入,将 <code>float</code> 转换为 <code>int32</code>。<code>NaN</code> 和 <code>-0.0</code>(负零)转换为整数 <code>0</code>。无穷数和因所占幅面过大而无法表示的值根据符号转换为 <code>0x7fffffff</code> 或 <code>-0x80000000</code>。
+  </td>
+</tr>
+<tr>
+  <td>float-to-long</td>
+  <td>float a;<br />int64 result = (int64) a;</td>
+  <td>使用向零舍入,将 <code>float</code> 转换为 <code>int64</code>。适用于 <code>float-to-int</code> 的特殊情况规则也适用于此,但超出范围的值除外,这些值根据符号转换为 <code>0x7fffffffffffffff</code> 或 <code>-0x8000000000000000</code>。
+  </td>
+</tr>
+<tr>
+  <td>float-to-double</td>
+  <td>float a;<br />double result = (double) a;</td>
+  <td>将 <code>float</code> 转换为 <code>double</code>,值依然精准。
+  </td>
+</tr>
+<tr>
+  <td>double-to-int</td>
+  <td>double a;<br />int32 result = (int32) a;</td>
+  <td>使用向零舍入,将 <code>double</code> 转换为 <code>int32</code>。适用于 <code>float-to-int</code> 的特殊情况规则也适用于此。
+  </td>
+</tr>
+<tr>
+  <td>double-to-long</td>
+  <td>double a;<br />int64 result = (int64) a;</td>
+  <td>使用向零舍入,将 <code>double</code> 转换为 <code>int64</code>。适用于 <code>float-to-long</code> 的特殊情况规则也适用于此。
+  </td>
+</tr>
+<tr>
+  <td>double-to-float</td>
+  <td>double a;<br />float result = (float) a;</td>
+  <td>使用最近舍入,将 <code>double</code> 转换为 <code>float</code>。这会导致某些值不够精准。
+  </td>
+</tr>
+<tr>
+  <td>int-to-byte</td>
+  <td>int32 a;<br />int32 result = (a &lt;&lt; 24) &gt;&gt; 24;</td>
+  <td>符号扩展结果,将 <code>int32</code> 截断为 <code>int8</code>。
+  </td>
+</tr>
+<tr>
+  <td>int-to-char</td>
+  <td>int32 a;<br />int32 result = a &amp; 0xffff;</td>
+  <td>无需符号扩展,将 <code>int32</code> 截断为 <code>uint16</code>。
+  </td>
+</tr>
+<tr>
+  <td>int-to-short</td>
+  <td>int32 a;<br />int32 result = (a &lt;&lt; 16) &gt;&gt; 16;</td>
+  <td>符号扩展结果,将 <code>int32</code> 截断为 <code>int16</code>。
+  </td>
+</tr>
+<tr>
+  <td>add-int</td>
+  <td>int32 a, b;<br />int32 result = a + b;</td>
+  <td>二进制补码加法。</td>
+</tr>
+<tr>
+  <td>sub-int</td>
+  <td>int32 a, b;<br />int32 result = a - b;</td>
+  <td>二进制补码减法。</td>
+</tr>
+<tr>
+  <td>rsub-int</td>
+  <td>int32 a, b;<br />int32 result = b - a;</td>
+  <td>二进制补码反向减法。</td>
+</tr>
+<tr>
+  <td>mul-int</td>
+  <td>int32 a, b;<br />int32 result = a * b;</td>
+  <td>二进制补码乘法。</td>
+</tr>
+<tr>
+  <td>div-int</td>
+  <td>int32 a, b;<br />int32 result = a / b;</td>
+  <td>二进制补码除法,向零舍入(即截断为整数)。如果 <code>b == 0</code>,则会抛出 <code>ArithmeticException</code>。
+  </td>
+</tr>
+<tr>
+  <td>rem-int</td>
+  <td>int32 a, b;<br />int32 result = a % b;</td>
+  <td>二进制补码除后取余数。结果的符号与 <code>a</code> 的符号相同,可更精确地定义为 <code>result == a - (a / b) * b</code>。如果 <code>b == 0</code>,则会抛出 <code>ArithmeticException</code>。
+  </td>
+</tr>
+<tr>
+  <td>and-int</td>
+  <td>int32 a, b;<br />int32 result = a &amp; b;</td>
+  <td>按位 AND。</td>
+</tr>
+<tr>
+  <td>or-int</td>
+  <td>int32 a, b;<br />int32 result = a | b;</td>
+  <td>按位 OR。</td>
+</tr>
+<tr>
+  <td>xor-int</td>
+  <td>int32 a, b;<br />int32 result = a ^ b;</td>
+  <td>按位 XOR。</td>
+</tr>
+<tr>
+  <td>shl-int</td>
+  <td>int32 a, b;<br />int32 result = a &lt;&lt; (b &amp; 0x1f);</td>
+  <td>按位左移(带掩码参数)。</td>
+</tr>
+<tr>
+  <td>shr-int</td>
+  <td>int32 a, b;<br />int32 result = a &gt;&gt; (b &amp; 0x1f);</td>
+  <td>按位有符号右移(带掩码参数)。</td>
+</tr>
+<tr>
+  <td>ushr-int</td>
+  <td>uint32 a, b;<br />int32 result = a &gt;&gt; (b &amp; 0x1f);</td>
+  <td>按位无符号右移(带掩码参数)。</td>
+</tr>
+<tr>
+  <td>add-long</td>
+  <td>int64 a, b;<br />int64 result = a + b;</td>
+  <td>二进制补码加法。</td>
+</tr>
+<tr>
+  <td>sub-long</td>
+  <td>int64 a, b;<br />int64 result = a - b;</td>
+  <td>二进制补码减法。</td>
+</tr>
+<tr>
+  <td>mul-long</td>
+  <td>int64 a, b;<br />int64 result = a * b;</td>
+  <td>二进制补码乘法。</td>
+</tr>
+<tr>
+  <td>div-long</td>
+  <td>int64 a, b;<br />int64 result = a / b;</td>
+  <td>二进制补码除法,向零舍入(即截断为整数)。如果 <code>b == 0</code>,则会抛出 <code>ArithmeticException</code>。
+  </td>
+</tr>
+<tr>
+  <td>rem-long</td>
+  <td>int64 a, b;<br />int64 result = a % b;</td>
+  <td>二进制补码除后取余数。结果的符号与 <code>a</code> 的符号相同,可更精确地定义为 <code>result == a - (a / b) * b</code>。如果 <code>b == 0</code>,则会抛出 <code>ArithmeticException</code>。
+  </td>
+</tr>
+<tr>
+  <td>and-long</td>
+  <td>int64 a, b;<br />int64 result = a &amp; b;</td>
+  <td>按位 AND。</td>
+</tr>
+<tr>
+  <td>or-long</td>
+  <td>int64 a, b;<br />int64 result = a | b;</td>
+  <td>按位 OR。</td>
+</tr>
+<tr>
+  <td>xor-long</td>
+  <td>int64 a, b;<br />int64 result = a ^ b;</td>
+  <td>按位 XOR。</td>
+</tr>
+<tr>
+  <td>shl-long</td>
+  <td>int64 a;<br />int32 b;<br />int64 result = a &lt;&lt; (b &amp; 0x3f);</td>
+  <td>按位左移(带掩码参数)。</td>
+</tr>
+<tr>
+  <td>shr-long</td>
+  <td>int64 a;<br />int32 b;<br />int64 result = a &gt;&gt; (b &amp; 0x3f);</td>
+  <td>按位有符号右移(带掩码参数)。</td>
+</tr>
+<tr>
+  <td>ushr-long</td>
+  <td>uint64 a;<br />int32 b;<br />int64 result = a &gt;&gt; (b &amp; 0x3f);</td>
+  <td>按位无符号右移(带掩码参数)。</td>
+</tr>
+<tr>
+  <td>add-float</td>
+  <td>float a, b;<br />float result = a + b;</td>
+  <td>浮点加法。</td>
+</tr>
+<tr>
+  <td>sub-float</td>
+  <td>float a, b;<br />float result = a - b;</td>
+  <td>浮点减法。</td>
+</tr>
+<tr>
+  <td>mul-float</td>
+  <td>float a, b;<br />float result = a * b;</td>
+  <td>浮点乘法。</td>
+</tr>
+<tr>
+  <td>div-float</td>
+  <td>float a, b;<br />float result = a / b;</td>
+  <td>浮点除法。</td>
+</tr>
+<tr>
+  <td>rem-float</td>
+  <td>float a, b;<br />float result = a % b;</td>
+  <td>浮点除后取余数。该函数不同于 IEEE 754 取余,定义为 <code>result == a - roundTowardZero(a / b) * b</code>。
+  </td>
+</tr>
+<tr>
+  <td>add-double</td>
+  <td>double a, b;<br />double result = a + b;</td>
+  <td>浮点加法。</td>
+</tr>
+<tr>
+  <td>sub-double</td>
+  <td>double a, b;<br />double result = a - b;</td>
+  <td>浮点减法。</td>
+</tr>
+<tr>
+  <td>mul-double</td>
+  <td>double a, b;<br />double result = a * b;</td>
+  <td>浮点乘法。</td>
+</tr>
+<tr>
+  <td>div-double</td>
+  <td>double a, b;<br />double result = a / b;</td>
+  <td>浮点除法。</td>
+</tr>
+<tr>
+  <td>rem-double</td>
+  <td>double a, b;<br />double result = a % b;</td>
+  <td>浮点除后取余数。该函数不同于 IEEE 754 取余,定义为 <code>result == a - roundTowardZero(a / b) * b</code>。
+  </td>
+</tr>
+</tbody>
+</table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/devices/tech/dalvik/dex-format.html b/zh-cn/devices/tech/dalvik/dex-format.html
new file mode 100644
index 0000000..cd1e310
--- /dev/null
+++ b/zh-cn/devices/tech/dalvik/dex-format.html
@@ -0,0 +1,2719 @@
+<html devsite><head>
+    <title>Dalvik 可执行文件格式</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>本文档介绍了 <code>.dex</code> 文件的版式和内容,这类文件用于保存一系列类定义及其关联的辅助数据。</p>
+
+<h2 id="types">类型指南</h2>
+
+<table class="guide">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>byte</td>
+  <td>8 位有符号整数</td>
+</tr>
+<tr>
+  <td>ubyte</td>
+  <td>8 位无符号整数</td>
+</tr>
+<tr>
+  <td>short</td>
+  <td>16 位有符号整数,采用小端字节序</td>
+</tr>
+<tr>
+  <td>ushort</td>
+  <td>16 位无符号整数,采用小端字节序</td>
+</tr>
+<tr>
+  <td>int</td>
+  <td>32 位有符号整数,采用小端字节序</td>
+</tr>
+<tr>
+  <td>uint</td>
+  <td>32 位无符号整数,采用小端字节序</td>
+</tr>
+<tr>
+  <td>long</td>
+  <td>64 位有符号整数,采用小端字节序</td>
+</tr>
+<tr>
+  <td>ulong</td>
+  <td>64 位无符号整数,采用小端字节序</td>
+</tr>
+<tr>
+  <td>sleb128</td>
+  <td>有符号 LEB128,可变长度(见下文)</td>
+</tr>
+<tr>
+  <td>uleb128</td>
+  <td>无符号 LEB128,可变长度(见下文)</td>
+</tr>
+<tr>
+  <td>uleb128p1</td>
+  <td>无符号 LEB128 加 <code>1</code>,可变长度(见下文)</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="leb128">LEB128</h3>
+
+<p>LEB128(“<b>L</b>ittle-<b>E</b>ndian <b>B</b>ase <b>128</b>”)表示任意有符号或无符号整数的可变长度编码。该格式借鉴了 <a href="http://dwarfstd.org/Dwarf3Std.php">DWARF3</a> 规范。在 <code>.dex</code> 文件中,LEB128 仅用于对 32 位数字进行编码。</p>
+
+<p>每个 LEB128 编码值均由 1-5 个字节组成,共同表示一个 32 位的值。每个字节均已设置其最高有效位(序列中的最后一个字节除外,其最高有效位已清除)。每个字节的剩余 7 位均为有效负荷,即第一个字节中有 7 个最低有效位,第二个字节中也是 7 个,依此类推。对于有符号 LEB128 (<code>sleb128</code>),序列中最后一个字节的最高有效负荷位会进行符号扩展,以生成最终值。在无符号情况 (<code>uleb128</code>) 下,任何未明确表示的位都会被解译为 <code>0</code>。
+
+<table class="leb128Bits">
+<thead>
+<tr><th colspan="16">双字节 LEB128 值的按位图</th></tr>
+<tr>
+  <th colspan="8">第一个字节</th><th colspan="8">第二个字节</th></tr>
+</thead>
+<tbody>
+<tr>
+  <td class="start1"><code>1</code></td>
+  <td>bit<sub>6</sub></td>
+  <td>bit<sub>5</sub></td>
+  <td>bit<sub>4</sub></td>
+  <td>bit<sub>3</sub></td>
+  <td>bit<sub>2</sub></td>
+  <td>bit<sub>1</sub></td>
+  <td>bit<sub>0</sub></td>
+  <td class="start2"><code>0</code></td>
+  <td>bit<sub>13</sub></td>
+  <td>bit<sub>12</sub></td>
+  <td>bit<sub>11</sub></td>
+  <td>bit<sub>10</sub></td>
+  <td>bit<sub>9</sub></td>
+  <td>bit<sub>8</sub></td>
+  <td class="end2">bit<sub>7</sub></td>
+</tr>
+</tbody>
+</table>
+
+</p><p>变量 <code>uleb128p1</code> 用于表示一个有符号值,其表示法是<i></i>编码为 <code>uleb128</code> 的值加 1。这使得编码 <code>-1</code>(或被视为无符号值 <code>0xffffffff</code>)成为一个单字节(但没有任何其他负数),并且该编码在下面这些明确说明的情况下非常实用:所表示的数值必须为非负数或 <code>-1</code>(或 <code>0xffffffff</code>);不允许任何其他负值(或不太可能需要使用较大的无符号值)。</p>
+
+<p>以下是这类格式的一些示例:</p>
+
+<table class="leb128">
+<thead>
+<tr>
+  <th>编码序列</th>
+  <th>As <code>sleb128</code></th>
+  <th>As <code>uleb128</code></th>
+  <th>As <code>uleb128p1</code></th>
+</tr>
+</thead>
+<tbody>
+  <tr><td>00</td><td>0</td><td>0</td><td>-1</td></tr>
+  <tr><td>01</td><td>1</td><td>1</td><td>0</td></tr>
+  <tr><td>7f</td><td>-1</td><td>127</td><td>126</td></tr>
+  <tr><td>80 7f</td><td>-128</td><td>16256</td><td>16255</td></tr>
+</tbody>
+</table>
+
+<h2 id="file-layout">文件版式</h2>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>header</td>
+  <td>header_item</td>
+  <td>标头</td>
+</tr>
+<tr>
+  <td>string_ids</td>
+  <td>string_id_item[]</td>
+  <td>字符串标识符列表。这些是此文件使用的所有字符串的标识符,用于内部命名(例如类型描述符)或用作代码引用的常量对象。此列表必须使用 UTF-16 代码点值按字符串内容进行排序(不采用语言区域敏感方式),且不得包含任何重复条目。
+  </td>
+</tr>
+<tr>
+  <td>type_ids</td>
+  <td>type_id_item[]</td>
+  <td>类型标识符列表。这些是此文件引用的所有类型(类、数组或原始类型)的标识符(无论文件中是否已定义)。此列表必须按 <code>string_id</code> 索引进行排序,且不得包含任何重复条目。
+  </td>
+</tr>
+<tr>
+  <td>proto_ids</td>
+  <td>proto_id_item[]</td>
+  <td>方法原型标识符列表。这些是此文件引用的所有原型的标识符。此列表必须按返回类型(按 <code>type_id</code> 索引排序)主要顺序进行排序,然后按参数列表(按 <code>type_id</code> 索引排序的各个参数,采用字典排序方法)进行排序。该列表不得包含任何重复条目。
+  </td>
+</tr>
+<tr>
+  <td>field_ids</td>
+  <td>field_id_item[]</td>
+  <td>字段标识符列表。这些是此文件引用的所有字段的标识符(无论文件中是否已定义)。此列表必须进行排序,其中定义类型(按 <code>type_id</code> 索引排序)是主要顺序,字段名称(按 <code>string_id</code> 索引排序)是中间顺序,而类型(按 <code>type_id</code> 索引排序)是次要顺序。该列表不得包含任何重复条目。
+  </td>
+</tr>
+<tr>
+  <td>method_ids</td>
+  <td>method_id_item[]</td>
+  <td>方法标识符列表。这些是此文件引用的所有方法的标识符(无论文件中是否已定义)。此列表必须进行排序,其中定义类型(按 <code>type_id</code> 索引排序)是主要顺序,方法名称(按 <code>string_id</code> 索引排序)是中间顺序,而方法原型(按 <code>proto_id</code> 索引排序)是次要顺序。该列表不得包含任何重复条目。
+  </td>
+</tr>
+<tr>
+  <td>class_defs</td>
+  <td>class_def_item[]</td>
+  <td>类定义列表。这些类必须进行排序,以便所指定类的超类和已实现的接口比引用类更早出现在该列表中。此外,对于在该列表中多次出现的同名类,其定义是无效的。
+  </td>
+</tr>
+<tr>
+  <td>call_site_ids</td>
+  <td>call_site_id_item[]</td>
+  <td>调用站点标识符列表。这些是此文件引用的所有调用站点的标识符(无论文件中是否已定义)。此列表必须按 <code>call_site_off</code> 的升序进行排序。
+</td></tr>
+<tr>
+  <td>method_handles</td>
+  <td>method_handle_item[]</td>
+  <td>方法句柄列表。此文件引用的所有方法句柄的列表(无论文件中是否已定义)。此列表未进行排序,而且可能包含将在逻辑上对应于不同方法句柄实例的重复项。
+</td></tr>
+<tr>
+  <td>data</td>
+  <td>ubyte[]</td>
+  <td>数据区,包含上面所列表格的所有支持数据。不同的项有不同的对齐要求;如有必要,则在每个项之前插入填充字节,以实现所需的对齐效果。
+  </td>
+</tr>
+<tr>
+  <td>link_data</td>
+  <td>ubyte[]</td>
+  <td>静态链接文件中使用的数据。本文档尚未指定本区段中数据的格式。此区段在未链接文件中为空,而运行时实现可能会在适当的情况下使用这些数据。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="definitions">位字段、字符串和常量的定义</h2>
+
+<h3 id="dex-file-magic">DEX_FILE_MAGIC</h3>
+<h4>在 header_item 中嵌入</h4>
+
+<p>常量数组/字符串 <code>DEX_FILE_MAGIC</code> 是字节列表,这类字节必须出现在 <code>.dex</code> 文件的开头,以便系统将其原样识别。该值会特意包含一个换行符(<code>"\n"</code> 或 <code>0x0a</code>)和空字节(<code>"\0"</code> 或 <code>0x00</code>),以便协助检测某些形式的损坏问题。该值还可以将格式版本号编码为 3 个十进制数字;随着格式的演变,预计该值会单调递增。</p>
+
+<pre>
+ubyte[8] DEX_FILE_MAGIC = { 0x64 0x65 0x78 0x0a 0x30 0x33 0x38 0x00 }
+                        = "dex\n038\0"
+</pre>
+
+<p class="note"><strong>注意</strong>:至少有两种早期版本的格式已在广泛提供的公开软件版本中使用。例如,<code>009</code> 版本已用于 M3 版 Android 平台(2007 年 11 月至 12 月),<code>013</code> 版本已用于 M5 版 Android 平台(2008 年 2 月至 3 月)。在有些方面,这些早期版本的格式与本文档中所述的版本存在很大差异。</p>
+
+<p class="note"><strong>注意</strong>:Android 8.0 版本中新增了对 <code>038</code> 版格式的支持。<code>038</code> 版本中添加了新字节码(<code>invoke-polymorphic</code> 和 <code>invoke-custom</code>)和用于方法句柄的数据。
+
+</p><p class="note"><strong>注意</strong>:Android 7.0 版本中新增了对 <code>037</code> 版格式的支持。在 <code>037</code> 版本之前,大多数 Android 版本都使用过 <code>035</code> 版格式。<code>035</code> 版与 <code>037</code> 版之间的唯一区别是,是否添加默认方法以及是否调整 <code>invoke</code>。
+
+</p><h3 id="endian-constant">ENDIAN_CONSTANT 和 REVERSE_ENDIAN_CONSTANT</h3>
+<h4>在 header_item 中嵌入</h4>
+
+<p>常量 <code>ENDIAN_CONSTANT</code> 用于表示在文件中发现的字节序。虽然标准的 <code>.dex</code> 格式采用小端字节序,但具体实现可能会选择执行字节交换。如果实现遇到其 <code>endian_tag</code> 为 <code>REVERSE_ENDIAN_CONSTANT</code>(而非 <code>ENDIAN_CONSTANT</code>)的标头,则会识别该文件已从预期格式进行过字节交换。</p>
+
+<pre>
+uint ENDIAN_CONSTANT = 0x12345678;
+uint REVERSE_ENDIAN_CONSTANT = 0x78563412;
+</pre>
+
+<h3 id="no-index">NO_INDEX</h3>
+<h4>在 class_def_item 和 debug_info_item 中嵌入</h4>
+
+<p>常量 <code>NO_INDEX</code> 用于表示索引值不存在。</p>
+
+<p class="note"><strong>注意</strong>:此值不会被定义为 <code>0</code>,因为一般来说,此值通常是一个有效索引。</p>
+
+<p><code>NO_INDEX</code> 的选定值可表示为 <code>uleb128p1</code> 编码中的单个字节。</p>
+
+<pre>
+uint NO_INDEX = 0xffffffff;    // == -1 if treated as a signed int
+</pre>
+
+<h3 id="access-flags">access_flags 定义</h3>
+<h4>在 class_def_item、encoded_field、encoded_method 和 InnerClass 中嵌入</h4>
+
+<p>这些标记的位字段用于表示类和类成员的可访问性和整体属性。</p>
+
+<table class="accessFlags">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>值</th>
+  <th>对于类(和 <code>InnerClass</code> 注释)</th>
+  <th>对于字段</th>
+  <th>对于方法</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>ACC_PUBLIC</td>
+  <td>0x1</td>
+  <td><code>public</code>:全部可见</td>
+  <td><code>public</code>:全部可见</td>
+  <td><code>public</code>:全部可见</td>
+</tr>
+<tr>
+  <td>ACC_PRIVATE</td>
+  <td>0x2</td>
+  <td><super>*</super> <code>private</code>:仅对定义类可见</td>
+  <td><code>private</code>:仅对定义类可见</td>
+  <td><code>private</code>:仅对定义类可见</td>
+</tr>
+<tr>
+  <td>ACC_PROTECTED</td>
+  <td>0x4</td>
+  <td><super>*</super> <code>protected</code>:对软件包和子类可见</td>
+  <td><code>protected</code>:对软件包和子类可见</td>
+  <td><code>protected</code>:对软件包和子类可见</td>
+</tr>
+<tr>
+  <td>ACC_STATIC</td>
+  <td>0x8</td>
+  <td><super>*</super> <code>static</code>:未通过外部 <code>this</code> 引用进行构建</td>
+  <td><code>static</code>:对定义类全局可见</td>
+  <td><code>static</code>:不采用 <code>this</code> 参数</td>
+</tr>
+<tr>
+  <td>ACC_FINAL</td>
+  <td>0x10</td>
+  <td><code>final</code>:不可子类化</td>
+  <td><code>final</code>:构建后不可变</td>
+  <td><code>final</code>:不可覆盖</td>
+</tr>
+<tr>
+  <td>ACC_SYNCHRONIZED</td>
+  <td>0x20</td>
+  <td> </td>
+  <td> </td>
+  <td><code>synchronized</code>:调用此方法时自动获得关联锁定。<p class="note"><strong>注意</strong>:这一项仅在同时设置 <code>ACC_NATIVE</code> 的情况下才有效。</p></td>
+</tr>
+<tr>
+  <td>ACC_VOLATILE</td>
+  <td>0x40</td>
+  <td> </td>
+  <td><code>volatile</code>:有助于确保线程安全的特殊访问规则</td>
+  <td> </td>
+</tr>
+<tr>
+  <td>ACC_BRIDGE</td>
+  <td>0x40</td>
+  <td> </td>
+  <td> </td>
+  <td>桥接方法,由编译器自动添加为类型安全桥</td>
+</tr>
+<tr>
+  <td>ACC_TRANSIENT</td>
+  <td>0x80</td>
+  <td> </td>
+  <td><code>transient</code>:不会通过默认序列化保存</td>
+  <td> </td>
+</tr>
+<tr>
+  <td>ACC_VARARGS</td>
+  <td>0x80</td>
+  <td> </td>
+  <td> </td>
+  <td>最后一个参数应被编译器解译为“rest”参数</td>
+</tr>
+<tr>
+  <td>ACC_NATIVE</td>
+  <td>0x100</td>
+  <td> </td>
+  <td> </td>
+  <td><code>native</code>:在本机代码中实现</td>
+</tr>
+<tr>
+  <td>ACC_INTERFACE</td>
+  <td>0x200</td>
+  <td><code>interface</code>:可多倍实现的抽象类</td>
+  <td> </td>
+  <td> </td>
+</tr>
+<tr>
+  <td>ACC_ABSTRACT</td>
+  <td>0x400</td>
+  <td><code>abstract</code>:不可直接实例化</td>
+  <td> </td>
+  <td><code>abstract</code>:不通过此类实现</td>
+</tr>
+<tr>
+  <td>ACC_STRICT</td>
+  <td>0x800</td>
+  <td> </td>
+  <td> </td>
+  <td><code>strictfp</code>:严格的浮点运算规则</td>
+</tr>
+<tr>
+  <td>ACC_SYNTHETIC</td>
+  <td>0x1000</td>
+  <td>不在源代码中直接定义</td>
+  <td>不在源代码中直接定义</td>
+  <td>不在源代码中直接定义</td>
+</tr>
+<tr>
+  <td>ACC_ANNOTATION</td>
+  <td>0x2000</td>
+  <td>声明为注释类</td>
+  <td> </td>
+  <td> </td>
+</tr>
+<tr>
+  <td>ACC_ENUM</td>
+  <td>0x4000</td>
+  <td>声明为枚举类型</td>
+  <td>声明为枚举值</td>
+  <td> </td>
+</tr>
+<tr>
+  <td><i>(未使用)</i></td>
+  <td>0x8000</td>
+  <td> </td>
+  <td> </td>
+  <td> </td>
+</tr>
+<tr>
+  <td>ACC_CONSTRUCTOR</td>
+  <td>0x10000</td>
+  <td> </td>
+  <td> </td>
+  <td>构造函数方法(类或实例初始化器)</td>
+</tr>
+<tr>
+  <td>ACC_DECLARED_<br />SYNCHRONIZED</td>
+  <td>0x20000</td>
+  <td> </td>
+  <td> </td>
+  <td>声明了 <code>synchronized</code>。<p class="note"><strong>注意</strong>:此项对执行没有任何影响(除了反映此标记本身之外)。</p>
+  </td>
+</tr>
+</tbody>
+</table>
+
+<p><super>*</super> 仅允许用于 <code>InnerClass</code> 注释,且一律不得在 <code>class_def_item</code> 中使用。</p>
+
+<h3 id="mutf-8">MUTF-8(修改后的 UTF-8)编码</h3>
+
+<p>考虑到继续对旧版提供支持,<code>.dex</code> 格式会采用按实际标准修改后的 UTF-8 形式(下文称为 MUTF-8)对其字符串数据进行编码。除以下几点以外,此形式与标准 UTF-8 形式是完全相同的:</p>
+
+<ul>
+  <li>仅使用单字节、双字节和三字节编码。</li>
+  <li><code>U+10000</code> … <code>U+10ffff</code> 范围中的代码点被编码为代理对,其中每个代码点均表示为一个三字节编码值。</li>
+  <li>代码点 <code>U+0000</code> 采用双字节形式进行编码。</li>
+  <li>纯 Null 字节(值 <code>0</code>)表示字符串的末尾,这是标准的 C 语言解释。</li>
+</ul>
+
+<p>上述前两项可以概括为:MUTF-8 是用于 UTF-16 的编码格式,而不是用于 Unicode 字符的更直接的编码格式。</p>
+
+<p>后两项说明,MUTF-8 既可在字符串中包含代码点 <code>U+0000</code>,同时仍可将其作为 C 样式的 Null 终止字符串进行操作。<i></i></p>
+
+<p>不过,特殊编码 <code>U+0000</code> 意味着,与一般 UTF-8 不同的是,针对一对 MUTF-8 字符串调用标准 C 函数 <code>strcmp()</code> 的结果并不一定表示不相等字符串的带有正确符号的比较结果。<i></i>当需要考虑排序问题(而不仅仅是相等问题)时,用于比较 MUTF-8 字符串的最简单方法是对其字符进行逐个解码,然后比较解码后的值(不过,也许会有更智能的实现方法)。</p>
+
+<p>有关字符编码的详情,请参阅 <a href="http://unicode.org">Unicode 标准</a>。实际上,MUTF-8 比 UTF-8 本身更接近相对而言不太为人熟知的编码 <a href="http://www.unicode.org/reports/tr26/">CESU-8</a>。</p>
+
+<h3 id="encoding">encoded_value 编码</h3>
+<h4>在 annotation_element 和 encoded_array_item 中嵌入</h4>
+
+<p><code>encoded_value</code> 是(几乎)任意层次结构数据的编码片。这种编码非常精简,易于解析。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>(value_arg &lt;&lt; 5) | value_type</td>
+  <td>ubyte</td>
+  <td>一种字节,用于表示紧跟后面的 <code>value</code> 及高 3 位中可选澄清参数的类型。请参阅下文,了解各种 <code>value</code> 定义。在大多数情况下,<code>value_arg</code> 会以字节为单位将紧跟后面的 <code>value</code> 的长度编码为 <code>(size - 1)</code>;例如,<code>0</code> 表示该值需要 1 个字节,<code>7</code> 表示该值需要 8 个字节;不过,也存在下述例外情况。
+  </td>
+</tr>
+<tr>
+  <td>value</td>
+  <td>ubyte[]</td>
+  <td>用于表示值的字节,不同 <code>value_type</code> 字节的长度不同且采用不同的解译方式;不过一律采用小端字节序。有关详情,请参阅下文中的各种值定义。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="value-formats">值格式</h3>
+
+<table class="encodedValue">
+<thead>
+<tr>
+  <th>类型名称</th>
+  <th><code>value_type</code></th>
+  <th><code>value_arg</code> 格式</th>
+  <th><code>value</code> 格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>VALUE_BYTE</td>
+  <td>0x00</td>
+  <td><i>(无;必须为 <code>0</code>)</i></td>
+  <td>ubyte[1]</td>
+  <td>有符号的单字节整数值</td>
+</tr>
+<tr>
+  <td>VALUE_SHORT</td>
+  <td>0x02</td>
+  <td>size - 1 (0…1)</td>
+  <td>ubyte[size]</td>
+  <td>有符号的双字节整数值,符号扩展</td>
+</tr>
+<tr>
+  <td>VALUE_CHAR</td>
+  <td>0x03</td>
+  <td>size - 1 (0…1)</td>
+  <td>ubyte[size]</td>
+  <td>无符号的双字节整数值,零扩展</td>
+</tr>
+<tr>
+  <td>VALUE_INT</td>
+  <td>0x04</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>有符号的四字节整数值,符号扩展</td>
+</tr>
+<tr>
+  <td>VALUE_LONG</td>
+  <td>0x06</td>
+  <td>size - 1 (0…7)</td>
+  <td>ubyte[size]</td>
+  <td>有符号的八字节整数值,符号扩展</td>
+</tr>
+<tr>
+  <td>VALUE_FLOAT</td>
+  <td>0x10</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>四字节位模式,向右零扩展,系统会将其解译为 IEEE754 32 位浮点值<i></i></td>
+</tr>
+<tr>
+  <td>VALUE_DOUBLE</td>
+  <td>0x11</td>
+  <td>size - 1 (0…7)</td>
+  <td>ubyte[size]</td>
+  <td>八字节位模式,向右零扩展,系统会将其解译为 IEEE754 64 位浮点值<i></i></td>
+</tr>
+<tr>
+  <td>VALUE_METHOD_TYPE</td>
+  <td>0x15</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>proto_ids</code> 节的索引;表示方法类型值</td>
+</tr>
+<tr>
+  <td>VALUE_METHOD_HANDLE</td>
+  <td>0x16</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>method_handles</code> 节的索引;表示方法句柄值</td>
+</tr>
+<tr>
+  <td>VALUE_STRING</td>
+  <td>0x17</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>string_ids</code> 节的索引;表示字符串值</td>
+</tr>
+<tr>
+  <td>VALUE_TYPE</td>
+  <td>0x18</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>type_ids</code> 节的索引;表示反射类型/类值</td>
+</tr>
+<tr>
+  <td>VALUE_FIELD</td>
+  <td>0x19</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>field_ids</code> 节的索引;表示反射字段值</td>
+</tr>
+<tr>
+  <td>VALUE_METHOD</td>
+  <td>0x1a</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>method_ids</code> 节的索引;表示反射方法值</td>
+</tr>
+<tr>
+  <td>VALUE_ENUM</td>
+  <td>0x1b</td>
+  <td>size - 1 (0…3)</td>
+  <td>ubyte[size]</td>
+  <td>无符号(零扩展)四字节整数值,会被解译为要编入 <code>field_ids</code> 节的索引;表示枚举类型常量的值</td>
+</tr>
+<tr>
+  <td>VALUE_ARRAY</td>
+  <td>0x1c</td>
+  <td><i>(无;必须为 <code>0</code>)</i></td>
+  <td>encoded_array</td>
+  <td>值的数组,采用下文“<code>encoded_array</code> 格式”所指定的格式。<code>value</code> 的大小隐含在编码中。
+  </td>
+</tr>
+<tr>
+  <td>VALUE_ANNOTATION</td>
+  <td>0x1d</td>
+  <td><i>(无;必须为 <code>0</code>)</i></td>
+  <td>encoded_annotation</td>
+  <td>子注释,采用下文“<code>encoded_annotation</code> 格式”所指定的格式。<code>value</code> 的大小隐含在编码中。
+  </td>
+</tr>
+<tr>
+  <td>VALUE_NULL</td>
+  <td>0x1e</td>
+  <td><i>(无;必须为 <code>0</code>)</i></td>
+  <td><i>(无)</i></td>
+  <td><code>null</code> 引用值</td>
+</tr>
+<tr>
+  <td>VALUE_BOOLEAN</td>
+  <td>0x1f</td>
+  <td>布尔值 (0…1)</td>
+  <td><i>(无)</i></td>
+  <td>一位值;<code>0</code> 表示 <code>false</code>,<code>1</code> 表示 <code>true</code>。该位在 <code>value_arg</code> 中有所表示。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-array">encoded_array 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>uleb128</td>
+  <td>数组中的元素数量</td>
+</tr>
+<tr>
+  <td>values</td>
+  <td>encoded_value[size]</td>
+  <td>采用本节所指定格式的一系列 <code>size</code> <code>encoded_value</code> 字节序列;依序连接。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-annotation">encoded_annotation 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>type_idx</td>
+  <td>uleb128</td>
+  <td>注释的类型。这种类型必须是“类”(而非“数组”或“基元”)。
+  </td>
+</tr>
+<tr>
+  <td>size</td>
+  <td>uleb128</td>
+  <td>此注释中 name-value 映射的数量</td>
+</tr>
+<tr>
+  <td>elements</td>
+  <td>annotation_element[size]</td>
+  <td>注释的元素,直接以内嵌形式(不作为偏移量)表示。元素必须按 <code>string_id</code> 索引以升序进行排序。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="annotation-element">annotation_element 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>name_idx</td>
+  <td>uleb128</td>
+  <td>元素名称,表示为要编入 <code>string_ids</code> 节的索引。该字符串必须符合上文定义的 MemberName 的语法。<i></i>
+  </td>
+</tr>
+<tr>
+  <td>value</td>
+  <td>encoded_value</td>
+  <td>元素值</td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="string-syntax">字符串语法</h2>
+
+<p><code>.dex</code> 文件中有几种类型的项最终会引用字符串。以下 BNF 样式的定义指出了这些字符串可接受的语法。</p>
+
+<h3 id="simplename"><i>SimpleName</i></h3>
+
+<p><i></i>SimpleName 是其他内容的名称语法的基础。<code>.dex</code> 格式在这方面具有相当大的宽容度(比大多数常见源语言更大)。简而言之,一个简单的名称包含任意低 ASCII 范围的字母字符或数字、几个特定的低 ASCII 范围的符号,以及不属于控件、空格或特殊字符的大多数非 ASCII 代码点。请注意,代理代码点(位于 <code>U+d800</code> … <code>U+dfff</code> 范围内)本身不会被视为有效名称字符,但 Unicode 补充字符会被视为有效字符(由 SimpleNameChar 规则的最终替代方案表示),它们应在文件中表示为 MUTF-8 编码中的代理代码点对。<i></i><i></i></p>
+
+<table class="bnf">
+  <tbody><tr><td colspan="2" class="def"><i>SimpleName</i> →</td></tr>
+  <tr>
+    <td>
+    </td><td><i>SimpleNameChar</i> (<i>SimpleNameChar</i>)*</td>
+  </tr>
+
+  <tr><td colspan="2" class="def"><i>SimpleNameChar</i> →</td></tr>
+  <tr>
+    <td>
+    </td><td><code>'A'</code> … <code>'Z'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'a'</code> … <code>'z'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'0'</code> … <code>'9'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'$'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'-'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'_'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>U+00a1</code> … <code>U+1fff</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>U+2010</code> … <code>U+2027</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>U+2030</code> … <code>U+d7ff</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>U+e000</code> … <code>U+ffef</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>U+10000</code> … <code>U+10ffff</code></td>
+  </tr>
+</tbody></table>
+
+<h3 id="membername"><i>MemberName</i></h3>
+<h4>由 field_id_item 和 method_id_item 使用</h4>
+
+<p><i></i>MemberName 是某个类的成员的名称,成员是指字段、方法和内部类。</p>
+
+<table class="bnf">
+  <tbody><tr><td colspan="2" class="def"><i></i>MemberName →</td></tr>
+  <tr>
+    <td>
+    </td><td><i>SimpleName</i></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'&lt;'</code> <i></i>SimpleName <code>'&gt;'</code></td>
+  </tr>
+</tbody></table>
+
+<h3 id="fullclassname"><i>FullClassName</i></h3>
+
+<p><i></i>FullClassName 是完全限定的类名称,包含一个可选的软件包说明符,后跟一个必需名称。</p>
+
+<table class="bnf">
+  <tbody><tr><td colspan="2" class="def"><i></i>FullClassName →</td></tr>
+  <tr>
+    <td>
+    </td><td><i></i><i></i>OptionalPackagePrefix SimpleName</td>
+  </tr>
+
+  <tr><td colspan="2" class="def"><i></i>OptionalPackagePrefix →</td></tr>
+  <tr>
+    <td>
+    </td><td><i></i>(SimpleName <code>'/'</code>)*</td>
+  </tr>
+</tbody></table>
+
+<h3 id="typedescriptor"><i>TypeDescriptor</i></h3>
+<h4>由 type_id_item 使用</h4>
+
+<p><i></i>TypeDescriptor 是任何类型的表示形式,包括基元、类、数组和 <code>void</code>。请参阅下文,了解各版本的含义。</p>
+
+<table class="bnf">
+  <tbody><tr><td colspan="2" class="def"><i></i>TypeDescriptor →</td></tr>
+  <tr>
+    <td>
+    </td><td><code>'V'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><i>FieldTypeDescriptor</i></td>
+  </tr>
+
+  <tr><td colspan="2" class="def"><i></i>FieldTypeDescriptor →</td></tr>
+  <tr>
+    <td>
+    </td><td><i>NonArrayFieldTypeDescriptor</i></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td>(<code>'['</code> * 1…255)
+      NonArrayFieldTypeDescriptor<i></i></td>
+  </tr>
+
+  <tr>
+    <td colspan="2" class="def"><i></i>NonArrayFieldTypeDescriptor→</td>
+  </tr>
+  <tr>
+    <td>
+    </td><td><code>'Z'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'B'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'S'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'C'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'I'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'J'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'F'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'D'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'L'</code> <i></i>FullClassName <code>';'</code></td>
+  </tr>
+</tbody></table>
+
+<h3 id="shortydescriptor"><i>ShortyDescriptor</i></h3>
+<h4>由 proto_id_item 使用</h4>
+
+<p><i></i>ShortyDescriptor 是方法原型的简写形式,包括返回类型和参数类型,只不过各种引用(类或数组)类型之间没有区别,而是所有引用类型均由一个 <code>'L'</code> 字符表示。</p>
+
+<table class="bnf">
+  <tbody><tr><td colspan="2" class="def"><i></i>ShortyDescriptor →</td></tr>
+  <tr>
+    <td>
+    </td><td><i></i>ShortyReturnType <i></i>(ShortyFieldType)*</td>
+  </tr>
+
+  <tr><td colspan="2" class="def"><i></i>ShortyReturnType →</td></tr>
+  <tr>
+    <td>
+    </td><td><code>'V'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><i>ShortyFieldType</i></td>
+  </tr>
+
+  <tr><td colspan="2" class="def"><i></i>ShortyFieldType →</td></tr>
+  <tr>
+    <td>
+    </td><td><code>'Z'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'B'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'S'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'C'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'I'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'J'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'F'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'D'</code></td>
+  </tr>
+  <tr>
+    <td class="bar">|</td>
+    <td><code>'L'</code></td>
+  </tr>
+</tbody></table>
+
+<h3 id="typedescriptor"><i></i>TypeDescriptor 语义</h3>
+
+<p>以下是 TypeDescriptor 各个变体的含义。<i></i></p>
+
+<table class="descriptor">
+<thead>
+<tr>
+  <th>语法</th>
+  <th>含义</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>V</td>
+  <td><code>void</code>;仅对返回类型有效</td>
+</tr>
+<tr>
+  <td>Z</td>
+  <td><code>boolean</code></td>
+</tr>
+<tr>
+  <td>B</td>
+  <td><code>byte</code></td>
+</tr>
+<tr>
+  <td>S</td>
+  <td><code>short</code></td>
+</tr>
+<tr>
+  <td>C</td>
+  <td><code>char</code></td>
+</tr>
+<tr>
+  <td>I</td>
+  <td><code>int</code></td>
+</tr>
+<tr>
+  <td>J</td>
+  <td><code>long</code></td>
+</tr>
+<tr>
+  <td>F</td>
+  <td><code>float</code></td>
+</tr>
+<tr>
+  <td>D</td>
+  <td><code>double</code></td>
+</tr>
+<tr>
+  <td>L<i></i>fully/qualified/Name;</td>
+  <td>类 <code><i>fully.qualified.Name</i></code></td>
+</tr>
+<tr>
+  <td>[descriptor<i></i></td>
+  <td><code><i>descriptor</i></code> 的数组,可递归地用于“数组的数组”,但维数不能超过 255。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="items">项和相关结构</h2>
+
+<p>本部分包含可能在 <code>.dex</code> 文件中出现的各个顶级项的定义。
+
+</p><h3 id="header-item">header_item</h3>
+<h4>在标头区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>magic</td>
+  <td>ubyte[8] = DEX_FILE_MAGIC</td>
+  <td>魔法值。更多详情,请参阅上文中“<code>DEX_FILE_MAGIC</code>”下的讨论。
+  </td>
+</tr>
+<tr>
+  <td>checksum</td>
+  <td>uint</td>
+  <td>文件剩余内容(除 <code>magic</code> 和此字段之外的所有内容)的 adler32 校验和;用于检测文件损坏情况</td>
+</tr>
+<tr>
+  <td>signature</td>
+  <td>ubyte[20]</td>
+  <td>文件剩余内容(除 <code>magic</code>、<code>checksum</code> 和此字段之外的所有内容)的 SHA-1 签名(哈希);用于对文件进行唯一标识</td>
+</tr>
+<tr>
+  <td>file_size</td>
+  <td>uint</td>
+  <td>整个文件(包括标头)的大小,以字节为单位</td></tr>
+<tr>
+  <td>header_size</td>
+  <td>uint = 0x70</td>
+  <td>标头(整个区段)的大小,以字节为单位。这一项允许至少一定程度的向后/向前兼容性,而不必让格式失效。
+  </td>
+</tr>
+<tr>
+  <td>endian_tag</td>
+  <td>uint = ENDIAN_CONSTANT</td>
+  <td>字节序标记。更多详情,请参阅上文中“<code>ENDIAN_CONSTANT</code> 和 <code>REVERSE_ENDIAN_CONSTANT</code>”下的讨论。
+  </td>
+</tr>
+<tr>
+  <td>link_size</td>
+  <td>uint</td>
+  <td>链接区段的大小;如果此文件未进行静态链接,则该值为 <code>0</code></td>
+</tr>
+<tr>
+  <td>link_off</td>
+  <td>uint</td>
+  <td>从文件开头到链接区段的偏移量;如果 <code>link_size == 0</code>,则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>link_data</code> 区段的偏移量。本文档尚未指定此处所指的数据格式;此标头字段(和之前的字段)会被保留为钩子,以供运行时实现使用。
+  </td>
+</tr>
+<tr>
+  <td>map_off</td>
+  <td>uint</td>
+  <td>从文件开头到映射项的偏移量。该偏移量(必须为非零)应该是到 <code>data</code> 区段的偏移量,而数据应采用下文中“<code>map_list</code>”指定的格式。
+  </td>
+</tr>
+<tr>
+  <td>string_ids_size</td>
+  <td>uint</td>
+  <td>字符串标识符列表中的字符串数量</td>
+</tr>
+<tr>
+  <td>string_ids_off</td>
+  <td>uint</td>
+  <td>从文件开头到字符串标识符列表的偏移量;如果 <code>string_ids_size == 0</code>(不可否认是一种奇怪的极端情况),则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>string_ids</code> 区段开头的偏移量。
+  </td>
+</tr>
+<tr>
+  <td>type_ids_size</td>
+  <td>uint</td>
+  <td>类型标识符列表中的元素数量,最多为 65535</td>
+</tr>
+<tr>
+  <td>type_ids_off</td>
+  <td>uint</td>
+  <td>从文件开头到类型标识符列表的偏移量;如果 <code>type_ids_size == 0</code>(不可否认是一种奇怪的极端情况),则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>type_ids</code> 区段开头的偏移量。
+  </td>
+</tr>
+<tr>
+  <td>proto_ids_size</td>
+  <td>uint</td>
+  <td>原型标识符列表中的元素数量,最多为 65535</td>
+</tr>
+<tr>
+  <td>proto_ids_off</td>
+  <td>uint</td>
+  <td>从文件开头到原型标识符列表的偏移量;如果 <code>proto_ids_size == 0</code>(不可否认是一种奇怪的极端情况),则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>proto_ids</code> 区段开头的偏移量。
+  </td>
+</tr>
+<tr>
+  <td>field_ids_size</td>
+  <td>uint</td>
+  <td>字段标识符列表中的元素数量</td>
+</tr>
+<tr>
+  <td>field_ids_off</td>
+  <td>uint</td>
+  <td>从文件开头到字段标识符列表的偏移量;如果 <code>field_ids_size == 0</code>,则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>field_ids</code> 区段开头的偏移量。</td>
+
+</tr>
+<tr>
+  <td>method_ids_size</td>
+  <td>uint</td>
+  <td>方法标识符列表中的元素数量</td>
+</tr>
+<tr>
+  <td>method_ids_off</td>
+  <td>uint</td>
+  <td>从文件开头到方法标识符列表的偏移量;如果 <code>method_ids_size == 0</code>,则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>method_ids</code> 区段开头的偏移量。</td>
+</tr>
+<tr>
+  <td>class_defs_size</td>
+  <td>uint</td>
+  <td>类定义列表中的元素数量</td>
+</tr>
+<tr>
+  <td>class_defs_off</td>
+  <td>uint</td>
+  <td>从文件开头到类定义列表的偏移量;如果 <code>class_defs_size == 0</code>(不可否认是一种奇怪的极端情况),则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>class_defs</code> 区段开头的偏移量。
+  </td>
+</tr>
+<tr>
+  <td>data_size</td>
+  <td>uint</td>
+  <td><code>data</code> 区段的大小(以字节为单位)。该数值必须是 sizeof(uint) 的偶数倍。</td>
+</tr>
+<tr>
+  <td>data_off</td>
+  <td>uint</td>
+  <td>从文件开头到 <code>data</code> 区段开头的偏移量。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="map-list">map_list</h3>
+<h4>在数据区段中显示</h4>
+<h4>引用自 header_item</h4>
+<h4>对齐:4 个字节</h4>
+
+<p>这是文件全部内容(依序显示)的列表。该列表包含关于 <code>header_item</code> 的一些冗余信息,但这些冗余信息存在的目的是提供一种用于遍历整个文件的简单方式。指定类型在映射中最多只能出现一次,但除了格式其余部分所隐含的限制条件(例如,<code>header</code> 区段必须先显示,随后是 <code>string_ids</code> 区段等等)之外,对于类型可以什么顺序显示,则没有任何限制。此外,映射条目必须按初始偏移量进行排序,不得重叠。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>uint</td>
+  <td>列表的大小(以条目数表示)</td>
+</tr>
+<tr>
+  <td>list</td>
+  <td>map_item[size]</td>
+  <td>该列表的元素数量</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="map-item">map_item 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>type</td>
+  <td>ushort</td>
+  <td>项的类型;见下表</td>
+</tr>
+<tr>
+  <td>unused</td>
+  <td>ushort</td>
+  <td><i>(未使用)</i></td>
+</tr>
+<tr>
+  <td>size</td>
+  <td>uint</td>
+  <td>在指定偏移量处找到的项数量</td>
+</tr>
+<tr>
+  <td>offset</td>
+  <td>uint</td>
+  <td>从文件开头到相关项的偏移量</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="type-codes">类型代码</h3>
+
+<table class="typeCodes">
+<thead>
+<tr>
+  <th>项类型</th>
+  <th>常量</th>
+  <th>值</th>
+  <th>项大小(以字节为单位)</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>header_item</td>
+  <td>TYPE_HEADER_ITEM</td>
+  <td>0x0000</td>
+  <td>0x70</td>
+</tr>
+<tr>
+  <td>string_id_item</td>
+  <td>TYPE_STRING_ID_ITEM</td>
+  <td>0x0001</td>
+  <td>0x04</td>
+</tr>
+<tr>
+  <td>type_id_item</td>
+  <td>TYPE_TYPE_ID_ITEM</td>
+  <td>0x0002</td>
+  <td>0x04</td>
+</tr>
+<tr>
+  <td>proto_id_item</td>
+  <td>TYPE_PROTO_ID_ITEM</td>
+  <td>0x0003</td>
+  <td>0x0c</td>
+</tr>
+<tr>
+  <td>field_id_item</td>
+  <td>TYPE_FIELD_ID_ITEM</td>
+  <td>0x0004</td>
+  <td>0x08</td>
+</tr>
+<tr>
+  <td>method_id_item</td>
+  <td>TYPE_METHOD_ID_ITEM</td>
+  <td>0x0005</td>
+  <td>0x08</td>
+</tr>
+<tr>
+  <td>class_def_item</td>
+  <td>TYPE_CLASS_DEF_ITEM</td>
+  <td>0x0006</td>
+  <td>0x20</td>
+</tr>
+<tr>
+  <td>call_site_id_item</td>
+  <td>TYPE_CALL_SITE_ID_ITEM</td>
+  <td>0x0007</td>
+  <td>0x04</td>
+</tr>
+<tr>
+  <td>method_handle_item</td>
+  <td>TYPE_METHOD_HANDLE_ITEM</td>
+  <td>0x0008</td>
+  <td>0x08</td>
+</tr>
+<tr>
+  <td>map_list</td>
+  <td>TYPE_MAP_LIST</td>
+  <td>0x1000</td>
+  <td>4 + (item.size * 12)</td>
+</tr>
+<tr>
+  <td>type_list</td>
+  <td>TYPE_TYPE_LIST</td>
+  <td>0x1001</td>
+  <td>4 + (item.size * 2)</td>
+</tr>
+<tr>
+  <td>annotation_set_ref_list</td>
+  <td>TYPE_ANNOTATION_SET_REF_LIST</td>
+  <td>0x1002</td>
+  <td>4 + (item.size * 4)</td>
+</tr>
+<tr>
+  <td>annotation_set_item</td>
+  <td>TYPE_ANNOTATION_SET_ITEM</td>
+  <td>0x1003</td>
+  <td>4 + (item.size * 4)</td>
+</tr>
+<tr>
+  <td>class_data_item</td>
+  <td>TYPE_CLASS_DATA_ITEM</td>
+  <td>0x2000</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+<tr>
+  <td>code_item</td>
+  <td>TYPE_CODE_ITEM</td>
+  <td>0x2001</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+<tr>
+  <td>string_data_item</td>
+  <td>TYPE_STRING_DATA_ITEM</td>
+  <td>0x2002</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+<tr>
+  <td>debug_info_item</td>
+  <td>TYPE_DEBUG_INFO_ITEM</td>
+  <td>0x2003</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+<tr>
+  <td>annotation_item</td>
+  <td>TYPE_ANNOTATION_ITEM</td>
+  <td>0x2004</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+<tr>
+  <td>encoded_array_item</td>
+  <td>TYPE_ENCODED_ARRAY_ITEM</td>
+  <td>0x2005</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+<tr>
+  <td>annotations_directory_item</td>
+  <td>TYPE_ANNOTATIONS_DIRECTORY_ITEM</td>
+  <td>0x2006</td>
+  <td><i>隐式;必须解析</i></td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="string-item">string_id_item</h3>
+<h4>在 string_ids 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>string_data_off</td>
+  <td>uint</td>
+  <td>从文件开头到此项的字符串数据的偏移量。该偏移量应该是到 <code>data</code> 区段中某个位置的偏移量,而数据应采用下文中“<code>string_data_item</code>”指定的格式。没有偏移量对齐要求。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="string-data-item">string_data_item</h3>
+<h4>在数据区段中显示</h4>
+<h4>对齐:无(字节对齐)</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>utf16_size</td>
+  <td>uleb128</td>
+  <td>此字符串的大小;以 UTF-16 代码单元(在许多系统中为“字符串长度”)为单位。也就是说,这是该字符串的解码长度(编码长度隐含在 <code>0</code> 字节的位置)。</td>
+</tr>
+<tr>
+  <td>data</td>
+  <td>ubyte[]</td>
+  <td>一系列 MUTF-8 代码单元(又称八位字节),后跟一个值为 <code>0</code> 的字节。请参阅上文中的“MUTF-8(修改后的 UTF-8)编码”,了解有关该数据格式的详情和讨论。
+    <p class="note"><strong>注意</strong>:在 UTF-16 中进行 Unicode 常规编码时,字符串可以包含(编码形式的)UTF-16 代理代码单元(即 <code>U+d800</code> … <code>U+dfff</code>),这些代码单元既可以单独出现,也可以乱序显示。在适用的情况下,可以进阶使用字符串来拒绝这类无效编码。</p>
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="type-id-item">type_id_item</h3>
+<h4>在 type_ids 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>descriptor_idx</td>
+  <td>uint</td>
+  <td>此类描述符字符串的 <code>string_ids</code> 列表中的索引。该字符串必须符合上文定义的 TypeDescriptor 的语法。<i></i>
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="proto-id-item">proto_id_item</h3>
+<h4>在 proto_ids 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>shorty_idx</td>
+  <td>uint</td>
+  <td>此原型的简短式描述符字符串的 <code>string_ids</code> 列表中的索引。该字符串必须符合上文定义的 ShortyDescriptor 的语法,而且必须与该项的返回类型和参数相对应。<i></i>
+  </td>
+</tr>
+<tr>
+  <td>return_type_idx</td>
+  <td>uint</td>
+  <td>此原型的返回类型的 <code>type_ids</code> 列表中的索引。</td>
+</tr>
+<tr>
+  <td>parameters_off</td>
+  <td>uint</td>
+  <td>从文件开头到此原型的参数类型列表的偏移量;如果此原型没有参数,则该值为 <code>0</code>。该偏移量(如果为非零值)应该位于 <code>data</code> 区段中,且其中的数据应采用下文中“<code>"type_list"</code>”指定的格式。此外,不得对列表中的类型 <code>void</code> 进行任何引用。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="field-id-item">field_id_item</h3>
+<h4>在 field_ids 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>class_idx</td>
+  <td>ushort</td>
+  <td>此字段的定义符的 <code>type_ids</code> 列表中的索引。此项必须是“类”类型,而不能是“数组”或“基元”类型。
+  </td>
+</tr>
+<tr>
+  <td>type_idx</td>
+  <td>ushort</td>
+  <td>此字段的类型的 <code>type_ids</code> 列表中的索引。</td>
+</tr>
+<tr>
+  <td>name_idx</td>
+  <td>uint</td>
+  <td>此字段的名称的 <code>string_ids</code> 列表中的索引。该字符串必须符合上文定义的 MemberName 的语法。<i></i>
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="method-id-item">method_id_item</h3>
+<h4>在 method_ids 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>class_idx</td>
+  <td>ushort</td>
+  <td>此方法的定义符的 <code>type_ids</code> 列表中的索引。此项必须是“类”或“数组”类型,而不能是“基元”类型。
+  </td>
+</tr>
+<tr>
+  <td>proto_idx</td>
+  <td>ushort</td>
+  <td>此方法的原型的 <code>proto_ids</code> 列表中的索引。</td>
+</tr>
+<tr>
+  <td>name_idx</td>
+  <td>uint</td>
+  <td>此方法名称的 <code>string_ids</code> 列表中的索引。该字符串必须符合上文定义的 MemberName 的语法。<i></i>
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="class-def-item">class_def_item</h3>
+<h4>在 class_defs 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>class_idx</td>
+  <td>uint</td>
+  <td>此类的 <code>type_ids</code> 列表中的索引。此项必须是“类”类型,而不能是“数组”或“基元”类型。
+  </td>
+</tr>
+<tr>
+  <td>access_flags</td>
+  <td>uint</td>
+  <td>类的访问标记(<code>public</code>、<code>final</code> 等)。有关详情,请参阅“<code>access_flags</code> 定义”。
+  </td>
+</tr>
+<tr>
+  <td>superclass_idx</td>
+  <td>uint</td>
+  <td>超类的 <code>type_ids</code> 列表中的索引。如果此类没有超类(即它是根类,例如 <code>Object</code>),则该值为常量值 <code>NO_INDEX</code>。如果此类存在超类,则此项必须是“类”类型,而不能是“数组”或“基元”类型。
+  </td>
+</tr>
+<tr>
+  <td>interfaces_off</td>
+  <td>uint</td>
+  <td>从文件开头到接口列表的偏移量;如果没有接口,则该值为 <code>0</code>。该偏移量应该位于 <code>data</code> 区段,且其中的数据应采用下文中“<code>type_list</code>”指定的格式。该列表的每个元素都必须是“类”类型(而不能是“数组”或“基元”类型),并且不得包含任何重复项。
+  </td>
+</tr>
+<tr>
+  <td>source_file_idx</td>
+  <td>uint</td>
+  <td>文件(包含这个类(至少大部分)的原始来源)名称的 <code>string_ids</code> 列表中的索引;或者该值为特殊值 <code>NO_INDEX</code>,以表示缺少这种信息。任何指定方法的 <code>debug_info_item</code> 都可以覆盖此源文件,但预期情况是大多数类只能来自一个源文件。
+  </td>
+</tr>
+<tr>
+  <td>annotations_off</td>
+  <td>uint</td>
+  <td>从文件开头到此类的注释结构的偏移量;如果此类没有注释,则该值为 <code>0</code>。该偏移量(如果为非零值)应该位于 <code>data</code> 区段,且其中的数据应采用下文中“<code>annotations_directory_item</code>”指定的格式,同时所有项将此类作为定义符进行引用。
+  </td>
+</tr>
+<tr>
+  <td>class_data_off</td>
+  <td>uint</td>
+  <td>从文件开头到此项的关联类数据的偏移量;如果此类没有类数据,则该值为 <code>0</code>(这种情况有可能出现,例如,如果此类是标记接口)。该偏移量(如果为非零值)应该位于 <code>data</code> 区段,且其中的数据应采用下文中“<code>class_data_item</code>”指定的格式,同时所有项将此类作为定义符进行引用。
+  </td>
+</tr>
+<tr>
+  <td>static_values_off</td>
+  <td>uint</td>
+  <td>从文件开头到 <code>static</code> 字段的初始值列表的偏移量;如果没有该列表(并且所有 <code>static</code> 字段都将使用 <code>0</code> 或 <code>null</code> 进行初始化),则该值为 <code>0</code>。该偏移量应该位于 <code>data</code> 区段,且其中的数据应采用下文中“<code>encoded_array_item</code>”指定的格式。该数组的大小不得超出此类所声明的 <code>static</code> 字段的数量,且 <code>static</code> 字段所对应的元素应采用相对应的 <code>field_list</code> 中所声明的顺序每个数组元素的类型均必须与其相应字段的声明类型相匹配。如果该数组中的元素比 <code>static</code> 字段中的少,则剩余字段将使用适当类型 <code>0</code> 或 <code>null</code> 进行初始化。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="call-site-id-item">call_site_id_item</h3>
+<h4>在 call_site_ids 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>call_site_off</td>
+  <td>uint</td>
+  <td>从文件开头到调用点定义的偏移量。该偏移量应位于数据区段中,且其中的数据应采用下文中“call_site_item”指定的格式。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="call-site-item">call_site_item</h3>
+<h4>在数据区段中显示</h4>
+<h4>对齐:无(字节对齐)</h4>
+
+<p>call_site_item 是一个 encoded_array_item,其元素与提供给引导程序链接器方法的参数相对应。前 3 个参数为:</p><ol>
+<li>表示引导程序链接器方法的方法句柄 (VALUE_METHOD_HANDLE)。</li>
+<li>引导程序链接器应解析的方法名称 (VALUE_STRING)。</li>
+<li>与要解析的方法名称类型相对应的方法类型 (VALUE_METHOD_TYPE)。</li>
+</ol>
+
+<p>所有附加参数均为传递给引导程序链接器方法的常量值。这些参数会按顺序传递,而不进行任何类型转换。
+
+</p><p>表示引导程序链接器方法的方法句柄必须具有返回类型 <code>java.lang.invoke.CallSite</code>。前 3 个参数类型为:</p><ol>
+<li><code>java.lang.invoke.Lookup</code></li>
+<li><code>java.lang.String</code></li>
+<li><code>java.lang.invoke.MethodType</code></li>
+</ol>
+
+<p>任何附加参数的参数类型均由其常量值确定。
+
+</p><h3 id="method-handle-item">method_handle_item</h3>
+<h4>在 method_handles 区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>method_handle_type</td>
+  <td>ushort</td>
+  <td>方法句柄的类型;见下表</td>
+</tr>
+<tr>
+  <td>unused</td>
+  <td>ushort</td>
+  <td><i>(未使用)</i></td>
+</tr>
+<tr>
+  <td>field_or_method_id</td>
+  <td>ushort</td>
+  <td>字段或方法 ID 取决于方法句柄类型是访问器还是方法调用器</td>
+</tr>
+<tr>
+  <td>unused</td>
+  <td>ushort</td>
+  <td><i>(未使用)</i></td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="method-handle-type-codes">方法句柄类型代码</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>常量</th>
+  <th>值</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>METHOD_HANDLE_TYPE_STATIC_PUT</td>
+  <td>0x00</td>
+  <td>方法句柄是静态字段设置器(访问器)</td>
+</tr>
+<tr>
+  <td>METHOD_HANDLE_TYPE_STATIC_GET</td>
+  <td>0x01</td>
+  <td>方法句柄是静态字段获取器(访问器)</td>
+</tr>
+<tr>
+  <td>METHOD_HANDLE_TYPE_INSTANCE_PUT</td>
+  <td>0x02</td>
+  <td>方法句柄是实例字段设置器(访问器)</td>
+</tr>
+<tr>
+  <td>METHOD_HANDLE_TYPE_INSTANCE_GET</td>
+  <td>0x03</td>
+  <td>方法句柄是实例字段获取器(访问器)</td>
+</tr>
+<tr>
+  <td>METHOD_HANDLE_TYPE_INVOKE_STATIC</td>
+  <td>0x04</td>
+  <td>方法句柄是静态方法调用器</td>
+</tr>
+<tr>
+  <td>METHOD_HANDLE_TYPE_INVOKE_INSTANCE</td>
+  <td>0x05</td>
+  <td>方法句柄是实例方法调用器</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="class-data-item">class_data_item</h3>
+<h4>引用自 class_def_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:无(字节对齐)</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>static_fields_size</td>
+  <td>uleb128</td>
+  <td>此项中定义的静态字段的数量</td>
+</tr>
+<tr>
+  <td>instance_fields_size</td>
+  <td>uleb128</td>
+  <td>此项中定义的实例字段的数量</td>
+</tr>
+<tr>
+  <td>direct_methods_size</td>
+  <td>uleb128</td>
+  <td>此项中定义的直接方法的数量</td>
+</tr>
+<tr>
+  <td>virtual_methods_size</td>
+  <td>uleb128</td>
+  <td>此项中定义的虚拟方法的数量</td>
+</tr>
+<tr>
+  <td>static_fields</td>
+  <td>encoded_field[static_fields_size]</td>
+  <td>定义的静态字段;以一系列编码元素的形式表示。这些字段必须按 <code>field_idx</code> 以升序进行排序。
+  </td>
+</tr>
+<tr>
+  <td>instance_fields</td>
+  <td>encoded_field[instance_fields_size]</td>
+  <td>定义的实例字段;以一系列编码元素的形式表示。这些字段必须按 <code>field_idx</code> 以升序进行排序。
+  </td>
+</tr>
+<tr>
+  <td>direct_methods</td>
+  <td>encoded_method[direct_methods_size]</td>
+  <td>定义的直接(<code>static</code>、<code>private</code> 或构造函数的任何一个)方法;以一系列编码元素的形式表示。这些方法必须按 <code>method_idx</code> 以升序进行排序。
+  </td>
+</tr>
+<tr>
+  <td>virtual_methods</td>
+  <td>encoded_method[virtual_methods_size]</td>
+  <td>定义的虚拟(非 <code>static</code>、<code>private</code> 或构造函数)方法;以一系列编码元素的形式表示。<i></i>此列表不得包括继承方法,除非被此项所表示的类覆盖。这些方法必须按 <code>method_idx</code> 以升序进行排序。虚拟方法的 <code>method_idx</code> 不得与任何直接方法相同。<i></i>
+  </td>
+</tr>
+</tbody>
+</table>
+
+<p class="note"><strong>注意</strong>:所有元素的 <code>field_id</code> 和 <code>method_id</code> 都必须引用相同的定义类。</p>
+
+<h3 id="encoded-field-format">encoded_field 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>field_idx_diff</td>
+  <td>uleb128</td>
+  <td>此字段标识(包括名称和描述符)的 <code>field_ids</code> 列表中的索引;它会表示为与列表中前一个元素的索引之间的差值。列表中第一个元素的索引则直接表示出来。
+  </td>
+</tr>
+<tr>
+  <td>access_flags</td>
+  <td>uleb128</td>
+  <td>字段的访问标记(<code>public</code>、<code>final</code> 等)。有关详情,请参阅“<code>access_flags</code> 定义”。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-method">encoded_method 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>method_idx_diff</td>
+  <td>uleb128</td>
+  <td>此方法标识(包括名称和描述符)的 <code>method_ids</code> 列表中的索引;它会表示为与列表中前一个元素的索引之间的差值。列表中第一个元素的索引则直接表示出来。
+  </td>
+</tr>
+<tr>
+  <td>access_flags</td>
+  <td>uleb128</td>
+  <td>方法的访问标记(<code>public</code>、<code>final</code> 等)。有关详情,请参阅“<code>access_flags</code> 定义”。
+  </td>
+</tr>
+<tr>
+  <td>code_off</td>
+  <td>uleb128</td>
+  <td>从文件开头到此方法代码结构的偏移量;如果此方法是 <code>abstract</code> 或 <code>native</code>,则该值为 <code>0</code>。该偏移量应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>code_item</code>”指定。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="type-list">type_list</h3>
+<h4>引用自 class_def_item 和 proto_id_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>uint</td>
+  <td>列表的大小(以条目数表示)</td>
+</tr>
+<tr>
+  <td>list</td>
+  <td>type_item[size]</td>
+  <td>列表的元素</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="type-item-format">type_item 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>type_idx</td>
+  <td>ushort</td>
+  <td><code>type_ids</code> 列表中的索引</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="code-item">code_item</h3>
+<h4>引用自 encoded_method</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>registers_size</td>
+  <td>ushort</td>
+  <td>此代码使用的寄存器数量</td>
+</tr>
+<tr>
+  <td>ins_size</td>
+  <td>ushort</td>
+  <td>此代码所用方法的传入参数的字数</td>
+</tr>
+<tr>
+  <td>outs_size</td>
+  <td>ushort</td>
+  <td>此代码进行方法调用所需的传出参数空间的字数</td>
+</tr>
+<tr>
+  <td>tries_size</td>
+  <td>ushort</td>
+  <td>此实例的 <code>try_item</code> 数量。如果此值为非零值,则这些项会显示为 <code>tries</code> 数组(正好位于此实例中 <code>insns</code> 的后面)。
+  </td>
+</tr>
+<tr>
+  <td>debug_info_off</td>
+  <td>uint</td>
+  <td>从文件开头到此代码的调试信息(行号 + 局部变量信息)序列的偏移量;如果没有任何信息,则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>debug_info_item</code>”指定。
+  </td>
+</tr>
+<tr>
+  <td>insns_size</td>
+  <td>uint</td>
+  <td>指令列表的大小(以 16 位代码单元为单位)</td>
+</tr>
+<tr>
+  <td>insns</td>
+  <td>ushort[insns_size]</td>
+  <td>字节码的实际数组。<code>insns</code> 数组中代码的格式由随附文档 <a href="dalvik-bytecode.html">Dalvik 字节码</a>指定。请注意,尽管此项被定义为 <code>ushort</code> 的数组,但仍有一些内部结构倾向于采用四字节对齐方式。此外,如果此项恰好位于某个字节序交换文件中,则交换操作将只在单个 <code>ushort</code> 上进行,而不是在较大的内部结构上进行。<i></i>
+  </td>
+</tr>
+<tr>
+  <td>padding</td>
+  <td>ushort(可选)= 0<i></i></td>
+  <td>使 <code>tries</code> 实现四字节对齐的两字节填充。只有 <code>tries_size</code> 为非零值且 <code>insns_size</code> 是奇数时,此元素才会存在。
+  </td>
+</tr>
+<tr>
+  <td>tries</td>
+  <td>try_item[tries_size]<i></i>(可选)</td>
+  <td>用于表示在代码中捕获异常的位置以及如何对异常进行处理的数组。该数组的元素在范围内不得重叠,且数值地址按照从低到高的顺序排列。只有 <code>tries_size</code> 为非零值时,此元素才会存在。
+  </td>
+</tr>
+<tr>
+  <td>handlers</td>
+  <td>encoded_catch_handler_list<i></i>(可选)</td>
+  <td>用于表示“捕获类型列表和关联处理程序地址”的列表的字节。每个 <code>try_item</code> 都具有到此结构的分组偏移量。只有 <code>tries_size</code> 为非零值时,此元素才会存在。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="type-item">try_item 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>start_addr</td>
+  <td>uint</td>
+  <td>此条目涵盖的代码块的起始地址。该地址是到第一个所涵盖指令开头部分的 16 位代码单元的计数。
+  </td>
+</tr>
+<tr>
+  <td>insn_count</td>
+  <td>ushort</td>
+  <td>此条目所覆盖的 16 位代码单元的数量。所涵盖(包含)的最后一个代码单元是 <code>start_addr + insn_count - 1</code>。
+  </td>
+</tr>
+<tr>
+  <td>handler_off</td>
+  <td>ushort</td>
+  <td>从关联的 <code>encoded_catch_hander_list</code> 开头部分到此条目的 <code>encoded_catch_handler</code> 的偏移量(以字节为单位)。此偏移量必须是到 <code>encoded_catch_handler</code> 开头部分的偏移量。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-catch-handlerlist">encoded_catch_handler_list 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>uleb128</td>
+  <td>列表的大小(以条目数表示)</td>
+</tr>
+<tr>
+  <td>list</td>
+  <td>encoded_catch_handler[handlers_size]</td>
+  <td>处理程序列表的实际列表,直接表示(不作为偏移量)并依序连接</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-catch-handler">encoded_catch_handler 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>sleb128</td>
+  <td>此列表中捕获类型的数量。如果为非正数,则该值是捕获类型数量的负数,捕获数量后跟一个“全部捕获”处理程序。例如,<code>size</code> 为 <code>0</code> 表示捕获类型为“全部捕获”,而没有明确类型的捕获。<code>size</code> 为 <code>2</code> 表示有两个明确类型的捕获,但没有“全部捕获”类型的捕获。<code>size</code> 为 <code>-1</code> 表示有一个明确类型的捕获和一个“全部捕获”类型的捕获。
+  </td>
+</tr>
+<tr>
+  <td>handlers</td>
+  <td>encoded_type_addr_pair[abs(size)]</td>
+  <td><code>abs(size)</code> 编码项的信息流(一种捕获类型对应一项);按照应对类型进行测试的顺序排列。
+  </td>
+</tr>
+<tr>
+  <td>catch_all_addr</td>
+  <td>uleb128<i></i>(可选)</td>
+  <td>“全部捕获”处理程序的字节码地址。只有当 <code>size</code> 为非正数时,此元素才会存在。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-type-addr-pair">encoded_type_addr_pair 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>type_idx</td>
+  <td>uleb128</td>
+  <td>要捕获的异常类型的 <code>type_ids</code> 列表中的索引</td>
+</tr>
+<tr>
+  <td>addr</td>
+  <td>uleb128</td>
+  <td>关联的异常处理程序的字节码地址</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="debug-info-item">debug_info_item</h3>
+<h4>引用自 code_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:无(字节对齐)</h4>
+
+<p>每个 <code>debug_info_item</code> 都会定义一个基于 DWARF3 的字节码状态机,在解译时,系统会发出 (emit) <code>code_item</code> 的位置表,并可能会发出 (emit) 其局部变量信息。该序列的开头是一个可变长度的标头(其长度取决于方法参数的数量),后跟状态机字节码,最后以 <code>DBG_END_SEQUENCE</code> 字节结尾。</p>
+
+<p>该状态机由 5 个寄存器组成。<code>address</code> 寄存器表示关联的 <code>insns_item</code> 中的指令偏移量(以 16 位代码单元为单位)。<code>address</code> 寄存器在每个 <code>debug_info</code> 序列的开头处都是从 <code>0</code> 开始,而且只能单调递增。<code>line</code> 寄存器表示应与状态机发出 (emit) 的下一个位置表条目相关联的源行号。它在序列标头中进行初始化,并可能会正向或负向发生更改,但绝不能小于 <code>1</code>。<code>source_file</code> 寄存器表示行号条目引用的源文件。它在 <code>class_def_item</code> 中被初始化为 <code>source_file_idx</code> 的值。另外两个变量(<code>prologue_end</code> 和 <code>epilogue_begin</code>)是布尔值标记(已初始化为 <code>false</code>),它们表示所发出的下一个位置是否应视为方法前序或结尾。此外,该状态机还必须跟踪用于 <code>DBG_RESTART_LOCAL</code> 代码的每个寄存器中最后一个局部变量的名称和类型。</p>
+
+<p>标头如下所示:</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+ <td>line_start</td>
+ <td>uleb128</td>
+ <td>状态机的 <code>line</code> 寄存器的初始值。不表示实际的位置条目。
+ </td>
+</tr>
+<tr>
+ <td>parameters_size</td>
+ <td>uleb128</td>
+ <td>已编码的参数名称的数量。每个方法参数都应该有一个名称,但不包括实例方法的 <code>this</code>(如果有)。
+ </td>
+</tr>
+<tr>
+ <td>parameter_names</td>
+ <td>uleb128p1[parameters_size]</td>
+ <td>方法参数名称的字符串索引。<code>NO_INDEX</code> 的编码值表示该关联参数没有可用的名称。该类型描述符和签名隐含在方法描述符和签名中。
+ </td>
+</tr>
+</tbody>
+</table>
+
+<p>字节码值如下:</p>
+
+<table class="debugByteCode">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>值</th>
+  <th>格式</th>
+  <th>参数</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>DBG_END_SEQUENCE</td>
+  <td>0x00</td>
+  <td></td>
+  <td><i>(无)</i></td>
+  <td>终止 <code>code_item</code> 的调试信息序列</td>
+</tr>
+<tr>
+  <td>DBG_ADVANCE_PC</td>
+  <td>0x01</td>
+  <td>uleb128 addr_diff</td>
+  <td><code>addr_diff</code>:添加到地址寄存器的数量</td>
+  <td>使地址寄存器指向下一个地址,而不发出 (emit) 位置条目</td>
+</tr>
+<tr>
+  <td>DBG_ADVANCE_LINE</td>
+  <td>0x02</td>
+  <td>sleb128 line_diff</td>
+  <td><code>line_diff</code>:要更改的行寄存器数量</td>
+  <td>使行寄存器指向下一个地址,而不发出 (emit) 位置条目</td>
+</tr>
+<tr>
+  <td>DBG_START_LOCAL</td>
+  <td>0x03</td>
+  <td>uleb128 register_num<br />uleb128p1 name_idx<br />uleb128p1 type_idx</td>
+  <td><code>register_num</code>:将包含本地变量的寄存器<br />
+    <code>name_idx</code>:该名称的字符串索引<br />
+    <code>type_idx</code>:该类型的类型索引</td>
+  <td>在当前地址中引入一个本地变量。<code>name_idx</code> 或 <code>type_idx</code> 都可能是 <code>NO_INDEX</code>,用于表示该值是未知的。
+  </td>
+</tr>
+<tr>
+  <td>DBG_START_LOCAL_EXTENDED</td>
+  <td>0x04</td>
+  <td>uleb128 register_num<br />uleb128p1 name_idx<br />uleb128p1 type_idx<br />uleb128p1 sig_idx</td>
+  <td><code>register_num</code>:将包含本地变量的寄存器<br />
+    <code>name_idx</code>:该名称的字符串索引<br />
+    <code>type_idx</code>:该类型的类型索引<br />
+    <code>sig_idx</code>:该类型签名的字符串索引</td>
+  <td>在当前地址中引入一个带有类型签名的本地变量。<code>name_idx</code>、<code>type_idx</code> 或 <code>sig_idx</code> 中的任何一个都可能是 <code>NO_INDEX</code>,用于表示该值是未知的(即便 <code>sig_idx</code> 为 <code>-1</code>,使用操作码 <code>DBG_START_LOCAL</code> 也可以更有效地表示相同的数据)。
+    <p class="note"><strong>注意</strong>:请参阅“<code>dalvik.annotation.Signature</code>”下的讨论,了解关于处理签名的注意事项。</p>
+  </td>
+</tr>
+<tr>
+  <td>DBG_END_LOCAL</td>
+  <td>0x05</td>
+  <td>uleb128 register_num</td>
+  <td><code>register_num</code>:包含本地变量的寄存器</td>
+  <td>在当前地址中将当前存在的本地变量标记为超出范围</td>
+</tr>
+<tr>
+  <td>DBG_RESTART_LOCAL</td>
+  <td>0x06</td>
+  <td>uleb128 register_num</td>
+  <td><code>register_num</code>:要重新启动的寄存器</td>
+  <td>在当前地址中重新引入一个本地变量。名称和类型与指定寄存器中存在的最后一个本地变量相同。
+  </td>
+</tr>
+<tr>
+  <td>DBG_SET_PROLOGUE_END</td>
+  <td>0x07</td>
+  <td></td>
+  <td><i>(无)</i></td>
+  <td>设置 <code>prologue_end</code> 状态机寄存器;表示所添加的下一个位置条目应被视为方法前序的结尾(方法断点的适当位置)。<code>prologue_end</code> 寄存器已被任何特殊的 (<code>&gt;= 0x0a</code>) 操作码清除。
+  </td>
+</tr>
+<tr>
+  <td>DBG_SET_EPILOGUE_BEGIN</td>
+  <td>0x08</td>
+  <td></td>
+  <td><i>(无)</i></td>
+  <td>设置 <code>epilogue_begin</code> 状态机寄存器;表示所添加的下一个位置条目应被视为方法结尾的开头(要在方法退出之前暂停执行的适当位置)。<code>epilogue_begin</code> 寄存器已被任何特殊的 (<code>&gt;= 0x0a</code>) 操作码清除。
+  </td>
+</tr>
+<tr>
+  <td>DBG_SET_FILE</td>
+  <td>0x09</td>
+  <td>uleb128p1 name_idx</td>
+  <td><code>name_idx</code>:源文件名称的字符串索引;如果未知,则此项为 <code>NO_INDEX</code></td>
+  <td>表示所有后续行号条目均引用此源文件名称,而不是 <code>code_item</code> 中指定的默认名称
+  </td>
+</tr>
+<tr>
+  <td><i>特殊操作码</i></td>
+  <td><!-- When updating the range below, make sure to search for other
+  instances of 0x0a in this section. -->
+  </td><td>0x0a…0xff</td>
+  <td></td>
+  <td><i>(无)</i></td>
+  <td>使 <code>line</code> 和 <code>address</code> 寄存器指向下一个地址,发出 (emit) 一个位置条目,并清除 <code>prologue_end</code> 和 <code>epilogue_begin</code>。请参阅下文中的说明。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="opcodes">特殊操作码</h3>
+
+<p>值在 <code>0x0a</code> 和 <code>0xff</code>(含)之间的操作码会将 <code>line</code> 和 <code>address</code> 寄存器移动一小部分,然后发出 (emit) 一个新的位置表条目。这些增量的公式如下所示:</p>
+
+<pre>
+DBG_FIRST_SPECIAL = 0x0a  // the smallest special opcode
+DBG_LINE_BASE   = -4      // the smallest line number increment
+DBG_LINE_RANGE  = 15      // the number of line increments represented
+
+adjusted_opcode = opcode - DBG_FIRST_SPECIAL
+
+line += DBG_LINE_BASE + (adjusted_opcode % DBG_LINE_RANGE)
+address += (adjusted_opcode / DBG_LINE_RANGE)
+</pre>
+
+<h3 id="annotations-directory">annotations_directory_item</h3>
+<h4>引用自 class_def_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>class_annotations_off</td>
+  <td>uint</td>
+  <td>从文件开头到直接在该类上所做的注释的偏移量;如果该类没有任何直接注释,则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>annotation_set_item</code>”指定。
+  </td>
+</tr>
+<tr>
+  <td>fields_size</td>
+  <td>uint</td>
+  <td>此项所注释的字段数量</td>
+</tr>
+<tr>
+  <td>annotated_methods_size</td>
+  <td>uint</td>
+  <td>此项所注释的方法数量</td>
+</tr>
+<tr>
+  <td>annotated_parameters_size</td>
+  <td>uint</td>
+  <td>此项所注释的方法参数列表的数量</td>
+</tr>
+<tr>
+  <td>field_annotations</td>
+  <td>field_annotation[fields_size]<i></i>(可选)</td>
+  <td>所关联字段的注释列表。该列表中的元素必须按 <code>field_idx</code> 以升序进行排序。
+  </td>
+</tr>
+<tr>
+  <td>method_annotations</td>
+  <td>method_annotation[methods_size]<i></i>(可选)</td>
+  <td>所关联方法的注释列表。该列表中的元素必须按 <code>method_idx</code> 以升序进行排序。
+  </td>
+</tr>
+<tr>
+  <td>parameter_annotations</td>
+  <td>parameter_annotation[parameters_size]<i></i>(可选)</td>
+  <td>所关联方法参数的注释列表。该列表中的元素必须按 <code>method_idx</code> 以升序进行排序。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<p class="note"><strong>注意</strong>:所有元素的 <code>field_id</code> 和 <code>method_id</code> 都必须引用相同的定义类。</p>
+
+<h3 id="field-annotation">field_annotation 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>field_idx</td>
+  <td>uint</td>
+  <td>字段(带注释)标识的 <code>field_ids</code> 列表中的索引</td>
+</tr>
+<tr>
+  <td>annotations_off</td>
+  <td>uint</td>
+  <td>从文件开头到该字段的注释列表的偏移量。该偏移量应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>annotation_set_item</code>”指定。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="method-annotation">method_annotation 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>method_idx</td>
+  <td>uint</td>
+  <td>方法(带注释)标识的 <code>method_ids</code> 列表中的索引</td>
+</tr>
+<tr>
+  <td>annotations_off</td>
+  <td>uint</td>
+  <td>从文件开头到该方法注释列表的偏移量。该偏移量应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>annotation_set_item</code>”指定。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="parameter-annotation">parameter_annotation 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>method_idx</td>
+  <td>uint</td>
+  <td>方法(其参数带注释)标识的 <code>method_ids</code> 列表中的索引</td>
+</tr>
+<tr>
+  <td>annotations_off</td>
+  <td>uint</td>
+  <td>从文件开头到该方法参数的注释列表的偏移量。该偏移量应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>annotation_set_ref_list</code>”指定。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="set-ref-list">annotation_set_ref_list</h3>
+<h4>引用自 parameter_annotations_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>uint</td>
+  <td>列表的大小(以条目数表示)</td>
+</tr>
+<tr>
+  <td>list</td>
+  <td>annotation_set_ref_item[size]</td>
+  <td>列表的元素</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="set-ref-item">annotation_set_ref_item 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>annotations_off</td>
+  <td>uint</td>
+  <td>从文件开头到所引用注释集的偏移量;如果此元素没有任何注释,则该值为 <code>0</code>。该偏移量(如果为非零值)应该是到 <code>data</code> 区段中某个位置的偏移量。数据格式由下文的“<code>annotation_set_item</code>”指定。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="annotation-set-item">annotation_set_item</h3>
+<h4>引用自 annotations_directory_item、field_annotations_item、method_annotations_item 和 annotation_set_ref_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:4 个字节</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>size</td>
+  <td>uint</td>
+  <td>该集合的大小(以条目数表示)</td>
+</tr>
+<tr>
+  <td>entries</td>
+  <td>annotation_off_item[size]</td>
+  <td>该集合的元素。这些元素必须按 <code>type_idx</code> 以升序进行排序。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="off-item">annotation_off_item 格式</h3>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>annotation_off</td>
+  <td>uint</td>
+  <td>从文件开头到注释的偏移量。该偏移量应该是到 <code>data</code> 区段中某个位置的偏移量,且该位置的数据格式由下文的“<code>annotation_item</code>”指定。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="annotation-item">annotation_item</h3>
+<h4>引用自 annotation_set_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:无(字节对齐)</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>visibility</td>
+  <td>ubyte</td>
+  <td>此注释的预期可见性(见下文)</td>
+</tr>
+<tr>
+  <td>annotation</td>
+  <td>encoded_annotation</td>
+  <td>已编码的注释内容;采用上文的“<code>encoded_value</code> 编码”下的“<code>encoded_annotation</code> 格式”所述的格式。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="visibility">可见值</h3>
+
+<p>以下是 <code>annotation_item</code> 中 <code>visibility</code> 字段的选项:</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>值</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>VISIBILITY_BUILD</td>
+  <td>0x00</td>
+  <td>预计仅在构建(例如,在编译其他代码期间)时可见</td>
+</tr>
+<tr>
+  <td>VISIBILITY_RUNTIME</td>
+  <td>0x01</td>
+  <td>预计在运行时可见</td>
+</tr>
+<tr>
+  <td>VISIBILITY_SYSTEM</td>
+  <td>0x02</td>
+  <td>预计在运行时可见,但仅对基本系统(而不是常规用户代码)可见</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="encoded-array-item">encoded_array_item</h3>
+<h4>引用自 class_def_item</h4>
+<h4>在数据区段中显示</h4>
+<h4>对齐:无(字节对齐)</h4>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>encoded_array</td>
+  <td>用于表示编码数组值的字节,采用上文的“<code>encoded_value</code> 编码”下的“<code>encoded_array</code> 格式”指定的格式。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="system-annotation">系统注释</h2>
+
+<p>系统注释用于表示关于类(以及方法和字段)的各种反射信息。这类信息通常只能通过客户端(非系统)代码来间接获取。</p>
+
+<p>系统注释在 <code>.dex</code> 文件中表示为注释,可见性设为 <code>VISIBILITY_SYSTEM</code>。</p><h3 id="dalvik-annotation-default">dalvik.annotation.AnnotationDefault</h3>
+<h4>在注释界面的方法中显示</h4>
+
+<p><code>AnnotationDefault</code> 注释会附加到各个注释界面,用于表示默认绑定。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>Annotation</td>
+  <td>此注释的默认绑定,表示为此类型的注释。该注释不需要包含由注释定义的所有名称;缺少的名称根本没有默认值。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-enclosingclass">dalvik.annotation.EnclosingClass</h3>
+<h4>在类中显示</h4>
+
+<p><code>EnclosingClass</code> 注释会附加到各个类,这些类会被定义为其他类本身的成员,或者匿名显示但不在方法正文中定义(例如,合成的内部类)。具有此注释的各个类还必须具有 <code>InnerClass</code> 注释。此外,一个类不得同时包含 <code>EnclosingClass</code> 和 <code>EnclosingMethod</code> 注释。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>Class</td>
+  <td>在词法作用域最接近此类的类</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-enclosingmethod">dalvik.annotation.EnclosingMethod</h3>
+<h4>在类中显示</h4>
+
+<p><code>EnclosingMethod</code> 注释会附加到已在方法正文中定义的各个类。具有此注释的各个类还必须具有 <code>InnerClass</code> 注释。此外,一个类不得同时包含 <code>EnclosingClass</code> 和 <code>EnclosingMethod</code> 注释。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>Method</td>
+  <td>在词法作用域最接近此类的方法</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-innerclass">dalvik.annotation.InnerClass</h3>
+<h4>在类中显示</h4>
+
+<p><code>InnerClass</code> 注释会附加到已在其他类定义的词法作用域中定义的各个类。<i></i><i></i>具有此注释的所有类还必须具有 <code>EnclosingClass</code> 注释或 <code>EnclosingMethod</code> 注释。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>name</td>
+  <td>String</td>
+  <td>此类最初声明的简单名称(不包含任何软件包前缀)。如果此类是匿名显示,则名称为 <code>null</code>。
+  </td>
+</tr>
+<tr>
+  <td>accessFlags</td>
+  <td>int</td>
+  <td>此类最初声明的访问标记(由于源语言与目标虚拟机之间的执行模型不匹配,该标记可能与有效标记不同)</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-memberclasses">dalvik.annotation.MemberClasses</h3>
+<h4>在类中显示</h4>
+
+<p><code>MemberClasses</code> 注释会附加到声明成员类(成员类是指具有名称的直接内部类)的各个类。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>Class[]</td>
+  <td>成员类的数组</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-annotation-method-parameters">dalvik.annotation.MethodParameters</h3>
+<h4>在方法中显示</h4>
+
+<p class="note"><strong>注意</strong>:此注释在 Android 7.1 之后的版本中添加。早期 Android 版本中存在的这类注释将被忽略。</p>
+
+<p><code>MethodParameters</code> 注释是可选项,并可用于提供参数元数据(例如参数名称和修饰符)。</p>
+
+<p>当运行时不需要参数元数据时,可在方法或构造函数中放心地省略这项注释。
+<code>java.lang.reflect.Parameter.isNamePresent()</code> 可用于检查某个参数中是否存在元数据;如果不存在这种信息,则关联的反射方法(例如 <code>java.lang.reflect.Parameter.getName()</code>)将在运行时回退到默认行为。</p>
+
+<p>如果编译器包含参数元数据,则必须包含已生成类(如枚举)的信息,因为参数元数据会指明参数是合成参数还是强制参数。</p>
+
+<p><code>MethodParameters</code> 注释仅用于描述单个方法的参数。因此,为了权衡代码大小和运行时效率,编译器可能会完全省略不含参数的构造函数和方法的注释。</p>
+
+<p>下面记录的数组必须与该方法所关联的 <code>method_id_item</code> dex 结构具有相同的大小,否则运行时会抛出 <code>java.lang.reflect.MalformedParametersException</code>。</p>
+
+<p>即:<code>method_id_item.proto_idx</code> -&gt; <code>proto_id_item.parameters_off</code> -&gt; <code>type_list.size</code> 必须与 <code>names().length</code> 和 <code>accessFlags().length</code> 相同。</p>
+
+<p>由于 <code>MethodParameters</code> 说明了所有形式方法参数,甚至包括源代码中没有明确声明或隐式声明的参数,因此数组的大小可能不同于签名或其他元数据信息(仅基于源代码中声明的显式参数)的大小。此外,<code>MethodParameters</code> 也不包含任何关于实际方法签名中不存在的类型注释接收器参数的信息。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>names</td>
+  <td>String[]</td>
+  <td>关联方法的形式参数的名称。数组不得为空;但如果没有任何形式参数,则该项必须为空。如果使用该索引的形式参数没有名称,则数组中的值必须为空。<br />如果参数名称字符串为空或包含“.”、“;”、“[”或“/”,则运行时会抛出 <code>java.lang.reflect.MalformedParametersException</code>。
+  </td>
+</tr>
+<tr>
+  <td>accessFlags</td>
+  <td>int[]</td>
+  <td>关联方法的形式参数的访问标记。数组不得为空;但如果没有任何形式参数,则该项必须为空。<br />该值是包含以下值的位掩码:<br />
+  <ul>
+    <li>0x0010:final,表示该参数被声明为 final</li>
+    <li>0x1000:synthetic,表示该参数由编译器引入</li>
+    <li>0x8000:mandated,表示该参数是合成参数,但同样由语言规范所暗示</li>
+  </ul>如果任何位在此集合之外进行设置,则运行时会抛出 <code>java.lang.reflect.MalformedParametersException</code>。
+  </td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-signature">dalvik.annotation.Signature</h3>
+<h4>在类、字段和方法中显示</h4>
+
+<p><code>Signature</code> 注释会附加到各个类、字段或方法(按照比 <code>type_id_item</code> 所表示的类型更复杂的类型进行定义)。<code>.dex</code> 格式不定义签名的格式;它仅仅能够表示源语言成功实现该语言的语义所需要的任何签名。因此,签名通常不会通过虚拟机实现进行解析(或验证)。这些签名只会传递给更高级别的 API 和工具(如调试程序)。因此,每次使用签名时都应该记录下来,以免就只接收有效签名作出任何假设,从而明确防止出现句法无效的签名。</p>
+
+<p>由于签名字符串往往包含很多重复内容,因此 <code>Signature</code> 注释会被定义为字符串的数组,其中的重复元素会自然地引用相同的基本数据,而签名则被视为该数组中所有字符串的连接。<i></i>对于如何将签名分割成单独的字符串,则没有任何规则;这完全取决于生成 <code>.dex</code> 文件的工具。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>String[]</td>
+  <td>该类或成员的签名,用作要连接在一起的字符串的数组</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="dalvik-throws">dalvik.annotation.Throws</h3>
+<h4>在方法中显示</h4>
+
+<p><code>Throws</code> 注释会附加到已声明要抛出一个或多个异常类型的各个方法。</p>
+
+<table class="format">
+<thead>
+<tr>
+  <th>名称</th>
+  <th>格式</th>
+  <th>说明</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+  <td>value</td>
+  <td>Class[]</td>
+  <td>已抛出的异常类型的数组</td>
+</tr>
+</tbody>
+</table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/devices/tech/debug/index.html b/zh-cn/devices/tech/debug/index.html
new file mode 100644
index 0000000..c0038c4
--- /dev/null
+++ b/zh-cn/devices/tech/debug/index.html
@@ -0,0 +1,180 @@
+<html devsite><head>
+    <title>调试 Android 平台原生代码</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>本部分总结了开发平台级功能时,可用于调试、跟踪和分析原生 Android 平台代码的实用工具和相关命令。本页面介绍了 <code>debuggerd</code> 和 GNU 项目调试程序 (GDB) 的用法。debuggerd 是一种用于在应用崩溃后收集错误信息的守护进程。</p>
+
+<p>本部分的其他页面介绍了如何通过 <a href="/devices/tech/debug/dumpsys.html">Dumpsys</a> 和多种其他调适工具了解系统服务状况,其中包括查看<a href="/devices/tech/debug/native-memory.html">本地内存</a>、<a href="/devices/tech/debug/netstats.html">网络</a>和 <a href="/devices/tech/debug/procstats.html">RAM</a> 使用情况、使用 <a href="/devices/tech/debug/asan.html">AddressSanitizer</a> 检测原生代码中的内存错误、评估<a href="/devices/tech/debug/eval_perf.html">性能问题</a>(包括 <a href="/devices/tech/debug/systrace">systrace</a>)。</p>
+
+<h2 id="debuggerd">使用 debuggerd</h2>
+
+<p><code>debuggerd</code> 进程会转储寄存器并展开堆栈。当动态链接的可执行文件启动时,系统会注册多个信号处理程序,这些处理程序会在 SIGSEGV 或 SIGABRT 等信号发送至相应进程时连接到 <code>debuggerd</code>(或 <code>debuggerd64)</code>)。</p>
+
+<p><code>debuggerd</code> 仅在未连接任何其他内容时才可连接。这意味着,在使用 <code>strace</code> 或 <code>gdb</code> 等工具时,将无法使用 <code>debuggerd</code>。此外,您还可以通过调用 <code>prctl(PR_SET_DUMPABLE, 0)</code> 明确阻止 <code>debuggerd</code> 进行连接,这一点在您需要选择停用崩溃报告时非常有用。</p>
+
+<p><code>debuggerd</code> 输出示例(已去除时间戳和无关信息):</p>
+
+<pre class="no-pretty-print">
+*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+Build fingerprint: 'Android/aosp_angler/angler:7.1.1/NYC/enh12211018:eng/test-keys'
+Revision: '0'
+ABI: 'arm'
+pid: 17946, tid: 17949, name: crasher  &gt;&gt;&gt; crasher &lt;&lt;&lt;
+signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
+    r0 0000000c  r1 00000000  r2 00000000  r3 00000000
+    r4 00000000  r5 0000000c  r6 eccdd920  r7 00000078
+    r8 0000461a  r9 ffc78c19  sl ab209441  fp fffff924
+    ip ed01b834  sp eccdd800  lr ecfa9a1f  pc ecfd693e  cpsr 600e0030
+
+backtrace:
+    #00 pc 0004793e  /system/lib/libc.so (pthread_mutex_lock+1)
+    #01 pc 0001aa1b  /system/lib/libc.so (readdir+10)
+    #02 pc 00001b91  /system/xbin/crasher (readdir_null+20)
+    #03 pc 0000184b  /system/xbin/crasher (do_action+978)
+    #04 pc 00001459  /system/xbin/crasher (thread_callback+24)
+    #05 pc 00047317  /system/lib/libc.so (_ZL15__pthread_startPv+22)
+    #06 pc 0001a7e5  /system/lib/libc.so (__start_thread+34)
+Tombstone written to: /data/tombstones/tombstone_06
+</pre>
+
+<p><code>debuggerd</code> 输出的最后一行会向日志转储一个摘要,并向磁盘写入完整的 tombstone<em></em>。tombstone 仅仅是一个包含与崩溃进程相关的额外数据的文件;文件中的信息在调试崩溃时会非常有用,尤其是对崩溃进程中的所有线程(而不只是捕捉到信号的线程)和完整内存映射进行堆栈跟踪时。</p>
+
+<p>假设可以找到未剥离的二进制文件,您可以将上述示例粘贴到 <code>development/scripts/stack</code>,从而获取更详细的展开信息(包含行数信息):</p>
+
+<p class="key-point"><strong>提示</strong>:为方便起见,如果您已启动 <code>stack</code>,它将在您的 $PATH 上显示,因此您无需提供完整路径。</p>
+
+<pre>
+$ development/tools/stack
+Reading native crash info from stdin
+03-02 23:53:49.477 17951 17951 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+03-02 23:53:49.477 17951 17951 F DEBUG   : Build fingerprint: 'Android/aosp_angler/angler:7.1.1/NYC/enh12211018:eng/test-keys'
+03-02 23:53:49.477 17951 17951 F DEBUG   : Revision: '0'
+03-02 23:53:49.477 17951 17951 F DEBUG   : ABI: 'arm'
+03-02 23:53:49.478 17951 17951 F DEBUG   : pid: 17946, tid: 17949, name: crasher  &gt;&gt;&gt; crasher &lt;&lt;&lt;
+03-02 23:53:49.478 17951 17951 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
+03-02 23:53:49.478 17951 17951 F DEBUG   :     r0 0000000c  r1 00000000  r2 00000000  r3 00000000
+03-02 23:53:49.478 17951 17951 F DEBUG   :     r4 00000000  r5 0000000c  r6 eccdd920  r7 00000078
+03-02 23:53:49.478 17951 17951 F DEBUG   :     r8 0000461a  r9 ffc78c19  sl ab209441  fp fffff924
+03-02 23:53:49.478 17951 17951 F DEBUG   :     ip ed01b834  sp eccdd800  lr ecfa9a1f  pc ecfd693e  cpsr 600e0030
+03-02 23:53:49.491 17951 17951 F DEBUG   :
+03-02 23:53:49.491 17951 17951 F DEBUG   : backtrace:
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #00 pc 0004793e  /system/lib/libc.so (pthread_mutex_lock+1)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #01 pc 0001aa1b  /system/lib/libc.so (readdir+10)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #02 pc 00001b91  /system/xbin/crasher (readdir_null+20)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #03 pc 0000184b  /system/xbin/crasher (do_action+978)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #04 pc 00001459  /system/xbin/crasher (thread_callback+24)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #05 pc 00047317  /system/lib/libc.so (_ZL15__pthread_startPv+22)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     #06 pc 0001a7e5  /system/lib/libc.so (__start_thread+34)
+03-02 23:53:49.492 17951 17951 F DEBUG   :     Tombstone written to: /data/tombstones/tombstone_06
+Reading symbols from /huge-ssd/aosp-arm64/out/target/product/angler/symbols
+Revision: '0'
+pid: 17946, tid: 17949, name: crasher  &gt;&gt;&gt; crasher &lt;&lt;&lt;
+signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xc
+     r0 0000000c  r1 00000000  r2 00000000  r3 00000000
+     r4 00000000  r5 0000000c  r6 eccdd920  r7 00000078
+     r8 0000461a  r9 ffc78c19  sl ab209441  fp fffff924
+     ip ed01b834  sp eccdd800  lr ecfa9a1f  pc ecfd693e  cpsr 600e0030
+Using arm toolchain from: /huge-ssd/aosp-arm64/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/
+
+Stack Trace:
+  RELADDR   FUNCTION                   FILE:LINE
+  0004793e  pthread_mutex_lock+2       bionic/libc/bionic/pthread_mutex.cpp:515
+  v------&gt;  ScopedPthreadMutexLocker   bionic/libc/private/ScopedPthreadMutexLocker.h:27
+  0001aa1b  readdir+10                 bionic/libc/bionic/dirent.cpp:120
+  00001b91  readdir_null+20            system/core/debuggerd/crasher.cpp:131
+  0000184b  do_action+978              system/core/debuggerd/crasher.cpp:228
+  00001459  thread_callback+24         system/core/debuggerd/crasher.cpp:90
+  00047317  __pthread_start(void*)+22  bionic/libc/bionic/pthread_create.cpp:202 (discriminator 1)
+  0001a7e5  __start_thread+34          bionic/libc/bionic/clone.cpp:46 (discriminator 1)
+</pre>
+
+<p class="note"><strong>注意</strong>:某些系统库使用 <code>LOCAL_STRIP_MODULE := keep_symbols</code> 构建,可直接从 <code>debuggerd</code> 提供可用的回溯,而不会像未剥离版本那样占用较大的空间。</p>
+
+<p>您也可以 <code>stack</code> 整个 tombstone。示例:</p>
+<pre>
+$ stack &lt; FS/data/tombstones/tombstone_05
+</pre>
+<p>如果您刚刚在当前目录中解压过错误报告,这将非常有用。要详细了解如何诊断原生代码崩溃和 tombstone,请参阅<a href="/devices/tech/debug/native-crash.html">诊断原生代码崩溃</a>。
+</p>
+
+<h3>从正在运行的进程获取堆栈跟踪/tombstone</h3>
+
+<p>您也可以对正在运行的进程使用 <code>debuggerd</code>。在命令行中,使用进程 ID (PID) 调用 <code>debuggerd</code>,以将完整的 tombstone 转储至 <code>stdout</code>。要确切获取进程中每个线程的堆栈,请添加 <code>-b</code> 或 <code>--backtrace</code> 标记。
+
+</p><h2 id="native">使用 GDB</h2>
+
+<p>GNU 项目调试程序 (GDB) 是常用的 Unix 调试程序。</p>
+
+<h3 id="running">调试正在运行的应用</h3>
+
+<p>要连接到已在运行的应用或本机守护进程,请配合使用 <code>gdbclient</code> 和 PID。例如,要调试 PID 为 1234 的进程,请运行:</p>
+
+<pre class="no-pretty-print">
+$ gdbclient 1234
+</pre>
+
+<p>此脚本会设置端口转发,在设备上启动相应的 <code>gdbserver</code>,在主机上启动相应的 <code>gdb</code>,配置 <code>gdb</code> 以找出符号,然后将 <code>gdb</code> 连接到远程 <code>gdbserver</code>。</p>
+
+<h3 id="starts">在本机进程启动时对其进行调试</h3>
+
+<p>要在进程启动时对其进行调试,请使用 <code>gdbserver</code> 或 <code>gdbserver64</code>(适用于 64 位进程)。例如:</p>
+
+<pre class="no-pretty-print">
+$ adb shell gdbserver :5039 /system/bin/<em>my_test_app</em>
+Process my_test_app created; pid = 3460
+Listening on port 5039
+</pre>
+
+<p>接着,从 <code>gdbserver</code> 输出结果中找出应用 PID,并将其用于其他终端窗口:</p>
+
+<pre class="no-pretty-print">
+$ gdbclient <em>&lt;app pid&gt;</em>
+</pre>
+
+<p>最后,在 <code>gdb</code> 提示处输入 <strong>continue</strong>。</p>
+
+<p class="note"><strong>注意</strong>:如果您使用的是错误的 <code>gdbserver</code>,则会收到没用的错误消息(如“<code>Reply contains invalid hex digit 59</code>”)。</p>
+
+<h3 id="crash">调试崩溃的进程</h3>
+
+<p>如果您希望 <code>debuggerd</code> 暂停崩溃的进程,以便您可以附加 <code>gdb</code>,请设置相应的属性:</p>
+
+<pre class="no-pretty-print">
+# Android 7.0 Nougat and later.
+$ adb shell setprop debug.debuggerd.wait_for_gdb true
+
+# Android 6.0 Marshmallow and earlier.
+$ adb shell setprop debug.db.uid 999999
+</pre>
+
+<p>在寻常崩溃输出的结尾处,<code>debuggerd</code> 会提供有关如何使用以下命令来连接 <code>gdb</code> 的说明:</p><pre class="no-pretty-print">
+$ gdbclient &lt;pid&gt;
+</pre>
+
+<h3 id="symbols">无符号调试</h3>
+
+<p>对于 32 位 ARM,如果您的指令中没有符号,<code>gdb</code> 就不清楚自己正在反汇编哪个指令集(ARM 或 Thumb)。要指定缺少符号信息时选为默认指令集的指令集,请设置以下属性:</p>
+
+<pre class="no-pretty-print">
+$ set arm fallback-mode arm   # or thumb
+</pre>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/devices/tech/ota/device_code.html b/zh-cn/devices/tech/ota/device_code.html
new file mode 100644
index 0000000..dc4f5fc
--- /dev/null
+++ b/zh-cn/devices/tech/ota/device_code.html
@@ -0,0 +1,760 @@
+<html devsite><head>
+    <title>设备专属代码</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>恢复系统包括一些用于插入设备专属代码的钩子,以便 OTA 更新还可以更新设备中除 Android 系统以外的其他部分(例如,基带或无线电处理器)。</p>
+<p>下面的部分和示例对 <b>yoyodyne</b> 供应商生产的 <b>tardis</b> 设备进行了自定义。</p>
+
+<h2>分区映射</h2>
+<p>自 Android 2.3 版本起,该平台就开始支持 eMMc 闪存设备以及在这些设备上运行的 ext4 文件系统。此外,该平台还支持内存技术设备 (MTD) 闪存设备以及较旧版本的 yaffs2 文件系统。</p>
+<p>分区映射文件由 TARGET_RECOVERY_FSTAB 指定;recovery 二进制文件和软件包编译工具均使用该文件。您可以在 BoardConfig.mk 中的 TARGET_RECOVERY_FSTAB 中指定映射文件的名称。</p>
+<p>分区映射文件示例可能如下所示:</p>
+
+<p><code>device/yoyodyne/tardis/recovery.fstab</code></p>
+
+<pre>
+# mount point       fstype  device       [device2]        [options (3.0+ only)]
+
+/sdcard     vfat    /dev/block/mmcblk0p1 /dev/block/mmcblk0
+/cache      yaffs2  cache
+/misc       mtd misc
+/boot       mtd boot
+/recovery   emmc    /dev/block/platform/s3c-sdhci.0/by-name/recovery
+/system     ext4    /dev/block/platform/s3c-sdhci.0/by-name/system length=-4096
+/data       ext4    /dev/block/platform/s3c-sdhci.0/by-name/userdata
+</pre>
+
+<p>除 <code>/sdcard</code>(可选)之外,本示例中的所有装载点都必须进行定义(设备也可以添加额外的分区)。支持的文件系统类型有下列 5 种:</p>
+<dl>
+<dt>yaffs2</dt>
+<dd>yaffs2 文件系统位于 MTD 闪存设备的顶部。MTD 分区的名称必须是“device”,且该名称必须显示在 <code>/proc/mtd</code> 中。</dd>
+<dt>mtd</dt>
+<dd>原始 MTD 分区,用于可引导分区(例如 boot 和 recovery)。MTD 实际上并未装载,但是装载点会被用作定位分区的键。<code>/proc/mtd</code> 中 MTD 分区的名称必须是“device”。</dd>
+<dt>ext4</dt>
+<dd>ext4 文件系统位于 eMMc 闪存设备的顶部。块设备的路径必须是“device”。</dd>
+<dt>emmc</dt>
+<dd>原始 eMMc 块设备,用于可引导分区(例如 boot 和 recovery)。与 mtd 类型相似,eMMc 从未实际装载,但装载点字符串会被用于定位表中的设备。</dd>
+<dt>vfat</dt>
+<dd>FAT 文件系统位于块设备的顶部,通常用于外部存储设备(如 SD 卡)。该设备是块设备;device2 是系统装载主设备失败时尝试装载的第二个块设备(旨在与可能(或可能没有)使用分区表进行格式化的 SD 卡兼容)。
+<p>所有分区都必须装载到根目录下(即装载点值必须以斜线开头,且不含其他斜线)。此限制仅适用于在 recovery 中装载文件系统;主系统可随意将其装载在任何位置。目录 <code>/boot</code>、<code>/recovery</code> 和 <code>/misc</code> 应为原始类型(mtd 或 emmc),而目录 <code>/system</code>、<code>/data</code>、<code>/cache</code> 和 <code>/sdcard</code>(如果有)则应为文件系统类型(yaffs2、ext4 或 vfat)。</p></dd></dl>
+
+<p>从 Android 3.0 开始,recovery.fstab 文件就新添了额外的可选字段,即“options”。<i></i>目前,唯一定义的选项是“length”,它可以让您明确指定分区的长度。<i></i>对分区重新进行格式化(例如,在执行数据清除/恢复出厂设置操作过程中对用户数据分区进行格式化,或在安装完整 OTA 更新包的过程中对系统分区进行格式化)时会使用此长度。如果长度值为负数,则将长度值与真正的分区大小相加,即可得出要格式化的大小。例如,设置“length=-16384”即表示在对该分区重新进行格式化时,该分区的最后 16k 将不会被覆盖。<i></i>该选项支持加密 userdata 分区(在这里,加密元数据会存储在不得被覆盖的分区的末尾部分)等功能。</p>
+
+<p class="note"><strong>注意</strong>:<b>device2</b> 和 <b>options</b> 字段均为可选字段,在解析时会产生歧义。如果该行第 4 个字段中的条目以“/”字符开头,则被视为 <b>device2</b> 条目;如果该条目不是以“/”字符开头,则被视为 <b>options</b> 字段。</p>
+
+<h2 id="boot-animation">启动动画</h2>
+
+<p>设备制造商可以自定义在启动 Android 设备时显示的动画。为此,请构建一个根据 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/cmds/bootanimation/FORMAT.md">bootanimation 格式</a>中的规范组织和定位的 .zip 文件。</p>
+
+<p>对于 <a href="https://developer.android.com/things/hardware/index.html">Android Things</a> 设备,您可以在 Android Things 控制台中上传压缩文件,以便在所选产品中包含图片。</p>
+
+<p class="note"><strong>注意</strong>:这些图片必须符合 Android <a href="/source/brands">品牌指南</a>。</p>
+
+<h2 id="recovery-ui">恢复界面</h2>
+<p>要支持配备不同可用硬件(物理按钮、LED、屏幕等)的设备,您可以自定义恢复界面以显示状态,并访问每台设备的手动操作隐藏功能。</p>
+<p>您的目标是编译一个包含一些 C++ 对象的小型静态库,以提供设备专属功能。默认情况下会使用 <code>
+<b>bootable/recovery/default_device.cpp</b></code> 文件,该文件正好可在为设备编写此文件的版本时供您复制。</p>
+
+<p><code>device/yoyodyne/tardis/recovery/recovery_ui.cpp</code></p>
+
+<pre>
+#include &lt;linux/input.h&gt;
+
+#include "common.h"
+#include "device.h"
+#include "screen_ui.h"
+</pre>
+
+<h3 id="header-item-functions">Headers 和 Item 函数</h3>
+<p>Device 类需要相关函数来返回隐藏恢复菜单中出现的标头和项。Headers 介绍了如何操作菜单(例如,用于更改/选择突出显示项的控制功能)。</p>
+
+<pre>
+static const char* HEADERS[] = { "Volume up/down to move highlight;",
+                                 "power button to select.",
+                                 "",
+                                 NULL };
+
+static const char* ITEMS[] =  {"reboot system now",
+                               "apply update from ADB",
+                               "wipe data/factory reset",
+                               "wipe cache partition",
+                               NULL };
+</pre>
+
+<p class="note"><strong>注意</strong>:长行会被截断(而非换行),因此请留意您设备的屏幕宽度。</p>
+
+<h3 id="customize-checkkey">自定义 CheckKey</h3>
+<p>接下来,请定义您设备的 RecoveryUI 实现。本例假设 <b>tardis</b> 设备配有屏幕,因此,您可以沿用内置 ScreenRecoveryUIimplementation(请参阅有关<a href="#devices-without-screens">无屏幕设备</a>的说明)。可通过 ScreenRecoveryUI 自定义的唯一函数是 <code>CheckKey()</code>,该函数会执行初始异步键处理操作:</p>
+
+<pre>
+class TardisUI : public ScreenRecoveryUI {
+  public:
+    virtual KeyAction CheckKey(int key) {
+        if (key == KEY_HOME) {
+            return TOGGLE;
+        }
+        return ENQUEUE;
+    }
+};
+</pre>
+
+<h4 id="key-constants">KEY 常量</h4>
+<p>KEY_* 常量在 <code>linux/input.h</code> 中定义。无论后续恢复流程执行什么操作,都会调用 <code>
+CheckKey()</code>:菜单切换为关闭状态时、菜单处于打开状态时、软件包安装期间以及用户数据清除期间等。它会返回下列 4 个常量中的一个:</p>
+
+<ul>
+<li><b>TOGGLE</b>. 切换菜单的显示状态以及(或)开启/关闭文本日志</li>
+<li><b>REBOOT</b>. 立即重新启动设备</li>
+<li><b>IGNORE</b>. 忽略此按键</li>
+<li><b>ENQUEUE</b>. 向队列中添加此按键以同步使用(即在启用显示时供恢复菜单系统使用)</li>
+</ul>
+
+<p>每次在 key-down 事件后执行同一按键的 key-up 事件时都会调用 <code>CheckKey()</code>(事件 A-down B-down B-up A-up 序列只会调用 <code>CheckKey(B)</code>)。<code>CheckKey()
+</code> 可以调用 <code>IsKeyPressed()</code>,以确定是否有其他键被按下(在上述键事件的序列中,如果 <code>CheckKey(B)
+</code> 调用了 <code>IsKeyPressed(A)</code>,则会返回 true)。</p>
+<p><code>CheckKey()</code> 可以在其类中保持状态,这有助于检测键的序列。本示例展示的是一个稍微复杂的设置:按住电源键并按下音量提高键可切换显示状态,连续按五次电源按钮可立即重新启动设备(无需使用其他键):</p>
+
+<pre>
+class TardisUI : public ScreenRecoveryUI {
+  private:
+    int consecutive_power_keys;
+
+  public:
+    TardisUI() : consecutive_power_keys(0) {}
+
+    virtual KeyAction CheckKey(int key) {
+        if (IsKeyPressed(KEY_POWER) &amp;&amp; key == KEY_VOLUMEUP) {
+            return TOGGLE;
+        }
+        if (key == KEY_POWER) {
+            ++consecutive_power_keys;
+            if (consecutive_power_keys &gt;= 5) {
+                return REBOOT;
+            }
+        } else {
+            consecutive_power_keys = 0;
+        }
+        return ENQUEUE;
+    }
+};
+</pre>
+
+<h3 id="screenrecoveryui">ScreenRecoveryUI</h3>
+<p>如果您将自己的图片(错误图标、安装动画、进度条)与 ScreenRecoveryUI 搭配使用,则可以设置变量 <code>animation_fps</code> 来控制动画的速度(以每秒帧数 (FPS) 为单位)。</p>
+
+<p class="note"><strong>注意</strong>:通过最新的 <code>interlace-frames.py</code> 脚本,您可以将 <code>animation_fps</code> 信息存储到图片中。在早期版本的 Android 中,您必须自行设置 <code>animation_fps</code>。</p>
+
+<p>要设置变量 <code>animation_fps</code>,请替换子类中的 <code>ScreenRecoveryUI::Init()</code> 函数。设置值,然后调用 <code>parent Init() </code> 函数以完成初始化。默认值 (20 FPS) 对应默认恢复图片;您在使用这些图片时无需提供 <code>Init()</code> 函数。
+有关图片的详细信息,请参阅<a href="#recovery-ui-images">恢复界面图片</a>。</p>
+
+<h3 id="device-class">Device 类</h3>
+<p>执行 RecoveryUI 实现后,请定义您的 Device 类(由内置 Device 类派生的子类)。它应该会创建您的 UI 类的单个实例,并通过 <code>GetUI()</code> 函数返回该实例:</p>
+
+<pre>
+class TardisDevice : public Device {
+  private:
+    TardisUI* ui;
+
+  public:
+    TardisDevice() :
+        ui(new TardisUI) {
+    }
+
+    RecoveryUI* GetUI() { return ui; }
+</pre>
+
+<h3 id="startrecovery">StartRecovery</h3>
+<p><code>StartRecovery()</code> 方法的调用时机是:恢复开始时,界面已初始化且参数已解析之后,但在执行任何操作之前。默认的实现不会执行任何操作,因此,如果您没有可执行的操作,则无需在子类中提供此项。</p>
+
+<pre>
+   void StartRecovery() {
+       // ... do something tardis-specific here, if needed ....
+    }
+</pre>
+
+<h3 id="supply-manage-recovery-menu">提供和管理恢复菜单</h3>
+<p>系统会调用两种方法来获取标头行列表和项列表。在此实现中,系统会返回文件顶部定义的静态数组:</p>
+
+<pre>
+const char* const* GetMenuHeaders() { return HEADERS; }
+const char* const* GetMenuItems() { return ITEMS; }
+</pre>
+
+<h4 id="handlemenukey">HandleMenuKey</h4>
+<p>接下来,提供 <code>HandleMenuKey()</code> 函数,该函数会提取按键和当前菜单可见性,并确定要执行哪项操作。</p>
+
+<pre>
+   int HandleMenuKey(int key, int visible) {
+        if (visible) {
+            switch (key) {
+              case KEY_VOLUMEDOWN: return kHighlightDown;
+              case KEY_VOLUMEUP:   return kHighlightUp;
+              case KEY_POWER:      return kInvokeItem;
+            }
+        }
+        return kNoAction;
+    }
+</pre>
+
+<p>该方法会提取按键代码(之前已通过界面对象的 <code>CheckKey()</code> 方法进行处理并加入队列),以及菜单/文本日志可见性的当前状态。返回值为整数。如果值不小于 0,则被视为会立即调用的菜单项的位置(请参阅下方的 <code>InvokeMenuItem()</code> 方法)。否则,它可能是以下预设常量之一:</p>
+
+<ul>
+<li><b>kHighlightUp</b>:将菜单突出显示移到上一项</li>
+<li><b>kHighlightDown</b>:将菜单突出显示移到下一项</li>
+<li><b>kInvokeItem</b>:调用当前突出显示的项</li>
+<li><b>kNoAction</b>:不使用此按键执行任何操作</li>
+</ul>
+
+<p>由于 <code>HandleMenuKey()</code> 隐含在可见参数中,因此,即使菜单不可见,也会进行调用。与 <code>CheckKey()</code> 不同的是,当恢复系统执行清除数据或安装软件包等操作时,系统不会调用该函数,只有恢复系统处于闲置状态或等待输入时才会调用该函数。<i></i></p>
+
+<h4 id="trackball-mechanism">轨迹球机制</h4>
+<p>如果您的设备采用类似于轨迹球的输入机制(生成类型为 EV_REL、代码为 REL_Y 的输入事件),那么,只要类似于轨迹球的输入设备报告 Y 轴的动作,恢复系统就会合成 KEY_UP 和 KEY_DOWN 按键。您只需将 KEY_UP 和 KEY_DOWN 事件映射到相应的菜单操作即可。无法针对 <code>CheckKey()</code> 实现此映射,因此,您无法将轨迹球动作用作重新启动或切换显示状态的触发器。<i></i></p>
+
+<h4 id="modifier-keys">辅助键</h4>
+<p>要查看作为辅助键按下的键,请调用您自己的界面对象的 <code>IsKeyPressed()
+</code> 方法。例如,在某些设备上,在恢复系统中按 Alt-W 会启动数据清除(无论菜单是否可见)。您可以按如下方式实现:</p>
+
+<pre>
+   int HandleMenuKey(int key, int visible) {
+        if (ui-&gt;IsKeyPressed(KEY_LEFTALT) &amp;&amp; key == KEY_W) {
+            return 2;  // position of the "wipe data" item in the menu
+        }
+        ...
+    }
+</pre>
+
+<p class="note"><strong>注意</strong>:如果 <b>visible</b> 为 false,则返回操作菜单(移动突出显示项、调用突出显示项)的特殊值将毫无意义,因为用户看不到突出显示项。不过,您可以视需要返回相应的值。</p>
+
+<h4 id="invokemenuitem">InvokeMenuItem</h4>
+<p>接下来,提供 <code>InvokeMenuItem()</code> 方法,将由 <code>GetMenuItems()</code> 返回的项数组中的整数位置映射到相应的操作。对于 tardis 示例中的项数组,请使用:</p>
+
+<pre>
+   BuiltinAction InvokeMenuItem(int menu_position) {
+        switch (menu_position) {
+          case 0: return REBOOT;
+          case 1: return APPLY_ADB_SIDELOAD;
+          case 2: return WIPE_DATA;
+          case 3: return WIPE_CACHE;
+          default: return NO_ACTION;
+        }
+    }
+</pre>
+
+<p>该方法可以返回 BuiltinAction 枚举的任何成员,以指示系统执行相应的操作(如果您不希望系统执行任何操作,则返回 NO_ACTION 成员)。您可以在这里提供除系统功能以外的其他恢复功能:在您的菜单中为其添加项,在调用菜单项时在此处执行此项,以及返回 NO_ACTION 以便让系统不执行其他任何操作。</p>
+<p>BuiltinAction 包含以下值:</p>
+<ul>
+<li><b>NO_ACTION</b>:不执行任何操作。</li>
+<li><b>REBOOT</b>:退出恢复系统,并正常重启设备。</li>
+<li><b>APPLY_EXT、APPLY_CACHE、APPLY_ADB_SIDELOAD</b>:从不同的位置安装更新程序包。如需了解详情,请参阅<a href="#sideloading">旁加载</a>。</li>
+<li><b>WIPE_CACHE</b>:仅将 cache 分区重新格式化。无需确认,因为此操作相对来说没有什么不良后果。</li>
+<li><b>WIPE_DATA</b>:将 userdata 和 cache 分区重新格式化,又称为恢复出厂设置。用户需要先确认这项操作,然后再继续。</li>
+</ul>
+<p>最后一种方法 <code>WipeData()</code> 是可选项,只要系统执行数据清除操作(通过菜单从退出恢复系统中执行,或当用户从主系统中选择恢复出厂设置时),就会调用此方法。该方法在清除 userdata 和 cache 分区之前调用。如果您的设备将用户数据存储在这两个分区之外的其他位置,您应在此处清空数据。您应返回 0 以表示成功,返回其他值以表示失败,不过目前系统会忽略返回值。无论您返回成功还是失败,userdata 和 cache 分区都会被清除。</p>
+
+<pre>
+   int WipeData() {
+       // ... do something tardis-specific here, if needed ....
+       return 0;
+    }
+</pre>
+
+<h4 id="make-device">生成设备</h4>
+<p>最后,在创建并返回您的 Device 类实例的 <code>make_device()</code> 函数的 recovery_ui.cpp 文件末尾包含一些样板文件。</p>
+
+<pre>
+class TardisDevice : public Device {
+   // ... all the above methods ...
+};
+
+Device* make_device() {
+    return new TardisDevice();
+}
+</pre>
+
+<h3 id="build-link-device-recovery">编译并链接到设备 recovery 分区</h3>
+<p>完成 recovery_ui.cpp 文件后,编译该文件并将其链接到您设备上的 recovery 分区。在 Android.mk 中,创建一个只包含此 C++ 文件的静态库:</p>
+
+<p><code>device/yoyodyne/tardis/recovery/Android.mk</code></p>
+
+<pre>
+LOCAL_PATH := $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_MODULE_TAGS := eng
+LOCAL_C_INCLUDES += bootable/recovery
+LOCAL_SRC_FILES := recovery_ui.cpp
+
+# should match TARGET_RECOVERY_UI_LIB set in BoardConfig.mk
+LOCAL_MODULE := librecovery_ui_tardis
+
+include $(BUILD_STATIC_LIBRARY)
+</pre>
+
+<p>然后,在该设备的板配置中,将静态库指定为 TARGET_RECOVERY_UI_LIB 的值。</p>
+
+<pre>
+device/yoyodyne/tardis/BoardConfig.mk
+ [...]
+
+# device-specific extensions to the recovery UI
+TARGET_RECOVERY_UI_LIB := librecovery_ui_tardis
+</pre>
+
+<h2 id="recovery-ui-images">恢复界面图片</h2>
+<p>恢复用户界面由图片组成。在理想情况下,用户从不与界面互动:在正常更新过程中,手机会启动进入恢复模式,填充安装进度条,并在无需用户输入任何内容的情况下启动返回新系统。如果系统更新出现问题,唯一可以执行的用户操作是呼叫客服中心。</p>
+<p>只含图片的界面无需进行本地化。不过,自 Android 5.0 起,更新会显示一串文本(如“正在安装系统更新…”)以及图片。如需了解详情,请参阅<a href="#recovery-text">经过本地化的恢复文本</a>。</p>
+
+<h3 id="recovery-5.x">Android 5.0 及更高版本</h3>
+<p>Android 5.0 及更高版本的恢复界面采用两种主要图片:<strong>错误</strong>图片和<strong>正在安装</strong>动画。</p>
+
+<table>
+<tbody>
+<tr>
+<td>
+<img src="../images/icon_error.png" alt="image shown during ota error"/>
+<p class="img-caption"><strong>图 1.</strong> icon_error.png</p>
+</td>
+<td>
+<img src="../images/icon_installing_5x.png" alt="image shown during ota install" height="275"/>
+<p class="img-caption"><strong>图 2.</strong> icon_installing.png</p>
+</td>
+</tr>
+</tbody>
+</table>
+
+<p>“正在安装”动画由一张 PNG 图片表示,动画的各帧行行交错(这就是图 2 呈现挤压效果的原因)。例如,为 200x200 的七帧动画创建一张 200x1400 的图片,其中第一帧表示第 0、7、14、21...行,第二帧表示第 1、8、15、22...行,以此类推。合并的图片包含表示动画帧数和每秒帧数 (FPS) 的文本块。<code>bootable/recovery/interlace-frames.py</code> 工具需要处理一组输入帧,并将其合并到 recovery 所用的必要合成图片中。</p>
+
+<p>默认图片以不同密度提供,其所在位置是 <code>bootable/recovery/res-$DENSITY/images</code> (如 <code>bootable/recovery/res-hdpi/images</code>)。要在安装过程中使用静态图片,您只需提供 icon_installing.png 图片,并将动画中的帧数设置为 0(错误图标不是动画;该图片一律为静态图片)即可。</p>
+
+<h3 id="recovery-4.x">Android 4.x 及更早版本</h3>
+<p>Android 4.x 及更早版本的恢复界面会采用<b>错误</b>图片(如上图所示)、<b>正在安装</b>动画以及几张叠加图片:</p>
+
+<table>
+<tbody>
+<tr>
+<td rowspan="2">
+<img src="../images/icon_installing.png" alt="image shown during ota install"/>
+<p class="img-caption"><strong>图 3.</strong> icon_installing.png</p>
+</td>
+<td>
+<img src="../images/icon_installing_overlay01.png" alt="image shown as first overlay"/>
+<p class="img-caption"><strong>图 4.</strong> icon-installing_overlay01.png
+</p>
+</td>
+</tr>
+<tr>
+<td>
+<img src="../images/icon_installing_overlay07.png" alt="image shown as seventh overlay"/>
+<p class="img-caption"><strong>图 5.</strong> icon_installing_overlay07.png
+</p>
+</td>
+</tr>
+</tbody>
+</table>
+
+<p>在安装过程中,屏幕显示通过绘制 icon_installing.png 图片进行构建,然后在适当的偏移量处绘制其中一张叠加帧。图中叠加的红色方框是用来突出显示叠加帧在基本图片上的放置位置:</p>
+
+<table style="border-collapse:collapse;">
+<tbody>
+<tr>
+<td><img align="center" src="../images/composite01.png" alt="composite image of install plus first overlay"/>
+<p class="img-caption"><strong>图 6.</strong> “正在安装”动画帧 1 (icon_installing.png + icon_installing_overlay01.png)
+</p></td>
+<td><img align="center" src="../images/composite07.png" alt="composite image of install plus seventh overlay"/>
+<p class="img-caption"><strong>图 7.</strong> “正在安装”动画帧 7 (icon_installing.png + icon_installing_overlay07.png)
+</p></td>
+</tr>
+</tbody>
+</table>
+
+<p>后续帧通过只绘制下一张已位于顶部的叠加图片显示;基本图片不会重新绘制。<i></i></p>
+
+<p>动画中的帧数,所需速度,以及叠加图片相对于基本图片的 x 轴和 y 轴偏移量均通过 ScreenRecoveryUI 类的成员变量来设置。如果您使用的是自定义图片,而不是默认图片,请通过替换您子类中的 <code>Init()</code> 方法来更改自定义图片的这些值(如需了解详情,请参阅 <a href="#screenrecoveryui">ScreenRecoveryUI</a>)。<code>bootable/recovery/make-overlay.py
+</code> 脚本可协助将一组图片帧转为 recovery 所需的“基本图片 + 叠加图片”,其中包括计算所需的偏移量。</p>
+
+<p>默认图片位于 <code>bootable/recovery/res/images</code> 中。要在安装过程中使用静态图片,您只需提供 icon_installing.png 图片,并将动画中的帧数设置为 0(错误图标不是动画;该图片一律为静态图片)即可。</p>
+
+<h3 id="recovery-text">经过本地化的恢复文本</h3>
+<p>Android 5.x 会显示一串文本(如“正在安装系统更新…”)以及图片。如果主系统启动进入恢复模式,系统会将用户当前的语言区域作为命令行选项传递到恢复系统。对于每条要显示的消息,恢复系统都会为每个语言区域中的相应消息添加第二张带有预呈现文本字符串的合成图片。</p>
+
+<p>恢复文本字符串的示例图片:</p>
+
+<img src="../images/installing_text.png" alt="image of recovery text"/>
+<p class="img-caption"><strong>图 8.</strong> 恢复消息的本地化文本</p>
+
+<p>恢复文本会显示以下消息:</p>
+<ul>
+<li>正在安装系统更新…</li>
+<li>出错了!</li>
+<li>正在清除…(执行数据清除/恢复出厂设置时)</li>
+<li>无命令(用户手动启动进入恢复模式时)</li>
+</ul>
+
+<p><code>development/tools/recovery_l10/</code> 中的 Android 应用会呈现经过本地化的消息并创建合成图片。要详细了解如何使用该应用,请参阅 <code>development/tools/recovery_l10n/
+src/com/android/recovery_l10n/Main.java</code> 中的注解。
+
+</p><p>如果用户手动启动进入恢复模式,则语言区域可能不可用,且不会显示任何文本。不要让文本消息对恢复流程产生太多制约影响。</p>
+
+<p class="note"><strong>注意</strong>:隐藏界面(可显示日志消息并允许用户从菜单中选择操作)仅提供英文版。</p>
+
+<h2 id="progress-bars">进度条</h2>
+<p>进度条会显示在主要图片(或动画)的下方。进度条由两张输入图片(大小必须相同)合并而成:</p>
+
+<img src="../images/progress_empty.png" alt="empty progress bar"/>
+<p class="img-caption"><strong>图 9.</strong> progress_empty.png</p>
+<img src="../images/progress_fill.png" alt="full progress bar"/>
+<p class="img-caption"><strong>图 10.</strong> progress_fill.png</p>
+
+<p>fill 图片的左端显示在 empty 图片右端的旁边,从而形成进度条。<i></i><i></i>两张图片之间的边界位置会不时变更,以表示相应的进度。以上述几对输入图片为例,显示效果为:</p>
+
+<img src="../images/progress_1.png" alt="progress bar at 1%"/>
+<p class="img-caption"><strong>图 11.</strong> 进度条显示为 1%&gt;</p>
+<img src="../images/progress_10.png" alt="progress bar at 10%"/>
+<p class="img-caption"><strong>图 12.</strong> 进度条显示为 10%</p>
+<img src="../images/progress_50.png" alt="progress bar at 50%"/>
+<p class="img-caption"><strong>图 13.</strong> 进度条显示为 50%</p>
+
+<p>您可以将这些图片的设备专属版本放入(在本例中)<code>device/yoyodyne/tardis/recovery/res/images</code> 中,以提供这类版本的图片。
+ 文件名必须与上面列出的文件名相符;如果可在该目录下找到文件,则编译系统会优先使用该文件,而非对应的默认图片。仅支持采用 8 位色深的 RGB 或 RGBA 格式的 PNG 文件。
+</p>
+
+<p class="note"><strong>注意</strong>:在 Android 5.x 中,如果恢复模式下的语言区域是已知的,且采用从右至左 (RTL) 的语言模式(例如阿拉伯语、希伯来语等),则进度条将会按照从右向左的顺序进行填充。</p>
+
+<h2 id="devices-without-screens">没有屏幕的设备</h2>
+<p>并非所有 Android 设备都有屏幕。如果您的设备是无头装置或具备只支持音频的界面,那么您可能需要对恢复界面进行更广泛的自定义。请勿创建 ScreenRecoveryUI 的子类,而是直接针对其父类 RecoveryUI 创建子类。</p>
+<p>RecoveryUI 具有处理低级界面操作(如“切换显示”、“更新进度条”、“显示菜单”、“更改菜单选项”等)的方法。您可以替换这些操作以提供适合您设备的界面。也许您的设备有 LED,这样您可以使用不同的颜色或闪烁图案来指示状态;或许您还可以播放音频(您可能完全不想支持菜单或“文本显示”模式;您可以通过 <code>CheckKey()</code> 和 <code>HandleMenuKey()</code> 实现(一律不开启显示或一律不选择菜单项)来阻止对其进行访问在这种情况下,您需要提供的很多 RecoveryUI 方法都可以只是空的存根)。</p>
+<p>请参阅 <code>bootable/recovery/ui.h</code>,了解 RecoveryUI 声明,以查看您必须支持哪些方法。RecoveryUI 是抽象的(有些方法是纯虚拟的,必须由子类提供),但它包含处理键输入内容的代码。如果您的设备没有键或者您希望通过其他方式处理这些内容,也可以将其替换掉。</p>
+
+<h2 id="updater">更新程序</h2>
+<p>您可以提供自己的扩展函数(可从您的更新程序脚本中调用),从而在安装更新程序包的过程中使用设备专属代码。以下是适用于 tardis 设备的示例函数:</p>
+
+<p><code>device/yoyodyne/tardis/recovery/recovery_updater.c</code></p>
+<pre>
+#include &lt;stdlib.h&gt;
+#include &lt;string.h&gt;
+
+#include "edify/expr.h"
+</pre>
+
+<p>每个扩展函数都采用相同的签名。具体参数即调用函数的名称,<code>State*</code> Cookie、传入参数的数量和表示参数的 <code>Expr*</code> 指针数组。返回值是新分配的 <code>Value*</code>。</p>
+
+<pre>
+Value* ReprogramTardisFn(const char* name, State* state, int argc, Expr* argv[]) {
+    if (argc != 2) {
+        return ErrorAbort(state, "%s() expects 2 args, got %d", name, argc);
+    }
+</pre>
+
+<p>您的参数在您调用函数时尚未进行评估,函数的逻辑决定了会对哪些参数进行评估以及评估多少次。因此,您可以使用扩展函数来实现自己的控制结构。<code>Call Evaluate()</code> 可用来评估 <code>Expr*
+</code> 参数,返回 <code>Value*</code>。如果 <code>Evaluate()</code> 可返回 NULL,您应该释放所持有的所有资源,并立即返回 NULL(此操作会将 abort 传播到 edify 堆栈中)。否则,您将获得所返回 Value 的所有权,并负责最终对其调用 <code>FreeValue()</code>。</p>
+
+<p>假设该函数需要两种参数:字符串值的 <b>key</b> 和 blob 值的 <b>image</b>。您可能会看到如下参数:</p>
+
+<pre>
+   Value* key = EvaluateValue(state, argv[0]);
+    if (key == NULL) {
+        return NULL;
+    }
+    if (key-&gt;type != VAL_STRING) {
+        ErrorAbort(state, "first arg to %s() must be string", name);
+        FreeValue(key);
+        return NULL;
+    }
+    Value* image = EvaluateValue(state, argv[1]);
+    if (image == NULL) {
+        FreeValue(key);    // must always free Value objects
+        return NULL;
+    }
+    if (image-&gt;type != VAL_BLOB) {
+        ErrorAbort(state, "second arg to %s() must be blob", name);
+        FreeValue(key);
+        FreeValue(image)
+        return NULL;
+    }
+</pre>
+
+<p>为多个参数检查 NULL 并释放之前评估的参数可能会很繁琐。<code>ReadValueArgs()</code> 函数会让此变得更简单。您可以不使用上面的代码,而是写入下面的代码:</p>
+
+<pre>
+   Value* key;
+    Value* image;
+    if (ReadValueArgs(state, argv, 2, &amp;key, &amp;image) != 0) {
+        return NULL;     // ReadValueArgs() will have set the error message
+    }
+    if (key-&gt;type != VAL_STRING || image-&gt;type != VAL_BLOB) {
+        ErrorAbort(state, "arguments to %s() have wrong type", name);
+        FreeValue(key);
+        FreeValue(image)
+        return NULL;
+    }
+</pre>
+
+<p><code>ReadValueArgs()</code> 不执行类型检查,因此您必须在这里执行这项检查;使用 <b>if</b> 语句执行这项检查会更方便,不过,这样做也有一个弊端,那就是操作失败时所显示的错误消息会不够具体。不过,如果有任何评估失败,<code>ReadValueArgs()</code> 会处理每个参数的评估操作,并释放之前评估的所有参数(以及设置有用的错误消息)。您可以使用 <code>
+ReadValueVarArgs()</code> 便捷函数来评估数量不定的参数(它会返回 <code>Value*</code> 的数组)。</p>
+
+<p>对参数进行评估后,执行以下函数:</p>
+
+<pre>
+   // key-&gt;data is a NUL-terminated string
+    // image-&gt;data and image-&gt;size define a block of binary data
+    //
+    // ... some device-specific magic here to
+    // reprogram the tardis using those two values ...
+</pre>
+
+<p>返回值必须是 <code>Value*</code> 对象;此对象的所有权将传递给调用程序。调用程序将获得此 <code>Value*</code> 所指向的所有数据的所有权,特别是数据成员。</p>
+<p>在这种情况下,您需要返回 true 或 false 值来表示成功。请记住以下惯例:空字符串为 false,所有其他字符串均为 true。<i></i><i></i>您必须使用要返回的常量字符串的经过 malloc 处理的副本来分配 Value 对象,因为调用程序会 <code>free()
+</code> 这两者。请切记对通过评估参数获得的对象调用 <code>FreeValue()</code>!</p>
+
+<pre>
+   FreeValue(key);
+    FreeValue(image);
+
+    Value* result = malloc(sizeof(Value));
+    result-&gt;type = VAL_STRING;
+    result-&gt;data = strdup(successful ? "t" : "");
+    result-&gt;size = strlen(result-&gt;data);
+    return result;
+}
+</pre>
+
+<p>便捷函数 <code>StringValue()</code> 会将字符串封装到新的 Value 对象中。使用此函数可使上述代码的编写更加简洁:</p>
+
+<pre>
+   FreeValue(key);
+    FreeValue(image);
+
+    return StringValue(strdup(successful ? "t" : ""));
+}
+</pre>
+
+<p>要将函数挂接到 edify 解释程序中,请提供函数 <code>Register_<i>foo</i></code>(其中 <i>foo</i> 是包含此代码的静态库的名称)。调用 <code>RegisterFunction()</code> 以注册各个扩展函数。按照惯例,需要对设备专属函数 <code><i>device</i>.<i>whatever</i></code> 进行命名,以免与将来添加的内置函数发生冲突。</p>
+
+<pre>
+void Register_librecovery_updater_tardis() {
+    RegisterFunction("tardis.reprogram", ReprogramTardisFn);
+}
+</pre>
+
+<p>现在,您可以配置 makefile,以使用您的代码编译静态库(此 makefile 即是之前的区段中用于自定义恢复界面的 makefile;您设备的两个静态库可能都是在此定义的)。</p>
+
+<p><code>device/yoyodyne/tardis/recovery/Android.mk</code></p>
+
+<pre>
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := recovery_updater.c
+LOCAL_C_INCLUDES += bootable/recovery
+</pre>
+
+<p>静态库的名称必须与其中所包含的 <code>Register_<i>libname</i></code> 函数的名称匹配。</p>
+
+<pre>
+LOCAL_MODULE := librecovery_updater_tardis
+include $(BUILD_STATIC_LIBRARY)
+</pre>
+
+<p>最后,配置 recovery 的版本号以拉入您的库。将您的库添加到 TARGET_RECOVERY_UPDATER_LIBS(它可能包含多个库;所有库均已注册)。如果您的代码依赖于本身不是 edify 扩展程序的其他静态库(即,它们没有 <code>Register_<i>libname</i></code> 函数),您可以将其列于 TARGET_RECOVERY_UPDATER_EXTRA_LIBS 中,以将其链接到更新程序,而无需调用其(不存在的)注册函数。例如,如果您的设备专属代码需要使用 zlib 解压缩数据,您可以在此处包含 libz。</p>
+
+<p><code>device/yoyodyne/tardis/BoardConfig.mk</code></p>
+
+<pre>
+ [...]
+
+# add device-specific extensions to the updater binary
+TARGET_RECOVERY_UPDATER_LIBS += librecovery_updater_tardis
+TARGET_RECOVERY_UPDATER_EXTRA_LIBS +=
+</pre>
+
+<p>您的 OTA 更新包中的更新程序脚本现已可以像其他脚本一样调用您的函数。要重新对您的 tardis 设备进行编程,更新脚本应包含:<code>tardis.reprogram("the-key", package_extract_file("tardis-image.dat"))
+</code>。它会使用单参数版本的内置函数 <code>
+package_extract_file()</code>,该函数会将从更新程序包中提取的文件内容作为 blob 返回,从而为新的扩展函数生成第二个参数。</p>
+
+<h2>生成 OTA 更新包</h2>
+<p>最终的组件是获取 OTA 更新包生成工具以了解您的设备专属数据,并发出 (emit) 包含对您的扩展函数进行调用的更新程序脚本。</p>
+<p>首先,让编译系统了解设备专属数据 blob。假设您的数据文件位于 <code>device/yoyodyne/tardis/tardis.dat</code> 中,请在您设备的 AndroidBoard.mk 中做出以下声明:</p>
+
+<p><code>device/yoyodyne/tardis/AndroidBoard.mk</code></p>
+<pre>
+  [...]
+
+$(call add-radio-file,tardis.dat)
+</pre>
+
+<p>您也可以将其放在 Android.mk 中,但是之后必须通过设备检查提供保护,因为无论编译什么设备,树中的所有 Android.mk 文件都会加载(如果您的树中包含多个设备,那么您只需要在编译 tardis 设备时添加 tardis.dat 文件即可)。</p>
+
+<p><code>device/yoyodyne/tardis/Android.mk</code></p>
+<pre>
+  [...]
+
+# an alternative to specifying it in AndroidBoard.mk
+ifeq (($TARGET_DEVICE),tardis)
+  $(call add-radio-file,tardis.dat)
+endif
+</pre>
+
+<p>由于历史原因,这些文件被称为无线电文件,但它们可能与设备无线电(如果存在)没有任何关系。它们只是编译系统复制到 OTA 生成工具所用的 target-files .zip 中的模糊数据 blob。在您执行编译时,tardis.dat 会作为 <code>RADIO/tardis.dat</code> 存储在 target-files.zip 中。您可以多次调用 <code>add-radio-file</code> 以根据需要添加任意数量的文件。</p>
+
+<h3 id="python-module">Python 模块</h3>
+<p>要扩展发布工具,请编写工具(如果有)可以调用的 Python 模块(必须命名为 releasetools.py)。示例:</p>
+
+<p><code>device/yoyodyne/tardis/releasetools.py</code></p>
+<pre>
+import common
+
+def FullOTA_InstallEnd(info):
+  # copy the data into the package.
+  tardis_dat = info.input_zip.read("RADIO/tardis.dat")
+  common.ZipWriteStr(info.output_zip, "tardis.dat", tardis_dat)
+
+  # emit the script code to install this data on the device
+  info.script.AppendExtra(
+      """tardis.reprogram("the-key", package_extract_file("tardis.dat"));""")
+</pre>
+
+<p>独立的函数可以处理生成增量 OTA 更新包的情况。在本例中,假设您只需要在两个版本号之间的 tardis.dat 文件发生更改时重新编程 tardis。</p>
+<pre>
+def IncrementalOTA_InstallEnd(info):
+  # copy the data into the package.
+  source_tardis_dat = info.source_zip.read("RADIO/tardis.dat")
+  target_tardis_dat = info.target_zip.read("RADIO/tardis.dat")
+
+  if source_tardis_dat == target_tardis_dat:
+      # tardis.dat is unchanged from previous build; no
+      # need to reprogram it
+      return
+
+  # include the new tardis.dat in the OTA package
+  common.ZipWriteStr(info.output_zip, "tardis.dat", target_tardis_dat)
+
+  # emit the script code to install this data on the device
+  info.script.AppendExtra(
+      """tardis.reprogram("the-key", package_extract_file("tardis.dat"));""")
+</pre>
+
+<h4 id="module-functions">模块函数</h4>
+<p>您可以在模块中提供以下函数(仅实现所需函数)。</p>
+<dl>
+<dt><code>FullOTA_Assertions()</code></dt>
+<dd>在即将开始生成完整 OTA 时调用。此时非常适合发出 (emit) 关于设备当前状态的断言。请勿发出 (emit) 对设备进行更改的脚本命令。</dd>
+<dt><code>FullOTA_InstallBegin()</code></dt>
+<dd>在关于设备状态的断言都已传递但尚未进行任何更改时调用。您可以发出 (emit) 用于设备专属更新的命令(必须在设备上的其他内容发生更改之前运行)。</dd>
+<dt><code>FullOTA_InstallEnd()</code></dt>
+<dd>在脚本生成流程结束且已发出 (emit) 脚本命令(用于更新 boot 和 boot 分区)后调用。您还可以发出 (emit) 用于设备专属更新的其他命令。</dd>
+<dt><code>IncrementalOTA_Assertions()</code></dt>
+<dd>与 <code>FullOTA_Assertions()</code> 类似,但在生成增量更新包时调用。</dd>
+<dt><code>IncrementalOTA_VerifyBegin()</code></dt>
+<dd>在关于设备状态的断言都已传递但尚未进行任何更改时调用。您可以发出 (emit) 用于设备专属更新的命令(必须在设备上的其他任何内容发生更改之前运行)。</dd>
+<dt><code>IncrementalOTA_VerifyEnd()</code></dt>
+<dd>在验证阶段结束且脚本确认即将接触的文件具有预期开始内容时调用。此时,设备上的内容尚未发生任何更改。您还可以发出 (emit) 用于其他设备专属验证的代码。</dd>
+<dt><code>IncrementalOTA_InstallBegin()</code></dt>
+<dd>在要修补的文件已被验证为具有预期 before 状态但尚未进行任何更改时调用。<i></i>您可以发出 (emit) 用于设备专属更新的命令(必须在设备上的其他任何内容发生更改之前运行)。</dd>
+<dt><code>IncrementalOTA_InstallEnd()</code></dt>
+<dd>与其完整的 OTA 更新包类似的是,这项函数在脚本生成结束阶段且已发出 (emit) 用于更新 boot 和 system 分区的脚本命令后调用。您还可以发出 (emit) 用于设备专属更新的其他命令。</dd>
+</dl>
+
+<p class="note"><strong>注意</strong>:如果设备电量耗尽了,OTA 安装可能会从头重新开始。请准备好针对已全部或部分运行这些命令的设备进行相应的操作。</p>
+
+<h4 id="pass-functions-to-info">将函数传递到 info 对象</h4>
+<p>将函数传递到包含各种实用项的单个 info 对象:
+</p>
+<ul>
+<li><b>info.input_zip</b>:(仅限完整 OTA)输入 target-files .zip 的 <code>zipfile.ZipFile</code> 对象。</li>
+<li><b>info.source_zip</b>:(仅限增量 OTA)源 target-files .zip 的 <code>zipfile.ZipFile
+</code> 对象(安装增量包时版本号已在设备上)。</li>
+<li><b>info.target_zip</b>:(仅限增量 OTA)目标 target-files .zip 的 <code>zipfile.ZipFile
+</code> 对象(增量包置于设备上的版本号)。</li>
+<li><b>info.output_zip</b>:正在创建的更新包;为进行写入而打开的 <code>zipfile.ZipFile
+</code> 对象。使用 common.ZipWriteStr(info.output_zip、<i>filename</i>、<i>data</i>)将文件添加到文件包。</li>
+<li><b>info.script</b>:可以附加命令的目标脚本对象。调用 <code>info.script.AppendExtra(<i>script_text</i>)</code> 以将文本输出到脚本。请确保输出文本以分号结尾,这样就不会运行到随后发出 (emit) 的命令中。</li>
+</ul>
+
+<p>有关 info 对象的详细信息,请参阅<a href="http://docs.python.org/library/zipfile.html">针对 ZIP 归档的 Python 软件基础文档</a>。</p>
+
+<h4 id="specify-module-location">指定模块位置</h4>
+<p>指定您设备的 releasetools.py 脚本在 BoardConfig.mk 文件中的位置:</p>
+
+<p><code>device/yoyodyne/tardis/BoardConfig.mk</code></p>
+
+<pre>
+ [...]
+
+TARGET_RELEASETOOLS_EXTENSIONS := device/yoyodyne/tardis
+</pre>
+
+<p>如果未设置 TARGET_RELEASETOOLS_EXTENSIONS,则默认位置为 <code>
+$(TARGET_DEVICE_DIR)/../common</code> 目录(在本例中为 <code>device/yoyodyne/common
+</code>)。最好明确指定 releasetools.py 脚本的位置。编译 tardis 设备时,releasetools.py 脚本会包含在 target-files .zip 文件 (<code>META/releasetools.py
+</code>) 中。</p>
+<p>当您运行发布工具(<code>img_from_target_files</code> 或 <code>ota_from_target_files</code>)时,target-files .zip 中的 releasetools.py 脚本(如果存在)将优先于 Android 源代码树中的脚本而执行。您还可以通过优先级最高的 <code>-s</code>(或 <code>--device_specific</code>)选项明确指定设备专属扩展程序的路径。这样一来,您就可以在发布工具扩展程序中更正错误及做出更改,并将这些更改应用于旧的目标文件。</p>
+<p>现在,当您运行 <code>ota_from_target_files</code> 时,它会自动从 target_files .zip 文件获取设备专属模块,并在生成 OTA 更新包时使用该模块:</p>
+
+<pre>
+% <b>./build/tools/releasetools/ota_from_target_files \
+    -i PREVIOUS-tardis-target_files.zip \
+    dist_output/tardis-target_files.zip incremental_ota_update.zip</b>
+unzipping target target-files...
+<b>using device-specific extensions from target_files</b>
+unzipping source target-files...
+   [...]
+done.
+</pre>
+
+<p>或者,您可以在运行 <code>ota_from_target_files</code> 时指定设备专属扩展程序。</p>
+
+<pre>
+% <b>./build/tools/releasetools/ota_from_target_files \
+    -s device/yoyodyne/tardis \  # specify the path to device-specific extensions
+    -i PREVIOUS-tardis-target_files.zip \
+    dist_output/tardis-target_files.zip incremental_ota_update.zip</b>
+unzipping target target-files...
+<b>loaded device-specific extensions from device/yoyodyne/tardis</b>
+unzipping source target-files...
+   [...]
+done.
+</pre>
+
+<p class="note"><strong>注意</strong>:如需查看完整的选项列表,请参阅 <code>
+build/tools/releasetools/ota_from_target_files</code> 中的 <code>ota_from_target_files</code> 注释。</p>
+
+<h2 id="sideloading">旁加载</h2>
+<p>恢复系统采用<b>旁加载</b>机制,可手动安装更新包(无需主系统通过无线方式下载)。旁加载有助于在主系统无法启动的设备上进行调试或更改。</p>
+<p>一直以来,旁加载都是通过将更新包下载到设备的 SD 卡上而完成,如果设备无法启动,则可以使用其他计算机将更新包放于 SD 卡上,然后将 SD 卡插入设备中。为了支持没有可拆卸外部存储设备的 Android 设备,恢复系统还支持另外两种旁加载机制:从 cache 分区加载更新包,以及使用 adb 通过 USB 进行加载。</p>
+<p>要调用每种旁加载机制,您设备的 <code>
+Device::InvokeMenuItem()</code> 方法可以返回以下 BuiltinAction 值:</p>
+
+<ul>
+<li><b>APPLY_EXT</b>:从外部存储设备(<code>
+/sdcard</code> 目录)旁加载更新包。您的 recovery.fstab 必须定义 <code>/sdcard
+</code> 装载点。这在通过符号链接到 <code>/data</code> 来模拟 SD 卡(或其他类似机制)的设备上不可用。<code>/data
+</code> 通常不可用于恢复系统,因为它可能会被加密。恢复界面会显示 <code>/sdcard</code> 中的 .zip 文件菜单,以便用户进行选择。</li>
+<li><b>APPLY_CACHE</b>:类似于从 <code>/sdcard</code> 加载更新包,不过使用的是 <code>/cache</code> 目录(一律可用于恢复系统)。<i></i>在常规系统中,<code>/cache
+</code> 只能由特权用户写入;如果设备不可启动,则完全无法写入 <code>/cache</code> 目录(这样一来,该机制的效用就会有所限制)。</li>
+<li><b>APPLY_ADB_SIDELOAD</b>:允许用户通过 USB 数据线和 adb 开发工具将软件包发送到设备。调用此机制时,恢复系统将启动自身的迷你版 adbd 守护程序,以便已连接的主机上的 adb 与其进行对话。该迷你版守护程序仅支持一个命令:<code>adb sideload <i>filename</i></code>。已命名的文件会从主机发送到设备,然后对其进行验证和安装(如同文件在本地存储区中一样)。</li>
+</ul>
+
+<p>一些注意事项:</p>
+<ul>
+<li>仅支持 USB 传输。</li>
+<li>如果您的恢复系统可以正常运行 adbd(对于 userdebug 和 eng 版本来说通常是这样),则会在设备处于 adb 旁加载模式时关闭,并将在 adb 旁加载完成接收更新包后重新启动。在 adb 旁加载模式下,只有 <code>sideload</code> 命令可以发挥作用(<code>logcat</code>、<code>reboot</code>、<code>push</code>、<code>pull</code>、<code>shell</code> 等都不起作用)。</li>
+<li>您无法在设备上退出 adb 旁加载模式。要终止,您可以将 <code>/dev/null</code>(或有效更新包以外的其他任何文件)作为更新包进行发送,然后设备将无法对其进行验证,并会停止安装程序。RecoveryUI 实现的 <code>CheckKey()</code> 方法将继续为按键所调用,因此,您可以提供可重新启动设备并在 adb 旁加载模式下运行的按键序列。</li>
+</ul>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/devices/tech/power/mgmt.html b/zh-cn/devices/tech/power/mgmt.html
new file mode 100644
index 0000000..e262b25
--- /dev/null
+++ b/zh-cn/devices/tech/power/mgmt.html
@@ -0,0 +1,236 @@
+<html devsite><head>
+    <title>电源管理</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<p>电池续航时间是用户长期以来一直关注的问题。为了延长电池续航时间,Android 不断添加新功能和优化功能,以帮助平台优化应用和设备在非充电状态下的行为。</p>
+<p>Android 提供以下电池续航时间增强功能:</p>
+
+<ul>
+<li><a href="#app-standby">应用待机模式</a>。平台会使未使用的应用进入应用待机模式,从而暂时限制此类应用访问网络,并延迟其同步和作业。</li>
+<li><a href="#doze">低电耗模式</a>。如果用户长时间没有主动使用其设备(屏幕处于关闭和静止状态),则平台会使设备进入深度休眠状态(定期恢复正常操作)。此外,当用户关闭设备屏幕但仍处于移动状态时,Android 7.0 及更高版本还会启用低电耗模式,以触发一系列轻度优化。</li>
+<li><a href="#exempt-apps">豁免</a>。默认情况下,在设备上预加载的系统应用和云消息传递服务通常能够获得豁免,不会进入应用待机模式和低电耗模式(尽管应用开发者可以特意将这样的设置运用到其应用上)。用户可以通过“设置”菜单豁免应用。</li>
+</ul>
+
+<p>下列部分对这些增强功能进行了具体说明。</p>
+
+<h2 id="app-standby">应用待机模式</h2>
+<p>应用待机模式会针对用户未主动使用的应用延迟后台网络活动和作业,从而延长电池续航时间。</p>
+
+<h3 id="app-standby-life">应用待机模式生命周期</h3>
+<p>平台检测到未活动的应用,并使其进入应用待机模式,直到用户开始主动与相应应用互动为止。</p>
+
+<table>
+<tbody>
+<tr>
+<th width="46%">检测</th>
+<th width="23%">应用待机模式期间</th>
+<th width="31%">退出</th>
+</tr>
+
+<tr>
+<td><p>当设备未充电<strong>且</strong>用户在特定的时钟时间内以及特定的屏幕开启时间内未直接或间接地启动某个应用时,平台会检测到该应用处于未活动状态(当前台应用访问另一个应用中的服务时,便会间接启动该应用)。</p></td>
+<td><p>平台会阻止应用访问网络(一天多次),从而延迟应用同步和其他作业。</p></td>
+<td><p>当出现以下情况时,平台会使应用退出应用待机模式:</p>
+<ul>
+<li>应用变成活动状态。</li>
+<li>设备接通电源并充电。</li>
+</ul>
+</td>
+</tr>
+</tbody>
+</table>
+
+<p>处于活动状态的应用不受应用待机模式影响。如果应用具有以下特点,则表示其处于活动状态:</p>
+<ul>
+<li>有目前在前台运行的进程(作为活动或前台服务,或者正在被其他活动或前台服务使用),例如通知侦听器、无障碍服务、动态壁纸等等。</li>
+<li>有用户要查看的通知,例如锁定屏幕或通知栏中的通知。</li>
+<li>明确由用户启动。</li>
+</ul>
+<p>如果某个应用在一段时间内未发生上述活动,则表示该应用处于非活动状态。
+</p>
+
+<h3 id="testing_app_standby">测试应用待机模式</h3>
+<p>您可以使用以下 <code>adb</code> 命令手动测试应用待机模式:</p>
+
+<pre>
+$ adb shell dumpsys battery unplug
+$ adb shell am set-idle packageName true
+$ adb shell am set-idle packageName false
+$ adb shell am get-idle packageName
+</pre>
+
+<h2 id="doze">低电耗模式</h2>
+
+<p>当用户长时间未使用设备时,低电耗模式会延迟应用后台 CPU 和网络活动,从而延长电池续航时间。</p>
+
+<p>处于低电耗模式的闲置设备会定期进入维护时段,在此期间,应用可以完成待进行的活动(同步、作业等)。然后,低电耗模式会使设备重新进入较长时间的休眠状态,接着进入下一个维护时段。在达到几个小时的休眠时间上限之前,平台会周而复始地重复低电耗模式休眠/维护的序列,且每一次都会延长闲置的时长。处于低电耗模式的设备始终可以感知到动作,且会在检测到动作时立即退出低电耗模式。</p>
+
+<p>每当用户关闭设备屏幕时,即使仍处于移动状态,Android 7.0 及更高版本都会延长设备处于低电耗模式的时间,以触发一系列轻度优化,从而延长电池续航时间。</p>
+
+<p>默认情况下,系统服务(如电话)可能已预加载且获得豁免,不会进入低电耗模式。用户还可以在“设置”菜单中豁免特定的应用,使其不进入低电耗模式。低电耗模式在 AOSP 中默认处于<strong>停用</strong>状态;要详细了解如何启用低电耗模式,请参阅<a href="#integrate-doze">集成低电耗模式</a>。</p>
+
+<h3 id="doze-reqs">低电耗模式的要求</h3>
+<p>要支持低电耗模式,设备必须具有云消息传递服务,例如,<a href="https://developers.google.com/cloud-messaging/">Google 云消息传递 (GCM)</a>。这样,设备才知道何时从低电耗模式中唤醒。</p>
+<p>此外,要全面支持低电耗模式,相应设备还必须具有<a href="/devices/sensors/sensor-types.html#significant_motion">大幅度动作检测器 (SMD)</a>;不过,Android 7.0 及更高版本中的轻度低电耗模式不要求具有 SMD。如果某台设备上启用了低电耗模式,且:</p>
+<ul>
+<li>该设备具有 SMD,则系统会进行全面的低电耗模式优化(包括轻度优化)。</li>
+<li>该设备没有 SMD,则系统仅会进行轻度低电耗模式优化。</li>
+</ul>
+
+<h3 id="doze-life">低电耗模式生命周期</h3>
+
+<p>当平台检测到设备处于闲置状态时,便会使其进入低电耗模式,并在一个或多个满足退出条件的活动发生时使设备退出低电耗模式。</p>
+
+<table>
+<tbody>
+<tr>
+<th width="20%">检测</th>
+<th width="60%">低电耗模式期间</th>
+<th width="20%">退出</th>
+</tr>
+<tr>
+<td><p>当设备具有以下特点时,平台会检测到其处于闲置状态:</p>
+<ul>
+<li>设备是静止的(使用大幅度动作检测器检测)。</li>
+<li>设备屏幕已关闭一段时间。</li>
+</ul>
+<p>当设备连接到充电器时,不会进入低电耗模式。
+</p>
+</td>
+<td><p>平台会尝试使系统处于休眠状态,定期进入维护时段并恢复正常操作,然后使设备返回休眠状态并在更长的重复时间内处于休眠状态。在休眠期间,设备会受到以下限制:</p>
+<ul>
+<li>应用无法访问网络。</li>
+<li>应用唤醒锁定被忽略。</li>
+<li>闹钟被延迟。闹钟响铃以及使用 <code>setAndAllowWhileIdle()</code> 设置的闹钟(当设备处于低电耗模式时,限于每个应用每 15 分钟 1 次)除外。此豁免适用于必须显示活动提醒通知的应用(如日历)。</li>
+<li>无法执行 WLAN 扫描。</li>
+<li>SyncAdapter 同步和 JobScheduler 作业被延迟,直到下一个维护时段才能恢复。</li>
+<li>接收短信和彩信的应用被暂时列入白名单,以便它们可以完成处理任务。</li>
+</ul>
+</td>
+<td><p>当平台检测到以下情况时,会使设备退出低电耗模式:</p>
+<ul>
+<li>用户与设备互动。</li>
+<li>设备移动。</li>
+<li>设备屏幕打开。</li>
+<li>AlarmClock 即将响铃。</li>
+</ul>
+<p>通知不会使设备退出低电耗模式。</p>
+</td>
+</tr>
+</tbody>
+</table>
+
+<p>在屏幕关闭期间、设备处于闲置状态之前,Android 7.0 及更高版本通过启用轻度休眠模式来延长设备处于低电耗模式的时间。</p>
+<p><img src="../images/doze_lightweight.png"/></p>
+<p class="img-caption">图 1. 非静止和静止设备的低电耗模式。</p>
+
+<table>
+<tbody>
+<tr>
+<th>操作</th>
+<th>低电耗模式</th>
+<th>轻度低电耗模式</th>
+</tr>
+<tr>
+<td>触发因素</td>
+<td>屏幕关闭、电池供电、静止</td>
+<td>屏幕关闭、电池供电(未插电)</td>
+</tr>
+<tr>
+<td>时间</td>
+<td>随维护时段依次增加</td>
+<td>随维护时段反复持续 N 分钟</td>
+</tr>
+<tr>
+<td>限制</td>
+<td>无法进行网络访问、唤醒锁定和 GPS/WLAN 扫描。闹钟和作业/同步被延迟。</td>
+<td>无法进行网络访问。作业/同步被延迟(维护时段除外)。</td>
+</tr>
+<tr>
+<td>行为</td>
+<td>仅接收优先级较高的推送通知消息。</td>
+<td>接收所有实时消息(即时消息、致电等)。优先级较高的推送通知消息可以暂时访问网络。</td>
+</tr>
+<tr>
+<td>退出</td>
+<td>动作、屏幕开启或闹钟响铃。</td>
+<td>屏幕开启。</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="doze-interactions">与应用待机模式相集成</h3>
+<ul>
+<li>设备处于低电耗模式的时间不会计入应用待机模式。</li>
+<li>当设备处于低电耗模式时,闲置应用一天至少可以执行一次正常操作。</li>
+</ul>
+
+<h3 id="integrate-doze">集成低电耗模式</h3>
+
+<p>启用低电耗模式时,支持 <a href="/devices/sensors/sensor-types.html#significant_motion">SENSOR_TYPE_SIGNIFICANT_MOTION</a> 的设备会执行全面的低电耗模式优化(包括轻度优化);没有 SMD 的设备仅执行轻度低电耗模式优化。Android 会自动选择适当的低电耗模式优化,无需供应商配置。</p>
+
+<p>要为设备启用低电耗模式,请执行以下任务:</p>
+
+<ol>
+<li>确认设备已安装云消息传递服务。</li>
+<li>在设备覆盖配置文件 <code>overlay/frameworks/base/core/res/res/values/config.xml</code> 中,将 <code>config_enableAutoPowerModes</code> 设置为 <strong>true</strong>:<pre>
+bool name="config_enableAutoPowerModes"&gt;true&lt;/bool&gt;
+</pre>
+<br />在 AOSP 中,该参数默认设为“false”(已停用低电耗模式)。<br />
+</li>
+<li>确认预加载的应用和服务满足以下要求:<ul>
+<li>遵循<a href="https://developer.android.com/training/monitoring-device-state/doze-standby.html">节电优化指南</a>。有关详情,请参阅<a href="#test-apps">测试和优化应用</a>。
+<p><strong>或</strong></p>
+</li><li>获得豁免,不会进入低电耗模式和应用待机模式。有关详情,请参阅<a href="#exempt-apps">豁免应用</a>。</li>
+</ul>
+</li>
+<li>确认必要的服务已获得豁免,不会进入低电耗模式。</li>
+</ol>
+
+<h4 id="doze-tips">提示</h4>
+<ul>
+<li>如果可能,请使用 GCM 进行<a href="https://developers.google.com/cloud-messaging/downstream">下游消息传递</a>。</li>
+<li>如果您的用户必须立即看到通知,请使用 <a href="https://developers.google.com/cloud-messaging/concept-options#setting-the-priority-of-a-message">GCM 高优先级消息</a>。</li>
+<li>在初始<a href="https://developers.google.com/cloud-messaging/concept-options#payload">消息有效负载</a>内提供充足的信息(以避免不必要的后续网络访问)。</li>
+<li>使用 <a href="http://developer.android.com/reference/android/app/AlarmManager.html#setAndAllowWhileIdle(int,%20long,%20android.app.PendingIntent)">setAndAllowWhileIdle()</a> 和 <a href="http://developer.android.com/reference/android/app/AlarmManager.html#setExactAndAllowWhileIdle(int,%20long,%20android.app.PendingIntent)">setExactAndAllowWhileIdle()</a> 设置重要闹钟。
+</li>
+</ul>
+
+<h4 id="test-apps">测试和优化应用</h4>
+<p>在低电耗模式中测试所有应用(尤其是预加载的应用)。有关详情,请参阅<a href="https://developer.android.com/training/monitoring-device-state/doze-standby.html#testing_doze_and_app_standby">测试低电耗模式和应用待机模式</a>。</p>
+
+<p class="note"><strong>注意</strong>:彩信/短信/电话服务独立于低电耗模式发挥作用,即使设备处于低电耗模式,此类服务也一定会唤醒客户端应用。</p>
+
+<h2 id="exempt-apps">豁免应用</h2>
+<p>您可以豁免应用,使其不受低电耗模式和应用待机模式的影响。豁免功能可能适用于下列情况:</p>
+<ul>
+<li>使用非 GCM 云消息传递平台的原始设备制造商 (OEM)</li>
+<li>使用非 GCM 云消息传递平台的运营商</li>
+<li>使用非 GCM 云消息传递平台的第三方应用</li>
+</ul>
+
+<p class="warning"><strong>警告</strong>:请勿为了规避测试和优化而豁免应用。不必要的豁免会削弱低电耗模式和应用待机模式的优势,且有损于用户体验,因此我们强烈建议尽可能不要进行此类豁免(因为这样做会让应用破坏平台对耗电量的有益控制)。如果用户开始对这些应用的耗电量感到不满,则会导致令人失望的糟糕体验(和针对该应用的负面用户评价)并引发客户支持问题。出于这些原因,我们强烈建议您不要豁免第三方应用,而仅豁免云消息传递服务或功能相似的应用。</p>
+
+<p>豁免的应用默认在“设置”&gt;“电池”中的一个视图内列出。<em></em>该列表用于豁免应用,使其不会进入低电耗模式和应用待机模式。为使用户清楚知道哪些应用已被豁免,“设置”菜单<strong>必须</strong>显示所有豁免的应用。</p>
+
+<p>用户可以转到“设置”&gt;“电池”&gt;“电池优化”&gt;“所有应用”,然后选择要关闭(或重新开启)优化的应用,以此来手动豁免应用。<em></em>不过,用户无法取消豁免系统映像中默认豁免的任何应用或服务。</p>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-cn/security/bulletin/2017-07-01.html b/zh-cn/security/bulletin/2017-07-01.html
new file mode 100644
index 0000000..847b89b
--- /dev/null
+++ b/zh-cn/security/bulletin/2017-07-01.html
@@ -0,0 +1,1514 @@
+<html devsite><head>
+    <title>Android 安全公告 - 2017 年 7 月</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          //www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p><em>发布时间:2017 年 7 月 5 日 | 更新时间:2017 年 7 月 6 日</em></p>
+
+<p>Android 安全公告详细介绍了会影响 Android 设备的安全漏洞。2017 年 7 月 5 日(或之后)的安全补丁程序级别均已解决所有这些问题。请参阅 <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 和 Nexus 更新时间表</a>,了解如何检查设备的安全补丁程序级别。</p>
+
+<p>我们的合作伙伴在至少一个月前就已收到本公告中说明的这些问题的相关通知。我们已在 Android 开放源代码项目 (AOSP) 代码库中发布了针对相关问题的源代码补丁程序,并在本公告中提供了相应链接。本公告还提供了 AOSP 之外的补丁程序的链接。</p>
+
+<p>这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者使用特制文件通过特许进程执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响设备造成的影响大小(假设相关平台和服务缓解措施被成功规避或出于开发目的而被关闭)。</p>
+
+<p>我们尚未收到用户因这些新报告的问题而遭到主动攻击或这些问题遭到滥用的报告。请参阅 <a href="#mitigations">Android 和 Google Play 保护机制缓解措施</a>部分,详细了解 <a href="/security/enhancements/index.html">Android 安全平台防护功能</a>和 Google Play 保护机制;这些功能可提高 Android 平台的安全性。</p>
+
+<p>我们建议所有用户都在自己的设备上接受这些更新。</p>
+
+<p class="note"><strong>注意</strong>:如需了解与最新的无线更新 (OTA) 和适用于 Google 设备的固件映像有关的信息,请参阅 <a href="#google-device-updates">Google 设备更新</a>部分。</p>
+
+<h2 id="announcements">公告</h2>
+<ul>
+  <li>本公告有两个安全补丁程序级别字符串,目的是让 Android 合作伙伴能够灵活地、更快速地修复所有 Android 设备上类似的一系列漏洞。如需了解详情,请参阅<a href="#common-questions-and-answers">常见问题和解答</a>:
+    <ul>
+       <li><strong>2017-07-01</strong>:部分安全补丁程序级别字符串。此安全补丁程序级别字符串表明与 2017-07-01(以及之前的所有安全补丁程序级别字符串)相关的所有问题均已得到解决。</li>
+       <li><strong>2017-07-05</strong>:完整的安全补丁程序级别字符串。此安全补丁程序级别字符串表明与 2017-07-01 和 2017-07-05(以及之前的所有安全补丁程序级别字符串)相关的所有问题均已得到解决。</li>
+    </ul>
+  </li>
+</ul>
+
+<h2 id="mitigations">Android 和 Google Play 保护机制缓解措施</h2>
+<p>本部分总结了 <a href="/security/enhancements/index.html">Android 安全平台</a>和服务防护功能(如 <a href="//www.android.com/play-protect">Google Play 保护机制</a>)提供的缓解措施。这些功能可降低 Android 上的安全漏洞被成功利用的可能性。</p>
+<ul>
+  <li>新版 Android 平台中的增强功能让攻击者更加难以利用 Android 上存在的许多问题。我们建议所有用户都尽可能更新到最新版 Android。</li>
+  <li>Android 安全团队会积极利用 <a href="//www.android.com/play-protect">Google Play 保护机制</a>来监控滥用行为,并在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">可能有害的应用</a>时向用户发出警告。在预装有 <a href="//www.android.com/gms">Google 移动服务</a>的设备上,Google Play 保护机制在默认情况下处于启用状态。对于安装来自 Google Play 以外的应用的用户来说,这项功能尤为重要。
+  </li>
+</ul>
+
+<h2 id="2017-07-01-details">2017-07-01 安全补丁程序级别 - 漏洞详情</h2>
+<p>我们在下面提供了 2017-07-01 补丁程序级别涵盖的每个安全漏洞的详细信息,漏洞列在受其影响的组件下,其中包括问题描述,以及一个包含 CVE、相关参考信息、<a href="#common-questions-and-answers">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)的表格。在适用的情况下,我们会将 Bug ID 链接到解决相应问题的公开更改记录(如 AOSP 代码更改列表)。如果某个 Bug 有多条相关的更改记录,我们还将通过 Bug ID 后面的数字链接到更多参考信息。</p>
+
+<h3 id="runtime">运行时</h3>
+<p>这一部分中最严重的漏洞可让远程攻击者使用特制文件通过非特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>已更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-3544</td>
+   <td><a href="https://android.googlesource.com/platform/libcore/+/c5dd90d62590425f04a261e0f6c927acca147f88">A-35784677</a></td>
+   <td>RCE</td>
+   <td>中</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="framework">框架</h3>
+<p>这一部分中最严重的漏洞可让本地恶意应用使用特制文件通过使用相应库的应用执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>已更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0664</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/base/+/59773dc2f213c3e645c7e04881afa0a8e6ffccca">A-36491278</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/75edf04bf18d37df28fb58e1d75331ed4bcae230">A-36991414</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5fc2df253c089b53b3e235a3f237f96a98b53977">A-37285689</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5ac63e4547feaa7cb51ac81896250f47f367ffba">A-37478824</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0668</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b3e3325d23289a94e66d8ce36a53a7ccf7b52c6d">A-22011579</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0669</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/7b7ef84234cd3daea0e22025b908b0041885736c">A-34114752</a></td>
+   <td>ID</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0670</td>
+   <td><a href="https://android.googlesource.com/platform/bionic/+/e102faee8b2f87c28616e7f5453f9a11eea9b122">A-36104177</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="libraries">库</h3>
+<p>这一部分中最严重的漏洞可让远程攻击者使用特制文件通过使用相应库的应用执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>已更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0671</td>
+   <td>A-34514762<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>4.4.4</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-2109</td>
+   <td><a href="https://android.googlesource.com/platform/external/boringssl/+/ccb2efe8d3fccb4321e85048d67c8528e03d4652">A-35443725</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0672</td>
+   <td><a href="https://android.googlesource.com/platform/external/skia/+/c4087ff5486d36a690c681affb668164ec0dd697">A-34778578</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="media-framework">媒体框架</h3>
+<p>这一部分中最严重的漏洞可让远程攻击者使用特制文件通过特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>已更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0540</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/a92b39ff0c47d488b81fecd62ba85e48d386aa68">A-33966031</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0673</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/381ccb2b7f2ba42490bafab6aa7a63a8212b396f">A-33974623</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0674</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/1603112cccbab3dff66a7eb1b82e858c1749f34b">A-34231163</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0675</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/726108468dcfdabb833b8d55333de53cf6350aaa">A-34779227</a> [<a href="https://android.googlesource.com/platform/external/libhevc/+/4395fc2288e3f692765c73fce416e831fdaa5463">2</a>]</td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0676</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/8e415eabb5d2abd2f2bd40a675339d967f81521b">A-34896431</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0677</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/b8fee6a6d0a91fb5ddca8f54b0c891e25c1b65ae">A-36035074</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/64bc0b8c0c495c487604d483aa57978db7f634be">A-36576151</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0679</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/91cb6b1745f3e9d341cf6decc2b916cb1e4eea77">A-36996978</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0680</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989df73b34a7a698731cab3ee1e4a831a862fbe1">A-37008096</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0681</td>
+   <td><a href="https://android.googlesource.com/platform/external/tremolo/+/822af05a1364d8dc6189dce5380a2703214dd799">A-37208566</a></td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0682</td>
+   <td>A-36588422<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0683</td>
+   <td>A-36591008<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0684</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c7c9271740c29c02e7926265ed53a44b8113dbfb">A-35421151</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0685</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/680b75dabb90c8c2e22886826554ad1bc99b36f1">A-34203195</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0686</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/b8d7e85c10cc22e1a5d81ec3d8a2e5bdd6102852">A-34231231</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0688</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/62c07468bc26d1f9487c5298bb2a2f3740db13b1">A-35584425</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0689</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/2210ff5600d3f965352a3074adff8fedddcf347e">A-36215950</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1f418f10f4319fc829360b7efee7fca4b3880867">A-36592202</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691</td>
+   <td><a href="https://android.googlesource.com/platform/external/dng_sdk/+/c70264282305351abbec9b967333db4d896583b9">A-36724453</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/6db482687caf12ea7d2d07d655b17413bc937c73">A-36725407</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0693</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/632ff754836d22415136cb3f97fe4622c862ce81">A-36993291</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0694</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/47750a5f1b19695ac64d6f7aa6e7e0918d3c8977">A-37093318</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/cc5683451dd9be1491b54f215e9934d49f11cf70">A-37094889</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0696</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/0d0ddb7cd7618ede5301803c526f066b95ce5089">A-37207120</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c5eaf3ae70d5ea3a7d390294002e4cf9859b3578">A-37239013</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1618337cac09284fddb5bb14b5e0cfe2946d3431">A-35467458</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0699</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989b2afc3ebb1bbb4c962e2aff1fd9b3149f83f1">A-36490809</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="system-ui">系统界面</h3>
+<p>这一部分中最严重的漏洞可让远程攻击者使用特制文件通过特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>已更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0700</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/38889ebd9b9c682bd1b64fd251ecd69b504a6155">A-35639138</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0701</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/85e94f5b67c1beb9402c4de82bd481a5202470de">A-36385715</a> [<a href="https://android.googlesource.com/platform/external/libgdx/+/bd4c825d8fc5dd48f5c602e673ae210909b31fd0">2</a>]</td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0702</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/5d46e9a1784c02f347af107a978fe9fbd7af7fb2">A-36621442</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/4af8f912aa1ee714638d0f9694d6f856bc8166f3">A-33123882</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/179f0e9512100b0a403aab8b2b4cf5510bb20bee">A-33059280</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+
+<h2 id="2017-07-05-details">2017-07-05 安全补丁程序级别 - 漏洞详情</h2>
+<p>我们在下面提供了 2017-07-05 补丁程序级别涵盖的每个安全漏洞的详细信息,漏洞列在受其影响的组件下,其中包括 CVE、相关参考信息、<a href="#common-questions-and-answers">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。在适用的情况下,我们会将 Bug ID 链接到解决相应问题的公开更改记录(如 AOSP 代码更改列表)。如果某个 Bug 有多条相关的更改记录,我们还将通过 Bug ID 后面的数字链接到更多参考信息。</p>
+
+<h3 id="broadcom-components">Broadcom 组件</h3>
+<p>这一部分中最严重的漏洞可让邻近区域内的攻击者通过内核执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>A-38041027<a href="#asterisk">*</a><br />B-RB#123023</td>
+   <td>RCE</td>
+   <td>严重</td>
+   <td>WLAN 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705</td>
+   <td>A-34973477<a href="#asterisk">*</a><br />B-RB#119898</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>WLAN 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>A-35195787<a href="#asterisk">*</a><br />B-RB#120532</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>WLAN 驱动程序</td>
+  </tr>
+</tbody></table>
+<h3 id="htc-components">HTC 组件</h3>
+<p>这一部分中最严重的漏洞可让本地恶意应用通过特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0707</td>
+   <td>A-36088467<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>LED 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>A-35384879<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>声音驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0709</td>
+   <td>A-35468048<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>低</td>
+   <td>传感器中枢驱动程序</td>
+  </tr>
+</tbody></table>
+<h3 id="kernel-components">内核组件</h3>
+<p>这一部分中最严重的漏洞可让本地恶意应用通过特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-6074</td>
+   <td>A-35784697<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4">上游内核</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>网络子系统</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-5970</td>
+   <td>A-35805460<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34b2cef20f19c87999fff3da4071e66937db9644">上游内核</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>网络子系统</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-5707</td>
+   <td>A-35841297<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=451a2886b6bf90e2fb378f7c46c655450fb96e81">上游内核</a> [<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdc81f45e9f57858da6351836507fbcf1b7583ee">2</a>]</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SCSI 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0710</td>
+   <td>A-34951864<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>TCB</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-7308</td>
+   <td>A-36725304<br />
+<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b6867c2ce76c596676bec7d2d525af525fdc6e2">上游内核</a> [<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b">2</a>] [<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bcc5364bdcfe131e6379363f089e7b4108d35b70">3</a>]</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>网络驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9731</td>
+   <td>A-35841292<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14">上游内核</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>文件系统</td>
+  </tr>
+</tbody></table>
+<h3 id="mediatek-components">MediaTek 组件</h3>
+<p>这一部分中最严重的漏洞可让本地恶意应用通过特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0711</td>
+   <td>A-36099953<a href="#asterisk">*</a><br />M-ALPS03206781</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>网络驱动程序</td>
+  </tr>
+</tbody></table>
+<h3 id="nvidia-components">NVIDIA 组件</h3>
+<p>这一部分中最严重的漏洞可让本地恶意应用通过特许进程执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0340</td>
+   <td>A-33968204<a href="#asterisk">*</a><br />N-CVE-2017-0340</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>Libnvparser</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0326</td>
+   <td>A-33718700<a href="#asterisk">*</a><br />N-CVE-2017-0326</td>
+   <td>ID</td>
+   <td>中</td>
+   <td>视频驱动程序</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-components">Qualcomm 组件</h3>
+<p>这一部分中最严重的漏洞可让本地恶意应用通过内核执行任意代码。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-8255</td>
+   <td>A-36251983<br />
+<a href="//source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=cd42366a73b38c8867b66472f07d67a6eccde599">QC-CR#985205</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>引导加载程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10389</td>
+   <td>A-34500449<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=031c27b4b8414bc93a14e773503d9bfc0fc890d2">QC-CR#1009145</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>引导加载程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8253</td>
+   <td>A-35400552<br />
+<a href="//www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-4.4.git;a=commit;h=a5f07894058c4198f61e533d727b343c5be879b0">QC-CR#1086764</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>相机驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8262</td>
+   <td>A-32938443<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-4.4/commit/?id=9ef4ee8e3dfaf4e796bda781826851deebbd89bd">QC-CR#2029113</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>GPU 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8263</td>
+   <td>A-34126808<a href="#asterisk">*</a><br />QC-CR#1107034</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>匿名共享内存子系统</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8267</td>
+   <td>A-34173755<a href="#asterisk">*</a><br />QC-CR#2001129</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>匿名共享内存子系统</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8273</td>
+   <td>A-35400056<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=dfe6691ba301c769179cabab12d74d4e952462b9">QC-CR#1094372</a> [<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=30d94c33dec0ffedc875d7853635a9773921320a">2</a>]</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>引导加载程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5863</td>
+   <td>A-36251182<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=daf0acd54a6a80de227baef9a06285e4aa5f8c93">QC-CR#1102936</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>USB HID 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8243</td>
+   <td>A-34112490<a href="#asterisk">*</a><br />QC-CR#2001803</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SoC 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8246</td>
+   <td>A-37275839<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=30baaec8afb05abf9f794c631ad944838d498ab8">QC-CR#2008031</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>声音驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8256</td>
+   <td>A-37286701<br />
+<a href="//source.codeaurora.org/quic/la//platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=75e1e00d6b3cd4cb89fd5314a60c333aa0b03230">QC-CR#1104565</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>WLAN 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8257</td>
+   <td>A-37282763<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=0f19fbd00c6679bbc524f7a6d0fc3d54cfd1c9ae">QC-CR#2003129</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>视频驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8259</td>
+   <td>A-34359487<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=68020103af00280393da10039b968c95d68e526c">QC-CR#2009016</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SoC 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>A-34624155<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=8f236391e5187c05f7f4b937856944be0af7aaa5">QC-CR#2008469</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相机驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8261</td>
+   <td>A-35139833<a href="#asterisk">*</a><br />QC-CR#2013631</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相机驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264</td>
+   <td>A-33299365<a href="#asterisk">*</a><br />QC-CR#1107702</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相机驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>A-32341313<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.10/commit/?id=193813a21453ccc7fb6b04bedf881a6feaaa015f">QC-CR#1109755</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>视频驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266</td>
+   <td>A-33863407<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=42627c94cf8c189332a6f5bfdd465ea662777911">QC-CR#1110924</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>视频驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268</td>
+   <td>A-34620535<a href="#asterisk">*</a><br />QC-CR#2002207</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相机驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8270</td>
+   <td>A-35468665<a href="#asterisk">*</a><br />QC-CR#2021363</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>WLAN 驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8271</td>
+   <td>A-35950388<a href="#asterisk">*</a><br />QC-CR#2028681</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>视频驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8272</td>
+   <td>A-35950805<a href="#asterisk">*</a><br />QC-CR#2028702</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>视频驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8254</td>
+   <td>A-36252027<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=70afce1d9be745005c48fd565c01ce452a565e7e">QC-CR#832914</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>声音驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8258</td>
+   <td>A-37279737<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=31e2a2f0f2f3615cefd4400c707709bbc3e26170">QC-CR#2005647</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>相机驱动程序</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269</td>
+   <td>A-33967002<a href="#asterisk">*</a><br />QC-CR#2013145</td>
+   <td>ID</td>
+   <td>中</td>
+   <td>IPA 驱动程序</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-closed-source-components">Qualcomm 闭源组件</h3>
+<p>以下漏洞会影响 Qualcomm 组件;2014–2016 年的 Qualcomm AMSS 安全公告对这些漏洞进行了详细说明。此 Android 安全公告中也包含这些漏洞,旨在将其修复方案与 Android 安全补丁程序级别建立关联。这些漏洞的修复方案可直接从 Qualcomm 获取。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>参考信息</th>
+   <th>类型</th>
+   <th>严重程度</th>
+   <th>组件</th>
+  </tr>
+  <tr>
+   <td>CVE-2014-9411</td>
+   <td>A-37473054<a href="#asterisk">*</a><br />QC-CR#532956</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9968</td>
+   <td>A-37304413<a href="#asterisk">*</a><br />QC-CR#642084</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9973</td>
+   <td>A-37470982<a href="#asterisk">*</a><br />QC-CR#646919</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9974</td>
+   <td>A-37471979<a href="#asterisk">*</a><br />QC-CR#654072</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9975</td>
+   <td>A-37471230<a href="#asterisk">*</a><br />QC-CR#700125</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9977</td>
+   <td>A-37471087<a href="#asterisk">*</a><br />QC-CR#703002</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9978</td>
+   <td>A-37468982<a href="#asterisk">*</a><br />QC-CR#709939</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9979</td>
+   <td>A-37471088<a href="#asterisk">*</a><br />QC-CR#717304</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9980</td>
+   <td>A-37471029<a href="#asterisk">*</a><br />QC-CR#709766</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-0575</td>
+   <td>A-37296999<a href="#asterisk">*</a><br />QC-CR#715815</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8592</td>
+   <td>A-37470090<a href="#asterisk">*</a><br />QC-CR#775396</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8595</td>
+   <td>A-37472411<a href="#asterisk">*</a><br />QC-CR#790151</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8596</td>
+   <td>A-37472806<a href="#asterisk">*</a><br />QC-CR#802005</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9034</td>
+   <td>A-37305706<a href="#asterisk">*</a><br />QC-CR#614512</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9035</td>
+   <td>A-37303626<a href="#asterisk">*</a><br />QC-CR#750231</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9036</td>
+   <td>A-37303519<a href="#asterisk">*</a><br />QC-CR#751831</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9037</td>
+   <td>A-37304366<a href="#asterisk">*</a><br />QC-CR#753315</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9038</td>
+   <td>A-37303027<a href="#asterisk">*</a><br />QC-CR#758328</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9039</td>
+   <td>A-37302628<a href="#asterisk">*</a><br />QC-CR#760282</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9040</td>
+   <td>A-37303625<a href="#asterisk">*</a><br />QC-CR#761216</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9041</td>
+   <td>A-37303518<a href="#asterisk">*</a><br />QC-CR#762126</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9042</td>
+   <td>A-37301248<a href="#asterisk">*</a><br />QC-CR#762214</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9043</td>
+   <td>A-37305954<a href="#asterisk">*</a><br />QC-CR#762954</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9044</td>
+   <td>A-37303520<a href="#asterisk">*</a><br />QC-CR#764858</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9045</td>
+   <td>A-37302136<a href="#asterisk">*</a><br />QC-CR#766189</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9046</td>
+   <td>A-37301486<a href="#asterisk">*</a><br />QC-CR#767335</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9047</td>
+   <td>A-37304367<a href="#asterisk">*</a><br />QC-CR#779285</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9048</td>
+   <td>A-37305707<a href="#asterisk">*</a><br />QC-CR#795960</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9049</td>
+   <td>A-37301488<a href="#asterisk">*</a><br />QC-CR#421589、QC-CR#817165</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9050</td>
+   <td>A-37302137<a href="#asterisk">*</a><br />QC-CR#830102</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9051</td>
+   <td>A-37300737<a href="#asterisk">*</a><br />QC-CR#837317</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9052</td>
+   <td>A-37304217<a href="#asterisk">*</a><br />QC-CR#840483</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9053</td>
+   <td>A-37301249<a href="#asterisk">*</a><br />QC-CR#843808</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9054</td>
+   <td>A-37303177<a href="#asterisk">*</a><br />QC-CR#856077</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9055</td>
+   <td>A-37472412<a href="#asterisk">*</a><br />QC-CR#806464</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9060</td>
+   <td>A-37472807<a href="#asterisk">*</a><br />QC-CR#817343</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9061</td>
+   <td>A-37470436<a href="#asterisk">*</a><br />QC-CR#824195</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9062</td>
+   <td>A-37472808<a href="#asterisk">*</a><br />QC-CR#802039</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9067</td>
+   <td>A-37474000<a href="#asterisk">*</a><br />QC-CR#848926</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9068</td>
+   <td>A-37470144<a href="#asterisk">*</a><br />QC-CR#851114</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9069</td>
+   <td>A-37470777<a href="#asterisk">*</a><br />QC-CR#854496</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9070</td>
+   <td>A-37474001<a href="#asterisk">*</a><br />QC-CR#877102</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9071</td>
+   <td>A-37471819<a href="#asterisk">*</a><br />QC-CR#877276</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9072</td>
+   <td>A-37474002<a href="#asterisk">*</a><br />QC-CR#877361</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9073</td>
+   <td>A-37473407<a href="#asterisk">*</a><br />QC-CR#878073</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10343</td>
+   <td>A-32580186<a href="#asterisk">*</a><br />QC-CR#972213</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10344</td>
+   <td>A-32583954<a href="#asterisk">*</a><br />QC-CR#1022360</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>调制解调器</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10346</td>
+   <td>A-37473408<a href="#asterisk">*</a><br />QC-CR#896584</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10347</td>
+   <td>A-37471089<a href="#asterisk">*</a><br />QC-CR#899671</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10382</td>
+   <td>A-28823584<a href="#asterisk">*</a><br />QC-CR#944014</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10383</td>
+   <td>A-28822389<a href="#asterisk">*</a><br />QC-CR#960624</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10388</td>
+   <td>A-32580294<a href="#asterisk">*</a><br />QC-CR#992749</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10391</td>
+   <td>A-32583804<a href="#asterisk">*</a><br />QC-CR#970283</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>WConnect</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5871</td>
+   <td>A-37473055<a href="#asterisk">*</a><br />QC-CR#883013</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5872</td>
+   <td>A-37472809<a href="#asterisk">*</a><br />QC-CR#886220</td>
+   <td>N/A</td>
+   <td>高</td>
+   <td>安全系统组</td>
+  </tr>
+</tbody></table>
+<h2 id="google-device-updates">Google 设备更新</h2>
+<p>以下表格包含最新的无线更新 (OTA) 中的安全补丁程序级别和适用于 Google 设备的固件映像。Google 设备固件映像可在 <a href="//developers.google.com/android/nexus/images">Google 开发者网站</a>上获取。</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Google 设备</th>
+   <th>安全补丁程序级别</th>
+  </tr>
+  <tr>
+   <td>Pixel/Pixel XL</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 5X</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 6</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 6P</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 9</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus Player</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Pixel C</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+</tbody></table>
+<h2 id="acknowledgements">致谢</h2>
+<p>非常感谢以下研究人员做出的贡献:</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="83%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>研究人员</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0711</td>
+   <td>阿里巴巴移动安全团队的 Chengming Yang、Baozeng Ding 和 Yang Song</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>腾讯玄武实验室的 Daxing Guo (<a href="//twitter.com/freener0">@freener0</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>Derrek (<a href="//twitter.com/derrekr6">@derrekr6</a>) 和 Scott Bauer</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>腾讯科恩实验室 (<a href="//twitter.com/keen_lab?lang=en">@keen_lab</a>) 的 Di Shen (<a href="//twitter.com/returnsme?lang=en">@returnsme</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="//fb.me/dzimka">Dzmitry Lukyanenka</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692、CVE-2017-0694</td>
+   <td>奇虎 360 科技有限公司 Alpha 团队的 Elphet 和 Gong Guang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266、CVE-2017-8243、CVE-2017-8270</td>
+   <td>奇虎 360 科技有限公司 IceSword 实验室的 Gengjia Chen (<a href="//twitter.com/chengjia4574">@chengjia4574</a>) 和 <a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665、CVE-2017-0681</td>
+   <td><a href="//c0reteam.org">C0RE 团队</a>的 <a href="mailto:[email protected]">Hanxiang Wen</a>、Mingjian Zhou (<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>) 和 Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268、CVE-2017-8261</td>
+   <td>奇虎 360 IceSword 实验室的 Jianqiang Zhao (<a href="//twitter.com/jianqiangzhao">@jianqiangzhao</a>) 和 <a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td>Census Consulting Inc. 的 Joey Brand</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666、CVE-2017-0684</td>
+   <td><a href="//c0reteam.org">C0RE 团队</a>的 Mingjian Zhou (<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)、<a href="mailto:[email protected]">Chi Zhang</a> 和 Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697、CVE-2017-0670</td>
+   <td><a href="mailto:[email protected]">Niky1235</a> (<a href="//twitter.com/jiych_guru">@jiych_guru</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>Exodus Intelligence 的 Nitay Artenstein</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705、CVE-2017-8259</td>
+   <td><a href="//twitter.com/ScottyBauer1">Scott Bauer</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td>CSS Inc. 的 Timothy Becker</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0642、CVE-2017-0682、CVE-2017-0683、CVE-2017-0676、CVE-2017-0696、CVE-2017-0675、CVE-2017-0701、CVE-2017-0702、CVE-2017-0699</td>
+   <td>Vasily Vasiliev</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695、CVE-2017-0689、CVE-2017-0540、CVE-2017-0680、CVE-2017-0679、CVE-2017-0685、CVE-2017-0686、CVE-2017-0693、CVE-2017-0674、CVE-2017-0677</td>
+   <td><a href="//www.trendmicro.com">趋势科技</a><a href="//blog.trendmicro.com/trendlabs-security-intelligence/category/mobile/">移动威胁响应团队</a>的 V.E.O (<a href="//twitter.com/vysea">@VYSEa</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>腾讯安全平台部门的 Xiling Gong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td>奇虎 360 Qex 团队的 Yangkang (<a href="//twitter.com/dnpushme">@dnpushme</a>) 和 Liyadong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269、CVE-2017-8271、CVE-2017-8272、CVE-2017-8267</td>
+   <td>奇虎 360 科技有限公司 IceSword 实验室的 Yonggang Guo (<a href="//twitter.com/guoygang">@guoygang</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264、CVE-2017-0326、CVE-2017-0709</td>
+   <td><a href="//c0reteam.org">C0RE 团队</a>的 Yuan-Tsung Lo (<a href="mailto:[email protected]">[email protected]</a>) 和 Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704、CVE-2017-0669</td>
+   <td>腾讯安全平台部门的 Yuxiang Li (<a href="//twitter.com/xbalien29">@Xbalien29</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td>奇虎 360 科技有限公司成都安全响应中心的 <a href="//weibo.com/ele7enxxh">Zinuo Han</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691、CVE-2017-0700</td>
+   <td>奇虎 360 科技有限公司成都安全响应中心的 <a href="//weibo.com/ele7enxxh">Zinuo Han</a> 和 <a href="//www.pwnzen.com/">Pangu 团队</a>的 Ao Wang (<a href="//twitter.com/ArayzSegment">@ArayzSegment</a>)</td>
+  </tr>
+</tbody></table>
+<h2 id="common-questions-and-answers">常见问题和解答</h2>
+<p>本部分针对阅读本公告后可能产生的常见问题提供了相应的解答。</p>
+
+<p><strong>1. 如何确定我的设备是否已更新到解决了这些问题的版本?
+</strong></p>
+
+<p>要了解如何检查设备的安全补丁程序级别,请阅读 <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 和 Nexus 更新时间表</a>中的说明。</p>
+<ul>
+  <li>2017-07-01(或之后)的安全补丁程序级别解决了与 2017-07-01 安全补丁程序级别相关的所有问题。</li>
+  <li>2017-07-05(或之后)的安全补丁程序级别解决了与 2017-07-05 安全补丁程序级别以及之前的所有补丁程序级别相关的所有问题。</li>
+</ul>
+<p>提供这些更新的设备制造商应将补丁程序字符串级别设为:</p>
+<ul>
+  <li>[ro.build.version.security_patch]:[2017-07-01]</li>
+  <li>[ro.build.version.security_patch]:[2017-07-05]</li>
+</ul>
+<p><strong>2. 为何此公告有 2 个安全补丁程序级别?</strong></p>
+
+<p>本公告有 2 个安全补丁程序级别,目的是让 Android 合作伙伴能够灵活地、更快速地修复所有 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。</p>
+<ul>
+  <li>使用 2017 年 7 月 1 日安全补丁程序级别的设备必须包含该安全补丁程序级别对应的所有问题的修复方案,以及针对之前的安全公告中报告的所有问题的修复方案。</li>
+  <li>使用 2017 年 7 月 5 日或更新的安全补丁程序级别的设备必须包含此(以及之前的)安全公告中的所有适用补丁程序。</li>
+</ul>
+<p>我们建议合作伙伴在一次更新中汇总要解决的所有问题的修复方案。</p>
+
+<p><strong>3.<em></em>“类型”列中的条目表示什么意思?</strong></p>
+
+<p><em></em>漏洞详情表的“类型”列中的条目是安全漏洞的分类。</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>缩写</th>
+   <th>定义</th>
+  </tr>
+  <tr>
+   <td>RCE</td>
+   <td>远程代码执行</td>
+  </tr>
+  <tr>
+   <td>EoP</td>
+   <td>提权</td>
+  </tr>
+  <tr>
+   <td>ID</td>
+   <td>信息披露</td>
+  </tr>
+  <tr>
+   <td>DoS</td>
+   <td>拒绝服务</td>
+  </tr>
+  <tr>
+   <td>N/A</td>
+   <td>没有分类</td>
+  </tr>
+</tbody></table>
+
+<p><strong>4.<em></em>“参考信息”列中的条目表示什么意思?</strong></p>
+
+<p>漏洞详情表的“参考信息”列中的条目可能包含用于标识参考值所属组织的前缀。<em></em></p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>前缀</th>
+   <th>参考信息</th>
+  </tr>
+  <tr>
+   <td>A-</td>
+   <td>Android Bug ID</td>
+  </tr>
+  <tr>
+   <td>QC-</td>
+   <td>Qualcomm 参考编号</td>
+  </tr>
+  <tr>
+   <td>M-</td>
+   <td>MediaTek 参考编号</td>
+  </tr>
+  <tr>
+   <td>N-</td>
+   <td>NVIDIA 参考编号</td>
+  </tr>
+  <tr>
+   <td>B-</td>
+   <td>Broadcom 参考编号</td>
+  </tr>
+</tbody></table>
+
+<p id="asterisk"><strong>5.“参考信息”列中的“Android Bug ID”旁边的 * 表示什么意思?<em></em></strong></p>
+
+<p>如果“参考信息”列的“Android Bug ID”旁边标有 *,则表示相应问题未公开发布。<em></em><a href="//developers.google.com/android/nexus/drivers">Google Developers 网站</a>上提供的 Nexus 设备的最新二进制驱动程序中通常包含针对此问题的更新。</p>
+
+<h2 id="versions">版本</h2>
+<table>
+  <colgroup><col width="25%" />
+  <col width="25%" />
+  <col width="50%" />
+  </colgroup><tbody><tr>
+   <th>版本</th>
+   <th>日期</th>
+   <th>备注</th>
+  </tr>
+  <tr>
+   <td>1.0</td>
+   <td>2017 年 7 月 5 日</td>
+   <td>发布了本公告。</td>
+  </tr>
+  <tr>
+   <td>1.1</td>
+   <td>2017 年 7 月 6 日</td>
+   <td>修订了本公告,添加了 AOSP 链接。</td>
+  </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file
diff --git a/zh-tw/security/bulletin/2017-07-01.html b/zh-tw/security/bulletin/2017-07-01.html
new file mode 100644
index 0000000..188958e
--- /dev/null
+++ b/zh-tw/security/bulletin/2017-07-01.html
@@ -0,0 +1,1628 @@
+<html devsite><head>
+    <title>Android 安全性公告 — 2017 年 7 月</title>
+    <meta name="project_path" value="/_project.yaml"/>
+    <meta name="book_path" value="/_book.yaml"/>
+  </head>
+  <body>
+  <!--
+      Copyright 2017 The Android Open Source Project
+
+      Licensed under the Apache License, Version 2.0 (the "License");
+      you may not use this file except in compliance with the License.
+      You may obtain a copy of the License at
+
+          //www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+<p><em>2017 年 7 月 5 日發佈 | 2017 年 7 月 6 日更新</em></p>
+
+<p>Android 安全性公告羅列了會對 Android 裝置造成影響的安全性漏洞,並說明各項相關細節。2017 年 7 月 5 日之後的安全修補等級已解決了這些問題。請參閱 <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 與 Nexus 更新時間表</a>,瞭解如何查看裝置的安全修補等級。</p>
+
+<p>我們的合作夥伴在至少一個月之前已收到公告中所述問題的相關通知。這些問題的原始碼修補程式已發佈到 Android 開放原始碼計劃 (AOSP) 存放區中,且公告中亦提供相關連結。此外,本公告也提供 AOSP 以外的修補程式連結。</p>
+
+<p>在這些問題中,最嚴重的就是媒體架構中「最高」等級的安全性漏洞。遠端攻擊者可利用這類漏洞,在獲得授權的程序環境內透過特製檔案執行任何指令。<a href="/security/overview/updates-resources.html#severity">嚴重程度評定標準</a>是假設平台與服務的因應防護措施基於開發作業的需求而被關閉,或是遭到有心人士破解,然後推算當有人惡意運用漏洞時,使用者的裝置會受到多大的影響,據此評定漏洞的嚴重程度。</p>
+
+<p>針對這些新發現的漏洞,我們目前尚未收到任何客戶回報相關的漏洞濫用案例。如果想進一步瞭解 <a href="/security/enhancements/index.html">Android 安全性平台防護措施</a>和 Google Play 安全防護如何加強 Android 平台的安全性,請參閱 <a href="#mitigations">Android 和 Google Play 安全防護機制所提供的因應措施</a>。</p>
+
+<p>我們建議所有客戶接受這些裝置更新。</p>
+
+<p class="note"><strong>注意:</strong><a href="#google-device-updates">Google 裝置更新</a>一節提供了和 Google 裝置的無線下載更新 (OTA) 與韌體映像檔有關的資訊。</p>
+
+<h2 id="announcements">公告</h2>
+<ul>
+  <li>本公告有兩個安全修補等級字串,讓 Android 合作夥伴能夠靈活運用,以快速修正某些發生在所有 Android 裝置上的類似漏洞。如需查詢其他相關資訊,請參閱<a href="#common-questions-and-answers">常見問題與解答</a>:<ul>
+       <li><strong>2017-07-01</strong>:部分安全修補等級字串。這個安全修補等級字串表示所有與 2017-07-01 相關的問題 (以及所有先前的安全修補等級字串) 都已獲得解決。</li>
+       <li><strong>2017-07-05</strong>:完整安全修補等級字串。這個安全修補等級字串表示所有與 2017-07-01 和 2017-07-05 相關的問題 (以及所有先前的安全修補等級字串) 都已獲得解決。</li>
+    </ul>
+  </li>
+</ul>
+
+<h2 id="mitigations">Android 和 Google Play 安全防護機制所提供的因應措施</h2>
+<p>本節概述 <a href="/security/enhancements/index.html">Android 安全性平台</a>和 <a href="//www.android.com/play-protect">Google Play 安全防護</a>等服務防護方案所提供的因應措施。這些措施可有效防範有心人士在 Android 系統上惡意運用安全性漏洞來達到特定目的。</p>
+<ul>
+  <li>Android 平台持續推出新的版本來強化安全性,因此有心人士越來越難在 Android 系統上找出漏洞加以利用。我們建議所有使用者盡可能更新至最新版的 Android。</li>
+  <li>Android 安全性小組透過 <a href="//www.android.com/play-protect">Google Play 安全防護</a>主動監控濫用情形;使用這些功能的目的是在發現<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">可能有害的應用程式</a>時警告使用者。Google Play 安全防護在搭載 <a href="//www.android.com/gms">Google 行動服務</a>的裝置上都會預設啟用,且對於要從 Google Play 以外來源安裝應用程式的使用者來說格外重要。
+  </li>
+</ul>
+
+<h2 id="2017-07-01-details">2017-07-01 安全修補等級 — 資安漏洞詳情</h2>
+<p>下列各節針對 2017-07-01 安全修補等級適用的各項安全性漏洞提供了詳細資訊。資安漏洞是依照受它們影響的元件分門別類。包括問題說明和一份漏洞資訊表、相關參照、<a href="#common-questions-and-answers">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>,以及更新的 AOSP 版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 AOSP 變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+
+<h3 id="runtime">執行階段</h3>
+<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製檔案在未獲授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-3544</td>
+   <td><a href="https://android.googlesource.com/platform/libcore/+/c5dd90d62590425f04a261e0f6c927acca147f88">
+       A-35784677</a></td>
+   <td>RCE</td>
+   <td>中</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="framework">架構</h3>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式得以利用特製檔案在使用該程式庫的應用程式環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0664</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/base/+/59773dc2f213c3e645c7e04881afa0a8e6ffccca">
+       A-36491278</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/75edf04bf18d37df28fb58e1d75331ed4bcae230">
+       A-36991414</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5fc2df253c089b53b3e235a3f237f96a98b53977">
+       A-37285689</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/native/+/5ac63e4547feaa7cb51ac81896250f47f367ffba">
+       A-37478824</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0668</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b3e3325d23289a94e66d8ce36a53a7ccf7b52c6d">
+       A-22011579</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0669</td>
+   <td><a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/7b7ef84234cd3daea0e22025b908b0041885736c">
+       A-34114752</a></td>
+   <td>ID</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0670</td>
+   <td><a href="https://android.googlesource.com/platform/bionic/+/e102faee8b2f87c28616e7f5453f9a11eea9b122">
+       A-36104177</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="libraries">程式庫</h3>
+<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製檔案在使用該程式庫的應用程式環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0671</td>
+   <td>A-34514762<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>4.4.4</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-2109</td>
+   <td><a href="https://android.googlesource.com/platform/external/boringssl/+/ccb2efe8d3fccb4321e85048d67c8528e03d4652">
+       A-35443725</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0672</td>
+   <td><a href="https://android.googlesource.com/platform/external/skia/+/c4087ff5486d36a690c681affb668164ec0dd697">
+       A-34778578</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="media-framework">媒體架構</h3>
+<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製檔案在獲得授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0540</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/a92b39ff0c47d488b81fecd62ba85e48d386aa68">
+       A-33966031</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0673</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/381ccb2b7f2ba42490bafab6aa7a63a8212b396f">
+       A-33974623</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0674</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/1603112cccbab3dff66a7eb1b82e858c1749f34b">
+       A-34231163</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0675</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/726108468dcfdabb833b8d55333de53cf6350aaa">
+       A-34779227</a>
+      [<a href="https://android.googlesource.com/platform/external/libhevc/+/4395fc2288e3f692765c73fce416e831fdaa5463">2</a>]</td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0676</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/8e415eabb5d2abd2f2bd40a675339d967f81521b">
+       A-34896431</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0677</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/b8fee6a6d0a91fb5ddca8f54b0c891e25c1b65ae">
+       A-36035074</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/64bc0b8c0c495c487604d483aa57978db7f634be">
+       A-36576151</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0679</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/91cb6b1745f3e9d341cf6decc2b916cb1e4eea77">
+       A-36996978</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0680</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989df73b34a7a698731cab3ee1e4a831a862fbe1">
+       A-37008096</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0681</td>
+   <td><a href="https://android.googlesource.com/platform/external/tremolo/+/822af05a1364d8dc6189dce5380a2703214dd799">
+       A-37208566</a></td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0682</td>
+   <td>A-36588422<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0683</td>
+   <td>A-36591008<a href="#asterisk">*</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0684</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c7c9271740c29c02e7926265ed53a44b8113dbfb">
+       A-35421151</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0685</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/680b75dabb90c8c2e22886826554ad1bc99b36f1">
+       A-34203195</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0686</td>
+   <td><a href="https://android.googlesource.com/platform/external/libmpeg2/+/b8d7e85c10cc22e1a5d81ec3d8a2e5bdd6102852">
+       A-34231231</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0688</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/62c07468bc26d1f9487c5298bb2a2f3740db13b1">
+       A-35584425</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0689</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/2210ff5600d3f965352a3074adff8fedddcf347e">
+       A-36215950</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1f418f10f4319fc829360b7efee7fca4b3880867">
+       A-36592202</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691</td>
+   <td><a href="https://android.googlesource.com/platform/external/dng_sdk/+/c70264282305351abbec9b967333db4d896583b9">
+       A-36724453</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/6db482687caf12ea7d2d07d655b17413bc937c73">
+       A-36725407</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0693</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/632ff754836d22415136cb3f97fe4622c862ce81">
+       A-36993291</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0694</td>
+   <td><a href="https://android.googlesource.com/platform/external/sonivox/+/47750a5f1b19695ac64d6f7aa6e7e0918d3c8977">
+       A-37093318</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695</td>
+   <td><a href="https://android.googlesource.com/platform/external/libhevc/+/cc5683451dd9be1491b54f215e9934d49f11cf70">
+       A-37094889</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0696</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/0d0ddb7cd7618ede5301803c526f066b95ce5089">
+       A-37207120</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/c5eaf3ae70d5ea3a7d390294002e4cf9859b3578">
+       A-37239013</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td><a href="https://android.googlesource.com/platform/frameworks/av/+/1618337cac09284fddb5bb14b5e0cfe2946d3431">
+       A-35467458</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0699</td>
+   <td><a href="https://android.googlesource.com/platform/external/libavc/+/989b2afc3ebb1bbb4c962e2aff1fd9b3149f83f1">
+       A-36490809</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+<h3 id="system-ui">系統使用者介面</h3>
+<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製檔案在獲得授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>更新的 AOSP 版本</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0700</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/38889ebd9b9c682bd1b64fd251ecd69b504a6155">
+       A-35639138</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0701</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/85e94f5b67c1beb9402c4de82bd481a5202470de">
+       A-36385715</a>
+      [<a href="https://android.googlesource.com/platform/external/libgdx/+/bd4c825d8fc5dd48f5c602e673ae210909b31fd0">2</a>]</td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0702</td>
+   <td><a href="https://android.googlesource.com/platform/external/libgdx/+/5d46e9a1784c02f347af107a978fe9fbd7af7fb2">
+       A-36621442</a></td>
+   <td>RCE</td>
+   <td>高</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/4af8f912aa1ee714638d0f9694d6f856bc8166f3">
+       A-33123882</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>4.4.4、5.0.2、5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704</td>
+   <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/179f0e9512100b0a403aab8b2b4cf5510bb20bee">
+       A-33059280</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>7.1.1、7.1.2</td>
+  </tr>
+</tbody></table>
+
+<h2 id="2017-07-05-details">2017-07-05 安全修補等級 — 資安漏洞詳情</h2>
+<p>下列各節針對 2017-07-05 安全修補等級適用的各項安全性漏洞提供了詳細資訊,資安漏洞是依照受它們影響的元件分門別類,並且包含一些詳細資料,例如 CVE、相關參考資料、<a href="#common-questions-and-answers">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>、元件 (在適用情況下),和更新的 AOSP 版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 AOSP 變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+
+<h3 id="broadcom-components">Broadcom 元件</h3>
+<p>本節中最嚴重的漏洞可能會讓鄰近的攻擊者在核心環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>A-38041027<a href="#asterisk">*</a><br />
+       B-RB#123023</td>
+   <td>RCE</td>
+   <td>最高</td>
+   <td>Wi-Fi 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705</td>
+   <td>A-34973477<a href="#asterisk">*</a><br />
+       B-RB#119898</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>A-35195787<a href="#asterisk">*</a><br />
+       B-RB#120532</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi 驅動程式</td>
+  </tr>
+</tbody></table>
+<h3 id="htc-components">HTC 元件</h3>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0707</td>
+   <td>A-36088467<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>LED 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>A-35384879<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>音效驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0709</td>
+   <td>A-35468048<a href="#asterisk">*</a></td>
+   <td>ID</td>
+   <td>低</td>
+   <td>感應器中樞驅動程式</td>
+  </tr>
+</tbody></table>
+<h3 id="kernel-components">核心元件</h3>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-6074</td>
+   <td>A-35784697<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/stable/linux-stable.git/commit/?id=5edabca9d4cff7f1f2b68f0bac55ef99d9798ba4">上游程式庫核心</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>網路子系統</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-5970</td>
+   <td>A-35805460<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34b2cef20f19c87999fff3da4071e66937db9644">上游程式庫核心</a></td>
+   <td>DoS</td>
+   <td>高</td>
+   <td>網路子系統</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-5707</td>
+   <td>A-35841297<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=451a2886b6bf90e2fb378f7c46c655450fb96e81">上游程式庫核心</a>
+[<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fdc81f45e9f57858da6351836507fbcf1b7583ee">2</a>]</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SCSI 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0710</td>
+   <td>A-34951864<a href="#asterisk">*</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>TCB</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-7308</td>
+   <td>A-36725304<br />
+<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b6867c2ce76c596676bec7d2d525af525fdc6e2">上游程式庫核心</a> [<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8f8d28e4d6d815a391285e121c3a53a0b6cb9e7b">2</a>] [<a href="//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bcc5364bdcfe131e6379363f089e7b4108d35b70">3</a>]</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>網路驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9731</td>
+   <td>A-35841292<br />
+<a href="//git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0e5cc9a40ada6046e6bc3bdfcd0c0d7e4b706b14">上游程式庫核心</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>檔案系統</td>
+  </tr>
+</tbody></table>
+<h3 id="mediatek-components">MediaTek 元件</h3>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td> CVE-2017-0711</td>
+   <td>A-36099953<a href="#asterisk">*</a><br />
+       M-ALPS03206781</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>網路驅動程式</td>
+  </tr>
+</tbody></table>
+<h3 id="nvidia-components">NVIDIA 元件</h3>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0340</td>
+   <td>A-33968204<a href="#asterisk">*</a><br />
+       N-CVE-2017-0340</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>Libnvparser</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0326</td>
+   <td>A-33718700<a href="#asterisk">*</a><br />
+       N-CVE-2017-0326</td>
+   <td>ID</td>
+   <td>中</td>
+   <td>視訊驅動程式</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-components">Qualcomm 元件</h3>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-8255</td>
+   <td>A-36251983<br />
+<a href="//source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=cd42366a73b38c8867b66472f07d67a6eccde599">QC-CR#985205</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>系統啟動載入程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10389</td>
+   <td>A-34500449<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=031c27b4b8414bc93a14e773503d9bfc0fc890d2">QC-CR#1009145</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>系統啟動載入程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8253</td>
+   <td>A-35400552<br />
+<a href="//www.codeaurora.org/gitweb/quic/la/?p=kernel/msm-4.4.git;a=commit;h=a5f07894058c4198f61e533d727b343c5be879b0">QC-CR#1086764</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>相機驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8262</td>
+   <td>A-32938443<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-4.4/commit/?id=9ef4ee8e3dfaf4e796bda781826851deebbd89bd">QC-CR#2029113</a></td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>GPU 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8263</td>
+   <td>A-34126808<a href="#asterisk">*</a><br />
+       QC-CR#1107034</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>匿名共用記憶體子系統</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8267</td>
+   <td>A-34173755<a href="#asterisk">*</a><br />
+       QC-CR#2001129</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>匿名共用記憶體子系統</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8273</td>
+   <td>A-35400056<br />
+<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=dfe6691ba301c769179cabab12d74d4e952462b9">QC-CR#1094372</a>
+[<a href="//source.codeaurora.org/quic/la//kernel/lk/commit/?id=30d94c33dec0ffedc875d7853635a9773921320a">2</a>]</td>
+   <td>EoP</td>
+   <td>高</td>
+   <td>系統啟動載入程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5863</td>
+   <td>A-36251182<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=daf0acd54a6a80de227baef9a06285e4aa5f8c93">QC-CR#1102936</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>USB HID 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8243</td>
+   <td>A-34112490<a href="#asterisk">*</a><br />
+       QC-CR#2001803</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SoC 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8246</td>
+   <td>A-37275839<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=30baaec8afb05abf9f794c631ad944838d498ab8">QC-CR#2008031</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>音效驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8256</td>
+   <td>A-37286701<br />
+<a href="//source.codeaurora.org/quic/la//platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=75e1e00d6b3cd4cb89fd5314a60c333aa0b03230">QC-CR#1104565</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8257</td>
+   <td>A-37282763<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=0f19fbd00c6679bbc524f7a6d0fc3d54cfd1c9ae">QC-CR#2003129</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>視訊驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8259</td>
+   <td>A-34359487<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=68020103af00280393da10039b968c95d68e526c">QC-CR#2009016</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>SoC 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>A-34624155<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=8f236391e5187c05f7f4b937856944be0af7aaa5">QC-CR#2008469</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相機驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8261</td>
+   <td>A-35139833<a href="#asterisk">*</a><br />
+       QC-CR#2013631</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相機驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264</td>
+   <td>A-33299365<a href="#asterisk">*</a><br />
+       QC-CR#1107702</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相機驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>A-32341313<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.10/commit/?id=193813a21453ccc7fb6b04bedf881a6feaaa015f">QC-CR#1109755</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>視訊驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266</td>
+   <td>A-33863407<br />
+<a href="//source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=42627c94cf8c189332a6f5bfdd465ea662777911">QC-CR#1110924</a></td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>視訊驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268</td>
+   <td>A-34620535<a href="#asterisk">*</a><br />
+       QC-CR#2002207</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>相機驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8270</td>
+   <td>A-35468665<a href="#asterisk">*</a><br />
+       QC-CR#2021363</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>Wi-Fi 驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8271</td>
+   <td>A-35950388<a href="#asterisk">*</a><br />
+       QC-CR#2028681</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>視訊驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8272</td>
+   <td>A-35950805<a href="#asterisk">*</a><br />
+       QC-CR#2028702</td>
+   <td>EoP</td>
+   <td>中</td>
+   <td>視訊驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8254</td>
+   <td>A-36252027<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=70afce1d9be745005c48fd565c01ce452a565e7e">QC-CR#832914</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>音效驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8258</td>
+   <td>A-37279737<br />
+<a href="//source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=31e2a2f0f2f3615cefd4400c707709bbc3e26170">QC-CR#2005647</a></td>
+   <td>ID</td>
+   <td>中</td>
+   <td>相機驅動程式</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269</td>
+   <td>A-33967002<a href="#asterisk">*</a><br />
+       QC-CR#2013145</td>
+   <td>ID</td>
+   <td>中</td>
+   <td>IPA 驅動程式</td>
+  </tr>
+</tbody></table>
+<h3 id="qualcomm-closed-source-components">Qualcomm 封閉原始碼元件</h3>
+<p>以下列出會影響 Qualcomm 元件的安全性漏洞,詳情請參考 2014 至 2016 年之間發佈的 Qualcomm AMSS 安全性公告。我們在這個 Android 安全性公告中列出這些漏洞,方便使用者確認漏洞修正程式及其相對應的 Android 安全修補等級。Qualcomm 公司親自提供了這些漏洞的修正程式。</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="19%" />
+  <col width="9%" />
+  <col width="14%" />
+  <col width="39%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>參考資料</th>
+   <th>類型</th>
+   <th>嚴重程度</th>
+   <th>元件</th>
+  </tr>
+  <tr>
+   <td>CVE-2014-9411</td>
+   <td>A-37473054<a href="#asterisk">*</a><br />
+       QC-CR#532956</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9968</td>
+   <td>A-37304413<a href="#asterisk">*</a><br />
+       QC-CR#642084</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9973</td>
+   <td>A-37470982<a href="#asterisk">*</a><br />
+       QC-CR#646919</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9974</td>
+   <td>A-37471979<a href="#asterisk">*</a><br />
+       QC-CR#654072</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9975</td>
+   <td>A-37471230<a href="#asterisk">*</a><br />
+       QC-CR#700125</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9977</td>
+   <td>A-37471087<a href="#asterisk">*</a><br />
+       QC-CR#703002</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9978</td>
+   <td>A-37468982<a href="#asterisk">*</a><br />
+       QC-CR#709939</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9979</td>
+   <td>A-37471088<a href="#asterisk">*</a><br />
+       QC-CR#717304</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2014-9980</td>
+   <td>A-37471029<a href="#asterisk">*</a><br />
+       QC-CR#709766</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-0575</td>
+   <td>A-37296999<a href="#asterisk">*</a><br />
+       QC-CR#715815</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8592</td>
+   <td>A-37470090<a href="#asterisk">*</a><br />
+       QC-CR#775396</td>
+   <td>無</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8595</td>
+   <td>A-37472411<a href="#asterisk">*</a><br />
+       QC-CR#790151</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-8596</td>
+   <td>A-37472806<a href="#asterisk">*</a><br />
+       QC-CR#802005</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9034</td>
+   <td>A-37305706<a href="#asterisk">*</a><br />
+       QC-CR#614512</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9035</td>
+   <td>A-37303626<a href="#asterisk">*</a><br />
+       QC-CR#750231</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9036</td>
+   <td>A-37303519<a href="#asterisk">*</a><br />
+       QC-CR#751831</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9037</td>
+   <td>A-37304366<a href="#asterisk">*</a><br />
+       QC-CR#753315</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9038</td>
+   <td>A-37303027<a href="#asterisk">*</a><br />
+       QC-CR#758328</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9039</td>
+   <td>A-37302628<a href="#asterisk">*</a><br />
+       QC-CR#760282</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9040</td>
+   <td>A-37303625<a href="#asterisk">*</a><br />
+       QC-CR#761216</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9041</td>
+   <td>A-37303518<a href="#asterisk">*</a><br />
+       QC-CR#762126</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9042</td>
+   <td>A-37301248<a href="#asterisk">*</a><br />
+       QC-CR#762214</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9043</td>
+   <td>A-37305954<a href="#asterisk">*</a><br />
+       QC-CR#762954</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9044</td>
+   <td>A-37303520<a href="#asterisk">*</a><br />
+       QC-CR#764858</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9045</td>
+   <td>A-37302136<a href="#asterisk">*</a><br />
+       QC-CR#766189</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9046</td>
+   <td>A-37301486<a href="#asterisk">*</a><br />
+       QC-CR#767335</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9047</td>
+   <td>A-37304367<a href="#asterisk">*</a><br />
+       QC-CR#779285</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9048</td>
+   <td>A-37305707<a href="#asterisk">*</a><br />
+       QC-CR#795960</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9049</td>
+   <td>A-37301488<a href="#asterisk">*</a><br />
+       QC-CR#421589, QC-CR#817165</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9050</td>
+   <td>A-37302137<a href="#asterisk">*</a><br />
+       QC-CR#830102</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9051</td>
+   <td>A-37300737<a href="#asterisk">*</a><br />
+       QC-CR#837317</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9052</td>
+   <td>A-37304217<a href="#asterisk">*</a><br />
+       QC-CR#840483</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9053</td>
+   <td>A-37301249<a href="#asterisk">*</a><br />
+       QC-CR#843808</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9054</td>
+   <td>A-37303177<a href="#asterisk">*</a><br />
+       QC-CR#856077</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9055</td>
+   <td>A-37472412<a href="#asterisk">*</a><br />
+       QC-CR#806464</td>
+   <td>無</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9060</td>
+   <td>A-37472807<a href="#asterisk">*</a><br />
+       QC-CR#817343</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9061</td>
+   <td>A-37470436<a href="#asterisk">*</a><br />
+       QC-CR#824195</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9062</td>
+   <td>A-37472808<a href="#asterisk">*</a><br />
+       QC-CR#802039</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9067</td>
+   <td>A-37474000<a href="#asterisk">*</a><br />
+       QC-CR#848926</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9068</td>
+   <td>A-37470144<a href="#asterisk">*</a><br />
+       QC-CR#851114</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9069</td>
+   <td>A-37470777<a href="#asterisk">*</a><br />
+       QC-CR#854496</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9070</td>
+   <td>A-37474001<a href="#asterisk">*</a><br />
+       QC-CR#877102</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9071</td>
+   <td>A-37471819<a href="#asterisk">*</a><br />
+       QC-CR#877276</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9072</td>
+   <td>A-37474002<a href="#asterisk">*</a><br />
+       QC-CR#877361</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2015-9073</td>
+   <td>A-37473407<a href="#asterisk">*</a><br />
+       QC-CR#878073</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10343</td>
+   <td>A-32580186<a href="#asterisk">*</a><br />
+       QC-CR#972213</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10344</td>
+   <td>A-32583954<a href="#asterisk">*</a><br />
+       QC-CR#1022360</td>
+   <td>無</td>
+   <td>高</td>
+   <td>數據機</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10346</td>
+   <td>A-37473408<a href="#asterisk">*</a><br />
+       QC-CR#896584</td>
+   <td>無</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10347</td>
+   <td>A-37471089<a href="#asterisk">*</a><br />
+       QC-CR#899671</td>
+   <td>無</td>
+   <td>高</td>
+   <td>核心</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10382</td>
+   <td>A-28823584<a href="#asterisk">*</a><br />
+       QC-CR#944014</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10383</td>
+   <td>A-28822389<a href="#asterisk">*</a><br />
+       QC-CR#960624</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10388</td>
+   <td>A-32580294<a href="#asterisk">*</a><br />
+       QC-CR#992749</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-10391</td>
+   <td>A-32583804<a href="#asterisk">*</a><br />
+       QC-CR#970283</td>
+   <td>無</td>
+   <td>高</td>
+   <td>WConnect</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5871</td>
+   <td>A-37473055<a href="#asterisk">*</a><br />
+       QC-CR#883013</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+  <tr>
+   <td>CVE-2016-5872</td>
+   <td>A-37472809<a href="#asterisk">*</a><br />
+       QC-CR#886220</td>
+   <td>無</td>
+   <td>高</td>
+   <td>安全系統群組</td>
+  </tr>
+</tbody></table>
+<h2 id="google-device-updates">Google 裝置更新</h2>
+<p>此表格包含最新無線下載更新 (OTA) 中的安全修補等級和 Google 裝置的韌體映像檔。您可以前往 <a href="//developers.google.com/android/nexus/images">Google Developer 網站</a>取得 Google 裝置韌體映像檔。</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>Google 裝置</th>
+   <th>安全修補等級</th>
+  </tr>
+  <tr>
+   <td>Pixel/Pixel XL</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 5X</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 6</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 6P</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus 9</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Nexus Player</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+  <tr>
+   <td>Pixel C</td>
+   <td>2017 年 7 月 5 日</td>
+  </tr>
+</tbody></table>
+<h2 id="acknowledgements">特別銘謝</h2>
+<p>感謝以下研究人員做出的貢獻:</p>
+
+<table>
+  <colgroup><col width="17%" />
+  <col width="83%" />
+  </colgroup><tbody><tr>
+   <th>CVE</th>
+   <th>研究人員</th>
+  </tr>
+  <tr>
+   <td>CVE-2017-0711</td>
+   <td>阿里巴巴行動安全小組成員 Chengming Yang、Baozeng Ding 和 Yang Song</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0706</td>
+   <td>騰訊玄武實驗室的 Daxing Guo (<a href="//twitter.com/freener0">@freener0</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8260</td>
+   <td>Derrek (<a href="//twitter.com/derrekr6">@derrekr6</a>) 與 Scott Bauer</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8265</td>
+   <td>騰訊 KeenLab (<a href="//twitter.com/keen_lab?lang=en">@keen_lab</a>) 的 Di Shen (<a href="//twitter.com/returnsme?lang=en">@returnsme</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0703</td>
+   <td><a href="//fb.me/dzimka">Dzmitry Lukyanenka</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0692、CVE-2017-0694</td>
+   <td>奇虎 360 科技有限公司 Alpha 小組成員 Elphet 和 Guang Gong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8266、CVE-2017-8243、CVE-2017-8270</td>
+   <td>奇虎 360 科技有限公司 IceSword 實驗室的 Gengjia Chen (<a href="//twitter.com/chengjia4574">@chengjia4574</a>) 和 <a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0665、CVE-2017-0681</td>
+   <td><a href="//c0reteam.org">C0RE 小組</a>成員 <a href="mailto:[email protected]">Hanxiang Wen</a>、Mingjian Zhou (<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>) 和 Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8268、CVE-2017-8261</td>
+   <td>奇虎 360 IceSword 實驗室的 Jianqiang Zhao (<a href="//twitter.com/jianqiangzhao">@jianqiangzhao</a>) 和 <a href="//weibo.com/jfpan">pjf</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0698</td>
+   <td>Census Consulting Inc. 的 Joey Brand</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0666、CVE-2017-0684</td>
+   <td><a href="//c0reteam.org">C0RE 小組</a>成員 Mingjian Zhou (<a href="//twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)、<a href="mailto:[email protected]">Chi Zhang</a> 和 Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0697、CVE-2017-0670</td>
+   <td><a href="mailto:[email protected]">Niky1235</a> (<a href="//twitter.com/jiych_guru">@jiych_guru</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-9417</td>
+   <td>Exodus Intelligence 的 Nitay Artenstein</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0705、CVE-2017-8259</td>
+   <td><a href="//twitter.com/ScottyBauer1">Scott Bauer</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0667</td>
+   <td>CSS Inc. 的 Timothy Becker</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0642、CVE-2017-0682、CVE-2017-0683、CVE-2017-0676、CVE-2017-0696、CVE-2017-0675、CVE-2017-0701、CVE-2017-0702、CVE-2017-0699</td>
+   <td>Vasily Vasiliev</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0695、CVE-2017-0689、CVE-2017-0540、CVE-2017-0680、CVE-2017-0679、CVE-2017-0685、CVE-2017-0686、CVE-2017-0693、CVE-2017-0674、CVE-2017-0677</td>
+   <td><a href="//www.trendmicro.com">趨勢科技</a><a href="//blog.trendmicro.com/trendlabs-security-intelligence/category/mobile/">行動威脅研究小組</a>成員 V.E.O (<a href="//twitter.com/vysea">@VYSEa</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0708</td>
+   <td>騰訊安全平台部門成員 Xiling Gong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0690</td>
+   <td>奇虎 360 Qex 小組的 Yangkang (<a href="//twitter.com/dnpushme">@dnpushme</a>) 和 Liyadong</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8269、CVE-2017-8271、CVE-2017-8272、CVE-2017-8267</td>
+   <td>奇虎 360 科技有限公司 IceSword 實驗室的 Yonggang Guo (<a href="//twitter.com/guoygang">@guoygang</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-8264、CVE-2017-0326、CVE-2017-0709</td>
+   <td><a href="//c0reteam.org">C0RE 小組</a>成員 Yuan-Tsung Lo (<a href="mailto:[email protected]">[email protected]</a>) 和 Xuxian Jiang</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0704、CVE-2017-0669</td>
+   <td>騰訊安全平台部門成員 Yuxiang Li (<a href="//twitter.com/xbalien29">@Xbalien29</a>)</td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0678</td>
+   <td>奇虎 360 成都安全性應變中心成員 <a href="//weibo.com/ele7enxxh">Zinuo Han</a></td>
+  </tr>
+  <tr>
+   <td>CVE-2017-0691、CVE-2017-0700</td>
+   <td>奇虎 360 成都安全性應變中心成員 <a href="//weibo.com/ele7enxxh">Zinuo Han</a> 以及 <a href="//www.pwnzen.com/">Pangu Team</a> 的 Ao Wang (<a href="//twitter.com/ArayzSegment">@ArayzSegment</a>)</td>
+  </tr>
+</tbody></table>
+<h2 id="common-questions-and-answers">常見問題與解答</h2>
+<p>如果您在閱讀這篇公告後有任何疑問,可參考本節的常見問答。</p>
+
+<p><strong>1. 如何判斷我目前的裝置軟體版本是否已修正這些問題?
+</strong></p>
+
+<p>要瞭解如何查看裝置的安全修補等級,請詳讀 <a href="//support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 和 Nexus 更新時間表</a>中的操作說明。</p>
+<ul>
+  <li>2017 年 7 月 1 日之後的安全修補等級已解決了所有與 2017-07-01 安全修補等級相關的問題。</li>
+  <li>2017 年 7 月 5 日之後的安全修補等級完全解決了與 2017-07-05 安全修補等級及所有先前修補等級相關的問題。</li>
+</ul>
+<p>提供這些更新的裝置製造商應將修補程式字串等級設定為:</p>
+<ul>
+  <li>[ro.build.version.security_patch]:[2017-07-01]</li>
+  <li>[ro.build.version.security_patch]:[2017-07-05]</li>
+</ul>
+<p><strong>2. 為什麼這篇公告有兩種安全修補等級?</strong></p>
+
+<p>本公告有兩種安全修補等級,讓 Android 合作夥伴能夠靈活運用,以快速修正某些發生在所有 Android 裝置上的類似漏洞。我們建議 Android 合作夥伴修正本公告所列的所有問題,並使用最新的安全修補等級。</p>
+<ul>
+  <li>使用 2017 年 7 月 1 日安全修補等級的裝置必須納入所有與該安全修補等級相關的問題,以及在之前安全性公告中回報的所有問題適用的修正程式。</li>
+  <li>如果裝置是使用 2017 年 7 月 5 日之後的安全修補等級,就必須加入本安全性公告 (以及之前公告) 中的所有適用修補程式。</li>
+</ul>
+<p>我們建議合作夥伴將所要解決的所有問題適用修補程式彙整在單一更新中。</p>
+
+<p><strong>3. 「類型」<em></em>欄中的項目代表什麼意義?</strong></p>
+
+<p>資安漏洞詳情表格中「類型」<em></em>欄中的項目代表的是安全性漏洞的類別。</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>縮寫詞</th>
+   <th>定義</th>
+  </tr>
+  <tr>
+   <td>RCE</td>
+   <td>遠端程式碼執行</td>
+  </tr>
+  <tr>
+   <td>EoP</td>
+   <td>權限升級</td>
+  </tr>
+  <tr>
+   <td>ID</td>
+   <td>資訊外洩</td>
+  </tr>
+  <tr>
+   <td>DoS</td>
+   <td>拒絕服務</td>
+  </tr>
+  <tr>
+   <td>無</td>
+   <td>未分類</td>
+  </tr>
+</tbody></table>
+
+<p><strong>4. 「參考資料」<em></em>欄中的項目代表什麼意義?</strong></p>
+
+<p>資安漏洞詳情表格中「參考資料」<em></em>欄底下的項目可能會包含一個前置字串,用以表示該參考資料值所屬的公司。</p>
+
+<table>
+  <colgroup><col width="25%" />
+  <col width="75%" />
+  </colgroup><tbody><tr>
+   <th>前置字串</th>
+   <th>參考資料</th>
+  </tr>
+  <tr>
+   <td>A-</td>
+   <td>Android 錯誤 ID</td>
+  </tr>
+  <tr>
+   <td>QC-</td>
+   <td>Qualcomm 參考編號</td>
+  </tr>
+  <tr>
+   <td>M-</td>
+   <td>MediaTek 參考編號</td>
+  </tr>
+  <tr>
+   <td>N-</td>
+   <td>NVIDIA 參考編號</td>
+  </tr>
+  <tr>
+   <td>B-</td>
+   <td>Broadcom 參考編號</td>
+  </tr>
+</tbody></table>
+
+<p id="asterisk"><strong>5. 「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong></p>
+
+<p>在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="//developers.google.com/android/nexus/drivers">Google Developers 網站</a>下載這些驅動程式。</p>
+
+<h2 id="versions">版本</h2>
+<table>
+  <colgroup><col width="25%" />
+  <col width="25%" />
+  <col width="50%" />
+  </colgroup><tbody><tr>
+   <th>版本</th>
+   <th>日期</th>
+   <th>附註</th>
+  </tr>
+  <tr>
+   <td>1.0</td>
+   <td>2017 年 7 月 5 日</td>
+   <td>發佈公告。</td>
+  </tr>
+  <tr>
+   <td>1.1</td>
+   <td>2017 年 7 月 6 日</td>
+   <td>修訂公告,加入 AOSP 連結。</td>
+  </tr>
+</tbody></table>
+
+</body></html>
\ No newline at end of file