aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilly Lamberta <blamb@google.com>2017-10-23 21:14:51 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2017-10-23 21:14:51 +0000
commit3587851127f0703f29ac921d44c8696315a693b0 (patch)
treed7e21f8d551fa33c6bc03dc13626a57040beed2d
parent261f6b938844b662d4ffc26715d7b063a538197f (diff)
parent90a3e2f864a0a06f3ed7827e32fd4288bb44f617 (diff)
downloadsource.android.com-3587851127f0703f29ac921d44c8696315a693b0.tar.gz
Merge "Docs: Changes to source.android.com"
-rw-r--r--en/compatibility/cts/downloads.html18
-rw-r--r--en/devices/architecture/hal-types.html33
-rw-r--r--en/devices/architecture/kernel/modular-kernels.html2
-rw-r--r--en/devices/tech/dalvik/improvements.html25
-rw-r--r--en/devices/tech/debug/sanitizers.html2
-rw-r--r--en/devices/tech/perf/low-ram.html34
-rw-r--r--en/security/bulletin/2017-04-01.html2
-rw-r--r--en/security/bulletin/2017-06-01.html3
-rw-r--r--en/security/bulletin/2017-09-01.html3
-rw-r--r--en/security/bulletin/2017-10-01.html4
-rw-r--r--en/security/selinux/device-policy.html4
-rw-r--r--en/source/devices.html4
-rw-r--r--en/source/faqs.html9
-rw-r--r--en/source/requirements.html2
-rw-r--r--ja/security/bulletin/2017-05-01.html110
-rw-r--r--ko/security/bulletin/2017-05-01.html105
-rw-r--r--ru/security/bulletin/2017-05-01.html98
-rw-r--r--zh-cn/compatibility/cdd.html6
-rw-r--r--zh-cn/compatibility/cts/downloads.html55
-rw-r--r--zh-cn/compatibility/cts/interpret.html2
-rw-r--r--zh-cn/compatibility/cts/run.html2
-rw-r--r--zh-cn/compatibility/cts/setup.html21
-rw-r--r--zh-cn/compatibility/cts/usb-audio.html329
-rw-r--r--zh-cn/compatibility/cts/verifier.html207
-rw-r--r--zh-cn/compatibility/index.html7
-rw-r--r--zh-cn/compatibility/overview.html2
-rw-r--r--zh-cn/devices/architecture/configstore/add-class-item.html179
-rw-r--r--zh-cn/devices/architecture/configstore/client.html132
-rw-r--r--zh-cn/devices/architecture/configstore/index.html56
-rw-r--r--zh-cn/devices/architecture/configstore/interface.html134
-rw-r--r--zh-cn/devices/architecture/configstore/service.html104
-rw-r--r--zh-cn/devices/architecture/hal-types.html105
-rw-r--r--zh-cn/devices/architecture/hidl-java/constants.html73
-rw-r--r--zh-cn/devices/architecture/hidl-java/index.html141
-rw-r--r--zh-cn/devices/architecture/hidl-java/interfaces.html128
-rw-r--r--zh-cn/devices/architecture/hidl-java/types.html137
-rw-r--r--zh-cn/devices/architecture/treble.html25
-rw-r--r--zh-cn/devices/tech/dalvik/jit-compiler.html326
-rw-r--r--zh-cn/security/bulletin/2017-05-01.html75
-rw-r--r--zh-cn/source/view-patches.html84
-rw-r--r--zh-tw/security/bulletin/2017-05-01.html128
41 files changed, 2169 insertions, 747 deletions
diff --git a/en/compatibility/cts/downloads.html b/en/compatibility/cts/downloads.html
index 231b7bb9..a9254de3 100644
--- a/en/compatibility/cts/downloads.html
+++ b/en/compatibility/cts/downloads.html
@@ -31,20 +31,20 @@ R&lt;number&gt; in the link name.</p>
<h2 id="android-80">Android 8.0</h2>
<p>Android 8.0 is the release of the development milestone code-named Oreo.
The source code for the following tests can be synced with the
-'android-cts-8.0_r1' tag in the open-source tree.</p>
+'android-cts-8.0_r2' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.0_r1-linux_x86-arm.zip">Android
-8.0 R1 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.0_r2-linux_x86-arm.zip">Android
+8.0 R2 Compatibility Test Suite (CTS) - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.0_r1-linux_x86-x86.zip">Android
-8.0 R1 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.0_r2-linux_x86-x86.zip">Android
+8.0 R2 Compatibility Test Suite (CTS) - x86</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r1-linux_x86-arm.zip">Android
-8.0 R1 CTS Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r2-linux_x86-arm.zip">Android
+8.0 R2 CTS Verifier - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r1-linux_x86-x86.zip">Android
-8.0 R1 CTS Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r2-linux_x86-x86.zip">Android
+8.0 R2 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-71">Android 7.1</h2>
diff --git a/en/devices/architecture/hal-types.html b/en/devices/architecture/hal-types.html
index 52cb869f..3df8d61c 100644
--- a/en/devices/architecture/hal-types.html
+++ b/en/devices/architecture/hal-types.html
@@ -21,19 +21,20 @@
limitations under the License.
-->
-<p>As part of the Android O rearchitecture of the lower layers of the Android OS
-to support better modularity, devices running Android O must support binderized
+<p>As part of the Android 8.0 rearchitecture of the lower layers of the Android OS
+to support better modularity, devices running Android 8.0 must support binderized
or passthrough HALs:</p>
<ul>
<li><strong>Binderized HALs</strong>. HALs expressed in HAL interface definition
-language (HIDL). These HALs replace both conventional and legacy HALs used in
-earlier versions of Android and can serve the HAL in binderized mode. All
-devices launching with Android O or later must support binderized HALs only.</li>
+language (HIDL). These HALs replace both conventional and legacy HALs used in earlier versions of
+Android. In a Binderized HAL, the Android framework and HALs communicate with each other using
+binder inter-process communication (IPC) calls. All devices launching with Android 8.0 or later must
+support binderized HALs only.</li>
<li><strong>Passthrough HALs</strong>. A HIDL-wrapped conventional or legacy
HAL. These HALs wrap existing HALs and can serve the HAL in binderized and
-same-process (passthrough) modes. Devices upgrading to Android O can use
+same-process (passthrough) modes. Devices upgrading to Android 8.0 can use
passthrough HALs.</li>
</ul>
@@ -49,7 +50,7 @@ passthrough HALs.</li>
</tr>
<tr>
-<td><em>Launch with Android O</em></td>
+<td><em>Launch with Android 8.0</em></td>
<td>HALs listed in <a href="#passthrough">Passthrough HALs</a> must be
passthrough.</td>
<td>All other HALs are binderized (including HALs that are vendor
@@ -57,7 +58,7 @@ extensions).</td>
</tr>
<tr>
-<td rowspan=2><em>Upgrade to Android O</em></td>
+<td rowspan=2><em>Upgrade to Android 8.0</em></td>
<td>HALs listed in <a href="#passthrough">Passthrough HALs</a> must be
passthrough.</td>
<td>HALs listed in <a href="#binderized">Binderized HALs</a> must be
@@ -78,19 +79,19 @@ devices regardless of whether they are launch devices or upgrade devices:</p>
<ul>
<li><code>android.hardware.biometrics.fingerprint@2.1</code>. Replaces
-<code>fingerprintd</code> which is no longer in Android O.</li>
-<li><code>android.hardware.configstore@1.0</code>. New in Android O.</li>
+<code>fingerprintd</code> which is no longer in Android 8.0.</li>
+<li><code>android.hardware.configstore@1.0</code>. New in Android 8.0.</li>
<li><code>android.hardware.dumpstate@1.0</code>. The original interface provided
by this HAL could not be shimmed and was changed. Because of this,
<code>dumpstate_board</code> must be re-implemented on a given device (this is
an optional HAL).</li>
<li><code>android.hardware.graphics.allocator@2.0</code>. Required to be
-binderized in Android O so file descriptors don't have to be shared between
+binderized in Android 8.0 so file descriptors don't have to be shared between
trusted and untrusted processes.</li>
<li><code>android.hardware.radio@1.0</code>. Replaces the interface provided by
<code>rild</code> which lives in its own process.</li>
-<li><code>android.hardware.usb@1.0</code>. New in Android O.</li>
-<li><code>android.hardware.wifi@1.0</code>. New in Android O, replaces the
+<li><code>android.hardware.usb@1.0</code>. New in Android 8.0.</li>
+<li><code>android.hardware.wifi@1.0</code>. New in Android 8.0, replaces the
legacy Wi-Fi HAL library that was loaded into <code>system_server</code>.</li>
<li><code>android.hardware.wifi.supplicant@1.0</code>. A HIDL interface over the
existing <code>wpa_supplicant</code> process.</li>
@@ -133,7 +134,7 @@ passthrough)</li>
<h2 id=legacy>Conventional &amp; legacy HALs</h2>
-<p>Conventional HALs (deprecated in Android O) are interfaces that conform to a
+<p>Conventional HALs (deprecated in Android 8.0) are interfaces that conform to a
specific named and versioned application binary interface (ABI). The bulk of
Android system interfaces
(<a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h">camera</a>,
@@ -142,10 +143,10 @@ Android system interfaces
etc.) are in the form of conventional HALs, which are defined under
<a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware">hardware/libhardware/include/hardware</a>.</p>
-<p>Legacy HALs (also deprecated in Android O) are interfaces that predate
+<p>Legacy HALs (also deprecated in Android 8.0) are interfaces that predate
conventional HALs. A few important subsystems (Wi-Fi, Radio Interface Layer, and
Bluetooth) are legacy HALs. While there's no uniform or standardized way to
-describe a legacy HAL, anything predating Android O that is not a conventional
+describe a legacy HAL, anything predating Android 8.0 that is not a conventional
HAL is a legacy HAL. Parts of some legacy HALs are contained in
<a href="https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master">libhardware_legacy</a>,
while other parts are interspersed throughout the codebase.</p>
diff --git a/en/devices/architecture/kernel/modular-kernels.html b/en/devices/architecture/kernel/modular-kernels.html
index dc36e8c8..5c4b54c3 100644
--- a/en/devices/architecture/kernel/modular-kernels.html
+++ b/en/devices/architecture/kernel/modular-kernels.html
@@ -573,7 +573,7 @@ subject to A/B.
<h2 id="device-tree-overlay-support-bootloader">Device tree overlay support
(Bootloader)</h2>
<p>
-<a href="https://lkml.org/lkml/2012/11/5/615">Device Tree Overlay</a> (DTO) was
+<a href="/devices/architecture/dto/">Device Tree Overlay</a> (DTO) was
designed to extend the existing
<a href="https://events.linuxfoundation.org/sites/events/files/slides/petazzoni-device-tree-dummies.pdf" class="external">flattened
device-tree (FDT)</a> implementation so that the initial device-tree data in
diff --git a/en/devices/tech/dalvik/improvements.html b/en/devices/tech/dalvik/improvements.html
index 1461aff1..aa41a1f0 100644
--- a/en/devices/tech/dalvik/improvements.html
+++ b/en/devices/tech/dalvik/improvements.html
@@ -27,6 +27,31 @@ release. The list below summarizes enhancements device manufacturers can expect
in ART.
</p>
+<h2 id="concurrent-compacting-gc">Concurrent compacting garbage collector</h2>
+
+<p>As announced at Google I/O, ART features a new concurrent compacting garbage
+collector (GC) in Android 8.0. This collector compacts the heap every time GC
+runs and while the app is running, with only one short pause for processing
+thread roots. Here are its benefits:</p>
+
+<ul>
+ <li>GC always compacts the heap: 32% smaller heap sizes on average compared
+ to Android 7.0.</li>
+ <li>Compaction enables thread local bump pointer object allocation:
+ Allocations are 70% faster than in Android 7.0.</li>
+ <li>Offers 85% smaller pause times for the H2 benchmark compared to the
+ Android 7.0 GC.</li>
+ <li>Pause times no longer scale with heap size; apps should be able to use
+ large heaps without worrying about jank.</li>
+ <li>GC implementation detail - Read barriers:
+ <ul>
+ <li>Read barriers are a small amount of work done for each object field
+ read.</li>
+ <li>These are optimized in the compiler, but might slow down some use
+ cases.</li>
+ </ul>
+</ul>
+
<h2 id="loop-optimizations">Loop optimizations</h2>
<p>
diff --git a/en/devices/tech/debug/sanitizers.html b/en/devices/tech/debug/sanitizers.html
index 5e0914bb..cb906ca8 100644
--- a/en/devices/tech/debug/sanitizers.html
+++ b/en/devices/tech/debug/sanitizers.html
@@ -150,7 +150,6 @@ LOCAL_CFLAGS := -std=c11 -Wall -Werror -O0
LOCAL_SRC_FILES:= sanitizer-status.c
LOCAL_MODULE:= sanitizer-status
-LOCAL_MODULE_TAGS := debug
LOCAL_SANITIZE := alignment bounds null unreachable integer
LOCAL_SANITIZE_DIAG := alignment bounds null unreachable integer
@@ -177,7 +176,6 @@ a blueprint (Android.bp):
srcs: ["sanitizer-status.c"],
name: "sanitizer-status",
- tags: ["debug"],
sanitize: {
misc_undefined: [
diff --git a/en/devices/tech/perf/low-ram.html b/en/devices/tech/perf/low-ram.html
index 4b9f67e7..715ff5c1 100644
--- a/en/devices/tech/perf/low-ram.html
+++ b/en/devices/tech/perf/low-ram.html
@@ -34,8 +34,7 @@ releases as well.</p>
<h3 id="opt-mgmt">Improved memory management</h3>
<ul>
-<li>Validated memory-saving kernel configurations: Kernel Same-page Merging
-(KSM), and Swap to ZRAM.</li>
+<li>Validated memory-saving kernel configurations: Swap to ZRAM.</li>
<li>Kill cached processes if about to be uncached and too large.</li>
<li>Don't allow large services to put themselves back into A Services (so they
can't cause the launcher to be killed).</li>
@@ -200,37 +199,6 @@ proportionally to the smaller buckets. 0 keeps the default. --&gt;
&lt;integer name=&quot;config_lowMemoryKillerMinFreeKbytesAdjust&quot;&gt;0&lt;/integer&gt;
</pre>
-<h3 id="ksm">KSM (Kernel samepage merging)</h3>
-
-<p>KSM is a kernel thread that runs in the background and compares pages in
-memory that have been marked <code>MADV_MERGEABLE</code> by user-space. If two pages are
-found to be the same, the KSM thread merges them back as a single
-copy-on-write page of memory.</p>
-
-<p>KSM will save memory over time on a running system, gaining memory duplication
-at a cost of CPU power, which could have an impact on battery life. You should
-measure whether the power tradeoff is worth the memory savings you get by
-enabling KSM.</p>
-
-<p>To test KSM, we recommend looking at long running devices (several hours) and
-seeing whether KSM makes any noticeable improvement on launch times and
-rendering times.</p>
-
-<p>To enable KSM, enable <code>CONFIG_KSM</code> in the kernel and then add the
-following lines to your` <code>init.&lt;device&gt;.rc</code> file:<br>
-
-<pre class="devsite-click-to-copy">
-write /sys/kernel/mm/ksm/pages_to_scan 100
-write /sys/kernel/mm/ksm/sleep_millisecs 500
-write /sys/kernel/mm/ksm/run 1
-</pre>
-
-<p>Once enabled, there are few utilities that will help in the debugging namely :
-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
-the hat utility if it's a duplicate object on the dalvik heap. </p>
-
<h3 id="zram">Swap to zRAM</h3>
<p>zRAM swap can increase the amount of memory available in the system by
diff --git a/en/security/bulletin/2017-04-01.html b/en/security/bulletin/2017-04-01.html
index dcbc4303..d17ddb43 100644
--- a/en/security/bulletin/2017-04-01.html
+++ b/en/security/bulletin/2017-04-01.html
@@ -132,7 +132,7 @@ successfully exploited on Android.</p>
360 Technology Co. Ltd.: CVE-2017-0564</li>
<li><a href="mailto:salyzyn@android.com">Mark Salyzyn</a> of Google:
CVE-2017-0558</li>
- <li>Mike Anderson (<a href="https://twitter.com/manderbot">@manderbot</a>) and
+ <li>Mike Andereson (<a href="https://twitter.com/manderbot">@manderbot</a>) and
Nathan Crandall (<a href="https://twitter.com/natecray">@natecray</a>) of
Tesla's Product Security Team: CVE-2017-0327, CVE-2017-0328</li>
<li>Peng Xiao, Chengming Yang, Ning You, Chao Yang, and Yang song of Alibaba
diff --git a/en/security/bulletin/2017-06-01.html b/en/security/bulletin/2017-06-01.html
index 81f74ba5..4dc34227 100644
--- a/en/security/bulletin/2017-06-01.html
+++ b/en/security/bulletin/2017-06-01.html
@@ -1153,7 +1153,8 @@ Manager</td>
</tr>
<tr>
<td>CVE-2017-0636</td>
- <td>Jake Corina and Nick Stephens of Shellphish Grill Team</td>
+ <td>Jake Corina (<a href="https://twitter.com/JakeCorina">@JakeCorina</a>) of
+Shellphish Grill Team</td>
</tr>
<tr>
<td>CVE-2017-8233</td>
diff --git a/en/security/bulletin/2017-09-01.html b/en/security/bulletin/2017-09-01.html
index f4346d78..1c4e7668 100644
--- a/en/security/bulletin/2017-09-01.html
+++ b/en/security/bulletin/2017-09-01.html
@@ -1182,7 +1182,8 @@ CVE-2017-0789, CVE-2017-0788, CVE-2017-0787</td>
</tr>
<tr>
<td>CVE-2017-0802</td>
- <td>Jake Corina and Nick Stephens of Shellphish Grill Team</td>
+ <td>Jake Corina (<a href="https://twitter.com/JakeCorina">@JakeCorina</a>) of
+Shellphish Grill Team</td>
</tr>
<tr>
<td>CVE-2017-0780</td>
diff --git a/en/security/bulletin/2017-10-01.html b/en/security/bulletin/2017-10-01.html
index dce1e591..9fca4129 100644
--- a/en/security/bulletin/2017-10-01.html
+++ b/en/security/bulletin/2017-10-01.html
@@ -359,9 +359,9 @@ href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_de
&amp; update your Android version</a>.</p>
<ul>
<li>Security patch levels of 2017-10-01 or later address all issues associated
- with the 2017-09-01 security patch level.</li>
+ with the 2017-10-01 security patch level.</li>
<li>Security patch levels of 2017-10-05 or later address all issues associated
- with the 2017-09-05 security patch level and all previous patch levels.
+ with the 2017-10-05 security patch level and all previous patch levels.
</li>
</ul>
<p>Device manufacturers that include these updates should set the patch string
diff --git a/en/security/selinux/device-policy.html b/en/security/selinux/device-policy.html
index 9474e14c..928a1faa 100644
--- a/en/security/selinux/device-policy.html
+++ b/en/security/selinux/device-policy.html
@@ -65,7 +65,7 @@ After modifying the command line, perform <code>make clean</code>, then
<p>After that, confirm permissive mode with:</p>
<pre class="devsite-terminal devsite-click-to-copy">
-adb getenforce
+adb shell getenforce
</pre>
@@ -256,7 +256,7 @@ policy.</p>
<p>The simplest alternative is to only allow the debug feature when SELinux is
disabled on eng/userdebug builds, such as <code>adb root</code> and
-<code>adb setenforce 0</code>.</p>
+<code>adb shell setenforce 0</code>.</p>
<p>Another safe alternative is to enclose debug permissions in a
<a href="https://android.googlesource.com/device/lge/hammerhead/+/marshmallow-dev/sepolicy/platform_app.te#3">
diff --git a/en/source/devices.html b/en/source/devices.html
index 0162ae48..8ab40de2 100644
--- a/en/source/devices.html
+++ b/en/source/devices.html
@@ -81,8 +81,8 @@ HiKey960 board.</p>
</li>
<li>Download and extract binaries into the Android source tree:
<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">wget https://dl.google.com/dl/android/aosp/arm-hikey960-NOU-7ad3cccc.tgz</code>
-<code class="devsite-terminal">tar xzf arm-hikey960-NOU-7ad3cccc.tgz</code>
+<code class="devsite-terminal">wget https://dl.google.com/dl/android/aosp/arm-hikey960-OPR-cf4e0c80.tgz</code>
+<code class="devsite-terminal">tar xzf arm-hikey960-OPR-cf4e0c80.tgz</code>
<code class="devsite-terimnal">./extract-arm-hikey960.sh</code>
</pre>
</li>
diff --git a/en/source/faqs.html b/en/source/faqs.html
index 13adfdbe..ff301ea8 100644
--- a/en/source/faqs.html
+++ b/en/source/faqs.html
@@ -227,11 +227,10 @@ devices.</p>
<h3 id="if-my-device-is-compatible-does-it-automatically-have-access-to-google-play-and-branding">If my device is compatible, does it automatically have access to Google Play and branding?</h3>
<p>Google Play is a service operated by Google. Achieving compatibility is
a prerequisite for obtaining access to the Google Play software and branding.
-Device manufacturers should contact <a
-href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>
-to obtain access to Google Play. While we read every email that is received at
-this alias, we cannot respond to each of them. Please note, we will be in
-contact if we can help you.</p>
+Device manufacturers should complete the contact form included in <a
+href="/compatibility/contact-us#for-business-inquiries">licensing Google Mobile
+Services</a> to seek access to Google Play. We will be in contact if we can
+help you.</p>
<h3 id="if-i-am-not-a-manufacturer-how-can-i-get-google-play">If I am not a manufacturer, how can I get Google Play?</h3>
<p>Google Play is only licensed to handset manufacturers shipping devices.
For questions about specific cases, contact <a
diff --git a/en/source/requirements.html b/en/source/requirements.html
index e57a270f..d8351e58 100644
--- a/en/source/requirements.html
+++ b/en/source/requirements.html
@@ -105,7 +105,7 @@ href="https://developer.android.com/ndk/guides/standalone_toolchain.html#working
href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a>
group to pose questions and get help. Report NDK/compiler issues at the <a
href="https://github.com/android-ndk/ndk">NDK GitHub</a>.</p>
-
+
<p>For the
<a href="https://developer.android.com/ndk/guides/index.html">Native
Development Kit (NDK)</a> and legacy kernels, GCC 4.9 included
diff --git a/ja/security/bulletin/2017-05-01.html b/ja/security/bulletin/2017-05-01.html
index 1437a410..aabb3a86 100644
--- a/ja/security/bulletin/2017-05-01.html
+++ b/ja/security/bulletin/2017-05-01.html
@@ -20,9 +20,9 @@
limitations under the License.
-->
-<p><em>2017 年 5 月 1 日公開 | 2017 年 5 月 2 日更新</em></p>
+<p><em>2017 年 5 月 1 日公開 | 2017 年 8 月 17 日更新</em></p>
-<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。情報の公開に伴い、Nexus 端末に対するセキュリティ アップデートを無線(OTA)アップデートで配信しました。Google 端末のファームウェア イメージも <a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>でリリースしています。2017 年 5 月 5 日以降のセキュリティ パッチ レベルでは、下記のすべての問題に対処しています。端末のセキュリティ パッチ レベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel と Nexus のアップデート スケジュール</a>をご覧ください。</p>
+<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を及ぼすセキュリティの脆弱性の詳細を掲載しています。情報の公開に伴い、Nexus 端末に対するセキュリティ アップデートを無線(OTA)アップデートで配信しました。Google 端末のファームウェア イメージも <a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>でリリースしています。2017 年 5 月 5 日以降のセキュリティ パッチ レベルでは、下記のすべての問題に対処しています。端末のセキュリティ パッチ レベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel と Nexus のアップデート スケジュール</a>をご覧ください。</p>
<p>パートナーには、この公開情報に記載の問題について 2017 年 4 月 3 日までに通知済みです。Android オープンソース プロジェクト(AOSP)のレポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
@@ -80,7 +80,7 @@
<li>Alibaba Inc. の Yong Wang(王勇)(<a href="https://twitter.com/ThomasKing2014">@ThomasKing2014</a>): CVE-2017-0588</li>
<li>Qihoo 360 Technology Co. Ltd. IceSword Lab の Yonggang Guo(<a href="https://twitter.com/guoygang">@guoygang</a>): CVE-2016-10289、CVE-2017-0465</li>
<li>Qihoo 360 Technology Co. Ltd. Vulpecker Team の Yu Pan: CVE-2016-10282、CVE-2017-0615</li>
-<li>Qihoo 360 Technology Co. Ltd.Vulpecker Team の Yu Pan、Peide Zhang: CVE-2017-0618、CVE-2017-0625</li>
+<li>Qihoo 360 Technology Co. Ltd. Vulpecker Team の Yu Pan、Peide Zhang: CVE-2017-0618、CVE-2017-0625</li>
</ul>
<h2 id="2017-05-01-details">セキュリティ パッチ レベル 2017-05-01 の脆弱性の詳細</h2>
@@ -187,7 +187,7 @@
<h3 id="eop-in-mediaserver">メディアサーバーでの権限昇格の脆弱性</h3>
-<p>メディアサーバーに権限昇格の脆弱性があるため、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。サードパーティのアプリが通常はアクセスできない権限に昇格してローカルにアクセスすることに利用されるおそれがあるので、この問題の重大度は「高」と判断されています。</p>
+<p>メディアサーバーに権限昇格の脆弱性があるため、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。サードパーティのアプリが通常はアクセスできない権限に昇格してローカルにアクセスするのに利用されるおそれがあるので、この問題の重大度は「高」と判断されています。</p>
<table>
<colgroup><col width="18%" />
@@ -377,7 +377,8 @@
<tr>
<td>CVE-2017-0493</td>
<td><a href="https://android.googlesource.com/platform/frameworks/base/+/e4cefbf4fce458489b5f1bebc79dfaf566bcc5d5">A-32793550</a>
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]</td>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/58552f814a03d978b4a6507f3c16f71964f9b28f">3</a>]</td>
<td>中</td>
<td>すべて</td>
<td>7.0、7.1.1</td>
@@ -759,7 +760,7 @@ QC-CR#1048480</a></td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>参照</th>
- <th>重大度</th>
+ <th>重大度*</th>
<th>更新対象の Google 端末</th>
<th>報告日</th>
</tr>
@@ -801,8 +802,6 @@ QC-CR#1048480</a></td>
<p>* この問題に対するパッチは公開されていません。アップデートは <a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Nexus 端末用最新バイナリ ドライバに含まれています。</p>
-<p>*** Android 7.1.1 以降が搭載されたサポート対象の Google 端末において、適用できるすべてのアップデートがインストールされている場合は、この脆弱性が悪用されることはありません。</p>
-
<h3 id="rce-in-libxml2">libxml2 でのリモートコード実行の脆弱性</h3>
<p>libxml2 にリモートコード実行の脆弱性があるため、攻撃者が特別に細工したファイルを使用して、非特権プロセス内で任意のコードを実行するおそれがあります。このライブラリを使用するアプリでリモートコードが実行される可能性があるため、この問題の重大度は「高」と判断されています。</p>
@@ -1672,7 +1671,7 @@ QC-CR#1098602</a></td>
<h3 id="id-in-qualcomm-wi-fi-driver">Qualcomm Wi-Fi ドライバでの情報開示の脆弱性</h3>
-<p>Qualcomm Wi-Fi ドライバに情報開示の脆弱性があるため、悪意のあるローカルアプリが権限レベルの範囲外のデータにアクセスするおそれがあります。ユーザーの明示的な許可を得ずに機密データにアクセスすることに利用される可能性があるため、この問題の重大度は「高」と判断されています。</p>
+<p>Qualcomm Wi-Fi ドライバに情報開示の脆弱性があるため、悪意のあるローカルアプリが権限レベルの範囲外のデータにアクセスするおそれがあります。ユーザーの明示的な許可を得ずに機密データにアクセスするのに利用される可能性があるため、この問題の重大度は「高」と判断されています。</p>
<table>
<colgroup><col width="19%" />
@@ -1701,7 +1700,7 @@ QC-CR#1098602</a></td>
<h3 id="id-in-mediatek-command-queue-driver">MediaTek コマンドキュー ドライバでの情報開示の脆弱性</h3>
-<p>MediaTek コマンドキュー ドライバに情報開示の脆弱性があるため、悪意のあるローカルアプリが権限レベルの範囲外のデータにアクセスするおそれがあります。ユーザーの明示的な許可を得ずに機密データにアクセスすることに利用される可能性があるため、この問題の重大度は「高」と判断されています。</p>
+<p>MediaTek コマンドキュー ドライバに情報開示の脆弱性があるため、悪意のあるローカルアプリが権限レベルの範囲外のデータにアクセスするおそれがあります。ユーザーの明示的な許可を得ずに機密データにアクセスするのに利用される可能性があるため、この問題の重大度は「高」と判断されています。</p>
<table>
<colgroup><col width="19%" />
@@ -1732,7 +1731,7 @@ QC-CR#1098602</a></td>
<h3 id="id-in-qualcomm-crypto-engine-driver">Qualcomm crypto エンジン ドライバでの情報開示の脆弱性</h3>
-<p>Qualcomm crypto エンジン ドライバに情報開示の脆弱性があるため、悪意のあるローカルアプリが権限レベルの範囲外のデータにアクセスするおそれがあります。ユーザーの明示的な許可を得ずに機密データにアクセスすることに利用される可能性があるため、この問題の重大度は「高」と判断されています。</p>
+<p>Qualcomm crypto エンジン ドライバに情報開示の脆弱性があるため、悪意のあるローカルアプリが権限レベルの範囲外のデータにアクセスするおそれがあります。ユーザーの明示的な許可を得ずに機密データにアクセスするのに利用される可能性があるため、この問題の重大度は「高」と判断されています。</p>
<table>
<colgroup><col width="19%" />
@@ -2218,54 +2217,48 @@ QC-CR#832915</a></td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>参照</th>
- <th>重大度</th>
+ <th>重大度*</th>
<th>更新対象の Google 端末</th>
<th>報告日</th>
</tr>
<tr>
<td>CVE-2014-9923</td>
- <td>A-35434045**<br />
- QC-CR#403910</td>
+ <td>A-35434045**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9924</td>
- <td>A-35434631**<br />
- QC-CR#596102</td>
+ <td>A-35434631**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9925</td>
- <td>A-35444657**<br />
- QC-CR#638130</td>
+ <td>A-35444657**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9926</td>
- <td>A-35433784**<br />
- QC-CR#631527</td>
+ <td>A-35433784**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9927</td>
- <td>A-35433785**<br />
- QC-CR#661111</td>
+ <td>A-35433785**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9928</td>
- <td>A-35438623**<br />
- QC-CR#696972</td>
+ <td>A-35438623**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
@@ -2280,136 +2273,119 @@ QC-CR#832915</a></td>
</tr>
<tr>
<td>CVE-2014-9930</td>
- <td>A-35432946**<br />
- QC-CR#634637</td>
+ <td>A-35432946**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2015-9005</td>
- <td>A-36393500**<br />
- QC-CR#741548</td>
+ <td>A-36393500**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2015-9006</td>
- <td>A-36393450**<br />
- QC-CR#750559</td>
+ <td>A-36393450**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2015-9007</td>
- <td>A-36393700**<br />
- QC-CR#807173</td>
+ <td>A-36393700**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2016-10297</td>
- <td>A-36393451**<br />
- QC-CR#1061123</td>
+ <td>A-36393451**</td>
<td>重大</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9941</td>
- <td>A-36385125**<br />
- QC-CR#509915</td>
+ <td>A-36385125**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9942</td>
- <td>A-36385319**<br />
- QC-CR#533283</td>
+ <td>A-36385319**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9943</td>
- <td>A-36385219**<br />
- QC-CR#546527</td>
+ <td>A-36385219**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9944</td>
- <td>A-36384534**<br />
- QC-CR#613175</td>
+ <td>A-36384534**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9945</td>
- <td>A-36386912**<br />
- QC-CR#623452</td>
+ <td>A-36386912**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9946</td>
- <td>A-36385281**<br />
- QC-CR#520149</td>
+ <td>A-36385281**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9947</td>
- <td>A-36392400**<br />
- QC-CR#650540</td>
+ <td>A-36392400**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9948</td>
- <td>A-36385126**<br />
- QC-CR#650500</td>
+ <td>A-36385126**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9949</td>
- <td>A-36390608**<br />
- QC-CR#652426</td>
+ <td>A-36390608**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9950</td>
- <td>A-36385321**<br />
- QC-CR#655530</td>
+ <td>A-36385321**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9951</td>
- <td>A-36389161**<br />
- QC-CR#525043</td>
+ <td>A-36389161**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
</tr>
<tr>
<td>CVE-2014-9952</td>
- <td>A-36387019**<br />
- QC-CR#674836</td>
+ <td>A-36387019**</td>
<td>高</td>
<td>なし***</td>
<td>Qualcomm 社内</td>
@@ -2418,14 +2394,14 @@ QC-CR#832915</a></td>
<p>* この一連の問題の重大度はベンダーが決定したものです。</p>
-<p>* この問題に対するパッチは公開されていません。アップデートは <a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Nexus 端末用最新バイナリ ドライバに含まれています。</p>
+<p>** この問題に対するパッチは公開されていません。アップデートは <a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Nexus 端末用最新バイナリ ドライバに含まれています。</p>
<p>*** Android 7.1.1 以降が搭載されたサポート対象の Google 端末において、適用できるすべてのアップデートがインストールされている場合は、この脆弱性が悪用されることはありません。</p>
<h2 id="common-questions-and-answers">一般的な質問と回答</h2>
<p>上記の公開情報に対する一般的な質問について、以下で回答します。</p>
-<p><strong>1. 上記の問題に対処するように端末が更新されているかどうかをどのように判断すればよいですか?
+<p><strong>1. 上記の問題に対処するように端末が更新されているかを判断するには、どうすればよいですか?
</strong></p>
<p>端末のセキュリティ パッチ レベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。</p>
@@ -2442,9 +2418,9 @@ QC-CR#832915</a></td>
<li>[ro.build.version.security_patch]:[2017-05-05]</li>
</ul>
-<p><strong>2. この公開情報に 2 つのセキュリティ パッチ レベルがあるのはなぜですか?</strong></p>
+<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
-<p>この公開情報では、2 つのセキュリティ パッチ レベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチ レベルを使用することが推奨されています。</p>
+<p>この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチ レベルを使用することが推奨されています。</p>
<ul>
<li>2017 年 5 月 1 日のセキュリティ パッチ レベルを使用する端末には、そのセキュリティ パッチ レベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を組み込む必要があります。</li>
<li>2017 年 5 月 5 日以降のセキュリティ パッチ レベルを使用する端末には、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
@@ -2454,11 +2430,11 @@ QC-CR#832915</a></td>
<p><strong>3.  各問題の影響を受ける Google 端末を判断するにはどうすればよいですか?</strong></p>
-<p><a href="#2017-05-01-details">2017-05-01</a> と <a href="#2017-05-05-details">2017-05-05</a> のセキュリティの脆弱性の詳細に関するセクションで、各表中の「更新対象の Google 端末」列に、その問題の影響を受ける、更新対象の Google 端末の種類を記載しています。<em></em>この列には次のいずれかが表示されています。</p>
+<p><a href="#2017-05-01-details">2017-05-01</a> と <a href="#2017-05-05-details">2017-05-05</a> のセキュリティの脆弱性の詳細に関するセクションで、各表中の「更新対象の Google 端末<em></em>」列に、その問題の影響を受ける、更新対象の Google 端末の種類を記載しています。この列には次のいずれかが表示されています。</p>
<ul>
-<li><strong>すべての Google 端末</strong>: 問題がすべての端末と Pixel 端末に影響を与える場合、表の「更新対象の Google 端末」列には「すべて」と記載されています。<em></em>「すべて」には<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">サポート対象の端末</a>(Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Android One、Nexus Player、Pixel C、Pixel、Pixel XL)が含まれます。</li>
-<li><strong>一部の Google 端末</strong>: 問題が一部の Google 端末のみに影響する場合、「更新対象の Google 端末」列には影響を受ける Google 端末が記載されています。<em></em></li>
-<li><strong>影響を受ける Google 端末がない</strong>: Android 7.0 を搭載した Google 端末が問題の影響を受けない場合、表の「更新対象の Google 端末」列には「なし」と記載されています。<em></em></li>
+<li><strong>すべての Google 端末</strong>: 問題がすべての端末と Pixel 端末に影響を与える場合、表の「更新対象の Google 端末<em></em>」列には「すべて」と記載されています。「すべて」には<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">サポート対象の端末</a>(Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Android One、Nexus Player、Pixel C、Pixel、Pixel XL)が含まれます。</li>
+<li><strong>一部の Google 端末</strong>: 問題が一部の Google 端末のみに影響する場合、「更新対象の Google 端末<em></em>」列には影響を受ける Google 端末が記載されています。</li>
+<li><strong>影響を受ける Google 端末がない</strong>: Android 7.0 を搭載した Google 端末が問題の影響を受けない場合、表の「更新対象の Google 端末<em></em>」列には「なし」と記載されています。</li>
</ul>
<p><strong>4. 「参照」列の項目はどのような情報に関連付けられていますか?</strong></p>
@@ -2494,6 +2470,8 @@ QC-CR#832915</a></td>
<ul>
<li>2017 年 5 月 1 日: 情報公開</li>
<li>2017 年 5 月 2 日: 公開情報を改訂し AOSP リンクを追加</li>
+<li>2017 年 8 月 10 日: 公開情報を改訂し CVE-2017-0493 向け AOSP リンクを追加</li>
+<li>2017 年 8 月 17 日: 公開情報を改訂し参照番号を更新</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/2017-05-01.html b/ko/security/bulletin/2017-05-01.html
index b9220c90..3bfb2f80 100644
--- a/ko/security/bulletin/2017-05-01.html
+++ b/ko/security/bulletin/2017-05-01.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>Android 보안 게시판 — 2017년 5월</title>
+ <title>Android 보안 게시판—2017년 5월</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>2017년 5월 1일 게시됨 | 2017년 5월 2일 업데이트됨</em></p>
+<p><em>2017년 5월 1일에 게시됨 | 2017년 8월 17일에 업데이트됨</em></p>
<p>Android 보안 게시판에서는 Android 기기에 영향을 미치는 보안 취약성
세부정보를 다룹니다. 게시판과 함께 무선(OTA) 업데이트를 통해
@@ -78,7 +78,7 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게
<li>Android 플랫폼 최신 버전의 향상된 기능으로 Android의 여러 문제를
악용하기가 더욱 어려워졌습니다. 가능하다면 모든 사용자는 최신 버전의 Android로
업데이트하는 것이 좋습니다.</li>
-<li>Android 보안팀에서는 <a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">잠재적으로 위험한 애플리케이션</a>에 관해
+<li>Android 보안팀에서는 <a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">유해할 수 있는 애플리케이션</a>에 관해
사용자에게 경고를 보내는 <a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf">앱 인증 및 SafetyNet</a>을 사용하여
악용사례를 적극적으로 모니터링합니다. 앱 인증은 <a href="http://www.android.com/gms">Google 모바일 서비스</a>가 적용된
기기에 기본적으로 사용 설정되어 있으며 Google Play 외부에서
@@ -89,7 +89,7 @@ Play 내에서 기기 루팅 도구는 금지되어 있지만
권한 승격 취약성을 악용하는 것으로 알려진 악성 애플리케이션을
식별하고 차단합니다. 이러한 애플리케이션이 이미 설치된 경우 앱 인증에서 사용자에게
이를 알리고 감지된 애플리케이션을 삭제하려고 시도합니다.</li>
-<li>가능한 경우 Google 행아웃과 메신저 애플리케이션은 미디어 서버와 같은 프로세스에
+<li>Google 행아웃과 메신저 애플리케이션은 미디어 서버와 같은 프로세스에
미디어를 자동으로 전달하지 않습니다.</li>
</ul>
@@ -113,8 +113,8 @@ CVE-2017-0624, CVE-2017-0616, CVE-2017-0617, CVE-2016-10294, CVE-2016-10295,
CVE-2016-10296</li>
<li>Tencent PC Manager의 godzheng(郑文选 <a href="https://twitter.com/virtualseekers">@VirtualSeekers</a>):
CVE-2017-0602</li>
-<li><a href="http://tuncay2.web.engr.illinois.edu">University of Illinois at
-Urbana-Champaign</a>의 <a href="https://www.linkedin.com/in/g%C3%BCliz-seray-tuncay-952a1b9/">Güliz
+<li><a href="http://tuncay2.web.engr.illinois.edu">University of Illinois atUrbana-Champaign</a>
+의 <a href="https://www.linkedin.com/in/g%C3%BCliz-seray-tuncay-952a1b9/">Güliz
Seray Tuncay</a>: CVE-2017-0593</li>
<li>Qihoo 360 Technology Co. Ltd. Alpha Team의 Hao Chen, Guang Gong:
CVE-2016-10283</li>
@@ -479,7 +479,8 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
<tr>
<td>CVE-2017-0493</td>
<td><a href="https://android.googlesource.com/platform/frameworks/base/+/e4cefbf4fce458489b5f1bebc79dfaf566bcc5d5">A-32793550</a>
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]</td>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/58552f814a03d978b4a6507f3c16f71964f9b28f">3</a>]</td>
<td>보통</td>
<td>모두</td>
<td>7.0, 7.1.1</td>
@@ -935,7 +936,7 @@ One, Nexus Player</td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>참조</th>
- <th>심각도</th>
+ <th>심각도*</th>
<th>업데이트된 Google 기기</th>
<th>신고된 날짜</th>
</tr>
@@ -981,9 +982,6 @@ One, Nexus Player</td>
포함되어 있습니다.</p>
-<p>*** 지원되는 Android 7.1.1 이상 Google 기기에 제공된 업데이트가 모두 설치되었다면 이러한
-취약성의 영향을 받지 않습니다.</p>
-
<h3 id="rce-in-libxml2">libxml2의 원격 코드 실행 취약성</h3>
<p>libxml2의 원격 코드 실행 취약성으로 인해 공격자가 특별히 제작된 파일을
@@ -2639,54 +2637,48 @@ Qualcomm AMSS 보안 게시판을 통해 배포되었습니다. 각 취약성의
</colgroup><tbody><tr>
<th>CVE</th>
<th>참조</th>
- <th>심각도</th>
+ <th>심각도*</th>
<th>업데이트된 Google 기기</th>
<th>신고된 날짜</th>
</tr>
<tr>
<td>CVE-2014-9923</td>
- <td>A-35434045**<br />
- QC-CR#403910</td>
+ <td>A-35434045**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9924</td>
- <td>A-35434631**<br />
- QC-CR#596102</td>
+ <td>A-35434631**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9925</td>
- <td>A-35444657**<br />
- QC-CR#638130</td>
+ <td>A-35444657**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9926</td>
- <td>A-35433784**<br />
- QC-CR#631527</td>
+ <td>A-35433784**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9927</td>
- <td>A-35433785**<br />
- QC-CR#661111</td>
+ <td>A-35433785**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9928</td>
- <td>A-35438623**<br />
- QC-CR#696972</td>
+ <td>A-35438623**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
@@ -2701,136 +2693,119 @@ Qualcomm AMSS 보안 게시판을 통해 배포되었습니다. 각 취약성의
</tr>
<tr>
<td>CVE-2014-9930</td>
- <td>A-35432946**<br />
- QC-CR#634637</td>
+ <td>A-35432946**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2015-9005</td>
- <td>A-36393500**<br />
- QC-CR#741548</td>
+ <td>A-36393500**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2015-9006</td>
- <td>A-36393450**<br />
- QC-CR#750559</td>
+ <td>A-36393450**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2015-9007</td>
- <td>A-36393700**<br />
- QC-CR#807173</td>
+ <td>A-36393700**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2016-10297</td>
- <td>A-36393451**<br />
- QC-CR#1061123</td>
+ <td>A-36393451**</td>
<td>심각</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9941</td>
- <td>A-36385125**<br />
- QC-CR#509915</td>
+ <td>A-36385125**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9942</td>
- <td>A-36385319**<br />
- QC-CR#533283</td>
+ <td>A-36385319**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9943</td>
- <td>A-36385219**<br />
- QC-CR#546527</td>
+ <td>A-36385219**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9944</td>
- <td>A-36384534**<br />
- QC-CR#613175</td>
+ <td>A-36384534**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9945</td>
- <td>A-36386912**<br />
- QC-CR#623452</td>
+ <td>A-36386912**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9946</td>
- <td>A-36385281**<br />
- QC-CR#520149</td>
+ <td>A-36385281**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9947</td>
- <td>A-36392400**<br />
- QC-CR#650540</td>
+ <td>A-36392400**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9948</td>
- <td>A-36385126**<br />
- QC-CR#650500</td>
+ <td>A-36385126**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9949</td>
- <td>A-36390608**<br />
- QC-CR#652426</td>
+ <td>A-36390608**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9950</td>
- <td>A-36385321**<br />
- QC-CR#655530</td>
+ <td>A-36385321**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9951</td>
- <td>A-36389161**<br />
- QC-CR#525043</td>
+ <td>A-36389161**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
</tr>
<tr>
<td>CVE-2014-9952</td>
- <td>A-36387019**<br />
- QC-CR#674836</td>
+ <td>A-36387019**</td>
<td>높음</td>
<td>없음***</td>
<td>Qualcomm 사내용</td>
@@ -2839,7 +2814,7 @@ Qualcomm AMSS 보안 게시판을 통해 배포되었습니다. 각 취약성의
<p>* 이 취약성의 심각도 등급은 공급업체에서 결정한 것입니다.</p>
-<p>* 이 문제를 해결하기 위한 패치는 공개되지 않습니다. 업데이트는
+<p>** 이 문제를 해결하기 위한 패치는 공개되어 있지 않습니다. 업데이트는
<a href="https://developers.google.com/android/nexus/drivers">Google 개발자 사이트</a>에서 제공되는 Nexus 기기용
최신 바이너리 드라이버에
@@ -2877,8 +2852,7 @@ Qualcomm AMSS 보안 게시판을 통해 배포되었습니다. 각 취약성의
<p><strong>2. 이 게시판에 두 가지 보안 패치 수준이 있는 이유가 무엇인가요?</strong></p>
<p>이 게시판에서는 Android 파트너가 모든 Android 기기에서 유사하게 발생하는
-취약성 문제의 일부를 더욱 빠르고 유연하게 해결하기 위한 두 가지 보안 패치 수준이
-포함되어 있습니다. Android 파트너는 이 게시판에 언급된 문제를 모두 수정하고
+취약성 문제의 일부를 더욱 빠르고 유연하게 해결하도록 하기 위해 두 가지 보안 패치 수준이 포함되어 있습니다. Android 파트너는 이 게시판에 언급된 문제를 모두 수정하고
최신 보안 패치 수준을 사용하는 것이 좋습니다.</p>
<ul>
<li>2017년 5월 1일 보안 패치 수준을 사용하는 기기는 이 보안 패치 수준과
@@ -2895,9 +2869,8 @@ Qualcomm AMSS 보안 게시판을 통해 배포되었습니다. 각 취약성의
<p><a href="#2017-05-01-details">2017-05-01</a> 및
<a href="#2017-05-05-details">2017-05-05</a>
-보안 취약성 세부정보 섹션에 있는 각 테이블의 <em>업데이트된 Google
-기기</em> 열을 확인하면 됩니다. 이 열에는 영향을 받는 Google 기기의 범위가
-문제별로 업데이트되어 표시됩니다. 이 열에는 다음과 같은 옵션이 있습니다.</p>
+보안 취약성 세부정보 섹션에 있는 각 표의 <em>업데이트된 Google 기기</em>
+열을 확인하면 됩니다. 이 열에는 영향을 받는 Google 기기의 범위가 문제별로 업데이트되어 표시됩니다. 이 열에는 다음과 같은 옵션이 있습니다.</p>
<ul>
<li><strong>모든 Google 기기</strong>: 문제가 모든 Google 기기 및 Pixel 기기에
영향을 미치는 경우, 표의 <em>업데이트된 Google 기기</em> 열에
@@ -2920,7 +2893,7 @@ Pixel C, Pixel, Pixel XL.</li>
<table>
<tbody><tr>
<th>접두어</th>
- <th>참조 문서</th>
+ <th>참조</th>
</tr>
<tr>
<td>A-</td>
@@ -2947,6 +2920,8 @@ Pixel C, Pixel, Pixel XL.</li>
<ul>
<li>2017년 5월 1일: 게시판이 게시됨</li>
<li>2017년 5월 2일: 게시판이 수정되어 AOSP 링크 포함됨</li>
+<li>2017년 8월 10일: 게시판이 수정되어 CVE-2017-0493의 추가 AOSP 링크 포함됨</li>
+<li>2017년 8월 17일: 게시판이 수정되어 참조 번호가 업데이트됨</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/2017-05-01.html b/ru/security/bulletin/2017-05-01.html
index e39cda77..386a5c3b 100644
--- a/ru/security/bulletin/2017-05-01.html
+++ b/ru/security/bulletin/2017-05-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>Опубликовано 1 мая 2017 г. | Обновлено 2 мая 2017 г.</em></p>
+<p><em>Опубликовано 1 мая 2017 г. | Обновлено 17 августа 2017 г.</em></p>
<p>В этом бюллетене содержится информация об уязвимостях в защите устройств Android. К его выходу мы выпустили автоматическое обновление системы безопасности для устройств Google и опубликовали образы прошивок <a href="https://developers.google.com/android/nexus/images">на сайте для разработчиков</a>. Все актуальные проблемы, перечисленные здесь, устранены в исправлении от 5 мая 2017 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Справочном центре</a>.</p>
@@ -29,7 +29,7 @@
<p>Наиболее серьезная из уязвимостей имеет критический уровень и позволяет удаленно выполнять код на пораженном устройстве (например, при работе с электронной почтой, просмотре сайтов в Интернете или обработке медиафайлов MMS). <a href="/security/overview/updates-resources.html#severity">Уровень серьезности</a> зависит от того, какой ущерб будет нанесен устройству при атаке с использованием уязвимости, если средства защиты будут отключены разработчиком или взломаны.</p>
-<p>Обнаруженные уязвимости не эксплуатировались. В разделе <a href="#mitigations">Предотвращение атак</a> описывается, как <a href="/security/enhancements/index.html">платформа безопасности</a> и средства защиты сервисов, например <a href="https://developer.android.com/training/safetynet/index.html">SafetyNet</a>, помогают снизить вероятность атак на Android.</p>
+<p>У нас нет информации о том, что обнаруженные уязвимости эксплуатировались. В разделе <a href="#mitigations">Предотвращение атак</a> описывается, как <a href="/security/enhancements/index.html">платформа безопасности</a> и средства защиты сервисов, например <a href="https://developer.android.com/training/safetynet/index.html">SafetyNet</a>, помогают снизить вероятность атак на Android.</p>
<p>Мы рекомендуем всем пользователям установить перечисленные в разделе обновления.</p>
<h2 id="announcements">Объявления</h2>
@@ -88,7 +88,7 @@
<h2 id="2017-05-01-details">Описание уязвимостей (обновление системы безопасности 2017-05-01)</h2>
-<p>В этом разделе вы найдете подробную информацию обо всех уязвимостях обновления системы безопасности 2017-05-01: описание и обоснование серьезности, таблицу с CVE, ссылками, уровнем серьезности, уязвимыми устройствами Google и версиями AOSP (при наличии), а также датой сообщения об ошибке. Где возможно, мы приведем основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), и дополнительные ссылки в квадратных скобках.</p>
+<p>В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2017-05-01. описание и обоснование серьезности, таблицу с CVE, ссылками, уровнем серьезности, уязвимыми устройствами Google и версиями AOSP (при наличии), а также датой сообщения об ошибке. Где возможно, мы приведем основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), и дополнительные ссылки в квадратных скобках.</p>
<h3 id="rce-in-mediaserver">Удаленное выполнение кода через mediaserver</h3>
@@ -380,7 +380,8 @@
<tr>
<td>CVE-2017-0493</td>
<td><a href="https://android.googlesource.com/platform/frameworks/base/+/e4cefbf4fce458489b5f1bebc79dfaf566bcc5d5">A-32793550</a>
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]</td>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/58552f814a03d978b4a6507f3c16f71964f9b28f">3</a>]</td>
<td>Средний</td>
<td>Все</td>
<td>7.0, 7.1.1</td>
@@ -506,7 +507,7 @@
<h2 id="2017-05-05-details">Описание уязвимостей (обновление системы безопасности 2017-05-05)</h2>
-<p>В этом разделе вы найдете подробную информацию обо всех уязвимостях обновления системы безопасности 2017-05-05: описание и обоснование серьезности, таблицу с CVE, ссылками, уровнем серьезности, уязвимыми устройствами Google и версиями AOSP (при наличии), а также датой сообщения об ошибке. Где возможно, мы приведем основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), и дополнительные ссылки в квадратных скобках.</p>
+<p>В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2017-05-05: описание и обоснование серьезности, таблицу с CVE, ссылками, уровнем серьезности, уязвимыми устройствами Google и версиями AOSP (при наличии), а также датой сообщения об ошибке. Где возможно, мы приведем основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), и дополнительные ссылки в квадратных скобках.</p>
<h3 id="rce-in-giflib">Удаленное выполнение кода через GIFLIB</h3>
@@ -762,7 +763,7 @@ QC-CR#1048480</a></td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>Ссылки</th>
- <th>Уровень серьезности</th>
+ <th>Уровень серьезности*</th>
<th>Обновленные устройства Google</th>
<th>Дата сообщения об ошибке</th>
</tr>
@@ -804,8 +805,6 @@ QC-CR#1048480</a></td>
<p>**Исправление не опубликовано. Обновление содержится в последних бинарных драйверах для устройств Nexus, которые можно скачать на <a href="https://developers.google.com/android/nexus/drivers">сайте для разработчиков</a>.</p>
-<p>***Эта уязвимость не затрагивает поддерживаемые устройства Google с Android 7.1.1, на которых установлены все доступные обновления.</p>
-
<h3 id="rce-in-libxml2">Удаленное выполнение кода через libxml2</h3>
<p>Уязвимость позволяет злоумышленнику выполнять произвольный код в контексте непривилегированного процесса с помощью специально созданного файла. Проблеме присвоен высокий уровень серьезности из-за возможности удаленного выполнения кода в ПО, которое использует эту библиотеку.</p>
@@ -1165,7 +1164,7 @@ QC-CR#1116295</a></td>
</tr>
</tbody></table>
-<h3 id="eop-in-qualcomm-shared-memory-driver">Повышение привилегий через драйвер разделения памяти Qualcomm</h3>
+<h3 id="eop-in-qualcomm-shared-memory-driver">Повышение привилегий через драйвер общей памяти Qualcomm</h3>
<p>Уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте ядра. Проблеме присвоен высокий уровень серьезности, поскольку уязвимость требует сначала нарушить защиту привилегированного процесса.</p>
@@ -1905,7 +1904,7 @@ QC-CR#1109326</a></td>
</tr>
</tbody></table>
-<h3 id="id-in-qualcomm-shared-memory-driver">Раскрытие информации через драйвер разделения памяти Qualcomm</h3>
+<h3 id="id-in-qualcomm-shared-memory-driver">Раскрытие информации через драйвер общей памяти Qualcomm</h3>
<p>Уязвимость позволяет локальному вредоносному ПО получать несанкционированный доступ к данным. Проблеме присвоен средний уровень серьезности, поскольку уязвимость требует сначала нарушить защиту привилегированного процесса.</p>
@@ -2222,54 +2221,48 @@ QC-CR#832915</a></td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>Ссылки</th>
- <th>Уровень серьезности</th>
+ <th>Уровень серьезности*</th>
<th>Обновленные устройства Google</th>
<th>Дата сообщения об ошибке</th>
</tr>
<tr>
<td>CVE-2014-9923</td>
- <td>A-35434045**<br />
- QC-CR#403910</td>
+ <td>A-35434045**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9924</td>
- <td>A-35434631**<br />
- QC-CR#596102</td>
+ <td>A-35434631**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9925</td>
- <td>A-35444657**<br />
- QC-CR#638130</td>
+ <td>A-35444657**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9926</td>
- <td>A-35433784**<br />
- QC-CR#631527</td>
+ <td>A-35433784**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9927</td>
- <td>A-35433785**<br />
- QC-CR#661111</td>
+ <td>A-35433785**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9928</td>
- <td>A-35438623**<br />
- QC-CR#696972</td>
+ <td>A-35438623**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
@@ -2284,136 +2277,119 @@ QC-CR#832915</a></td>
</tr>
<tr>
<td>CVE-2014-9930</td>
- <td>A-35432946**<br />
- QC-CR#634637</td>
+ <td>A-35432946**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2015-9005</td>
- <td>A-36393500**<br />
- QC-CR#741548</td>
+ <td>A-36393500**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2015-9006</td>
- <td>A-36393450**<br />
- QC-CR#750559</td>
+ <td>A-36393450**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2015-9007</td>
- <td>A-36393700**<br />
- QC-CR#807173</td>
+ <td>A-36393700**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2016-10297</td>
- <td>A-36393451**<br />
- QC-CR#1061123</td>
+ <td>A-36393451**</td>
<td>Критический</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9941</td>
- <td>A-36385125**<br />
- QC-CR#509915</td>
+ <td>A-36385125**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9942</td>
- <td>A-36385319**<br />
- QC-CR#533283</td>
+ <td>A-36385319**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9943</td>
- <td>A-36385219**<br />
- QC-CR#546527</td>
+ <td>A-36385219**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9944</td>
- <td>A-36384534**<br />
- QC-CR#613175</td>
+ <td>A-36384534**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9945</td>
- <td>A-36386912**<br />
- QC-CR#623452</td>
+ <td>A-36386912**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9946</td>
- <td>A-36385281**<br />
- QC-CR#520149</td>
+ <td>A-36385281**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9947</td>
- <td>A-36392400**<br />
- QC-CR#650540</td>
+ <td>A-36392400**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9948</td>
- <td>A-36385126**<br />
- QC-CR#650500</td>
+ <td>A-36385126**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9949</td>
- <td>A-36390608**<br />
- QC-CR#652426</td>
+ <td>A-36390608**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9950</td>
- <td>A-36385321**<br />
- QC-CR#655530</td>
+ <td>A-36385321**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9951</td>
- <td>A-36389161**<br />
- QC-CR#525043</td>
+ <td>A-36389161**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
</tr>
<tr>
<td>CVE-2014-9952</td>
- <td>A-36387019**<br />
- QC-CR#674836</td>
+ <td>A-36387019**</td>
<td>Высокий</td>
<td>Нет***</td>
<td>Доступно только сотрудникам Qualcomm</td>
@@ -2461,9 +2437,9 @@ QC-CR#832915</a></td>
<p>В каждой таблице разделов с описанием уязвимостей <a href="#2017-05-01-details">2017-05-01</a> и <a href="#2017-05-05-details">2017-05-05</a> есть столбец <em>Обновленные устройства Google</em>. В нем указано, на каких устройствах присутствует уязвимость.</p>
<ul>
-<li><strong>Все устройства.</strong> Проблема возникает на<em></em> следующих <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">поддерживаемых устройствах Google</a>: Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Android One, Nexus Player, Pixel C, Pixel и Pixel XL.</li>
-<li><strong>Некоторые устройства.</strong> <em></em>Перечислены устройства, на которых присутствует уязвимость.</li>
-<li><strong>Нет.</strong> Проблема не возникает ни на одном устройстве Google.<em></em> </li>
+<li><strong>Все устройства</strong>. Проблема возникает на<em></em> следующих <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">поддерживаемых устройствах Google</a>: Nexus 5X, Nexus 6, Nexus 6P, Nexus 9, Android One, Nexus Player, Pixel C, Pixel и Pixel XL.</li>
+<li><strong>Некоторые устройства</strong>. <em></em>Перечислены устройства, на которых присутствует уязвимость.</li>
+<li><strong>Нет</strong>. Проблема не возникает ни на одном устройстве Google.<em></em> </li>
</ul>
<p><strong>4. На что указывают записи в столбце "Ссылки"?</strong></p>
@@ -2499,6 +2475,8 @@ QC-CR#832915</a></td>
<ul>
<li>1 мая 2017 года. Бюллетень опубликован.</li>
<li>2 мая 2017 года. Добавлены ссылки на AOSP.</li>
+<li>10 августа 2017 года. Добавлена дополнительная ссылка на AOSP для CVE-2017-0493.</li>
+<li>17 августа 2017 года. Обновлены ссылочные номера.</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/cdd.html b/zh-cn/compatibility/cdd.html
index e93af033..e0dfec9b 100644
--- a/zh-cn/compatibility/cdd.html
+++ b/zh-cn/compatibility/cdd.html
@@ -45,6 +45,12 @@
<th>字符串</th>
</tr>
<tr>
+ <td>8.0</td>
+ <td><a href="8.0/android-8.0-cdd.pdf">android-8.0-cdd.pdf</a></td>
+ <td><a href="8.0/android-8.0-cdd.html">android-8.0-cdd.html</a></td>
+ <td><a href="8.0/versions.html">8.0 版</a></td>
+ </tr>
+ <tr>
<td>7.1</td>
<td><a href="7.1/android-7.1-cdd.pdf">android-7.1-cdd.pdf</a></td>
<td><a href="7.1/android-7.1-cdd.html">android-7.1-cdd.html</a></td>
diff --git a/zh-cn/compatibility/cts/downloads.html b/zh-cn/compatibility/cts/downloads.html
index 3484ec18..9666a009 100644
--- a/zh-cn/compatibility/cts/downloads.html
+++ b/zh-cn/compatibility/cts/downloads.html
@@ -22,40 +22,54 @@
<p>感谢您对 Android 兼容性计划的关注!您可以通过以下链接访问关于该计划的重要文档和信息。随着 CTS 的更新,此网页上会陆续添加新的版本。CTS 版本在链接名称中由 R&lt;数字&gt; 表示。</p>
+<h2 id="android-80">Android 8.0</h2>
+<p>Android 8.0 是代号为 Oreo 的开发里程碑版本。
+以下测试的源代码可以与开放源代码树中的“android-cts-8.0_r1”标记同步。</p>
+<ul>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r1-linux_x86-arm.zip">Android 8.0 R1 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r1-linux_x86-x86.zip">Android 8.0 R1 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r1-linux_x86-arm.zip">Android 8.0 R1 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r1-linux_x86-x86.zip">Android 8.0 R1 CTS 验证程序 - x86</a></li>
+</ul>
+
<h2 id="android-71">Android 7.1</h2>
-<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r7”标记同步。</p>
+<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。
+以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r9”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r7-linux_x86-arm.zip">Android 7.1 R7 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r7-linux_x86-x86.zip">Android 7.1 R7 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r7-linux_x86-arm.zip">Android 7.1 R7 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r7-linux_x86-x86.zip">Android 7.1 R7 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r9-linux_x86-arm.zip">Android 7.1 R9 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r9-linux_x86-x86.zip">Android 7.1 R9 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r9-linux_x86-arm.zip">Android 7.1 R9 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r9-linux_x86-x86.zip">Android 7.1 R9 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-70">Android 7.0</h2>
-<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r11”标记同步。</p>
+<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。
+以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r13”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r11-linux_x86-arm.zip">Android 7.0 R11 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r11-linux_x86-x86.zip">Android 7.0 R11 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r11-linux_x86-arm.zip">Android 7.0 R11 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r11-linux_x86-x86.zip">Android 7.0 R11 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r13-linux_x86-arm.zip">Android 7.0 R13 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r13-linux_x86-x86.zip">Android 7.0 R13 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r13-linux_x86-arm.zip">Android 7.0 R13 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r13-linux_x86-x86.zip">Android 7.0 R13 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-60">Android 6.0</h2>
-<p>Android 6.0 是代号为 Marshmallow 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-6.0_r20”标记同步。</p>
+<p>Android 6.0 是代号为 Marshmallow 的开发里程碑版本。
+以下测试的源代码可以与开放源代码树中的“android-cts-6.0_r22”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-6.0_r20-linux_x86-arm.zip">Android 6.0 R20 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-6.0_r20-linux_x86-x86.zip">Android 6.0 R20 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r20-linux_x86-arm.zip">Android 6.0 R20 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r20-linux_x86-x86.zip">Android 6.0 R20 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-6.0_r22-linux_x86-arm.zip">Android 6.0 R22 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-6.0_r22-linux_x86-x86.zip">Android 6.0 R22 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r22-linux_x86-arm.zip">Android 6.0 R22 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r22-linux_x86-x86.zip">Android 6.0 R22 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-51">Android 5.1</h2>
-<p>Android 5.1 是代号为 Lollipop-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-5.1_r21”标记同步。</p>
+<p>Android 5.1 是代号为 Lollipop-MR1 的开发里程碑版本。
+以下测试的源代码可以与开放源代码树中的“android-cts-5.1_r23”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.1_r21-linux_x86-arm.zip">Android 5.1 R21 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.1_r21-linux_x86-x86.zip">Android 5.1 R21 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r21-linux_x86-arm.zip">Android 5.1 R21 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r21-linux_x86-x86.zip">Android 5.1 R21 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.1_r23-linux_x86-arm.zip">Android 5.1 R23 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-5.1_r23-linux_x86-x86.zip">Android 5.1 R23 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r23-linux_x86-arm.zip">Android 5.1 R23 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-5.1_r23-linux_x86-x86.zip">Android 5.1 R23 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-50">Android 5.0</h2>
@@ -125,6 +139,7 @@
<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.4.zip">CTS 媒体 1.4</a></li>
<li><a href="https://dl.google.com/dl/android/cts/android-cts-media-1.3.zip">CTS 媒体 1.3</a></li>
<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>
diff --git a/zh-cn/compatibility/cts/interpret.html b/zh-cn/compatibility/cts/interpret.html
index 9c2fd3c3..e1e5721e 100644
--- a/zh-cn/compatibility/cts/interpret.html
+++ b/zh-cn/compatibility/cts/interpret.html
@@ -29,7 +29,7 @@ $CTS_ROOT/android-cts/repository/results/&lt;start_time&gt;.zip
<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>以启用 --allow-file-access-from-files 命令行标记。<em></em></p>
+<p>使用 Chrome 浏览器时,如果 testResult.xml 显示空白页面,请<a href="https://www.chromium.org/developers/how-tos/run-chromium-with-flags">更改浏览器配置</a>以启用 --allow-file-access-from-files 命令行标记。<em></em> </p>
<h3 id="reading-the-test-results">阅读测试结果</h3>
diff --git a/zh-cn/compatibility/cts/run.html b/zh-cn/compatibility/cts/run.html
index fb3e5495..053047d8 100644
--- a/zh-cn/compatibility/cts/run.html
+++ b/zh-cn/compatibility/cts/run.html
@@ -36,7 +36,7 @@
</li><li>对于 CTS v2(Android 7.0 及更高版本),您可以输入 <code>list modules</code> 来查看测试模块的列表。
</li></ul>
</li>
- <li>或者,使用以下命令从命令行中运行您选择的 CTS 计划:<code>cts-tradefed run cts --plan
+ <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>
diff --git a/zh-cn/compatibility/cts/setup.html b/zh-cn/compatibility/cts/setup.html
index 607e04fb..a78bfb7e 100644
--- a/zh-cn/compatibility/cts/setup.html
+++ b/zh-cn/compatibility/cts/setup.html
@@ -21,19 +21,22 @@
-->
<h2 id="physical_environment">物理环境</h2>
+<h3 id="ble_beacons">蓝牙 LE 信标</h3>
+<p>如果 DUT 支持蓝牙 LE 功能,则至少应在距离 DUT 五米的范围内放置三个蓝牙 LE 信标,以进行蓝牙 LE 扫描测试。这些信标可以为任何类型,不需要进行配置或发射任何特定信号,并且可以包括 iBeacon、Eddystone 甚至模拟 BLE 信标的设备。</p>
+
+<h3 id="gnss">GPS/GNSS</h3>
+<p>如果 DUT 支持全球定位系统 (GPS)/全球导航卫星系统 (GNSS) 功能,则应该以合适的信号电平向 DUT 提供 GPS/GNSS 信号(GPS 部分符合 ICD-GPS-200C 标准),以便其接收到相应信号并计算 GPS 位置。GPS/GNSS 信号源的种类不限(可以是卫星模拟器,也可以是室外 GPS/GNSS 信号中继器),只需将 DUT 放在距离窗口足够近的位置以使其可以直接接收到足够强的 GPS/GNSS 信号即可。</p>
+
<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>在运行 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>
@@ -106,7 +109,7 @@ ro.product.first_api_level=21
<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>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>
@@ -132,7 +135,7 @@ ro.product.first_api_level=21
<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>连接到满足以下要求的 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>
@@ -149,7 +152,8 @@ ro.product.first_api_level=21
<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><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>
@@ -158,7 +162,8 @@ ro.product.first_api_level=21
</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><li>如果 adb 下有多个设备,请将 -s(序列号)选项添加到末尾。
+ 例如,要将高达 720x480 的分辨率复制到序列号为 1234567 的设备,请运行:<code>./copy_media.sh 720x480 -s 1234567</code>
</li></ul>
</li></ul>
</li></ol>
diff --git a/zh-cn/compatibility/cts/usb-audio.html b/zh-cn/compatibility/cts/usb-audio.html
new file mode 100644
index 00000000..6f4c1088
--- /dev/null
+++ b/zh-cn/compatibility/cts/usb-audio.html
@@ -0,0 +1,329 @@
+<html devsite><head>
+ <title>USB 音频 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="https://source.android.com/devices/audio/usb">Android USB 音频</a>的几项 <a href="/compatibility/cts/">Android 兼容性测试套件 (CTS)</a> 测试需要人为干预并连接 USB 音频外设。我们为此实现了额外的 CTS 验证程序测试。
+本文档介绍了这些测试的要求和协议。
+</p>
+
+<h2 id="nomenclature">术语</h2>
+
+<p>
+在本文档中,术语“设备”和“外设”的使用方式非常明确:
+</p>
+<ul>
+<li><em></em>“设备”是指 Android 设备。</li>
+<li><em></em>“外设”指的是连接到 Android 设备的外部 USB 音频外设。</li>
+</ul>
+
+<h2 id="recommended-peripherals">推荐的外设</h2>
+
+<p>
+为了使 USB 音频 CTS 验证程序测试了解它们正在验证的属性和功能,您需要指定一组已知的外设作为测试依据。因此,下面推荐了一些特定品牌和类型。要成功完成这些测试,您使用的每个外设都必须属于下文指定的外设类别中的一种。使用其他类型将导致测试失败。
+</p>
+
+<h3 id="usb-audio-interface">USB 音频接口</h3>
+
+<p class="note"><strong>注意</strong>:此列表只是暂定,随时可能发生变化。</p>
+
+<ul>
+<li><a href="http://www.presonus.com/products/audiobox-22VSL">Presonus AudioBox 22VSL</a></li>
+<li><a href="https://www.presonus.com/products/audiobox-usb">Presonus AudioBox USB</a></li>
+</ul>
+
+<table>
+ <tbody><tr>
+ <td width="50%">USB 音频接口 (PreSonus AudioBox 22VSL)
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/usb_audio_interface.png" alt="USB 音频接口" width="300" id="usb_audio_interface"/></td>
+ </tr>
+</tbody></table>
+
+<h3 id="usb-headset">USB 耳机</h3>
+
+<p class="note"><strong>注意</strong>:此列表只是暂定,随时可能发生变化。</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">USB 耳机
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/usb_headset.png" alt="USB 耳机" width="300" id="usb_headset"/></td>
+ </tr>
+</tbody></table>
+
+<h3 id="peripheral-profiles">外设配置文件</h3>
+
+<p>
+USB 音频 CTS 验证程序测试通过 Android 提供的内置配置文件(其中说明了外设的属性和功能)来“了解”这些推荐的外设。当外设连接到受测 Android 设备时,系统会自动选择正确的配置文件。
+</p>
+
+<h2 id="required-additional-hardware">所需的其他硬件</h2>
+
+<p>跳线(用作回环)
+2 条 ¼" 阳头接 ¼" 阳头的短跳线,用来连接 USB 的输出端和输入端</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">
+ ¼" 阳头接 ¼" 阳头跳线
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/patch_cables.png" alt="跳线" width="300" id="patch_cables"/></td>
+
+ </tr>
+</tbody></table>
+
+<p>USB 外设数据线</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">此数据线(通常随附于外设)可将 USB 音频外设连接到主机设备
+ </td>
+
+ <td width="50%"><img src="/compatibility/cts/images/peripheral_cable.png" alt="外设数据线" width="300" id="peripheral_cable"/></td>
+
+ </tr>
+</tbody></table>
+
+<p>USB On The Go (OTG) 适配器</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">需要使用 USB On The Go (OTG) 适配器才能将外设连接到 Android 设备,并向 Android 设备指明它应该承担“主机”的角色
+ </td>
+
+ <td width="50%"><img src="/compatibility/cts/images/otg_adapter.png" alt="OTG 适配器" width="300" id="otg_adapter"/></td>
+
+ </tr>
+</tbody></table>
+
+<p>模拟耳机用于在播放测试中监测 USB 音频接口的输出。</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">一副模拟耳机。
+ </td>
+
+ <td width="50%"><img src="/compatibility/cts/images/analog_headphones.png" alt="模拟耳机" width="300" id="analog_headphones"/></td>
+
+ </tr>
+</tbody></table>
+
+<h2 id="tests">测试</h2>
+
+<p>
+在每项测试中,请通过点击 <strong>test pass</strong>(对勾标记)按钮来表示测试成功。另外,请通过点击 <strong>test fail</strong>(感叹号)按钮来表示测试失败。
+</p>
+
+<h3 id="attributes-test">属性测试</h3>
+
+<h4 id="abstract">概要</h4>
+
+<p>
+此测试会验证相关属性(支持的采样率、声道配置、采样格式等)是否与设备的已知先验属性集相匹配。
+</p>
+
+<h4 id="process">流程</h4>
+
+<p>
+从主菜单中调用此测试后,请连接 USB 音频外设。如果这些属性相匹配,则系统将启用 <strong>test pass</strong>(对勾标记)按钮。点击 <strong>test pass</strong> 按钮即可表示成功。如果这些属性不匹配,请通过点击 <strong>test fail</strong>(感叹号)按钮来表示测试失败。
+</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">选择“USB Audio Peripheral Attributes Test”。<em></em>
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/attributes_test.png" alt="属性测试" width="300" id="attributes test"/></td>
+ </tr>
+ <tr>
+ <td width="50%">显示的说明摘要
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/attributes_summary.png" alt="属性摘要" width="300" id="attributes_summary"/></td>
+ </tr>
+ <tr>
+ <td width="50%">建立连接前的屏幕
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/attributes_preconnect.png" alt="属性(建立连接前)" width="300" id="attributes_preconnect"/></td>
+ </tr>
+ <tr>
+ <td width="50%">USB 音频外设已通过外设数据线和 OTG 适配器连接到 Android 设备
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/attributes_connected.png" alt="属性(已连接)" width="300" id="attributes_connected"/></td>
+ </tr>
+ <tr>
+ <td width="50%">建立连接后的屏幕
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/attributes_postconnect.png" alt="属性(建立连接后)" width="300" id="attributes_postconnect"/></td>
+ </tr>
+</tbody></table>
+
+<h3 id="play-test">播放测试音轨</h3>
+
+<h4 id="abstract">概要</h4>
+
+<p>
+此测试会验证音频播放是否正常。为实现此目的,它会生成 1KHz 测试音调,然后采用立体声(双声道)将其传送到 USB 音频外设。
+</p>
+
+<h4 id="process">流程</h4>
+
+<p>
+从主菜单中调用此测试后,将 USB 音频接口(包括模拟耳机)连接到用于监测的接口上的耳机输出插孔。
+</p>
+
+<p>
+按 <strong>PLAY</strong> 按钮。如果在耳机的两个声道中都能听到测试音调,请通过点击 <strong>test pass</strong>(对勾标记)按钮来表示测试通过。如果其中任一声道(或两个声道都)无法播放音调,请通过点击 <strong>test fail</strong>(感叹号)按钮来表示测试失败。
+</p>
+
+<h4 id="notes">备注</h4>
+
+<table>
+ <tbody><tr>
+ <td width="50%">选择“USB Audio Peripheral Play Test”<em></em>
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/play_test.png" alt="播放测试" width="300" id="play_test"/></td>
+ </tr>
+ <tr>
+ <td width="50%">显示的说明摘要
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/play_summary.png" alt="播放摘要" width="300" id="play_summary"/></td>
+ </tr>
+ <tr>
+ <td width="50%">建立连接前的屏幕
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/play_preconnect.png" alt="播放(建立连接前)" width="300" id="play_preconnect"/></td>
+ </tr>
+ <tr>
+ <td width="50%">将 USB 音频外设连接到 Android 设备
+<p>
+耳机已连接到用于监测的 USB 音频接口上的耳机输出插孔。
+ </p></td>
+ <td width="50%"><img src="/compatibility/cts/images/play_connected.png" alt="播放(已连接)" width="300" id="play_connected"/></td>
+ </tr>
+ <tr>
+ <td width="50%">建立连接后的屏幕
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/play_postconnect.png" alt="播放(建立连接后)" width="300" id="play_postconnect"/></td>
+ </tr>
+</tbody></table>
+
+<h3 id="record-loopback-test">录制(回环)测试</h3>
+
+<h4 id="abstract">概要</h4>
+
+<p>
+此测试会验证录音功能是否正常。为实现此目的,这项测试会在 USB 音频接口的输出端生成音调,然后通过跳线将该音调传送到 USB 音频外设的输入端。
+</p>
+
+<h4 id="process">流程</h4>
+
+<p>
+从主菜单中调用此测试后,连接 USB 音频接口。
+使用跳线将模拟输出端连接到模拟输入端。按 <strong>RECORD LOOPBACK</strong> 按钮。如果录制的测试音调的两个声道都显示在下面的视图中,请通过点击 <strong>test pass</strong>(对勾标记)按钮来表示测试通过。如果其中任一声道(或两个声道都)未显示,请通过点击 <strong>test fail</strong>(感叹号)按钮来表示测试失败。
+</p>
+
+<h4 id="notes">备注</h4>
+
+<p>
+请确保使用正接法同时连接外设上的输入和输出插孔。需要调整输入等级才能正确显示录制的信号。
+</p>
+
+<table>
+ <tbody><tr>
+ <td width="50%">选择“USB Audio Peripheral Record Test”<em></em>
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/record_test.png" alt="录制测试" width="300" id="record_test"/></td>
+ </tr>
+ <tr>
+ <td width="50%">显示的说明摘要
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/record_summary.png" alt="录制摘要" width="300" id="record_summary"/></td>
+ </tr>
+ <tr>
+ <td width="50%">建立连接前的屏幕
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/record_preconnect.png" alt="录制(建立连接前)" width="300" id="record_preconnect"/></td>
+ </tr>
+ <tr>
+ <td width="50%">USB 音频接口已通过回环连接到 Android 设备</td>
+ <td width="50%"><img src="/compatibility/cts/images/record_connected.png" alt="录制(已连接)" width="300" id="record_connected"/></td>
+ </tr>
+ <tr>
+ <td width="50%">USB 音频接口背面的连接
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/record_connected_back.png" alt="录制(已在背面连接)" width="300" id="record_connected_back"/></td>
+ </tr>
+ <tr>
+ <td width="50%">USB 音频接口正面的连接
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/record_connected_front.png" alt="录制(已在正面连接)" width="300" id="record_connected_front"/></td>
+ </tr>
+ <tr>
+ <td width="50%">建立连接后的屏幕,正在运行录制测试
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/record_postconnect.png" alt="录制(建立连接后)" width="300" id="record_postconnect"/></td>
+ </tr>
+</tbody></table>
+<h3></h3>
+<h3 id="headset-buttons-test">耳机按钮测试</h3>
+<h4 id="abstract">概要</h4>
+<p>
+此测试用于验证是否已正确识别出所推荐耳机上的 <strong>media/transport</strong> 按钮。
+</p>
+<h4 id="process">流程</h4>
+<p>
+从主菜单中调用此测试后,请连接 USB 耳机外设。
+按耳机上的每个 <strong>media/transport</strong>(播放、暂停、音量调高和音量调低)按钮。每当系统识别出一个按钮,它都会在测试面板中被标识出来。识别出所有按钮后,系统将启用 <strong>test pass</strong>(对勾标记)按钮。点击 <strong>test pass</strong> 按钮即可表示成功。如果无法识别整组按钮,请通过点击 <strong>test fail</strong>(感叹号)按钮来表示测试失败。
+</p>
+<h4 id="notes">备注</h4>
+<table>
+ <tbody><tr>
+ <td width="50%">USB 耳机外设已连接到 Android 设备
+<p>
+请留意 OTG 适配器
+ </p></td>
+ <td width="50%"><img src="/compatibility/cts/images/buttons_connected.png" alt="按钮(已连接)" width="300" id="buttons_connected"/></td>
+ </tr>
+ <tr>
+ <td width="50%">选择“USB Audio Peripheral Buttons Test”<em></em>
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/buttons_test.png" alt="按钮测试" width="300" id="buttons_test"/></td>
+ </tr>
+ <tr>
+ <td width="50%">显示的说明摘要
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/buttons_summary.png" alt="按钮摘要" width="300" id="buttons_summary"/></td>
+ </tr>
+ <tr>
+ <td width="50%">已连接外设,但尚未识别出任何按钮
+<p>
+请注意,预期按钮(设备配置文件所知的按钮)用白色文本显示;不属于测试外设的按钮以灰色文本显示
+ </p></td>
+ <td width="50%"><img src="/compatibility/cts/images/buttons_not_recognized.png" alt="未识别出按钮" width="300" id="buttons not recognized"/></td>
+ </tr>
+ <tr>
+ <td width="50%">已连接外设,并已识别出预期按钮
+ </td>
+ <td width="50%"><img src="/compatibility/cts/images/buttons_recognized.png" alt="已识别出按钮" width="300" id="buttons recognized"/></td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/cts/verifier.html b/zh-cn/compatibility/cts/verifier.html
index 4d532fd3..8f84eede 100644
--- a/zh-cn/compatibility/cts/verifier.html
+++ b/zh-cn/compatibility/cts/verifier.html
@@ -20,55 +20,68 @@
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>
+<p>Android 兼容性测试套件验证程序(CTS 验证程序)是对兼容性测试套件 (CTS) 的补充。CTS 能够对那些可进行自动化测试的 API 和功能进行测试,而 CTS 验证程序则可以针对必须依赖于手动操作才能在固定设备上进行测试的 API 和功能(例如音频质量、触摸屏、加速度计、相机等)提供测试。</p>
+
+<h2 id="test_preparation">要求</h2>
+<p>在运行 CTS 验证程序之前,请确保您具有以下设备:</p>
<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 安装到被测设备 (DUT)。<em></em>
- <pre class="devsite-terminal devsite-click-to-copy">adb install -r -g CtsVerifier.apk</pre>
- </li><li>确保设备的系统数据和时间均已正确设置。
-</li></ul>
-<h2 id="cts_test_procedure">CTS 验证程序测试程序</h2>
+<li>一台已验证其 Android API 兼容性(成功地通过了 CTS 测试)的 Android 设备。该设备将作为被测设备 (DUT)。</li>
+<li>一台具有 USB 2.0 兼容端口的 Linux 计算机。与 DUT 之间的所有连接都将通过此端口。</li>
+<li>具有已知可兼容蓝牙、WLAN 直连和 NFC 主机卡模拟 (HCE) 功能的另一台 Android 设备。</li>
+</ul>
+
+<h2 id="setup">设置</h2>
+<p>要设置 CTS 验证程序测试环境,请执行以下操作:</p>
<ol>
- <li>在安装 CTS Verifier.apk 之后,启动 CTS 验证程序应用:<img src="/compatibility/cts/images/cts-verifier-icon.png" alt="启动器中的 CTS 验证程序图标" id="figure1"/>
-<p class="img-caption">
- <strong>图 1.</strong> CTS 验证程序图标</p>
+<li>在 Linux 计算机上:<ul>
+<li>安装 <a href="http://developer.android.com/sdk/index.html">Android SDK</a>。</li>
+<li>下载与被测 Android 版本对应的 <a href="/compatibility/cts/downloads.html">CTS 验证程序 APK</a>。</li>
+</ul>
+</li>
+<li>将 DUT 连接到 Linux 计算机。
+</li><li>通过 Linux 计算机上的终端在 DUT 上安装 <code>CtsVerifier.apk</code>。
+<pre class="devsite-terminal devsite-click-to-copy">
+adb install -r -g CtsVerifier.apk
+</pre>
+</li>
+<li>确保 DUT 的系统数据和时间均已正确设置。</li>
+</ol>
- </li><li>打开后,CTS 验证程序会显示适用于手动验证的所有测试集的列表:<img src="/compatibility/cts/images/cts-verifier-menu.png" alt="CTS 验证程序测试菜单" id="figure2"/>
-<p class="img-caption">
- <strong>图 2.</strong> CTS 验证程序测试菜单</p>
+<h2 id="cts_test_procedure">运行</h2>
+<p>点按 DUT 上的 CTS 图标,启动 CTS 验证程序应用:</p>
+<img src="/compatibility/cts/images/cts-verifier-icon.png" alt="启动器中的 CTS 验证程序图标" id="figure1"/>
+<figcaption><strong>图 1.</strong> CTS 验证程序图标</figcaption>
- </li><li>每项测试均包含一组常用元素(在某些测试中,系统会自动确认测试结果为通过/失败):<ul>
- <li><em></em>信息 - 用于运行测试的一组说明。首次打开每个测试或每当按<strong>信息</strong>按钮 (?) 时,此信息都会以弹出窗口的形式显示。
- </li><li><em></em>通过 - 如果 DUT 符合“信息”中的说明规定的测试要求,请按<strong>通过</strong>按钮 (✓)。
- </li><li><em></em>失败 - 如果 DUT 不符合“信息”中的说明规定的测试要求,请按<strong>失败</strong>按钮 (!)。
- </li></ul>
+<p>该应用会显示适用于手动验证的多个测试集:</p>
+<img src="/compatibility/cts/images/cts-verifier-menu.png" alt="CTS 验证程序测试菜单" id="figure2"/>
+<figcaption><strong>图 2.</strong> CTS 验证程序测试菜单。</figcaption>
+<p>每项测试均包含一组共通元素(信息、通过、失败):</p>
<img src="/compatibility/cts/images/video-verifier.png" alt="流式视频品质验证程序" id="figure3"/>
-<p class="img-caption">
- <strong>图 3.</strong> 视频品质验证程序</p>
+<figcaption><strong>图 3.</strong> 测试元素。</figcaption>
+
+<ul>
+<li><strong>信息</strong> (?)。点按即可显示测试说明。首次打开测试时,系统也会自动显示此按钮。</li>
+<li><strong>通过</strong> (✓)。如果 DUT 符合“信息”中的说明规定的测试要求,请点按此按钮。</li>
+<li><strong>失败</strong> (!)。如果 DUT 不符合“信息”中的说明规定的测试要求,请点按此按钮。</li>
+</ul>
+
+<aside class="note"><strong>注意</strong>:在某些测试中,系统会自动确认测试结果为通过/失败。</aside>
-</li></ol>
+<p>一些测试(例如 USB 配件模式和相机校准测试)需要额外的测试设置和说明(详见以下各部分)。</p>
-<h2 id="specific_test_requirements">具体测试要求</h2>
-<h3 id="usb_accessory">USB 配件</h3>
+<h3 id="usb_accessory">测试 USB 配件模式</h3>
<p>为了运行 USB 配件测试,您需要一台 Linux 计算机来运行 USB 台式机(主机)程序。</p>
<ol>
- <li>将 DUT 连接到计算机。
- </li><li>在计算机上执行 cts-usb-accessory 程序(存放在 CTS 验证程序包中)。
- <pre class="devsite-terminal devsite-click-to-copy">./cts-usb-accessory</pre>
- </li><li>DUT 上将显示一条弹出消息。选择 <strong>OK</strong> 进入 CTS 验证程序应用中的 USB 配件测试。
-<br />
-<img src="/compatibility/cts/images/screen-lock-test.png" alt="CTS 验证程序屏幕锁定测试" id="figure4"/>
-<p class="img-caption">
- <strong>图 4.</strong> 屏幕锁定测试</p>
-
- </li><li>在计算机的控制台上,您将看到类似以下内容的输出内容。
-</li></ol>
+<li>将 DUT 连接到 Linux 计算机。</li>
+<li>在计算机上执行 <code>cts-usb-accessory</code> 程序(存放在 CTS 验证程序包中):<pre class="devsite-terminal devsite-click-to-copy">./cts-usb-accessory</pre>
+</li>
+<li>等待 DUT 上显示弹出消息,然后选择<strong>确定</strong>。<br />
+<img src="/compatibility/cts/images/screen-lock-test.png" alt="CTS 验证程序 USB 配件测试" id="figure4"/>
+<figcaption><strong>图 4.</strong> USB 配件测试。</figcaption>
+</li>
+<li>转到 CTS 验证程序应用中的 USB 配件测试。</li>
+<li>在计算机上,查看控制台的输出。输出示例:
<pre class="devsite-click-to-copy">
CTS USB Accessory Tester
Found possible Android device (413c:2106) - attempting to switch to accessory
@@ -98,63 +111,75 @@ Found Android device in accessory mode (18d1:2d01)...
[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>
+</li>
+</ol>
-<img src="/compatibility/cts/images/camera-printed-target.png" alt="相机打印目标" id="figure5"/>
-<p class="img-caption">
- <strong>图 5.</strong> 相机打印目标</p>
+<h3 id="camera_field_of_view_calibration">校准相机视野</h3>
+<p>使用视野校准程序以适中的精确度快速确定设备的视野。</p>
-<p><strong>设置目标宽度</strong> - 测量目标图案上两条实线之间的距离(以厘米为单位),以考虑打印误差(约 38 厘米)。</p>
<ol>
- <li>启动校准应用。
- </li><li>按设置按钮,然后选择“Marker distance”输入距离。
- </li><li>测量并输入到目标图案的距离(大约 100 厘米)。
- </li><li>按后退按钮返回到校准预览。
-</li></ol>
-<p><strong>校准过程</strong> - 检查设备和目标是否均放在图中所示的位置,以及是否在设置对话框中输入了正确的距离。在预览中,图片上会叠加显示一条垂直线。该垂直线应与目标图案的中心线对齐。透明网格可与其他垂直线配合使用,以确保光轴与目标正交。</p>
+<li>设置测试环境:
<ol>
- <li>从左下角的选择器中选择要测试的图片分辨率。</li><li>点按屏幕以拍摄照片并进入校准模式(如下所述)。
- </li><li>按后退按钮,并为所有支持的图片分辨率重复上述操作。
-</li></ol>
-<p><strong>校准测试(按分辨率)</strong>在校准模式下,照片将显示叠加在图片上的两条垂直线。这两条线应与目标图案上的垂直线对齐(误差控制在几个像素内)。如果没有对齐,则针对该模式报告的视野将不准确(假设设置正确)。调整屏幕底部的滑块,直到叠加层尽可能紧密地与目标图案对齐。当叠加层和目标图案图片对齐时,所显示的视野将近似于正确的值。报告的视野应在校准值的 +/- 1 度范围内。</p>
-<h2 id="exporting_test_reports">导出测试报告</h2>
+<li>在尺寸为 11” x 17”或 A3 的纸张上打印 <a href="/compatibility/calibration-pattern.pdf">calibration-pattern.pdf</a> 目标文件。</li>
+<li>将打印出来的图案贴在一个硬材质底板上。</li>
+<li>将相机设备和打印出来的图纸按如下位置和方向摆放:<br />
+<img src="/compatibility/cts/images/camera-printed-target.png" alt="相机打印目标" id="figure5"/>
+<figcaption><strong>图 5.</strong> 相机打印目标</figcaption>
+</li>
+</ol>
+</li>
+<li>设置目标宽度:
<ol>
- <li>完成所有测试后,点按<strong>保存(磁盘)</strong>图标。
- <br />
- <img src="/compatibility/cts/images/verifier-save-icon.png" alt="CTS 验证程序保存图标" id="figure6"/>
- <p class="img-caption">
- <strong>图 6.</strong> CTS 验证程序保存图标。<em></em>注意:Android 7.0 及更高版本中已移除预览功能:<img src="/compatibility/cts/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>
- 要下载所有报告,请运行:
- <pre class="devsite-terminal devsite-click-to-copy">adb pull /sdcard/verifierReports</pre>
- 对于 Android 6.0 及更早版本,请运行:
- <pre class="devsite-terminal devsite-click-to-copy">adb pull /mnt/sdcard/ctsVerifierReports/</pre>
- </li>
- <li>
- 报告的名称会加上时间戳(基于 DUT 的系统时间)。
- </li>
- <li>
- 要清除选择的结果,请依次选择 <strong>Menu &gt; Clear</strong>。该操作将清除通过/失败结果。
- </li>
- </ul>
- </li>
+<li>测量目标图案上两条实线之间的距离(以厘米为单位),以考虑打印误差(约 38 厘米)。</li>
+<li>启动校准应用。</li>
+<li>按设置按钮,然后选择“Marker distance”<em></em>。</li>
+<li>测量并输入到目标图案的距离(大约 100 厘米)。</li>
+<li>按后退按钮返回到校准预览。</li>
+</ol>
+</li>
+<li>检查设备和目标是否均放在图中所示的位置,以及是否在设置对话框中输入了正确的距离。在预览中,图片上会叠加显示一条垂直线;该垂直线应与目标图案的中心线对齐。透明网格可与其他垂直线配合使用,以确保光轴与目标正交。</li>
+<li>运行校准测试:
+<ol>
+<li>选择图片分辨率(使用左下角的选择器),然后点按屏幕拍摄照片。测试会进入校准模式,并且照片将显示叠加在图片上的两条垂直线。</li>
+<li>确定准确度:
+<ul>
+<li>如果这两条线与目标图案上的垂直线是对齐的(误差控制在几个像素内),则针对选定分辨率报告的视野是准确的。
+</li>
+<li>如果没有对齐,则报告的视野将不准确。要进行更正,请调整屏幕底部的滑块,直到叠加层尽可能紧密地与目标图案对齐。当叠加层和目标图案图片对齐时,所显示的视野将近似于正确的值。报告的视野应在校准值的 +/- 1 度范围内。</li>
+</ul>
+</li>
+<li>按后退按钮,并为 DUT 支持的所有图片分辨率重复运行校准测试。</li>
+</ol>
+</li>
+</ol>
+
+<h2 id="exporting_test_reports">导出结果</h2>
+<p>完成所有测试后,您可以将结果另存为报告并下载到计算机上。报告名称会自动加上时间戳(基于 DUT 系统时间)。</p>
+
+<ol>
+<li>点按<strong>保存(磁盘)</strong>图标。<br />
+<img src="/compatibility/cts/images/verifier-save-icon.png" alt="CTS 验证程序保存图标" id="figure6"/>
+<figcaption><strong>图 6.</strong> CTS 验证程序保存图标。</figcaption>
+<aside class="note"><strong>注意</strong>:Android 7.0 及更高版本不包含预览功能。</aside>
+</li>
+<li>等待弹出消息显示已保存报告的路径(例如 <code>/sdcard/verifierReports/ctsVerifierReport-date-time.zip</code>),然后记录该路径。<br />
+<img src="images/path-saved-report.png" alt="CTS 验证程序保存报告的路径" id="figure7"/>
+<figcaption><strong>图 7.</strong> CTS 验证程序保存报告的路径。</figcaption>
+</li>
+<li>将 DUT 连接到 Linux 计算机。</li>
+<li>通过在 Linux 计算机上安装的 Android SDK,在已连接的设备中使用 <code>adb pull CTSVerifierReportPath</code> 下载报告。
+<ul>
+<li>对于 Android 7.x 及更高版本,请使用以下命令下载所有报告:<pre class="devsite-terminal devsite-click-to-copy">
+adb pull /sdcard/verifierReports
+</pre>
+</li>
+<li>对于 Android 6.0 及更早版本,请使用以下命令下载所有报告:<pre class="devsite-terminal devsite-click-to-copy">
+adb pull /mnt/sdcard/ctsVerifierReports/
+</pre>
+</li>
+</ul>
+</li>
+<li>要清除通过/失败结果,请在 CTS 验证程序应用中选择这些结果,然后依次选择“菜单”&gt;“清除”。<em></em></li>
</ol>
</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/index.html b/zh-cn/compatibility/index.html
index f8f76872..1263644f 100644
--- a/zh-cn/compatibility/index.html
+++ b/zh-cn/compatibility/index.html
@@ -23,8 +23,9 @@
<p>Android 的目的是构建一个开放平台,供开发者打造创新应用。</p>
<ul>
<li>Android 兼容性计划定义了 Android 平台的技术细节,并为原始设备制造商 (OEM) 提供了各种工具,以确保开发者应用可以在各种设备上顺利运行。</li>
-<li>Android SDK 为开发者提供了内置工具,方便他们清楚地说明其应用所需的设备功能。
-</li><li>Google Play 只会将应用显示给可以正常运行这些应用的设备。</li>
+<li>Android SDK 为开发者提供了内置工具,方便他们清楚地说明其应用所需的设备功能。</li>
+<li>Google Play 只会将应用显示给可以正常运行这些应用的设备。</li>
+</ul>
<h2 id="why-build-compatible-android-devices">为什么要打造兼容的 Android 设备?</h2>
@@ -56,4 +57,4 @@
<h2 id="licensing-gms">申请 Google 移动服务 (GMS) 许可</h2>
<p>打造 Android 兼容设备后,请考虑申请 Android 上的 Google 移动服务(简称 GMS,由 Google Play、YouTube、Google 地图、Gmail 等 Google 拥有的一系列应用组成)许可。GMS 不是 Android 开放源代码项目的一部分,仅通过 Google 授予许可的方式提供。有关如何申请 GMS 许可的信息,请查看<a href="contact-us.html">与我们联系</a>。</p>
-</ul></body></html> \ No newline at end of file
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/overview.html b/zh-cn/compatibility/overview.html
index eabf1bfb..284d3a3c 100644
--- a/zh-cn/compatibility/overview.html
+++ b/zh-cn/compatibility/overview.html
@@ -51,6 +51,6 @@
</a><li><a></a><a href="cts/index.html">兼容性测试套件 (CTS)</a>,代表兼容性的“机制”</li>
</ul>
-<p>就像每个版本的 Android 平台存在于源代码树的单独分支中一样,每个版本也具有单独的 CTS 和 CDD。CDD、CTS 和源代码以及硬件和软件自定义内容即是创建兼容设备所需的一切。</p>
+<p>就像每个版本的 Android 平台存在于源代码树的单独分支中一样,每个版本也具有单独的 CTS 和 CDD。CDD、CTS 和源代码,再加上硬件和软件自定义内容,即是打造兼容设备所需的一切。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/configstore/add-class-item.html b/zh-cn/devices/architecture/configstore/add-class-item.html
new file mode 100644
index 00000000..aaa2cefe
--- /dev/null
+++ b/zh-cn/devices/architecture/configstore/add-class-item.html
@@ -0,0 +1,179 @@
+<html devsite><head>
+ <title>添加 ConfigStore 类和项</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>您可以为现有接口类添加新的 ConfigStore 项(即接口方法)。如果您未定义接口类,则必须先添加一个新类,然后才能为该接口类添加 ConfigStore 项。本部分使用 <code>disableInitBlank</code> 配置项示例来演示将 <code>healthd</code> 添加到 <code>IChargerConfigs</code> 接口类的过程。</p>
+
+<p class="note"><strong>注意</strong>:请务必先熟悉<a href="/devices/architecture/hidl/index.html">常规 HIDL 概念</a>、<a href="/devices/architecture/hidl-cpp/index.html">HIDL C++ 开发工作流程</a>、<a href="/devices/architecture/hidl/code-style.html">HIDL 代码样式</a>和 <a href="/devices/architecture/configstore/index.html">ConfigStore 设计</a>,然后再继续操作。</p>
+
+<h2 id="add-class">添加接口类</h2>
+<p>如果您没有为要添加的接口方法定义接口类,则必须先添加接口类,然后才能添加相关联的 ConfigStore 项。</p>
+
+<ol>
+<li>创建 HAL 接口文件。ConfigStore 版本为 1.0,因此请在 <code>hardware/interfaces/configstore/1.0</code> 中定义 ConfigStore 接口。例如,在 <strong><code>hardware/interfaces/configstore/1.0/IChargerConfigs.hal</code></strong> 中运行以下命令:<pre class="devsite-click-to-copy">
+package android.hardware.configstore@1.0;
+
+interface IChargerConfigs {
+ // TO-BE-FILLED-BELOW
+};
+</pre></li>
+
+<li>为 ConfigStore 共享库和标头文件更新 <code>Android.bp</code> 和 <code>Android.mk</code>,以包含新的接口 HAL。例如:
+
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">hidl-gen -o hardware/interfaces/configstore/1.0/default -Lmakefile -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0::IChargerConfigs</code>
+<code class="devsite-terminal">hidl-gen -o hardware/interfaces/configstore/1.0/default -Landroidbp -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0::IChargerConfigs</code>
+</pre>
+这些命令可在 <code>hardware/interfaces/configstore/1.0</code> 中更新 <code>Android.bp</code> 和 <code>Android.mk</code>。</li>
+
+<li>生成用于实现服务器代码的 C++ 存根。例如:
+
+<pre class="devsite-terminal devsite-click-to-copy">
+hidl-gen -o hardware/interfaces/configstore/1.0/default -Lc++-impl -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.configstore@1.0::IChargerConfigs
+</pre>此命令可在 <code>hardware/interfaces/configstore/1.0/default</code> 中创建两个文件:<code>ChargerConfigs.h</code> 和 <code>ChargerConfigs.cpp</code>。</li>
+
+<li>打开 .h 和 .cpp 实现文件,并移除与函数 <code>HIDL_FETCH_<em>name</em></code>(例如 <code>HIDL_FETCH_IChargerConfigs</code>)相关的代码。这是 HIDL 直通模式所需的函数,ConfigStore 不使用该模式。</li>
+
+<li>将实现注册为 ConfigStore 服务。例如,在 <strong><code>hardware/interfaces/configstore/1.0/default/service.cpp</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+#include &lt;android/hardware/configstore/1.0/IChargerConfigs.h&gt;
+#include "ChargerConfigs.h"
+
+using android::hardware::configstore::V1_0::IChargerConfigs;
+using android::hardware::configstore::V1_0::implementation::ChargerConfigs;
+
+int main() {
+ ... // other code
+ sp&lt;IChargerConfigs&gt; chargerConfigs = new ChargerConfigs;
+ status = chargerConfigs-&gt;registerAsService();
+ LOG_ALWAYS_FATAL_IF(status != OK, "Could not register IChargerConfigs");
+ ... // other code
+}
+</pre></li>
+
+<li>修改 <code>Android.mk</code> 文件,以便将实现文件 (<em></em>modulenameConfigs.cpp) 添加到 LOCAL_SRC_FILES 并将编译标记映射到宏定义中。例如,在 <strong><code>hardware/interfaces/configstore/1.0/default/Android.mk</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+LOCAL_SRC_FILES += ChargerConfigs.cpp
+
+ifeq ($(strip $(BOARD_CHARGER_DISABLE_INIT_BLANK)),true)
+LOCAL_CFLAGS += -DCHARGER_DISABLE_INIT_BLANK
+endif
+</pre></li>
+
+<li>(可选)添加清单项。如果清单项不存在,则默认添加 ConfigStore 的“default”实例名称。例如,在 <strong><code>device/google/marlin/manifest.xml</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+ &lt;hal format="hidl"&gt;
+ &lt;name&gt;android.hardware.configstore&lt;/name&gt;
+ ...
+ &lt;interface&gt;
+ &lt;name&gt;IChargerConfigs&lt;/name&gt;
+ &lt;instance&gt;default&lt;/instance&gt;
+ &lt;/interface&gt;
+ &lt;/hal&gt;
+</pre></li>
+
+<li>视需要(即,如果客户端没有向 <code>hal_configstore</code> 进行 hwbinder 调用的权限)添加 sepolicy 规则。例如,在 <strong><code>system/sepolicy/private/healthd.te</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+... // other rules
+binder_call(healthd, hal_configstore)
+</pre></li>
+</ol>
+
+<h2 id="add-item">添加新的 ConfigStore 项</h2>
+<p>要添加新的 ConfigStore 项,请执行以下操作:</p>
+<ol>
+<li>打开 HAL 文件,并为该项添加所需的接口方法(ConfigStore 的 .hal 文件位于 <code>hardware/interfaces/configstore/1.0</code> 中)。例如,在 <strong><code>hardware/interfaces/configstore/1.0/IChargerConfigs.hal</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+package android.hardware.configstore@1.0;
+
+interface IChargerConfigs {
+ ... // Other interfaces
+ disableInitBlank() generates(OptionalBool value);
+};
+</pre></li>
+
+<li>在相应的接口 HAL 实现文件(.h 和 .cpp)中实现该方法。将默认实现放置在 <code>hardware/interfaces/configstore/1.0/default</code> 中。
+
+<p class="note"><strong>注意</strong>:使用 <code>-Lc++-impl</code> 运行 <code>hidl-gen</code> 将为新添加的接口方法生成框架代码。不过,由于该方法也会覆盖所有现有接口方法的实现,因此请酌情使用 <code>-o</code> 选项。</p>
+
+例如,在 <strong><code>hardware/interfaces/configstore/1.0/default/ChargerConfigs.h</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+struct ChargerConfigs : public IChargerConfigs {
+ ... // Other interfaces
+ Return&lt;void&gt; disableInitBlank(disableInitBlank_cb _hidl_cb) override;
+};
+</pre>
+
+在 <strong><code>hardware/interfaces/configstore/1.0/default/ChargerConfigs.cpp</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+Return&lt;void&gt; ChargerConfigs::disableInitBlank(disableInitBlank_cb _hidl_cb) {
+ bool value = false;
+#ifdef CHARGER_DISABLE_INIT_BLANK
+ value = true;
+#endif
+ _hidl_cb({true, value});
+ return Void();
+}
+</pre></li>
+</ol>
+
+<h2 id="using">使用 ConfigStore 项</h2>
+<p>要使用 ConfigStore 项,请执行以下操作:</p>
+
+<ol>
+<li>添加所需的标头文件。例如,在 <strong><code>system/core/healthd/healthd.cpp</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+#include &lt;android/hardware/configstore/1.0/IChargerConfigs.h&gt;
+#include &lt;configstore/Utils.h&gt;
+</pre></li>
+
+<li>使用 <code>android.hardware.configstore-utils</code> 中相应的模板函数访问 ConfigStore 项。例如,在 <strong><code>system/core/healthd/healthd.cpp</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+using namespace android::hardware::configstore;
+using namespace android::hardware::configstore::V1_0;
+
+static int64_t disableInitBlank = getBool&lt;
+ IChargerConfigs,
+ &amp;IChargerConfigs::disableInitBlank&gt;(false);
+</pre>
+在本例中,系统检索了 ConfigStore 项 <code>disableInitBlank</code> 并将其存储到某个变量中(在需要多次访问该变量时,这样做非常有帮助)。从 ConfigStore 检索的值会缓存到实例化的模板函数内,这样系统就可以快速从缓存值中检索到该值,而无需与 ConfigStore 服务通信以便稍后调用实例化的模板函数。
+</li>
+
+<li>在 <code>Android.mk</code> 或 <code>Android.bp</code> 中添加对 ConfigStore 和 <code>configstore-utils</code> 库的依赖关系。例如,在 <strong><code>system/core/healthd/Android.mk</code></strong> 中运行以下命令:
+
+<pre class="devsite-click-to-copy">
+LOCAL_SHARED_LIBRARIES := \
+ android.hardware.configstore@1.0 \
+ android.hardware.configstore-utils \
+ ... (other libraries) \
+</pre></li>
+</ol>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/configstore/client.html b/zh-cn/devices/architecture/configstore/client.html
new file mode 100644
index 00000000..ad5fce5e
--- /dev/null
+++ b/zh-cn/devices/architecture/configstore/client.html
@@ -0,0 +1,132 @@
+<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>您可以重构经过条件式编译的代码,以便从 HAL 接口动态读取值。例如:</p>
+
+<pre class="devsite-click-to-copy">
+#ifdef TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS
+//some code fragment
+#endif
+</pre>
+
+<p>随后,框架代码便可以调用一个在 <code>&lt;configstore/Utils.h&gt;</code> 中定义的适当效用函数(根据其类型)。</p>
+
+<h2 id="example">ConfigStore 示例</h2>
+<p>以下示例显示了读取 <code>TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS</code>(在 ConfigStore HAL 中定义为 <code>forceHwcForVirtualDisplays()</code>,返回类型为 <code>OptionalBool</code>)的情形:</p>
+
+<pre class="devsite-click-to-copy">
+#include &lt;configstore/Utils.h&gt;
+using namespace android::hardware::configstore;
+using namespace android::hardware::configstore::V1_0;
+
+static bool vsyncPhaseOffsetNs = getBool&lt;ISurfaceFlingerConfigs,
+ ISurfaceFlingerConfigs::forceHwcForVirtualDisplays&gt;(false);
+</pre>
+
+<p>效用函数(上例中的 <code>getBool</code>)会与 <code>configstore</code> 服务进行通信以获取接口函数代理的句柄,然后通过 HIDL/hwbinder 来调用句柄,从而检索该值。</p>
+
+<h2 id="utility-functions">效用函数</h2>
+<p><code>&lt;configstore/Utils.h&gt;</code> (<code>configstore/1.0/include/configstore/Utils.h</code>) 会为每个原始返回类型(包括 <code>Optional[Bool|String|Int32|UInt32|Int64|UInt64]</code>)提供效用函数,如下所示:</p>
+
+<table>
+
+<tbody><tr>
+<th>类型</th>
+<th>函数(已省略模板参数)<em></em></th>
+</tr>
+
+<tr>
+<td><code>OptionalBool</code></td>
+<td><code>bool getBool(const bool defValue)</code></td>
+</tr>
+
+<tr>
+<td><code>OptionalInt32</code></td>
+<td><code>int32_t getInt32(const int32_t defValue)</code></td>
+</tr>
+
+<tr>
+<td><code>OptionalUInt32</code></td>
+<td><code>uint32_t getUInt32(const uint32_t defValue)</code></td>
+</tr>
+
+<tr>
+<td><code>OptionalInt64</code></td>
+<td><code>int64_t getInt64(const int64_t defValue)</code></td>
+</tr>
+
+<tr>
+<td><code>OptionalUInt64</code></td>
+<td><code>uint64_t getUInt64(const uint64_t defValue)</code></td>
+</tr>
+
+<tr>
+<td><code>OptionalString</code></td>
+<td><code>std::string getString(const std::string &amp;defValue)</code></td>
+</tr>
+
+</tbody></table>
+
+<p><code>defValue</code> 是在 HAL 实现没有为配置项指定值时返回的默认值。每个函数都需要使用两个模板参数:</p>
+<ul>
+<li><code><strong>I</strong></code>. 接口类名称。</li>
+<li><code><strong>Func</strong></code>. 用于获取配置项的成员函数指针。</li>
+</ul>
+<p>由于配置值是只读属性且不会发生更改,因此效用函数会在内部缓存配置值。使用同一链接单元中的缓存值可以更有效地执行后续调用。</p>
+
+<h2 id="utils">使用 configstore-utils</h2>
+<p>ConfigStore HAL 旨在向前兼容次要版本升级,这意味着当 HAL 进行升级并且某些框架代码使用新引入的项时,您仍然可以使用 <code>/vendor</code> 中旧的次要版本的 ConfigStore 服务。</p>
+
+<p>为了实现向前兼容性,请确保在实现过程中遵循以下准则:</p>
+
+<ol>
+<li>当只有旧版服务可用时,新项使用默认值。<em></em>例如:
+
+<pre class="devsite-click-to-copy">
+service = V1_1::IConfig::getService(); // null if V1_0 is installed
+value = DEFAULT_VALUE;
+ if(service) {
+ value = service-&gt;v1_1API(DEFAULT_VALUE);
+ }
+</pre>
+
+</li>
+
+<li>客户端使用引入 ConfigStore 项的最早的接口。例如:
+
+<pre class="devsite-click-to-copy">
+V1_1::IConfig::getService()-&gt;v1_0API(); // NOT ALLOWED
+
+V1_0::IConfig::getService()-&gt;v1_0API(); // OK
+</pre>
+</li>
+<li>可以为旧版接口检索新版服务。在以下示例中,如果已安装版本为 v1_1,则必须为 getService() 返回 v1_1 服务:<pre class="devsite-click-to-copy">
+V1_0::IConfig::getService()-&gt;v1_0API();
+</pre>
+
+<p class="note"><strong>注意</strong>:<a href="https://android-review.googlesource.com/c/393736/">当前 AOSP 实现</a>符合此要求。</p>
+</li>
+</ol>
+
+<p>当 <code>configstore-utils</code> 库中的访问函数用于访问 ConfigStore 项时,#1 由实现保证,#2 由编译器错误保证。基于这些原因,我们强烈建议尽量使用 <code>configstore-utils</code>。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/configstore/index.html b/zh-cn/devices/architecture/configstore/index.html
new file mode 100644
index 00000000..cbd5b5c1
--- /dev/null
+++ b/zh-cn/devices/architecture/configstore/index.html
@@ -0,0 +1,56 @@
+<html devsite><head>
+ <title>Configstore 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 O 将整个 Android 操作系统拆分为通用分区 (system.img) 和特定于硬件的分区(vendor.img 和 odm.img)。受这种变更的影响,您必须从安装到系统分区的模块中移除条件式编译,而且此类模块现在必须在运行时确定系统配置(并根据相应配置采取不同的行为)。</p>
+
+<p>ConfigStore HAL 提供了一组 API,可供访问用于配置 Android 框架的只读配置项。本页介绍了 ConfigStore HAL 的设计(以及不使用系统属性来访问只读配置项的原因);本部分的其他页面详细介绍了 <a href="/devices/architecture/configstore/interface.html">HAL 接口</a>、<a href="/devices/architecture/configstore/service.html">服务实现</a>和<a href="/devices/architecture/configstore/client.html">客户端使用情况</a>,所有这些均以 <code>surfaceflinger</code> 为例。如需获得 ConfigStore 接口类的相关帮助,请参阅<a href="/devices/architecture/configstore/add-class-item.html">添加接口类和项</a>。</p>
+
+<h2 id="system-properties">为什么不使用系统属性?</h2>
+<p>我们考虑过使用系统属性,但发现了以下几个重大问题,例如:</p>
+<ul>
+<li><strong>值的长度受限</strong>:系统属性对其值的长度具有严格限制(92 个字节)。此外,由于这些限制已作为 C 宏直接提供给 Android 应用,增加长度会导致出现向后兼容性问题。</li>
+<li><strong>无类型支持</strong>:所有值本质上都是字符串,而 API 仅仅是将字符串解析为 <code>int</code> 或 <code>bool</code>。其他复合数据类型(数组、结构体等)应由客户端进行编码/解码(例如,“aaa,bbb,ccc”可以解码为由三个字符串组成的数组)。
+</li>
+<li><strong>覆盖</strong>:由于只读系统属性是以一次写入属性的形式实现的,因此如果供应商/原始设计制造商 (ODM) 想要覆盖 AOSP 定义的只读值,则必须先于 AOSP 定义的只读值导入自己的只读值,而这反过来又会导致供应商定义的可重写值被 AOSP 定义的值所覆盖。</li>
+<li><strong>地址空间要求</strong>:系统属性在每个进程中都会占用较大的地址空间。系统属性在 <code>prop_area</code> 单元中以 128KB 的固定大小进行分组,即使目前只访问该单元中的一个系统属性,其中的所有属性也将会分配到进程地址空间。这可能会导致对地址空间需求较高的 32 位设备出现问题。</li>
+</ul>
+<p>我们曾尝试在不牺牲兼容性的情况下克服这些限制,但依然会担心系统属性的设计不支持访问只读配置项。最终,我们判定系统属性更适合在所有 Android 中实时共享一些动态更新内容,因此需要采用一个专用于访问只读配置项的新系统。</p>
+
+<h2>ConfigStore HAL 设计</h2>
+<p>基本设计很简单:</p>
+<p><img src="../images/treble_configstore_design.png"/></p>
+<p><strong>图 1.</strong> ConfigStore HAL 设计</p>
+
+<ul>
+<li>以 HIDL 描述编译标记(目前用于对框架进行条件式编译)。</li>
+<li>供应商和原始设备制造商 (OEM) 通过实现 HAL 服务为编译标记提供 SoC 和设备特定值。</li>
+<li>修改框架,以使用 HAL 服务在运行时查找配置项的值。</li>
+</ul>
+
+<p>当前由框架引用的配置项会包含在具有版本号的 HIDL 软件包 (<code>android.hardware.configstore@1.0</code>) 中。供应商和/或原始设备制造商 (OEM) 通过实现此软件包中的接口为配置项提供值,而框架会在需要获取配置项的值时使用接口。</p>
+
+<h2 id="security">安全注意事项</h2>
+<p>在同一接口中定义的编译标记会受到相同 SELinux 政策的影响。如果一个或多个编译标记应具有不同的 SELinux 政策,则<strong>必须将这些标记分隔到其他接口</strong>。这可能需要对 <code>android.hardware.configstore package</code> 进行重大升级,因为被分隔的接口不再向后兼容。</p>
+
+<aside class="note"><strong>注意</strong>:要详细了解 Android 8.0 SELinux,请参阅 <a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for Android 8.0</a>。</aside>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/configstore/interface.html b/zh-cn/devices/architecture/configstore/interface.html
new file mode 100644
index 00000000..0314bf3a
--- /dev/null
+++ b/zh-cn/devices/architecture/configstore/interface.html
@@ -0,0 +1,134 @@
+<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>您必须使用 HIDL 来描述用于对框架进行条件式编译的所有编译标记。相关编译标记必须分组并包含在单个 <code>.hal</code> 文件中。使用 HIDL 指定配置项具有以下优势:</p>
+<ul>
+<li>可实施版本控制(为了添加新配置项,供应商/OEM 必须明确扩展 HAL)</li>
+<li>记录详尽</li>
+<li>可使用 SELinux 实现访问控制</li>
+<li>可通过<a href="/devices/tech/test_infra/tradefed/fundamentals/vts">供应商测试套件</a>对配置项进行全面检查(范围检查、各项内容之间的相互依赖性检查等)</li>
+<li>在 C++ 和 Java 中自动生成 API</li>
+</ul>
+
+<h2 id="identify-flags">确定框架使用的编译标记</h2>
+<p>首先,请确定用于对框架进行条件式编译的编译标记,然后舍弃过时的配置以缩小编译标记集的范围。例如,下列编译标记集已确定用于 <code>surfaceflinger</code>:</p>
+<ul>
+<li><code>TARGET_USES_HWC2</code>(即将弃用)</li>
+<li><code>TARGET_BOARD_PLATFORM</code></li>
+<li><code>TARGET_DISABLE_TRIPLE_BUFFERING</code></li>
+<li><code>TARGET_FORCE_HWC_FOR_VIRTUAL_DISPLAYS</code></li>
+<li><code>NUM_FRAMEBUFFER_SURFACE_BUFFERS</code></li>
+<li><code>TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK</code></li>
+<li><code>VSYNC_EVENT_PHASE_OFFSET_NS</code></li>
+<li><code>SF_VSYNC_EVENT_PHASE_OFFSET_NS</code>(即将弃用)</li>
+<li><code>PRESENT_TIME_OFFSET_FROM_VSYNC_NS</code></li>
+<li><code>MAX_VIRTUAL_DISPLAY_DIMENSION</code></li>
+</ul>
+
+<h2 id="create-interface">创建 HAL 接口</h2>
+<p>子系统的编译配置是通过 HAL 接口访问的,而用于提供配置值的接口会在 HAL 软件包 <code>android.hardware.configstore</code>(目前为 1.0 版)中进行分组。例如,要为 <code>surfaceflinger</code> 创建 HAL 接口文件,请在 <strong><code>hardware/interfaces/configstore/1.0/ISurfaceFlingerConfigs.hal</code></strong> 中运行以下命令:
+</p>
+
+<pre class="devsite-click-to-copy">
+package android.hardware.configstore@1.0;
+
+interface ISurfaceFlingerConfigs {
+ // TO-BE-FILLED-BELOW
+};
+</pre>
+
+<p>创建 <code>.hal</code> 文件后,请运行 <code>hardware/interfaces/update-makefiles.sh</code> 以将新的 <code>.hal</code> 文件添加到 <code>Android.bp</code> 和 <code>Android.mk</code> 文件中。</p>
+
+<h2 id="add-functions">为编译标记添加函数</h2>
+<p>对于每个编译标记,请向相应接口各添加一个新函数。例如,在 <strong><code>hardware/interfaces/configstore/1.0/ISurfaceFlingerConfigs.hal</code></strong> 中运行以下命令:
+</p>
+
+<pre class="devsite-click-to-copy">
+interface ISurfaceFlingerConfigs {
+ disableTripleBuffering() generates(OptionalBool ret);
+ forceHwcForVirtualDisplays() generates(OptionalBool ret);
+ enum NumBuffers: uint8_t {
+ USE_DEFAULT = 0,
+ TWO = 2,
+ THREE = 3,
+ };
+ numFramebufferSurfaceBuffers() generates(NumBuffers ret);
+ runWithoutSyncFramework() generates(OptionalBool ret);
+ vsyncEventPhaseOffsetNs generates (OptionalUInt64 ret);
+ presentTimeOffsetFromSyncNs generates (OptionalUInt64 ret);
+ maxVirtualDisplayDimension() generates(OptionalInt32 ret);
+};
+</pre>
+
+<p>添加函数时,请注意以下事项:</p>
+<ul>
+<li><strong>采用简洁的名称</strong>。请避免将 makefile 变量名称转换为函数名称,并切记 <code>TARGET_</code> 和 <code>BOARD_</code> 前缀不再是必需的。</li>
+<li><strong>添加注释</strong>。帮助开发者了解配置项的用途,配置项如何改变框架行为、有效值等。</li>
+</ul>
+<p>函数返回类型可以是 <code>Optional[Bool|String|Int32|UInt32|Int64|UInt64]</code>。类型会在同一目录中的 <code>types.hal</code> 中进行定义,并使用字段(可表明原始值是否是由 HAL 指定)来封装原始值;如果原始值不是由 HAL 指定,则使用默认值。</p>
+
+<pre class="devsite-click-to-copy">
+struct OptionalString {
+ bool specified;
+ string value;
+};
+</pre>
+
+<p>在适当的情况下,请定义最能代表配置项类型的枚举,并将该枚举用作返回类型。在上述示例中,<code>NumBuffers</code> 枚举会被定义为限制有效值的数量。在定义这类自定义数据类型时,请添加字段或枚举值(例如 <code>USE_DEFAULT</code>)来表示该值是否由 HAL 指定。</p>
+
+<p>在 HIDL 中,单个编译标记并不一定要变成单个函数。模块所有者也可以将密切相关的编译标记汇总为一个结构体,并通过某个函数返回该结构体(这样做可以减少函数调用的次数)。</p>
+
+<p>例如,用于在 <strong><code>hardware/interfaces/configstore/1.0/ISurfaceFlingerConfigs.hal</code></strong> 中将两个编译标记汇总到单个结构体的选项如下:</p>
+
+<pre class="devsite-click-to-copy">
+ interface ISurfaceFlingerConfigs {
+ // other functions here
+ struct SyncConfigs {
+ OptionalInt64 vsyncEventPhaseoffsetNs;
+ OptionalInt64 presentTimeoffsetFromSyncNs;
+ };
+ getSyncConfigs() generates (SyncConfigs ret);
+ // other functions here
+};
+</pre>
+
+<h2 id="alternatives">单个 HAL 函数的替代函数</h2>
+
+<p>作为针对所有编译标记使用单个 HAL 函数的替代函数,HAL 接口还提供了 <code>getBoolean(string
+key)</code> 和 <code>getInteger(string key)</code> 等简单函数。实际的 <code>key=value</code> 对会存储在单独的文件中,而 HAL 服务会通过读取/解析这些文件来提供值。</p>
+
+<p>虽然这种方法很容易定义,但它不具备 HIDL 提供的优势(强制实施版本控制、便于记录、实现访问控制),因此不推荐使用。</p>
+
+<p class="note"><strong>注意</strong>:在使用简单函数时,几乎不可能实现访问控制,因为 HAL 自身无法识别客户端。</p>
+
+<h2 id="single-multiple">单个接口与多个接口</h2>
+<p>面向配置项设计的 HAL 接口提供了以下两种选择:</p>
+
+<ol>
+<li>单个接口;涵盖所有配置项</li>
+<li>多个接口;每个接口分别涵盖一组相关配置项</li>
+</ol>
+<p>单个接口更易于使用,但随着更多的配置项添加到单个文件中,单个接口可能会越来越难以维护。此外,由于访问控制不够精细,获得接口访问权限的进程可能会读取所有配置项(无法授予对部分配置项的访问权限)。此外,如果未授予访问权限,则无法读取任何配置项。</p>
+
+<p>由于存在这些问题,Android 会针对一组相关配置项将多个接口与单个 HAL 接口搭配使用。例如,对 <code>surfaceflinger</code> 相关配置项使用 <code>ISurfaceflingerConfigs</code>,对蓝牙相关配置项使用 <code>IBluetoothConfigs</code> 等等。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/configstore/service.html b/zh-cn/devices/architecture/configstore/service.html
new file mode 100644
index 00000000..092ee595
--- /dev/null
+++ b/zh-cn/devices/architecture/configstore/service.html
@@ -0,0 +1,104 @@
+<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>为了准备 HAL 实现,您可以先生成基本的 configstore 接口代码,然后再对其进行修改以满足自己的需求。</p>
+
+<h2 id="generate-boilerplate">生成接口代码</h2>
+<p>要为接口生成样板代码,请运行 <code>hidl-gen</code>。
+例如,要为 <code>surfaceflinger</code> 生成代码,请运行以下命令:</p>
+
+<pre class="devsite-terminal devsite-click-to-copy">
+hidl-gen -o hardware/interfaces/configstore/1.0/default \
+ -Lc++-impl \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport \
+ android.hardware.config@1.0::ISurfaceFlingerConfigs
+</pre>
+
+<p class="note"><strong>注意</strong>:请勿使用 <code>-Landroidbp-impl</code> 运行 <code>hidl-gen</code>,因为这会生成 <code>Android.bp</code>。该模块必须通过 <code>Android.mk</code> 进行编译才能访问编译标记。</p>
+
+<h2 id="modify-androidmk">修改 Android.mk</h2>
+<p>接下来,请修改 <code>Android.mk</code> 文件,以便将实现文件 (<code>&lt;modulename&gt;Configs.cpp</code>) 添加到 <code>LOCAL_SRC_FILES</code> 并将编译标记映射到宏定义中。例如,您可以在 <strong><code>hardware/interface/configstore/1.0/default/Android.mk</code></strong> 中运行以下命令来修改 <code>surfaceflinger</code>:
+</p>
+
+<pre class="devsite-click-to-copy">
+LOCAL_SRC_FILES += SurfaceFlingerConfigs.cpp
+ifneq ($(NUM_FRAMEBUFFER_SURFACE_BUFFERS),)
+ LOCAL_CFLAGS += -DNUM_FRAMEBUFFER_SURFACE_BUFFERS=$(NUM_FRAMEBUFFER_SURFACE_BUFFERS)
+endif
+
+ifeq ($(TARGET_RUNNING_WITHOUT_SYNC_FRAMEWORK),true)
+ LOCAL_CFLAGS += -DRUNNING_WITHOUT_SYNC_FRAMEWORK
+endif
+</pre>
+
+<p>如果 <code>Android.mk</code> 包含几个 <code>ifeq-endif</code> 块,请考虑将代码移动到新文件(即 <code>surfaceflinger.mk</code>)中,然后从 <code>Android.mk</code> 中引用该文件。</p>
+
+<h2 id="implement-functions">实现函数</h2>
+<p>要填充函数以实现 HAL,请以不同的值回调 <code>_hidl_cb</code> 函数(以编译标记为条件)。例如,您可以在 <strong><code>hardware/interfaces/configstore/1.0/default/SurfaceFlingerConfigs.cpp</code></strong> 中填充 <code>surfaceflinger</code> 的函数:</p>
+
+<pre class="devsite-click-to-copy">
+Return&lt;void&gt; SurfaceFlingerConfigs::numFramebufferSurfaceBuffers(
+ numFramebufferSurfaceBuffers_cb _hidl_cb) {
+ #if NUM_FRAMEBUFFER_SURFACE_BUFFERS 2
+ _hidl_cb(NumBuffers.TWO);
+ #else if NUM_FRAMEBUFFER_SURFACE_BUFFERS 3
+ _hidl_cb(NumBuffers.THREE);
+ #else
+ _hidl_cb(NumBuffers.USE_DEFAULT);
+ #endif
+}
+
+Return&lt;void&gt; SurfaceFlingerConfigs::runWithoutSyncFramework(
+ runWithoutSyncFramework_cb _hidl_cb) {
+ #ifdef RUNNING_WITHOUT_SYNC_FRAMEWORK
+ _hidl_cb({true /* specified */, true /* value */});
+ #else
+ // when macro not defined, we can give any value to the second argument.
+ // It will simply be ignored in the framework side.
+ _hidl_cb({false /* specified */, false /* value */});
+ #endif
+}
+</pre>
+
+<p>请确保该实现不包含名为 <code>HIDL_FETCH_&lt;interface name&gt;</code> 的函数(例如 <code>HIDL_FETCH_ISurfaceFlingerConfigs</code>)。这是 HIDL 直通模式所需的函数,<code>configstore</code> 不使用(且被禁止使用)该函数。ConfigStore 必须始终在绑定模式下运行。</p>
+
+<h2 id="register-service">注册为服务</h2>
+<p>最后,将所有接口实现注册为 <code>configstore</code> 服务。例如,您可以在 <strong><code>hardware/interfaces/configstore/1.0/default/service.cpp</code></strong> 中注册 <code>surfaceflinger</code> 实现:
+</p>
+
+<pre class="devsite-click-to-copy">
+configureRpcThreadpool(maxThreads, true);
+sp&lt;ISurfaceFlingerConfigs&gt; surfaceFlingerConfigs = new SurfaceFlingerConfigs;
+status_t status = surfaceFlingerConfigs-&gt;registerAsService();
+
+sp&lt;IBluetoothConfigs&gt; bluetoothConfigs = new BluetoothConfigs;
+status = bluetoothConfigs-&gt;registerAsService();
+
+// register more interfaces here
+joinRpcThreadpool();
+</pre>
+
+<h2 id="bootstrapping">确保可尽早访问</h2>
+<p>为了确保框架模块可以尽早访问· HAL 服务,config HAL 服务应该在 <code>hwservicemanager</code> 准备就绪之后尽早启动。由于配置 HAL 服务不会读取外部文件,因此在启动之后预计很快就能准备就绪。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/hal-types.html b/zh-cn/devices/architecture/hal-types.html
new file mode 100644
index 00000000..b6993b36
--- /dev/null
+++ b/zh-cn/devices/architecture/hal-types.html
@@ -0,0 +1,105 @@
+<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 O 对 Android 操作系统底层进行了重新架构。作为此变化的一部分,运行 Android O 的设备必须支持绑定式或直通式 HAL:</p>
+
+<ul>
+<li><strong>绑定式 HAL</strong>。以 HAL 接口定义语言 (HIDL) 表示的 HAL。这些 HAL 取代了早期 Android 版本中使用的传统 HAL 和旧版 HAL,可在绑定模式下使用。所有在推出时即搭载了 Android O 或后续版本的设备都必须只支持绑定式 HAL。</li>
+
+<li><strong>直通式 HAL</strong>。以 HIDL 封装的传统 HAL 或旧版 HAL。这些 HAL 封装了现有的 HAL,可在绑定模式和 Same-Process(直通)模式下使用。升级到 Android O 的设备可以使用直通式 HAL。</li>
+</ul>
+
+<h2 id="requirements">HAL 模式要求</h2>
+
+<table>
+<tbody>
+
+<tr>
+<th>设备</th>
+<th>直通式</th>
+<th>绑定式</th>
+</tr>
+
+<tr>
+<td><em>搭载 Android O 的设备</em></td>
+<td><a href="#passthrough">直通式 HAL</a> 中列出的 HAL 必须为直通式。</td>
+<td>所有其他 HAL 均为绑定式(包括作为供应商扩展程序的 HAL)。</td>
+</tr>
+
+<tr>
+<td rowspan="2"><em>升级到 Android O 的设备</em></td>
+<td><a href="#passthrough">直通式 HAL</a> 中列出的 HAL 必须为直通式。</td>
+<td><a href="#binderized">绑定式 HAL</a> 中列出的 HAL 必须为绑定式。</td>
+</tr>
+
+<tr>
+<td colspan="2">供应商映像提供的所有其他 HAL 既可以在直通模式下使用,也可以在绑定模式下使用。</td>
+</tr>
+
+</tbody>
+</table>
+
+<h2 id="binderized">绑定式 HAL</h2>
+<p>Android 要求所有 Android 设备(无论是搭载 Android O 的设备还是升级到 Android O 的设备)上的下列 HAL 均为绑定式:</p>
+
+<ul>
+<li><code>android.hardware.biometrics.fingerprint@2.1</code>。取代 Android O 中已不存在的 <code>fingerprintd</code>。</li>
+<li><code>android.hardware.configstore@1.0</code>。Android O 中的新 HAL。</li>
+<li><code>android.hardware.dumpstate@1.0</code>。此 HAL 提供的原始接口可能无法继续使用,并且已更改。因此,<code>dumpstate_board</code> 必须在指定的设备上重新实现(这是一个可选的 HAL)。</li>
+<li><code>android.hardware.graphics.allocator@2.0</code>。在 Android O 中,此 HAL 必须为绑定式,因此无需在可信进程和不可信进程之间分享文件描述符。</li>
+<li><code>android.hardware.radio@1.0</code>。取代由存活于自身进程中的 <code>rild</code> 提供的接口。</li>
+<li><code>android.hardware.usb@1.0</code>。Android O 中的新 HAL。</li>
+<li><code>android.hardware.wifi@1.0</code>。Android O 中的新 HAL,可取代此前加载到 <code>system_server</code> 的旧版 WLAN HAL 库。</li>
+<li><code>android.hardware.wifi.supplicant@1.0</code>。在现有 <code>wpa_supplicant</code> 进程之上的 HIDL 接口</li>
+</ul>
+
+<p class="note"><strong>注意</strong>:Android 提供的以下 HIDL 接口将一律在绑定模式下使用:<code>android.frameworks.*</code>、<code>android.system.*</code> 和 <code>android.hidl.*</code>(不包括下文所述的 <code>android.hidl.memory@1.0</code>)。</p>
+
+<h2 id="passthrough">直通式 HAL</h2>
+<p>Android 要求所有 Android 设备(无论是搭载 Android O 的设备还是升级到 Android O 的设备)上的下列 HAL 均在直通模式下使用:</p>
+
+<ul>
+<li><code>android.hardware.graphics.mapper@1.0</code>。将内存映射到其所属的进程中。</li>
+<li><code>android.hardware.renderscript@1.0</code>。在同一进程中传递项(等同于 <code>openGL</code>)。</li>
+</ul>
+<p>上方未列出的所有 HAL 在搭载 Android O 的设备上都必须为绑定式。</p>
+
+<h2 id="same-process">Same-Process HAL</h2>
+<p>Same-Process HAL (SP-HAL) 一律在使用它们的进程中打开,其中包括未以 HIDL 表示的所有 HAL,以及那些<strong>非</strong>绑定式的 HAL。SP-HAL 集的成员只能由 Google 控制,这一点没有例外。</p>
+
+<p>SP-HAL 包括以下 HAL:</p>
+
+<ul>
+<li><code>openGL</code></li>
+<li><code>Vulkan</code></li>
+<li><code>android.hidl.memory@1.0</code>(由 Android 系统提供,一律为直通式)</li>
+<li><code>android.hardware.graphics.mapper@1.0</code>。</li>
+<li><code>android.hardware.renderscript@1.0</code></li>
+</ul>
+
+<h2 id="legacy">传统 HAL 和旧版 HAL</h2>
+
+<p>传统 HAL(在 Android O 中已弃用)是指与具有特定名称及版本号的应用二进制接口 (ABI) 标准相符的接口。大部分 Android 系统接口(<a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h">相机</a>、<a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/audio.h">音频</a>和<a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">传感器</a>等)都采用传统 HAL 形式(已在 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware">hardware/libhardware/include/hardware</a> 下进行定义)。</p>
+
+<p>旧版 HAL(也已在 Android O 中弃用)是指早于传统 HAL 的接口。一些重要的子系统(WLAN、无线接口层和蓝牙)采用的就是旧版 HAL。虽然没有统一或标准化的方式来指明是否为旧版 HAL,但如果 HAL 早于 Android O 而出现,那么这种 HAL 如果不是传统 HAL,就是旧版 HAL。有些旧版 HAL 的一部分包含在 <a href="https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master">libhardware_legacy</a> 中,而其他部分则分散在整个代码库中。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/hidl-java/constants.html b/zh-cn/devices/architecture/hidl-java/constants.html
new file mode 100644
index 00000000..914aec3b
--- /dev/null
+++ b/zh-cn/devices/architecture/hidl-java/constants.html
@@ -0,0 +1,73 @@
+<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>在接口不兼容 Java(例如由于使用联合类型而不兼容 Java)的情况下,可能仍需将常量(枚举值)导出到 Java 环境。这种情况需要用到 <code>hidl-gen -Ljava-constants
+…</code>,它会将已添加注释的枚举声明从软件包的接口文件提取出来,并生成一个名为 <code>[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants</code> 的 java 库。请为每个要导出的枚举声明添加注释,如下所示:</p>
+
+<pre class="prettyprint">
+@export
+enum Foo : int32_t {
+ SOME_VALUE,
+ SOME_OTHER_VALUE,
+};
+</pre>
+
+<p>如有必要,这一类型导出到 Java 环境时所使用的名称可以不同于接口声明中选定的名称,方法是添加注释参数 <code>name</code>:</p>
+
+<pre class="prettyprint">
+@export(name="JavaFoo")
+enum Foo : int32_t {
+ SOME_VALUE,
+ SOME_OTHER_VALUE,
+};
+</pre>
+
+<p>如果依据 Java 惯例或个人偏好需要将一个公共前缀添加到枚举类型的值,请使用注释参数 <code>value_prefix</code>:</p>
+
+<pre class="prettyprint">
+// File "types.hal".
+
+package android.hardware.bar@1.0;
+
+@export(name="JavaFoo", value_prefix="JAVA_")
+enum Foo : int32_t {
+ SOME_VALUE,
+ SOME_OTHER_VALUE,
+};
+</pre>
+
+<p>生成的 Java 类如下所示:</p>
+
+<pre class="prettyprint">
+package android.hardware.bar.V1_0;
+
+public class Constants {
+ public final class JavaFoo {
+ public static final int JAVA_SOME_VALUE = 0;
+ public static final int JAVA_SOME_OTHER_VALUE = 1;
+ };
+};
+</pre>
+
+<p>最后,针对 <code>types.hal</code> 中声明的枚举类型的 Java 类型声明将划分到指定软件包中的类 <code>Constants</code> 内。声明为接口子级的枚举类型将划分到该接口的 Java 类声明下。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/hidl-java/index.html b/zh-cn/devices/architecture/hidl-java/index.html
new file mode 100644
index 00000000..c1905a05
--- /dev/null
+++ b/zh-cn/devices/architecture/hidl-java/index.html
@@ -0,0 +1,141 @@
+<html devsite><head>
+ <title>HIDL Java</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 O 对 Android 操作系统进行了重新架构,在独立于设备的 Android 平台与特定于设备和供应商的代码之间定义了清晰的接口。
+Android 已经以 HAL 接口的形式(在 <code>hardware/libhardware</code> 中定义为 C 标头)定义了许多此类接口。HIDL 将这些 HAL 接口替换为稳定的带版本接口,可以采用 Java(如下所述),也可以是采用 <a href="/devices/architecture/hidl-cpp/index.html">C++</a> 的客户端和服务器端 HIDL 接口。</p>
+
+<p>HIDL 接口主要通过本机代码使用,因此 HIDL 专注于自动生成高效的 C++ 代码。不过,HIDL 接口也必须能够直接通过 Java 使用,因为有些 Android 子系统(如 Telephony)很可能具有 Java HIDL 接口。</p>
+
+<p>本部分介绍了 HIDL 接口的 Java 前端,详细说明了如何创建、注册和使用服务,以及使用 Java 编写的 HAL 和 HAL 客户端如何与 HIDL RPC 系统进行交互。</p>
+
+<h2 id="client">作为客户端</h2>
+<p>要访问软件包 <code>android.hardware.foo</code> 版本 1.0 中服务名称注册为 <code>foo-bar</code> 的接口 IFoo,请执行以下操作:</p>
+
+<ol>
+<li>添加库:
+
+<ul>
+<li>将以下内容添加到 Android.mk 中:
+<pre class="prettyprint">LOCAL_JAVA_LIBRARIES += android.hardware.foo-V1.0-java</pre>
+
+<strong>或</strong><br />
+</li>
+
+<li>将以下内容添加到 Android.bp 中:
+<pre class="prettyprint">
+shared_libs: [
+ /* … */
+ "android.hardware.foo-V1.0-java",
+],
+</pre>
+该库还存在静态版:<code>android.hardware.foo-V1.0-java-static</code>。</li>
+</ul>
+</li>
+<li>将以下内容添加到您的 Java 文件中:
+<pre class="prettyprint">
+import android.hardware.foo.V1_0.IFoo;
+...
+IFoo server = IFoo.getService(); // throws exception if not available
+IFoo anotherServer = IFoo.getService("second_impl");
+server.doSomething(…);
+</pre>
+</li>
+</ol>
+
+<h2 id="service">提供服务</h2>
+<p>Java 中的框架代码可能需要提供接口才能接收来自 HAL 的异步回调。</p>
+
+<p class="warning"><strong>警告</strong>:请勿用 Java 实现驱动程序 (HAL)。我们强烈建议您用 C ++ 实现驱动程序。</p>
+
+<p>对于软件包 <code>android.hardware.foo</code> 版本 1.0 中的接口 <code>IFooCallback</code>,您可以按照以下步骤用 Java 实现接口。</p>
+
+<ol>
+<li>用 HIDL 定义您的接口。</li>
+<li>打开 <code>/tmp/android/hardware/foo/IFooCallback.java</code> 作为参考。</li>
+<li>为您的 Java 实现创建一个新模块。</li>
+<li>检查抽象类 <code>android.hardware.foo.V1_0.IFooCallback.Stub</code>,然后编写一个新类以将其扩展,并实现抽象方法。</li>
+</ol>
+
+<h3 id="autogen">查看自动生成的文件</h3>
+<p>要查看自动生成的文件,请运行以下命令:</p>
+<pre class="prettyprint">
+hidl-gen -o /tmp -Ljava \
+ -randroid.hardware:hardware/interfaces \
+ -randroid.hidl:system/libhidl/transport android.hardware.foo@1.0
+</pre>
+
+<p>这些命令会生成目录 <code>/tmp/android/hardware/foo/1.0</code>。对于文件 <code>hardware/interfaces/foo/1.0/IFooCallback.hal</code>,这会生成文件 <code>/tmp/android/hardware/foo/1.0/IFooCallback.java</code>,其中包含 Java 接口、代理代码和存根(代理和存根均与接口吻合)。</p>
+
+<p><code>-Lmakefile</code> 会生成在构建时运行此命令的规则,允许您包含 <code>android.hardware.foo-V1.0-java(-static)?</code> 并链接到相应文件。您可以在 <code>hardware/interfaces/update-makefiles.sh</code> 中找到自动为充满接口的项目执行此操作的脚本。
+本示例中的路径是相对路径;硬件/接口可能是代码树下的一个临时目录,让您能够先开发 HAL 然后再进行发布。</p>
+
+<h2 id="service">运行服务</h2>
+<p>HAL 提供了一个接口 <code>IFoo</code>,它必须通过接口 <code>IFooCallback</code> 对框架进行异步回调。<code>IFooCallback</code> 接口不按名称注册为可检测到的服务;相反,<code>IFoo</code> 必须包含一个诸如 <code>setFooCallback(IFooCallback x)</code> 的方法。</p>
+
+<p>要通过软件包 <code>android.hardware.foo</code> 版本 1.0 设置 <code>IFooCallback</code>,请将 <code>android.hardware.foo-V1.0-java</code> 添加到 <code>Android.mk</code> 中。运行服务的代码为:</p>
+
+<pre class="prettyprint">
+import android.hardware.foo.V1_0.IFoo;
+import android.hardware.foo.V1_0.IFooCallback.Stub;
+....
+class FooCallback extends IFoo.Stub {
+ // implement methods
+}
+....
+// Get the service you will be receiving callbacks from.
+// This also starts the threadpool for your callback service.
+IFoo server = IFoo.getService(); // throws exception if not available
+....
+// This must be a persistent instance variable, not local,
+// to avoid premature garbage collection.
+FooCallback mFooCallback = new FooCallback();
+....
+// Do this once to create the callback service and tell the "foo-bar" service
+server.setFooCallback(mFooCallback);
+</pre>
+
+<h2 id="extensions">接口扩展</h2>
+<p>假设指定服务在所有设备上实现了接口 <code>IFoo</code>,那么该服务在特定设备上可能会提供在接口扩展 <code>IBetterFoo</code> 中实现的附加功能,即:</p>
+
+<pre class="prettyprint">
+interface IFoo {
+ ...
+};
+
+interface IBetterFoo extends IFoo {
+ ...
+};
+</pre>
+
+<p>感知到扩展接口的调用代码可以使用 <code>castFrom()</code> Java 方法将基本接口安全地转换为扩展接口:</p>
+
+<pre class="prettyprint">
+IFoo baseService = Foo.getService();
+IBetterFoo extendedService = IBetterFoo.castFrom(baseService);
+if (extendedService != null) {
+ // The service implements the extended interface.
+} else {
+ // The service only implements the base interface.
+}
+</pre>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/hidl-java/interfaces.html b/zh-cn/devices/architecture/hidl-java/interfaces.html
new file mode 100644
index 00000000..257e5869
--- /dev/null
+++ b/zh-cn/devices/architecture/hidl-java/interfaces.html
@@ -0,0 +1,128 @@
+<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>本部分详细介绍了接口方法和错误。</p>
+
+<h2 id="void">无效方法</h2>
+<p>不返回结果的方法将转换为返回 <code>void</code> 的 Java 方法。例如,HIDL 声明:</p>
+
+<pre class="prettyprint">
+doThisWith(float param);
+</pre>
+
+<p>…会变为:</p>
+
+<pre class="prettyprint">
+void doThisWith(float param);
+</pre>
+
+<h2 id="single-result">单结果方法</h2>
+<p>返回单个结果的方法将转换为同样返回单个结果的 Java 等效项。例如,以下方法:</p>
+
+<pre class="prettyprint">
+doQuiteABit(int32_t a, int64_t b,
+ float c, double d) generates (double something);
+</pre>
+
+<p>…会变为:</p>
+
+<pre class="prettyprint">
+double doQuiteABit(int a, long b, float c, double d);
+</pre>
+
+<h2 id="multiple-result">多结果方法</h2>
+<p>对于返回多个结果的每个方法,系统都会生成一个回调类,在其 <code>onValues</code> 方法中提供所有结果。
+该回调会用作此方法的附加参数。例如,以下方法:</p>
+
+<pre class="prettyprint">
+oneProducesTwoThings(SomeEnum x) generates (double a, double b);
+</pre>
+
+<p>…会变为:</p>
+
+<pre class="prettyprint">
+public interface oneProducesTwoThingsCallback {
+ public void onValues(double a, double b);
+}
+void oneProducesTwoThings(byte x, oneProducesTwoThingsCallback cb);
+</pre>
+
+<p><code>oneProducesTwoThings()</code> 的调用者通常使用匿名内部类或 lambda 在本地实现回调:</p>
+
+<pre class="prettyprint">
+someInstanceOfFoo.oneProducesTwoThings(
+ 5 /* x */,
+ new IFoo.oneProducesTwoThingsCallback() {
+ @Override
+ void onValues(double a, double b) {
+ // do something interesting with a and b.
+ ...
+ }});
+</pre>
+
+<p>或:</p>
+
+<pre class="prettyprint">
+someInstanceOfFoo.oneProducesTwoThings(5 /* x */,
+ (a, b) -&gt; a &gt; 3.0 ? f(a, b) : g(a, b)));
+</pre>
+
+<p>您还可以定义一个类以用作回调…</p>
+
+<pre class="prettyprint">
+class MyCallback implements oneProducesTwoThingsCallback {
+ public void onValues(double a, double b) {
+ // do something interesting with a and b.
+ }
+}
+</pre>
+
+<p>…并传递 <code>MyCallback</code> 的一个实例作为 <code>oneProducesTwoThings()</code> 的第三个参数。</p>
+
+<h2 id="errors">传输错误和死亡通知接收方</h2>
+<p>由于服务实现可以在不同的进程中运行,在某些情况下,即使实现接口的进程已死亡,客户端也可以保持活动状态。
+调用死亡进程中托管的接口对象会失败并返回传输错误(调用的方法抛出的运行时异常)。可以通过调用 <code>I&lt;InterfaceName&gt;.getService()</code> 以请求服务的新实例,从此类故障中恢复。不过,仅当崩溃的进程已重新启动且已向 servicemanager 重新注册其服务时,这种方法才有效(对 HAL 实现而言通常如此)。</p>
+
+<p>接口的客户端也可以注册一个死亡通知接收方,以便在服务终止时收到通知。<em></em>如果服务一终止就发出调用,则仍然可能发生传输错误。要在检索的 <code>IFoo</code> 接口上注册此类通知,客户端可以执行以下操作:</p>
+
+<pre class="prettyprint">
+foo.linkToDeath(recipient, 1481 /* cookie */);
+</pre>
+
+<p><code>recipient</code> 参数必须是 HIDL 提供的 <code>HwBinder.DeathRecipient</code> 接口的实现。该接口包含在托管接口的进程死亡时调用的单个方法 <code>serviceDied()</code>。</p>
+
+<pre class="prettyprint">
+final class DeathRecipient implements HwBinder.DeathRecipient {
+ @Override
+ public void serviceDied(long cookie) {
+ // Deal with service going away
+ }
+}
+</pre>
+
+<p><code>cookie</code> 参数包含使用 <code>linkToDeath()</code> 调用传递的 Cookie。在注册死亡通知接收方之后,也可以使用以下命令取消注册:</p>
+
+<pre class="prettyprint">
+foo.unlinkToDeath(recipient);
+</pre>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/hidl-java/types.html b/zh-cn/devices/architecture/hidl-java/types.html
new file mode 100644
index 00000000..5079df63
--- /dev/null
+++ b/zh-cn/devices/architecture/hidl-java/types.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>给定一个 HIDL 接口文件,Java HIDL 后端会生成 Java 接口、存根和代理代码。它支持所有标量 HIDL 类型([<code>u</code>]<code>int</code>{<code>8,16,32,64}_t, float, double,</code> 及 <code>enum</code>),以及受支持 HIDL 类型的字符串、接口、结构类型、数组和矢量。Java HIDL 后端<strong>不支持联合类型、原生句柄、共享内存和 fmq 类型</strong>。</p>
+
+<p>由于 Java 运行时本身不支持未签名整数的概念,所有未签名类型(以及基于这些类型的枚举)都会被自动视为其已签名的等效项,也就是说,<code>uint32_t</code> 在 Java 接口中会变为 <code>int</code>。不进行任何值转换;Java 端的实现人员必须将已签名值当做未签名值来使用。</p>
+
+<h2 id="enum">枚举</h2>
+<p>枚举不会生成 Java 枚举类,而是转换为包含各个枚举用例的静态常量定义的内部类。如果枚举类派生自其他枚举类,则会沿用后者的存储类型。
+基于未签名整数类型的枚举将重写为其已签名的等效项。</p>
+
+<p>例如,一个类型为 <code>uint8_t</code> 的 <code>SomeBaseEnum</code>:</p>
+
+<pre class="prettyprint">
+enum SomeBaseEnum : uint8_t { foo = 3 };
+enum SomeEnum : SomeBaseEnum {
+ quux = 33,
+ goober = 127
+};
+</pre>
+
+<p>…会变为:</p>
+
+<pre class="prettyprint">
+public final class SomeBaseEnum { public static final byte foo = 3; }
+public final class SomeEnum {
+ public static final byte foo = 3;
+ public static final byte quux = 33;
+ public static final byte goober = 127;
+}
+</pre>
+
+<p>且:</p>
+
+<pre class="prettyprint">
+enum SomeEnum : uint8_t {
+ FIRST_CASE = 10,
+ SECOND_CASE = 192
+};
+</pre>
+
+<p>…重写为:</p>
+
+<pre class="prettyprint">
+public final class SomeEnum {
+ static public final byte FIRST_CASE = 10; // no change
+ static public final byte SECOND_CASE = -64;
+}
+</pre>
+
+<h2 id="string">字符串</h2>
+<p>Java 中的 <code>String</code> 为 utf-8 或 utf-16,但在传输时会转换为 utf-8 作为常见的 HIDL 类型。另外,<code>String</code> 在传入 HIDL 时不能为空。</p>
+
+<h2 id="array-vect">数组和矢量</h2>
+<p>数组会转换为 Java 数组,矢量会转换为 <code>ArrayList&lt;T&gt;</code>,其中 T 是相应的对象类型,可能是封装标量类型,如 <code>vec&lt;int32_t&gt; =&gt;
+ArrayList&lt;Integer&gt;</code>。例如:</p>
+
+<pre class="prettyprint">
+takeAnArray(int32_t[3] array);
+returnAVector() generates (vec&lt;int32_t&gt; result);
+</pre>
+
+<p>…会变为:</p>
+
+<pre class="prettyprint">
+void takeAnArray(int[] array);
+ArrayList&lt;Integer&gt; returnAVector();
+</pre>
+
+<h2 id="struct">结构</h2>
+<p>结构会转换为具有相似布局的 Java 类。例如:</p>
+
+<pre class="prettyprint">
+struct Bar {vec&lt;bool&gt; someBools;
+ };
+ struct Foo {
+ int32_t a;
+ int8_t b;
+ float[10] c;
+ Bar d;
+ };
+</pre>
+
+<p>…会变为:</p>
+
+<pre class="prettyprint">
+class Bar {
+ public final ArrayList&lt;Boolean&gt; someBools = new ArrayList();
+};
+class Foo {
+ public int a;
+ public byte b;
+ public final float[] c = new float[10];
+ public final Bar d = new Bar();
+}
+</pre>
+
+<h2 id="declared">已声明的类型</h2>
+<p>在 <code>types.hal</code> 中声明的每个顶级类型都有自己的 .java 输出文件(根据 Java 要求)。例如,以下 <code>types.hal</code> 文件会导致创建两个额外的文件(Foo.java 和 Bar.java):</p>
+
+<pre class="prettyprint">
+struct Foo {
+ ...
+};
+
+struct Bar {
+ ...
+
+ struct Baz {
+ };
+
+ ...
+};
+</pre>
+
+<p>Baz 的定义位于 Bar 的静态内部类中(在 Bar.java 内)。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/architecture/treble.html b/zh-cn/devices/architecture/treble.html
index e4c2c3a9..13f59482 100644
--- a/zh-cn/devices/architecture/treble.html
+++ b/zh-cn/devices/architecture/treble.html
@@ -20,10 +20,10 @@
limitations under the License.
-->
-<p>即将推出的 Android O 版本新增了 Project Treble,这是 Android 操作系统框架对架构进行的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。</p>
+<p>Android 8.0 版本的一项新元素是 Project Treble。这是 Android 操作系统框架在架构方面的一项重大改变,旨在让制造商以更低的成本更轻松、更快速地将设备更新到新版 Android 系统。Project Treble 适用于搭载 Android 8.0 及后续版本的所有新设备(这种新的架构已经在 Pixel 手机的开发者预览版中投入使用)。</p>
-<h2 id="about-treble">Android 更新</h2>
-<p>Project Treble 通过新的供应商接口将供应商实现(由芯片制造商编写的设备专属底层软件)与 Android 操作系统框架分开。</p>
+<h2 id="about-treble">关于 Android 更新</h2>
+<p>利用新的供应商接口,Project Treble 将供应商实现(由芯片制造商编写的设备专属底层软件)与 Android 操作系统框架分离开来。</p>
<p>Android 7.x 及更早版本中没有正式的供应商接口,因此设备制造商必须更新大量 Android 代码才能将设备更新到新版 Android 系统:</p>
@@ -38,9 +38,20 @@
<p class="img-caption"><strong>图 2.</strong> Treble 推出后的 Android 更新环境</p>
<h2 id="testing-treble">对 Treble 进行测试</h2>
-<p>为了确保供应商实现的前向兼容性,可以使用供应商测试套件 (VTS) 对新的供应商接口进行验证,该套件类似于<a href="/compatibility/cts/">兼容性测试套件 (CTS)</a>。已经发布的 VTS 可以自动执行 HAL 和操作系统内核测试,即便是 Treble 推出前的环境也适用;有关详细信息,请参阅<a href="/devices/tech/test_infra/tradefed/fundamentals/vts">使用 VTS 进行系统测试</a>一文。</p>
-
-<h2 id="launching-treble">即将推出</h2>
-<p>Project Treble 即将登陆搭载 Android O 及后续版本的所有新设备,不过,这种新的架构已经在 Pixel 手机的 O 开发者预览版中投入使用。在发布 Android O 时,我们将提供完整详情(届时请访问 <a href="https://source.android.com/">source.android.com</a>)。在过渡期间,如需详细了解 Treble,请参阅 <a href="https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html">Android 开发者博客</a>。</p>
+<p>为了确保供应商实现的前向兼容性,新的供应商接口会由<a href="/devices/tech/vts/index.html">供应商测试套件 (VTS)</a> 进行验证,该套件类似于<a href="/compatibility/cts/">兼容性测试套件 (CTS)</a>。您可以使用 VTS 在推出 Treble 前的环境和 Treble 环境中自动执行 HAL 和操作系统内核测试。</p>
+
+<h2 id="treble-resources">Treble 资源</h2>
+<p>要详细了解新的 Treble 架构,请参阅以下部分:</p>
+<ul>
+<li><a href="/devices/architecture/hal-types.html">HAL 类型</a>:提供了关于绑定式 HAL、直通 HAL、Same-Process (SP) HAL 和旧版 HAL 的说明。</li>
+<li><a href="/devices/architecture/hidl/index.html">HIDL(一般信息)</a>:包含关于 HAL 接口定义语言(简称 HIDL,发音为“hide-l”)的一般信息;HIDL 是用于指定 HAL 和其用户之间接口的接口描述语言 (IDL)。</li>
+<li><a href="/devices/architecture/hidl-cpp/index.html">HIDL (C++)</a>:包含关于为 HIDL 接口创建 C++ 实现的详情。</li>
+<li><a href="/devices/architecture/hidl-java/index.html">HIDL (Java)</a>:包含关于 HIDL 接口的 Java 前端的详情。</li>
+<li><a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>:提供了关于 ConfigStore HAL 的说明;该 HAL 提供了一组 API,可供访问用于配置 Android 框架的只读配置项。</li>
+<li><a href="/devices/architecture/dto/index.html">设备树叠加层</a>:提供了关于在 Android 中使用设备树叠加层 (DTO) 的详情。</li>
+<li><a href="/devices/architecture/vndk/index.html">供应商原生开发套件 (VNDK)</a>:提供了关于 VNDK(专门用来让供应商实现其 HAL 的一组库)的说明。</li>
+<li><a href="/devices/architecture/vintf/index.html">供应商接口对象 (VINTF)</a>:VINTF 对象整合了关于设备的相关信息,并让这类信息可通过可查询 API 提供。</li>
+<li><a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for Android 8.0</a>:提供了关于 SELinux 变更和自定义的详情。</li>
+</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/dalvik/jit-compiler.html b/zh-cn/devices/tech/dalvik/jit-compiler.html
index b4de2cbe..16ef9a06 100644
--- a/zh-cn/devices/tech/dalvik/jit-compiler.html
+++ b/zh-cn/devices/tech/dalvik/jit-compiler.html
@@ -20,283 +20,131 @@
limitations under the License.
-->
-<p>
-在 Android 7.0 中,我们为 Android 运行时 (ART) 添加了一个具备代码归类功能的即时 (JIT) 编译器。ART 可以在 Android 应用运行时持续提高其性能。JIT 编译器补充了 ART 当前的预先 (AOT) 编译器的功能,有助于提高运行时性能、节省存储空间和加快应用更新及系统更新速度。
-</p>
-
-<p>
-相较于 AOT 编译器,JIT 编译器的表现也更为出色,因为它不会在应用自动更新期间或 OTA 时重新编译应用期间拖慢系统速度。因此,该功能对制造商在设备集成方面的要求也最低。
+<p>Android 运行时 (ART) 包含一个具备代码分析功能的即时 (JIT) 编译器,该编译器可以在 Android 应用运行时持续提高其性能。JIT 编译器补充了 ART 当前的预先 (AOT) 编译器的功能,有助于提高运行时性能,节省存储空间,以及加快应用及系统更新速度。相较于 AOT 编译器,JIT 编译器的优势也更为明显,因为它不会在应用自动更新期间或重新编译应用(在无线下载 (OTA) 更新期间)时拖慢系统速度。
</p>
<p>
-JIT 和 AOT 使用相同的编译器,它们所进行的一系列优化几乎完全相同。根据实际情况生成的代码可能会有所不同。JIT 会利用运行时类型信息,并且可以更高效地进行内联。此外,我们有时会通过 JIT 进行 OSR 编译(即栈上替换)。这种编译会再次生成略有差异的代码。
+尽管 JIT 和 AOT 使用相同的编译器,它们所进行的一系列优化也较为相似,但它们生成的代码可能会有所不同。JIT 会利用运行时类型信息,可以更高效地进行内联,并可让堆栈替换 (OSR) 编译成为可能,而这一切都会使其生成的代码略有不同。
</p>
-<p>
-要了解更全面的信息,请参阅 developer.android.com 网站上的<a href="https://developer.android.com/preview/api-overview.html#jit_aot">配置文件引导的 JIT/AOT 编译</a>。
-</p>
+<h2 id="architectural-overview">JIT 架构</h2>
-<h2 id="architectural-overview">架构概览</h2>
+<img src="./images/jit-arch.png" alt="JIT 架构"/>
+<figcaption><strong>图 1.</strong> JIT 架构。</figcaption>
-<img src="images/jit-arch.png" alt="JIT 架构" width="633" id="JIT-architecture"/>
-<p class="img-caption">
- <strong>图 1.</strong> JIT 架构 - 工作原理
-</p>
+<h2 id="flow">JIT 编译</h2>
-<h2 id="flow">流程</h2>
-
-<p>
-JIT 编译采用以下方式运作:
-</p>
+<p>JIT 编译涉及以下活动:</p>
+<img src="./images/jit-profile-comp.png" alt="配置文件引导的编译"/>
+<figcaption><strong>图 2.</strong> 配置文件引导的编译。</figcaption>
<ol>
-<li>用户运行应用,而这随后就会触发 ART 加载 .dex 文件。
-</li><li>如果有 .oat 文件(即 .dex 文件的 AOT 二进制文件),ART 会直接使用该文件。请注意,虽然 .oat 文件会定期生成,但这并不意味着文件中会包含经过编译的代码(即 AOT 二进制文件)。
-</li><li>如果没有 .oat 文件,ART 会通过 JIT 或解释器执行 .dex 文件。如果有 .oat 文件,ART 将始终使用该文件。否则,它将在内存中解压 APK 文件并得到 .dex 文件,但是这会导致消耗大量内存(相当于 dex 文件的大小)。
-</li><li>对任何不是根据“加速”编译过滤器编译的应用启用 JIT(也就是说,要尽可能多地在应用中进行编译)。
-</li><li>将 JIT 配置文件数据转存到系统目录内的文件中。只有应用能访问这个目录。
-</li><li>AOT 编译 (dex2oat) 守护进程通过解析该文件来促进编译。</li>
+<li>用户运行应用,而这随后就会触发 ART 加载 <code>.dex</code> 文件。
+ <ul>
+ <li>如果有 <code>.oat</code> 文件(即 <code>.dex</code> 文件的 AOT 二进制文件),则 ART 会直接使用该文件。虽然 <code>.oat</code> 文件会定期生成,但文件中不一定会包含经过编译的代码(即 AOT 二进制文件)。</li>
+ <li>如果没有 <code>.oat</code> 文件,则 ART 会通过 JIT 或解释器执行 <code>.dex</code> 文件。</li>
+如果有 <code>.oat</code> 文件,ART 将一律使用这类文件。否则,它将在内存中使用并解压 APK 文件,从而得到 <code>.dex</code> 文件,但是这会导致消耗大量内存(相当于 dex 文件的大小)。
+</ul>
+</li>
+<li>针对任何未根据 <code>speed</code> 编译过滤器编译的应用启用 JIT(也就是说,要尽可能多地编译应用中的代码)。</li>
+<li>将 JIT 配置文件数据转存到只限应用访问的系统目录内的文件中。</li>
+<li>AOT 编译 (<code>dex2oat</code>) 守护进程通过解析该文件来推进其编译。
+<br />
+<br />
+<img src="./images/jit-daemon.png" alt="JIT 守护进程"/>
+<figcaption><strong>图 3.</strong> JIT 守护进程活动。</figcaption>
+</li>
</ol>
-<img src="images/jit-profile-comp.png" alt="配置文件引导的编译" width="452" id="JIT-profile-comp"/>
-<p class="img-caption">
- <strong>图 2.</strong> 配置文件引导的编译
-</p>
-
-<img src="images/jit-daemon.png" alt="JIT 守护进程" width="718" id="JIT-daemon"/>
-<p class="img-caption">
- <strong>图 3.</strong> 守护进程工作原理
-</p>
-
<p>
-举例来说,Google Play 就是一种由其他应用使用的服务。这些应用往往表现更像是共享库。
+举例来说,Google Play 服务就是一种由其他应用使用的类似于共享库的服务。
</p>
<h2 id="jit-workflow">JIT 工作流程</h2>
-<p>
-请从在接下来的示意图中查看下文介绍的 JIT 工作原理简要概览。
-</p>
-<img src="images/jit-workflow.png" alt="JIT 架构" width="707" id="JIT-workflow"/>
-<p class="img-caption">
- <strong>图 4.</strong> JIT 数据流
-</p>
-
-<p>
-这表示:
-</p>
+<img src="./images/jit-workflow.png" alt="JIT 架构"/>
+<figcaption><strong>图 4.</strong> JIT 数据流。</figcaption>
<ul>
-<li>归类信息存储在代码缓存中,并且会在内存紧张时进行垃圾回收。
-</li><li>因此,无法保证在应用处于后台时所捕获的快照能够包含完整的数据(即 JIT 编译的所有内容)。
-</li><li>不会尝试确保记录所有内容,因为这将影响运行时的性能。
-</li><li>方法可能有三种不同的状态:<ul>
- <li>已经过解释(dex 代码)
- </li><li>已经过 JIT 编译
- </li><li>已经过 AOT 编译
-</li><li>如果同时存在 JIT 和 AOT 代码(例如,由于反复进行逆优化),经过 JIT 编译的代码将是首选代码。
-</li><li>在不影响前台应用性能的情况下运行 JIT 所需的内存取决于相关应用。大型应用比小型应用需要更多内存。一般来说,大型应用所需的内存稳定维持在 4 MB 左右。</li></ul>
+<li>分析信息会存储在代码缓存中,并会在内存紧张时作为垃圾被回收。
+ <ul>
+ <li>无法保证在应用处于后台运行状态时所捕获的快照能够包含完整的数据(即 JIT 编译的所有内容)。</li>
+ <li>该过程不会尝试确保记录所有内容(因为这将影响运行时性能)。</li>
+ </ul>
</li>
-</ul>
-
-<h2 id="system-properties">系统属性</h2>
-
-<p>
-以下系统属性用于控制 JIT 行为:
-</p><ul>
-<li><code>dalvik.vm.usejit <true|false></true|false></code>- 是否启用 JIT。
-</li><li><code>dalvik.vm.jitinitialsize</code>(默认 64K)- 代码缓存的初始容量。代码缓存将定期进行垃圾回收 (GC) 并且可以视情况增加缓存。您或许可以使用以下属性查看您应用的代码缓存大小:<br />
-<code> $ adb shell dumpsys meminfo -d &amp;LT;pid&amp;GT;</code>
-</li><li><code>dalvik.vm.jitmaxsize</code>(默认 64M)- 代码缓存的最大容量。
-</li><li><code>dalvik.vm.jitthreshold &amp;LT;integer&amp;GT;</code>(默认 10000)- 此项属性是 JIT 编译方法时需要的“热度”计数器传递的阈值。“热度”计数器是运行时的内部度量标准。它包括调用次数、后向分支及其他因素。
-</li><li><code>dalvik.vm.usejitprofiles &amp;LT;true|false&amp;GT;</code> - 是否启用 JIT 配置文件;当 usejit 为 False 时也可以使用此属性。
-</li><li><code>dalvik.vm.jitprithreadweight &amp;LT;integer&amp;GT;</code>(默认为 <code>dalvik.vm.jitthreshold</code> / 20)- 应用界面线程的 JIT“示例”(参见 jitthreshold)的权重。用于加速方法的编译。在与应用交互时,这些方法会直接影响用户体验。
-</li><li><code>dalvik.vm.jittransitionweight &amp;LT;integer&amp;GT;</code> (<code>dalvik.vm.jitthreshold</code> / 10) - 在编译代码和解释器转换之间选择调用的方法的权重。这有助于确保所涉及的方法在编译时尽可能减少转换的量(转换需要很大开销)。
+<li>方法可能有三种不同的状态:
+ <ul>
+ <li>已经过解释(dex 代码)</li>
+ <li>已经过 JIT 编译</li>
+ <li>已经过 AOT 编译</li>
+ </ul>
+如果同时存在 JIT 和 AOT 代码(例如,由于反复进行逆优化),经过 JIT 编译的代码将是首选代码。
</li>
+<li>在不影响前台应用性能的情况下运行 JIT 所需的内存取决于相关应用。大型应用比小型应用需要更多内存。一般来说,大型应用所需的内存稳定维持在 4 MB 左右。</li>
</ul>
-<h2 id="tuning">调整</h2>
-
-<p>
-如果需要,设备制造商可能会预先编译(某些)系统应用。使用 JIT 初始化的性能与预编译的性能差异取决于应用,但通常情况下两者会非常接近。可能值得注意的是,预编译的应用不会被归类,因此这会占用更多空间,并可能错过其他优化。
-</p>
-
-<p>
-在 Android 7.0 中,有种基于不同的用例来指定编译/验证级别的通用方式。例如,安装时间的默认选项是仅进行验证(并将编译推迟到后期)。编译级别可通过系统属性进行配置,默认值为:
-</p>
-
-<pre>
-pm.dexopt.install=interpret-only
-pm.dexopt.bg-dexopt=speed-profile
-pm.dexopt.ab-ota=speed-profile
-pm.dexopt.nsys-library=speed
-pm.dexopt.shared-apk=speed
-pm.dexopt.forced-dexopt=speed
-pm.dexopt.core-app=speed
-pm.dexopt.first-boot=interpret-only
-pm.dexopt.boot=verify-profile
+<h2 id="turn-on-jit-logging">开启 JIT 日志记录</h2>
+<p>要开启 JIT 日志记录,请运行以下命令:</p>
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">adb root</code>
+<code class="devsite-terminal">adb shell stop</code>
+<code class="devsite-terminal">adb shell setprop dalvik.vm.extra-opts -verbose:jit</code>
+<code class="devsite-terminal">adb shell start</code>
</pre>
-<p>
-如需了解如何使用,请参阅<a href="#recommendation">建议</a>一节。
-</p>
-
-<p>
-请注意,此处引用了 A/B 无线下载 (OTA) 更新。
-</p>
-
-<p>
-检查 <code>$ adb shell cmd package compile</code> 以了解使用情况。请注意,本文档中的所有命令前面都有一个美元 ($) 符号,在复制粘贴命令时应去掉该符号。下面是几个常见用例:
-</p>
-
-<h3 id="turn-on-jit-logging">打开 JIT 日志记录</h3>
-
-<pre>
-$ adb root
-$ adb shell stop
-$ adb shell setprop dalvik.vm.extra-opts -verbose:jit
-$ adb shell start
+<h2 id="disable-jit-and-run-applications-in-interpreter">停用 JIT</h2>
+<p>要停用 JIT,请运行以下命令:</p>
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">adb root</code>
+<code class="devsite-terminal">adb shell stop</code>
+<code class="devsite-terminal">adb shell setprop dalvik.vm.usejit false</code>
+<code class="devsite-terminal">adb shell start</code>
</pre>
-<h3 id="disable-jit-and-run-applications-in-interpreter">禁用 JIT</h3>
+<h2 id="force-compilation-of-a-specific-package">强制编译</h2>
-<pre>
-$ adb root
-$ adb shell stop
-$ adb shell setprop dalvik.vm.usejit false
-$ adb shell start
+<p>要强制编译,请运行以下命令:</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile
</pre>
-<h3 id="force-compilation-of-a-specific-package">强制编译特定软件包</h3>
-
+<p>强制编译特定软件包的常见用例:</p>
<ul>
-<li>基于配置文件:
-<code>$ adb shell cmd package compile -m speed-profile -f
-my-package</code>
-</li><li>全部:
-<code>$ adb shell cmd package compile -m speed -f
-my-package</code></li>
-</ul>
-
-<h3 id="force-compilation-of-all-packages">强制编译所有软件包</h3>
-
-<ul>
-<li>基于配置文件:
-<code>$ adb shell cmd package compile -m speed-profile -f
--a</code>
-</li><li>全部:
-<code>$ adb shell cmd package compile -m speed -f -a</code></li></ul>
-
-<h3 id="clear-profile-data-and-remove-compiled-code">清除配置文件数据并删除经过编译的代码</h3>
-
-<ul>
-<li>一个软件包:
-<code>$ adb shell cmd package compile --reset my-package</code>
-</li><li>所有软件包:
-<code>$ adb shell cmd package compile --reset
--a</code></li>
-</ul>
-
-<h2 id="recommendation">建议</h2>
-
-<h3 id="runtime_compilation_level">编译/验证级别</h3>
-
-<p>
-请注意,我们强烈建议您使用以下 <code>pm.dexopt</code> 默认设置,因为它是经过我们测试而且我们将提供支持的唯一路径。
-</p>
-
-<pre>
-pm.dexopt.install=interpret-only
-pm.dexopt.bg-dexopt=speed-profile
-pm.dexopt.boot=verify-profile (or interpret-only)
+<li>基于配置文件:<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile -m speed-profile -f my-package
</pre>
-
-<p>
-以下是有关 <code>pm.dexopt</code> 选项的详细说明,以及我们提出这些建议的原因:
-</p>
-
-<pre>
-pm.dexopt.install
-</pre>
-
-<p>
-这是通过 Play 商店安装应用时所使用的编译过滤器。为了加快安装速度,我们建议 <code>interpret-only</code>。
-</p>
-
-<pre>
-pm.dexopt.bg-dexopt
-</pre>
-
-<p>
-这是当设备处于空闲状态和在充电以及充满电时所使用的编译过滤器。我们建议您使用 <code>speed-profile</code>,以利用配置文件引导的编译并节省存储空间。
-</p>
-
-<pre>
-pm.dexopt.ab-ota
+</li>
+<li>全面:
+<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile -m speed -f my-package
</pre>
+</li>
+</ul>
-<p>
-这是在进行 A/B 无线下载 (OTA) 更新时使用的编译过滤器。如果设备支持 A/B OTA,我们建议使用 <code>speed-profile</code>,以利用配置文件引导的编译并节省存储空间。
-</p>
-
-<pre>
-pm.dexopt.nsys-library
-pm.dexopt.shared-apk
-pm.dexopt.core-app
+<p>强制编译所有软件包的常见用例:</p>
+<ul>
+<li>基于配置文件:<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile -m speed-profile -f -a
</pre>
-
-<p>
-您可以使用这些不同的选项来控制如何从根本上编译被其他应用使用的应用。对于此类应用,我们建议使用 <code>speed</code> 过滤器,因为相应平台不支持对其进行有效归类。
-</p>
-
-<pre>
-pm.dexopt.first-boot
+</li>
+<li>全面:
+<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile -m speed -f -a
</pre>
+</li>
+</ul>
-<p>
-在设备初次启动时使用的编译过滤器。此时使用的过滤器只会影响出厂后的启动时间。对于这种情况,我们建议使用 <code>interpret-only</code> 过滤器,以免用户在首次使用时需要很长时间才能开始使用手机。请注意,如果 /system 中的所有应用都已进行了速度编译,<code>pm.dexopt.first-boot</code> 将不会产生任何影响。
-</p>
-
-<pre>
-pm.dexopt.boot
+<h2 id="clear-profile-data-and-remove-compiled-code">清除配置文件数据</h2>
+<p>要清除配置文件数据并移除经过编译的代码,请运行以下命令:</p>
+<ul>
+<li>针对一个软件包:<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile --reset my-package
</pre>
-
-<p>
-无线下载更新后使用的编译过滤器。对于此选项,我们<strong>强烈</strong>建议使用 <code>verify-profile</code>,以免更新时间过久。
-</p>
-
-<h3 id="system_image_compilation_level">系统映像</h3>
-
-<p>
-本节为您提供有关如何最大限度地减小系统映像大小,同时尽可能维持最高性能水平的建议。请注意,本节内容是对上述关于<a href="#runtime_compilation_level">编译/验证级别</a>的指导原则的补充。
-</p>
-
-<p>
-为预构建版本选择较低级别的编译可以减小系统映像大小。为了达到应用性能和映像大小之间的最佳折中状态,我们强烈建议您使用 <code>interpret-only</code> 过滤器来编译预构建版本。为此,请修改以下文件来添加这些条目。
-</p>
-
-<p>请将以下条目添加到 <code>BoardConfig.mk</code>:</p>
-
-<pre>WITH_DEXPREOPT := true</pre>
-
-<p>请将以下条目添加到 <code>device.mk</code>:</p>
-
-<pre>
-PRODUCT_DEX_PREOPT_DEFAULT_FLAGS := --compiler-filter=interpret-only
+</li>
+<li>针对所有软件包:<pre class="devsite-terminal devsite-click-to-copy">
+adb shell cmd package compile --reset -a
</pre>
-
-<p>
-与 <code>speed</code> 过滤器相比,使用 <code>interpret-only</code> 过滤器可将预构建版本已优化代码的大小缩小几乎一半(具体取决于应用)。借助此过滤器,运行时还可以归类预构建版本并执行配置文件引导的编译,以进一步节省数据分区存储空间。
-</p>
-
-<p>
-我们建议您不要为了进一步节省系统映像上的空间,而使用较低的编译/验证级别(例如:<code>verify-none</code>)或禁用预构建版本的优化功能。因为这会导致减缓应用的启动速度并会增加内存的消耗。
-</p>
-
-<h2 id="validation">验证</h2>
-
-<p>
-为了确保其功能版本能按预期运行,设备实现程序应该在 <code>android/art/test</code> 中运行 ART 测试。另请参阅 CTS 测试 <code>hostsidetests/compilation</code>,了解有关 userdebug 版本的信息。
-</p>
+</li>
+</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2017-05-01.html b/zh-cn/security/bulletin/2017-05-01.html
index 53582f84..5480e546 100644
--- a/zh-cn/security/bulletin/2017-05-01.html
+++ b/zh-cn/security/bulletin/2017-05-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>发布时间:2017 年 5 月 1 日 | 更新时间:2017 年 5 月 2 日</em></p>
+<p><em>发布时间:2017 年 5 月 1 日 | 更新时间:2017 年 8 月 17 日</em></p>
<p>Android 安全公告详细介绍了会影响 Android 设备的安全漏洞。除了公告之外,我们还通过无线下载 (OTA) 更新的方式发布了针对 Nexus 设备的安全更新。我们还在 <a href="https://developers.google.com/android/nexus/images">Google Developers 网站</a>上发布了 Google 设备固件映像。2017 年 5 月 5 日(或之后)的安全补丁程序级别均已解决所有这些问题。请参阅 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 和 Nexus 更新时间表</a>,了解如何检查设备的安全补丁程序级别。</p>
@@ -280,7 +280,8 @@
</tr>
<tr>
<td>CVE-2017-0598</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/4e110ab20bb91e945a17c6e166e14e2da9608f08">A-34128677</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/d42e1204d5dddb78ec9d20d125951b59a8344f40">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/4e110ab20bb91e945a17c6e166e14e2da9608f08">A-34128677</a>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/d42e1204d5dddb78ec9d20d125951b59a8344f40">2</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>
@@ -375,7 +376,9 @@
</tr>
<tr>
<td>CVE-2017-0493</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/e4cefbf4fce458489b5f1bebc79dfaf566bcc5d5">A-32793550</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/e4cefbf4fce458489b5f1bebc79dfaf566bcc5d5">A-32793550</a>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/58552f814a03d978b4a6507f3c16f71964f9b28f">3</a>]</td>
<td>中</td>
<td>所有</td>
<td>7.0、7.1.1</td>
@@ -750,7 +753,7 @@
</colgroup><tbody><tr>
<th>CVE</th>
<th>参考信息</th>
- <th>严重程度</th>
+ <th>严重程度*</th>
<th>已更新的 Google 设备</th>
<th>报告日期</th>
</tr>
@@ -788,8 +791,6 @@
<p>* 针对该问题的补丁程序未公开发布。<a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上提供的 Nexus 设备的最新二进制驱动程序中包含相应更新。</p>
-<p>*** 搭载 Android 7.1.1(或更高版本)且已安装所有可用更新的受支持的 Google 设备不受此漏洞的影响。</p>
-
<h3 id="rce-in-libxml2">libxml2 中的远程代码执行漏洞</h3>
<p>libxml2 中的远程代码执行漏洞可让攻击者使用特制文件通过非特许进程执行任意代码。由于该漏洞可用于在使用此库的应用中执行远程代码,因此我们将其严重程度评为“高”。</p>
@@ -1554,7 +1555,9 @@
<tr>
<td>CVE-2017-7184</td>
<td>A-36565222<br />
- <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=677e806da4d916052585301785d847c3b3e6186a">上游内核</a> <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f843ee6dd019bcece3e74e76ad9df0155655d0df">[2]</a></td>
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=677e806da4d916052585301785d847c3b3e6186a">
+上游内核</a> <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=f843ee6dd019bcece3e74e76ad9df0155655d0df">
+[2]</a></td>
<td>高</td>
<td>Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Pixel、Pixel XL、Android One</td>
<td>2017 年 3 月 23 日</td>
@@ -1951,7 +1954,9 @@
<tr>
<td>CVE-2016-5858</td>
<td>A-35400153<br />
- <a href="https://source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=3154eb1d263b9c3eab2c9fa8ebe498390bf5d711">QC-CR#1096799</a> <a href="https://source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=afc5bea71bc8f251dad1104568383019f4923af6">[2]</a></td>
+ <a href="https://source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=3154eb1d263b9c3eab2c9fa8ebe498390bf5d711">
+QC-CR#1096799</a> <a href="https://source.codeaurora.org/quic/la//kernel/msm-3.18/commit/?id=afc5bea71bc8f251dad1104568383019f4923af6">
+[2]</a></td>
<td>中</td>
<td>Nexus 5X、Nexus 6、Nexus 6P、Pixel、Pixel XL、Android One</td>
<td>2017 年 2 月 15 日</td>
@@ -2146,48 +2151,48 @@
</colgroup><tbody><tr>
<th>CVE</th>
<th>参考信息</th>
- <th>严重程度</th>
+ <th>严重程度*</th>
<th>已更新的 Google 设备</th>
<th>报告日期</th>
</tr>
<tr>
<td>CVE-2014-9923</td>
- <td>A-35434045**<br />QC-CR#403910</td>
+ <td>A-35434045**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9924</td>
- <td>A-35434631**<br />QC-CR#596102</td>
+ <td>A-35434631**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9925</td>
- <td>A-35444657**<br />QC-CR#638130</td>
+ <td>A-35444657**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9926</td>
- <td>A-35433784**<br />QC-CR#631527</td>
+ <td>A-35433784**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9927</td>
- <td>A-35433785**<br />QC-CR#661111</td>
+ <td>A-35433785**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9928</td>
- <td>A-35438623**<br />QC-CR#696972</td>
+ <td>A-35438623**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
@@ -2201,119 +2206,119 @@
</tr>
<tr>
<td>CVE-2014-9930</td>
- <td>A-35432946**<br />QC-CR#634637</td>
+ <td>A-35432946**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2015-9005</td>
- <td>A-36393500**<br />QC-CR#741548</td>
+ <td>A-36393500**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2015-9006</td>
- <td>A-36393450**<br />QC-CR#750559</td>
+ <td>A-36393450**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2015-9007</td>
- <td>A-36393700**<br />QC-CR#807173</td>
+ <td>A-36393700**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2016-10297</td>
- <td>A-36393451**<br />QC-CR#1061123</td>
+ <td>A-36393451**</td>
<td>严重</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9941</td>
- <td>A-36385125**<br />QC-CR#509915</td>
+ <td>A-36385125**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9942</td>
- <td>A-36385319**<br />QC-CR#533283</td>
+ <td>A-36385319**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9943</td>
- <td>A-36385219**<br />QC-CR#546527</td>
+ <td>A-36385219**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9944</td>
- <td>A-36384534**<br />QC-CR#613175</td>
+ <td>A-36384534**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9945</td>
- <td>A-36386912**<br />QC-CR#623452</td>
+ <td>A-36386912**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9946</td>
- <td>A-36385281**<br />QC-CR#520149</td>
+ <td>A-36385281**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9947</td>
- <td>A-36392400**<br />QC-CR#650540</td>
+ <td>A-36392400**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9948</td>
- <td>A-36385126**<br />QC-CR#650500</td>
+ <td>A-36385126**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9949</td>
- <td>A-36390608**<br />QC-CR#652426</td>
+ <td>A-36390608**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9950</td>
- <td>A-36385321**<br />QC-CR#655530</td>
+ <td>A-36385321**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9951</td>
- <td>A-36389161**<br />QC-CR#525043</td>
+ <td>A-36389161**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
</tr>
<tr>
<td>CVE-2014-9952</td>
- <td>A-36387019**<br />QC-CR#674836</td>
+ <td>A-36387019**</td>
<td>高</td>
<td>无***</td>
<td>Qualcomm 内部</td>
@@ -2322,7 +2327,7 @@
<p>* 这些漏洞的严重程度评级由供应商决定。</p>
-<p>* 针对该问题的补丁程序未公开发布。<a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上提供的 Nexus 设备的最新二进制驱动程序中包含相应更新。</p>
+<p>** 针对该问题的补丁程序未公开发布。<a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上提供的 Nexus 设备的最新二进制驱动程序中包含相应更新。</p>
<p>*** 搭载 Android 7.1.1(或更高版本)且已安装所有可用更新的受支持的 Google 设备不受此漏洞的影响。</p>
@@ -2358,7 +2363,7 @@
<p><strong>3. 如何确定各个问题都会影响哪些 Google 设备?</strong></p>
-<p>在 <a href="#2017-05-01-details">2017-05-01</a> 和 <a href="#2017-05-05-details">2017-05-05</a> 安全漏洞详情部分,每个表均包含“已更新的 Google 设备”列,其中列出了已针对每个问题更新过的受影响的 Google 设备系列。<em></em>此列有以下几种情形:</p>
+<p>在 <a href="#2017-05-01-details">2017-05-01</a> 和 <a href="#2017-05-05-details">2017-05-05</a> 安全漏洞详情部分,每个表均包含“已更新的 Google 设备”<em></em>列,其中列出了已针对每个问题更新过的受影响的 Google 设备系列。此列有以下几种情形:</p>
<ul>
<li><strong>所有 Google 设备</strong>:如果某个问题会影响所有 Nexus 和 Pixel 设备,则相应表的“已更新的 Google 设备”列中会显示“所有”。<em></em>“所有”包含下列<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的设备</a>:Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Android One、Nexus Player、Pixel C、Pixel 和 Pixel XL。</li>
<li><strong>部分 Google 设备</strong>:如果某个问题仅会影响部分 Google 设备,则“已更新的 Google 设备”列中会列出受影响的 Google 设备。<em></em></li>
@@ -2398,6 +2403,8 @@
<ul>
<li>2017 年 5 月 1 日:发布了本公告。</li>
<li>2017 年 5 月 2 日:修订了本公告,添加了 AOSP 链接。</li>
+<li>2017 年 8 月 10 日:修订了本公告,添加了关于 CVE-2017-0493 的附加 AOSP 链接。</li>
+<li>2017 年 8月 17 日:修订了本公告,更新了参考编号。</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/source/view-patches.html b/zh-cn/source/view-patches.html
new file mode 100644
index 00000000..91dc2ab8
--- /dev/null
+++ b/zh-cn/source/view-patches.html
@@ -0,0 +1,84 @@
+<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 开放源代码项目的所有补丁程序,或者要查看或验证某项更改,请参阅 <a href="https://www.google.com/url?sa=D&q=https%3A%2F%2Fandroid-review.googlesource.com%2F%23%2Fq%2Fstatus%3Aopen%2BOR%2Bstatus%3Aclosed">AOSP Gerrit</a>。要详细了解如何查找某项具体的更改,请参阅 <a href="https://gerrit-review.googlesource.com/Documentation/user-search.html">Gerrit 代码审核 - 搜索更改</a>。
+ </p>
+
+ <h2 id="reviewing-a-change">审核更改</h2>
+
+ <p>如果您被指定为某项更改的审核者,则需要确定以下几点:<em></em></p>
+
+ <ul>
+ <li>这项更改是否符合此项目的既定目的?</li>
+ <li>这项更改在项目的现有架构中是否有效?
+ </li>
+ <li>这项更改是否会引入会在将来造成问题的设计缺陷?</li>
+ <li>这项更改是否遵循了针对此项目制定的最佳做法?</li>
+ <li>这项更改是否是执行所述功能的绝佳方式?</li>
+ <li>这项更改是否会带来任何安全风险或不稳定性方面的风险?</li>
+ </ul>
+
+ <p>如果您要批准这项更改,请在 Gerrit 中将其标记为 LGTM(“看起来不错”)。
+ </p>
+
+ <h2 id="verifying-a-change">验证更改</h2>
+
+ <p>如果您被指定为某项更改的验证者,则需要执行以下工作:<em></em></p>
+
+ <ul>
+ <li>使用其中一种下载命令将更改以补丁程序的形式添加到自己的本地客户端。</li>
+ <li>编译并测试更改内容。</li>
+ <li>在 Gerrit 中选择 <strong>Reply</strong>(回复)按钮。系统会打开一个注释框,您可以选择是否在此框中将更改标记为“Verified”(已验证),并添加一条消息说明发现了哪些问题。<em></em></li>
+ </ul>
+
+ <h2 id="downloading-changes-from-gerrit">从 Gerrit 下载更改内容</h2>
+
+ <p>已验证并合并的提交内容将在下一次运行 <code>repo sync</code> 时下载。如果您想下载尚未获得批准的特定更改,请运行以下命令:</p>
+
+ <pre class="devsite-terminal devsite-click-to-copy">
+repo download <var>TARGET CHANGE</var></pre>
+
+ <p>其中 <code><var>TARGET</var></code> 是更改应该下载到的本地目录,<code><var>CHANGE</var></code> 是 Gerrit 中列出的更改编号。如需了解详细信息,请参阅 <a href="https://source.android.com/source/using-repo.html">Repo 参考资料</a>。
+ </p>
+
+ <h2 id="how-do-i-become-a-verifier-or-reviewer">如何成为验证者或审核者?</h2>
+
+ <p>简言之,为一个或多个 Android 项目贡献高质量代码。要详细了解 Android 开放源代码社区中的不同角色以及谁在担任这些角色,请参阅<a href="https://source.android.com/source/roles.html">项目角色</a>。
+ </p>
+
+ <h2 id="diffs-and-comments">差异和注释</h2>
+
+ <p>要在 Gerrit 中打开某项更改的详细信息,请点击这项更改的“Id number”(ID 号)或“Subject”(主题)。<em></em><em></em>要比较原有代码与更新后的代码,请点击“Side-by-side diffs”(并排显示差异)下的文件名。<em></em>
+ </p>
+
+ <h2 id="adding-comments">添加注释</h2>
+
+ <p>社区中的任何人都可以使用 Gerrit 为提交的代码添加代码内注释。如果注释内容与 Gerrit 中其所依附的代码行或代码段相关,那就是一条好注释。注释可能是关于如何改进一行代码的简短而有建设性的建议,也可能是作者对于为什么这样编写代码的解释。
+ </p>
+
+ <p>要添加代码内注释,请双击代码的相关行,然后在打开的文本框中编写注释。点击“<strong>Save</strong>”(保存)后,只有您可以看到自己的注释。
+ </p>
+
+ <p>要发布注释以便让其他使用 Gerrit 的人可以看到,请点击“Publish Comments”(发布注释)按钮。您的注释将通过电子邮件发送给这项更改的所有相关方,包括更改的所有者、补丁程序集上传者(如果与所有者不同)以及所有当前审核者。
+ </p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/2017-05-01.html b/zh-tw/security/bulletin/2017-05-01.html
index 75f3345f..f7efabce 100644
--- a/zh-tw/security/bulletin/2017-05-01.html
+++ b/zh-tw/security/bulletin/2017-05-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>發佈日期:2017 年 5 月 1 日 | 更新日期:2017 年 5 月 2 日</em></p>
+<p><em>2017 年 5 月 1 日發佈 | 2017 年 8 月 17 日更新</em></p>
<p>Android 安全性公告羅列了會對 Android 裝置造成影響的安全性漏洞,並說明各項相關細節。在這篇公告發佈的同時,Google 已透過 OTA 更新機制發佈了 Google 裝置的安全性更新。此外,Google 韌體映像檔也已經發佈到 <a href="https://developers.google.com/android/nexus/images">Google Developers 網站</a>上。2017 年 5 月 5 日之後的安全修補等級已解決了這些問題。請參閱 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel 與 Nexus 更新時間表</a>,瞭解如何查看裝置的安全修補等級。</p>
@@ -186,7 +186,7 @@
<h3 id="eop-in-mediaserver">媒體伺服器中的權限升級漏洞</h3>
-<p>媒體伺服器中的權限升級漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。由於這個問題可用於取得某些進階功能的本機存取權,第三方應用程式通常無法存取這類功能,因此嚴重程度被評定為「高」。</p>
+<p>媒體伺服器中的權限升級漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。由於有心人士可利用這個漏洞來取得某些進階功能的本機存取權,第三方應用程式通常無法存取這類功能,因此嚴重程度被評定為「高」。</p>
<table>
<colgroup><col width="18%" />
@@ -231,7 +231,7 @@
<h3 id="eop-in-audioserver">音訊伺服器中的權限升級漏洞</h3>
-<p>音訊伺服器中的權限升級漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。由於這個問題可被利用來取得某些進階功能的本機存取權,第三方應用程式通常無法存取這類功能,因此嚴重程度被評定為「高」。</p>
+<p>音訊伺服器中的權限升級漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何指令。由於有心人士可利用這個漏洞來取得某些進階功能的本機存取權,第三方應用程式通常無法存取這類功能,因此嚴重程度被評定為「高」。</p>
<table>
<colgroup><col width="18%" />
@@ -260,7 +260,7 @@
<h3 id="id-in-framework-apis">Framework API 中的資訊外洩漏洞</h3>
-<p>Framework API 中的資訊外洩漏洞可能會讓本機惡意應用程式規避作業系統為了將應用程式資料與其他應用程式隔離而採取的防護措施。由於這個問題可用於取得某個應用程式無法存取的資料,因此嚴重程度被評定為「高」。</p>
+<p>Framework API 中的資訊外洩漏洞可能會讓本機惡意應用程式規避作業系統為了將應用程式資料與其他應用程式隔離而採取的防護措施。由於有心人士可利用這個漏洞來取得某個應用程式無法存取的資料,因此嚴重程度被評定為「高」。</p>
<table>
<colgroup><col width="18%" />
@@ -325,9 +325,9 @@
</tr>
</tbody></table>
-<h3 id="eop-in-bluetooth">藍牙中的權限升級漏洞</h3>
+<h3 id="eop-in-bluetooth">藍牙功能的權限升級漏洞</h3>
-<p>藍牙中的權限升級漏洞可能會讓本機惡意應用程式在未經使用者同意的情況下接受透過藍牙分享的有害檔案。由於這個問題可能會讓有心人士規避本機的使用者互動要求,因此嚴重程度被評定為「中」。</p>
+<p>藍牙功能的權限升級漏洞可能會讓本機惡意應用程式在未經使用者同意的情況下接受透過藍牙分享的有害檔案。由於這個問題可能會讓有心人士規避本機的使用者互動要求,因此嚴重程度被評定為「中」。</p>
<table>
<colgroup><col width="18%" />
@@ -354,9 +354,9 @@
</tr>
</tbody></table>
-<h3 id="id-in-file-based-encryption">個別檔案加密中的資訊外洩漏洞</h3>
+<h3 id="id-in-file-based-encryption">個別檔案加密機制所衍生的資訊外洩漏洞</h3>
-<p>個別檔案加密中的資訊外洩漏洞可能會讓本機惡意應用程式規避作業系統針對螢幕鎖定而採取的防護措施。由於這個問題或許可用來略過螢幕鎖定,因此嚴重程度被評定為「中」。</p>
+<p>個別檔案加密機制所衍生的資訊外洩漏洞可能會讓本機惡意應用程式規避作業系統針對螢幕鎖定而採取的防護措施。由於這個問題或許可用來略過螢幕鎖定,因此嚴重程度被評定為「中」。</p>
<table>
<colgroup><col width="18%" />
@@ -376,7 +376,8 @@
<tr>
<td>CVE-2017-0493</td>
<td><a href="https://android.googlesource.com/platform/frameworks/base/+/e4cefbf4fce458489b5f1bebc79dfaf566bcc5d5">A-32793550</a>
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]</td>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/f806d65e615b942c268a5f68d44bde9d55634972">2</a>]
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/58552f814a03d978b4a6507f3c16f71964f9b28f">3</a>]</td>
<td>中</td>
<td>全部</td>
<td>7.0、7.1.1</td>
@@ -384,9 +385,9 @@
</tr>
</tbody></table>
-<h3 id="id-in-bluetooth">藍牙中的資訊外洩漏洞</h3>
+<h3 id="id-in-bluetooth">藍牙的資訊外洩漏洞</h3>
-<p>藍牙中的資訊外洩漏洞可能會讓本機惡意應用程式規避作業系統為了將應用程式資料與其他應用程式隔離而採取的防護措施。由於這個問題具有專屬的詳細資料,因此嚴重程度被評定為「中」。</p>
+<p>藍牙的資訊外洩漏洞可能會讓本機惡意應用程式規避作業系統為了將應用程式資料與其他應用程式隔離而採取的防護措施。由於這個問題具有專屬的詳細資料,因此嚴重程度被評定為「中」。</p>
<table>
<colgroup><col width="18%" />
@@ -535,7 +536,7 @@
<h3 id="eop-in-mediatek-touchscreen-driver">MediaTek 觸控螢幕驅動程式中的權限升級漏洞</h3>
-<p>MediaTek 觸控螢幕驅動程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Re-flash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
+<p>MediaTek 觸控螢幕驅動程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -566,7 +567,7 @@
<h3 id="eop-in-qualcomm-bootloader">Qualcomm 開機導引程式中的權限升級漏洞</h3>
-<p>Qualcomm 開機導引程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Re-flash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
+<p>Qualcomm 開機導引程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -603,7 +604,7 @@ QC-CR#1094105</a></td>
<h3 id="eop-in-kernel-sound-subsystem">核心音效子系統中的權限升級漏洞</h3>
-<p>核心音效子系統中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Re-flash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
+<p>核心音效子系統中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -631,7 +632,7 @@ QC-CR#1094105</a></td>
<h3 id="eop-in-motorola-bootloader">Motorola 開機導引程式中的權限升級漏洞</h3>
-<p>Motorola 開機導引程式中的權限升級漏洞可能會讓本機惡意應用程式在開機導引程式環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Re-flash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
+<p>Motorola 開機導引程式中的權限升級漏洞可能會讓本機惡意應用程式在開機導引程式環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -660,7 +661,7 @@ QC-CR#1094105</a></td>
<h3 id="eop-in-nvidia-video-driver">NVIDIA 視訊驅動程式中的權限升級漏洞</h3>
-<p>NVIDIA 視訊驅動程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,使裝置必須以還原 (Re-flash) 作業系統的方式才能修復,因此嚴重程度被評定為「最高」。</p>
+<p>NVIDIA 視訊驅動程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -689,7 +690,7 @@ QC-CR#1094105</a></td>
<h3 id="eop-in-qualcomm-power-driver">Qualcomm 電源驅動程式中的權限升級漏洞</h3>
-<p>核心 Qualcomm 電源驅動程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Re-flash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
+<p>核心 Qualcomm 電源驅動程式中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -719,7 +720,7 @@ QC-CR#826589</a></td>
<h3 id="eop-in-kernel-trace-subsystem">核心追蹤子系統中的權限升級漏洞</h3>
-<p>核心追蹤子系統中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Re-flash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
+<p>核心追蹤子系統中的權限升級漏洞可能會讓本機惡意應用程式在核心環境內執行任何指令。由於這個問題可能導致本機裝置的安全性徹底被破壞,造成使用者必須以還原 (Reflash) 作業系統的方式才能修復裝置,因此嚴重程度被評定為「最高」。</p>
<table>
<colgroup><col width="19%" />
@@ -758,7 +759,7 @@ QC-CR#1048480</a></td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>參考資料</th>
- <th>嚴重程度</th>
+ <th>嚴重程度*</th>
<th>更新的 Google 裝置</th>
<th>回報日期</th>
</tr>
@@ -800,8 +801,6 @@ QC-CR#1048480</a></td>
<p>* 這個問題的修補程式並未開放給一般使用者下載,而是直接整合在最新的 Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers">Google Developers 網站</a>下載這些驅動程式。</p>
-<p>*** 如果是搭載 Android 7.1.1 以上版本的 Google 裝置 (必須是受支援的機型,且已安裝所有可用更新),就不會受到這個漏洞所影響。</p>
-
<h3 id="rce-in-libxml2">libxml2 中的遠端程式碼執行漏洞</h3>
<p>libxml2 中的遠端程式碼執行漏洞可能會讓攻擊者能利用特製檔案在未獲授權的程序環境內執行任何指令。由於這個問題可能會讓遠端程式碼在使用這個程式庫的應用程式中執行,因此嚴重程度被評定為「高」。</p>
@@ -951,7 +950,7 @@ QC-CR#1104899</a></td>
QC-CR#1090237</a></td>
<td>高</td>
<td>Pixel、Pixel XL</td>
- <td>2016 年 2 月 15 日</td>
+ <td>2017 年 2 月 15 日</td>
</tr>
</tbody></table>
@@ -2080,7 +2079,7 @@ QC-CR#1100878</a></td>
<h3 id="id-in-qualcomm-spcom-driver">Qualcomm SPCom 驅動程式中的資訊外洩漏洞</h3>
-<p>Qualcomm SPCopm 驅動程式中的資訊外洩漏洞可能會讓本機惡意應用程式存取其權限範圍以外的資料。由於這種攻擊必須先破壞特定獲授權的程序才能執行,因此這個問題的嚴重程度被評定為「中」。</p>
+<p>Qualcomm SPCom 驅動程式中的資訊外洩漏洞可能會讓本機惡意應用程式存取其權限範圍以外的資料。由於這種攻擊必須先破壞特定獲授權的程序才能執行,因此這個問題的嚴重程度被評定為「中」。</p>
<table>
<colgroup><col width="19%" />
@@ -2216,54 +2215,48 @@ QC-CR#832915</a></td>
</colgroup><tbody><tr>
<th>CVE</th>
<th>參考資料</th>
- <th>嚴重程度</th>
+ <th>嚴重程度*</th>
<th>更新的 Google 裝置</th>
<th>回報日期</th>
</tr>
<tr>
<td>CVE-2014-9923</td>
- <td>A-35434045**<br />
- QC-CR#403910</td>
+ <td>A-35434045**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9924</td>
- <td>A-35434631**<br />
- QC-CR#596102</td>
+ <td>A-35434631**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9925</td>
- <td>A-35444657**<br />
- QC-CR#638130</td>
+ <td>A-35444657**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9926</td>
- <td>A-35433784**<br />
- QC-CR#631527</td>
+ <td>A-35433784**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9927</td>
- <td>A-35433785**<br />
- QC-CR#661111</td>
+ <td>A-35433785**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9928</td>
- <td>A-35438623**<br />
- QC-CR#696972</td>
+ <td>A-35438623**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
@@ -2278,136 +2271,119 @@ QC-CR#832915</a></td>
</tr>
<tr>
<td>CVE-2014-9930</td>
- <td>A-35432946**<br />
- QC-CR#634637</td>
+ <td>A-35432946**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2015-9005</td>
- <td>A-36393500**<br />
- QC-CR#741548</td>
+ <td>A-36393500**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2015-9006</td>
- <td>A-36393450**<br />
- QC-CR#750559</td>
+ <td>A-36393450**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2015-9007</td>
- <td>A-36393700**<br />
- QC-CR#807173</td>
+ <td>A-36393700**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2016-10297</td>
- <td>A-36393451**<br />
- QC-CR#1061123</td>
+ <td>A-36393451**</td>
<td>最高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9941</td>
- <td>A-36385125**<br />
- QC-CR#509915</td>
+ <td>A-36385125**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9942</td>
- <td>A-36385319**<br />
- QC-CR#533283</td>
+ <td>A-36385319**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9943</td>
- <td>A-36385219**<br />
- QC-CR#546527</td>
+ <td>A-36385219**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9944</td>
- <td>A-36384534**<br />
- QC-CR#613175</td>
+ <td>A-36384534**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9945</td>
- <td>A-36386912**<br />
- QC-CR#623452</td>
+ <td>A-36386912**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9946</td>
- <td>A-36385281**<br />
- QC-CR#520149</td>
+ <td>A-36385281**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9947</td>
- <td>A-36392400**<br />
- QC-CR#650540</td>
+ <td>A-36392400**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9948</td>
- <td>A-36385126**<br />
- QC-CR#650500</td>
+ <td>A-36385126**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9949</td>
- <td>A-36390608**<br />
- QC-CR#652426</td>
+ <td>A-36390608**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9950</td>
- <td>A-36385321**<br />
- QC-CR#655530</td>
+ <td>A-36385321**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9951</td>
- <td>A-36389161**<br />
- QC-CR#525043</td>
+ <td>A-36389161**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
</tr>
<tr>
<td>CVE-2014-9952</td>
- <td>A-36387019**<br />
- QC-CR#674836</td>
+ <td>A-36387019**</td>
<td>高</td>
<td>無***</td>
<td>Qualcomm 內部</td>
@@ -2440,9 +2416,9 @@ QC-CR#832915</a></td>
<li>[ro.build.version.security_patch]:[2017-05-05]</li>
</ul>
-<p><strong>2. 為什麼這篇公告有兩種安全修補等級?</strong></p>
+<p><strong>2. 為什麼這篇公告有兩種安全性修補程式等級?</strong></p>
-<p>本公告有兩種安全修補等級,讓 Android 合作夥伴能夠靈活運用,以快速修正某些發生在所有 Android 裝置上的類似漏洞。我們建議 Android 合作夥伴修正本公告所列的所有問題,並使用最新的安全修補等級。</p>
+<p>本公告有兩種安全性修補程式等級,讓 Android 合作夥伴能夠靈活運用,以快速修正某些發生在所有 Android 裝置上的類似漏洞。我們建議 Android 合作夥伴修正本公告所列的所有問題,並使用最新的安全修補等級。</p>
<ul>
<li>安全修補等級為 2017 年 5 月 1 日的裝置必須納入所有與該安全修補等級相關的問題,以及在之前安全性公告中回報的所有問題適用的修正程式。</li>
<li>如果裝置的安全修補等級在 2017 年 5 月 5 日之後,就必須加入本安全性公告 (以及之前公告) 中的所有適用修補程式。</li>
@@ -2454,9 +2430,9 @@ QC-CR#832915</a></td>
<p>在 <a href="#2017-05-01-details">2017-05-01</a> 和 <a href="#2017-05-05-details">2017-05-05</a> 安全性漏洞詳情的章節中,每個表格都包含「更新的 Google 裝置」<em></em>欄,當中列出已針對各個問題進行更新的受影響 Google 裝置範圍。此欄中的選項包括:</p>
<ul>
-<li><strong>所有 Google 裝置</strong>:如果問題會影響到「全部」和 Pixel 裝置,表格內「更新的 Google 裝置」<em></em>欄中就會顯示「全部」字樣。「全部」包含下列<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">支援的裝置</a>:Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Android One、Nexus Player、Pixel C、Pixel 和 Pixel XL。</li>
+<li><strong>所有 Google 裝置</strong>:如果問題會影響到 Pixel 裝置和所有的 Google 裝置,表格內「更新的 Google 裝置」<em></em>欄中就會標示「全部」字樣。「全部」包含下列<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">支援的裝置</a>:Nexus 5X、Nexus 6、Nexus 6P、Nexus 9、Android One、Nexus Player、Pixel C、Pixel 和 Pixel XL。</li>
<li><strong>部分 Google 裝置</strong>:如果問題並未影響到所有 Google 裝置,則「更新的 Google 裝置」<em></em>欄中會列出受影響的 Google 裝置。</li>
-<li><strong>無 Google 裝置</strong>:如果問題不會影響到任何搭載 Android 7.0 的 Google 裝置,「更新的 Google 裝置」<em></em>欄中就會顯示「無」字樣。</li>
+<li><strong>不影響任何 Google 裝置</strong>:如果問題不會影響到任何搭載 Android 7.0 的 Google 裝置,表格內「更新的 Google 裝置」<em></em>欄中就會標示「無」字樣。</li>
</ul>
<p><strong>4. 參考資料欄中的項目會對應到什麼?</strong></p>
@@ -2491,7 +2467,9 @@ QC-CR#832915</a></td>
<h2 id="revisions">修訂版本</h2>
<ul>
<li>2017 年 5 月 1 日:發佈公告。</li>
-<li>2017 年 5 月 2 日:在公告中加入 AOSP 連結。</li>
+<li>2017 年 5 月 2 日:修訂公告內容 (加入 AOSP 連結)。</li>
+<li>2017 年 8 月 10 日:修訂公告內容 (加入 CVE-2017-0493 的其他 AOSP 連結)。</li>
+<li>2017 年 8 月 17 日:修訂公告內容 (更新參考編號清單)。</li>
</ul>
</body></html> \ No newline at end of file