aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Partner Docs <noreply@android.com>2018-08-13 10:09:53 -0700
committerClay Murphy <claym@google.com>2018-08-13 10:42:59 -0700
commit1731f4ad91051c17b9c66913c56283c55751df41 (patch)
tree59d30bb760f8a421a134b30b0b3fe429b6918516
parentabcf037c51ed49ed1a33187b9329beadce22271a (diff)
downloadsource.android.com-1731f4ad91051c17b9c66913c56283c55751df41.tar.gz
Docs: Changes to source.android.com
- 208499135 Devsite localized content from translation request 952101. by Android Partner Docs <noreply@android.com> - 208499120 Devsite localized content from translation request 956390. by Android Partner Docs <noreply@android.com> - 208289251 Updated Develop CTS page on source.android.com to reflect... by Android Partner Docs <noreply@android.com> - 208275837 Explain a complete stack unwind, showing all the differen... by Android Partner Docs <noreply@android.com> - 208275639 Removing bug reporting from Jack article by Heidi von Markham <hvm@google.com> - 208269325 Switch to gdbclient.py. by Android Partner Docs <noreply@android.com> - 208122929 Devsite localized content from translation request 958914. by Android Partner Docs <noreply@android.com> - 208122926 Devsite localized content from translation request 960485. by Android Partner Docs <noreply@android.com> - 208122918 Devsite localized content from translation request 955354. by Android Partner Docs <noreply@android.com> - 208122894 Devsite localized content from translation request 958911. by Android Partner Docs <noreply@android.com> - 208122890 Devsite localized content from translation request 941625. by Android Partner Docs <noreply@android.com> - 208122882 Devsite localized content from translation request 961382. by Android Partner Docs <noreply@android.com> - 208106869 Update links for maintanability by Kenneth Lau <kennethlau@google.com> - 208052953 Fix command path in terminal sample by Christina Nguyen <cqn@google.com> - 207987258 Update java pseudocode by Android Partner Docs <noreply@android.com> - 207947311 removing todos, general formatting updates, table tweaks by Heidi von Markham <hvm@google.com> PiperOrigin-RevId: 208499135 Change-Id: I3d2bdb35299b34fa43360469b9496fdacad7a533
-rw-r--r--en/compatibility/cts/development.html7
-rw-r--r--en/devices/architecture/hidl/services.html4
-rw-r--r--en/devices/architecture/vndk/build-system.html703
-rw-r--r--en/devices/tech/connect/carrier-wifi.md20
-rw-r--r--en/devices/tech/debug/gdb.html11
-rw-r--r--en/devices/tech/debug/index.html158
-rw-r--r--en/setup/build/jack.html63
-rw-r--r--zh-cn/compatibility/android-cdd.html90
-rw-r--r--zh-cn/compatibility/cts/audio-framework.html4
-rw-r--r--zh-cn/compatibility/cts/run.html2
-rw-r--r--zh-cn/compatibility/cts/setup.html4
-rw-r--r--zh-cn/compatibility/vts/performance.html4
-rw-r--r--zh-cn/devices/architecture/vintf/index.html10
-rw-r--r--zh-cn/devices/graphics/implement-vulkan.html104
-rw-r--r--zh-cn/devices/tech/admin/enterprise-telephony.html4
-rw-r--r--zh-cn/devices/tech/admin/multi-user.html2
-rw-r--r--zh-cn/devices/tech/config/update.html167
-rw-r--r--zh-cn/devices/tech/connect/block-numbers.html2
-rw-r--r--zh-cn/devices/tech/ota/nonab/inside_packages.html6
-rw-r--r--zh-cn/devices/tech/power/device.html4
-rw-r--r--zh-cn/devices/tech/settings/settings-guidelines.html378
-rw-r--r--zh-cn/devices/tech/test_infra/tradefed/full_example.html2
-rw-r--r--zh-cn/security/bulletin/2018-02-01.html6
-rw-r--r--zh-cn/security/bulletin/2018-03-01.html4
-rw-r--r--zh-cn/security/bulletin/2018-07-01.html42
-rw-r--r--zh-cn/security/bulletin/2018.html20
-rw-r--r--zh-cn/security/bulletin/index.html28
-rw-r--r--zh-cn/security/bulletin/pixel/2018-01-01.html5
-rw-r--r--zh-cn/security/bulletin/pixel/2018-02-01.html5
-rw-r--r--zh-cn/security/bulletin/pixel/2018-03-01.html2
-rw-r--r--zh-cn/security/bulletin/pixel/2018-06-01.html124
-rw-r--r--zh-cn/security/bulletin/pixel/2018-07-01.html30
-rw-r--r--zh-cn/security/bulletin/pixel/2018.html30
-rw-r--r--zh-cn/security/bulletin/pixel/index.html32
-rw-r--r--zh-cn/security/encryption/file-based.html2
-rw-r--r--zh-cn/security/keystore/tags.html10
-rw-r--r--zh-cn/security/overview/acknowledgements.html193
-rw-r--r--zh-cn/setup/build/building.html45
-rw-r--r--zh-cn/setup/build/devices.html6
-rw-r--r--zh-cn/setup/build/running.html2
-rw-r--r--zh-cn/setup/develop/new-device.html17
-rw-r--r--zh-cn/setup/start/brands.html4
-rw-r--r--zh-cn/setup/start/site-updates.html13
43 files changed, 1612 insertions, 757 deletions
diff --git a/en/compatibility/cts/development.html b/en/compatibility/cts/development.html
index cc668123..3741c35e 100644
--- a/en/compatibility/cts/development.html
+++ b/en/compatibility/cts/development.html
@@ -253,6 +253,11 @@ updated from time to time as CTS for the given Android version matures.</p>
</thead>
<tbody>
<tr>
+ <td>9</td>
+ <td>pie-cts-dev</td>
+ <td>Monthly</td>
+ </tr>
+<tr>
<td>8.1</td>
<td>oreo-mr1-cts-dev</td>
<td>Monthly</td>
@@ -299,7 +304,7 @@ Open Source Project (AOSP).
<p>CTS development branches have been set up so that changes submitted to each
branch will automatically merge as below:<br>
marshmallow-cts-dev ->
-nougat-cts-dev -> nougat-mr1-cts-dev -> oreo-cts-dev -> oreo-mr1-cts-dev -> &lt;private-development-branch for Android P&gt;</p>
+nougat-cts-dev -> nougat-mr1-cts-dev -> oreo-cts-dev -> oreo-mr1-cts-dev -> pie-cts-dev -> &lt;private-development-branch for Android Q&gt;</p>
<p>If a changelist (CL) fails to merge correctly, the author of the CL will get
an email with instructions on how to resolve the conflict. In most of the
diff --git a/en/devices/architecture/hidl/services.html b/en/devices/architecture/hidl/services.html
index 1d2deccb..c7ddd8f6 100644
--- a/en/devices/architecture/hidl/services.html
+++ b/en/devices/architecture/hidl/services.html
@@ -55,8 +55,8 @@ version, calling <code>getService</code> on the desired HAL class:</p>
sp&lt;V1_1::IFooService&gt; service = V1_1::IFooService::getService();
sp&lt;V1_1::IFooService&gt; alternateService = V1_1::IFooService::getService("another_foo_service");
// Java
-V1_1.IFooService; service = V1_1.IFooService.getService(true /* retry */);
-V1_1.IFooService; alternateService = V1_1.IFooService.getService("another", true /* retry */);
+V1_1.IFooService service = V1_1.IFooService.getService(true /* retry */);
+V1_1.IFooService alternateService = V1_1.IFooService.getService("another", true /* retry */);
</pre>
<p>Each version of a HIDL interface is treated as a separate interface. Thus,
diff --git a/en/devices/architecture/vndk/build-system.html b/en/devices/architecture/vndk/build-system.html
index 6c4acf64..72737be6 100644
--- a/en/devices/architecture/vndk/build-system.html
+++ b/en/devices/architecture/vndk/build-system.html
@@ -22,299 +22,288 @@
-->
-<p>The build system comes with built-in VNDK support in Android 8.1. If the
-VNDK support is enabled, the build system checks the dependencies between
-modules, builds a vendor-specific variant for vendor modules, and automatically
-installs those modules into designated directories.</p>
-
-<p>The following example illustrates the basic concepts:</p>
-
-<p><img src="../images/treble_vndk_androidbp.png" alt="libexample with vendor_available:true and vndk.enabled:true" /></p>
-<figcaption><strong>Figure 1.</strong> VNDK support enable.</figcaption>
-
-<p>The <code>Android.bp</code> module definition defines a
-library named <code>libexample</code>. The <code>vendor_available</code>
-property means that both framework modules and vendor modules may depend on
-<code>libexample</code>. In this example, both the framework executable
-<code>/system/bin/foo</code> and the vendor executable
-<code>/vendor/bin/bar</code> depend on <code>libexample</code> and have
-<code>libexample</code> in their <code>shared_libs</code> properties.</p>
-
-<p>If <code>libexample</code> is used by both framework modules and vendor
-modules, two variants of <code>libexample</code> are built. The core
-variant (named after <code>libexample</code>) is used by framework modules
-and the vendor variant (named after <code>libexample.vendor</code>) is
-used by vendor modules.</p>
-
-<p>Two variants are installed into different directories. The core variant
-is installed into <code>/system/lib[64]/libexample.so</code>. The vendor
-variant is installed into <code>/system/lib[64]/vndk/libexample.so</code>
-because <code>vndk.enabled</code> is <code>true</code>.</p>
-
-<p>For more details, see
-<a href="#module-definition">Module definition</a>.</p>
-
-
+<p>
+ In Android 8.1 and higher, the build system has built-in VNDK support. When
+ VNDK support is enabled, the build system checks the dependencies between
+ modules, builds a vendor-specific variant for vendor modules, and
+ automatically installs those modules into designated directories.
+</p>
+
+<h2 id=vndk-build-support-example>VNDK build support example</h2>
+
+<p>
+ In this example, the <code>Android.bp</code> module definition defines a
+ library named <code>libexample</code>. The <code>vendor_available</code>
+ property indicates framework modules and vendor modules may depend on
+ <code>libexample</code>:
+</p>
+
+<p>
+ <img src="../images/treble_vndk_androidbp.png" alt="libexample vendor_available:true and vndk.enabled:true" />
+</p>
+<figcaption>
+ <strong>Figure 1.</strong> VNDK support enabled
+</figcaption>
+
+<p>
+ Both the framework executable <code>/system/bin/foo</code> and the vendor
+ executable <code>/vendor/bin/bar</code> depend on <code>libexample</code> and
+ have <code>libexample</code> in their <code>shared_libs</code> properties.
+</p>
+
+<p>
+ If <code>libexample</code> is used by both framework modules and vendor
+ modules, two variants of <code>libexample</code> are built. The core variant
+ (named after <code>libexample</code>) is used by framework modules and the
+ vendor variant (named after <code>libexample.vendor</code>) is used by vendor
+ modules. The two variants are installed into different directories:
+</p>
+<ul>
+ <li>The core variant is installed into
+ <code>/system/lib[64]/libexample.so</code>.</li>
+ <li>The vendor variant is installed into
+ <code>/system/lib[64]/vndk/libexample.so</code> because
+ <code>vndk.enabled</code> is <code>true</code>.</li>
+</ul>
+<p>
+ For more details, see <a href="#module-definition">Module definition</a>.
+</p>
-<h2 id="configuration">Configuration</h2>
+<h2 id="configuring-build-support">Configuring build support</h2>
-<p>To enable full build system support for a product device, add
-<code>BOARD_VNDK_VERSION</code> to <code>BoardConfig.mk</code>:</p>
+<p>
+ To enable full build system support for a product device, add
+ <code>BOARD_VNDK_VERSION</code> to <code>BoardConfig.mk</code>:
+</p>
<pre class="prettyprint">BOARD_VNDK_VERSION := current</pre>
-
-
-<h3 id="migration-notes">Migration notes</h3>
-
-<p>Adding <code>BOARD_VNDK_VERSION</code> to <code>BoardConfig.mk</code> has a
-global effect. When defined in <code>BoardConfig.mk</code>, all
-modules are checked. There is no mechanism to blacklist or whitelist an
-offending module. The practice is to add <code>BOARD_VNDK_VERSION</code> after
-cleaning all unnecessary dependencies.</p>
-
-<p>During a migration process, you can test and compile a module by setting
-<code>BOARD_VNDK_VERSION</code> in your environment variables:</p>
+<p>
+ This setting has a <strong>global</strong> effect: When defined in
+ <code>BoardConfig.mk</code>, all modules are checked. As there is no mechanism
+ to blacklist or whitelist an offending module, you should clean all
+ unnecessary dependencies before adding <code>BOARD_VNDK_VERSION</code>. You
+ can test and compile a module by setting <code>BOARD_VNDK_VERSION</code> in
+ your environment variables:
+</p>
<pre class="prettyprint">$ BOARD_VNDK_VERSION=current m module_name.vendor</pre>
-<p>Yet another side effect is the removal of <em>default global header search
-paths</em>. If <code>BOARD_VNDK_VERSION</code> is enabled, the following
-default header search paths are not added by default:</p>
+<p>When <code>BOARD_VNDK_VERSION</code> is enabled, several default global
+ header search paths are <em>removed</em>. These include:
+</p>
<ul>
- <li>frameworks/av/include</li>
- <li>frameworks/native/include</li>
- <li>frameworks/native/opengl/include</li>
- <li>hardware/libhardware/include</li>
- <li>hardware/libhardware_legacy/include</li>
- <li>hardware/ril/include</li>
- <li>libnativehelper/include</li>
- <li>libnativehelper/include_deprecated</li>
- <li>system/core/include</li>
- <li>system/media/audio/include</li>
+ <li><code>frameworks/av/include</code></li>
+ <li><code>frameworks/native/include</code></li>
+ <li><code>frameworks/native/opengl/include</code></li>
+ <li><code>hardware/libhardware/include</code></li>
+ <li><code>hardware/libhardware_legacy/include</code></li>
+ <li><code>hardware/ril/include</code></li>
+ <li><code>libnativehelper/include</code></li>
+ <li><code>libnativehelper/include_deprecated</code></li>
+ <li><code>system/core/include</code></li>
+ <li><code>system/media/audio/include</code></li>
</ul>
-<p>If a module depends on the headers from these directories, its author must
-explicitly specify the dependencies with <code>header_libs</code>,
-<code>static_libs</code>, and/or <code>shared_libs</code>.</p>
-
-
-
-
+<p>
+ If a module depends on the headers from these directories, you must specify
+ (explicitly) the dependencies with <code>header_libs</code>,
+ <code>static_libs</code>, and/or <code>shared_libs</code>.
+</p>
<h2 id="module-definition">Module definition</h2>
-<p>To build Android with <code>BOARD_VNDK_VERSION</code>, developers must
-revise their module definition in either <code>Android.mk</code> or
-<code>Android.bp</code>. This subsection describes different kinds of module
-definitions, several VNDK-related module properties, and the dependency checks
-implemented in the build system.</p>
-
-
+<p>
+ To build Android with <code>BOARD_VNDK_VERSION</code>, you must revise the
+ module definition in either <code>Android.mk</code> or
+ <code>Android.bp</code>. This section describes different kinds of module
+ definitions, several VNDK-related module properties, and dependency checks
+ implemented in the build system.
+</p>
<h3 id="vendor-modules">Vendor modules</h3>
-<p>Vendor modules are vendor-specific executables or shared libraries that
-must be installed into a vendor partition. In <code>Android.bp</code> files,
-vendor modules must set vendor or proprietary property to <code>true</code>. In
-<code>Android.mk</code> files, vendor modules must set
-<code>LOCAL_VENDOR_MODULE</code> or <code>LOCAL_PROPRIETARY_MODULE</code> to
-<code>true</code>.</p>
+<p>
+ Vendor modules are vendor-specific executables or shared libraries that
+ must be installed into a vendor partition. In <code>Android.bp</code> files,
+ vendor modules must set vendor or proprietary property to <code>true</code>.
+ In <code>Android.mk</code> files, vendor modules must set
+ <code>LOCAL_VENDOR_MODULE</code> or <code>LOCAL_PROPRIETARY_MODULE</code> to
+ <code>true</code>.
+</p>
-<p>If <code>BOARD_VNDK_VERSION</code> is defined, the build system
-disallows the dependencies between vendor modules and framework modules. The
-build system emits errors if:</p>
+<p>
+ If <code>BOARD_VNDK_VERSION</code> is defined, the build system disallows
+ dependencies between vendor modules and framework modules and emits errors if:
+</p>
<ul>
<li>a module without <code>vendor:true</code> depends on a module with
<code>vendor:true</code>, or</li>
-
<li>a module with <code>vendor:true</code> depends on a
non-<code>llndk_library</code> module that has neither
<code>vendor:true</code> nor <code>vendor_available:true</code>.</li>
</ul>
-<p>The aforementioned dependency check applies to <code>header_libs</code>,
-<code>static_libs</code>, and <code>shared_libs</code> in
-<code>Android.bp</code>. It also applies to
-<code>LOCAL_HEADER_LIBRARIES</code>, <code>LOCAL_STATIC_LIBRARIES</code> and
-<code>LOCAL_SHARED_LIBRARIES</code> in <code>Android.mk</code>.</p>
-
-
+<p>
+ The dependency check applies to <code>header_libs</code>,
+ <code>static_libs</code>, and <code>shared_libs</code> in
+ <code>Android.bp</code>, and to <code>LOCAL_HEADER_LIBRARIES</code>,
+ <code>LOCAL_STATIC_LIBRARIES</code> and <code>LOCAL_SHARED_LIBRARIES</code> in
+ <code>Android.mk</code>.
+</p>
<h3 id="ll-ndk">LL-NDK</h3>
-<p>LL-NDK shared libraries are shared libraries with stable ABIs. Both
-framework and vendor modules share the same and the latest implementation. For
-each LL-NDK shared library, there is an <code>llndk_library</code> module definition in
-an <code>Android.bp</code> file:</p>
+<p>
+ LL-NDK shared libraries are shared libraries with stable ABIs. Both framework
+ and vendor modules share the same and the latest implementation. For each
+ LL-NDK shared library, <code>Android.bp</code> contains a
+ <code>llndk_library</code> module definition:
+</p>
-<pre class="prettyprint">llndk_library {
+<pre class="prettyprint">
+llndk_library {
name: "libvndksupport",
symbol_file: "libvndksupport.map.txt",
-}</pre>
+}
+</pre>
-<p>This module definition specifies a module name and a symbol file, which
-describes the symbols that should be visible to vendor modules. For
-example:</p>
+<p>
+ This module definition specifies a module name and a symbol file that
+ describes the symbols visible to vendor modules. For example:
+</p>
-<pre class="prettyprint">LIBVNDKSUPPORT {
+<pre class="prettyprint">
+LIBVNDKSUPPORT {
global:
android_load_sphal_library; # vndk
android_unload_sphal_library; # vndk
local:
*;
-};</pre>
-
-<p>Based on the symbol file, the build system generates a stub shared
-library for vendor modules. Vendor modules link with these stub
-shared libraries if <code>BOARD_VNDK_VERSION</code> is enabled.</p>
+};
+</pre>
-<p>A symbol is included in the stub shared library only if:</p>
+<p>
+ Based on the symbol file, the build system generates a stub shared library for
+ vendor modules, which link with these libraries when
+ <code>BOARD_VNDK_VERSION</code> is enabled. A symbol is included in the stub
+ shared library only if it:
+</p>
<ul>
- <li>it is not defined in the section end with <code>_PRIVATE</code> or
+ <li>Is not defined in the section end with <code>_PRIVATE</code> or
<code>_PLATFORM</code>,</li>
-
- <li>it does not have <code>#platform-only</code> tag, and</li>
-
- <li>it does not have <code>#introduce*</code> tags or the tag matches with the
+ <li>Does not have <code>#platform-only</code> tag, and</li>
+ <li>Does not have <code>#introduce*</code> tags or the tag matches with the
target.</li>
</ul>
-<aside class="note"><strong>Note</strong>: Vendors must not define their own LL-NDK
-shared libraries because vendor modules won't be able to find them in
-<em>Generic System Image (GSI)</em>.</aside>
-
-
+<aside class="note">
+ <strong>Note</strong>: Vendors must not define their own LL-NDK shared
+ libraries because vendor modules won't be able to find them in
+ <a href="/setup/build/gsi">Generic System Image (GSI)</a>.
+</aside>
<h3 id="vndk">VNDK</h3>
-<p>In <code>Android.bp</code> files, <code>cc_library</code>,
-<code>cc_library_static</code>, <code>cc_library_shared</code>, and
-<code>cc_library_headers</code> module definitions support three VNDK-related
-properties: <code>vendor_available</code>, <code>vndk.enabled</code>, and
-<code>vndk.support_system_process</code>.</p>
-
-<p>If <code>vendor_available</code> or <code>vndk.enabled</code> is
-<code>true</code>, two variants (<em>core</em> and <em>vendor</em>) may be
-built. The core variant should be treated as a framework module and the vendor
-variant should be treated as a vendor module. If some framework modules depend
-on this module, the core variant is built. If some vendor modules
-depend on this module, the vendor variant is built.</p>
-
-<p>The build system enforces these dependency checks:</p>
+<p>
+ In <code>Android.bp</code> files, <code>cc_library</code>,
+ <code>cc_library_static</code>, <code>cc_library_shared</code>, and
+ <code>cc_library_headers</code> module definitions support three VNDK-related
+ properties: <code>vendor_available</code>, <code>vndk.enabled</code>, and
+ <code>vndk.support_system_process</code>.
+</p>
+
+<p>
+ If <code>vendor_available</code> or <code>vndk.enabled</code> is
+ <code>true</code>, two variants (<em>core</em> and <em>vendor</em>) may be
+ built. The core variant should be treated as a framework module and the vendor
+ variant should be treated as a vendor module. If some framework modules depend
+ on this module, the core variant is built. If some vendor modules
+ depend on this module, the vendor variant is built. The build system enforces
+ the following dependency checks:
+</p>
<ul>
<li>The core variant is always framework-only and inaccessible to vendor
modules.</li>
-
<li>The vendor variant is always inaccessible to framework modules.</li>
-
<li>All dependencies of the vendor variant, which are specified in
<code>header_libs</code>, <code>static_libs</code>, and/or
<code>shared_libs</code>, must be either an <code>llndk_library</code> or a
module with <code>vendor_available</code> or <code>vndk.enabled</code>.</li>
-
<li>If <code>vendor_available</code> is <code>true</code>, the vendor variant
is accessible to all vendor modules.</li>
-
<li>If <code>vendor_available</code> is <code>false</code>, the vendor variant
is accessible only to other VNDK or VNDK-SP modules (i.e., modules with
<code>vendor:true</code> cannot link <code>vendor_available:false</code>
modules).</li>
</ul>
-<p>The default installation path for <code>cc_library</code> or
-<code>cc_library_shared</code> is determined by the following rules:</p>
+<p>
+ The default installation path for <code>cc_library</code> or
+ <code>cc_library_shared</code> is determined by the following rules:
+</p>
<ul>
- <li>
- The core variant is installed to <code>/system/lib[64]</code>.
- </li>
-
- <li>
- The vendor variant installation path may vary:
-
+ <li>The core variant is installed to <code>/system/lib[64]</code>.</li>
+ <li>The vendor variant installation path may vary:
<ul>
- <li>
- If <code>vndk.enabled</code> is <code>false</code>, the vendor
- variant is installed into <code>/vendor/lib[64]</code>.
- </li>
-
- <li>
- If <code>vndk.enabled</code> is <code>true</code>,
+ <li>If <code>vndk.enabled</code> is <code>false</code>, the vendor variant
+ is installed into <code>/vendor/lib[64]</code>.</li>
+ <li>If <code>vndk.enabled</code> is <code>true</code>,
<code>vndk.support_system_process</code> can be either <code>true</code> or
- <code>false</code>.
-
- <ul>
- <li>
- If <code>vndk.support_system_process</code> is <code>false</code>,
- the vendor variant is installed into
- <code>/system/lib[64]/vndk-${VER}</code>.
- </li>
-
- <li>
- Conversely, the vendor variant is installed to
- <code>/system/lib[64]/vndk-sp-${VER}</code>.
- </li>
+ <code>false</code>. If:
+ <ul>
+ <li><code>false</code>, the vendor variant is installed into
+ <code>/system/lib[64]/vndk-${VER}</code>.</li>
+ <li><code>true</code>, the vendor variant is installed to
+ <code>/system/lib[64]/vndk-sp-${VER}</code>.</li>
</ul>
</li>
</ul>
</li>
</ul>
-<p>The table below summarizes how the build system handles the vendor
-variants:</p>
-
-
+<p>
+ The table below summarizes how the build system handles the vendor variants:
+</p>
<table>
<tr>
- <th rowspan="2"><p><code>vendor_available</code></p></th>
- <th colspan="2"><p><code>vndk</code></p></th>
- <th rowspan="2"><p><code>Vendor variant descriptions</code></p></th>
+ <th>vendor_available</th>
+ <th style="text-align: center">vndk<br>enabled</th>
+ <th style="text-align: center">vndk<br>support_same_process</th>
+ <th>Vendor variant descriptions</th>
</tr>
<tr>
- <th><p><code>enabled</code></p></th>
- <th><p><code>support_same_process</code></p></th>
+ <td rowspan="4"><code>true</code></td>
+ <td rowspan="2"><code>false</code></td>
+ <td><code>false</code></td>
+ <td>The vendor variants are <em>VND-ONLY</em>. Shared libraries are
+ installed into <code>/vendor/lib[64]</code>.</td>
</tr>
<tr>
- <td rowspan="4"><p><code>true</code></p></td>
- <td rowspan="2"><p><code>false</code></p></td>
- <td><p><code>false</code></p></td>
- <td>
- <p>The vendor variants are <em>VND-ONLY</em></p>
- <p>Shared libraries are installed into <code>/vendor/lib[64]</code>.</p>
- </td>
+ <td><code>true</code></td>
+ <td><em>Invalid</em> (Build error)</td>
</tr>
<tr>
- <td><p><code>true</code></p></td>
- <td><p><em>Invalid</em> (Build error)</p></td>
+ <td rowspan="2"><code>true</code></td>
+ <td><code>false</code></td>
+ <td>The vendor variants are <em>VNDK</em>. Shared libraries are installed
+ to <code>/system/lib[64]/vndk-${VER}</code>.</td>
</tr>
<tr>
- <td rowspan="2"><p><code>true</code></p></td>
- <td><p><code>false</code></p></td>
- <td>
- <p>The vendor variants are <em>VNDK</em>.</p>
- <p>Shared libraries are installed to
- <code>/system/lib[64]/vndk-${VER}</code>.</p>
- </td>
- </tr>
-
- <tr>
- <td><p><code>true</code></p></td>
- <td>
- <p>The vendor variants are <em>VNDK-SP</em>.</p>
- <p>Shared libraries are installed to
- <code>/system/lib[64]/vndk-sp-${VER}</code>.</p>
- </td>
+ <td><code>true</code></td>
+ <td>The vendor variants are <em>VNDK-SP</em>. Shared libraries are
+ installed to <code>/system/lib[64]/vndk-sp-${VER}</code>.</td>
</tr>
<tr>
@@ -325,51 +314,48 @@ variants:</p>
</tr>
<tr>
- <td><p><code>true</code></p></td>
- <td><p><em>Invalid</em> (Build error)</p></td>
+ <td><code>true</code></td>
+ <td><em>Invalid</em> (Build error)</td>
</tr>
<tr>
- <td rowspan="2"><p><code>true</code></p></td>
- <td><p><code>false</code></p></td>
- <td>
- <p>The vendor variants are <em>VNDK-Private</em>.</p>
- <p>Shared libraries are installed to
- <code>/system/lib[64]/vndk-${VER}</code>.</p>
- <p>These must not be directly used by vendor modules.</p>
- </td>
+ <td rowspan="2"><code>true</code></td>
+ <td><code>false</code></td>
+ <td>The vendor variants are <em>VNDK-Private</em>. Shared libraries are
+ installed to <code>/system/lib[64]/vndk-${VER}</code>.These must not be
+ directly used by vendor modules.</td>
</tr>
<tr>
- <td><p><code>true</code></p></td>
- <td>
- <p>The vendor variants are <em>VNDK-SP-Private</em>.</p>
- <p>Shared libraries are installed to
- <code>/system/lib[64]/vndk-sp-${VER}</code>.</p>
- <p>These must not be directly used by vendor modules.</p>
- </td>
+ <td><code>true</code></td>
+ <td>The vendor variants are <em>VNDK-SP-Private</em>. Shared libraries are
+ installed to <code>/system/lib[64]/vndk-sp-${VER}</code>. These must not be
+ directly used by vendor modules.</td>
</tr>
</table>
-<aside class="note"><strong>Note</strong>: Vendors may set
-<code>vendor_available</code> to their modules. However, vendors must not set
-<code>vndk.enabled</code> nor <code>vndk.support_system_process</code> because
-vendor modules won't be able to find them in GSI.</aside>
-
-
+<aside class="note">
+ <strong>Note</strong>: Vendors may set <code>vendor_available</code> to their
+ modules but must not set <code>vndk.enabled</code> or
+ <code>vndk.support_system_process</code> because the modules won't be able
+ to find them in the <a href="/setup/build/gsi">Generic System Image (GSI)</a>.
+</aside>
<h3 id="vndk-extensions">VNDK extensions</h3>
-<p>VNDK extensions are VNDK shared libraries with additional APIs. VNDK
-extensions are installed to <code>/vendor/lib[64]/vndk[-sp]</code> (without
-version suffix) and override the original VNDK shared libraries at runtime.</p>
-
+<p>
+ VNDK extensions are VNDK shared libraries with additional APIs. Extensions are
+ installed to <code>/vendor/lib[64]/vndk[-sp]</code> (without version suffix)
+ and override the original VNDK shared libraries at runtime.
+</p>
<h4 id="defining-vndk-extensions">Defining VNDK extensions</h4>
-<p>In Android P, <code>Android.bp</code> natively supports VNDK extensions. To
-build a VNDK extension, define another module with a <code>vendor:true</code>
-and an <code>extends</code> property:</p>
+<p>
+ In Android 9 and higher, <code>Android.bp</code> natively supports VNDK
+ extensions. To build a VNDK extension, define another module with a
+ <code>vendor:true</code> and an <code>extends</code> property:
+</p>
<pre class="prettyprint">
cc_library {
@@ -390,28 +376,28 @@ cc_library {
}
</pre>
-<p>A module with <code>vendor:true</code>, <code>vndk.enabled:true</code>, and
-<code>extends</code> properties defines VNDK extension:</p>
+<p>
+ A module with <code>vendor:true</code>, <code>vndk.enabled:true</code>, and
+ <code>extends</code> properties defines the VNDK extension:</p>
<ul>
<li>The <code>extends</code> property must specify a base VNDK shared library
- name (or VNDK-SP shared library name).</li>
-
- <li>VNDK extensions (or VNDK-SP extensions) are named after the base module
- names from which they extend. For example, the output binary of <code>libvndk_ext</code>
- is <code>libvndk.so</code> instead of <code>libvndk_ext.so</code>.</li>
-
- <li>VNDK extensions are installed into <code>/vendor/lib[64]/vndk</code>.</li>
-
- <li>VNDK-SP extensions are installed into
- <code>/vendor/lib[64]/vndk-sp</code>.</li>
-
- <li>The base shared libraries must have both <code>vndk.enabled:true</code> and
- <code>vendor_available:true</code>.</li>
+ name (or VNDK-SP shared library name).</li>
+ <li>VNDK extensions (or VNDK-SP extensions) are named after the base module
+ names from which they extend. For example, the output binary of
+ <code>libvndk_ext</code> is <code>libvndk.so</code> instead of
+ <code>libvndk_ext.so</code>.</li>
+ <li>VNDK extensions are installed into <code>/vendor/lib[64]/vndk</code>.</li>
+ <li>VNDK-SP extensions are installed into
+ <code>/vendor/lib[64]/vndk-sp</code>.</li>
+ <li>The base shared libraries must have both <code>vndk.enabled:true</code>
+ and <code>vendor_available:true</code>.</li>
</ul>
-<p>A VNDK-SP extension must extend from a VNDK-SP shared library. In other
-words, <code>vndk.support_system_process</code> must be equal:</p>
+<p>
+ A VNDK-SP extension must extend from a VNDK-SP shared library
+ (<code>vndk.support_system_process</code> must be equal):
+</p>
<pre class="prettyprint">
cc_library {
@@ -434,8 +420,10 @@ cc_library {
}
</pre>
-<p>VNDK extensions (or VNDK-SP extensions) may depend on other vendor shared
-libraries:</p>
+<p>
+ VNDK extensions (or VNDK-SP extensions) may depend on other vendor shared
+ libraries:
+</p>
<pre class="prettyprint">
cc_library {
@@ -464,16 +452,19 @@ cc_library {
}
</pre>
-<aside class="note"><strong>Note:</strong> Similar to SP-HAL-Dep, VNDK-SP
-extensions and their dependencies (including vendor libraries) must be labeled
-as <code>same_process_hal_file</code> in sepolicy.</aside>
-
+<aside class="note">
+ <strong>Note:</strong> Similar to SP-HAL-Dep, VNDK-SP extensions and their
+ dependencies (including vendor libraries) must be labeled as
+ <code>same_process_hal_file</code> in sepolicy.
+</aside>
<h4 id="using-vndk-extensions">Using VNDK extensions</h4>
-<p>If a vendor module depends on some additional APIs defined by VNDK
-extensions, it must specify the name of the VNDK extension in its
-<code>shared_libs</code> property:</p>
+<p>
+ If a vendor module depends on additional APIs defined by VNDK extensions, the
+ module must specify the name of the VNDK extension in its
+ <code>shared_libs</code> property:
+</p>
<pre class="prettyprint">
// A vendor shared library example
@@ -495,33 +486,40 @@ cc_binary {
}
</pre>
-<p>If a vendor module depends on some VNDK extensions, those VNDK extensions
-will be installed to <code>/vendor/lib[64]/vndk[-sp]</code> automatically.</p>
-
-<p>If a module no longer depends on a VNDK extension, add a clean step to
-<code>CleanSpec.mk</code> to remove the shared library. For example:</p>
+<p>
+ If a vendor module depends on VNDK extensions, those VNDK extensions are
+ installed to <code>/vendor/lib[64]/vndk[-sp]</code> automatically. If a module
+ no longer depends on a VNDK extension, add a clean step to
+ <code>CleanSpec.mk</code> to remove the shared library. For example:
+</p>
<pre class="prettyprint">
$(call add-clean-step, rm -rf $(TARGET_OUT_VENDOR)/lib/libvndk.so)
</pre>
-
-
<h3 id="conditional-compilation">Conditional compilation</h3>
-<p>This subsection describes how to deal with the <em>subtle differences</em>
-(e.g. adding or removing a feature from one of the variants) between three VNDK
-shared libraries: (1) the core variant (e.g.
-<code>/system/lib[64]/libexample.so</code>), (2) the vendor variant (e.g.
-<code>/system/lib[64]/vndk[-sp]-${VER}/libexample.so</code>), and (3) the VNDK
-extension (e.g. <code>/vendor/lib[64]/vndk[-sp]/libexample.so</code>).
+<p>
+ This section describes how to deal with the <em>subtle differences</em> (e.g.
+ adding or removing a feature from one of the variants) between the following
+ three VNDK shared libraries:
+</p>
+<ul>
+ <li>core variant (e.g. <code>/system/lib[64]/libexample.so</code>)</li>
+ <li>vendor variant (e.g.
+ <code>/system/lib[64]/vndk[-sp]-${VER}/libexample.so</code>)</li>
+ <li>VNDK extension (e.g. <code>/vendor/lib[64]/vndk[-sp]/libexample.so</code>)
+ </li>
+</ul>
<h4 id="conditional-cflags">Conditional compiler flags</h4>
-<p>The Android build system defines <code>__ANDROID_VNDK__</code> for
-vendor variants (including VNDK extensions) by default. You may guard the code
-with the C preprocessor guards:</p>
+<p>
+ The Android build system defines <code>__ANDROID_VNDK__</code> for vendor
+ variants (including VNDK extensions) by default. You may guard the code
+ with the C preprocessor guards:
+</p>
<pre class="prettyprint">
void all() { }
@@ -535,12 +533,14 @@ void vndk_only() { }
#endif
</pre>
-<p>In addition to <code>__ANDROID_VNDK__</code>, different <code>cflags</code>
-or <code>cppflags</code> may be specified in <code>Android.bp</code>. The
-<code>cflags</code> or <code>cppflags</code> specified in
-<code>target.vendor</code> is specific to the vendor variant. For example, the
-code below is the <code>Android.bp</code> module definition for
-<code>libexample</code> and <code>libexample_ext</code>:</p>
+<p>
+ In addition to <code>__ANDROID_VNDK__</code>, different <code>cflags</code> or
+ <code>cppflags</code> may be specified in <code>Android.bp</code>. The
+ <code>cflags</code> or <code>cppflags</code> specified in
+ <code>target.vendor</code> is specific to the vendor variant. For example, the
+ following code example is the <code>Android.bp</code> module definition for
+ <code>libexample</code> and <code>libexample_ext</code>:
+</p>
<pre class="prettyprint">
cc_library {
@@ -572,7 +572,9 @@ cc_library {
}
</pre>
-<p>The code listing of <code>example.c</code>:</p>
+<p>
+ Code listing of <code>example.c</code>:
+</p>
<pre class="prettyprint">
void all() { }
@@ -590,7 +592,9 @@ void vndk_ext() { }
#endif
</pre>
-<p>And the exported symbols for each variant will be:</p>
+<p>
+ Exported symbols for each variant:
+</p>
<table>
<tr>
@@ -614,30 +618,29 @@ void vndk_ext() { }
</tr>
</table>
-<!-- TODO: The paragraph below looks awkward. Refine this subsection to make
-this more fluent. -->
-
-<p>The VNDK ABI compliance checker compares the ABI of VNDK and VNDK
-extensions to the ABI dumps under <code>prebuilts/abi-dumps/vndk</code>:</p>
+<p>
+ The VNDK ABI compliance checker compares the ABI of VNDK and VNDK
+ extensions to the ABI dumps under <code>prebuilts/abi-dumps/vndk</code>:
+</p>
<ul>
- <li>Symbols exported by original VNDK shared libraries must be identical to
- (not the supersets of) the symbols defined in ABI dumps.</li>
-
- <li>Symbols exported by VNDK extensions must be supersets of the symbols
- defined in ABI dumps.</li>
+ <li>Symbols exported by original VNDK shared libraries must be identical to
+ (not the supersets of) the symbols defined in ABI dumps.</li>
+ <li>Symbols exported by VNDK extensions must be supersets of the symbols
+ defined in ABI dumps.</li>
</ul>
+<h4 id="excluding">Excluding source files or shared libs</h4>
-<h4 id="exclude-source-files-or-shared-libs">Exclude source files or shared
-libs</h4>
-
-<p>To exclude source files from the vendor variant, add them to the
-<code>exclude_srcs</code> property. Similarly, to ensure specific shared
-libraries are not linked with the vendor variant, add them to the
-<code>exclude_shared_libs</code> property. For example:</p>
+<p>
+ To exclude source files from the vendor variant, add them to the
+ <code>exclude_srcs</code> property. Similarly, to ensure shared libraries are
+ not linked with the vendor variant, add those libraries to the
+ <code>exclude_shared_libs</code> property. For example:
+</p>
-<pre class="prettyprint">cc_library {
+<pre class="prettyprint">
+cc_library {
name: "libcond_exclude_example",
srcs: ["fwk.c", "both.c"],
shared_libs: ["libfwk_only", "libboth"],
@@ -647,64 +650,70 @@ libraries are not linked with the vendor variant, add them to the
exclude_shared_libs: ["libfwk_only"],
},
},
-}</pre>
-
-<p>In this example, the core variant of <code>libcond_exclude_example</code>
-includes the code from <code>fwk.c</code> and <code>both.c</code> and depends
-on the shared libraries <code>libfwk_only</code> and <code>libboth</code>.</p>
-
-<p>On the other hand, the vendor variant of
-<code>libcond_exclude_example</code> includes only the code from
-<code>both.c</code> because <code>fwk.c</code> is excluded by the
-<code>exclude_srcs</code> property. Similarly,
-<code>libcond_exclude_example</code> depends only on the shared library
-<code>libboth</code> because <code>libfwk_only</code> is excluded by
-the</code><br/> <code>exclude_shared_libs</code> property.
-
-
-<!-- <h4 id="vndk-ext-header-guideline">VNDK extension header guidelines</h4> -->
-
-<!-- TODO: Add the guide line for VNDK extension headers. -->
-
+}
+</pre>
+<p>
+ In this example, the core variant of <code>libcond_exclude_example</code>
+ includes the code from <code>fwk.c</code> and <code>both.c</code> and depends
+ on the shared libraries <code>libfwk_only</code> and <code>libboth</code>. The
+ vendor variant of <code>libcond_exclude_example</code> includes only the code
+ from <code>both.c</code> because <code>fwk.c</code> is excluded by the
+ <code>exclude_srcs</code> property. Similarly,
+ <code>libcond_exclude_example</code> depends only on the shared library
+ <code>libboth</code> because <code>libfwk_only</code> is excluded by the
+ <code>exclude_shared_libs</code> property.
+</p>
<h3 id="product-packages">Product packages</h3>
-<p>In the Android build system, the variable <code>PRODUCT_PACKAGES</code>
-specifies the executables, shared libraries, or packages that should be
-installed into the device. The transitive dependencies of the specified modules
-are implicitly installed into the device as well.</p>
-
-<p>If <code>BOARD_VNDK_VERSION</code> is enabled, modules with
-<code>vendor_available</code> or <code>vndk.enabled</code> get special
-treatments. If a framework module depends on a module with
-<code>vendor_available</code> or <code>vndk.enabled</code>, the core
-variant is included in the transitive installation set. Similarly, if a
-vendor module depends on a module with <code>vendor_available</code> or
-<code>vndk.enabled</code>, the vendor variant is included in the
-transitive installation set.</p>
-
-<p>When the dependencies are invisible to the build system (e.g. shared
-libraries that may be opened with <code>dlopen()</code> in runtime), you
-should specify the module names in <code>PRODUCT_PACKAGES</code> to install
-those modules explicitly.</p>
-
-<p>If a module has <code>vendor_available</code> or <code>vndk.enabled</code>,
-the module name stands for its core variant. To explicitly specify the
-vendor variant in <code>PRODUCT_PACKAGES</code>, append a <code>.vendor</code>
-suffix to the module name. For example:</p>
-
-<pre class="prettyprint">cc_library {
+<p>
+ In the Android build system, the variable <code>PRODUCT_PACKAGES</code>
+ specifies the executables, shared libraries, or packages that should be
+ installed into the device. The transitive dependencies of the specified
+ modules are implicitly installed into the device as well.
+</p>
+
+<p>
+ If <code>BOARD_VNDK_VERSION</code> is enabled, modules with
+ <code>vendor_available</code> or <code>vndk.enabled</code> get special
+ treatment. If a framework module depends on a module with
+ <code>vendor_available</code> or <code>vndk.enabled</code>, the core variant
+ is included in the transitive installation set. Similarly, if a vendor module
+ depends on a module with <code>vendor_available</code> or
+ <code>vndk.enabled</code>, the vendor variant is included in the transitive
+ installation set.
+</p>
+
+<p>
+ When the dependencies are invisible to the build system (e.g. shared libraries
+ that may be opened with <code>dlopen()</code> in runtime), you should specify
+ the module names in <code>PRODUCT_PACKAGES</code> to install those modules
+ explicitly.
+</p>
+
+<p>
+ If a module has <code>vendor_available</code> or <code>vndk.enabled</code>,
+ the module name stands for its core variant. To explicitly specify the
+ vendor variant in <code>PRODUCT_PACKAGES</code>, append a <code>.vendor</code>
+ suffix to the module name. For example:
+</p>
+
+<pre class="prettyprint">
+cc_library {
name: "libexample",
srcs: ["example.c"],
vendor_available: true,
-}</pre>
+}
+</pre>
-<p>In this example, <code>libexample</code> stands for
-<code>/system/lib[64]/libexample.so</code> and <code>libexample.vendor</code>
-stands for <code>/vendor/lib[64]/libexample.so</code>. To install
-<code>/vendor/lib[64]/libexample.so</code>, add <code>libexample.vendor</code>
-to <code>PRODUCT_PACKAGES</code>:</p>
+<p>
+ In this example, <code>libexample</code> stands for
+ <code>/system/lib[64]/libexample.so</code> and <code>libexample.vendor</code>
+ stands for <code>/vendor/lib[64]/libexample.so</code>. To install
+ <code>/vendor/lib[64]/libexample.so</code>, add <code>libexample.vendor</code>
+ to <code>PRODUCT_PACKAGES</code>:
+</p>
<pre class="prettyprint">PRODUCT_PACKAGES += libexample.vendor</pre>
diff --git a/en/devices/tech/connect/carrier-wifi.md b/en/devices/tech/connect/carrier-wifi.md
index eabe25e4..c775cbf8 100644
--- a/en/devices/tech/connect/carrier-wifi.md
+++ b/en/devices/tech/connect/carrier-wifi.md
@@ -34,17 +34,15 @@ Wi-Fi.
### Manufacturers
-In the carrier config manager, configure the following parameters for each
-carrier:
-
-+ [KEY_CARRIER_WIFI_STRING_ARRAY](https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1599):
- Base64-encoded Wi-Fi SSID.
-+ [IMSI_KEY_AVAILABILITY_INT](https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1830):
- Identifies whether the key used for IMSI encryption is available for WLAN or
- EPDG, or both.
-+ [IMSI_KEY_DOWNLOAD_URL_STRING](https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1823):
- URL from which the proto containing the public key of the carrier used for
- IMSI encryption is downloaded.
+In the carrier config manager, configure the following parameters, located in
+[`CarrierConfigManager.java`](https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java),
+for each carrier:
+
++ `KEY_CARRIER_WIFI_STRING_ARRAY`: Base64-encoded Wi-Fi SSID.
++ `IMSI_KEY_AVAILABILITY_INT`: Identifies whether the key used for IMSI
+ encryption is available for WLAN or EPDG, or both.
++ `IMSI_KEY_DOWNLOAD_URL_STRING`: URL from which the proto containing the
+ public key of the carrier used for IMSI encryption is downloaded.
### Carriers
diff --git a/en/devices/tech/debug/gdb.html b/en/devices/tech/debug/gdb.html
index d021dae3..e2ff21d6 100644
--- a/en/devices/tech/debug/gdb.html
+++ b/en/devices/tech/debug/gdb.html
@@ -30,11 +30,11 @@ developers. For third-party app development, see
<h2 id=running>Debugging running apps or processes</h2>
<p>To connect to an already-running app or native daemon, use
-<code>gdbclient</code> with a PID. For example, to debug the process with PID
+<code>gdbclient.py</code> with a PID. For example, to debug the process with PID
1234, run:</p>
<pre class="devsite-terminal devsite-click-to-copy">
-gdbclient 1234
+gdbclient.py -p 1234
</pre>
<p>The script sets up port forwarding, starts the appropriate
@@ -42,6 +42,9 @@ gdbclient 1234
the host, configures <code>gdb</code> to find symbols, and connects
<code>gdb</code> to the remote <code>gdbserver</code>.</p>
+<aside class="note"><strong>Note:</strong> in Android 6 and earlier the script was a shell script
+called <code>gdbclient</code> instead of a Python script called <code>gdbclient.py</code>.</aside>
+
<h2 id=starts>Debugging native process startup</h2>
<p>To debug a process as it starts, use <code>gdbserver</code> or
@@ -61,7 +64,7 @@ Listening on port 5039
use it in another terminal window:</p>
<pre class="devsite-terminal devsite-click-to-copy">
-gdbclient <var>APP_PID</var>
+gdbclient.py -p <var>APP_PID</var>
</pre>
<p>Finally, enter <strong>continue</strong> at the <code>gdb</code> prompt.</p>
@@ -124,7 +127,7 @@ attach <code>gdb</code>, set the appropriate property:</p>
<p>At the end of the usual crash output, <code>debuggerd</code> provides
instructions on how to connect <code>gdb</code> using the command:
<pre class="devsite-terminal devsite-click-to-copy">
-gdbclient <var>PID</var>
+gdbclient.py -p <var>PID</var>
</pre>
diff --git a/en/devices/tech/debug/index.html b/en/devices/tech/debug/index.html
index 7d995454..204a851d 100644
--- a/en/devices/tech/debug/index.html
+++ b/en/devices/tech/debug/index.html
@@ -105,7 +105,7 @@ then <code>stack</code> will be on your $PATH already so you don't need to give
full path.</p>
<pre class="devsite-terminal devsite-click-to-copy">
-development/tools/stack
+development/scripts/stack
</pre>
<p>Example output (based on the logcat output above):</p>
@@ -173,5 +173,161 @@ From the command line, invoke <code>debuggerd</code> using a process ID (PID) to
full tombstone to <code>stdout</code>. To get just the stack for every thread in
the process, include the <code>-b</code> or <code>--backtrace</code> flag.</p>
+<h2 id="complex">Understanding a complex unwind</h2>
+
+<p>When an app crashes, the stack tends to be pretty complex.
+The following detailed example highlights many of the complexities:</p>
+
+<pre class="devsite-click-to-copy">
+ #00 pc 00000000007e6918 /system/priv-app/Velvet/Velvet.apk (offset 0x346b000)
+ #01 pc 00000000001845cc /system/priv-app/Velvet/Velvet.apk (offset 0x346b000)
+ #02 pc 00000000001847e4 /system/priv-app/Velvet/Velvet.apk (offset 0x346b000)
+ #03 pc 00000000001805c0 /system/priv-app/Velvet/Velvet.apk (offset 0x346b000) (Java_com_google_speech_recognizer_AbstractRecognizer_nativeRun+176)
+</pre>
+
+<p>Frames #00-#03 are from native JNI code that was stored uncompressed in the APK to save disk
+space rather than being extracted into a separate <code>.so</code> file. The stack unwinder in
+Android 9 doesn’t need the extracted <code>.so</code> file to be able to cope with this common
+Android-specific case.</p>
+
+<p>Frames #00-#02 don’t have symbol names because they were stripped by the developer.</p>
+
+<p>Frame #03 shows that where symbols are available, the unwinder uses them.</p>
+
+<pre class="devsite-click-to-copy">
+ #04 pc 0000000000117550 /data/dalvik-cache/arm64/system@priv-app@Velvet@Velvet.apk@classes.dex (offset 0x108000) (com.google.speech.recognizer.AbstractRecognizer.nativeRun+160)
+</pre>
+
+<p>Frame #04 is ahead-of-time compiled Java code. The old unwinder would have stopped here, unable
+to unwind through Java.</p>
+
+<pre class="devsite-click-to-copy">
+ #05 pc 0000000000559f88 /system/lib64/libart.so (art_quick_invoke_stub+584)
+ #06 pc 00000000000ced40 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
+ #07 pc 0000000000280cf0 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
+ #08 pc 000000000027acac /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+948)
+ #09 pc 000000000052abc0 /system/lib64/libart.so (MterpInvokeDirect+296)
+ #10 pc 000000000054c614 /system/lib64/libart.so (ExecuteMterpImpl+14484)
+</pre>
+
+<p>Frames #05-#10 are from the ART interpreter implementation.
+The stack unwinder in releases prior to Android 9 would have shown these frames without the context
+of frame #11 explaining what code the interpreter was interpreting. These frames are useful if
+you're debugging ART itself. If you're debugging an app, you can ignore them. Some tools, such as
+<code>simpleperf</code>, will automatically omit these frames.</p>
+
+<pre class="devsite-click-to-copy">
+ #11 pc 00000000001992d6 /system/priv-app/Velvet/Velvet.apk (offset 0x26cf000) (com.google.speech.recognizer.AbstractRecognizer.run+18)
+</pre>
+
+<p>Frame #11 is the Java code being interpreted.</p>
+
+<pre class="devsite-click-to-copy">
+ #12 pc 00000000002547a8 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.780698333+496)
+ #13 pc 000000000025a328 /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*)+216)
+ #14 pc 000000000027ac90 /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+920)
+ #15 pc 0000000000529880 /system/lib64/libart.so (MterpInvokeVirtual+584)
+ #16 pc 000000000054c514 /system/lib64/libart.so (ExecuteMterpImpl+14228)
+</pre>
+
+<p>Frames #12-#16 are more of the interpreter implementation itself.</p>
+
+<pre class="devsite-click-to-copy">
+ #17 pc 00000000002454a0 /system/priv-app/Velvet/Velvet.apk (offset 0x1322000) (com.google.android.apps.gsa.speech.e.c.c.call+28)
+</pre>
+
+<p>Frame #17 is more Java code being interpreted. This Java method corresponds to interpreter frames #12-#16.</p>
+
+<pre class="devsite-click-to-copy">
+ #18 pc 00000000002547a8 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.780698333+496)
+ #19 pc 0000000000519fd8 /system/lib64/libart.so (artQuickToInterpreterBridge+1032)
+ #20 pc 00000000005630fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
+</pre>
+
+<p>Frames #18-#20 are more of the VM itself, code to transition from compiled Java code to interpreted Java code.</p>
+
+<pre class="devsite-click-to-copy">
+ #21 pc 00000000002ce44c /system/framework/arm64/boot.oat (offset 0xdc000) (java.util.concurrent.FutureTask.run+204)
+</pre>
+
+<p>Frame #21 is the compiled Java method that calls the Java method in #17.</p>
+
+<pre class="devsite-click-to-copy">
+ #22 pc 0000000000559f88 /system/lib64/libart.so (art_quick_invoke_stub+584)
+ #23 pc 00000000000ced40 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
+ #24 pc 0000000000280cf0 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
+ #25 pc 000000000027acac /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+948)
+ #26 pc 0000000000529880 /system/lib64/libart.so (MterpInvokeVirtual+584)
+ #27 pc 000000000054c514 /system/lib64/libart.so (ExecuteMterpImpl+14228)
+</pre>
+
+<p>Frames #22-#27 are the interpreter implementation, making a method invocation from interpreted
+code to a compiled method.</p>
+
+<pre class="devsite-click-to-copy">
+ #28 pc 00000000003ed69e /system/priv-app/Velvet/Velvet.apk (com.google.android.apps.gsa.shared.util.concurrent.b.e.run+22)
+</pre>
+
+<p>Frame #28 is the Java code being interpreted.</p>
+
+<pre class="devsite-click-to-copy">
+ #29 pc 00000000002547a8 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.780698333+496)
+ #30 pc 0000000000519fd8 /system/lib64/libart.so (artQuickToInterpreterBridge+1032)
+ #31 pc 00000000005630fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
+</pre>
+
+<p>Frames #29-#31 are another transition between compiled code and interpreted code.</p>
+
+<pre class="devsite-click-to-copy">
+ #32 pc 0000000000329284 /system/framework/arm64/boot.oat (offset 0xdc000) (java.util.concurrent.ThreadPoolExecutor.runWorker+996)
+ #33 pc 00000000003262a0 /system/framework/arm64/boot.oat (offset 0xdc000) (java.util.concurrent.ThreadPoolExecutor$Worker.run+64)
+ #34 pc 00000000002037e8 /system/framework/arm64/boot.oat (offset 0xdc000) (java.lang.Thread.run+72)
+</pre>
+
+<p>Frames #32-#34 are compiled Java frames calling each other directly. In this case the native call
+stack is the same as the Java call stack.</p>
+
+<pre class="devsite-click-to-copy">
+ #35 pc 0000000000559f88 /system/lib64/libart.so (art_quick_invoke_stub+584)
+ #36 pc 00000000000ced40 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
+ #37 pc 0000000000280cf0 /system/lib64/libart.so (art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*)+344)
+ #38 pc 000000000027acac /system/lib64/libart.so (bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*)+948)
+ #39 pc 0000000000529f10 /system/lib64/libart.so (MterpInvokeSuper+1408)
+ #40 pc 000000000054c594 /system/lib64/libart.so (ExecuteMterpImpl+14356)
+</pre>
+
+<p>Frames #35-#40 are the interpreter itself.</p>
+
+<pre class="devsite-click-to-copy">
+ #41 pc 00000000003ed8e0 /system/priv-app/Velvet/Velvet.apk (com.google.android.apps.gsa.shared.util.concurrent.b.i.run+20)
+</pre>
+
+<p>Frame #41 is the Java code being interpreted.</p>
+
+<pre class="devsite-click-to-copy">
+ #42 pc 00000000002547a8 /system/lib64/libart.so (_ZN3art11interpreterL7ExecuteEPNS_6ThreadERKNS_20CodeItemDataAccessorERNS_11ShadowFrameENS_6JValueEb.llvm.780698333+496)
+ #43 pc 0000000000519fd8 /system/lib64/libart.so (artQuickToInterpreterBridge+1032)
+ #44 pc 00000000005630fc /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
+ #45 pc 0000000000559f88 /system/lib64/libart.so (art_quick_invoke_stub+584)
+ #46 pc 00000000000ced40 /system/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+200)
+ #47 pc 0000000000460d18 /system/lib64/libart.so (art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*)+104)
+ #48 pc 0000000000461de0 /system/lib64/libart.so (art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*)+424)
+ #49 pc 000000000048ccb0 /system/lib64/libart.so (art::Thread::CreateCallback(void*)+1120)
+</pre>
+
+<p>Frames #42-#49 are the VM itself. This time it's the code that starts running Java on a new thread.</p>
+
+<pre class="devsite-click-to-copy">
+ #50 pc 0000000000082e24 /system/lib64/libc.so (__pthread_start(void*)+36)
+ #51 pc 00000000000233bc /system/lib64/libc.so (__start_thread+68)
+</pre>
+
+<p>Frames #50-#51 are how all threads should actually start. This is the <code>libc</code>
+new thread start code.
+A handy tip is that you know you have a successful and complete unwind if you see these frames.
+Any time you don't see these frames at the bottom of your stack, you should be suspicious that
+you're either looking at a truncated stack or at a corrupted stack: you shouldn't blindly
+assume that the stack is correct if it doesn't end this way.</p>
+
</body>
</html>
diff --git a/en/setup/build/jack.html b/en/setup/build/jack.html
index 494aaca0..7177730b 100644
--- a/en/setup/build/jack.html
+++ b/en/setup/build/jack.html
@@ -21,10 +21,12 @@
limitations under the License.
-->
-<aside class="warning"><strong>Warning:</strong> As of this
-<a href="https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html" class="external">March
-14, 2017 announcement</a>, the Jack toolchain is deprecated. Jack was the default Android
-build toolchain for Android 6.0&ndash;8.1.</aside>
+<aside class="warning">
+ <strong>Warning:</strong> As of this
+ <a href="https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html" class="external">March
+ 14, 2017 announcement</a>, the Jack toolchain is deprecated. Jack was the
+ default Android build toolchain for Android 6.0&ndash;8.1.
+</aside>
<p>Jack is an Android toolchain that compiled Java source into Android dex
bytecode. You don’t have to do anything differently to
@@ -35,7 +37,7 @@ your project. Android 8.1 is the last release that uses Jack.</p>
<p>Jack works as follows:</p>
<img src="../images/jack_overview.png" alt="Jack overview"/>
-<figcaption><strong>Figure 1.</strong> Jack overview.</figcaption>
+<figcaption><strong>Figure 1.</strong> Jack overview</figcaption>
<h3 id=jack_library>Jack library format</h3>
@@ -43,7 +45,7 @@ your project. Android 8.1 is the last release that uses Jack.</p>
for the library, allowing for faster compilation (pre-dex).</p>
<img src="../images/jack_library.png" alt="Jack library file contents"/>
-<figcaption><strong>Figure 2.</strong> Jack library file contents.</figcaption>
+<figcaption><strong>Figure 2.</strong> Jack library file contents</figcaption>
<h3 id=jill>Jill</h3>
@@ -52,7 +54,7 @@ format, as shown below.</p>
<img src="../images/jack_jill.png" alt="Importing .jar libraries with Jill"/>
<figcaption><strong>Figure 3.</strong> Workflow to import an existing .jar
-library.</figcaption>
+library</figcaption>
<h2 id=using_jack>Jack compilation server</h2>
@@ -122,49 +124,23 @@ compilations by editing <code>$HOME/.jack</code> and changing
<td>Compilations are failing on “Cannot launch background serverâ€</td>
<td>The most likely cause is TCP ports are already used on your computer. Change
ports by editing <code>$HOME/.jack</code> (<code>SERVER_PORT_SERVICE</code> and
-<code>SERVER_PORT_ADMIN</code> variables).
-
-<br><br>If it doesn’t solve the problem, report the error (be sure to attach
-your compilation log and the <a href="#jack_log">Jack server log</a>). To
-unblock the situation, disable the Jack compilation server by editing
-<code>$HOME/.jack</code> and changing <code>SERVER</code> to false.
-Unfortunately this will significantly slow down your compilation and may force
-you to launch <code>make -j</code> with load control (option <code>-l</code>
-of <code>make</code>).
-</td>
+<code>SERVER_PORT_ADMIN</code> variables). To unblock the situation, disable the
+Jack compilation server by editing <code>$HOME/.jack</code> and changing
+<code>SERVER</code> to false. Unfortunately this will significantly slow down
+your compilation and may force you to launch <code>make -j</code> with load
+control (option <code>-l</code> of <code>make</code>).</td>
</tr>
<tr>
<td>Compilation gets stuck without any progress</td>
-<td>Report and provide the following information when possible:
-<br>
-<ul>
-<li>Command line at which you are stuck.</li>
-<li>Output of this command line.</li>
-<li>Result of executing <code>jack-admin server-stat</code>.</li>
-<li><code>$HOME/.jack</code> file.</li>
-<li>Content of the <a href="#jack_log">Jack server log</a> with the server state
-dumped. To get the server log:
- <ul>
- <li>Find the Jack background server process by running
- <code>jack-admin list-server</code>.</li>
- <li>Send a <code>kill -3</code> command to this server to dump its state into
- the log file.</li>
- </ul>
-</li>
-<li>Result of executing <code>ls -lR $TMPDIR/jack-$USER</code>.</li>
-<li>Result of running <code>ps j -U $USER</code>.</li>
-</ul>
-
-To unblock the situation, kill the Jack background server using
+<td>To unblock the situation, kill the Jack background server using
<code>jack-admin kill-server</code>) then remove the temporary directories
contained in <code>jack-$USER</code> of your temporary directory
-(<code>/tmp</code> or <code>$TMPDIR</code>).
-</td>
+(<code>/tmp</code> or <code>$TMPDIR</code>).</td>
</tr>
</table>
<h3 id="jack_log">Finding the Jack log</h3>
-If you ran a <code>make</code> command with a dist target, the Jack log is
+<p>If you ran a <code>make</code> command with a dist target, the Jack log is
located at <code>$ANDROID_BUILD_TOP/out/dist/logs/jack-server.log</code>.
Otherwise, you can find the log by running <code>jack-admin server-log</code>.
In case of reproducible Jack failures, you can get a more detailed log by
@@ -206,7 +182,7 @@ When compiling, Jack reuses the pre-dex from each library. All libraries are
pre-dexed:</p>
<img src="../images/jack_predex.png" alt="Jack libraries with pre-dex" />
-<figcaption><strong>Figure 4.</strong> Jack libraries with pre-dex.</figcaption>
+<figcaption><strong>Figure 4.</strong> Jack libraries with pre-dex</figcaption>
<p>Jack does not reuse the library pre-dex if shrinking, obfuscation, or
repackaging is used in the compilation.</p>
@@ -231,7 +207,8 @@ them. After doing so you can use the standard build command.</aside>
<h3 id=shrinking_and_obfuscation>Shrinking and obfuscation</h3>
-<p>Jack uses proguard configuration files to enable shrinking and obfuscation.</p>
+<p>Jack uses proguard configuration files to enable shrinking and
+obfuscation.</p>
<p>Common options include the following:</p>
diff --git a/zh-cn/compatibility/android-cdd.html b/zh-cn/compatibility/android-cdd.html
index cedb6da6..275f22b0 100644
--- a/zh-cn/compatibility/android-cdd.html
+++ b/zh-cn/compatibility/android-cdd.html
@@ -32,7 +32,7 @@
在本文档中,“设备实现者â€æˆ–“实现者â€æŒ‡çš„是开å‘è¿è¡Œ Android 8.1 的硬件/软件解决方案的个人或å•ä½ã€‚“设备实现â€æˆ–“实现â€æŒ‡çš„是所开å‘的硬件/软件解决方案。
</p>
<p>
-设备实现必须满足本兼容性定义文档(包括以å‚考资料的形å¼çº³å…¥çš„任何文档)中列出的è¦æ±‚,æ‰ä¼šè¢«è§†ä¸ºä¸Ž Android 8.1 兼容。
+设备实现必须满足本兼容性定义文档(包括以å‚考资料的形å¼çº³å…¥çš„所有文档)中列出的è¦æ±‚,æ‰ä¼šè¢«è§†ä¸ºä¸Ž Android 8.1 兼容。
</p>
<p>
如果本定义或<a href="#10_software_compatibility_testing">第 10 节</a>中所述的软件测试未æåŠã€å«ç³Šä¸æ¸…或ä¸å®Œæ•´ï¼Œè®¾å¤‡å®žçŽ°è€…需负责确ä¿ä¸ŽçŽ°æœ‰å®žçŽ°å…¼å®¹ã€‚
@@ -788,7 +788,7 @@ TV 设备实现:
TV 设备实现:
</p>
<ul>
- <li>应æä¾›å¯è®©ç”¨æˆ·è®¿é—®<a href="#7_2_2_non-touch_navigation">éžè§¦æ‘¸å¯¼èˆª</a>å’Œ<a href="#7_2_3_navigation_keys">核心导航键</a>输入的é¥æŽ§å™¨ã€‚
+ <li>应æä¾›å¯è®©ç”¨æˆ·ä½¿ç”¨<a href="#7_2_2_non-touch_navigation">éžè§¦æ‘¸å¯¼èˆª</a>å’Œ<a href="#7_2_3_navigation_keys">核心导航键</a>输入功能的é¥æŽ§å™¨ã€‚
</li>
</ul>
<p>
@@ -1611,7 +1611,7 @@ Automotive 设备实现:
Android Automotive 设备实现:
</p>
<ul>
- <li>[A-0-1] 如果第三方应用æ出请求,则必须显示使用 <a href="https://developer.android.com/reference/android/app/Notification.CarExtender.html"><code>Notification.CarExtender</code></a> API 的通知。
+ <li>[A-0-1] 必须能应第三方应用的请求显示使用 <a href="https://developer.android.com/reference/android/app/Notification.CarExtender.html"><code>Notification.CarExtender</code></a> API 的通知。
</li>
</ul>
<p>
@@ -1874,7 +1874,7 @@ BRAND
SUPPORTED_ABIS
</td>
<td>
-本机代ç æŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3. 节:本机 API 兼容性</a>。
+本机代ç æŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3 节:本机 API 兼容性</a>。
</td>
</tr>
<tr>
@@ -1882,7 +1882,7 @@ SUPPORTED_ABIS
SUPPORTED_32_BIT_ABIS
</td>
<td>
-本机代ç æŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3. 节:本机 API 兼容性</a>。
+本机代ç æŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3 节:本机 API 兼容性</a>。
</td>
</tr>
<tr>
@@ -1890,7 +1890,7 @@ SUPPORTED_32_BIT_ABIS
SUPPORTED_64_BIT_ABIS
</td>
<td>
-本机代ç ç¬¬äºŒä¸ªæŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3. 节:本机 API 兼容性</a>。
+本机代ç ç¬¬äºŒä¸ªæŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3 节:本机 API 兼容性</a>。
</td>
</tr>
<tr>
@@ -1898,7 +1898,7 @@ SUPPORTED_64_BIT_ABIS
CPU_ABI
</td>
<td>
-本机代ç æŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3. 节:本机 API 兼容性</a>。
+本机代ç æŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3 节:本机 API 兼容性</a>。
</td>
</tr>
<tr>
@@ -1906,7 +1906,7 @@ CPU_ABI
CPU_ABI2
</td>
<td>
-本机代ç ç¬¬äºŒä¸ªæŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3. 节:本机 API 兼容性</a>。
+本机代ç ç¬¬äºŒä¸ªæŒ‡ä»¤é›†çš„å称(CPU 类型 + ABI 惯例)。请å‚阅<a href="#3_3_native_api_compatibility">第 3.3 节:本机 API 兼容性</a>。
</td>
</tr>
<tr>
@@ -2198,7 +2198,7 @@ Android 包å«å¯è®©ç”¨æˆ·è½»æ¾é€‰æ‹©é»˜è®¤åº”用(例如选择默认的主å±
</li>
<li>
<p>
-[C-2-3] 必须能够éµä»Ž <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_PHONE_ACCOUNTS">android.telecom.action.CHANGE_PHONE_ACCOUNTS</a> Intent æ供相应方å¼æ¥é…置与 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html"><code>PhoneAccounts</code></a> å…³è”çš„ <a href="https://developer.android.com/reference/android/telecom/ConnectionService.html"><code>ConnectionServices</code></a>,以åŠç”µä¿¡æœåŠ¡æ供商将用于拨出电è¯çš„默认 PhoneAccount。AOSP 实现通过在“通è¯â€è®¾ç½®èœå•ä¸­æ·»åŠ â€œé€šè¯å¸å·é€‰é¡¹â€èœå•æ¥æ»¡è¶³è¯¥è¦æ±‚。
+[C-2-3] 必须能够éµä»Ž <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#ACTION_CHANGE_PHONE_ACCOUNTS">android.telecom.action.CHANGE_PHONE_ACCOUNTS</a> Intent æ供相应方å¼æ¥é…置与 <a href="https://developer.android.com/reference/android/telecom/ConnectionService.html"><code>ConnectionServices</code></a> å…³è”çš„ <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html"><code>PhoneAccounts</code></a>,以åŠç”µä¿¡æœåŠ¡æ供商将用于拨出电è¯çš„默认 PhoneAccount。AOSP 实现通过在“通è¯â€è®¾ç½®èœå•ä¸­æ·»åŠ â€œé€šè¯å¸å·é€‰é¡¹â€èœå•æ¥æ»¡è¶³è¯¥è¦æ±‚。
</p>
</li>
</ul>
@@ -2229,7 +2229,7 @@ Android 包å«å¯è®©ç”¨æˆ·è½»æ¾é€‰æ‹©é»˜è®¤åº”用(例如选择默认的主å±
</li>
<li>[C-1-3] 如果æŸä¸ª Activity 在å¯åŠ¨æ–°çš„ Activity 时没有通过 <a href="https://developer.android.com/reference/android/app/ActivityOptions.html#setLaunchDisplayId%28int%29"><code>ActivityOptions.setLaunchDisplayId()</code></a> API 指定目标显示设备,则必须在å‰è€…所在的显示设备上å¯åŠ¨åŽè€…。
</li>
- <li>[C-1-4] 当带有 <a href="http://developer.android.com/reference/android/view/Display.html#FLAG_PRIVATE"><code>Display.FLAG_PRIVATE</code></a> 标记的显示设备被å–除åŽï¼Œå¿…须销æ¯æ‰€æœ‰ Activity。
+ <li>[C-1-4] 当带有 <a href="http://developer.android.com/reference/android/view/Display.html#FLAG_PRIVATE"><code>Display.FLAG_PRIVATE</code></a> 标记的显示设备被移除åŽï¼Œå¿…须销æ¯æ‰€æœ‰ Activity。
</li>
<li>[C-1-5] 如果显示区域的大å°å‘生å˜åŒ–,则必须相应地调整 <a href="https://developer.android.com/reference/android/hardware/display/VirtualDisplay.html"><code>VirtualDisplay</code></a> 上所有 Activity 的大å°ã€‚
</li>
@@ -2415,7 +2415,7 @@ Android 包å«å¯è®©ç”¨æˆ·è½»æ¾é€‰æ‹©é»˜è®¤åº”用(例如选择默认的主å±
<ul>
<li>[C-1-1] 必须报告 <code>android.software.webview</code>。
</li>
- <li>[C-1-2] 必须使用 Android 8.1 分支上的上游 Android å¼€æºé¡¹ç›®ä¸­çš„ <a href="http://www.chromium.org/">Chromium</a> 项目细分版本æ¥å®žçŽ° <a href="http://developer.android.com/reference/android/webkit/WebView.html"><code>android.webkit.WebView</code></a> API。
+ <li>[C-1-2] 必须使用 Android 8.1 分支上的上游 Android å¼€æºé¡¹ç›®æ供的 <a href="http://www.chromium.org/">Chromium</a> 项目细分版本æ¥å®žçŽ° <a href="http://developer.android.com/reference/android/webkit/WebView.html"><code>android.webkit.WebView</code></a> API。
</li>
<li>
<p>
@@ -3092,7 +3092,7 @@ Android åŒ…å« <a href="https://developer.android.com/reference/android/app/Noti
如果设备实现支æŒå†…容丰富的通知,则:
</p>
<ul>
- <li>[C-2-1] 必须使用通过 <a href="https://developer.android.com/reference/android/app/Notification.Style.html"><code>Notification.Style</code></a> API ç±»åŠå…¶å­ç±»ä¸ºå‘ˆçŽ°çš„资æºå…ƒç´ æ供的确切资æºã€‚
+ <li>[C-2-1] 对于呈现的资æºå…ƒç´ ï¼Œå¿…须使用通过 <a href="https://developer.android.com/reference/android/app/Notification.Style.html"><code>Notification.Style</code></a> API ç±»åŠå…¶å­ç±»æ供的确切资æºã€‚
</li>
<li>应呈现 <a href="https://developer.android.com/reference/android/app/Notification.Style.html"><code>Notification.Style</code></a> API ç±»åŠå…¶å­ç±»ä¸­å®šä¹‰çš„æ¯ä¸ªèµ„æºå…ƒç´ ï¼ˆä¾‹å¦‚图标ã€æ ‡é¢˜å’Œæ‘˜è¦æ–‡æœ¬ï¼‰ã€‚
</li>
@@ -3190,7 +3190,7 @@ Android 还包å«ä¸€äº›<a href="https://developer.android.com/reference/android/
3.8.5. æ醒和消æ¯æ¡†
</h4>
<p>
-应用å¯ä»¥ä½¿ç”¨ <a href="http://developer.android.com/reference/android/widget/Toast.html"><code>Toast</code></a> API å‘最终用户显示简短的éžæ¨¡æ€å­—符串(这些字符串会在短暂显示åŽæ¶ˆå¤±ï¼‰ï¼Œå¹¶ä½¿ç”¨ <a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_APPLICATION_OVERLAY"><code>TYPE_APPLICATION_OVERLAY</code></a> 窗å£ç±»åž‹ API 使æ醒窗å£å åŠ åœ¨å…¶ä»–应用之上显示。
+应用å¯ä»¥ä½¿ç”¨ <a href="http://developer.android.com/reference/android/widget/Toast.html"><code>Toast</code></a> API å‘最终用户显示简短的éžæ¨¡æ€å­—符串(这些字符串会在短暂显示åŽæ¶ˆå¤±ï¼‰ï¼Œå¹¶ä½¿ç”¨ <a href="http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#TYPE_APPLICATION_OVERLAY"><code>TYPE_APPLICATION_OVERLAY</code></a> 窗å£ç±»åž‹ API 使æ醒窗å£æ˜¾ç¤ºåœ¨å…¶ä»–应用的å‰æ–¹ã€‚
</p>
<p>
如果设备实现包å«å±å¹•æˆ–视频输出机制,则:
@@ -3477,7 +3477,7 @@ Android 包å«ä¸€äº›å¯è®©æ³¨é‡å®‰å…¨æ€§çš„应用在系统级执行设备管ç†
<ul>
<li>[C-2-1] 必须部署相应的æµç¨‹æ¥éªŒè¯æ‰€é€šå‘Šçš„应用属于åˆæ³•çš„ä¼ä¸šè®¾å¤‡ç®¡ç†è§£å†³æ–¹æ¡ˆï¼Œå¹¶ä¸”已在专有的解决方案中é…置为具备与“设备所有者â€åŒç­‰çš„æƒåˆ©ã€‚
</li>
- <li>[C-2-2] 在将 DPC 应用注册为“设备所有者â€ä¹‹å‰ï¼Œå¿…须先按照 <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_DEVICE"><code>android.app.action.PROVISION_MANAGED_DEVICE</code></a> å¯åŠ¨çš„æµç¨‹æ˜¾ç¤ºç›¸åŒçš„ AOSP 设备所有者åŒæ„披露。
+ <li>[C-2-2] 在将 DPC 应用注册为“设备所有者â€ä¹‹å‰ï¼Œå¿…须先按照 <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#ACTION_PROVISION_MANAGED_DEVICE"><code>android.app.action.PROVISION_MANAGED_DEVICE</code></a> å¯åŠ¨çš„æµç¨‹æ˜¾ç¤ºç›¸åŒçš„ AOSP 设备所有者åŒæ„披露信æ¯ã€‚
</li>
<li>在将 DPC 应用注册为“设备所有者â€ä¹‹å‰ï¼Œè®¾å¤‡ä¸Šå¯ä»¥æœ‰ç”¨æˆ·æ•°æ®ã€‚
</li>
@@ -3573,7 +3573,7 @@ Android æ供了一个无障ç¢æœåŠ¡å±‚,以便残障用户更轻æ¾åœ°åœ¨å…¶
<ul>
<li>[C-1-1] å¿…é¡»æä¾› Android æ— éšœç¢æœåŠ¡æ¡†æž¶ï¼ˆå¦‚<a href="http://developer.android.com/reference/android/view/accessibility/package-summary.html">æ— éšœç¢æœåŠ¡ API</a> SDK 文档中所述)的实现。
</li>
- <li>[C-1-2] 必须生æˆæ— éšœç¢äº‹ä»¶ï¼Œå¹¶å°†ç›¸åº”çš„ <code>AccessibilityEvent</code> æ交到所有已注册的 <a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html"><code>AccessibilityService</code></a> 实现(如 SDK 中所述)。
+ <li>[C-1-2] 必须生æˆæ— éšœç¢æœåŠ¡äº‹ä»¶ï¼Œå¹¶å°†ç›¸åº”çš„ <code>AccessibilityEvent</code> æ交到所有已注册的 <a href="http://developer.android.com/reference/android/accessibilityservice/AccessibilityService.html"><code>AccessibilityService</code></a> 实现(如 SDK 中所述)。
</li>
<li>[C-1-3] 必须能够éµä»Ž <code>android.settings.ACCESSIBILITY_SETTINGS</code> Intent æ供一ç§å¯ä¾›ç”¨æˆ·ä½¿ç”¨çš„机制,以便他们å¯ç”¨å’Œåœç”¨ç¬¬ä¸‰æ–¹æ— éšœç¢æœåŠ¡ä»¥åŠé¢„加载的无障ç¢æœåŠ¡ã€‚
</li>
@@ -3722,7 +3722,7 @@ Android TV è®¾å¤‡å®žçŽ°åº”æ”¯æŒ <a href="http://developer.android.com/reference
<ul>
<li>[SR] å¼ºçƒˆå»ºè®®æ”¯æŒ TV 录制。
</li>
- <li>如果 TV 输入法支æŒå½•åˆ¶åŠŸèƒ½ï¼Œå¹¶ä¸”相关节目没有é­åˆ°<a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html#COLUMN_RECORDING_PROHIBITED">ç¦æ­¢</a>录制,则 EPG å¯ä»¥æä¾›<a href="https://developer.android.com/reference/android/media/tv/TvInputInfo.html#canRecord%28%29">录制节目</a>çš„æ–¹å¼ã€‚
+ <li>如果 TV 输入法支æŒå½•åˆ¶åŠŸèƒ½ï¼Œå¹¶ä¸”相关节目没有被<a href="https://developer.android.com/reference/android/media/tv/TvContract.Programs.html#COLUMN_RECORDING_PROHIBITED">ç¦æ­¢</a>录制,则 EPG å¯ä»¥æä¾›<a href="https://developer.android.com/reference/android/media/tv/TvInputInfo.html#canRecord%28%29">录制节目</a>çš„æ–¹å¼ã€‚
</li>
</ul>
<h3 id="3_13_quick_settings">
@@ -3757,7 +3757,7 @@ Android æ供了一个“快æ·è®¾ç½®â€ç•Œé¢ç»„件供用户快速进行频ç¹
</li>
<li>[C-1-4] 必须有用于呈现 <a href="http://developer.android.com/reference/android/media/browse/MediaBrowser.html">MediaBrowser</a> 层次结构的抽屉å¼å¯¼èˆªæ ã€‚
</li>
- <li>[C-1-5] 必须考虑点按两次 <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HEADSETHOOK"><code>KEYCODE_HEADSETHOOK</code></a> 或 <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE"><code>KEYCODE_MEDIA_PLAY_PAUSE</code></a>,作为 <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_NEXT"><code>KEYCODE_MEDIA_NEXT</code></a>(属于 <a href="https://developer.android.com/reference/android/media/session/MediaSession.Callback.html#onMediaButtonEvent%28android.content.Intent%29"><code>MediaSession.Callback#onMediaButtonEvent</code></a>)。
+ <li>[C-1-5] 对于 <a href="https://developer.android.com/reference/android/media/session/MediaSession.Callback.html#onMediaButtonEvent%28android.content.Intent%29"><code>MediaSession.Callback#onMediaButtonEvent</code></a>,必须将点按两次 <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HEADSETHOOK"><code>KEYCODE_HEADSETHOOK</code></a> 或 <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_PLAY_PAUSE"><code>KEYCODE_MEDIA_PLAY_PAUSE</code></a> 视为 <a href="https://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_MEDIA_NEXT"><code>KEYCODE_MEDIA_NEXT</code></a>。
</li>
</ul>
<h3 id="3_15_instant_apps">
@@ -4217,7 +4217,7 @@ ARW (.arw)ã€CR2 (.cr2)ã€DNG (.dng)ã€NEF (.nef)ã€NRW (.nrw)ã€ORF (.orf)ã€PE
</li>
</ul>
<p>
-如果设备实现通过 <a href="https://developer.android.com/reference/android/view/Display.HdrCapabilities.html"><code>Display.HdrCapabilities</code></a> é€šå‘Šæ”¯æŒ HDR é…置文件,则:
+如果设备实现通过 <a href="https://developer.android.com/reference/android/view/Display.HdrCapabilities.html"><code>Display.HdrCapabilities</code></a> é€šå‘Šæ”¯æŒ HDR é…置,则:
</p>
<ul>
<li>[C-2-1] 必须支æŒè§£æžå’Œå¤„ç† HDR é™æ€å…ƒæ•°æ®ã€‚
@@ -5572,7 +5572,7 @@ MP2T
</li>
<li>[C-1-5] 必须使用 <a href="https://developer.android.com/ndk/guides/audio/opensl-for-android.html">OpenSL ES</a> PCM 缓冲队列 API æ¥æ»¡è¶³å»¶è¿Ÿå’Œ USB 音频方é¢çš„è¦æ±‚。
</li>
- <li>[SR] 强烈建议当音频在播放并且 CPU 负载有å˜åŒ–时,æ供一致水平的 CPU 性能。应使用 <a href="https://github.com/googlesamples/android-audio-high-performance/tree/master/SimpleSynth">SimpleSynth</a> æ交 <a href="https://github.com/googlesamples/android-audio-high-performance/commit/1bd6391f8ba9512f9f8798e979bc55b899f856d1">1bd6391</a> 对此进行测试。SimpleSynth 应用需è¦åœ¨è¿è¡Œæ—¶è¾¾åˆ°ä»¥ä¸‹å‚数,并在 10 分钟åŽå®žçŽ°é›¶æ¬ è½½ï¼š
+ <li>[SR] 强烈建议当音频在播放并且 CPU 负载有å˜åŒ–时,æ供一致水平的 CPU 性能。应使用 <a href="https://github.com/googlesamples/android-audio-high-performance/tree/master/SimpleSynth">SimpleSynth</a> æ交项 <a href="https://github.com/googlesamples/android-audio-high-performance/commit/1bd6391f8ba9512f9f8798e979bc55b899f856d1">1bd6391</a> 对此进行测试。SimpleSynth 应用需è¦åœ¨è¿è¡Œæ—¶è¾¾åˆ°ä»¥ä¸‹å‚数,并在 10 分钟åŽå®žçŽ°é›¶æ¬ è½½ï¼š
<ul>
<li>工作周期:200000
</li>
@@ -6013,7 +6013,7 @@ Android ç•Œé¢æ¡†æž¶å®šä¹‰äº†ä¸€ç»„标准逻辑密度,以便应用开å‘者确
<ul>
<li>[C-0-1] 必须报告支æŒçš„å±å¹•æ–¹å‘(<code>android.hardware.screen.portrait</code> å’Œ/或 <code>android.hardware.screen.landscape</code>),并且必须报告至少一个支æŒçš„æ–¹å‘。例如,å±å¹•å›ºå®šä¸ºæ¨ªå‘的设备(例如电视或笔记本电脑)应仅报告 <code>android.hardware.screen.landscape</code>。
</li>
- <li>[C-0-2] æ¯å½“收到通过 <code>android.content.res.Configuration.orientation</code>ã€<code>android.view.Display.getOrientation()</code> 或其他 API æ交的查询时,设备实现都必须报告设备当å‰æ–¹å‘的正确值。
+ <li>[C-0-2] æ¯å½“收到通过 <code>android.content.res.Configuration.orientation</code>ã€android.view.Display.getOrientation() 或其他 API æ交的查询时,设备实现都必须报告设备当å‰æ–¹å‘的正确值。
</li>
</ul>
<p>
@@ -7087,7 +7087,7 @@ AXIS_RZ
</li>
<li>测é‡å™ªå£°ä¸å¾—高于 400 uG/√Hz。
</li>
- <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓冲 3000 个传感器事件。
+ <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓存 3000 个传感器事件。
</li>
<li>批处ç†åŠŸè€—ä¸å¾—高于 3 mW。
</li>
@@ -7158,7 +7158,7 @@ AXIS_RZ
</li>
<li>[C-2-6] 必须具有 <code>TYPE_MAGNETIC_FIELD_UNCALIBRATED</code>,并且其除了符åˆä¸Ž <code>TYPE_GEOMAGNETIC_FIELD</code> 相åŒçš„è´¨é‡è¦æ±‚外,还è¦ç¬¦åˆä»¥ä¸‹è¦æ±‚:
<ul>
- <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓冲 600 个传感器事件。
+ <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓存 600 个传感器事件。
</li>
<li>应具有白噪声谱,以确ä¿ä¼ æ„Ÿå™¨çš„噪声完整性充分符åˆè¦æ±‚。
</li>
@@ -7176,7 +7176,7 @@ AXIS_RZ
</li>
<li>测é‡å™ªå£°ä¸å¾—高于 2 Pa/√Hz。
</li>
- <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓冲 300 个传感器事件。
+ <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓存 300 个传感器事件。
</li>
<li>批处ç†åŠŸè€—ä¸å¾—高于 2 mW。
</li>
@@ -7184,7 +7184,7 @@ AXIS_RZ
</li>
<li>[C-2-8] 必须具有符åˆä»¥ä¸‹è¦æ±‚çš„ <code>TYPE_GAME_ROTATION_VECTOR</code> 传感器:
<ul>
- <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓冲 300 个传感器事件。
+ <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓存 300 个传感器事件。
</li>
<li>批处ç†åŠŸè€—ä¸å¾—高于 4 mW。
</li>
@@ -7198,7 +7198,7 @@ AXIS_RZ
</li>
<li>[C-2-10] 必须具有符åˆä»¥ä¸‹è¦æ±‚çš„ <code>TYPE_STEP_DETECTOR</code> 传感器:
<ul>
- <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓冲 100 个传感器事件。
+ <li>必须实现这ç§ä¼ æ„Ÿå™¨çš„éžå”¤é†’å½¢å¼ï¼Œå¹¶ä¸”至少能够缓存 100 个传感器事件。
</li>
<li>当设备处于é™æ€æ—¶ï¼ŒåŠŸè€—ä¸å¾—高于 0.5 mW;当设备处于动æ€æ—¶ï¼ŒåŠŸè€—ä¸å¾—高于 1.5 mW。
</li>
@@ -7240,7 +7240,7 @@ AXIS_RZ
</li>
</ul>
</li>
- <li>[C-2-17] å¯ä»¥æœ‰ <code>TYPE_PROXIMITY</code> 传感器,但如果存在,则必须至少能够缓冲 100 个传感器事件。
+ <li>[C-2-17] å¯ä»¥æœ‰ <code>TYPE_PROXIMITY</code> 传感器,但如果存在,则必须至少能够缓存 100 个传感器事件。
</li>
</ul>
<p>
@@ -7435,13 +7435,13 @@ AXIS_RZ
如果设备实现报告 <code>android.hardware.telephony</code>,则:
</p>
<ul>
- <li>[C-SR] 强烈建议如下所示地为 <a href="https://developer.android.com/reference/android/telecom/package-summary.html"><code>android.telecom</code></a> API 处ç†éŸ³é¢‘耳机的 <code>KEYCODE_MEDIA_PLAY_PAUSE</code> å’Œ <code>KEYCODE_HEADSETHOOK</code> 事件:
+ <li>[C-SR] 强烈建议按如下所述为 <a href="https://developer.android.com/reference/android/telecom/package-summary.html"><code>android.telecom</code></a> API 处ç†éŸ³é¢‘耳机的 <code>KEYCODE_MEDIA_PLAY_PAUSE</code> å’Œ <code>KEYCODE_HEADSETHOOK</code> 事件:
<ul>
<li>在通è¯æœŸé—´æ£€æµ‹åˆ°çŸ­æŒ‰æŒ‰é”®äº‹ä»¶æ—¶è°ƒç”¨ <a href="https://developer.android.com/reference/android/telecom/Connection.html#onDisconnect%28%29"><code>Connection.onDisconnect()</code></a>。
</li>
- <li>在æ¥ç”µæœŸé—´æ£€æµ‹åˆ°çŸ­æŒ‰æŒ‰é”®äº‹ä»¶æ—¶è°ƒç”¨ <a href="https://developer.android.com/reference/android/telecom/Connection.html#onAnswer%28%29"><code>Connection.onAnswer()</code></a>。
+ <li>在æ¥ç”µé€šè¯æœŸé—´æ£€æµ‹åˆ°çŸ­æŒ‰æŒ‰é”®äº‹ä»¶æ—¶è°ƒç”¨ <a href="https://developer.android.com/reference/android/telecom/Connection.html#onAnswer%28%29"><code>Connection.onAnswer()</code></a>。
</li>
- <li>在æ¥ç”µæœŸé—´æ£€æµ‹åˆ°é•¿æŒ‰æŒ‰é”®äº‹ä»¶æ—¶è°ƒç”¨ <a href="https://developer.android.com/reference/android/telecom/Connection.html#onReject%28%29"><code>Connection.onReject()</code></a>。
+ <li>在æ¥ç”µé€šè¯æœŸé—´æ£€æµ‹åˆ°é•¿æŒ‰æŒ‰é”®äº‹ä»¶æ—¶è°ƒç”¨ <a href="https://developer.android.com/reference/android/telecom/Connection.html#onReject%28%29"><code>Connection.onReject()</code></a>。
</li>
<li>åˆ‡æ¢ <a href="https://developer.android.com/reference/android/telecom/CallAudioState.html"><code>CallAudioState</code></a> çš„é™éŸ³çŠ¶æ€ã€‚
</li>
@@ -7840,7 +7840,7 @@ Android æ”¯æŒ NFC 主机å¡æ¨¡æ‹Ÿ (HCE) 模å¼ã€‚
如果设备实现未æä¾›æµé‡èŠ‚çœç¨‹åºæ¨¡å¼ï¼Œåˆ™ï¼š
</p>
<ul>
- <li>[C-2-1] 必须针对 <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#getRestrictBackgroundStatus%28%29"><code>ConnectivityManager.getRestrictBackgroundStatus()</code></a> 返回值 <code>RESTRICT_BACKGROUND_STATUS_DISABLED</code>。
+ <li>[C-2-1] 必须针对 <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#getRestrictBackgroundStatus%28%29"><code>ConnectivityManager.getRestrictBackgroundStatus()</code></a> 返回值 <code>RESTRICT_BACKGROUND_STATUS_DISABLED</code>
</li>
<li>[C-2-2] ä¸å¾—广播 <code>ConnectivityManager.ACTION_RESTRICT_BACKGROUND_CHANGED</code>。
</li>
@@ -7985,7 +7985,7 @@ Android 包å«ä¸¤ä¸ªç”¨äºŽè®¿é—®æ‘„åƒå¤´çš„ API 包,较新的 android.hardwar
</li>
<li>[C-0-7] 必须通过 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL"><code>android.info.supportedHardwareLevel</code></a> 属性报告正确的支æŒçº§åˆ«ï¼ˆå¦‚ Android SDK 中所述),并报告相应的<a href="http://source.android.com/devices/camera/versioning.html">框架功能标记</a>。
</li>
- <li>[C-0-8] 还必须通过 <code>android.request.availableCapabilities</code> 属性声明 <code>android.hardware.camera2</code> çš„å„项摄åƒå¤´åŠŸèƒ½ï¼Œå¹¶å£°æ˜Žç›¸åº”çš„<a href="http://source.android.com/devices/camera/versioning.html">功能标记</a>;如果连接的任何摄åƒå¤´è®¾å¤‡æ”¯æŒæŸé¡¹åŠŸèƒ½ï¼Œåˆ™å¿…须定义相应的功能标记。
+ <li>[C-0-8] 还必须通过 <code>android.hardware.camera2</code> 属性声明 <code>android.request.availableCapabilities</code> çš„å„项摄åƒå¤´åŠŸèƒ½ï¼Œå¹¶å£°æ˜Žç›¸åº”çš„<a href="http://source.android.com/devices/camera/versioning.html">功能标记</a>;如果连接的任何摄åƒå¤´è®¾å¤‡æ”¯æŒæŸé¡¹åŠŸèƒ½ï¼Œåˆ™å¿…须定义相应的功能标记。
</li>
<li>[C-0-9] æ¯å½“æ‘„åƒå¤´æ‹æ‘„了新照片且相应的照片æ¡ç›®å·²æ·»åŠ åˆ°åª’体存储区时,都必须广播 <code>Camera.ACTION_NEW_PICTURE</code> Intent。
</li>
@@ -8252,7 +8252,7 @@ Android 包å«ä¸¤ä¸ªç”¨äºŽè®¿é—®æ‘„åƒå¤´çš„ API 包,较新的 android.hardwar
7.8.2. 音频输出
</h4>
<p>
-如果设备实现包å«æ‰¬å£°å™¨ï¼Œæˆ–包å«ç”¨äºŽè¿žæŽ¥éŸ³é¢‘输出外围设备的音频/多媒体输出端å£ï¼ˆä¾‹å¦‚ 4 导体 3.5 毫米音频耳机æ’孔或使用 <a href="https://source.android.com/devices/audio/usb#audioClass">USB 音频类</a>çš„ USB 主机模å¼ï¼‰ï¼Œåˆ™ï¼š
+如果设备实现包å«æ‰¬å£°å™¨ï¼Œæˆ–包å«ç”¨äºŽè¿žæŽ¥éŸ³é¢‘输出外围设备的音频/多媒体输出端å£ï¼ˆä¾‹å¦‚ 4 导体 3.5 毫米音频耳机æ’孔或使用 <a href="https://source.android.com/devices/audio/usb#audioClass">USB 音频类</a>çš„ USB 主机模å¼ç«¯å£ï¼‰ï¼Œåˆ™ï¼š
</p>
<ul>
<li>[C-1-1] 必须报告 <code>android.hardware.audio.output</code> 功能常é‡ã€‚
@@ -8361,7 +8361,7 @@ Android 包å«ä¸¤ä¸ªç”¨äºŽè®¿é—®æ‘„åƒå¤´çš„ API 包,较新的 android.hardwar
7.9. 虚拟实境
</h3>
<p>
-Android 包å«åŒ…å«ä¸€äº›ç›¸åº”çš„ API 和工具,以便构建æ供高å“质移动 VR 体验的“虚拟实境â€(VR) 应用。设备实现必须正确实现这些 API 和行为(本节中对此进行了详细说明)。
+Android 包å«ä¸€äº›ç›¸åº”çš„ API 和工具,以便构建æ供高å“质移动 VR 体验的“虚拟实境â€(VR) 应用。设备实现必须正确实现这些 API 和行为(本节中对此进行了详细说明)。
</p>
<h4 id="7_9_1_virtual_reality_mode">
7.9.1. 虚拟实境模å¼
@@ -8388,7 +8388,7 @@ Android æ”¯æŒ <a href="https://developer.android.com/reference/android/app/Acti
</li>
<li>[C-1-6] 必须实现 <a href="https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_mutable_render_buffer.txt"><code>EGL_KHR_mutable_render_buffer</code></a>ã€<a href="https://www.khronos.org/registry/EGL/extensions/ANDROID/EGL_ANDROID_front_buffer_auto_refresh.txt"><code>EGL_ANDROID_front_buffer_auto_refresh</code></a>ã€<a href="https://www.khronos.org/registry/EGL/extensions/ANDROID/EGL_ANDROID_get_native_client_buffer.txt"><code>EGL_ANDROID_get_native_client_buffer</code></a>ã€<a href="https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_fence_sync.txt"><code>EGL_KHR_fence_sync</code></a>ã€<a href="https://www.khronos.org/registry/EGL/extensions/KHR/EGL_KHR_wait_sync.txt"><code>EGL_KHR_wait_sync</code></a>ã€<a href="https://www.khronos.org/registry/EGL/extensions/IMG/EGL_IMG_context_priority.txt"><code>EGL_IMG_context_priority</code></a> å’Œ <a href="https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_protected_content.txt"><code>EGL_EXT_protected_content</code></a>,并在å¯ç”¨ EGL 扩展列表中公开这些扩展。
</li>
- <li>[C-1-7] GPU 和显示å±å¿…须能够åŒæ­¥è®¿é—®å…±äº«çš„å‰ç«¯ç¼“冲区,以便在两个呈现环境中以 60fps 的速率交替呈现 VR 内容,而没有å¯è§çš„撕裂现象。
+ <li>[C-1-7] GPU 和显示å±å¿…须能够åŒæ­¥è®¿é—®å…±äº«çš„å‰ç«¯ç¼“存区,以便在两个呈现环境中以 60fps 的速率交替呈现 VR 内容,而没有å¯è§çš„撕裂现象。
</li>
<li>[C-1-8] 必须实现 <a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_multisampled_render_to_texture.txt"><code>GL_EXT_multisampled_render_to_texture</code></a>ã€<a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview.txt"><code>GL_OVR_multiview</code></a>ã€<a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview2.txt"><code>GL_OVR_multiview2</code></a>ã€<a href="https://www.khronos.org/registry/OpenGL/extensions/OVR/OVR_multiview_multisampled_render_to_texture.txt"><code>GL_OVR_multiview_multisampled_render_to_texture</code></a>ã€<a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_protected_textures.txt"><code>GL_EXT_protected_textures</code></a>ã€<a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_EGL_image_array.txt"><code>GL_EXT_EGL_image_array</code></a> å’Œ <a href="https://www.khronos.org/registry/OpenGL/extensions/EXT/EXT_external_buffer.txt"><code>GL_EXT_external_buffer</code></a>,并在å¯ç”¨ GL 扩展列表中公开这些扩展。
</li>
@@ -8600,7 +8600,7 @@ Android 包å«åº”用待机和低电耗节电模å¼ï¼Œä»¥ä¾¿ä¼˜åŒ–电池的使用
</li>
<li>
<p>
-[C-0-2] åªèƒ½å°† <code>protectionLevel</code> 为 <a href="https://developer.android.com/reference/android/content/pm/PermissionInfo.html#PROTECTION&amp;lowbar;FLAG&amp;lowbar;PRIVILEGED"><code>PROTECTION_FLAG_PRIVILEGED</code></a> çš„æƒé™æŽˆäºˆåœ¨ç³»ç»Ÿæ˜ åƒçš„特æƒè·¯å¾„中加载的应用,并且此类æƒé™åªèƒ½ä½äºŽæ˜Žç¡®ä¸ºå„个应用列入白åå•çš„æƒé™çš„å­é›†ä¸­ã€‚AOSP 实现通过以下方å¼æ¥æ»¡è¶³è¯¥è¦æ±‚:从 <code>etc/permissions/</code> 路径下的文件中读å–为å„个应用列入白åå•çš„æƒé™ã€éµä»Žæ­¤ç±»æƒé™ï¼Œå¹¶å°† <code>system/priv-app</code> 路径用作特æƒè·¯å¾„。
+[C-0-2] <code>protectionLevel</code> 为 <a href="https://developer.android.com/reference/android/content/pm/PermissionInfo.html#PROTECTION&amp;lowbar;FLAG&amp;lowbar;PRIVILEGED"><code>PROTECTION_FLAG_PRIVILEGED</code></a> çš„æƒé™åªèƒ½æŽˆäºˆåœ¨ç³»ç»Ÿæ˜ åƒçš„特æƒè·¯å¾„中预加载的应用,并且此类æƒé™åªèƒ½ä½äºŽæ˜Žç¡®ä¸ºå„个应用列入白åå•çš„æƒé™çš„å­é›†ä¸­ã€‚AOSP 实现通过以下方å¼æ¥æ»¡è¶³è¯¥è¦æ±‚:从 <code>etc/permissions/</code> 路径下的文件中读å–为å„个应用列入白åå•çš„æƒé™ã€éµä»Žæ­¤ç±»æƒé™ï¼Œå¹¶å°† <code>system/priv-app</code> 路径用作特æƒè·¯å¾„。
</p>
</li>
</ul>
@@ -8733,7 +8733,7 @@ Android 包å«åº”用待机和低电耗节电模å¼ï¼Œä»¥ä¾¿ä¼˜åŒ–电池的使用
Android <a href="http://developer.android.com/reference/android/os/UserManager.html">支æŒå¤šç”¨æˆ·åŠŸèƒ½</a>,并支æŒå®Œå…¨ç”¨æˆ·éš”离。
</p>
<ul>
- <li>如果设备实现使用<a href="http://developer.android.com/reference/android/os/Environment.html">å¯ç§»åŠ¨åª’体</a>作为主è¦çš„外部存储设备,则å¯ä»¥ä½†ä¸åº”å¯ç”¨å¤šç”¨æˆ·åŠŸèƒ½ã€‚
+ <li>如果设备实现使用<a href="http://developer.android.com/reference/android/os/Environment.html">å¯ç§»åŠ¨åª’介</a>作为主è¦çš„外部存储设备,则å¯ä»¥ä½†ä¸åº”å¯ç”¨å¤šç”¨æˆ·åŠŸèƒ½ã€‚
</li>
</ul>
<p>
@@ -8755,7 +8755,7 @@ Android <a href="http://developer.android.com/reference/android/os/UserManager.h
如果设备实现包å«å¤šä½ç”¨æˆ·ï¼Œå¹¶ä¸”未声明 <code>android.hardware.telephony</code> 功能标记,则:
</p>
<ul>
- <li>[C-2-1] 必须支æŒå—é™é…置文件,该é…置文件å¯è®©è®¾å¤‡æ‰€æœ‰è€…管ç†è®¾å¤‡ä¸Šçš„其他用户以åŠä»–们å¯ä»¥ä½¿ç”¨çš„功能。借助å—é™é…置文件,设备所有者å¯ä»¥å¿«é€Ÿè®¾ç½®ä¾›å…¶ä»–用户使用的å•ç‹¬çŽ¯å¢ƒï¼ŒåŒæ—¶è¿˜èƒ½åœ¨å¯äºŽè¿™äº›çŽ¯å¢ƒä¸­è¿è¡Œçš„应用内管ç†æ›´ç²¾ç»†çš„é™åˆ¶ã€‚
+ <li>[C-2-1] 必须支æŒå—é™é…置文件,此类é…置文件å¯è®©è®¾å¤‡æ‰€æœ‰è€…管ç†è®¾å¤‡ä¸Šçš„其他用户以åŠä»–们å¯ä»¥ä½¿ç”¨çš„功能。借助å—é™é…置文件,设备所有者å¯ä»¥å¿«é€Ÿè®¾ç½®ä¾›å…¶ä»–用户使用的å•ç‹¬çŽ¯å¢ƒï¼ŒåŒæ—¶è¿˜èƒ½åœ¨å¯äºŽè¿™äº›çŽ¯å¢ƒä¸­è¿è¡Œçš„应用内管ç†æ›´ç²¾ç»†çš„é™åˆ¶ã€‚
</li>
</ul>
<p>
@@ -9071,9 +9071,9 @@ Android 会存储用户所åšé€‰æ‹©çš„历å²è®°å½•ï¼Œå¹¶ä¼šé€šè¿‡ <a href="https
</li>
<li>[SR] 如果设备中有多个离散芯片(例如无线装置ã€ä¸“门的图片处ç†å™¨ï¼‰ï¼Œå¼ºçƒˆå»ºè®®å…¶ä¸­æ¯ä¸ªèŠ¯ç‰‡çš„å¯åŠ¨è¿›ç¨‹åœ¨å¯åŠ¨æ—¶éªŒè¯æ¯ä¸ªé˜¶æ®µã€‚
</li>
- <li>[SR] 当引导加载程åºå¤„于解é”状æ€æ—¶ï¼Œå¼ºçƒˆå»ºè®®ä½¿ç”¨é˜²ç¯¡æ”¹çš„存储空间。防篡改的存储空间æ„味ç€ï¼šå¦‚果存储空间在 HLOS(高级æ“作系统)内被篡改,å¯åŠ¨åŠ è½½ç¨‹åºå¯ä»¥æ£€æµ‹åˆ°ã€‚
+ <li>[SR] 当引导加载程åºå¤„于解é”状æ€æ—¶ï¼Œå¼ºçƒˆå»ºè®®ä½¿ç”¨é˜²ç¯¡æ”¹çš„存储空间。防篡改的存储空间æ„味ç€ï¼šå¦‚果存储空间在 HLOS(高级æ“作系统)内被篡改,引导加载程åºå¯ä»¥æ£€æµ‹åˆ°ã€‚
</li>
- <li>[SR] 强烈建议在å…许从å¯åŠ¨åŠ è½½ç¨‹åºé”定模å¼è½¬æ¢ä¸ºå¯åŠ¨åŠ è½½ç¨‹åºè§£é”模å¼ä¹‹å‰æ示用户(如果他们在使用设备),并è¦æ±‚用户进行物ç†ç¡®è®¤ã€‚
+ <li>[SR] 强烈建议在å…许从引导加载程åºé”定模å¼è½¬æ¢ä¸ºå¼•å¯¼åŠ è½½ç¨‹åºè§£é”模å¼ä¹‹å‰æ示用户(如果他们在使用设备),并è¦æ±‚用户进行物ç†ç¡®è®¤ã€‚
</li>
<li>[SR] 强烈建议针对 HLOS(例如å¯åŠ¨ã€ç³»ç»Ÿåˆ†åŒºï¼‰å®žçŽ°å›žæ»šä¿æŠ¤ï¼Œå¹¶ä½¿ç”¨é˜²ç¯¡æ”¹å­˜å‚¨ç©ºé—´æ¥å­˜å‚¨ç”¨äºŽç¡®å®šå…许使用的最低æ“作系统版本的元数æ®ã€‚
</li>
@@ -9117,7 +9117,7 @@ Android 会存储用户所åšé€‰æ‹©çš„历å²è®°å½•ï¼Œå¹¶ä¼šé€šè¿‡ <a href="https
</li>
<li>[C-1-3] 必须在隔离的执行环境中执行é”定å±å¹•èº«ä»½éªŒè¯ï¼Œå¹¶ä¸”åªæœ‰åœ¨æˆåŠŸé€šè¿‡éªŒè¯æ—¶ï¼Œæ‰å…许使用与身份验è¯ç»‘定的密钥。é”定å±å¹•å‡­æ®çš„存储方å¼å¿…é¡»åªå…许隔离的执行环境执行é”å±èº«ä»½éªŒè¯ã€‚上游 Android å¼€æºé¡¹ç›®æ供了å¯ç”¨äºŽæ»¡è¶³è¯¥è¦æ±‚çš„ <a href="http://source.android.com/devices/tech/security/authentication/gatekeeper.html">Gatekeeper 硬件抽象层 (HAL)</a> å’Œ Trusty。
</li>
- <li>[C-1-4] 如果认è¯ç­¾å密钥有安全硬件ä¿æŠ¤ï¼Œå¹¶ä¸”ç­¾å是在安全硬件中进行,则必须支æŒå¯†é’¥è®¤è¯ã€‚认è¯ç­¾å密钥必须在足够多的设备之间共享,以防止此类密钥被用作设备标识符。满足该è¦æ±‚的一ç§æ–¹æ³•æ˜¯å…±äº«ç›¸åŒçš„认è¯å¯†é’¥ï¼Œé™¤éžç”Ÿæˆäº†è‡³å°‘ 10 万个å•å…ƒçš„给定 SKU。如果生æˆäº†è¶…过 100 万个å•å…ƒçš„ SKU,则å¯ä»¥é’ˆå¯¹æ¯ 100 万个å•å…ƒä½¿ç”¨ä¸€ä¸ªä¸åŒçš„密钥。
+ <li>[C-1-4] 如果认è¯ç­¾å密钥有安全硬件ä¿æŠ¤ï¼Œå¹¶ä¸”ç­¾å是在安全硬件中进行,则必须支æŒå¯†é’¥è®¤è¯ã€‚认è¯ç­¾å密钥必须在足够多的设备之间共享,以防止此类密钥被用作设备标识符。è¦æ»¡è¶³è¯¥è¦æ±‚,å¯ä»¥é‡‡ç”¨çš„一ç§æ–¹æ³•æ˜¯å…±äº«ç›¸åŒçš„认è¯å¯†é’¥ï¼Œé™¤éžç”Ÿæˆäº†è‡³å°‘ 10 万个å•å…ƒçš„给定 SKU。如果生æˆäº†è¶…过 10 万个å•å…ƒçš„ SKU,则å¯ä»¥é’ˆå¯¹æ¯ 10 万个å•å…ƒä½¿ç”¨ä¸€ä¸ªä¸åŒçš„密钥。
</li>
</ul>
<p>
@@ -9140,7 +9140,7 @@ Android 会存储用户所åšé€‰æ‹©çš„历å²è®°å½•ï¼Œå¹¶ä¼šé€šè¿‡ <a href="https
</li>
<li>[C-1-5] ä¸å¾—将加密密钥存储在设备上。
</li>
- <li>[C-1-6] 在å¯ç”¨ç¬¬ä¸‰æ–¹æ‰˜ç®¡ä»¤ç‰Œä»¥è§£å¯†æ•°æ®å­˜å‚¨ä¹‹å‰ï¼Œå¿…须先将会对安全性造æˆå¯¹å½±å“通知用户。
+ <li>[C-1-6] 在å¯ç”¨ç¬¬ä¸‰æ–¹æ‰˜ç®¡ä»¤ç‰Œä»¥è§£å¯†æ•°æ®å­˜å‚¨ä¹‹å‰ï¼Œå¿…须先将会对安全性造æˆçš„å½±å“通知用户。
</li>
</ul>
<p>
@@ -9171,7 +9171,7 @@ Android 会存储用户所åšé€‰æ‹©çš„历å²è®°å½•ï¼Œå¹¶ä¼šé€šè¿‡ <a href="https
<ul>
<li>[C-4-1] 必须具有回退机制,以使用符åˆä»¥ä¸‹æ¡ä»¶çš„主è¦èº«ä»½éªŒè¯æ–¹æ³•ä¹‹ä¸€ï¼šåŸºäºŽå·²çŸ¥å¯†é’¥ï¼Œä¸”满足被视为安全é”定å±å¹•çš„è¦æ±‚。
</li>
- <li>[C-4-2] 当设备政策控制器 (DPC) 应用已通过 <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setKeyguardDisabledFeatures%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)</code></a> 方法或 <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setPasswordQuality()</code></a> 方法(具有比 <code>PASSWORD_QUALITY_UNSPECIFIED</code> é™åˆ¶æ€§æ›´å¼ºçš„è´¨é‡å¸¸é‡ï¼‰è®¾ç½®æ”¿ç­–时,它们必须处于åœç”¨çŠ¶æ€ï¼Œä»…å…许使用主è¦èº«ä»½éªŒè¯æ–¹æ³•æ¥è§£é”å±å¹•ã€‚
+ <li>[C-4-2] 当设备政策控制器 (DPC) 应用已通过 <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setKeyguardDisabledFeatures%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setKeyguardDisabledFeatures(KEYGUARD_DISABLE_TRUST_AGENTS)</code></a> 方法或 <a href="https://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordQuality%28android.content.ComponentName,%20int%29"><code>DevicePolicyManager.setPasswordQuality()</code></a> 方法(具有比 <code>PASSWORD_QUALITY_UNSPECIFIED</code> é™åˆ¶æ€§æ›´å¼ºçš„è´¨é‡å¸¸é‡ï¼‰è®¾ç½®æ”¿ç­–时,它们必须处于åœç”¨çŠ¶æ€ï¼Œå¹¶ä¸”ä»…å…许使用主è¦èº«ä»½éªŒè¯æ–¹æ³•æ¥è§£é”å±å¹•ã€‚
</li>
<li>[C-4-3] 必须至少æ¯éš” 72 å°æ—¶å¯¹ç”¨æˆ·è¿›è¡Œä¸€æ¬¡ä¸»è¦èº«ä»½éªŒè¯ï¼ˆä¾‹å¦‚ PIN ç ã€å›¾æ¡ˆã€å¯†ç ï¼‰ã€‚
</li>
@@ -9208,7 +9208,7 @@ Android 会存储用户所åšé€‰æ‹©çš„历å²è®°å½•ï¼Œå¹¶ä¼šé€šè¿‡ <a href="https
</li>
<li>[C-7-3] ä¸å¾—é‡ç½®é€šè¿‡ <a href="http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html#setPasswordExpirationTimeout%28android.content.ComponentName,%20long%29"><code>DevicePolicyManager.setPasswordExpirationTimeout()</code></a> 设置的密ç æœ‰æ•ˆæœŸè®¡æ—¶å™¨ã€‚
</li>
- <li>[C-7-4] 如果应用已调用 <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)</code></a>,则ä¸å¾—对密钥存储区的访问进行身份验è¯ã€‚
+ <li>[C-7-4] 如果应用已调用 <a href="https://developer.android.com/reference/android/security/keystore/KeyGenParameterSpec.Builder.html#setUserAuthenticationRequired%28boolean%29"><code>KeyGenParameterSpec.Builder.setUserAuthenticationRequired(true)</code></a>,则ä¸å¾—对访问密钥存储区进行身份验è¯ã€‚
</li>
</ul>
<h3 id="9_12_data_deletion">
@@ -9302,7 +9302,7 @@ CTS 能够在实际设备上è¿è¡Œã€‚与所有软件一样,CTS 自身也å¯èƒ½
设备实现必须正确执行 CTS 验è¯ç¨‹åºä¸­çš„所有适用用例。CTS 验è¯ç¨‹åºåŒ…å«åœ¨å…¼å®¹æ€§æµ‹è¯•å¥—件中,以便人工æ“作员è¿è¡Œè¯¥éªŒè¯ç¨‹åºæ¥æµ‹è¯•æ— æ³•ç”±è‡ªåŠ¨åŒ–系统测试的功能(例如,测试摄åƒå¤´å’Œä¼ æ„Ÿå™¨æ˜¯å¦èƒ½å¤Ÿæ­£å¸¸å·¥ä½œï¼‰ã€‚
</p>
<p>
-CTS 验è¯ç¨‹åºå·²ç»å¯¹å¤šç§ç±»åž‹çš„硬件(其中包括一些选é…硬件)进行测试。设备实现必须通过针对其具备的硬件的所有测试;例如,如果æŸå°è®¾å¤‡å…·å¤‡åŠ é€Ÿåº¦è®¡ï¼Œåˆ™å¿…须正确执行 CTS 验è¯ç¨‹åºä¸­çš„加速度计测试用例。å¯è·³è¿‡æˆ–çœç•¥æœ¬å…¼å®¹æ€§å®šä¹‰ä¸­æ³¨æ˜Žä¸ºå¯é€‰çš„功能的测试用例。
+CTS 验è¯ç¨‹åºä¸­åŒ…å«é’ˆå¯¹å¤šç§ç¡¬ä»¶ï¼ˆå…¶ä¸­åŒ…括一些选é…硬件)的测试。设备实现必须通过针对其具备的硬件的所有测试;例如,如果æŸå°è®¾å¤‡å…·å¤‡åŠ é€Ÿåº¦è®¡ï¼Œåˆ™å¿…须正确执行 CTS 验è¯ç¨‹åºä¸­çš„加速度计测试用例。对于本兼容性定义文档中注明为选é…的功能,å¯è·³è¿‡æˆ–çœç•¥ç›¸åº”的测试用例。
</p>
<p>
如上所述,æ¯ç§è®¾å¤‡å’Œæ¯ä¸ªç»†åˆ†ç‰ˆæœ¬éƒ½å¿…须正确è¿è¡Œ CTS 验è¯ç¨‹åºã€‚ä¸è¿‡ï¼Œç”±äºŽå¾ˆå¤šç»†åˆ†ç‰ˆæœ¬éƒ½éžå¸¸ç›¸ä¼¼ï¼Œå› æ­¤è®¾å¤‡å®žçŽ°è€…并ä¸éœ€è¦å¯¹åªæœ‰ç»†å¾®å·®åˆ«çš„细分版本明确è¿è¡Œ CTS 验è¯ç¨‹åºã€‚具体æ¥è¯´å°±æ˜¯ï¼Œå¦‚果设备实现与æŸä¸ªå·²é€šè¿‡ CTS 验è¯ç¨‹åºæµ‹è¯•çš„实现åªæ˜¯åœ¨æ‰€åŒ…å«çš„语言区域ã€å“牌信æ¯ç­‰æ–¹é¢å­˜åœ¨å·®åˆ«ï¼Œåˆ™å¯ä»¥çœç•¥ CTS 验è¯ç¨‹åºæµ‹è¯•ã€‚
@@ -9424,7 +9424,7 @@ Android 包å«ä¸€äº›å¯è®©è®¾å¤‡æ‰€æœ‰è€…应用(如果存在)控制系统更
13. 与我们è”ç³»
</h2>
<p>
- 您å¯ä»¥åŠ å…¥ <a href="https://groups.google.com/forum/#!forum/android-compatibility">android-compatibility 论å›</a>,以便å‘帖咨询或æ出您认为本文档中未涵盖的任何问题。
+您å¯ä»¥åŠ å…¥ <a href="https://groups.google.com/forum/#!forum/android-compatibility">android-compatibility 论å›</a>,以便å‘帖咨询或æ出您认为本文档中未涵盖的任何问题。
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/cts/audio-framework.html b/zh-cn/compatibility/cts/audio-framework.html
index 45eed66f..f4e17252 100644
--- a/zh-cn/compatibility/cts/audio-framework.html
+++ b/zh-cn/compatibility/cts/audio-framework.html
@@ -127,9 +127,7 @@
<p>å‚照麦克风是指频å“平缓ã€è‡ªç„¶çš„麦克风。它们通常用于分æžå’Œæµ‹é‡è®¾å¤‡ã€‚</p>
-<p>市é¢ä¸Šæœ‰ä¸€äº›ä¾¿å®œçš„ USB å‚照麦克风(例如,<a href="https://minidsp.com/products/acoustic-measurement/umik-1">miniDSP USB
-测é‡æ ¡å‡†éº¦å…‹é£Ž</a>ã€<a href="http://www.daytonaudio.com/index.php/umm-6-usb-measurement-microphone.html">Dayton
-音频 UMM-6 USB 测é‡éº¦å…‹é£Ž</a>),主è¦ä¾›å®¶åº­å½±é™¢çˆ±å¥½è€…用æ¥æ ¡å‡†å…¶è®¾ç½®ã€‚</p>
+<p>市é¢ä¸Šæœ‰ä¸€äº›ä¾¿å®œçš„ USB å‚照麦克风(例如,<a href="https://minidsp.com/products/acoustic-measurement/umik-1">miniDSP USB 测é‡æ ¡å‡†éº¦å…‹é£Ž</a>ã€<a href="http://www.daytonaudio.com/index.php/umm-6-usb-measurement-microphone.html">Dayton 音频 UMM-6 USB 测é‡éº¦å…‹é£Ž</a>),主è¦ä¾›å®¶åº­å½±é™¢çˆ±å¥½è€…用æ¥æ ¡å‡†å…¶è®¾ç½®ã€‚</p>
<p>推è的最低å‚照麦克风特å¾ï¼š<br />介于 100 Hz - 20 kHz 之间的平缓频率å“应:+/- 2 dB<br />信噪比为 70 dB(A 加æƒï¼‰<br />频率为 1000 Hz,声压级为 127 dB 时,总è°æ³¢ç•¸å˜çŽ‡å°äºŽ 1ï¼…</p><p>
diff --git a/zh-cn/compatibility/cts/run.html b/zh-cn/compatibility/cts/run.html
index 80561dd0..c73168a1 100644
--- a/zh-cn/compatibility/cts/run.html
+++ b/zh-cn/compatibility/cts/run.html
@@ -39,7 +39,7 @@
<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>
+<p class="note"><strong>注æ„</strong>:我们建议仅在è¿è¡Œ Android 6.0 (Marshmallow) CTS 时,使用 <code>--skip-preconditions</code> 选项跳过å¯èƒ½ä¼šåœ¨æ‰§è¡Œ CTS 测试时导致问题且存在å‰ææ¡ä»¶çš„实验性功能。</p>
</li><li>查看控制å°ä¸­æŠ¥å‘Šçš„测试进度和结果。
</li><li>如果您的设备è¿è¡Œçš„是 Android 5.0 æˆ–æ›´é«˜ç‰ˆæœ¬ï¼Œå¹¶ä¸”å£°æ˜Žæ”¯æŒ ARM å’Œ x86 ABI,则应è¿è¡Œ ARM å’Œ x86 CTS 包。
</li></ol>
diff --git a/zh-cn/compatibility/cts/setup.html b/zh-cn/compatibility/cts/setup.html
index c407ecda..373e0874 100644
--- a/zh-cn/compatibility/cts/setup.html
+++ b/zh-cn/compatibility/cts/setup.html
@@ -144,7 +144,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><em></em>连接到满足以下è¦æ±‚çš„ WLAN ç½‘ç»œï¼šæ”¯æŒ IPv6,å¯ä»¥å°†è¢«æµ‹è®¾å¤‡ (DUT) 视为隔离的客户端(请å‚阅上文的<a href="#physical_environment">物ç†çŽ¯å¢ƒ</a>部分),并å¯è¿žæŽ¥åˆ°äº’è”网:<strong>设置 &gt; WLAN</strong>
+ </li><li>连接到满足以下è¦æ±‚çš„ WLAN ç½‘ç»œï¼šæ”¯æŒ IPv6,å¯ä»¥å°†è¢«æµ‹è®¾å¤‡ (DUT) 视为隔离的客户端(请å‚阅上文的<a href="#physical_environment">物ç†çŽ¯å¢ƒ</a>部分),并å¯è¿žæŽ¥åˆ°äº’è”网:<strong>设置 &gt; WLAN</strong><em></em>
</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>
@@ -160,7 +160,7 @@ ro.product.first_api_level=21
<p class="note"><strong>注æ„:</strong>对于 CTS 版本 2.1 R2 至 4.2 R4,请通过以下命令设置您的设备(或模拟器),以便执行无障ç¢æµ‹è¯•ï¼š<br />
<code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br />
在设备上,ä¾æ¬¡å¯ç”¨ï¼š<strong>设置 &gt; æ— éšœç¢ &gt; æ— éšœç¢ &gt; Delegating Accessibility Service</strong></p>
-<p class="note"><strong>注æ„</strong>:对于 7.0 之å‰çš„ CTS 版本,请在声明 <code>android.software.device_admin</code> 的设备上,设置您的设备,以使用以下命令执行设备管ç†æµ‹è¯•ï¼š<br />
+<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> 和任何其他预加载的设备管ç†å™¨å‡ä¿æŒåœç”¨çŠ¶æ€ã€‚
diff --git a/zh-cn/compatibility/vts/performance.html b/zh-cn/compatibility/vts/performance.html
index aefe78c7..99e23008 100644
--- a/zh-cn/compatibility/vts/performance.html
+++ b/zh-cn/compatibility/vts/performance.html
@@ -289,13 +289,13 @@ BM_sendVec_binderize/8 69974 ns 32700 ns 21296
</dl>
-<p class="note"><strong>注æ„</strong>:åŽå°è´Ÿè·å¯èƒ½ä¼šå½±å“延迟测试中的åžåé‡ç»“果和 <code>other_ms</code> 元组。åªè¦åŽå°è´Ÿè·çš„优先级低于 <code>fifo_ms</code>,就å¯èƒ½åªæœ‰ <code>RT-fifo</code> 会显示类似的结果。</p>
+<p class="note"><strong>注æ„</strong>:åŽå°è´Ÿè·å¯èƒ½ä¼šå½±å“延迟测试中的åžåé‡ç»“果和 <code>other_ms</code> 元组。åªè¦åŽå°è´Ÿè·çš„优先级低于 <code>RT-fifo</code>,就å¯èƒ½åªæœ‰ <code>fifo_ms</code> 会显示类似的结果。</p>
<h4 id="pair-values">指定对值</h4>
<p>æ¯ä¸ªå®¢æˆ·ç«¯è¿›ç¨‹éƒ½ä¼šä¸Žå…¶ä¸“用的æœåŠ¡å™¨è¿›ç¨‹é…对,且æ¯ä¸€å¯¹éƒ½å¯èƒ½ä¼šç‹¬ç«‹è°ƒåº¦åˆ°ä»»ä½• CPU。ä¸è¿‡ï¼Œåªè¦åŒæ­¥æ ‡è®°æ˜¯ <code>honor</code>,事务期间应该就ä¸ä¼šå‡ºçŽ° CPU è¿ç§»çš„情况。</p>
<p>ç¡®ä¿ç³»ç»Ÿæ²¡æœ‰è¿‡è½½ï¼è™½ç„¶è¿‡è½½ç³»ç»Ÿä¸­å»¶è¿Ÿè¾ƒé«˜æ˜¯æ­£å¸¸çŽ°è±¡ï¼Œä½†æ˜¯é’ˆå¯¹è¿‡è½½ç³»ç»Ÿçš„测试结果并ä¸èƒ½æ供有用的信æ¯ã€‚è¦æµ‹è¯•åŽ‹åŠ›è¾ƒé«˜çš„系统,请使用 <code>-pair
-#cpu-1</code>(或谨慎使用 <code>-pair #cpu</code>)。使用 <code>-pair <em>n</em></code> å’Œ <code><em>n</em> &gt; #cpu</code> 进行测试会导致系统过载,并生æˆæ— ç”¨ä¿¡æ¯ã€‚</p>
+#cpu-1</code>(或谨慎使用 <code>-pair #cpu</code>)。使用 <code>-pair <em>n</em></code> å’Œ <code><em>n</em> &gt; #cpu</code> 一起进行测试会导致系统过载,并生æˆæ— ç”¨ä¿¡æ¯ã€‚</p>
<h4 id="deadline-values">指定截止时间值</h4>
<p>ç»è¿‡å¤§é‡ç”¨æˆ·åœºæ™¯æµ‹è¯•ï¼ˆåœ¨åˆæ ¼äº§å“上è¿è¡Œå»¶è¿Ÿæµ‹è¯•ï¼‰ï¼Œæˆ‘们决定将 2.5 毫秒定为需è¦æ»¡è¶³çš„截止时间è¦æ±‚。对于具有更高è¦æ±‚的新应用(如æ¯ç§’ 1000 张照片),此截止时间值将å‘生å˜åŒ–。</p>
diff --git a/zh-cn/devices/architecture/vintf/index.html b/zh-cn/devices/architecture/vintf/index.html
index a1f0b726..1441b9fa 100644
--- a/zh-cn/devices/architecture/vintf/index.html
+++ b/zh-cn/devices/architecture/vintf/index.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>本文档介ç»ä¾›åº”商接å£å¯¹è±¡ï¼ˆVINTF 对象)的设计,该对象用于èšåˆè®¾å¤‡çš„相关信æ¯å¹¶é€šè¿‡å¯æŸ¥è¯¢çš„ API æ供该信æ¯ã€‚<em></em><em></em></p>
+<p>本文档介ç»ä¾›åº”商接å£å¯¹è±¡ï¼ˆVINTF 对象)的设计,该对象用于汇总设备的相关信æ¯å¹¶é€šè¿‡å¯æŸ¥è¯¢çš„ API æ供该信æ¯ã€‚<em></em><em></em></p>
<h2 id="about-objects">VINTF 对象设计</h2>
<p>VINTF 对象直接从设备中收集所需的一些信æ¯ã€‚其他信æ¯ï¼ˆå¦‚清å•ï¼‰ä»¥ XML æ ¼å¼é™æ€æ述。</p>
@@ -55,16 +55,16 @@
<p>无论何时请求,VINTF 对象都必须稳定å¯é ä¸”能æ供相åŒçš„完整信æ¯ï¼ˆè¯·è§<a href="/devices/architecture/vintf/resources.html#caveats">注æ„事项</a>)。</p>
<h2 id="manifests-matrices">清å•å’ŒçŸ©é˜µ</h2>
-<p>Android O 在è¿è¡Œæ—¶éœ€è¦ä½¿ç”¨ API æ¥æŸ¥è¯¢è®¾å¤‡ä¸Šçš„内容,并将该信æ¯å‘é€åˆ°<a href="/devices/tech/ota/index.html">无线下载 (OTA)</a> æ›´æ–°æœåŠ¡å™¨ä»¥åŠå…¶ä»–相关方(如 CTS <code>DeviceInfo</code>)。æŸäº›ä¿¡æ¯åœ¨è¿è¡Œæ—¶è¿›è¡Œæ£€ç´¢ï¼Œå…¶ä¸­æœ‰ä¸€äº›æ˜¯é™æ€å®šä¹‰çš„ä¿¡æ¯ã€‚</p>
+<p>Android O 在è¿è¡Œæ—¶éœ€è¦ä½¿ç”¨ API æ¥æŸ¥è¯¢è®¾å¤‡ä¸Šçš„内容,并将该信æ¯å‘é€åˆ°<a href="/devices/tech/ota/index.html">无线下载 (OTA)</a> æ›´æ–°æœåŠ¡å™¨ä»¥åŠå…¶ä»–相关方(如 CTS <code>DeviceInfo</code>)。æŸäº›ä¿¡æ¯åœ¨è¿è¡Œæ—¶è¿›è¡Œæ£€ç´¢ï¼Œå¦å¤–一些则是é™æ€å®šä¹‰çš„ä¿¡æ¯ã€‚</p>
<ul>
<li><strong>设备清å•</strong>æ述了设备å¯ä»¥ä¸ºæ¡†æž¶æ供的é™æ€ç»„件。</li>
-<li><strong>框架兼容性矩阵</strong>æ述了 Android 框架从给定设备中期待获å–的内容。矩阵是一个é™æ€å®žä½“,其组æˆæ˜¯åœ¨å¼€å‘下一个版本的 Android 框架期间手动确定。</li>
+<li><strong>框架兼容性矩阵</strong>æ述了 Android 框架从给定设备中期待获å–的内容。此矩阵是一个é™æ€å®žä½“,在开å‘下一个版本的 Android 框架期间会手动确定此矩阵的组æˆã€‚</li>
<li><strong>框架清å•</strong>æ述了框架å¯ä»¥ä¸ºè®¾å¤‡æ供的高级æœåŠ¡ã€‚</li>
-<li><strong>设备兼容性矩阵</strong>æ述了供应商映åƒéœ€è¦æ¡†æž¶æ供的æœåŠ¡ï¼Œå…¶ç»„æˆæ˜¯åœ¨è®¾å¤‡å¼€å‘期间手动确定。</li>
+<li><strong>设备兼容性矩阵</strong>æ述了供应商映åƒéœ€è¦æ¡†æž¶æ供的æœåŠ¡ï¼Œåœ¨è®¾å¤‡å¼€å‘期间会手动确定此矩阵的组æˆã€‚</li>
</ul>
-<p>这两对清å•å’ŒçŸ©é˜µå¿…须在 OTA 时进行调整,以确ä¿è®¾å¤‡å¯ä»¥èŽ·å–与设备功能兼容的框架更新。一般æ¥è¯´ï¼Œæ¸…å•æ述了æ供的内容,兼容性矩阵æ述了需è¦çš„内容。<em></em><em></em></p>
+<p>这两对清å•å’ŒçŸ©é˜µå¿…须在 OTA 时进行å调,以确ä¿è®¾å¤‡å¯ä»¥èŽ·å–与设备功能兼容的框架更新。一般æ¥è¯´ï¼Œæ¸…å•æ述了æ供的内容,兼容性矩阵æ述了需è¦çš„内容。<em></em><em></em></p>
<p><a href="/devices/architecture/vintf/objects.html">VINTF 对象数æ®</a>定义了清å•çš„结构,<a href="/devices/architecture/vintf/comp-matrices.html">兼容性矩阵</a>定义了兼容性矩阵的结构,<a href="/devices/architecture/vintf/match-rules.html">匹é…规则</a>定义了兼容性矩阵与清å•ä¹‹é—´æˆåŠŸåŒ¹é…的规则。</p>
diff --git a/zh-cn/devices/graphics/implement-vulkan.html b/zh-cn/devices/graphics/implement-vulkan.html
index 57211a15..a3774293 100644
--- a/zh-cn/devices/graphics/implement-vulkan.html
+++ b/zh-cn/devices/graphics/implement-vulkan.html
@@ -37,7 +37,7 @@
<p>NDK 包å«ä¸€ä¸ªå­˜æ ¹ <code>libvulkan.so</code> 库,该库å¯å¯¼å‡ºä¸ŽåŠ è½½ç¨‹åºç›¸åŒçš„符å·ï¼ˆç”¨äºŽè¿›è¡Œå…³è”)。在设备上è¿è¡Œæ—¶ï¼Œåº”用会调用从 <code>libvulkan.so</code>(真正的库,而éžå­˜æ ¹ï¼‰å¯¼å‡ºçš„ Vulkan 函数,以进入加载程åºä¸­çš„ trampoline 函数(根æ®å…¶ç¬¬ä¸€ä¸ªå‚数分派到相应的层或驱动程åºï¼‰ã€‚<code>vkGet*ProcAddr</code> 调用会返回 trampoline 将分派到的函数指针(å³å®ƒä¼šç›´æŽ¥è°ƒç”¨æ ¸å¿ƒ API 代ç ï¼‰ï¼Œç”±äºŽé€šè¿‡è¿™äº›å‡½æ•°æŒ‡é’ˆï¼ˆè€Œéžå¯¼å‡ºçš„符å·ï¼‰è¿›è¡Œè°ƒç”¨è·³è¿‡äº† trampoline 和分派,因此其效率更高一些。</p>
<h2 id="driver_emun">驱动程åºæžšä¸¾å’ŒåŠ è½½</h2>
-<p>Android è¦æ±‚在构建系统映åƒæ—¶ç³»ç»Ÿå¯ç”¨çš„ GPU 是已知状æ€ã€‚加载程åºä½¿ç”¨çŽ°æœ‰ HAL 机制(请å‚阅 <code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/hardware.h">hardware.h</a></code>)æ¥å‘现和加载驱动程åºã€‚32 ä½å’Œ 64 ä½ Vulkan 驱动程åºçš„首选路径分别为:</p>
+<p>Android è¦æ±‚在构建系统映åƒæ—¶ç³»ç»Ÿå¯ç”¨çš„ GPU 是已知状æ€ã€‚加载程åºä½¿ç”¨çŽ°æœ‰ HAL 机制(请å‚阅 <code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/hardware.h">hardware.h</a></code>)å‘现和加载驱动程åºã€‚32 ä½å’Œ 64 ä½ Vulkan 驱动程åºçš„首选路径分别为:</p>
<pre class="devsite-click-to-copy">
/vendor/lib/hw/vulkan.&lt;ro.product.platform&gt;.so
@@ -90,28 +90,23 @@ VkResult VKAPI vkGetSwapchainGrallocUsage2ANDROID(
<p><code>format</code> å’Œ <code>imageUsage</code> å‚æ•°æ¥è‡ª <code>VkSwapchainCreateInfoKHR</code> 结构。驱动程åºåº”使用相关格å¼å’Œç”¨é€”所需的 gralloc 用途标记æ¥å¡«å…… <code>*grallocConsumerUsage</code> å’Œ <code>*grallocProducerUsage</code>。驱动程åºè¿”回的用途将在系统分é…缓冲区时与交æ¢é“¾æ¶ˆè´¹è€…请求的用途标记é…åˆä½¿ç”¨ã€‚</p>
-<p>此函数的早期版本由 Android 7.x 调用。在 Android 8.0 中,此函数的早期版本已被弃用,但如果驱动程åºæœªæä¾› <code>vkGetSwapchainGrallocUsage2ANDROID</code>,系统ä»ä¼šè°ƒç”¨å®ƒçš„早期版本:</p><pre class="devsite-click-to-copy">
+<p>此函数的早期版本由 Android 7.x 调用。在 Android 8.0 中,此函数的早期版本已被弃用,但如果驱动程åºæœªæä¾› <code>vkGetSwapchainGrallocUsage2ANDROID</code>,系统ä»ä¼šè°ƒç”¨å®ƒçš„早期版本:</p>
+
+<pre class="devsite-click-to-copy">
VkResult VKAPI vkGetSwapchainGrallocUsageANDROID(
VkDevice device,
VkFormat format,
VkImageUsageFlags imageUsage,
int* grallocUsage
);
-<pre>
+</pre>
-<p>This earlier version does not support swapchain usage flags or extended gralloc
-usage flags.</p>
+<p>此早期版本ä¸æ”¯æŒäº¤æ¢é“¾ä½¿ç”¨æ ‡è®°æˆ–扩展 gralloc 使用标记。</p>
-<h3 id="gralloc_usage_flags">Gralloc-backed images</h3>
+<h3 id="gralloc_usage_flags">ç”± Gralloc 支æŒçš„图åƒ</h3>
-<p><code>VkNativeBufferANDROID</code> is a <code>vkCreateImage</code> extension
-structure for creating an image backed by a gralloc buffer. This structure is
-provided to <code>vkCreateImage</code> in the <code>VkImageCreateInfo</code>
-structure chain. Calls to <code>vkCreateImage</code> with this structure happen
-during the first call to <code>vkGetSwapChainInfoWSI(..
-VK_SWAP_CHAIN_INFO_TYPE_IMAGES_WSI ..)</code>. The WSI implementation allocates
-the number of native buffers requested for the swapchain, then creates a
-<code>VkImage</code> for each one:</p>
+<p><code>VkNativeBufferANDROID</code> 是一个 <code>vkCreateImage</code> 扩展程åºç»“构,用于创建由 gralloc 缓冲区支æŒçš„图åƒã€‚该结构æ供给 <code>VkImageCreateInfo</code> 结构链中的 <code>vkCreateImage</code>。对具有此结构的 <code>vkCreateImage</code> 的调用å‘生在第一次调用 <code>vkGetSwapChainInfoWSI(..
+VK_SWAP_CHAIN_INFO_TYPE_IMAGES_WSI ..)</code> 期间。WSI 实现为交æ¢é“¾åˆ†é…请求的原生缓冲区数,然åŽä¸ºæ¯ä¸ªç¼“冲区创建一个 <code>VkImage</code>:</p>
<pre class="devsite-click-to-copy">
typedef struct {
@@ -137,8 +132,7 @@ typedef struct {
} VkNativeBufferANDROID;
</pre>
-<p>When creating a gralloc-backed image, the <code>VkImageCreateInfo</code> has
-the following data:</p>
+<p>创建由 gralloc 支æŒçš„图åƒæ—¶ï¼Œ<code>VkImageCreateInfo</code> 具有以下数æ®ï¼š</p>
<pre class="devsite-click-to-copy">
.imageType = VK_IMAGE_TYPE_2D
@@ -155,11 +149,7 @@ the following data:</p>
.pQueueFamilyIndices = VkSwapChainCreateInfoWSI::pQueueFamilyIndices
</pre>
-In Android 8.0 and later, the platform will provide a
-<code>VkSwapchainImageCreateInfo</code> extension structure in the
-<code>VkImageCreateInfo</code> chain provided to <code>vkCreateImage</code>
-when any swapchain image usage flags are required for the swapchain.
-The extension structure contains the swapchain image usage flags:
+在 Android 8.0 åŠæ›´é«˜ç‰ˆæœ¬ä¸­ï¼Œå¦‚果交æ¢é“¾éœ€è¦ä»»ä½•äº¤æ¢é“¾å›¾åƒä½¿ç”¨æ ‡è®°ï¼Œåˆ™å¹³å°å°†åœ¨ä¸º <code>vkCreateImage</code> æ供的 <code>VkImageCreateInfo</code> 链中æä¾› <code>VkSwapchainImageCreateInfo</code> 扩展结构。该扩展结构包å«äº¤æ¢é“¾å›¾åƒä½¿ç”¨æ ‡è®°ï¼š
<pre class="devsite-click-to-copy">
typedef struct {
@@ -170,10 +160,8 @@ typedef struct {
} VkSwapchainImageCreateInfoANDROID;
</pre>
-<h3 id="acquire_image">Acquiring images</h3>
-<p><code>vkAcquireImageANDROID</code> acquires ownership of a swapchain image
-and imports an externally-signalled native fence into both an existing
-<code>VkSemaphore</code> object and an existing <code>VkFence</code> object:</p>
+<h3 id="acquire_image">获å–图åƒ</h3>
+<p><code>vkAcquireImageANDROID</code> 会获å–交æ¢é“¾å›¾åƒçš„所有æƒï¼Œå¹¶å°†å·²æ”¶åˆ°å¤–部信å·çš„原生栅æ åŒæ—¶å¯¼å…¥åˆ°çŽ°æœ‰çš„ <code>VkSemaphore</code> 对象和现有的 <code>VkFence</code> 对象:</p>
<pre class="devsite-click-to-copy">
VkResult VKAPI vkAcquireImageANDROID(
@@ -185,28 +173,12 @@ VkResult VKAPI vkAcquireImageANDROID(
);
</pre>
-<p>This function is called during <code>vkAcquireNextImageWSI</code> to import a
-native fence into the <code>VkSemaphore</code> and <code>VkFence</code> objects
-provided by the application (however, both semaphore and fence objects are
-optional in this call). The driver may also use this opportunity to recognize
-and handle any external changes to the gralloc buffer state; many drivers won't
-need to do anything here. This call puts the <code>VkSemaphore</code> and
-<code>VkFence</code> into the same pending state as
-<code>vkQueueSignalSemaphore</code> and <code>vkQueueSubmit</code> respectively,
-so queues can wait on the semaphore and the application can wait on the fence.</p>
-
-<p>Both objects become signalled when the underlying native fence signals; if
-the native fence has already signalled, then the semaphore is in the signalled
-state when this function returns. The driver takes ownership of the fence fd and
-is responsible for closing it when no longer needed. It must do so even if
-neither a semaphore or fence object is provided, or even if
-<code>vkAcquireImageANDROID</code> fails and returns an error. If fenceFd is -1,
-it is as if the native fence was already signalled.</p>
-
-<h3 id="acquire_image">Releasing images</h3>
-<p><code>vkQueueSignalReleaseImageANDROID</code> prepares a swapchain image for
-external use, and creates a native fence and schedules it to be signalled after
-the input semaphores have signaled:</p>
+<p>此函数在 <code>vkAcquireNextImageWSI</code> 期间被调用,以将原生栅æ å¯¼å…¥åˆ°åº”用æ供的 <code>VkSemaphore</code> å’Œ <code>VkFence</code> 对象中(ä¸è¿‡ï¼Œåœ¨æ­¤è°ƒç”¨ä¸­ï¼Œä¿¡å·é‡å’Œæ …æ å¯¹è±¡å‡æ˜¯å¯é€‰çš„)。驱动程åºå¯èƒ½ä¹Ÿä¼šå€Ÿæ­¤æœºä¼šè¯†åˆ«å’Œå¤„ç† gralloc 缓冲区状æ€çš„所有外部更改;许多驱动程åºåœ¨æ­¤æ— éœ€è¿›è¡Œä»»ä½•æ“作。此调用会将 <code>VkSemaphore</code> å’Œ <code>VkFence</code> 分别置于与 <code>vkQueueSignalSemaphore</code> å’Œ <code>vkQueueSubmit</code> 相åŒçš„待处ç†çŠ¶æ€ï¼Œå› æ­¤é˜Ÿåˆ—å¯ä»¥ç­‰å¾…ä¿¡å·é‡ï¼Œåº”用å¯ä»¥ç­‰å¾…æ …æ ã€‚</p>
+
+<p>当底层的原生栅æ å‘出信å·æ—¶ï¼Œä¸¤ä¸ªå¯¹è±¡éƒ½å¤„于有信å·é‡çš„状æ€ï¼›å¦‚果原生栅æ å·²ç»å¤„于有信å·é‡çŠ¶æ€ï¼Œåˆ™å½“该函数返回时,信å·é‡ä¹Ÿå¤„于有信å·é‡çš„状æ€ã€‚驱动程åºæ‹¥æœ‰æ …æ  fd 的所有æƒï¼Œè´Ÿè´£åœ¨å…¶ä¸å†éœ€è¦æ—¶å°†å…¶å…³é—­ã€‚å³ä½¿æ²¡æœ‰æ供信å·é‡æˆ–æ …æ å¯¹è±¡ï¼Œæˆ–者å³ä½¿ <code>vkAcquireImageANDROID</code> 失败并返回错误,它也必须这样åšã€‚如果 fenceFd 为 -1,就如åŒåŽŸç”Ÿæ …æ å·²å¤„于有信å·é‡çš„状æ€ã€‚</p>
+
+<h3 id="acquire_image">释放图åƒ</h3>
+<p><code>vkQueueSignalReleaseImageANDROID</code> 会准备交æ¢é“¾å›¾åƒä»¥ä¾›å¤–部使用,创建一个原生栅æ ï¼Œå¹¶å®‰æŽ’其在输入信å·é‡å‘出信å·åŽæ”¶åˆ°ä¿¡å·ï¼š</p>
<pre class="devsite-click-to-copy">
VkResult VKAPI vkQueueSignalReleaseImageANDROID(
@@ -218,31 +190,13 @@ VkResult VKAPI vkQueueSignalReleaseImageANDROID(
);
</pre>
-<p>This API is called during <code>vkQueuePresentKHR</code> on the provided
-queue. Effects are similar to <code>vkQueueSignalSemaphore</code>, except with a
-native fence instead of a semaphore. The native fence must not signal until the
-<code>waitSemaphoreCount</code> semaphores in <code>pWaitSemaphores</code> have
-signaled. Unlike <code>vkQueueSignalSemaphore</code>,
-however, this call creates and returns the synchronization object that will be
-signalled rather than having it provided as input. If the queue is already idle
-when this function is called, it is allowed (but not required) to set
-<code>*pNativeFenceFd</code> to -1. The file descriptor returned in
-*<code>pNativeFenceFd</code> is owned and will be closed by the caller.</p>
-
-<p>Many drivers can ignore the image parameter, but some may need to prepare
-CPU-side data structures associated with a gralloc buffer for use by external
-image consumers. Preparing buffer contents for use by external consumers should
-have been done asynchronously as part of transitioning the image to
-<code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>.</p>
-
-If the image was created with
-<code>VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID</code>, then the driver must
-allow <code>vkQueueSignalReleaseImageANDROID</code> to be called repeatedly
-without intervening calls to <code>vkAcquireImageANDROID</code>.
-
-<h2 id="validation">Validation</h2>
-<p>OEMs can test their Vulkan implementation using CTS, which includes
-<a href="/devices/graphics/cts-integration.html">drawElements
-Quality Program (dEQP)</a> tests that exercise the Vulkan Runtime.</p>
-
-</pre></pre></body></html> \ No newline at end of file
+<p>æ­¤ API 在æ供的队列上的 <code>vkQueuePresentKHR</code> 期间被调用。具体效果与 <code>vkQueueSignalSemaphore</code> 类似,但使用的是原生栅æ ï¼Œè€Œéžä¿¡å·é‡ã€‚原生栅æ å¿…须先等待 <code>pWaitSemaphores</code> 中的 <code>waitSemaphoreCount</code> ä¿¡å·é‡å‘出信å·ï¼Œç„¶åŽå†å‘出信å·ã€‚ä¸è¿‡ï¼Œä¸Ž <code>vkQueueSignalSemaphore</code> ä¸åŒçš„是,此调用会创建并返回将收到信å·ï¼ˆè€Œéžä½œä¸ºè¾“入进行æ供)的åŒæ­¥å¯¹è±¡ã€‚如果调用此函数时队列已ç»é—²ç½®ï¼Œåˆ™å…许其(但并éžå¿…需)将 <code>*pNativeFenceFd</code> 设置为 -1。调用方拥有 *<code>pNativeFenceFd</code> 中返回的文件æ述符并会将其关闭。</p>
+
+<p>很多驱动程åºå¯ä»¥å¿½ç•¥å›¾åƒå‚数,但有些驱动程åºå¯èƒ½éœ€è¦å‡†å¤‡ä¸Ž gralloc 缓冲区相关è”çš„ CPU 端数æ®ç»“构,以供外部图åƒæ¶ˆè´¹è€…使用。作为将图åƒè½¬æ¢ä¸º <code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code> 的一个环节,准备外部消费者使用的缓冲区内容应该异步完æˆã€‚</p>
+
+如果图åƒæ˜¯ä½¿ç”¨ <code>VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID</code> 创建的,则驱动程åºå¿…é¡»å…许åå¤è°ƒç”¨ <code>vkQueueSignalReleaseImageANDROID</code>,而ä¸ä¼šå¹²é¢„对 <code>vkAcquireImageANDROID</code> 的调用。
+
+<h2 id="validation">验è¯</h2>
+<p>OEM å¯ä»¥ä½¿ç”¨ CTS 测试其 Vulkan 实现,其中包括使用 Vulkan è¿è¡Œæ—¶çš„ <a href="/devices/graphics/cts-integration.html">drawElements è´¨é‡è®¡åˆ’ (dEQP)</a> 测试。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/admin/enterprise-telephony.html b/zh-cn/devices/tech/admin/enterprise-telephony.html
index 09466788..b5444667 100644
--- a/zh-cn/devices/tech/admin/enterprise-telephony.html
+++ b/zh-cn/devices/tech/admin/enterprise-telephony.html
@@ -40,8 +40,8 @@ Android 开放æºä»£ç é¡¹ç›® (AOSP) 在拨å·å™¨ã€é€šè®¯å½•å’ŒçŸ­ä¿¡åº”用的å
<p>
例如:
</p><ul>
-<li><strong>为工作è”系人添加标记</strong>:请å‚阅 <code>packages/apps/ContactsCommon</code> <em>f3eb5a207bfe0ff3b4ed2350ae5865ed8bc59798</em>
-</li><li><strong>跨资料æœç´¢</strong>:请å‚阅 <code>packages/apps/ContactsCommon</code><em> cd0b29ddbf3648e48f048196c62245d545bc612</em>2</li>
+<li><strong>为工作è”系人添加标记</strong>:请å‚阅 <code>packages/apps/ContactsCommon</code> f3eb5a207bfe0ff3b4ed2350ae5865ed8bc59798<em></em>
+</li><li><strong>跨资料æœç´¢</strong>:请å‚阅 <code>packages/apps/ContactsCommon</code> cd0b29ddbf3648e48f048196c62245d545bc6122<em></em></li>
</ul>
<h2 id="implementation">实现</h2>
diff --git a/zh-cn/devices/tech/admin/multi-user.html b/zh-cn/devices/tech/admin/multi-user.html
index 2275d833..013a56f1 100644
--- a/zh-cn/devices/tech/admin/multi-user.html
+++ b/zh-cn/devices/tech/admin/multi-user.html
@@ -107,6 +107,6 @@
<li>始终开å¯çš„ VPN。VPN 应用现已å¯ä»¥ç”±ç”¨æˆ·ã€è®¾å¤‡ DPC 或 Managed Profile DPC(仅适用于å—管ç†ä¸ªäººèµ„料应用)设置为始终开å¯ã€‚<em></em>å¯ç”¨åŽï¼Œåº”用将无法访问公共网络(在连接 VPN 且连接å¯ä»¥é€šè¿‡å®ƒæ­£å¸¸è¿›è¡Œè·¯ç”±å‰ï¼Œæ— æ³•è®¿é—®ç½‘络资æºï¼‰ã€‚报告 <code>device_admin</code> 的设备必须实现始终开å¯çš„ VPN。</li>
</ul>
-<p>有关 Android 7.0 设备管ç†åŠŸèƒ½çš„更多详细信æ¯ï¼Œè¯·å‚阅 <a href="https://developer.android.com/about/versions/nougat/android-7.0.html#android_for_work">Android for Work</a>。</p>
+<p>è¦è¯¦ç»†äº†è§£ Android 7.0 设备管ç†åŠŸèƒ½ï¼Œè¯·å‚阅 <a href="https://developer.android.com/about/versions/nougat/android-7.0.html#android_for_work">Android for Work</a>。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/config/update.html b/zh-cn/devices/tech/config/update.html
new file mode 100644
index 00000000..8a954ffe
--- /dev/null
+++ b/zh-cn/devices/tech/config/update.html
@@ -0,0 +1,167 @@
+<html devsite><head>
+ <title>APN 和 CarrierConfig</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 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 å¼€æºé¡¹ç›® (AOSP) 中更新其接入点å称 (APN) ä¿¡æ¯åŠå…¶ç‰¹å®šäºŽè¿è¥å•†çš„é…置设置 (<a href="/devices/tech/config/carrier">CarrierConfig</a>)。</p>
+
+<h2 id="create-account">与您的公å¸ç”µå­é‚®ä»¶åœ°å€ç›¸å…³è”çš„ Google å¸å·</h2>
+
+<p>è¦æ›´æ–° APN ä¿¡æ¯æˆ– CarrierConfig,您需è¦ä½¿ç”¨ä¸Žæœ‰æ•ˆçš„å…¬å¸ç”µå­é‚®ä»¶åœ°å€ç›¸å…³è”çš„ Google å¸å·æ交请求(例如,æ¥è‡ª Acme Company å…¬å¸çš„ APN 更新请求应æ¥è‡ªäºŽ foobar@acme.com <em></em>之类的电å­é‚®ä»¶åœ°å€ï¼‰ã€‚</p>
+<p>如果您没有与公å¸ç”µå­é‚®ä»¶åœ°å€ç›¸å…³è”çš„ Google å¸å·ï¼Œè¯·ä»Žæµè§ˆå™¨ä¸­é€€å‡ºç™»å½•æ‰€æœ‰ Gmail å¸å·ï¼ˆå»ºè®®æ‚¨ä½¿ç”¨æ— ç—•å¼çª—å£ç­‰æ— ç—•æµè§ˆåŠŸèƒ½ï¼Œä»¥å…与其他å¸å·æ··æ·†ï¼‰ï¼Œç„¶åŽ<a href="https://accounts.google.com/SignUpWithoutGmail?hl=zh-cn">使用您的公å¸ç”µå­é‚®ä»¶åœ°å€åˆ›å»º Google å¸å·</a>。</p>
+<!--<ol>-->
+ <!--<li>Sign out of all gmail accounts from your browser. (We recommend you use a private browsing
+ feature such as an incognito window to avoid confusion with your other accounts.)</li>-->
+ <!--<li>Create a Google account with your corporate email address using:
+ <a href="https://accounts.google.com/SignUpWithoutGmail?hl=zh-cn">
+ https://accounts.google.com/SignUpWithoutGmail?hl=en</a></li>-->
+<!--</ol>-->
+<aside class="note"><strong>注æ„</strong>:请勿将任何 Gmail å¸å·ä¸Žè¿™ä¸€æ–°å»ºçš„å¸å·ç›¸å…³è”。</aside>
+
+<h2 id="local-environment">准备本地开å‘环境</h2>
+
+<p>如果您以å‰ä»Žæœªå‘ AOSP æ交过代ç ï¼Œåˆ™éœ€è¦åˆå§‹åŒ–您的编译环境,熟悉相关工具,并了解如何æ交补ä¸ç¨‹åºï¼š</p>
+<ul>
+ <li><a href="/setup/build/initializing">æ­å»ºç¼–译环境</a></li>
+ <li><a href="/setup/develop/">熟悉 Git 和 Repo</a></li>
+ <li><a href="/setup/build/downloading">下载æºä»£ç </a></li>
+ <li><a href="/setup/contribute/submit-patches">æ交补ä¸ç¨‹åº</a></li>
+</ul>
+
+<p>此外,我们强烈建议您使用 <a class="external" href="https://developers.google.com/issue-tracker/">Google Issue Tracker</a> æ¥è·Ÿè¸ªæ›´æ”¹ã€‚</p>
+
+<h2 id="file-a-bug">æ交错误</h2>
+
+<ol>
+ <li>转到 <a class="external" href="https://issuetracker.google.com">issuetracker.google.com</a>,然åŽä½¿ç”¨æ‚¨çš„å…¬å¸ç”µå­é‚®ä»¶åœ°å€ç™»å½•ï¼ˆè¯·å‚阅<a href="#create-account">与您的公å¸ç”µå­é‚®ä»¶åœ°å€ç›¸å…³è”çš„ Google å¸å·</a>)。</li>
+ <aside class="note"><strong>注æ„</strong>:如果这是您第一次登录,则需è¦æŽ¥å—相关许å¯ã€‚</aside>
+ <li>登录åŽï¼Œè¯·ç‚¹å‡»å±å¹•å·¦ä¾§çš„<strong>创建问题</strong>。</li>
+ <li>在<strong>组件</strong>中,请ä¾æ¬¡é€‰æ‹©<a class="external" href="https://issuetracker.google.com/issues/new?component=192705&template=845803" class="external"><strong>“Android Public Trackerâ€&gt;“框架â€</strong></a>。</li>
+ <li>在适当的情况下,继续进行 <a href="#apn-update1">APN 更新</a>或 <a href="#carrierconfig-update1">CarrierConfig 更新</a>,以输入标题和说明。</li>
+</ol>
+
+<h3 id="apn-update1">APN 错误</h3>
+
+<p>请按照如下方å¼è®¾ç½®é”™è¯¯å±žæ€§ï¼š</p>
+<p><strong>标题</strong>:添加/修改/移除 CarrierXYZ 的 APN<em></em><em></em><em></em></p>
+<p><strong>说明</strong>:请添加关于您所请求更改的详细说明,其中包括 APN 设置本身。</p>
+
+<h3 id="carrierconfig-update1">CarrierConfig 错误</h3>
+
+<p>请按照如下方å¼è®¾ç½®é”™è¯¯å±žæ€§ï¼š</p>
+<p><strong>标题</strong>:CarrierXYZ çš„é…置更改</p>
+<p><strong>æè¿°</strong>:请添加关于您所请求更改的详细说明。</p>
+
+<h2 id="submit-changes">æ交更改</h2>
+
+<p>当您准备好进行更改时,请按以下步骤æ“作:</p>
+<ol>
+ <li>确定è¦æ›´æ”¹çš„文件。</li>
+ <li>对相应的文件进行更改。</li>
+ <li>请按照<a href="/setup/contribute/submit-patches#make-your-change">æ交补ä¸ç¨‹åº</a>的相关说明æ“作,将相关更改æ交到本地代ç åº“,并请注æ„æ交消æ¯æŒ‡å—(包括建议的格å¼ï¼‰ã€‚</li>
+ <li>将更改æ交到您的个人历å²è®°å½•åŽï¼Œè¯·ä½¿ç”¨ <code>repo upload</code> 命令将其上传到 Gerrit。</li>
+ <li>上传æˆåŠŸåŽï¼ŒRepo 会æä¾› Gerrit 上新网页的网å€ã€‚请使用此网å€æ‰§è¡Œä»¥ä¸‹æ“作:
+ <ul>
+ <li>在审核æœåŠ¡å™¨ä¸ŠæŸ¥çœ‹æ‚¨çš„è¡¥ä¸ç¨‹åº</li>
+ <li>添加注释</li>
+ <li>为您的补ä¸ç¨‹åºç”³è¯·ç‰¹å®šå®¡æ ¸è€…</li>
+ </ul>
+ </li>
+</ol>
+
+<aside class="note"><b>注æ„</b>ï¼šå‘ AOSP æ交 APN å’Œ CarrierConfig 更改并ä¸èƒ½ä¿è¯ OEM 一定会接å—这些更改。è¿è¥å•†åº”与 OEM åˆä½œï¼Œä»¥ä¾¿åœ¨å…¶è®¾å¤‡ä¸Šè¿›è¡Œæ‰€éœ€æ›´æ”¹ã€‚</aside>
+
+<h3 id="apn-update2">APN 语法</h3>
+
+<p><strong>Android 项目å称</strong> - device/sample</p>
+<p><strong>文件å</strong> - etc/apns-full-conf.xml(<a class="external" href="https://android.googlesource.com/device/sample/+/master/etc/apns-full-conf.xml">Google Git 主链接</a>)</p>
+<p>è¯¥æ–‡ä»¶åŒ…å« XML æ ¼å¼çš„ APN 设置,并充当示例文件,因此 Android 设备的行为ä¸ä¼šå‘生任何å˜åŒ–。</p>
+<p>典型的 APN é…置如下所示:</p>
+
+<pre class="prettyprint">&lt;apn carrier="CarrierXYZ"
+ mcc="123"
+ mnc="123"
+ apn="carrierxyz"
+ type="default,supl,mms,ims,cbs"
+ mmsc="http://mms.carrierxyz.com"
+ mmsproxy="0.0.0.0"
+ mmsport="80"
+ bearer_bitmask="4|5|6|7|8|12"
+/&gt;
+</pre>
+
+<h4 id="testing">测试</h4>
+<ol>
+ <li>连接您拥有 root æƒé™çš„任何 Android 设备。</li>
+ <li>将设置添加到 /etc/apns-conf.xml。</li>
+ <li>é‡ç½® APN 设置。</li>
+ <li>在 APN 设置中,确认已正确加载é…置文件。</li>
+ <li>对于æ¯ä¸ªé…置文件,都请测试数æ®è¿žæŽ¥ã€WLAN 热点和 MMS,以确ä¿å…¶èƒ½å¤Ÿæ­£å¸¸è¿è¡Œã€‚</li>
+</ol>
+
+<h4 id="commit-message">æ交消æ¯</h4>
+
+<pre class="devsite-click-to-copy">[Example - "Add CarrierXYZ apns to sample apns"]
+Bug: [Issue ID from Google Issue Tracker]
+Test: No change to behavior as this is only a sample file
+</pre>
+
+<h4 id="sample">示例 CL</h4>
+<p>è¦èŽ·å–示例 CL,请å‚阅<a class="external" href="https://android-review.googlesource.com/c/device/sample/+/532609">示例 BICS APN</a>。</p>
+
+<h3 id="carrierconfig-update2">CarrierConfig 语法</h3>
+
+<p><b>项目å称</b> - platform/packages/apps/CarrierConfig</p>
+<p><b>文件å</b> - assets/carrier_config_<mccmnc>.xml(<a class="external" href="https://android.googlesource.com/platform/packages/apps/CarrierConfig/+/master/assets">Google Git 主链接</a>)</mccmnc></p>
+<p>æ ¹æ®ç›¸å…³çš„ MCC/MNC 元组确认资æºæ–‡ä»¶å¤¹ä¸­çš„相关 XML æ–‡ä»¶ã€‚è¯¥æ–‡ä»¶åŒ…å« XML æ ¼å¼çš„è¿è¥å•†é…置对象。系统会在 <a class="external" href="https://developer.android.com/reference/android/telephony/CarrierConfigManager.html">CarrierConfigManager</a> 下将属性å称定义为键,并使用åŽç¼€æŒ‡æ˜Žå€¼çš„类型 (int/string/bool)。</p>
+<p>典型的 int/string/bool 属性如下所示:</p>
+
+<pre class="prettyprint">&lt;int name="vvm_port_number_int" value="5499" /&gt;
+&lt;string name="vvm_type_string"&gt;vvm_type_omtp&lt;/string &gt;
+&lt;boolean name="vvm_cellular_data_required_bool" value="true" /&gt;
+</pre>
+
+<h4 id="commit-message">æ交消æ¯</h4>
+
+<pre class="devsite-click-to-copy">[Example - "Add VVM settings for CarrierXYZ"]
+
+[Example - "Updated &lt;mccmnc&gt; carrier config file to include VVM settings
+as defined by CarrierXYZ."]
+
+Bug: [Issue ID from Google Issue Tracker]
+Test: [Testing notes]
+</pre>
+
+<h4 id="sample">示例 CL</h4>
+<p>è¦èŽ·å–示例 CL,请å‚阅<a class="external" href="https://android-review.googlesource.com/c/platform/packages/apps/CarrierConfig/+/625835">ç»è¿‡æ›´æ–°çš„è¿è¥å•†é…置文件</a>。</p>
+
+<h2 id="request-a-review">请求审核</h2>
+
+<p>è¦è¯·æ±‚审核,请执行以下æ“作:</p>
+<ul>
+ <li>转到相应更改的 Gerrit 网å€ï¼Œç„¶åŽå°†â€œandroid-carrier-config-review@google.comâ€<em></em>添加为审核者。</li>
+ <li>您还å¯ä»¥å°†æ‚¨çš„ Google è”系人添加到 Gerrit 上的抄é€åå•ä¸­ã€‚</li>
+ <li>为了进行跟踪,您å¯ä»¥å°†é—®é¢˜æŒ‡æ´¾äººæ›´æ”¹ä¸ºâ€œandroid-carrier-config-review@google.comâ€ã€‚<em></em></li>
+</ul>
+
+<p>在æ交内容通过审核和验è¯æµç¨‹ä¹‹åŽï¼ŒGerrit 会自动将更改åˆå¹¶åˆ°å…¬å¼€ä»£ç åº“。其他用户å¯ä»¥è¿è¡Œ <code> repo sync </code> 以将更新æå–到自己的本地客户端。</p>
+<aside class="note"><strong>注æ„</strong>:对 APN 文件所åšçš„更改ä¸ä¼šè‡ªåŠ¨ç”Ÿæ•ˆï¼Œå› ä¸ºç›¸åº”更改ä½äºŽ device/sample æ–‡ä»¶å¤¹ä¸­ã€‚å¦‚æžœæ‚¨æ­£åœ¨ä¸Žä¸»è¦ OEM åˆä½œï¼Œè¯·ç¡®ä¿ä»–们å¯ä»¥ä»Ž AOSP 获å–最新信æ¯ã€‚一般情况下,OEM 会安排定期获å–最新信æ¯ï¼Œä½†å¦‚果时间紧迫,您å¯ä»¥ä¸Ž OEM è”系以建议他们尽快(而éžå»¶åŽï¼‰æ›´æ–°å…¶åˆ—表。</aside>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/connect/block-numbers.html b/zh-cn/devices/tech/connect/block-numbers.html
index 8ff067d5..3ac9ee31 100644
--- a/zh-cn/devices/tech/connect/block-numbers.html
+++ b/zh-cn/devices/tech/connect/block-numbers.html
@@ -112,7 +112,7 @@ getContentResolver().delete(uri, null, null);
</p>
<p>
-如果设备在之å‰å‡ºåŽ‚时就具备了呼å«/短信é™åˆ¶åŠŸèƒ½ï¼Œè¯·è°ƒæ•´ç›¸åº”功能,以便所有严格匹é…的被å±è”½ç”µè¯å·ç <em></em>都存储在 <code>BlockedNumberProvider,</code> 中,并且围绕该æ供程åºå‘生的行为也能满足 Android 兼容性定义文档 (CDD) 中针对此功能列出的è¦æ±‚。
+<em></em>如果设备在之å‰å‡ºåŽ‚时就具备了呼å«/短信é™åˆ¶åŠŸèƒ½ï¼Œè¯·è°ƒæ•´ç›¸åº”功能,以便所有严格匹é…的被å±è”½ç”µè¯å·ç éƒ½å­˜å‚¨åœ¨ <code>BlockedNumberProvider,</code> 中,并且围绕该æ供程åºå‘生的行为也能满足 Android 兼容性定义文档 (CDD) 中针对此功能列出的è¦æ±‚。
</p>
<p>
diff --git a/zh-cn/devices/tech/ota/nonab/inside_packages.html b/zh-cn/devices/tech/ota/nonab/inside_packages.html
index 40a9d208..21b2004f 100644
--- a/zh-cn/devices/tech/ota/nonab/inside_packages.html
+++ b/zh-cn/devices/tech/ota/nonab/inside_packages.html
@@ -80,7 +80,7 @@ tgt_size</i>, <i>patch1_sha1</i>, <i>patch1_blob</i>, [...])</code></dt>
<dt><code>concat(<i>expr</i>[, <i>expr</i>, ...])</code></dt>
<dd>评估æ¯ä¸ªè¡¨è¾¾å¼å¹¶å°†å®ƒä»¬è¿žæŽ¥èµ·æ¥ã€‚在åªæœ‰ä¸¤ä¸ªå‚数的特殊情况下,+ è¿ç®—符就是该函数的语法糖(但该函数形å¼å¯ä»¥åŒ…å«ä»»æ„æ•°é‡çš„表达å¼ï¼‰ã€‚表达å¼å¿…须为字符串;该函数ä¸èƒ½è¿žæŽ¥ Blob。</dd>
<dt><code>file_getprop(<i>filename</i>, <i>key</i>)</code></dt>
-<dd>读å–给定的 filename,将其解释为属性文件(例如:<code>/system/build.prop</code>,并返回给定 key 的值,如果 key ä¸å­˜åœ¨ï¼Œåˆ™è¿”回空字符串。<i></i><i></i><i></i></dd>
+<dd>读å–给定的 filename,将其解释为属性文件(例如:<code>/system/build.prop</code>),并返回给定 key 的值,如果 key ä¸å­˜åœ¨ï¼Œåˆ™è¿”回空字符串。<i></i><i></i><i></i></dd>
<dt><code>format(<i>fs_type</i>, <i>partition_type</i>, <i>location</i>, <i>
fs_size</i>, <i>mount_point</i>)</code></dt>
<dd>é‡æ–°æ ¼å¼åŒ–给定的分区。支æŒçš„分区类型如下:
@@ -120,14 +120,14 @@ partition_type<i></i> 必须为以下类型之一:<ul>
<dt><code>run_program(<i>path</i>[, <i>arg</i>, ...])</code></dt>
<dd>在 path 上执行二进制文件并传入 arg。<i></i><i></i>返回程åºçš„退出状æ€ã€‚</dd>
<dt><code>set_progress(<i>frac</i>)</code></dt>
-<dd>在最近的 <code>show_progress()</code> 调用所定义的å—内设置进度æ¡çš„ä½ç½®ã€‚frac<i></i> 必须在 [0.0, 1.0] 范围内。进度æ¡ä»Žä¸å‘åŽç§»åŠ¨ï¼›å‘åŽç§»åŠ¨çš„å°è¯•ä¼šè¢«å¿½ç•¥ã€‚</dd>
+<dd>在最近的 <code>show_progress()</code> 调用所定义的å—内设置进度æ¡çš„ä½ç½®ã€‚frac 必须在 [0.0, 1.0] 范围内。<i></i>进度æ¡ä»Žä¸å‘åŽç§»åŠ¨ï¼›å‘åŽç§»åŠ¨çš„å°è¯•ä¼šè¢«å¿½ç•¥ã€‚</dd>
<dt><code>sha1_check(<i>blob</i>[, <i>sha1</i>])</code></dt>
<dd>blob å‚数是 <code>
read_file()</code> 返回的 blob 类型或 <code>package_extract_file()
</code> çš„å•å‚æ•°å½¢å¼ blob。<i></i>在没有 sha1 å‚数的情况下,此函数返回 blob çš„ SHA1 哈希值(作为 40 ä½å六进制字符串)。<i></i>在æ供了一个或多个 sha1 å‚数的情况下,如果 SHA1 哈希值等于其中一个å‚数,则该函数返回此 SHA1 哈希值;如果与任何一个å‚数都ä¸ç›¸ç­‰ï¼Œåˆ™è¿”回空字符串。<i></i></dd>
<dt><code>show_progress(<i>frac</i>, <i>secs</i>)</code></dt>
<dd>在 secs 秒(必须为整数)内推动进度æ¡å‘å‰ç§»åŠ¨ä¸‹ä¸€ä¸ª frac 的长度。secs å¯ä¸º 0,在这ç§æƒ…况下,进度æ¡ä¸ä¼šè‡ªåŠ¨å‘å‰ç§»åŠ¨ï¼Œè€Œæ˜¯é€šè¿‡ä½¿ç”¨ä¸Šé¢æ‰€å®šä¹‰çš„ <code>
-set_progress()</code> 函数实现进度递增。<i></i><i><i></i></i></dd>
+set_progress()</code> 函数实现进度递增。<i></i><i></i><i></i></dd>
<dt><code>sleep(<i>secs</i>)</code></dt>
<dd>休眠 secs 秒(必须为整数)。<i></i></dd>
<dt><code>stdout(<i>expr</i>[, <i>expr</i>, ...])</code></dt>
diff --git a/zh-cn/devices/tech/power/device.html b/zh-cn/devices/tech/power/device.html
index a4ba02b4..7b6be756 100644
--- a/zh-cn/devices/tech/power/device.html
+++ b/zh-cn/devices/tech/power/device.html
@@ -28,7 +28,7 @@
<h2 id="power-consumption">读å–耗电é‡</h2>
-<p>è¦è¯»å–耗电é‡æ•°æ®ï¼Œè¯·åœ¨æµ‹è¯•ä»£ç ä¸­æ’入对 API 的调用。</p>
+<p>è¦è¯»å–耗电é‡æ•°æ®ï¼Œè¯·åœ¨æµ‹è¯•ä»£ç ä¸­æ’入对相关 API 的调用。</p>
<pre class="prettyprint">
import android.os.BatteryManager;
@@ -52,7 +52,7 @@ BATTERY_PROPERTY_CAPACITY Remaining battery capacity as an integer perce
BATTERY_PROPERTY_ENERGY_COUNTER Remaining energy in nanowatt-hours
</pre>
-<p>大多数属性都是从内核中类似于 power_supply å称的å­ç³»ç»Ÿå±žæ€§ä¸­è¯»å–。但是,特定设备的确切属性ã€å±žæ€§å€¼è§£æžå’Œæ›´æ–°é¢‘率å–决于:</p>
+<p>大多数属性都是从内核中类似于 power_supply å称的å­ç³»ç»Ÿå±žæ€§ä¸­è¯»å–的。但是,特定设备的确切属性ã€å±žæ€§å€¼è§£æžå’Œæ›´æ–°é¢‘率å–决于:</p>
<ul>
<li>电é‡è®¡ç¡¬ä»¶ï¼Œå¦‚ Summit SMB347 或 Maxim MAX17050。</li>
diff --git a/zh-cn/devices/tech/settings/settings-guidelines.html b/zh-cn/devices/tech/settings/settings-guidelines.html
new file mode 100644
index 00000000..00caeaa4
--- /dev/null
+++ b/zh-cn/devices/tech/settings/settings-guidelines.html
@@ -0,0 +1,378 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+<!--
+ Copyright 2018 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.
+-->
+
+<h1 id="android_settings_design_guidelines" class="page-title">Android 设置设计指å—</h1>
+
+<p>本文é‡ç‚¹ä»‹ç»è´Ÿè´£è®¾è®¡ Android å¹³å°è®¾ç½®ã€GMS 核心设置(Google 设置)的所有人员或为 Android 应用设计设置的所有开å‘者应该éµå¾ªçš„原则和指å—。</p>
+
+<h2 id="design_principles">设计原则</h2>
+
+<h3 id="provide_a_good_overview">æ供良好的概览</h3>
+
+<p>用户应该能够æµè§ˆè®¾ç½®å±å¹•å¹¶ç†è§£å„项设置åŠå…¶å¯¹åº”的值。</p>
+
+<p><img src="images/settings-guidelines01.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 1</strong>:å„项设置åŠå…¶å½“å‰å€¼æ˜¾ç¤ºåœ¨é¡¶å±‚å±å¹•ä¸­</p>
+
+<h3 id="organize_items_intuitively">直观地整ç†é¡¹ç›®</h3>
+
+<p>将常用设置放在å±å¹•é¡¶éƒ¨ï¼Œå¹¶é™åˆ¶ä¸€ä¸ªå±å¹•ä¸­çš„设置数é‡ã€‚如果å±å¹•ä¸Šçš„项目超过 10-15 个,å¯èƒ½å°±æ˜¾å¾—太多了。å¯ä»¥é€šè¿‡å°†æŸäº›è®¾ç½®ç§»åˆ°å•ç‹¬çš„å±å¹•ä¸­æ¥åˆ›å»ºç›´è§‚çš„èœå•ã€‚</p>
+
+<p><img src="images/settings-guidelines02.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 2</strong>:常用设置ä½äºŽå±å¹•é¡¶éƒ¨</p>
+
+<h3 id="make_settings_easy_to_find">让设置易于查找</h3>
+
+<p>在æŸäº›æƒ…况下,如果一项设置能在ä¸åŒå±å¹•ä¸­è°ƒç”¨ï¼Œç”¨èµ·æ¥å¯èƒ½ä¼šå¾ˆæ–¹ä¾¿ã€‚å„ç§ä¸åŒæƒ…况都å¯èƒ½ä¿ƒä½¿ç”¨æˆ·æ›´æ”¹æŸé¡¹è®¾ç½®ï¼Œå› æ­¤åœ¨ä¸åŒä½ç½®åŒ…å«æ­¤è®¾ç½®å°†æœ‰åŠ©äºŽç”¨æˆ·æ‰¾åˆ°æ­¤è®¾ç½®é¡¹ã€‚</p>
+
+<p>对于é‡å¤çš„设置,请为该设置创建å•ç‹¬çš„å±å¹•ï¼Œå¹¶åœ¨ä¸åŒä½ç½®è®¾ç½®å…¥å£ç‚¹ã€‚</p>
+
+<table class="columns">
+ <tbody><tr>
+ <td><img src="images/settings-guidelines03.png" width="250" class="screenshot"/></td>
+ <td><img src="images/settings-guidelines04.png" width="250" class="screenshot"/></td>
+ </tr>
+</tbody></table>
+
+<p><strong>图 3 和图 4</strong>:“默认通知æ示音â€åŒæ—¶æ˜¾ç¤ºåœ¨â€œé€šçŸ¥â€å±å¹•å’Œâ€œæ示音â€å±å¹•ä¸­</p>
+
+<h3 id="use_a_clear_title_and_status">使用清晰的标题和状æ€</h3>
+
+<p>设置标题应简æ´ä¸”æ„义明确。应é¿å…使用åƒâ€œå¸¸è§„设置â€è¿™æ ·çš„模糊标题。在标题下方,显示状æ€ä»¥çªå‡ºæ˜¾ç¤ºè®¾ç½®çš„值。应显示具体详细信æ¯ï¼Œè€Œä¸åªæ˜¯æ述标题。</p>
+
+<p>标题应该:</p>
+
+<ul>
+<li>将标签的最é‡è¦å†…容放在最å‰é¢ã€‚</li>
+<li>使用中性è¯ï¼ˆå¦‚“å±è”½â€ï¼‰æ¥ä»£æ›¿å¦å®šè¯ï¼ˆå¦‚“ä¸è¦â€æˆ–“永ä¸â€ï¼‰ã€‚</li>
+<li>使用ä¸å«äººç§°çš„标签(如“通知â€ï¼Œè€Œä¸æ˜¯â€œé€šçŸ¥æˆ‘â€ï¼‰ã€‚例外情况:如果必须在标签中æåŠç”¨æˆ·ä»¥ä¾¿å¯¹æ–¹äº†è§£è®¾ç½®ï¼Œè¯·ä½¿ç”¨ç¬¬äºŒäººç§°ï¼ˆâ€œæ‚¨/ä½ â€ï¼‰ï¼Œè€Œä¸æ˜¯ç¬¬ä¸€äººç§°ï¼ˆâ€œæˆ‘â€ï¼‰ã€‚</li>
+</ul>
+
+<p>标题应é¿å…以下情况:</p>
+
+<ul>
+<li>使用宽泛的术语,如“设置â€ã€â€œæ›´æ”¹â€ã€â€œç¼–辑â€ã€â€œä¿®æ”¹â€ã€â€œç®¡ç†â€ã€â€œä½¿ç”¨â€ã€â€œé€‰ä¸­â€æˆ–“选择â€ã€‚</li>
+<li>é‡å¤ä½¿ç”¨å­ç‰ˆå—或å­å±å¹•æ ‡é¢˜ä¸­çš„å­—è¯ã€‚</li>
+<li>使用技术术语。</li>
+</ul>
+
+<h2 id="page_types">页é¢ç±»åž‹</h2>
+
+<h3 id="settings_list">设置列表</h3>
+
+<p>这是最常è§çš„å±å¹•ç±»åž‹ã€‚借助此类å±å¹•ï¼Œæ‚¨å¯ä»¥å°†å¤šé¡¹è®¾ç½®æ”¾åœ¨ä¸€å¤„。设置列表å¯ä»¥åŒ…å«å„ç§æŽ§ä»¶ï¼Œä¾‹å¦‚开关ã€èœå•å’Œæ»‘å—。</p>
+
+<p>如果多项设置属于åŒä¸€ç±»åˆ«ï¼Œåˆ™å¯ä»¥å°†è¿™äº›è®¾ç½®åˆ†ä¸ºä¸€ç»„。è¦äº†è§£è¯¦æƒ…,请å‚阅<a href="#grouping_dividers">分组和分隔线</a>。</p>
+
+<p><img src="images/settings-guidelines05.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 5</strong>:设置列表示例</p>
+
+<h3 id="list_view">列表视图</h3>
+
+<p>列表视图用于显示应用ã€å¸å·ã€è®¾å¤‡ç­‰é¡¹ç›®çš„列表。您å¯ä»¥å°†è¿‡æ»¤æˆ–排åºæŽ§ä»¶æ·»åŠ åˆ°è¯¥å±å¹•ä¸­ã€‚</p>
+
+<p><img src="images/settings-guidelines06.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 6</strong>:列表视图的示例</p>
+
+<h3 id="entity_screen">实体å±å¹•</h3>
+
+<p>实体å±å¹•ç”¨äºŽæ˜¾ç¤ºå•ç‹¬é¡¹ç›®ï¼ˆä¾‹å¦‚应用ã€å¸å·ã€è®¾å¤‡ã€WLAN 网络等)的设置。</p>
+
+<p>从视觉上æ¥çœ‹ï¼Œå®žä½“会与图标ã€æ ‡é¢˜å’Œå‰¯æ ‡é¢˜ä¸€èµ·æ˜¾ç¤ºåœ¨å±å¹•é¡¶éƒ¨ã€‚该å±å¹•ä¸­çš„所有设置都必须与此实体相关。</p>
+
+<p><img src="images/settings-guidelines07.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 7</strong>:“应用信æ¯â€ä¸­ä½¿ç”¨çš„实体å±å¹•çš„示例</p>
+
+<p><img src="images/settings-guidelines08.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 8</strong>:“存储空间â€ä¸­ä½¿ç”¨çš„实体å±å¹•çš„示例</p>
+
+<h3 id="master_setting">主设置</h3>
+
+<p>如果å¯ä»¥å¼€å¯æˆ–关闭整个功能(例如 WLAN 或è“牙),则建议使用主设置。通过使用å±å¹•é¡¶éƒ¨çš„开关,用户å¯ä»¥è½»æ¾æŽ§åˆ¶æ­¤åŠŸèƒ½ã€‚使用主设置åœç”¨æ­¤åŠŸèƒ½ä¼šåœç”¨æ‰€æœ‰å…¶ä»–相关设置。</p>
+
+<p>如果æŸé¡¹åŠŸèƒ½éœ€è¦è¾ƒé•¿çš„文字说明,则å¯ä»¥ä½¿ç”¨ä¸»è®¾ç½®ï¼Œå› ä¸ºè¯¥å±å¹•ç±»åž‹å…许使用较长的页脚文本。</p>
+
+<p>如果需è¦å¤åˆ¶æˆ–从多个å±å¹•é“¾æŽ¥åˆ°æŸé¡¹è®¾ç½®ï¼Œè¯·ä½¿ç”¨ä¸»è®¾ç½®ã€‚由于主设置是一个å•ç‹¬çš„å±å¹•ï¼Œå› æ­¤æ‚¨å¯ä»¥é¿å…在ä¸åŒä½ç½®é’ˆå¯¹åŒä¸€é¡¹è®¾ç½®ä½¿ç”¨å¤šä¸ªå¼€å…³ã€‚</p>
+
+<p><img src="images/settings-guidelines09.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 9</strong>:“应用通知â€å±å¹•ä¸­ä½¿ç”¨çš„主设置的示例(关闭主开关会针对此应用关闭整个功能)</p>
+
+<p><img src="images/settings-guidelines10.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 10</strong>:“应用通知â€å±å¹•ä¸­ä½¿ç”¨çš„主设置的示例(主开关已关闭)</p>
+
+<h3 id="radio_button_selection_screen">å•é€‰æŒ‰é’®é€‰æ‹©å±å¹•</h3>
+
+<p>当用户需è¦é’ˆå¯¹æŸé¡¹è®¾ç½®è¿›è¡Œé€‰æ‹©æ—¶ï¼Œåº”使用该å±å¹•ã€‚å•é€‰æŒ‰é’®å¯ä»¥æ˜¾ç¤ºåœ¨å¯¹è¯æ¡†æˆ–å•ç‹¬çš„å±å¹•ä¸­ã€‚å•é€‰æŒ‰é’®ä¸åº”与滑å—ã€èœå•æˆ–开关一起使用。</p>
+
+<p>å•é€‰æŒ‰é’®å±å¹•å¯ä»¥åœ¨é¡¶éƒ¨åŒ…å«å›¾ç‰‡ï¼Œå¹¶åœ¨åº•éƒ¨åŒ…å«é¡µè„šæ–‡æœ¬ã€‚å•ä¸ªå•é€‰æŒ‰é’®å¯ä»¥å…·æœ‰è¾…助文本和标题。</p>
+
+<p><img src="images/settings-guidelines11.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 11</strong>:ä¸åº”在设置列表中使用å•é€‰æŒ‰é’®</p>
+
+<p><img src="images/settings-guidelines12.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 12</strong>:关于如何在设置中正确使用å•é€‰æŒ‰é’®çš„示例</p>
+
+<h2 id="components">组件</h2>
+
+<h3 id="header">标头</h3>
+
+<p>从 Android 8.0 开始,æ“作工具æ ä¸­ä¼šæ˜¾ç¤ºæœç´¢ã€å¸®åŠ©ä»¥åŠå…¶ä»–相关æ“作。ä¸å»ºè®®ä½¿ç”¨æº¢å‡ºèœå•ï¼Œå› ä¸ºç”¨æˆ·å¯èƒ½æ— æ³•å‘现这些èœå•ä¸­éšè—çš„æ“作。</p>
+
+<p><strong>对于没有任何特定于å±å¹•çš„æ“作的工具æ </strong>:显示æœç´¢å’Œå¸®åŠ©æ“作。</p>
+
+<p><img src="images/settings-guidelines13.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 13</strong>:包å«æœç´¢å’Œå¸®åŠ©æ“作的工具æ </p>
+
+<p><strong>对于包å«ä¸€é¡¹æ“作的工具æ </strong>:将该æ“作显示在æœç´¢å‰é¢ã€‚</p>
+
+<p><img src="images/settings-guidelines14.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 14</strong>:在æœç´¢å’Œå¸®åŠ©æ“作å‰é¢åŒ…å«ä¸€é¡¹æ“作的工具æ </p>
+
+<p><strong>对于包å«å¤šé¡¹æ“作的工具æ </strong>:考虑将主è¦æ“作放置在æœç´¢å‰é¢ï¼ŒåŒæ—¶å°†é«˜çº§æ“作放在溢出èœå•ä¸­ã€‚</p>
+
+<p>如果所有æ“作都是高级æ“作或仅对一å°éƒ¨åˆ†ç”¨æˆ·æœ‰ç”¨ï¼Œè¯·è€ƒè™‘将所有æ“作都放置在溢出èœå•ä¸­ã€‚</p>
+
+<p><img src="images/settings-guidelines15.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 15</strong>:包å«æ“作溢出èœå•çš„工具æ </p>
+
+<h3 id="entity_header">实体标头</h3>
+
+<p>实体标头åªèƒ½æ˜¾ç¤ºæ ‡é¢˜æˆ–带有辅助文本的标题(å…许使用多行辅助文本)。以下æ“作是å¯é€‰çš„。最多å¯ä»¥æœ‰ä¸¤é¡¹æ“作。</p>
+
+<p><img src="images/settings-guidelines16.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 16</strong>:实体标头</p>
+
+<p>图标和标题 (App1) 部分将在标头(应用信æ¯ï¼‰ä¸‹æ»šåŠ¨ã€‚</p>
+
+<p><img src="images/settings-guidelines17.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 17</strong>:图中的应用信æ¯æ ‡é¢˜å±žäºŽå·¥å…·æ çš„一部分,而å±å¹•çš„其余部分将在其下滚动</p>
+
+<h3 id="menu_link">èœå•é“¾æŽ¥</h3>
+
+<p>标题是强制性设置。您还应显示çªå‡ºæ˜¾ç¤ºè®¾ç½®çŠ¶æ€çš„辅助文本。图标是å¯é€‰çš„。</p>
+
+<p>标题文字尽é‡ä¿æŒç®€æ´æ˜Žäº†ã€‚如果标题很长,则å¯èƒ½ä¼šåœ¨ä¸‹ä¸€è¡Œä¸­ç»§ç»­æ˜¾ç¤ºï¼Œè€Œä¸æ˜¯è¢«æˆªæ–­ã€‚请勿在长按时å¯ç”¨èœå•æˆ–æ“作。</p>
+
+<p>例如:</p>
+
+<p><img src="images/settings-guidelines18.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 18</strong>:带有图标ã€æ ‡é¢˜å’Œè¾…助文本的èœå•é“¾æŽ¥</p>
+
+<p><img src="images/settings-guidelines19.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 19</strong>:带有标题和辅助文本的èœå•é“¾æŽ¥</p>
+
+<p><img src="images/settings-guidelines20.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 20</strong>:仅带有标题的èœå•é“¾æŽ¥</p>
+
+<p><strong>带有图标ã€æ ‡é¢˜ã€è¾…助文本,且å³ä¾§å¸¦æœ‰å•ç‹¬è§¦æ‘¸ç›®æ ‡çš„èœå•é“¾æŽ¥</strong></p>
+
+<p>其他点按目标应使用主题背景颜色。</p>
+
+<p><img src="images/settings-guidelines21.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 21</strong>:点按两次的目标èœå•ç¤ºä¾‹</p>
+
+<p><strong>带有图标ã€æ ‡é¢˜ã€è¾…助文本和统计信æ¯/æ•°å­—/警报图标的èœå•é“¾æŽ¥</strong></p>
+
+<p>百分比和时间等数值å¯ä¸Žè¾…助文本一起显示在å³ä¾§ï¼Œè€Œæ¡å½¢å›¾å¯ä»¥æ˜¾ç¤ºåœ¨ä¸‹æ–¹ã€‚</p>
+
+<p>通常,数值显示在å³ä¾§ï¼Œä»¥ä¾¿ç”¨æˆ·èƒ½å¤Ÿè½»æ¾åœ°è¿›è¡Œæµè§ˆå’Œæ¯”较。</p>
+
+<p><img src="images/settings-guidelines22.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 22</strong>:带有图标ã€æ ‡é¢˜ã€ç»Ÿè®¡ä¿¡æ¯å’Œå›¾è¡¨çš„示例èœå•</p>
+
+<h3 id="grouping_dividers">分组和分隔线</h3>
+
+<p>如果å±å¹•ä¸­åŒ…å«å¤šé¡¹è®¾ç½®ï¼Œåˆ™å¯ä»¥å°†è¿™äº›è®¾ç½®åˆ†ç»„并用分隔线分开。与较旧版本的 Android ä¸åŒï¼Œæ‚¨çŽ°åœ¨å¯ä»¥ä½¿ç”¨åˆ†éš”线将多项设置归类为一个群组,而ä¸æ˜¯åˆ†éš”å„项设置。</p>
+
+<p>如果群组中的设置密切相关,那么您å¯ä»¥æ·»åŠ ç¾¤ç»„标题。如果您使用群组标题,则应始终添加分隔线。</p>
+
+<p><img src="images/settings-guidelines23.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 23</strong>:使用分隔符分组的设置</p>
+
+<h3 id="switch">开关</h3>
+
+<p><strong>带有图标ã€æ ‡é¢˜å’Œè¾…助文本的开关</strong></p>
+
+<p><img src="images/settings-guidelines24.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 24</strong>:带有图标ã€æ ‡é¢˜å’Œè¾…助文本的开关</p>
+
+<p><strong>带有标题和辅助文本的开关</strong></p>
+
+<p><img src="images/settings-guidelines25.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 25</strong>:带有标题和辅助文本的开关</p>
+
+<p><strong>仅带有标题的开关</strong></p>
+
+<p>标题左侧å¯é™„带图标。</p>
+
+<p><img src="images/settings-guidelines26.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 26</strong>:仅带有标题的开关</p>
+
+<h3 id="list_item_switch">列表项 + 开关</h3>
+
+<p>您å¯ä»¥ç»“åˆä½¿ç”¨åˆ—表项和开关。点按垂直线的左侧å¯å‘挥链接的作用,并让用户转到下一个å±å¹•ã€‚å³ä¾§åˆ™å‘挥标准开关的作用。</p>
+
+<p>对于左侧的列表项,标题是强制性设置。图标和辅助文本是å¯é€‰çš„。</p>
+
+<p><img src="images/settings-guidelines27.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 27</strong>:列表项和开关</p>
+
+<h3 id="slider">滑å—</h3>
+
+<p>滑å—中的图标是å¯é€‰çš„。</p>
+
+<p><img src="images/settings-guidelines28.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 28</strong>:滑å—</p>
+
+<h3 id="on_screen_button">å±å¹•æŒ‰é’®</h3>
+
+<p>æ­£é¢æ“作使用主题背景颜色,而负é¢æ“作则显示为ç°è‰²ã€‚æ­£é¢æ“作包括打开应用ã€å®‰è£…应用ã€æ·»åŠ æ–°é¡¹ç›®ç­‰ã€‚è´Ÿé¢æ“作包括清除数æ®ã€å¸è½½åº”用ã€åˆ é™¤é¡¹ç›®ç­‰ã€‚</p>
+
+<p><img src="images/settings-guidelines29.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 29</strong>:ç°è‰²çš„“å¸è½½â€å’Œâ€œå¼ºè¡Œåœæ­¢â€æŒ‰é’®</p>
+
+<p><img src="images/settings-guidelines30.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 30</strong>:è“色的“立å³å¼€å¯â€æŒ‰é’®</p>
+
+<h3 id="progressive_disclosure_advanced">æ¸è¿›å¼æŠ«éœ²ï¼ˆé«˜çº§ï¼‰</h3>
+
+<p>应éšè—ä¸ç»å¸¸ä½¿ç”¨çš„设置。仅当至少è¦éšè— 3 个项目时æ‰å¯ä»¥ä½¿ç”¨â€œé«˜çº§â€è®¾ç½®ã€‚</p>
+
+<p>图中,辅助文本显示éšè—设置的标题。辅助文本应åªæœ‰ä¸€è¡Œã€‚其他文本将被截断并以çœç•¥å·ä»£æ›¿ã€‚</p>
+
+<p><img src="images/settings-guidelines31.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 31</strong>:在“显示â€å±å¹•ä¸­ä½¿ç”¨çš„高级设置</p>
+
+<h3 id="drop_down_menu">下拉èœå•</h3>
+
+<p>å¯ä»¥ä½¿ç”¨ä¸‹æ‹‰èœå•ï¼Œä½†ç†æƒ³æƒ…况下,您应改为使用对è¯æ¡†æˆ–å•é€‰æŒ‰é’®é€‰æ‹©å±å¹•ã€‚建议使用此方法æ¥ç®€åŒ–设置,因为目å‰æœ‰ä¸‰ç§ä¸åŒçš„模å¼å¯ç”¨äºŽå•é¡¹é€‰æ‹©ã€‚</p>
+
+<p>如果需è¦ï¼Œæ‚¨å¯ä»¥åœ¨è®¾ç½®å…·æœ‰ç®€å•é€‰é¡¹çš„情况下使用下拉èœå•ã€‚</p>
+
+<p><img src="images/settings-guidelines32.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 32</strong>:下拉èœå•</p>
+
+<h3 id="checkbox">å¤é€‰æ¡†</h3>
+
+<p>å°½å¯èƒ½ä½¿ç”¨å¼€å…³ï¼Œè€Œä¸è¦ä½¿ç”¨å¤é€‰æ¡†ã€‚</p>
+
+<p>å¤é€‰æ¡†å¯ç”¨äºŽï¼š</p>
+
+<ul>
+<li>执行é™åˆ¶åº”用或å±è”½æœåŠ¡ç­‰è´Ÿé¢æ“作。</li>
+<li>é¿å…å±å¹•ä¸­æœ‰è¿‡å¤šçš„开关。</li>
+</ul>
+
+<p><img src="images/settings-guidelines33.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 33</strong>:å¤é€‰æ¡†ç”¨äºŽå‡å°‘该å±å¹•ä¸­çš„开关数é‡</p>
+
+<h3 id="links">链接</h3>
+
+<p>建议ä¸è¦åœ¨è®¾ç½®ä¸­ä½¿ç”¨é“¾æŽ¥ã€‚仅在ç»å¯¹å¿…è¦æ—¶æ‰ä½¿ç”¨é“¾æŽ¥ã€‚链接应使用强调色,并且ä¸åº”添加下划线。</p>
+
+<p><img src="images/settings-guidelines34.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 34</strong>:设置中使用的链接</p>
+
+<h3 id="footer">页脚</h3>
+
+<p>页脚文本å¯ç”¨äºŽæ·»åŠ è¯´æ˜Žå†…容。页脚顶部应始终添加分隔线。页脚显示在å±å¹•åº•éƒ¨ï¼Œå¯ä»¥åŒ…å«é“¾æŽ¥ï¼ˆå¦‚果需è¦ï¼‰ã€‚</p>
+
+<p><img src="images/settings-guidelines35.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 35</strong>:页脚文本</p>
+
+<h2 id="patterns">模å¼</h2>
+
+<h3 id="data">æ•°æ®</h3>
+
+<p>é‡è¦æ•°æ®å¯ä»¥æ˜¾ç¤ºåœ¨æ¡å½¢å›¾æˆ–饼图等图表中。这些数æ®å¯ä»¥æ˜¾ç¤ºåœ¨å®žä½“标头中。示例包括移动数æ®å’Œå­˜å‚¨ç©ºé—´ã€‚</p>
+
+<p>其他ä¸å¤ªé‡è¦çš„æ•°æ®å¯ä»¥ä½¿ç”¨å¸¸è§„列表视图显示。</p>
+
+<p><img src="images/settings-guidelines36.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 36</strong>:显示存储空间的示例</p>
+
+<p><img src="images/settings-guidelines37.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 37</strong>:显示网络的示例</p>
+
+<h3 id="user_education">用户培训</h3>
+
+<p>æŸäº›åŠŸèƒ½å¯èƒ½éœ€è¦è¯´æ˜Žæˆ–用户培训。您å¯ä»¥ä½¿ç”¨åŠ¨ç”»æˆ–图片åŠæ–‡æœ¬æ¥æŒ‡å¯¼ç”¨æˆ·ã€‚动画或图片应显示在å±å¹•é¡¶éƒ¨ï¼Œè€Œé¡µè„šæ–‡æœ¬å¯ç”¨äºŽæ·»åŠ è¯´æ˜Žã€‚</p>
+
+<p><img src="images/settings-guidelines38.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 38</strong>:使用动画和页脚文本的设置</p>
+
+<h3 id="forms">表å•</h3>
+
+<p>如果表å•æœ‰ä¸€ä¸ªè¾“入字段,请使用普通对è¯æ¡†ã€‚这样å¯ä»¥ä½¿ç”¨æˆ·è½»æ¾åœ°åœ¨å•ä¸ªå­—段中输入内容。</p>
+
+<p>ä¸è¿‡ï¼Œå¦‚果表å•æœ‰å¤šä¸ªå­—段,请考虑使用<a href="https://material.io/design/components/dialogs.html#full-screen-dialog">å…¨å±å¯¹è¯æ¡†</a>。这样å¯ä»¥æ供更多å±å¹•ç©ºé—´ï¼Œä»Žè€Œä»¥æ¸…æ™°çš„æ–¹å¼æŽ’列å„字段。</p>
+
+<p><img src="images/settings-guidelines39.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 39</strong>:包å«æ™®é€šå¯¹è¯æ¡†çš„表å•</p>
+
+<h3 id="search_results">æœç´¢ç»“æžœ</h3>
+
+<p>æœç´¢ç»“果会显示设置的标题ã€è¾…助文本(如果有)和é¢åŒ…屑导航ä½ç½®ã€‚</p>
+
+<p><img src="images/settings-guidelines40.png" width="250" class="screenshot"/></p>
+
+<p><strong>图 40</strong>:æœç´¢ç»“æžœ</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/test_infra/tradefed/full_example.html b/zh-cn/devices/tech/test_infra/tradefed/full_example.html
index 12d059cd..566e0805 100644
--- a/zh-cn/devices/tech/test_infra/tradefed/full_example.html
+++ b/zh-cn/devices/tech/test_infra/tradefed/full_example.html
@@ -286,7 +286,7 @@ more /tmp/0/inv_6390011618174565918/host_log_4255420317120216614.txt</pre>
</pre>
<h2 id="optionhandling">处ç†é€‰é¡¹ï¼ˆDã€Iã€R)</h2>
-<p>从 TF é…置中加载的对象(也称为<b>é…置对象</b>)亦å¯é€šè¿‡ä½¿ç”¨ <code>@Option</code> 注解æ¥æŽ¥æ”¶å‘½ä»¤è¡Œå‚数中的数æ®ã€‚</p><p>
+<p>从 TF é…置中加载的对象(也称为<b>é…置对象</b>)亦å¯é€šè¿‡ä½¿ç”¨ <code>@Option</code> 注解接收命令行å‚数中的数æ®ã€‚</p><p>
</p><p>è¦å‚与其中,é…置对象类会将 <code>@Option</code> 注解应用于相关æˆå‘˜å­—段,并为其指定一个唯一的å称。这样您便å¯ä»¥é€šè¿‡å‘½ä»¤è¡Œé€‰é¡¹å¡«å……该æˆå‘˜å­—段值(并自动将该选项添加到é…置帮助系统)。</p>
diff --git a/zh-cn/security/bulletin/2018-02-01.html b/zh-cn/security/bulletin/2018-02-01.html
index 0d465ca6..9b480b02 100644
--- a/zh-cn/security/bulletin/2018-02-01.html
+++ b/zh-cn/security/bulletin/2018-02-01.html
@@ -45,7 +45,7 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</ul>
<h2 id="2018-02-01-details">2018-02-01 安全补ä¸ç¨‹åºçº§åˆ« - æ¼æ´žè¯¦æƒ…</h2>
<p>
-我们在下é¢æ供了 2018-02-01 è¡¥ä¸ç¨‹åºçº§åˆ«æ¶µç›–çš„æ¯ä¸ªå®‰å…¨æ¼æ´žçš„详细信æ¯ã€‚æ¼æ´žåˆ—在所影å“的组件下,其中包括问题æè¿°å’Œä¸€ä¸ªè¡¨ï¼Œè¯¥è¡¨ä¸­åŒ…å« CVEã€ç›¸å…³å‚考内容ã€<a href="#type">æ¼æ´žç±»åž‹</a>ã€<a href="/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代ç æ›´æ”¹åˆ—表),我们会将 Bug ID 链接到该记录。如果æŸä¸ª Bug 有多æ¡ç›¸å…³çš„代ç æ›´æ”¹è®°å½•ï¼Œæˆ‘们还会通过 Bug ID åŽé¢çš„数字链接到更多å‚考内容。
+我们在下é¢æ供了 2018-02-01 è¡¥ä¸ç¨‹åºçº§åˆ«æ¶µç›–çš„æ¯ä¸ªå®‰å…¨æ¼æ´žçš„详细信æ¯ã€‚æ¼æ´žåˆ—在所影å“的组件下,内容包括问题æè¿°å’Œä¸€ä¸ªè¡¨ï¼Œè¯¥è¡¨ä¸­åŒ…å« CVEã€ç›¸å…³å‚考内容ã€<a href="#type">æ¼æ´žç±»åž‹</a>ã€<a href="/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代ç æ›´æ”¹åˆ—表),我们会将 Bug ID 链接到该记录。如果æŸä¸ª Bug 有多æ¡ç›¸å…³çš„代ç æ›´æ”¹è®°å½•ï¼Œæˆ‘们还会通过 Bug ID åŽé¢çš„数字链接到更多å‚考内容。
</p>
<h3 id="media-framework">媒体框架</h3>
@@ -349,7 +349,7 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tbody></table>
<h3 id="qualcomm-closed-source-components">Qualcomm é—­æºç»„件</h3>
-<p>以下æ¼æ´žä¼šå½±å“ Qualcomm 组件,相应的 Qualcomm AMSS 安全公告或安全æ醒中对这些æ¼æ´žè¿›è¡Œäº†è¯¦ç»†è¯´æ˜Žã€‚这些问题的严é‡ç¨‹åº¦è¯„估是由 Qualcomm 直接æ供的。</p>
+<p>以下æ¼æ´žä¼šå½±å“ Qualcomm 组件,相应的 Qualcomm AMSS 安全公告或安全æ醒中对这些æ¼æ´žè¿›è¡Œäº†è¯¦ç»†è¯´æ˜Žã€‚这些æ¼æ´žçš„严é‡ç¨‹åº¦è¯„估是由 Qualcomm 直接æ供的。</p>
<table>
<colgroup><col width="17%" />
@@ -472,7 +472,7 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tr>
</tbody></table>
<p id="asterisk">
-<strong>5.在“å‚考内容â€åˆ—中,Android Bug ID æ—边的 * 表示什么æ„æ€ï¼Ÿ<em></em></strong>
+<strong>5. 在“å‚考内容â€åˆ—中,Android Bug ID æ—边的 * 表示什么æ„æ€ï¼Ÿ<em></em></strong>
</p>
<p>
如果问题尚未公开å‘布,则在“å‚考内容â€åˆ—中,相应 Android Bug ID æ—边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备æ供的最新二进制驱动程åºä¸­é€šå¸¸åŒ…å«æ—¨åœ¨è§£å†³ç›¸åº”问题的更新。
diff --git a/zh-cn/security/bulletin/2018-03-01.html b/zh-cn/security/bulletin/2018-03-01.html
index e59e8d4c..ca00629f 100644
--- a/zh-cn/security/bulletin/2018-03-01.html
+++ b/zh-cn/security/bulletin/2018-03-01.html
@@ -25,7 +25,7 @@
本 Android 安全公告详细介ç»äº†ä¼šå½±å“ Android 设备的安全æ¼æ´žã€‚安全补ä¸ç¨‹åºçº§åˆ«ä¸º 2018-03-05 或更新的 Android 系统都已解决本公告中所述的所有问题。è¦äº†è§£å¦‚何查看设备的安全补ä¸ç¨‹åºçº§åˆ«ï¼Œè¯·å‚阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。
</p>
<p>
-Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有问题的通知。我们已将针对这些问题的æºä»£ç è¡¥ä¸ç¨‹åºå‘布到 Android å¼€æºé¡¹ç›® (AOSP) 代ç åº“中,并在本公告中æ供了相应链接。本公告中还æä¾›äº†æŒ‡å‘ AOSP 以之外的补ä¸ç¨‹åºçš„链接。
+Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有问题的通知。我们已将针对这些问题的æºä»£ç è¡¥ä¸ç¨‹åºå‘布到 Android å¼€æºé¡¹ç›® (AOSP) 代ç åº“中,并在本公告中æ供了相应链接。本公告中还æä¾›äº†æŒ‡å‘ AOSP 之外的补ä¸ç¨‹åºçš„链接。
</p>
<p>
这些问题中å±é™©æ€§æœ€é«˜çš„是媒体框架中的一个严é‡ç¨‹åº¦ä¸ºâ€œä¸¥é‡â€çš„安全æ¼æ´žï¼Œè¯¥æ¼æ´žå¯è®©è¿œç¨‹æ”»å‡»è€…利用蓄æ„创建的文件通过特æƒè¿›ç¨‹æ‰§è¡Œä»»æ„代ç ã€‚<a href="/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦è¯„ä¼°</a>çš„ä¾æ®æ˜¯æ¼æ´žè¢«åˆ©ç”¨åŽå¯èƒ½ä¼šå¯¹å—å½±å“的设备造æˆçš„å½±å“(å‡è®¾ç›¸å…³å¹³å°å’ŒæœåŠ¡ç¼“解措施被æˆåŠŸè§„é¿æˆ–出于开å‘目的而被åœç”¨ï¼‰ã€‚
@@ -418,7 +418,7 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tbody></table>
<h3 id="qualcomm-closed-source-components">Qualcomm é—­æºç»„件</h3>
-<p>以下æ¼æ´žä¼šå½±å“ Qualcomm 组件,相应的 Qualcomm AMSS 安全公告或安全æ醒中对这些æ¼æ´žè¿›è¡Œäº†è¯¦ç»†è¯´æ˜Žã€‚这些问题的严é‡ç¨‹åº¦è¯„估是由 Qualcomm 直接æ供的。</p>
+<p>以下æ¼æ´žä¼šå½±å“ Qualcomm 组件,相应的 Qualcomm AMSS 安全公告或安全æ醒中对这些æ¼æ´žè¿›è¡Œäº†è¯¦ç»†è¯´æ˜Žã€‚这些æ¼æ´žçš„严é‡ç¨‹åº¦è¯„估是由 Qualcomm 直接æ供的。</p>
<table>
<colgroup><col width="17%" />
diff --git a/zh-cn/security/bulletin/2018-07-01.html b/zh-cn/security/bulletin/2018-07-01.html
index 2715f005..fb1ac547 100644
--- a/zh-cn/security/bulletin/2018-07-01.html
+++ b/zh-cn/security/bulletin/2018-07-01.html
@@ -19,14 +19,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>å‘布时间:2018 å¹´ 7 月 2 æ—¥</em></p>
+<p><em>å‘布时间:2018 å¹´ 7 月 2 æ—¥ | 更新时间:2018 å¹´ 7 月 3 æ—¥</em></p>
<p>
Android 安全公告详细介ç»äº†ä¼šå½±å“ Android 设备的安全æ¼æ´žã€‚安全补ä¸ç¨‹åºçº§åˆ«ä¸º 2018-07-05 或更新的 Android 系统都已解决本公告中所述的所有问题。è¦äº†è§£å¦‚何查看设备的安全补ä¸ç¨‹åºçº§åˆ«ï¼Œè¯·å‚阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。
</p>
<p>
-Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有问题的通知。我们会在接下æ¥çš„ 48 å°æ—¶å†…将针对这些问题的æºä»£ç è¡¥ä¸ç¨‹åºå‘布到 Android å¼€æºé¡¹ç›® (AOSP) 代ç åº“中。届时,我们将会修订本公告,将相关 AOSP 链接增补到本文中。
-</p>
+Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有问题的通知。我们已将针对这些问题的æºä»£ç è¡¥ä¸ç¨‹åºå‘布到 Android å¼€æºé¡¹ç›® (AOSP) 代ç åº“中,并在本公告中æ供了相应链接。本公告中还æä¾›äº†æŒ‡å‘ AOSP 之外的补ä¸ç¨‹åºçš„链接。</p>
<p>
这些问题中å±é™©æ€§æœ€é«˜çš„是媒体框架中的一个严é‡ç¨‹åº¦ä¸ºâ€œä¸¥é‡â€çš„安全æ¼æ´žï¼Œè¯¥æ¼æ´žå¯è®©è¿œç¨‹æ”»å‡»è€…利用蓄æ„创建的文件通过特æƒè¿›ç¨‹æ‰§è¡Œä»»æ„代ç ã€‚<a href="/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦è¯„ä¼°</a>çš„ä¾æ®æ˜¯æ¼æ´žè¢«åˆ©ç”¨åŽå¯èƒ½ä¼šå¯¹å—å½±å“的设备造æˆçš„å½±å“(å‡è®¾ç›¸å…³å¹³å°å’ŒæœåŠ¡ç¼“解措施被æˆåŠŸè§„é¿æˆ–出于开å‘目的而被åœç”¨ï¼‰ã€‚
</p>
@@ -68,14 +67,14 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9433</td>
- <td>A-38196219</td>
+ <td>A-38196219<a href="#asterisk">*</a></td>
<td>RCE</td>
<td>严é‡</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2</td>
</tr>
<tr>
<td>CVE-2018-9410</td>
- <td>A-77822336</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/minikin/+/62e88b9f3ac35e1e69d79c7a43c6f9ddcd5980a3">A-77822336</a></td>
<td>ID</td>
<td>高</td>
<td>8.0ã€8.1</td>
@@ -100,35 +99,35 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9411</td>
- <td>A-79376389</td>
+ <td><a href="https://android.googlesource.com/platform/system/libhidl/+/e1302cfda34be9dd0a4aeae6bfa9561b44536758">A-79376389</a></td>
<td>RCE</td>
<td>严é‡</td>
<td>8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9424</td>
- <td>A-76221123</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/d3860e51b83296ae1d2921d8109210283573862a">A-76221123</a></td>
<td>EoP</td>
<td>高</td>
<td>8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9428</td>
- <td>A-74122779</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/46bd7c682db5bbc048b177c52448a7999e5740ce">A-74122779</a></td>
<td>EoP</td>
<td>高</td>
<td>8.1</td>
</tr>
<tr>
<td>CVE-2018-9412</td>
- <td>A-78029004</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/fa12c0fcdc6607b746177ccad4f7099098b4849a">A-78029004</a></td>
<td>DoS</td>
<td>高</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9421</td>
- <td>A-77237570</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/ff2171f2460e3a6d3443ab957732b8b7d4831d40">A-77237570</a></td>
<td>ID</td>
<td>高</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
@@ -153,28 +152,28 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9365</td>
- <td>A-74121126</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/ae94a4c333417a1829030c4d87a58ab7f1401308">A-74121126</a></td>
<td>RCE</td>
<td>严é‡</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9432</td>
- <td>A-73173182</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/a6fe2cd18c77c68219fe7159c051bc4e0003fc40">A-73173182</a></td>
<td>EoP</td>
<td>高</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9420</td>
- <td>A-77238656</td>
+ <td><a href="https://android.googlesource.com/platform/system/media/+/12df4b05fd918d836636e21f783df7ad9d5e17a3">A-77238656</a></td>
<td>ID</td>
<td>高</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9419</td>
- <td>A-74121659</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/f1c2c86080bcd7b3142ff821441696fc99c2bc9a">A-74121659</a></td>
<td>ID</td>
<td>高</td>
<td>7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
@@ -220,8 +219,7 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9417</td>
- <td>A-74447444*<br />
- 上游内核<a href="#asterisk">*</a></td>
+ <td>A-74447444*<br />上游内核<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>高</td>
<td>USB 驱动程åº</td>
@@ -286,17 +284,14 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-5838</td>
- <td>A-63146462<a href="#asterisk">*</a><br />
- QC-CR#2151011</td>
+ <td>A-63146462<a href="#asterisk">*</a><br />QC-CR#2151011</td>
<td>EoP</td>
<td>高</td>
<td>OpenGL ES 驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-3586</td>
- <td>A-63165135<a href="#asterisk">*</a><br />
- QC-CR#2139538<br />
- QC-CR#2073777</td>
+ <td>A-63165135<a href="#asterisk">*</a><br />QC-CR#2139538<br />QC-CR#2073777</td>
<td>RCE</td>
<td>高</td>
<td>ADSPRPC 堆管ç†å™¨</td>
@@ -594,6 +589,11 @@ Android åˆä½œä¼™ä¼´åœ¨æœ¬å…¬å‘Šå‘布å‰è‡³å°‘一个月就已收到关于所有
<td>2018 年 7 月 2 日</td>
<td>å‘布了本公告。</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 7 月 3 日</td>
+ <td>在本公告中添加了 AOSP 链接。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2018.html b/zh-cn/security/bulletin/2018.html
index 40b65573..a56384d0 100644
--- a/zh-cn/security/bulletin/2018.html
+++ b/zh-cn/security/bulletin/2018.html
@@ -34,6 +34,20 @@
<th>安全补ä¸ç¨‹åºçº§åˆ«</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/2018-07-01.html">2018 年 7 月</a></td>
+ <td>å³å°†å‘布 <!--
+ <a href="/security/bulletin/2018-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=ru">руÌÑÑкий</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">中文&nbsp;(å°ç£)</a>
+ -->
+ </td>
+ <td>2018 年 7 月 2 日</td>
+ <td>2018-07-01<br />2018-07-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-06-01.html">2018 年 6 月</a></td>
<td>
<a href="/security/bulletin/2018-06-01.html">English</a> / <a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-06-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-06-01.html?hl=zh-tw">中文 (å°ç£)</a>
@@ -50,7 +64,7 @@
<td>2018-05-01<br />2018-05-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/2018-04-01.html">2018年 4 月</a></td>
+ <td><a href="/security/bulletin/2018-04-01.html">2018 年 4 月</a></td>
<td>
<a href="/security/bulletin/2018-04-01.html">English</a> / <a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
@@ -68,7 +82,7 @@
<tr>
<td><a href="/security/bulletin/2018-02-01.html">2018 年 2 月</a></td>
<td>
- <a href="/security/bulletin/2018-02-01.html">English</a> / <a href="/security/bulletin/2018-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-02-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-02-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-02-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/2018-02-01.html">English</a> / <a href="/security/bulletin/2018-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-02-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-02-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-02-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 2 月</td>
<td>2018-02-01<br />2018-02-05</td>
@@ -76,7 +90,7 @@
<tr>
<td><a href="/security/bulletin/2018-01-01.html">2018 年 1 月</a></td>
<td>
- <a href="/security/bulletin/2018-01-01.html">English</a> / <a href="/security/bulletin/2018-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-01-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-01-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-01-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/2018-01-01.html">English</a> / <a href="/security/bulletin/2018-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-01-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-01-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-01-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 1 月</td>
<td>2018-01-01<br />2018-01-05</td>
diff --git a/zh-cn/security/bulletin/index.html b/zh-cn/security/bulletin/index.html
index f069e2ee..27a52fdb 100644
--- a/zh-cn/security/bulletin/index.html
+++ b/zh-cn/security/bulletin/index.html
@@ -55,9 +55,31 @@
<th>安全补ä¸ç¨‹åºçº§åˆ«</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/2018-07-01.html">2018 年 7 月</a></td>
+ <td>å³å°†å‘布 <!--
+ <a href="/security/bulletin/2018-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=ru">руÌÑÑкий</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">中文&nbsp;(å°ç£)</a>
+ -->
+ </td>
+ <td>2018 年 7 月 2 日</td>
+ <td>2018-07-01<br />2018-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-06-01.html">2018 年 6 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-06-01.html">English</a> / <a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-06-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-06-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ </td>
+ <td>2018 年 6 月 4 日</td>
+ <td>2018-06-01<br />2018-06-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-05-01.html">2018 年 5 月</a></td>
<td>
- <a href="/security/bulletin/2018-05-01.html">English</a> / <a href="/security/bulletin/2018-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-05-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-05-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/2018-05-01.html">English</a> / <a href="/security/bulletin/2018-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-05-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-05-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 5 月 7 日</td>
<td>2018-05-01<br />2018-05-05</td>
@@ -65,7 +87,7 @@
<tr>
<td><a href="/security/bulletin/2018-04-01.html">2018 年 4 月</a></td>
<td>
- <a href="/security/bulletin/2018-04-01.html">English</a> / <a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/2018-04-01.html">English</a> / <a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 4 月 2 日</td>
<td>2018-04-01<br />2018-04-05</td>
@@ -73,7 +95,7 @@
<tr>
<td><a href="/security/bulletin/2018-03-01.html">2018 年 3 月</a></td>
<td>
- <a href="/security/bulletin/2018-03-01.html">English</a> / <a href="/security/bulletin/2018-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-03-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-03-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-03-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/2018-03-01.html">English</a> / <a href="/security/bulletin/2018-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2018-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2018-03-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/2018-03-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2018-03-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 3 月 5 日</td>
<td>2018-03-01<br />2018-03-05</td>
diff --git a/zh-cn/security/bulletin/pixel/2018-01-01.html b/zh-cn/security/bulletin/pixel/2018-01-01.html
index 995a527f..0728e525 100644
--- a/zh-cn/security/bulletin/pixel/2018-01-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-01-01.html
@@ -36,7 +36,8 @@
</p>
<h2 id="security-patches">安全补ä¸ç¨‹åº</h2>
<p>
-æ¼æ´žåˆ—在所影å“的组件下,内容包括问题æè¿°å’Œä¸€ä¸ªè¡¨ï¼Œè¯¥è¡¨ä¸­åŒ…å« CVEã€ç›¸å…³å‚考内容ã€<a href="#type">æ¼æ´žç±»åž‹</a>ã€<a href="/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦</a>和已更新的 Android å¼€æºé¡¹ç›® (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代ç æ›´æ”¹åˆ—表),我们会将 Bug ID 链接到该记录。如果æŸä¸ª Bug 有多æ¡ç›¸å…³çš„更改日志记录,我们还将通过 Bug ID åŽé¢çš„数字链接到更多å‚考内容。</p>
+æ¼æ´žåˆ—在所影å“的组件下,内容包括问题æè¿°å’Œä¸€ä¸ªè¡¨ï¼Œè¯¥è¡¨ä¸­åŒ…å« CVEã€ç›¸å…³å‚考内容ã€<a href="#type">æ¼æ´žç±»åž‹</a>ã€<a href="/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦</a>和已更新的 Android å¼€æºé¡¹ç›® (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代ç æ›´æ”¹åˆ—表),我们会将 Bug ID 链接到该记录。如果æŸä¸ª Bug 有多æ¡ç›¸å…³çš„代ç æ›´æ”¹è®°å½•ï¼Œæˆ‘们还会通过 Bug ID åŽé¢çš„数字链接到更多å‚考内容。
+</p>
<h3 id="framework">框架</h3>
@@ -599,7 +600,7 @@
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对å—å½±å“çš„ Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包å«ç›¸å…³å‚考内容ã€å—å½±å“的类别(例如è“牙或移动数æ®ç½‘络)以åŠé—®é¢˜æ‘˜è¦ã€‚
+我们针对å—å½±å“çš„ Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包å«ç›¸å…³å‚考内容ã€å—å½±å“的类别(例如è“牙或移动数æ®ç½‘络)以åŠæ”¹è¿›ã€‚
</p>
<table>
<tbody><tr>
diff --git a/zh-cn/security/bulletin/pixel/2018-02-01.html b/zh-cn/security/bulletin/pixel/2018-02-01.html
index cc8f326f..85665770 100644
--- a/zh-cn/security/bulletin/pixel/2018-02-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-02-01.html
@@ -36,7 +36,8 @@
<h2 id="security-patches">安全补ä¸ç¨‹åº</h2>
<p>
-æ¼æ´žåˆ—在所影å“的组件下,内容包括问题æè¿°å’Œä¸€ä¸ªè¡¨ï¼Œè¯¥è¡¨ä¸­åŒ…å« CVEã€ç›¸å…³å‚考内容ã€<a href="#type">æ¼æ´žç±»åž‹</a>ã€<a href="https://source.android.com/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦</a>和已更新的 Android å¼€æºé¡¹ç›® (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代ç æ›´æ”¹åˆ—表),我们会将 Bug ID 链接到该记录。如果æŸä¸ª Bug 有多æ¡ç›¸å…³çš„更改日志记录,我们还将通过 Bug ID åŽé¢çš„数字链接到更多å‚考内容。</p>
+æ¼æ´žåˆ—在所影å“的组件下,内容包括问题æè¿°å’Œä¸€ä¸ªè¡¨ï¼Œè¯¥è¡¨ä¸­åŒ…å« CVEã€ç›¸å…³å‚考内容ã€<a href="#type">æ¼æ´žç±»åž‹</a>ã€<a href="https://source.android.com/security/overview/updates-resources.html#severity">严é‡ç¨‹åº¦</a>和已更新的 Android å¼€æºé¡¹ç›® (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代ç æ›´æ”¹åˆ—表),我们会将 Bug ID 链接到该记录。如果æŸä¸ª Bug 有多æ¡ç›¸å…³çš„代ç æ›´æ”¹è®°å½•ï¼Œæˆ‘们还会通过 Bug ID åŽé¢çš„数字链接到更多å‚考内容。
+</p>
<h3 id="framework">框架</h3>
@@ -364,7 +365,7 @@
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对å—å½±å“çš„ Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包å«ç›¸å…³å‚考内容ã€å—å½±å“的类别(例如è“牙或移动数æ®ç½‘络)以åŠé—®é¢˜æ‘˜è¦ã€‚
+我们针对å—å½±å“çš„ Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包å«ç›¸å…³å‚考内容ã€å—å½±å“的类别(例如è“牙或移动数æ®ç½‘络)ã€æ”¹è¿›ä»¥åŠå—å½±å“设备。
</p>
<table>
diff --git a/zh-cn/security/bulletin/pixel/2018-03-01.html b/zh-cn/security/bulletin/pixel/2018-03-01.html
index eac6b560..92c9e4ec 100644
--- a/zh-cn/security/bulletin/pixel/2018-03-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-03-01.html
@@ -475,7 +475,7 @@
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对å—å½±å“çš„ Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包å«ç›¸å…³å‚考内容ã€å—å½±å“的类别(例如è“牙或移动数æ®ç½‘络)以åŠé—®é¢˜æ‘˜è¦ã€‚
+我们针对å—å½±å“çš„ Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包å«ç›¸å…³å‚考内容ã€å—å½±å“的类别(例如è“牙或移动数æ®ç½‘络)ã€æ”¹è¿›ä»¥åŠå—å½±å“设备。
</p>
<table>
diff --git a/zh-cn/security/bulletin/pixel/2018-06-01.html b/zh-cn/security/bulletin/pixel/2018-06-01.html
index a44f141d..189e35b8 100644
--- a/zh-cn/security/bulletin/pixel/2018-06-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-06-01.html
@@ -286,8 +286,7 @@
<tr>
<td>CVE-2018-7480</td>
<td>A-76106168<br />
- <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b54d816e00425c3a517514e0d677bb3cec49258">
-上游内核</a></td>
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=9b54d816e00425c3a517514e0d677bb3cec49258">上游内核</a></td>
<td>EoP</td>
<td>中</td>
<td>å—处ç†ç¨‹åº</td>
@@ -295,8 +294,7 @@
<tr>
<td>CVE-2017-18075</td>
<td>A-73237057<br />
- <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d76c68109f37cb85b243a1cf0f40313afd2bae68">
-上游内核</a></td>
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=d76c68109f37cb85b243a1cf0f40313afd2bae68">上游内核</a></td>
<td>EoP</td>
<td>中</td>
<td>pcrypt</td>
@@ -320,161 +318,140 @@
</tr>
<tr>
<td>CVE-2018-9390</td>
- <td>A-76100614<a href="#asterisk">*</a><br />
- M-ALPS03849277</td>
+ <td>A-76100614<a href="#asterisk">*</a><br />M-ALPS03849277</td>
<td>EoP</td>
<td>中</td>
<td>wlanThermo procfs æ¡ç›®</td>
</tr>
<tr>
<td>CVE-2018-9391</td>
- <td>A-72313579<a href="#asterisk">*</a><br />
- M-ALPS03762614</td>
+ <td>A-72313579<a href="#asterisk">*</a><br />M-ALPS03762614</td>
<td>EoP</td>
<td>中</td>
<td>GPS HAL</td>
</tr>
<tr>
<td>CVE-2018-9392</td>
- <td>A-72312594<a href="#asterisk">*</a><br />
- M-ALPS03762614</td>
+ <td>A-72312594<a href="#asterisk">*</a><br />M-ALPS03762614</td>
<td>EoP</td>
<td>中</td>
<td>GPS HAL</td>
</tr>
<tr>
<td>CVE-2018-9393</td>
- <td>A-72312577<a href="#asterisk">*</a><br />
- M-ALPS03753748</td>
+ <td>A-72312577<a href="#asterisk">*</a><br />M-ALPS03753748</td>
<td>EoP</td>
<td>中</td>
<td>MTK WLAN</td>
</tr>
<tr>
<td>CVE-2018-9394</td>
- <td>A-72312468<a href="#asterisk">*</a><br />
- M-ALPS03753652</td>
+ <td>A-72312468<a href="#asterisk">*</a><br />M-ALPS03753652</td>
<td>EoP</td>
<td>中</td>
<td>MTK P2P 驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-9395</td>
- <td>A-72312071<a href="#asterisk">*</a><br />
- M-ALPS03753735</td>
+ <td>A-72312071<a href="#asterisk">*</a><br />M-ALPS03753735</td>
<td>EoP</td>
<td>中</td>
<td>MTK cfg80211</td>
</tr>
<tr>
<td>CVE-2018-9396</td>
- <td>A-71867113<a href="#asterisk">*</a><br />
- M-ALPS03740353</td>
+ <td>A-71867113<a href="#asterisk">*</a><br />M-ALPS03740353</td>
<td>EoP</td>
<td>中</td>
<td>Mediatek CCCI</td>
</tr>
<tr>
<td>CVE-2018-9397</td>
- <td>A-71866634<a href="#asterisk">*</a><br />
- M-ALPS03532675<br />
- M-ALPS03479586</td>
+ <td>A-71866634<a href="#asterisk">*</a><br />M-ALPS03532675<br />M-ALPS03479586</td>
<td>EoP</td>
<td>中</td>
<td>Mediatek WMT 设备</td>
</tr>
<tr>
<td>CVE-2018-9398</td>
- <td>A-71866289<a href="#asterisk">*</a><br />
- M-ALPS03740468</td>
+ <td>A-71866289<a href="#asterisk">*</a><br />M-ALPS03740468</td>
<td>EoP</td>
<td>中</td>
<td>FM 无线装置驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-9399</td>
- <td>A-71866200<a href="#asterisk">*</a><br />
- M-ALPS03740489</td>
+ <td>A-71866200<a href="#asterisk">*</a><br />M-ALPS03740489</td>
<td>EoP</td>
<td>中</td>
<td>/proc/driver/wmt_dbg 驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-9400</td>
- <td>A-71865884<a href="#asterisk">*</a><br />
- M-ALPS03753678</td>
+ <td>A-71865884<a href="#asterisk">*</a><br />M-ALPS03753678</td>
<td>EoP</td>
<td>中</td>
<td>Goodix 触摸å±é©±åŠ¨ç¨‹åº</td>
</tr>
<tr>
<td>CVE-2017-13308</td>
- <td>A-70728757<a href="#asterisk">*</a><br />
- M-ALPS03751855</td>
+ <td>A-70728757<a href="#asterisk">*</a><br />M-ALPS03751855</td>
<td>EoP</td>
<td>中</td>
<td>热</td>
</tr>
<tr>
<td>CVE-2018-9401</td>
- <td>A-70511226<a href="#asterisk">*</a><br />
- M-ALPS03693409</td>
+ <td>A-70511226<a href="#asterisk">*</a><br />M-ALPS03693409</td>
<td>EoP</td>
<td>中</td>
<td>cameraisp</td>
</tr>
<tr>
<td>CVE-2018-9402</td>
- <td>A-70728072<a href="#asterisk">*</a><br />
- M-ALPS03684171</td>
+ <td>A-70728072<a href="#asterisk">*</a><br />M-ALPS03684171</td>
<td>EoP</td>
<td>中</td>
<td>WLAN 驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-9403</td>
- <td>A-72313700<a href="#asterisk">*</a><br />
- M-ALPS03762413</td>
+ <td>A-72313700<a href="#asterisk">*</a><br />M-ALPS03762413</td>
<td>EoP</td>
<td>中</td>
<td>HAL</td>
</tr>
<tr>
<td>CVE-2018-9404</td>
- <td>A-72314374<a href="#asterisk">*</a><br />
- M-ALPS03773299</td>
+ <td>A-72314374<a href="#asterisk">*</a><br />M-ALPS03773299</td>
<td>EoP</td>
<td>中</td>
<td>无线接å£å±‚</td>
</tr>
<tr>
<td>CVE-2018-9405</td>
- <td>A-72314804<a href="#asterisk">*</a><br />
- M-ALPS03762818</td>
+ <td>A-72314804<a href="#asterisk">*</a><br />M-ALPS03762818</td>
<td>EoP</td>
<td>中</td>
<td>DmAgent</td>
</tr>
<tr>
<td>CVE-2018-9406</td>
- <td>A-70726950<a href="#asterisk">*</a><br />
- M-ALPS03684231</td>
+ <td>A-70726950<a href="#asterisk">*</a><br />M-ALPS03684231</td>
<td>ID</td>
<td>中</td>
<td>NlpService</td>
</tr>
<tr>
<td>CVE-2018-9407</td>
- <td>A-70728406<a href="#asterisk">*</a><br />
- M-ALPS03902529</td>
+ <td>A-70728406<a href="#asterisk">*</a><br />M-ALPS03902529</td>
<td>ID</td>
<td>中</td>
<td>emmc</td>
</tr>
<tr>
<td>CVE-2018-9408</td>
- <td>A-70729980<a href="#asterisk">*</a><br />
- M-ALPS03693684</td>
+ <td>A-70729980<a href="#asterisk">*</a><br />M-ALPS03693684</td>
<td>ID</td>
<td>中</td>
<td>GPS</td>
@@ -498,24 +475,21 @@
</tr>
<tr>
<td>CVE-2017-15824</td>
- <td>A-68163089<a href="#asterisk">*</a><br />
- QC-CR#2107596</td>
+ <td>A-68163089<a href="#asterisk">*</a><br />QC-CR#2107596</td>
<td>ID</td>
<td>中</td>
<td>EDK2 引导加载程åº</td>
</tr>
<tr>
<td>CVE-2018-5897</td>
- <td>A-70528036<a href="#asterisk">*</a><br />
- QC-CR#2172685</td>
+ <td>A-70528036<a href="#asterisk">*</a><br />QC-CR#2172685</td>
<td>ID</td>
<td>中</td>
<td>diag</td>
</tr>
<tr>
<td>CVE-2018-5895</td>
- <td>A-70293535<a href="#asterisk">*</a><br />
- QC-CR#2161027</td>
+ <td>A-70293535<a href="#asterisk">*</a><br />QC-CR#2161027</td>
<td>ID</td>
<td>中</td>
<td>qcacld</td>
@@ -531,8 +505,7 @@
<tr>
<td>CVE-2018-3577</td>
<td>A-72957387<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=cf1c43ce8840021d2907afaa6c514e6971d7ebac">
-QC-CR#2129566</a></td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=cf1c43ce8840021d2907afaa6c514e6971d7ebac">QC-CR#2129566</a></td>
<td>ID</td>
<td>中</td>
<td>WLAN</td>
@@ -540,8 +513,7 @@ QC-CR#2129566</a></td>
<tr>
<td>CVE-2017-15824</td>
<td>A-68992463<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=6ad7ccfee4f78d23b4b8f5ebda0eef54dced32e3">
-QC-CR#2107596</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=6ad7ccfee4f78d23b4b8f5ebda0eef54dced32e3">QC-CR#2107596</a></td>
<td>ID</td>
<td>中</td>
<td>引导加载程åº</td>
@@ -549,8 +521,7 @@ QC-CR#2107596</a></td>
<tr>
<td>CVE-2017-14893</td>
<td>A-68992461<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=c8dc3bf07ee909e6e57ad7887f9d3c0ffa5df795">
-QC-CR#2104835</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=c8dc3bf07ee909e6e57ad7887f9d3c0ffa5df795">QC-CR#2104835</a></td>
<td>ID</td>
<td>中</td>
<td>引导加载程åº</td>
@@ -558,8 +529,7 @@ QC-CR#2104835</a></td>
<tr>
<td>CVE-2017-14872</td>
<td>A-68992457<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=1daa83baa41d1e6291e89f69e6487695b6890c01">
-QC-CR#2073366</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=1daa83baa41d1e6291e89f69e6487695b6890c01">QC-CR#2073366</a></td>
<td>ID</td>
<td>中</td>
<td>引导加载程åº</td>
@@ -567,24 +537,21 @@ QC-CR#2073366</a></td>
<tr>
<td>CVE-2018-5893</td>
<td>A-74237664<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=4cc54a30958d2a8d989364aa45a27fde3dd17352">
-QC-CR#2146949</a></td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=4cc54a30958d2a8d989364aa45a27fde3dd17352">QC-CR#2146949</a></td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
</tr>
<tr>
<td>CVE-2016-5342ã€CVE-2016-5080</td>
- <td>A-72232294<a href="#asterisk">*</a><br />
- QC-CR#1032174</td>
+ <td>A-72232294<a href="#asterisk">*</a><br />QC-CR#1032174</td>
<td>EoP</td>
<td>中</td>
<td>WLAN 驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-5899</td>
- <td>A-71638332<a href="#asterisk">*</a><br />
- QC-CR#1040612</td>
+ <td>A-71638332<a href="#asterisk">*</a><br />QC-CR#1040612</td>
<td>EoP</td>
<td>中</td>
<td>WLAN 驱动程åº</td>
@@ -592,8 +559,7 @@ QC-CR#2146949</a></td>
<tr>
<td>CVE-2018-5890</td>
<td>A-71501675<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=c9c8de8000ff32f8d1e24e697d861d92d8ed0b7a">
-QC-CR#2127348</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=c9c8de8000ff32f8d1e24e697d861d92d8ed0b7a">QC-CR#2127348</a></td>
<td>EoP</td>
<td>中</td>
<td>引导加载程åº</td>
@@ -601,8 +567,7 @@ QC-CR#2127348</a></td>
<tr>
<td>CVE-2018-5889</td>
<td>A-71501674<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=a95ca8e2eeb8a030e977f033cff122cad408158c">
-QC-CR#2127341</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=a95ca8e2eeb8a030e977f033cff122cad408158c">QC-CR#2127341</a></td>
<td>EoP</td>
<td>中</td>
<td>引导加载程åº</td>
@@ -610,8 +575,7 @@ QC-CR#2127341</a></td>
<tr>
<td>CVE-2018-5888</td>
<td>A-71501672<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=5388803fa6d004382f4a857056ce06d963698d9c">
-QC-CR#2127312</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=5388803fa6d004382f4a857056ce06d963698d9c">QC-CR#2127312</a></td>
<td>EoP</td>
<td>中</td>
<td>引导加载程åº</td>
@@ -619,32 +583,28 @@ QC-CR#2127312</a></td>
<tr>
<td>CVE-2018-5887</td>
<td>A-71501669<br />
- <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=c8415f6f2271008aef5056689950236df627d9b1">
-QC-CR#2127305</a></td>
+ <a href="https://source.codeaurora.org/quic/la/abl/tianocore/edk2/commit/?id=c8415f6f2271008aef5056689950236df627d9b1">QC-CR#2127305</a></td>
<td>EoP</td>
<td>中</td>
<td>引导加载程åº</td>
</tr>
<tr>
<td>CVE-2018-5898</td>
- <td>A-71363804<a href="#asterisk">*</a><br />
- QC-CR#2173850</td>
+ <td>A-71363804<a href="#asterisk">*</a><br />QC-CR#2173850</td>
<td>EoP</td>
<td>中</td>
<td>QC 音频驱动程åº</td>
</tr>
<tr>
<td>CVE-2018-5832</td>
- <td>A-69065862<a href="#asterisk">*</a><br />
- QC-CR#2149998</td>
+ <td>A-69065862<a href="#asterisk">*</a><br />QC-CR#2149998</td>
<td>EoP</td>
<td>中</td>
<td>Camerav2</td>
</tr>
<tr>
<td>CVE-2018-5857</td>
- <td>A-62536960<a href="#asterisk">*</a><br />
- QC-CR#2169403</td>
+ <td>A-62536960<a href="#asterisk">*</a><br />QC-CR#2169403</td>
<td>EoP</td>
<td>中</td>
<td>wcd_cpe_core</td>
@@ -652,8 +612,7 @@ QC-CR#2127305</a></td>
<tr>
<td>CVE-2018-3597</td>
<td>A-74237782<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=e569b915a246627d0449016408a9c0d388ee4ab4">
-QC-CR#2143070</a></td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=e569b915a246627d0449016408a9c0d388ee4ab4">QC-CR#2143070</a></td>
<td>EoP</td>
<td>中</td>
<td>DSP_Services</td>
@@ -661,8 +620,7 @@ QC-CR#2143070</a></td>
<tr>
<td>CVE-2018-3564</td>
<td>A-72957546<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=782cd411398e3cf2aca1615ab2649df0c46920ee">
-QC-CR#2062648</a></td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=782cd411398e3cf2aca1615ab2649df0c46920ee">QC-CR#2062648</a></td>
<td>EoP</td>
<td>中</td>
<td>DSP_Services</td>
diff --git a/zh-cn/security/bulletin/pixel/2018-07-01.html b/zh-cn/security/bulletin/pixel/2018-07-01.html
index 64fc5bea..2fe2eb2e 100644
--- a/zh-cn/security/bulletin/pixel/2018-07-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-07-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>å‘布时间:2018 å¹´ 7 月 2 æ—¥</em></p>
+<p><em>å‘布时间:2018 å¹´ 7 月 2 æ—¥ | 更新时间:2018 å¹´ 7 月 3 æ—¥</em></p>
<p>
本 Pixel/Nexus 安全公告详细介ç»äº†ä¼šå½±å“<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">å—支æŒçš„ Google Pixel å’Œ Nexus 设备</a>(Google 设备)的安全æ¼æ´žå’ŒåŠŸèƒ½æ”¹è¿›ã€‚
@@ -58,21 +58,21 @@
</tr>
<tr>
<td>CVE-2018-9426</td>
- <td>A-79148652</td>
+ <td><a href="https://android.googlesource.com/platform/external/bouncycastle/+/129a20459ea828c1b05f0d5da57f69a2a3212ad7">A-79148652</a></td>
<td>ID</td>
<td>中</td>
<td>7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9376</td>
- <td>A-69981755</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/e6655cb8a78b757e9329b8200a90746ffac3a5a9">A-69981755</a></td>
<td>EoP</td>
<td>中</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9434</td>
- <td>A-29833520</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/ab1fb955acc8bbe6b9086a4ab54beab003a887a9">A-29833520</a> [<a href="https://android.googlesource.com/platform/frameworks/native/+/c4b7338b1a0995222d229a6f794db02c974ba0d8">2</a>]</td>
<td>ID</td>
<td>中</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
@@ -96,14 +96,14 @@
</tr>
<tr>
<td>CVE-2018-9429</td>
- <td>A-73927042</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/7306d8b37c00729dc41d663a4b244a00209d537b">A-73927042</a></td>
<td>ID</td>
<td>中</td>
<td>8.1</td>
</tr>
<tr>
<td>CVE-2018-9423</td>
- <td>A-77599438</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/e46e5994a80c31f6533384f0f325555f3a87bee3">A-77599438</a></td>
<td>ID</td>
<td>中</td>
<td>7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
@@ -127,35 +127,35 @@
</tr>
<tr>
<td>CVE-2018-9413</td>
- <td>A-73782082</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/97eb2f9cfba4f38d64dffa0558f1c4c3aa91b4f8">A-73782082</a></td>
<td>RCE</td>
<td>中</td>
<td>7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9418</td>
- <td>A-73824150</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/8e702ed3539caac44a616243e33aaad1b2b4801f">A-73824150</a></td>
<td>RCE</td>
<td>中</td>
<td>7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9430</td>
- <td>A-73963551</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/605ebb3369b3f961196815065a9fe4ba5bc4d659">A-73963551</a></td>
<td>RCE</td>
<td>中</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9414</td>
- <td>A-78787521</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Bluetooth/+/98ff9fe7db5a25fa2c772a85f0b9baa3545228bf">A-78787521</a></td>
<td>EoP</td>
<td>中</td>
<td>6.0ã€6.0.1ã€7.0ã€7.1.1ã€7.1.2ã€8.0ã€8.1</td>
</tr>
<tr>
<td>CVE-2018-9431</td>
- <td>A-77600924</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/5c23facbf802c9b4c88ceb60e1b782abcc55ddc9">A-77600924</a></td>
<td>EoP</td>
<td>中</td>
<td>8.0ã€8.1</td>
@@ -297,8 +297,7 @@
<tr>
<td>CVE-2018-5858</td>
<td>A-77528653<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=78193fa06b267c1d6582e5e6f9fb779cf067015e">QC-CR#2174725</a>
- [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cd1f0cdd4715e8eae4066bd34df2eef4cf94bd7f">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=78193fa06b267c1d6582e5e6f9fb779cf067015e">QC-CR#2174725</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cd1f0cdd4715e8eae4066bd34df2eef4cf94bd7f">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>音频</td>
@@ -456,6 +455,11 @@
<td>2018 年 7 月 2 日</td>
<td>å‘布了本公告。</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 7 月 3 日</td>
+ <td>在本公告中添加了 AOSP 链接。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/2018.html b/zh-cn/security/bulletin/pixel/2018.html
index 47d5c1f7..81e67b79 100644
--- a/zh-cn/security/bulletin/pixel/2018.html
+++ b/zh-cn/security/bulletin/pixel/2018.html
@@ -34,9 +34,23 @@
<th>安全补ä¸ç¨‹åºçº§åˆ«</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/pixel/2018-07-01.html">2018 年 7 月</a></td>
+ <td>å³å°†å‘布<!--
+ <a href="/security/bulletin/pixel/2018-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">руÌÑÑкий</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">中文&nbsp;(å°ç£)</a>
+ -->
+ </td>
+ <td>2018 年 7 月 2 日</td>
+ <td>2018-07-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/pixel/2018-06-01.html">2018 年 6 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-06-01.html">English</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-06-01.html">English</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 6 月 4 日</td>
<td>2018-06-05</td>
@@ -44,15 +58,15 @@
<tr>
<td><a href="/security/bulletin/pixel/2018-05-01.html">2018 年 5 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-05-01.html">English</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-05-01.html">English</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 5 月 7 日</td>
<td>2018-05-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-04-01.html">2018年 4 月</a></td>
+ <td><a href="/security/bulletin/pixel/2018-04-01.html">2018 年 4 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-04-01.html">English</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-04-01.html">English</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 4 月 2 日</td>
<td>2018-04-05</td>
@@ -60,9 +74,7 @@
<tr>
<td><a href="/security/bulletin/pixel/2018-03-01.html">2018 年 3 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-03-01.html">English</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">руÌÑÑкий</a> / <!--
- <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- --><a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-03-01.html">English</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 3 月</td>
<td>2018-03-05</td>
@@ -70,7 +82,7 @@
<tr>
<td><a href="/security/bulletin/pixel/2018-02-01.html">2018 年 2 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-02-01.html">English</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-02-01.html">English</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 2 月</td>
<td>2018-02-05</td>
@@ -78,7 +90,7 @@
<tr>
<td><a href="/security/bulletin/pixel/2018-01-01.html">2018 年 1 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-01-01.html">English</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-01-01.html">English</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 1 月</td>
<td>2018-01-05</td>
diff --git a/zh-cn/security/bulletin/pixel/index.html b/zh-cn/security/bulletin/pixel/index.html
index 38ed1462..6cd138bb 100644
--- a/zh-cn/security/bulletin/pixel/index.html
+++ b/zh-cn/security/bulletin/pixel/index.html
@@ -43,17 +43,39 @@
<th>安全补ä¸ç¨‹åºçº§åˆ«</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/pixel/2018-07-01.html">2018 年 7 月</a></td>
+ <td>å³å°†å‘布<!--
+ <a href="/security/bulletin/pixel/2018-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">руÌÑÑкий</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">中文&nbsp;(å°ç£)</a>
+ -->
+ </td>
+ <td>2018 年 7 月 2 日</td>
+ <td>2018-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2018-06-01.html">2018 年 6 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-06-01.html">English</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ </td>
+ <td>2018 年 6 月 4 日</td>
+ <td>2018-06-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/pixel/2018-05-01.html">2018 年 5 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-05-01.html">English</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-05-01.html">English</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 5 月 7 日</td>
<td>2018-05-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-04-01.html">2018年 4 月</a></td>
+ <td><a href="/security/bulletin/pixel/2018-04-01.html">2018 年 4 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-04-01.html">English</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-04-01.html">English</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 4 月 2 日</td>
<td>2018-04-05</td>
@@ -61,9 +83,7 @@
<tr>
<td><a href="/security/bulletin/pixel/2018-03-01.html">2018 年 3 月</a></td>
<td>
- <a href="/security/bulletin/pixel/2018-03-01.html">English</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">руÌÑÑкий</a> / <!--
- <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- --> <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文 (å°ç£)</a>
+ <a href="/security/bulletin/pixel/2018-03-01.html">English</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">руÌÑÑкий</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文 (å°ç£)</a>
</td>
<td>2018 年 3 月 5 日</td>
<td>2018-03-05</td>
diff --git a/zh-cn/security/encryption/file-based.html b/zh-cn/security/encryption/file-based.html
index 1c15c585..c68fee46 100644
--- a/zh-cn/security/encryption/file-based.html
+++ b/zh-cn/security/encryption/file-based.html
@@ -77,7 +77,7 @@ Android æ供了文件级加密的å‚考实现,其中 vold (<a href="https://
<ul>
<li>对 EXT4 加密的<strong>内核支æŒ</strong>(内核é…置选项:EXT4_FS_ENCRYPTION)</li><li>基于 1.0 或 2.0 版 HAL çš„ <strong><a href="/security/keystore/index.html">Keymaster 支æŒ</a></strong>。ä¸æ”¯æŒ Keymaster 0.3,因为它既ä¸æ供必è¦çš„功能,也ä¸èƒ½ä¿è¯ä¸ºåŠ å¯†å¯†é’¥æ供充分ä¿æŠ¤ã€‚
-</li><li>必须在<a href="/security/trusty/index.html">å¯ä¿¡æ‰§è¡ŒçŽ¯å¢ƒ</a> (TEE) 中实现 <strong>Keymaster/<a href="/security/keystore/index.html"></a></strong>Keystore å’Œ Gatekeeper,以便为 DE 密钥æä¾›ä¿æŠ¤ï¼Œä»Žè€Œä½¿æœªç»æŽˆæƒçš„æ“作系统(刷到设备上的定制æ“作系统)无法直接请求 DE 密钥。
+</li><li>必须在<a href="/security/trusty/index.html">å¯ä¿¡æ‰§è¡ŒçŽ¯å¢ƒ</a> (TEE) 中实现 <strong>Keymaster/<a href="/security/keystore/index.html">Keystore</a> å’Œ Gatekeeper</strong>,以便为 DE 密钥æä¾›ä¿æŠ¤ï¼Œä»Žè€Œä½¿æœªç»æŽˆæƒçš„æ“作系统(刷到设备上的定制æ“作系统)无法直接请求 DE 密钥。
</li><li>内核<strong>加密性能</strong>å¿…é¡»è¦åœ¨ä½¿ç”¨ AES XTS 时至少达到 50MB/s,以确ä¿è‰¯å¥½çš„用户体验。
</li><li><strong>硬件信任根</strong>å’Œ<strong>验è¯å¯åŠ¨</strong>需è¦ç»‘定到 Keymaster åˆå§‹åŒ–进程,以确ä¿æœªç»æŽˆæƒçš„æ“作系统无法获å–设备加密凭æ®ã€‚</li>
</ul>
diff --git a/zh-cn/security/keystore/tags.html b/zh-cn/security/keystore/tags.html
index 429c52e0..bdcf71fb 100644
--- a/zh-cn/security/keystore/tags.html
+++ b/zh-cn/security/keystore/tags.html
@@ -93,7 +93,7 @@ typedef enum {
<p><strong>版本</strong>:1ã€2ã€3</p>
<p><strong>是å¦å¯é‡å¤ä½¿ç”¨</strong>?å¦</p>
-<p>当æ供给 <a href="/security/keystore/implementer-ref#generate_key">generateKey</a> 或 <a href="/security/keystore/implementer-ref#import_key">importKey</a> 时,此标记用于指定任何时候使用相应密钥时必需的数æ®ã€‚具体æ¥è¯´å°±æ˜¯ï¼Œè°ƒç”¨ <a href="/security/keystore/implementer-ref#export_key">exportKey</a> å’Œ <a href="/security/keystore/implementer-ref#get_key_characteristics">getKeyCharacteristics</a> 时需è¦ä¸º <code>clientId</code> å‚æ•°æ供相åŒçš„值,而调用 <a href="/security/keystore/implementer-ref#begin">begin</a> 时则需è¦æ供此标记以åŠç›¸åŒçš„相关数æ®ï¼ˆä½œä¸º <code>inParams</code> 集的一部分)。如果未收到正确的数æ®ï¼Œåˆ™è¯¥å‡½æ•°ä¼šè¿”回 <code>ErrorCode::INVALID_KEY_BLOB</code>。</p>
+<p>将此标记æ供给 <a href="/security/keystore/implementer-ref#generate_key">generateKey</a> 或 <a href="/security/keystore/implementer-ref#import_key">importKey</a> 时,此标记å¯ç”¨äºŽæŒ‡å®šä»»ä½•æ—¶å€™ä½¿ç”¨ç›¸åº”密钥时必需的数æ®ã€‚具体æ¥è¯´å°±æ˜¯ï¼Œè°ƒç”¨ <a href="/security/keystore/implementer-ref#export_key">exportKey</a> å’Œ <a href="/security/keystore/implementer-ref#get_key_characteristics">getKeyCharacteristics</a> 时需è¦ä¸º <code>clientId</code> å‚æ•°æ供相åŒçš„值,而调用 <a href="/security/keystore/implementer-ref#begin">begin</a> 时则需è¦æ供此标记以åŠç›¸åŒçš„相关数æ®ï¼ˆä½œä¸º <code>inParams</code> 集的一部分)。如果未收到正确的数æ®ï¼Œåˆ™è¯¥å‡½æ•°ä¼šè¿”回 <code>ErrorCode::INVALID_KEY_BLOB</code>。</p>
<p>此标记的内容以加密形å¼ç»‘定到相应密钥,这æ„味ç€ï¼Œå¦‚果有ä¸è½¨äººå£«æœ‰æƒè®¿é—®å®‰å…¨åŸŸçš„所有机密内容,但无æƒè®¿é—®æ­¤æ ‡è®°çš„内容,必须è¦ç¡®ä¿ä»–们在ä¸å¯¹æ­¤æ ‡è®°çš„内容进行暴力破解攻击的情况下无法解密相应密钥,应用å¯é€šè¿‡æŒ‡å®šè¶³å¤Ÿçš„高熵内容æ¥é˜²èŒƒè¿™ä¸€è¡Œä¸ºã€‚<em></em></p>
@@ -104,7 +104,7 @@ typedef enum {
<p><strong>版本</strong>:1ã€2ã€3</p>
<p><strong>是å¦å¯é‡å¤ä½¿ç”¨</strong>?å¦</p>
-<p>当æ供给 <a href="/security/keystore/implementer-ref#generate_key">generateKey</a> 或 <a href="/security/keystore/implementer-ref#import_key">importKey</a> 时,此标记用于指定任何时候使用相应密钥时必需的数æ®ã€‚具体æ¥è¯´å°±æ˜¯ï¼Œè°ƒç”¨ <a href="/security/keystore/implementer-ref#export_key">exportKey</a> å’Œ <a href="/security/keystore/implementer-ref#get_key_characteristics">getKeyCharacteristics</a> 时需è¦ä¸º <code>clientId</code> å‚æ•°æ供相åŒçš„值,而调用 <a href="/security/keystore/implementer-ref#begin">begin</a> 时则需è¦æ供此标记以åŠç›¸åŒçš„相关数æ®ï¼ˆä½œä¸º <code>inParams</code> 集的一部分)。如果未收到正确的数æ®ï¼Œåˆ™è¯¥å‡½æ•°ä¼šè¿”回 <code>ErrorCode::INVALID_KEY_BLOB</code>。</p>
+<p>将此标记æ供给 <a href="/security/keystore/implementer-ref#generate_key">generateKey</a> 或 <a href="/security/keystore/implementer-ref#import_key">importKey</a> 时,此标记å¯ç”¨äºŽæŒ‡å®šä»»ä½•æ—¶å€™ä½¿ç”¨ç›¸åº”密钥时必需的数æ®ã€‚具体æ¥è¯´å°±æ˜¯ï¼Œè°ƒç”¨ <a href="/security/keystore/implementer-ref#export_key">exportKey</a> å’Œ <a href="/security/keystore/implementer-ref#get_key_characteristics">getKeyCharacteristics</a> 时需è¦ä¸º <code>clientId</code> å‚æ•°æ供相åŒçš„值,而调用 <a href="/security/keystore/implementer-ref#begin">begin</a> 时则需è¦æ供此标记以åŠç›¸åŒçš„相关数æ®ï¼ˆä½œä¸º <code>inParams</code> 集的一部分)。如果未收到正确的数æ®ï¼Œåˆ™è¯¥å‡½æ•°ä¼šè¿”回 <code>ErrorCode::INVALID_KEY_BLOB</code>。</p>
<p>此标记的内容以加密形å¼ç»‘定到相应密钥,这æ„味ç€ï¼Œå³ä½¿æœ‰ä¸è½¨äººå£«æœ‰æƒè®¿é—®å®‰å…¨åŸŸçš„所有机密内容,也应无æƒè®¿é—®æ­¤æ ‡è®°çš„内容,必须è¦ç¡®ä¿ä»–们无法解密相应密钥(在ä¸å¯¹æ­¤æ ‡è®°çš„内容进行暴力破解攻击的情况下)。<em></em></p>
@@ -206,14 +206,14 @@ typedef enum {
<p>用于指定授æƒåœ¨å¤šé•¿æ—¶é—´å†…使用相应密钥(以秒数计,从通过身份验è¯å¼€å§‹ç®—起)。如果 <a href="#user_secure_id">Tag::USER_SECURE_ID</a> 存在而此标记ä¸å­˜åœ¨ï¼Œé‚£ä¹ˆæ¯æ¬¡ä½¿ç”¨ç›¸åº”密钥时都需è¦é€šè¿‡èº«ä»½éªŒè¯ï¼ˆè¦è¯¦ç»†äº†è§£å„项æ“作的身份验è¯æµç¨‹ï¼Œè¯·å‚阅 <a href="/security/keystore/implementer-ref#begin">begin</a>)。</p>
-<p>此标记的值是一个 32 ä½çš„整数,用于指定å¯åœ¨å¤šé•¿æ—¶é—´å†…使用相应密钥(以秒数计,从使用通过 <a href="#user_secure_id">Tag::USER_AUTH_TYPE</a> 指定的身份验è¯æ–¹æ³•å¯¹é€šè¿‡ <a href="#mac_length">Tag::USER_SECURE_ID</a> 指定的用户æˆåŠŸè¿›è¡Œèº«ä»½éªŒè¯åŽå¼€å§‹ç®—起)。</p>
+<p>此标记的值是一个 32 ä½çš„整数,用于指定å¯åœ¨å¤šé•¿æ—¶é—´å†…使用相应密钥(以秒数计,从使用通过 <a href="#mac_length">Tag::USER_AUTH_TYPE</a> 指定的身份验è¯æ–¹æ³•å¯¹é€šè¿‡ <a href="#user_secure_id">Tag::USER_SECURE_ID</a> 指定的用户æˆåŠŸè¿›è¡Œèº«ä»½éªŒè¯åŽå¼€å§‹ç®—起)。</p>
<h2 id="auth_token">Tag::AUTH_TOKEN</h2>
<p><strong>版本</strong>:1ã€2ã€3</p>
<p><strong>是å¦å¯é‡å¤ä½¿ç”¨</strong>?å¦</p>
-<p>ç”¨äºŽå‘ <a href="/security/keystore/implementer-ref#begin">begin</a>ã€<a href="/security/keystore/implementer-ref#update">update</a> 或 <a href="/security/keystore/implementer-ref#finish">finish</a> æä¾›<a href="/security/keystore/authentication/#authentication_token_format">身份验è¯ä»¤ç‰Œ</a>,以便å‘è¦æ±‚用户通过身份验è¯çš„密钥æ“作(密钥带有 <a href="#user_secure_id">Tag::USER_SECURE_ID</a>)è¯æ˜Žç›¸åº”用户已通过身份验è¯ã€‚</p>
+<p>ç”¨äºŽå‘ <a href="/security/keystore/authentication/#authentication_token_format">begin</a>ã€<a href="/security/keystore/implementer-ref#begin">update</a> 或 <a href="/security/keystore/implementer-ref#update">finish</a> æä¾›<a href="/security/keystore/implementer-ref#finish">身份验è¯ä»¤ç‰Œ</a>,以便å‘è¦æ±‚用户通过身份验è¯çš„密钥æ“作(密钥带有 <a href="#user_secure_id">Tag::USER_SECURE_ID</a>)è¯æ˜Žç›¸åº”用户已通过身份验è¯ã€‚</p>
<p>æ­¤æ ‡è®°çš„å€¼æ˜¯ä¸€ä¸ªåŒ…å« <code>hw_auth_token_t</code> 结构的 Blob。</p>
@@ -275,7 +275,7 @@ typedef enum {
} keymaster_block_mode_t;
</pre>
-<p>此标记å¯é‡å¤ä½¿ç”¨ï¼›å¯¹äºŽ AES 密钥æ“作,è¦åœ¨ <a href="/security/keystore/implementer-ref#begin">begin</a> çš„ <code>additionalParams</code> å‚数中指定模å¼ã€‚
+<p>此标记å¯é‡å¤ä½¿ç”¨ï¼›å¯¹äºŽ AES 密钥æ“作,请在 <a href="/security/keystore/implementer-ref#begin">bigin</a> çš„ <code>additionalParams</code> å‚数中指定模å¼ã€‚
如果指定的模å¼ä¸åœ¨ç›¸åº”密钥的关è”模å¼ä¹‹åˆ—,æ“作会失败并显示 <code>ErrorCode::INCOMPATIBLE_BLOCK_MODE</code>。</p>
<h2 id="bootloader_only">Tag::BOOTLOADER_ONLY</h2>
diff --git a/zh-cn/security/overview/acknowledgements.html b/zh-cn/security/overview/acknowledgements.html
index e78ea0f3..c25e064c 100644
--- a/zh-cn/security/overview/acknowledgements.html
+++ b/zh-cn/security/overview/acknowledgements.html
@@ -25,6 +25,163 @@
<h2 id="2018">2018 å¹´</h2>
<p>2018 年的安全致谢信æ¯å°†æŒ‰æœˆåˆ—出。过去几年的致谢信æ¯æ˜¯åˆ—在一起的。</p>
+<h4 id="july-2018">7 月</h4>
+ <table>
+ <colgroup><col width="70%" />
+ <col width="30%" />
+ </colgroup><tbody><tr>
+ <th>研究人员</th>
+ <th>CVE</th>
+ </tr>
+ <tr>
+ <td>阿里巴巴安全团队潘多拉实验室的 Baozeng Ding (ä¸ä¿å¢ž) (<a href="https://twitter.com/sploving1">@sploving</a>)</td>
+ <td>CVE-2018-9422</td>
+ </tr>
+ <tr>
+ <td>Android 安全研究团队的 Billy Lau</td>
+ <td>CVE-2018-9416</td>
+ </tr>
+ <tr>
+ <td>L.O. 团队的 Cusas</td>
+ <td>CVE-2018-9412</td>
+ </tr>
+ <tr>
+ <td><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) 和 Bo Liu</td>
+ <td>CVE-2018-9432ã€CVE-2018-9414</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的龚广</td>
+ <td>CVE-2018-9433</td>
+ </tr>
+ <tr>
+ <td>Google Project Zero çš„ Jann Horn</td>
+ <td>CVE-2018-9434</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的 Jianjun Dai (<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) 和龚广 (<a href="https://twitter.com/oldfresher">@oldfresher</a>)</td>
+ <td>CVE-2018-9418ã€CVE-2018-9413ã€CVE-2018-9365</td>
+ </tr>
+ <tr>
+ <td>特斯拉产å“安全团队的 Nathan Crandall (<a href="https://twitter.com/natecray">@natecray</a>)</td>
+ <td>CVE-2017-0606</td>
+ </tr>
+ <tr>
+ <td>niky1235(<a href="mailto:jiych.guru&#64;gmail.com">jiych.guru@gmail.com</a>ã€<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
+ <td>CVE-2018-9423</td>
+ </tr>
+ <tr>
+ <td>Scott Bauer (<a href="https://twitter.com/ScottyBauer1">@ScottyBauer1</a>)</td>
+ <td>CVE-2018-9430</td>
+ </tr>
+ <tr>
+ <td>Zimperium zLabs 团队的 Tamir Zahavi-Brunner (<a href="https://twitter.com/tamir_zb">@tamir_zb</a>)</td>
+ <td>CVE-2018-9411</td>
+ </tr>
+ <tr>
+ <td>Tencent Blade 团队</td>
+ <td>CVE-2018-9421ã€CVE-2018-9420</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ IceSword 实验室的 Yonggang Guo (<a href="https://twitter.com/guoygang">@guoygang</a>)</td>
+ <td>CVE-2018-9415</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸æˆéƒ½å®‰å…¨å“应中心的 Zinuo Han (<a href="http://weibo.com/ele7enxxh">weibo.com/ele7enxxh</a>)</td>
+ <td>CVE-2018-9410ã€CVE-2018-9424ã€CVE-2018-9431</td>
+ </tr>
+</tbody></table>
+
+<h4 id="june-2018">6 月</h4>
+<table>
+ <colgroup><col width="70%" />
+ <col width="30%" />
+ </colgroup><tbody><tr>
+ <th>研究人员</th>
+ <th>CVE</th>
+ </tr>
+ <tr>
+ <td>阿里巴巴安全团队潘多拉实验室的 Baozeng Ding (ä¸ä¿å¢ž) (<a href="https://twitter.com/sploving1">@sploving1</a>)</td>
+ <td>CVE-2018-5857ã€CVE-2018-9389</td>
+ </tr>
+ <tr>
+ <td>IOActive çš„ Daniel Kachakil</td>
+ <td>CVE-2018-9375</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的 Elphet 和龚广</td>
+ <td>CVE-2018-9348</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的 Hao Chen 和龚广</td>
+ <td>CVE-2018-5899</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的 Jianjun Dai (<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) 和龚广 (<a href="https://twitter.com/oldfresher">@oldfresher</a>)</td>
+ <td>CVE-2018-9381ã€CVE-2018-9358,<br />CVE-2018-9359ã€CVE-2018-9360,<br />CVE-2018-9361ã€CVE-2018-9357,<br />CVE-2018-9356</td>
+ </tr>
+ <tr>
+ <td>joe0x20@gmail.com</td>
+ <td>CVE-2018-5898</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.linkedin.com/in/jose-maria-ariel-martinez-juarez-7910a189/">
+ Jose Martinez</a></td>
+ <td>CVE-2018-5146</td>
+ </tr>
+ <tr>
+ <td><a href="http://protektoid.com/">Protektoid.com</a> çš„ Julien Thomas (<a href="https://twitter.com/julien_thomas">@Julien_Thomas</a>)</td>
+ <td>CVE-2018-9374</td>
+ </tr>
+ <tr>
+ <td><a href="https://github.com/michalbednarski">Michał Bednarski</a></td>
+ <td>CVE-2018-9339</td>
+ </tr>
+ <tr>
+ <td>C0RE 团队的 Mingjian Zhou (周明建) (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
+ <td>CVE-2018-9344</td>
+ </tr>
+ <tr>
+ <td>Niky1235 (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
+ <td>CVE-2017-13230ã€CVE-2018-9347</td>
+ </tr>
+ <tr>
+ <td>百度安全实验室的ä¸é¹é£žã€åŒ…沉浮和韦韬<br /></td>
+ <td>CVE-2018-5832</td>
+ </tr>
+ <tr>
+ <td>360 Beaconlab 的清东</td>
+ <td>CVE-2018-9386</td>
+ </tr>
+ <tr>
+ <td>Scott Bauer (<a href="https://twitter.com/ScottyBauer1">@ScottyBauer1</a>)</td>
+ <td>CVE-2018-9388ã€CVE-2018-9355ã€<br />CVE-2018-9380</td>
+ </tr>
+ <tr>
+ <td><a href="https://srlabs.de/">安全研究实验室</a>的 <a href="https://github.com/stze">Stephan Zeisberg</a></td>
+ <td>CVE-2018-9350ã€CVE-2018-9352ã€<br />CVE-2018-9353ã€CVE-2018-9341</td>
+ </tr>
+ <tr>
+ <td>Tencent Blade 团队</td>
+ <td>CVE-2018-9345ã€CVE-2018-9346</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸ IceSword 实验室的 Yonggang Guo (<a href="https://twitter.com/guoygang">@guoygang</a>)</td>
+ <td>CVE-2017-0564</td>
+ </tr>
+ <tr>
+ <td>C0RE 团队的 Yuan-Tsung Lo</td>
+ <td>CVE-2017-13079ã€CVE-2017-13081</td>
+ </tr>
+ <tr>
+ <td>åŽä¸ºç§»åŠ¨å®‰å…¨å®žéªŒå®¤çš„钱育波</td>
+ <td>CVE-2018-9363</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有é™å…¬å¸æˆéƒ½å®‰å…¨å“应中心的 Zinuo Han</td>
+ <td>CVE-2018-9340ã€CVE-2018-9338ã€<br />CVE-2018-9378</td>
+ </tr>
+</tbody></table>
+
<h4 id="may-2018">5 月</h4>
<table>
<colgroup><col width="70%" />
@@ -46,7 +203,7 @@
<td>CVE-2017-18153</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org">C0RE 团队</a>的 <a href="mailto:arnow117@gmail.com">Hanxiang Wen</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
+ <td><a href="http://c0reteam.org">C0RE</a> 团队的 <a href="mailto:arnow117@gmail.com">Hanxiang Wen</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
<td>CVE-2017-18154</td>
</tr>
<tr>
@@ -124,7 +281,6 @@
</tr>
<tr>
<td><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) 和 Bo Liu
-
</td>
<td>CVE-2017-13294
</td>
@@ -154,7 +310,7 @@
</td>
</tr>
<tr>
- <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的 Jianjun Dai (<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) å’Œ Guang Gong
+ <td>奇虎 360 科技有é™å…¬å¸ Alpha 团队的 Jianjun Dai (<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) 和龚广
</td>
<td>CVE-2017-13291ã€CVE-2017-13283ã€CVE-2017-13282ã€CVE-2017-13281ã€CVE-2017-13267
</td>
@@ -253,12 +409,12 @@
<td>CVE-2017-13258</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org">C0RE 团队</a>çš„ Hongli Han (<a href="https://twitter.com/hexb1n">@HexB1n</a>)ã€<a href="mailto:shaodacheng2016@gmail.com">Dacheng Shao</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
+ <td><a href="http://c0reteam.org">C0RE 团队</a>çš„ Hongli Han (<a href="https://twitter.com/hexb1n">@hexb1n</a>)ã€<a href="mailto:shaodacheng2016@gmail.com">Dacheng Shao</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
<td>CVE-2017-6287</td>
</tr>
<tr>
<td><a href="http://c0reteam.org">C0RE 团队</a>的 Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>) 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
- <td>CVE-2017-6286ã€CVE-2017-6285ã€CVE-2017-6281</td>
+ <td>CVE-2017-6286ã€CVE-2017-6285,<br />CVE-2017-6281</td>
</tr>
<tr>
<td>百度安全实验室的ä¸é¹é£žã€åŒ…沉浮和韦韬</td>
@@ -277,7 +433,7 @@
<td>CVE-2017-13249ã€CVE-2017-13248ã€CVE-2017-13264</td>
</tr>
<tr>
- <td>èš‚èšé‡‘æœå·´æ–¯å…‰å¹´å®‰å…¨å®žéªŒå®¤çš„<a href="http://www.weibo.com/wishlinux">å´æ½æµ </a> (<a href=" https://twitter.com/wish_wu">@wish_wu</a>)</td>
+ <td>èš‚èšé‡‘æœå·´æ–¯å…‰å¹´å®‰å…¨å®žéªŒå®¤çš„<a href="http://www.weibo.com/wishlinux">å´æ½æµ </a> (<a href=" https://twitter.com/wish_wu">@wish_wu</a></td>
<td>CVE-2017-13259ã€CVE-2017-13272</td>
</tr>
<tr>
@@ -350,7 +506,7 @@
</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org">CORE 团队</a>çš„ Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>)ã€å‘¨æ˜Žå»º (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)
+ <td><a href="http://c0reteam.org">C0RE 团队</a>çš„ Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>)ã€å‘¨æ˜Žå»º (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)
</td>
<td>CVE-2017-17767ã€CVE-2017-6279
</td>
@@ -368,7 +524,7 @@
</td>
</tr>
<tr>
- <td><a href="mailto:jiych.guru@gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)
+ <td><a href="mailto:jiych.guru&#64;gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)
</td>
<td>CVE-2017-13230ã€CVE-2017-13234
</td>
@@ -473,7 +629,7 @@
<td>CVE-2017-13184ã€CVE-2017-13201</td>
</tr>
<tr>
- <td><a href="mailto:jiych.guru@gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
+ <td><a href="mailto:jiych.guru&#64;gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
<td>CVE-2017-0855ã€CVE-2017-13195ã€CVE-2017-13181</td>
</tr>
<tr>
@@ -708,7 +864,8 @@
<td>CVE-2017-0496</td>
</tr>
<tr>
- <td><a href="http://tuncay2.web.engr.illinois.edu/">伊利诺伊大学厄巴纳-尚佩æ©åˆ†æ ¡</a>çš„ <a href="https://www.linkedin.com/in/g%C3%BCliz-seray-tuncay-952a1b9/">Güliz Seray Tuncay</a></td>
+ <td>
+ <a href="http://tuncay2.web.engr.illinois.edu/">伊利诺伊大学厄巴纳-尚佩æ©åˆ†æ ¡</a>çš„ <a href="https://www.linkedin.com/in/g%C3%BCliz-seray-tuncay-952a1b9/">Güliz Seray Tuncay</a></td>
<td>CVE-2017-0593</td>
</tr>
<tr>
@@ -784,7 +941,8 @@
<td>CVE-2016-8461ã€CVE-2016-8462</td>
</tr>
<tr>
- <td><a href="https://www.linkedin.com/in/jose-maria-ariel-martinez-juarez-7910a189/">Jose Martinez</a></td>
+ <td><a href="https://www.linkedin.com/in/jose-maria-ariel-martinez-juarez-7910a189/">
+ Jose Martinez</a></td>
<td>CVE-2017-0841</td>
</tr>
<tr>
@@ -880,7 +1038,7 @@
<td>CVE-2016-5552</td>
</tr>
<tr>
- <td><a href="mailto:jiych.guru@gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
+ <td><a href="mailto:jiych.guru&#64;gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
<td>CVE-2017-0603ã€CVE-2017-0670ã€CVE-2017-0697ã€CVE-2017-0726ã€CVE-2017-0818</td>
</tr>
<tr>
@@ -1668,11 +1826,12 @@
<p><a href="http://www.search-lab.hu/">Search-Lab Ltd.</a> çš„ Imre Rad</p>
-<p><a href="http://thejh.net/">Jann Horn</a> <a href="https://android-review.googlesource.com/#/c/98197/">
+<p><a href="http://thejh.net/">Jann Horn</a>
+<a href="https://android-review.googlesource.com/#/c/98197/">
<img style="vertical-align:middle;" src="../images/tiny-robot.png" alt="绿色机器人补ä¸ç¨‹åºç¬¦å·" title="此人贡献了有助于æ高 Android 安全性的代ç "/>
</a></p>
-<p><a href="http://www.bluebox.com/">Bluebox Security</a> çš„ Jeff Forristal</p>
+<p><a href="http://www.bluebox.com/">Bluebox Security</a> çš„ Jeff Forrista</p>
<p><a href="https://labs.mwrinfosecurity.com/">MWR 实验室</a>的 <a href="http://blog.redfern.me/">Joseph Redfern</a> <br />(<a href="https://twitter.com/JosephRedfern">@JosephRedfern</a>)</p>
@@ -1748,7 +1907,7 @@ William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gm
</div>
-<h2 id="2013">2013 å¹´</h2>
+<h2 id="2013">2013</h2>
<div style="LINE-HEIGHT:25px;">
@@ -1797,7 +1956,7 @@ William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gm
</div>
-<h2 id="2012">2012 å¹´</h2>
+<h2 id="2012">2012</h2>
<div style="LINE-HEIGHT:25px;">
@@ -1824,7 +1983,7 @@ William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gm
</div>
-<h2 id="2011">2011 å¹´</h2>
+<h2 id="2011">2011</h2>
<div style="LINE-HEIGHT:25px;">
diff --git a/zh-cn/setup/build/building.html b/zh-cn/setup/build/building.html
index 2c62be3a..dc2cd27e 100644
--- a/zh-cn/setup/build/building.html
+++ b/zh-cn/setup/build/building.html
@@ -61,27 +61,32 @@ lunch aosp_arm-eng
<p>如果您没有æ供任何å‚æ•°å°±è¿è¡Œå‘½ä»¤ï¼Œ<code>lunch</code> å°†æ示您从èœå•ä¸­é€‰æ‹©ä¸€ä¸ªç›®æ ‡ã€‚</p>
<p>所有编译目标都采用 <code>BUILD-BUILDTYPE</code> å½¢å¼ï¼Œå…¶ä¸­ <code>BUILD</code> 是表示特定功能组åˆçš„代å·ã€‚<code>BUILDTYPE</code> 是以下类型之一:</p>
<table>
-<thead>
-<tr>
-<th>编译类型</th>
-<th>使用情况</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>user</td>
-<td>æƒé™å—é™ï¼›é€‚用于生产环境</td>
-</tr>
-<tr>
-<td>userdebug</td>
-<td>与“userâ€ç±»ä¼¼ï¼Œä½†å…·æœ‰ root æƒé™å’Œå¯è°ƒè¯•æ€§ï¼›æ˜¯è¿›è¡Œè°ƒè¯•æ—¶çš„首选编译类型</td>
-</tr>
-<tr>
-<td>eng</td>
-<td>具有é¢å¤–调试工具的开å‘é…ç½®</td>
-</tr>
-</tbody>
+ <thead>
+ <tr>
+ <th>编译类型</th>
+ <th>使用情况</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>user</td>
+ <td>æƒé™å—é™ï¼›é€‚用于生产环境</td>
+ </tr>
+ <tr>
+ <td>userdebug</td>
+ <td>与“userâ€ç±»ä¼¼ï¼Œä½†å…·æœ‰ root æƒé™å’Œå¯è°ƒè¯•æ€§ï¼›æ˜¯è¿›è¡Œè°ƒè¯•æ—¶çš„首选编译类型</td>
+ </tr>
+ <tr>
+ <td>eng</td>
+ <td>具有é¢å¤–调试工具的开å‘é…ç½®</td>
+ </tr>
+ </tbody>
</table>
+
+<p>userdebug 版本应和 user 版本以相åŒçš„æ–¹å¼è¿è¡Œï¼Œä¸”能够å¯ç”¨é€šå¸¸ä¼šç ´åå¹³å°å®‰å…¨æ¨¡åž‹çš„é¢å¤–调试。这å¯è®© userdebug 版本具有更强大的诊断功能,从而æˆä¸ºè¿›è¡Œ user 测试的最佳选择。使用 userdebug 版本进行开å‘时,您应éµå¾ª <a href="../develop/new-device.html#userdebug-guidelines">userdebug 准则</a>。</p>
+
+<p>eng 版本会优先考虑平å°è´Ÿè´£å·¥ç¨‹å¸ˆçš„工程生产力。eng 版本会关闭用于æ供良好用户体验的å„ç§ä¼˜åŒ–。å¦åˆ™ï¼Œeng 版本的è¿è¡Œæ–¹å¼å°†ç±»ä¼¼äºŽ user å’Œ userdebug 版本,以便设备开å‘者看到代ç åœ¨è¿™äº›çŽ¯å¢ƒä¸‹çš„è¿è¡Œæ–¹å¼ã€‚</p>
+
<p>è¦è¯¦ç»†äº†è§£å¦‚何针对实际硬件进行编译以åŠå¦‚何在实际硬件上è¿è¡Œç¼–译系统,请å‚阅<a href="running.html">è¿è¡Œç¼–译系统</a>。</p>
<h2 id="build-the-code">编译代ç </h2>
diff --git a/zh-cn/setup/build/devices.html b/zh-cn/setup/build/devices.html
index 19dc014c..ab2e16d8 100644
--- a/zh-cn/setup/build/devices.html
+++ b/zh-cn/setup/build/devices.html
@@ -28,7 +28,7 @@
<h2 id="960hikey">HiKey960 å¼€å‘æ¿</h2>
-<p>HiKey960 å¼€å‘æ¿ç”± LeMaker(通过 <a href="https://www.amazon.com/dp/B071RD3V34" class="external">Amazon.com</a>)和 <a href="http://www.lenovator.com/product/80.html" class="external">Lenovator</a><a> æ供,采用 3GB RAM é…置。
+<p>HiKey960 å¼€å‘æ¿ç”± <a href="https://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Delectronics&field-keywords=hikey960" class="external">Amazon.com</a> å’Œ <a href="http://www.lenovator.com/product/80.html" class="external">Lenovator</a><a> æ供,采用 3GB RAM é…置。
</a></p><a>
<img src="../images/hikey960.png" alt="HiKey960 å¼€å‘æ¿å›¾ç‰‡"/>
@@ -37,8 +37,8 @@
<h3 id="additional-resources">其他资æº</h3>
</a><ul><a>
</a><li><a>
-</a><a href="https://github.com/96boards/documentation/blob/master/consumer/hikey960/hardware-docs/HiKey960_Schematics.pdf" class="external">HiKey960 示æ„图</a>
-</li>
+</a><a href="https://github.com/96boards/documentation/blob/master/consumer/hikey960/hardware-docs/HiKey960_Schematics.pdf" class="external">HiKey960 示æ„图
+</a></li>
<li>
<a href="https://github.com/96boards/documentation/blob/master/consumer/hikey960/hardware-docs/hardware-user-manual.md" class="external">HiKey960 用户指å—</a></li>
<li>
diff --git a/zh-cn/setup/build/running.html b/zh-cn/setup/build/running.html
index 6f7a20f1..3e4c6738 100644
--- a/zh-cn/setup/build/running.html
+++ b/zh-cn/setup/build/running.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>è¿è¡Œç‰ˆæœ¬</title>
+ <title>è¿è¡Œç¼–译系统</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
diff --git a/zh-cn/setup/develop/new-device.html b/zh-cn/setup/develop/new-device.html
index 6964d6c8..8d0ad562 100644
--- a/zh-cn/setup/develop/new-device.html
+++ b/zh-cn/setup/develop/new-device.html
@@ -102,6 +102,21 @@
</tr>
</tbody></table>
+<h3 id="userdebug-guidelines">userdebug 准则</h3>
+
+<p>在测试中è¿è¡Œ userdebug 版本å¯å¸®åŠ©å¼€å‘者了解开å‘中版本的性能和功耗。为了让 user 版本和 userdebug 版本ä¿æŒä¸€è‡´ï¼Œå¹¶åœ¨ç”¨äºŽè°ƒè¯•çš„版本中获得å¯é çš„指标,设备开å‘者应éµå¾ªä»¥ä¸‹å‡†åˆ™ï¼š</p>
+
+<ul>
+ <li>userdebug 定义为已å¯ç”¨ root æƒé™çš„ user 版本,以下情况除外:
+ <ul>
+ <li>仅由用户视需è¦è¿è¡Œä¸”仅用于 userdebug 版本的应用</li>
+ <li>仅在空闲维护状æ€ï¼ˆè¿žæŽ¥å……电器/充满电)下执行的æ“作,例如,使用 <code>dex2oatd</code> 与 <code>dex2oat</code> 比较åŽå°ç¼–译情况</li>
+ </ul>
+ </li>
+ <li>请勿使用任何ä¾é ç¼–译类型以在默认状æ€ä¸‹å¯ç”¨/ä¸å¯ç”¨çš„功能。建议开å‘者ä¸è¦ä½¿ç”¨ä»»ä½•å½±å“电池续航时间的日志记录形å¼ï¼ˆä¾‹å¦‚调试日志记录或堆转储)。</li>
+ <li>在 userdebug 版本中默认å¯ç”¨çš„任何调试功能都应明确定义,并告知负责该项目的所有开å‘者。请仅在é™å®šæ—¶é—´é‡Œå¯ç”¨è¿™äº›è°ƒè¯•åŠŸèƒ½ï¼Œç›´åˆ°é—®é¢˜å¾—以解决。</li>
+</ul>
+
<h2 id="use-resource-overlays">利用资æºå åŠ å±‚定制版本</h2>
<p>Android 编译系统会在编译时利用资æºå åŠ å±‚定制产å“。资æºå åŠ å±‚用于指定在默认文件之上应用的资æºæ–‡ä»¶ã€‚è¦ä½¿ç”¨èµ„æºå åŠ å±‚,请修改项目编译文件,将 <code>PRODUCT_PACKAGE_OVERLAYS</code> 设为相对于顶级目录的路径。当编译系统æœç´¢èµ„æºæ—¶ï¼Œè¯¥è·¯å¾„å°†æˆä¸ºå½±å­æ ¹ç›®å½•ï¼Œç³»ç»Ÿé™¤äº†åœ¨å½“å‰æ ¹ç›®å½•ä¸­è¿›è¡Œæœç´¢å¤–,还会一并在该路径中æœç´¢ã€‚</p>
@@ -194,7 +209,7 @@ PRODUCT_MAKEFILES := \
<li>创建一个包å«ä¸»æ¿ç‰¹å®šé…置的 <code>BoardConfig.mk</code> Makefile。有关示例,请å‚阅 <code>device/moto/shamu/BoardConfig.mk</code>。
</li>
- <li>创建一个 <code>vendorsetup.sh</code> 文件,以便将您的产å“(“åˆé¤å¥—é¤â€ï¼‰ä¸Ž<a href="#build-variants">编译å˜ä½“</a>(使用短划线将两者分隔开)一起添加到细分版本中。例如:<pre class="devsite-click-to-copy">
+ <li>创建一个 <code>vendorsetup.sh</code> 文件,以便将您的产å“(“åˆé¤å¥—é¤â€ï¼‰ä¸Ž<a href="#build-variants">编译å˜ä½“</a>(使用短划线将两者分隔开)一起添加到版本中。例如:<pre class="devsite-click-to-copy">
add_lunch_combo <var>&lt;PRODUCT_NAME&gt;</var>-userdebug
</pre>
</li>
diff --git a/zh-cn/setup/start/brands.html b/zh-cn/setup/start/brands.html
index 57f52d43..94519263 100644
--- a/zh-cn/setup/start/brands.html
+++ b/zh-cn/setup/start/brands.html
@@ -22,7 +22,7 @@
<p>“Androidâ€å称ã€<img src="/setup/assets/images/sac_logo.png" alt="Android" style="margin:0;padding:0 2px;vertical-align:baseline"/> 徽标ã€â€œGoogle Playâ€å“牌以åŠå…¶ä»–商标å‡ä¸º Google LLC 的资产,ä¸å±žäºŽé€šè¿‡ Android å¼€æºé¡¹ç›®æ供的资æºã€‚</p>
-<p>如果您希望使用这些å“牌,以表明它们与您的设备之间存在关è”,请éµå¾ªæœ¬é¡µæ‰€è¿°çš„准则。这些准则与 <a href="https://developer.android.com/distribute/tools/promote/brand.html">Android 应用开å‘者å“牌推广指å—</a>å’Œ <a href="https://www.google.com/permissions/">Google å“牌æƒé™</a>之间是相辅相æˆçš„关系。</p>
+<p>如果您希望使用这些å“牌,以表明它们与您的设备之间存在关è”,请éµå¾ªæœ¬é¡µæ‰€è¿°çš„准则。这些准则与 <a href="https://developer.android.com/distribute/tools/promote/brand.html">Android 应用开å‘者å“牌指å—</a>å’Œ <a href="https://www.google.com/permissions/">Google å“牌æƒé™</a>之间是相辅相æˆçš„关系。</p>
<h2 id="brand-android">Android</h2>
@@ -76,7 +76,7 @@
</p>
</div>
<div class="col-8">
-<p style="padding-top:20px">在注明适当归属信æ¯çš„情况下,您å¯ä»¥åœ¨è¥é”€èµ„料中自由使用ã€é‡åˆ¶å’Œä¿®æ”¹ Android 机器人。如需了解详情,请å‚阅<a href="https://developer.android.com/distribute/tools/promote/brand.html">应用开å‘者å“牌推广指å—</a>å’Œ<a href="https://creativecommons.org/licenses/by/3.0/">知识共享许å¯</a>。</p>
+<p style="padding-top:20px">在注明适当归属信æ¯çš„情况下,您å¯ä»¥åœ¨è¥é”€èµ„料中自由使用ã€é‡åˆ¶å’Œä¿®æ”¹ Android 机器人。如需了解详情,请å‚阅<a href="https://developer.android.com/distribute/tools/promote/brand.html">应用开å‘者å“牌指å—</a>å’Œ<a href="https://creativecommons.org/licenses/by/3.0/">知识共享许å¯</a>。</p>
</div>
</div>
diff --git a/zh-cn/setup/start/site-updates.html b/zh-cn/setup/start/site-updates.html
index 3f9184f8..dc398181 100644
--- a/zh-cn/setup/start/site-updates.html
+++ b/zh-cn/setup/start/site-updates.html
@@ -128,8 +128,8 @@ SquashFS 是一个é¢å‘ Linux 且ç»è¿‡åŽ‹ç¼©çš„åªè¯»æ–‡ä»¶ç³»ç»Ÿï¼Œé€‚åˆåœ¨ç
<h4>模糊测试</h4>
<p>
AOSP æ供了用于测试 <a href="/devices/tech/dalvik/">Android Runtime (ART)</a> 基础架构的全新模糊测试套件。全新的工具包 JFuzz 以åŠç»è¿‡æ”¹è¿›çš„ DexFuzz 现在å¯ä»¥ç›´æŽ¥åœ¨ AOSP 中获得,并且éšé™„了相关文档。请å‚阅:
- <a href="https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md">https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md</a>
- <a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README">https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README</a>
+<a href="https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md">https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md</a>
+<a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README">https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README</a>
</p>
<p>
无需执行任何æ“作,å³å¯å®žçŽ°æˆ–使用这些新工具。必è¦æ—¶æ‚¨å¯ä»¥å¯¹è¿™äº›å·¥å…·è¿›è¡Œæ›´æ”¹ï¼Œå°±åƒæ‚¨å¯ä»¥æ›´æ”¹è¿è¡Œæ—¶/编译器一样。
@@ -335,8 +335,7 @@ Android 8.0 中的一个新 API 使应用开å‘者å¯ä»¥ä»Žåº”用内添加快æ·
他们必须确ä¿è‡ªå·±çš„代ç ä¸å«æœªå®šä¹‰çš„行为(通过使用 UBSan 等工具),以使之ä¸æ˜“å—到新工具链带æ¥çš„问题的影å“。所有工具链都始终在 AOSP 中直接更新。远远在 OC å‘布之å‰ï¼Œæ‰€æœ‰åŠŸèƒ½ä¾¿éƒ½å·²å¯ç”¨ï¼Œå› æ­¤ OEM 应已éµå¾ªç›¸å…³è§„定。
</p>
<p>
- 如需常规说明,请å‚阅<a href="https://llvm.org/" class="external">公开的 Clang/LLVM</a> 文档;如需 Android 专属指å—,请å‚阅 AOSP 中的 <a href="https://android.googlesource.com/platform/external/clang/+/master/ReadmeAndroid.md" class="external">Android
- Clang/LLVM</a> 文档集。最åŽï¼Œè¯·åŠ å…¥ <a href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a> 公开论å›ï¼Œä»¥èŽ·å–帮助和å‚与开å‘。
+如需常规说明,请å‚阅<a href="https://llvm.org/" class="external">公开的 Clang/LLVM</a> 文档;如需 Android 专属指å—,请å‚阅 AOSP 中的 <a href="https://android.googlesource.com/platform/external/clang/+/master/ReadmeAndroid.md" class="external">Android Clang/LLVM</a> 文档集。最åŽï¼Œè¯·åŠ å…¥ <a href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a> 公开论å›ï¼Œä»¥èŽ·å–帮助和å‚与开å‘。
</p>
<h3 id="drm-kms">DRM/KMS</h3>
@@ -462,17 +461,17 @@ Android 8.0 利用 EXT4 文件系统的“é…é¢â€æ”¯æŒï¼Œè¿‘乎å³æ—¶åœ°æä¾
<h3 id="reference-materials">更好的å‚考资料</h3>
<p>
- 您å¯ä»¥ç›´æŽ¥ä»Žé¡¶å±‚çš„<a href="/reference/">å‚考资料</a>标签获得<a href="/reference/hal/">硬件抽象层</a>å’Œ <a href="/reference/tradefed/packages">Trade Federation</a> å‚考资料。
+ 您å¯ä»¥ç›´æŽ¥ä»Žé¡¶å±‚çš„<a href="/reference/hal/">å‚考资料</a>标签获得<a href="/reference/tradefed/packages">硬件抽象层</a>å’Œ <a href="/reference/">Trade Federation</a> å‚考资料。
</p>
<h3 id="code-links">æ¯é¡µéƒ½æœ‰çš„代ç é“¾æŽ¥</h3>
<p>
-在æ¯ä¸ªé¡µé¢ä¸­ï¼Œæ‚¨åªéœ€ç‚¹å‡»ä¸€ä¸‹å³ä¸Šè§’çš„<strong>转到æºä»£ç </strong>按钮,å³å¯è®¿é—® <a href="https://android.googlesource.com/" class="external">AOSP 代ç åº“</a>。
+在æ¯ä¸ªé¡µé¢ä¸­ï¼Œåªéœ€ç‚¹å‡»ä¸€ä¸‹å³ä¸Šè§’çš„<strong>转到æºä»£ç </strong>按钮,å³å¯è®¿é—® <a href="https://android.googlesource.com/" class="external">AOSP 代ç åº“</a>。
</p>
<h3 id="comprehensive-footers">包罗广泛的页脚</h3>
<p>
-<em></em><em></em><em></em>除了已有的“关于â€ã€â€œç¤¾åŒºâ€å’Œâ€œæ³•å¾‹â€é¡µè„šä¹‹å¤–,现在您还å¯ä»¥åœ¨æ¯ä¸ªé¡µé¢çš„底部找到完整的链接列表。通过这些链接,您å¯ä»¥ç¼–译 Androidã€ä¸Ž Android 生æ€ç³»ç»Ÿå»ºç«‹è”系,以åŠèŽ·å¾—使用æ“作系统方é¢çš„帮助。
+<em></em><em></em><em></em>除了已有的“关于â€ã€â€œç¤¾åŒºâ€å’Œâ€œæ³•å¾‹â€é¡µè„šä¹‹å¤–,现在您还å¯ä»¥åœ¨æ¯ä¸ªé¡µé¢çš„底部找到完整的链接列表。通过这些链接,您å¯ä»¥ç¼–译 Androidã€ä¸Ž Android 生æ€ç³»ç»Ÿå»ºç«‹è”系,以åŠèŽ·å¾—使用 Android æ“作系统方é¢çš„帮助。
</p>
</body></html> \ No newline at end of file