diff options
author | Android Partner Docs <noreply@android.com> | 2018-08-13 10:09:53 -0700 |
---|---|---|
committer | Clay Murphy <claym@google.com> | 2018-08-13 10:42:59 -0700 |
commit | 1731f4ad91051c17b9c66913c56283c55751df41 (patch) | |
tree | 59d30bb760f8a421a134b30b0b3fe429b6918516 | |
parent | abcf037c51ed49ed1a33187b9329beadce22271a (diff) | |
download | source.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
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 -> <private-development-branch for Android P></p> +nougat-cts-dev -> nougat-mr1-cts-dev -> oreo-cts-dev -> oreo-mr1-cts-dev -> pie-cts-dev -> <private-development-branch for Android Q></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<V1_1::IFooService> service = V1_1::IFooService::getService(); sp<V1_1::IFooService> 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–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–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&lowbar;FLAG&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&lowbar;FLAG&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>设置 > è¯è¨€å’Œè¾“入法 > è¯è¨€</strong> </li><li>如果设备具有 GPS 或 WLAN/移动网络功能,则打开ä½ç½®ä¿¡æ¯è®¾ç½®ï¼š<strong>设置 > ä½ç½®ä¿¡æ¯ > å¼€å¯</strong> - </li><li><em></em>连接到满足以下è¦æ±‚çš„ WLAN ç½‘ç»œï¼šæ”¯æŒ IPv6,å¯ä»¥å°†è¢«æµ‹è®¾å¤‡ (DUT) 视为隔离的客户端(请å‚阅上文的<a href="#physical_environment">物ç†çŽ¯å¢ƒ</a>部分),并å¯è¿žæŽ¥åˆ°äº’è”网:<strong>设置 > WLAN</strong> + </li><li>连接到满足以下è¦æ±‚çš„ WLAN ç½‘ç»œï¼šæ”¯æŒ IPv6,å¯ä»¥å°†è¢«æµ‹è®¾å¤‡ (DUT) 视为隔离的客户端(请å‚阅上文的<a href="#physical_environment">物ç†çŽ¯å¢ƒ</a>部分),并å¯è¿žæŽ¥åˆ°äº’è”网:<strong>设置 > WLAN</strong><em></em> </li><li>ç¡®ä¿è®¾å¤‡ä¸Šæœªè®¾ç½®é”定图案或密ç :<strong>设置 > 安全 > å±å¹•é”定 > æ— </strong> </li><li>在设备上å¯ç”¨ <strong>USB 调试</strong>:<strong>设置 > å¼€å‘者选项 > USB 调试</strong>。 <p class="note"><strong>注æ„:</strong>在 Android 4.2 åŠæ›´é«˜ç‰ˆæœ¬ä¸ï¼Œé»˜è®¤æƒ…况下会éšè—<strong>å¼€å‘者选项</strong>。è¦æ˜¾ç¤ºè¿™äº›é€‰é¡¹ï¼Œè¯·ä¾æ¬¡è½¬åˆ°<strong>设置 > 关于手机</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>设置 > æ— éšœç¢ > æ— éšœç¢ > 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> ä¾æ¬¡é€‰æ‹©â€œè®¾ç½®â€>“安全â€>“选择设备管ç†å™¨â€ï¼Œç„¶åŽå¯ç”¨ä¸¤ä¸ª <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> > #cpu</code> 进行测试会导致系统过载,并生æˆæ— 用信æ¯ã€‚</p> +#cpu-1</code>(或谨慎使用 <code>-pair #cpu</code>)。使用 <code>-pair <em>n</em></code> å’Œ <code><em>n</em> > #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.<ro.product.platform>.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â€>“框架â€</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"><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" +/> +</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"><int name="vvm_port_number_int" value="5499" /> +<string name="vvm_type_string">vvm_type_omtp</string > +<boolean name="vvm_cellular_data_required_bool" value="true" /> +</pre> + +<h4 id="commit-message">æ交消æ¯</h4> + +<pre class="devsite-click-to-copy">[Example - "Add VVM settings for CarrierXYZ"] + +[Example - "Updated <mccmnc> 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> / + <a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a> / + <a href="/security/bulletin/2018-07-01.html?hl=ko">í•œêµì–´</a> / + <a href="/security/bulletin/2018-07-01.html?hl=ru">руÌÑÑкий</a> / + <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">ä¸æ–‡ (ä¸å›½)</a> / + <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">ä¸æ–‡ (å°ç£)</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> / + <a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a> / + <a href="/security/bulletin/2018-07-01.html?hl=ko">í•œêµì–´</a> / + <a href="/security/bulletin/2018-07-01.html?hl=ru">руÌÑÑкий</a> / + <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">ä¸æ–‡ (ä¸å›½)</a> / + <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">ä¸æ–‡ (å°ç£)</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> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=ja">日本語</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">í•œêµì–´</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">руÌÑÑкий</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">ä¸æ–‡ (ä¸å›½)</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">ä¸æ–‡ (å°ç£)</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">ä¸æ–‡ (ä¸å›½)</a> / - --><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> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=ja">日本語</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">í•œêµì–´</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">руÌÑÑкий</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">ä¸æ–‡ (ä¸å›½)</a> / + <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">ä¸æ–‡ (å°ç£)</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">ä¸æ–‡ (ä¸å›½)</a> / - --> <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@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@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@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@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><PRODUCT_NAME></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 |