aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Hecomovich <mheco@google.com>2019-02-04 19:08:32 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2019-02-04 19:08:32 +0000
commitdc15581cd922e7f9af57841ed95f18f2d7e5495b (patch)
tree2d140c6a5441c87eb0b4a02fc10ac5d545c129ff
parent56cd845b72cebfc74b8c527936ed2e4aff4b51dd (diff)
parent3fbb9e0053b81286309c23898fdecd7b933cdf02 (diff)
downloadsource.android.com-dc15581cd922e7f9af57841ed95f18f2d7e5495b.tar.gz
Merge "Docs: Changes to source.android.com"
-rw-r--r--en/compatibility/cts/camera-hal.html10
-rw-r--r--en/compatibility/cts/images/sensor_fusion_adjust.pngbin2144196 -> 197156 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_connect_lights.pngbin2899237 -> 664646 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_conversion_cable.pngbin0 -> 725957 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_fixture.pngbin0 -> 581254 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_servo_connector.pngbin2050227 -> 191299 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_servo_control.pngbin0 -> 972280 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_servo_control_box.pngbin0 -> 859775 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_test_components.pngbin2737880 -> 914920 bytes
-rw-r--r--en/compatibility/cts/images/sensor_fusion_zip_ties.pngbin325663 -> 261974 bytes
-rw-r--r--en/compatibility/cts/sensor-fusion-box-assembly.md4
-rw-r--r--en/compatibility/cts/sensor-fusion-quick-start.html236
-rw-r--r--en/compatibility/cts/sensor_fusion_1_5.zip (renamed from en/compatibility/cts/sensor_fusion_1.5.zip)bin6650653 -> 6712097 bytes
-rw-r--r--en/devices/architecture/kernel/modular-kernels.html2
-rw-r--r--en/devices/automotive/images/automotive_power_class_diagram.pngbin206642 -> 141145 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_deep_sleep.pngbin129342 -> 73006 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_deep_sleep_exit.pngbin106899 -> 60340 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_object_state.pngbin64709 -> 39254 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_reference_diagram.pngbin42141 -> 10636 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_states.pngbin58397 -> 25526 bytes
-rw-r--r--en/devices/automotive/power.html114
-rw-r--r--en/devices/camera/camera3.html10
-rw-r--r--en/devices/tech/debug/asan.html16
-rw-r--r--en/devices/tech/debug/gdb.html42
-rw-r--r--en/devices/tech/power/values.html104
-rw-r--r--en/security/bulletin/2019.html4
-rw-r--r--en/security/bulletin/index.html4
-rw-r--r--en/security/bulletin/pixel/2019.html4
-rw-r--r--en/security/bulletin/pixel/index.html4
-rw-r--r--en/security/encryption/file-based.html4
-rw-r--r--en/setup/build/initializing.html2
-rw-r--r--en/setup/build/known-issues.html2
-rw-r--r--ja/security/bulletin/2019-01-01.html2
-rw-r--r--ja/security/bulletin/2019.html6
-rw-r--r--ja/security/bulletin/pixel/2019-01-01.html6
-rw-r--r--ja/security/bulletin/pixel/2019.html6
-rw-r--r--ko/security/bulletin/2018.html390
-rw-r--r--ko/security/bulletin/2019-01-01.html3
-rw-r--r--ko/security/bulletin/2019.html6
-rw-r--r--ko/security/bulletin/pixel/2018-02-01.html9
-rw-r--r--ko/security/bulletin/pixel/2018-12-01.html8
-rw-r--r--ko/security/bulletin/pixel/2019-01-01.html3
-rw-r--r--ko/security/bulletin/pixel/2019.html6
-rw-r--r--ru/security/bulletin/2018-12-01.html2
-rw-r--r--ru/security/bulletin/2019-01-01.html2
-rw-r--r--ru/security/bulletin/2019.html6
-rw-r--r--ru/security/bulletin/pixel/2018.html84
-rw-r--r--ru/security/bulletin/pixel/2019.html6
-rw-r--r--ru/security/bulletin/pixel/index.html133
-rw-r--r--zh-cn/_book.yaml18
-rw-r--r--zh-cn/_index.yaml12
-rw-r--r--zh-cn/devices/architecture/dto/compile.html4
-rw-r--r--zh-cn/devices/architecture/dto/optimize.html10
-rw-r--r--zh-cn/devices/architecture/hidl-cpp/types.html2
-rw-r--r--zh-cn/devices/architecture/hidl/types.html12
-rw-r--r--zh-cn/devices/architecture/kernel/config.html2
-rw-r--r--zh-cn/devices/architecture/kernel/modular-kernels.html6
-rw-r--r--zh-cn/devices/architecture/vintf/fcm.html4
-rw-r--r--zh-cn/devices/architecture/vintf/match-rules.html1
-rw-r--r--zh-cn/devices/architecture/vndk/renderscript.html10
-rw-r--r--zh-cn/devices/audio/attributes.html4
-rw-r--r--zh-cn/devices/automotive/audio/audio-control.html2
-rw-r--r--zh-cn/devices/bootloader/boot-image-header.html2
-rw-r--r--zh-cn/devices/bootloader/product-partitions.html1
-rw-r--r--zh-cn/devices/bootloader/system-as-root.html9
-rw-r--r--zh-cn/devices/bootloader/unlock-trusty.html6
-rw-r--r--zh-cn/devices/camera/multi-camera.html4
-rw-r--r--zh-cn/devices/camera/versioning.html6
-rw-r--r--zh-cn/devices/graphics/build-tests.html6
-rw-r--r--zh-cn/devices/graphics/index.html2
-rw-r--r--zh-cn/devices/graphics/run-tests.html2
-rw-r--r--zh-cn/devices/sensors/hal-interface.html18
-rw-r--r--zh-cn/devices/sensors/sensor-stack.html6
-rw-r--r--zh-cn/devices/tech/admin/ota-updates.html5
-rw-r--r--zh-cn/devices/tech/config/carrierid.html6
-rw-r--r--zh-cn/devices/tech/config/filesystem.html3
-rw-r--r--zh-cn/devices/tech/connect/block-numbers.html5
-rw-r--r--zh-cn/devices/tech/connect/data-plans.html4
-rw-r--r--zh-cn/devices/tech/connect/esim-modem-requirements.html4
-rw-r--r--zh-cn/devices/tech/connect/third-party-call-apps.html2
-rw-r--r--zh-cn/devices/tech/connect/wifi-infrastructure.html2
-rw-r--r--zh-cn/devices/tech/dalvik/improvements.html4
-rw-r--r--zh-cn/devices/tech/debug/gdb.html4
-rw-r--r--zh-cn/devices/tech/debug/index.html4
-rw-r--r--zh-cn/devices/tech/debug/sanitizers.html3
-rw-r--r--zh-cn/devices/tech/health/implementation.html2
-rw-r--r--zh-cn/devices/tech/ota/ab/ab_implement.html9
-rw-r--r--zh-cn/devices/tech/ota/nonab/device_code.html4
-rw-r--r--zh-cn/devices/tech/ota/sign_builds.html2
-rw-r--r--zh-cn/devices/tech/power/batteryless.html4
-rw-r--r--zh-cn/devices/tv/index.html12
-rw-r--r--zh-cn/devices/tv/reference-tv-app.html2
-rw-r--r--zh-cn/security/bulletin/2015.html133
-rw-r--r--zh-cn/security/bulletin/2016.html245
-rw-r--r--zh-cn/security/bulletin/2017.html258
-rw-r--r--zh-cn/security/bulletin/2019-01-01.html24
-rw-r--r--zh-cn/security/bulletin/2019.html6
-rw-r--r--zh-cn/security/bulletin/pixel/2017.html116
-rw-r--r--zh-cn/security/bulletin/pixel/2019-01-01.html2
-rw-r--r--zh-cn/security/bulletin/pixel/2019.html6
-rw-r--r--zh-cn/security/encryption/full-disk.html2
-rw-r--r--zh-cn/security/encryption/metadata.html2
-rw-r--r--zh-cn/security/enhancements/enhancements42.html8
-rw-r--r--zh-cn/security/keystore/tags.html16
-rw-r--r--zh-cn/security/overview/acknowledgements.html38
-rw-r--r--zh-cn/security/selinux/compatibility.html4
-rw-r--r--zh-cn/security/selinux/customize.html10
-rw-r--r--zh-cn/security/selinux/validate.html4
-rw-r--r--zh-tw/security/bulletin/2019.html6
-rw-r--r--zh-tw/security/bulletin/pixel/2018-09-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2018-10-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2018-11-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2018-12-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2019.html6
114 files changed, 1246 insertions, 1118 deletions
diff --git a/en/compatibility/cts/camera-hal.html b/en/compatibility/cts/camera-hal.html
index 72da83db..5e74be2f 100644
--- a/en/compatibility/cts/camera-hal.html
+++ b/en/compatibility/cts/camera-hal.html
@@ -21,7 +21,7 @@
limitations under the License.
-->
-
+{% include "_versions.html" %}
<p>This document lists all tests available for evaluating the Android camera
hardware abstraction layer (HAL). It is intended for original equipment
@@ -157,8 +157,12 @@ the <code>android.hardware.camera2</code> API</h3>
<h2 id=its_tests>Image Test Suite (ITS) tests</h2>
<aside class="Note"><strong>Note:</strong>
-<a href="/devices/camera/camera3">Camera HAL3</a> is required for all devices
-running Android 9 or higher (except for Android Go devices).</aside>
+<a href="/devices/camera/camera3">Camera HAL3</a> is strongly recommended for
+ devices running Android {{ androidPVersionNumber }} or higher as Camera HAL1
+ has been deprecated. This
+ also allows for a smooth phase out of the deprecated
+ <a href="https://developer.android.com/reference/android/hardware/Camera" class="external">
+ Camera API</a>.</aside>
<p>The Camera Image Test Suite (ITS) tests focus on image correctness.
To perform the tests, run the Python scripts on a workstation with the
diff --git a/en/compatibility/cts/images/sensor_fusion_adjust.png b/en/compatibility/cts/images/sensor_fusion_adjust.png
index 17282ce4..16905229 100644
--- a/en/compatibility/cts/images/sensor_fusion_adjust.png
+++ b/en/compatibility/cts/images/sensor_fusion_adjust.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_connect_lights.png b/en/compatibility/cts/images/sensor_fusion_connect_lights.png
index e77bab0e..6efe549b 100644
--- a/en/compatibility/cts/images/sensor_fusion_connect_lights.png
+++ b/en/compatibility/cts/images/sensor_fusion_connect_lights.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_conversion_cable.png b/en/compatibility/cts/images/sensor_fusion_conversion_cable.png
new file mode 100644
index 00000000..4bb730c2
--- /dev/null
+++ b/en/compatibility/cts/images/sensor_fusion_conversion_cable.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_fixture.png b/en/compatibility/cts/images/sensor_fusion_fixture.png
new file mode 100644
index 00000000..d2b54d50
--- /dev/null
+++ b/en/compatibility/cts/images/sensor_fusion_fixture.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_servo_connector.png b/en/compatibility/cts/images/sensor_fusion_servo_connector.png
index dc20d1bf..422b95a2 100644
--- a/en/compatibility/cts/images/sensor_fusion_servo_connector.png
+++ b/en/compatibility/cts/images/sensor_fusion_servo_connector.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_servo_control.png b/en/compatibility/cts/images/sensor_fusion_servo_control.png
new file mode 100644
index 00000000..db1a69cf
--- /dev/null
+++ b/en/compatibility/cts/images/sensor_fusion_servo_control.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_servo_control_box.png b/en/compatibility/cts/images/sensor_fusion_servo_control_box.png
new file mode 100644
index 00000000..1b7a67f2
--- /dev/null
+++ b/en/compatibility/cts/images/sensor_fusion_servo_control_box.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_test_components.png b/en/compatibility/cts/images/sensor_fusion_test_components.png
index ae7a4f54..d3577f44 100644
--- a/en/compatibility/cts/images/sensor_fusion_test_components.png
+++ b/en/compatibility/cts/images/sensor_fusion_test_components.png
Binary files differ
diff --git a/en/compatibility/cts/images/sensor_fusion_zip_ties.png b/en/compatibility/cts/images/sensor_fusion_zip_ties.png
index 790766eb..6c416719 100644
--- a/en/compatibility/cts/images/sensor_fusion_zip_ties.png
+++ b/en/compatibility/cts/images/sensor_fusion_zip_ties.png
Binary files differ
diff --git a/en/compatibility/cts/sensor-fusion-box-assembly.md b/en/compatibility/cts/sensor-fusion-box-assembly.md
index ba236e51..5f6c6f6f 100644
--- a/en/compatibility/cts/sensor-fusion-box-assembly.md
+++ b/en/compatibility/cts/sensor-fusion-box-assembly.md
@@ -51,7 +51,7 @@ Figure 1):
Before starting, ensure you have downloaded the technical drawings for the
Sensor Fusion Box (included in the
-[Sensor Fusion Box zip file](/compatibility/cts/sensor_fusion_1.5.zip)) and
+[Sensor Fusion Box zip file](/compatibility/cts/sensor_fusion_1_5.zip)) and
have the following tools available:
* Phillips head screwdriver
@@ -211,7 +211,7 @@ To complete assembly of the Sensor Fusion Box:
screw detail
1. Print out a colored copy of the checkerboard (included in the [Sensor Fusion
- Box zip file](/compatibility/cts/sensor_fusion_1.5.zip)) on A3 (or 11 x 17
+ Box zip file](/compatibility/cts/sensor_fusion_1_5.zip)) on A3 (or 11 x 17
inch) paper, and tape it on the opposite wall of the phone fixture.
Make sure the red dot in the center of the checkerboard is directly facing
diff --git a/en/compatibility/cts/sensor-fusion-quick-start.html b/en/compatibility/cts/sensor-fusion-quick-start.html
index 6ade5513..2b3783bb 100644
--- a/en/compatibility/cts/sensor-fusion-quick-start.html
+++ b/en/compatibility/cts/sensor-fusion-quick-start.html
@@ -25,43 +25,55 @@
</p>
<h2 id="required-tools">Required tools</h2>
<p>
- Before getting started, ensure you have the following cables and cords
- available:</p>
+ Before getting started, ensure you have the following components:</p>
<figure id="sensor-fusion-test-component">
<img src="/compatibility/cts/images/sensor_fusion_test_components.png" width="700" alt="Sensor fusion test components">
- <figcaption><b>Figure 1.</b> Components required for the sensor fusion test</figcaption>
+ <figcaption><b>Figure 1.</b> Components required for the sensor fusion
+ test</figcaption>
</figure>
- <ul>
+ <ol>
<li>USB A to B cable</li>
<li>USB A to C cable (for test phone)</li>
- <li>12V power cord (for servo control box)</li>
+ <li>12V 2A power cord (for servo control box)</li>
<li>12V power cord (for lighting, with switch)</li>
- <li>Interconnected cable (for lighting)</li>
- <li>Conversion cable (for lighting)</li>
- </ul>
+ <li>5V male-male connection cable (for lighting)</li>
+ <li>5V male-female conversion cable (for lighting)</li>
+ </ol>
<h2 id="step-1-connect-lights">Step 1: Connect lights</h2>
<p>
To connect the lights:
</p>
<ol>
- <li>Use the interconnected cable to connect the two lights.</li>
- <li>Connect one light to the conversion cable.
+ <li>Use the male-male cable to connect the two lights on the bottom ends
+ of the lights as shown in figure 2. Secure the cable to the bottom of the
+ box to keep the cable from interfering with the operation.</li>
+ <li>Connect the end of the light closer to the light cable exit hole to
+ the conversion cable
<figure id="sensor-fusion-connect-lights">
<img src="/compatibility/cts/images/sensor_fusion_connect_lights.png" width="300" alt="Connect lights">
- <figcaption><b>Figure 2.</b> Connecting the lights to each other and one light to the conversion cable</figcaption>
+ <figcaption><b>Figure 2.</b> Connecting the lights to each other and
+ one light to the conversion cable</figcaption>
</figure>
+ <ol>
+ <li>Light cable exit hole</li>
+ <li>USB cable exit hole</li>
+ <li>5V male-male conversion cable</li>
+ </ol>
</li>
<li>Thread the unconnected end of the conversion cable through the round
- hole that exits the box, then connect the end of that cable to the power
+ hole that exits the box, then connect it to the power
cable for lighting.
- <table class="columns">
- <tr>
- <td><img src="/compatibility/cts/images/sensor_fusion_conversion_cable1.png" width="" alt="Conversion cable and power cable"></td>
- <td><img src="/compatibility/cts/images/sensor_fusion_conversion_cable2.png" width="" alt="Power cable for lighting"></td>
- </tr>
- </table>
- <b>Figure 3.</b> Lighting conversion cable exiting the box and connecting
- to power cable</li>
+ <figure id="Conversion cable and power cable">
+ <img src="/compatibility/cts/images/sensor_fusion_conversion_cable.png" width="500" alt="Conversion and power cable">
+ <figcaption><b>Figure 3.</b> Lighting conversion cable exiting the box
+ and connecting to power cable</figcaption>
+ </figure>
+ <ol>
+ <li>Exit hole</li>
+ <li>Conversion cable</li>
+ <li>Power cable</li>
+ </ol>
+ </li>
</ol>
<h2 id="step-2-attach-servo">Step 2: Attach servo</h2>
<p>
@@ -71,104 +83,116 @@
<li>Plug the servo connector into the servo control. Be sure to insert
the connector oriented to the corresponding colors as labeled (Y =
Yellow, R = Red, B = Black), as reversing the order could damage the
- motor.
+ motor. If the cord is too short, use a
+ <a href="https://www.adafruit.com/product/972" class="external">
+ servo extension cable</a>.
<figure id="sensor-fusion-servo-connector">
<img src="/compatibility/cts/images/sensor_fusion_servo_connector.png" width="300" alt="Servo connecting to the servo control box">
- <figcaption><b>Figure 4.</b> Servo connecting to the servo control box</figcaption>
+ <figcaption><b>Figure 4.</b> Servo connecting to the servo control
+ box</figcaption>
+ </figure>
+ </li>
+ <li>Connect the servo control with its power cord (the lighting and
+ servo control have independent, dedicated power supplies as shown in
+ figure 5).
+ <figure id="sensor-fusion-servo-control">
+ <img src="/compatibility/cts/images/sensor_fusion_servo_control.png" width="500" alt="Connecting servo control to power">
+ <figcaption><b>Figure 5.</b> Connecting the servo control to its
+ dedicated power cord</figcaption>
</figure>
- <li>Connect the servo control with its power cord (the lighting and
- servo control have independent, dedicated power supplies).
- <table class="columns">
- <tr>
- <td><img src="/compatibility/cts/images/sensor_fusion_servo_control1.png" width="" alt="Servo control"></td>
- <td><img src="/compatibility/cts/images/sensor_fusion_servo_control2.png" width="" alt="Power to servo control"></td>
- </tr>
- </table>
- <b>Figure 5.</b> Connecting the servo control to its dedicated power
- cord
- <li>Use the USB A to B cable to connect the servo control box to the
- host (machine that is running the test).
- <table class="columns">
- <tr>
- <td><img src="/compatibility/cts/images/sensor_fusion_servo_control_box1.png" width="" alt="Connect servo control box"></td>
- <td><img src="/compatibility/cts/images/sensor_fusion_servo_control_box2.png" width="" alt="Connect servo control box to host"></td>
- </tr>
- </table>
- <b>Figure 6.</b> Connecting the servo control box to the host machine</li>
- </ol>
- <h2 id="step-3-attach-phone">Step 3: Attach phone</h2>
<ol>
- <li>Set the phone on the fixture and clamp it down.<br>
- <table class="columns">
- <tr>
- <td><img src="/compatibility/cts/images/sensor_fusion_fixture1.png" width="" alt="Phone on fixture"></td>
- <td><img src="/compatibility/cts/images/sensor_fusion_fixture2.png" width="" alt="Clamping phone on fixture"></td>
- </tr>
- </table>
- <b>Figure 7.</b> Placing and clamping the phone on the fixture
- <p> The upside-down thumb screw provides back support while the
- other screw tightens the grip by turning right. For more help,
- refer to the video on loading the phone (included in the
- <a href="/compatibility/cts/sensor_fusion_1.5.zip">Sensor
- Fusion Box zip file</a>). </p>
- </li>
- <li>Use a zip tie to hold the phone USB cord to the fixture plate and
- lead it outside the box through the exit hole. Plug the other end
- of the cord to the host running the test.
- <figure id="sensor-fusion-zip-ties">
- <img src="/compatibility/cts/images/sensor_fusion_zip_ties.png" width="300" alt="Phone USB cord with zip ties">
- <figcaption><b>Figure 8.</b> Phone USB cord held to fixture with
- zip ties</figcaption>
- </figure>
- </li>
+ <li>Power for servo control</li>
+ <li>Power for lighting</li>
</ol>
- <h2 id="step-4-run-test-script">Step 4: Run test script</h2>
- <p>
- The main python executable for the test script is:
- </p>
- <pre class="prettyprint">python tools/run_all_tests.py device=ID camera=0 scenes=sensor_fusion rot_rig=default</pre>
- <p>You can also enter the actual rotator address at the command line
- using:</p>
- <pre class="prettyprint">rot_rig=VID:PID:CH</pre>
+ </li>
+ <li>Use the USB A to B cable to connect the servo control box to the
+ host (machine that is running the test).
+ <figure id="sensor-fusion-servo-control-box">
+ <img src="/compatibility/cts/images/sensor_fusion_servo_control_box.png" width="500" alt="Connect servo control box to host machine">
+ <figcaption><b>Figure 6.</b> Connecting the servo control box to the
+ host machine</figcaption>
+ </figure>
+ </ol>
+ <h2 id="step-3-attach-phone">Step 3: Attach phone</h2>
+ <ol>
+ <li>Set the phone on the fixture and clamp it down.<br>
+ <figure id="sensor-fusion-servo-connector">
+ <img src="/compatibility/cts/images/sensor_fusion_fixture.png" width="500" alt="Attaching phone on fixture">
+ <figcaption><b>Figure 7.</b> Placing and clamping the phone on the
+ fixture</figcaption>
+ </figure>
+ <ol>
+ <li>Back support</li>
+ <li>Tightness</li>
+ </ol>
+ <p>Phones should be placed in a manner where the USB cords are located at
+ the periphery of the phone mount and the cameras are near the center of
+ the mount.
+ </p>
+ <p>The upside-down thumb screw provides back support while the other screw
+ tightens the grip by turning right. For more details, see
+ <a href="#attach-phone-to-mount">video on how to
+ attach the phone</a>.</p>
+ </li>
+ <li>Use a zip tie to hold the phone USB cord to the fixture plate and
+ lead it outside the box through the exit hole. Plug the other end
+ of the cord to the host running the test.
+ <figure id="sensor-fusion-zip-ties">
+ <img src="/compatibility/cts/images/sensor_fusion_zip_ties.png" width="300" alt="Phone USB cord with zip ties">
+ <figcaption><b>Figure 8.</b> Phone USB cord held to fixture with
+ zip ties</figcaption>
+ </figure>
+ </li>
+ </ol>
+ <h2 id="step-4-run-test-script">Step 4: Run test script</h2>
+ <p>
+ The main python executable for the test script is:
+ </p>
+ <pre class="prettyprint"><code class="devsite-terminal">python tools/run_all_tests.py device=ID camera=0 scenes=sensor_fusion rot_rig=default</code>
+ </pre>
+ <p>You can modify the command to specify the actual rotator address by using:</p>
+ <pre class="prettyprint">rot_rig=<var>VID:PID:CH</var>
+ </pre>
<ul>
<li>To determine the Vendor ID (VID) and Product ID (PID), use the Linux
- command <code>lsusb</code>.</li> <li>By default, the VID and PID are set
+ command <code>lsusb</code>.</li>
+ <li>By default, the VID and PID are set
to <code>04d8</code> and <code>fc73</code> with channel "1".</li>
</ul>
- <h3 id="multiple-runs-different-formats">Multiple runs, different formats</h3>
+ <h3 id="multiple-runs-different-formats">Multiple runs, different formats</h3>
<p>To perform multiple runs with different formats, you can use a
different script (however, the results will not be uploaded to
- <code>CtsVerifier.apk</code>). Sample test script: </p>
- <pre class="prettyprint">python tools/run_sensor_fusion_box.py device=FA7831A00278 camera=0 rotator=default img_size=640,360 fps=30 test_length=7</pre>
+ <code>CtsVerifier.apk</code>). Sample test script:</p>
+ <pre class="prettyprint"><code class="devsite-terminal">python tools/run_sensor_fusion_box.py device=FA7831A00278 camera=0 rotator=default img_size=640,360 fps=30 test_length=7</code></pre>
<h3 id="permission-issues">Permission issues</h3>
<p>To resolve permission issues related to controlling the motor through the
USB port:</p>
<ol>
- <li>Add the operator username to <code>dialout</code> group using:
- <pre class="prettyprint">sudo adduser $username dialout</pre></li>
+ <li>Add the operator username to the <code>dialout</code> group using:
+ <pre class="prettyprint"><code class="devsite-terminal">sudo adduser <var>USERNAME</var> dialout</code>
+ </pre></li>
<li>Log out the operator.</li>
<li>Log in the operator.</li>
</ol>
- <h2>Adjusting the motor</h2>
+ <h2 id="adjusting-the-motor">Adjusting the motor</h2>
<p>
- You can adjust the speed of the motor and the distance the phone' travels
- using the resistance ports (labelled <strong>A</strong>,
+ You can adjust the speed of the motor and the distance the phone travels
+ using the resistance ports (labeled <strong>A</strong>,
<strong>B</strong>, and <strong>T</strong>) on the side of the controller
box.
</p>
<ol>
+ <li>Upon first receiving the box, power up the box and determine the initial
+ position. If the initial position on power-up is not close to 12
+ o'clock, unscrew the phone fixture (single Philips head screw in mount
+ hole) and rotate the phone fixture to 12 o'clock.</li>
<li>Ensure the phone fixture travels a full 90 degrees (from 12
o'clock to 9 o'clock when looking at the phone) for each rotation.
<ul>
- <li>To adjust the distance travelled, use the <strong>A</strong> and
+ <li>To adjust the distance traveled, use the <strong>A</strong> and
<strong>B</strong> screws (where <strong>A</strong> is the starting
location
and <strong>B</strong> is the final location).</li>
- <li>Upon first receiving the box, it is easiest to power up the box and
- determine the initial position. If the initial position on power-up
- is not close to 12 o'clock, unscrew the phone fixture (single Philips
- head screw in mount hole) and rotate the phone fixture to 12
- o'clock.</li>
</ul>
</li>
<li>Adjust the rotation speed to travel a full rotation in 1.5s. Turning
@@ -176,7 +200,7 @@
<table class="columns">
<tr>
<td>
- <img src="/compatibility/cts/images/sensor_fusion_adjust.png" width="" alt="Adjust position and speed of servo">
+ <img src="/compatibility/cts/images/sensor_fusion_adjust.png" width="300" alt="Adjust position and speed of servo">
</td>
<td>
<ul>
@@ -191,10 +215,32 @@
fixture
</li>
</ol>
- <p>
- For more help, refer to the video of the sensor fusion box running (included
- in the <a href=/compatibility/cts/sensor_fusion_1.5.zip>Sensor Fusion Box
- zip file</a>).
- </p>
+ <p>For more information, see <a href="#video-tutorials">video tutorials</a>.</p>
+ <h2 id="video-tutorials">Video tutorials</h2>
+ <div class="video-wrapper-full-width">
+ <h3 id="attach-phone-to-mount">Attaching phone to mount</h3>
+ <iframe class="devsite-embedded-youtube-video" data-video-id="zV61A0Mv394"
+ data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
+ </iframe>
+ </div>
+ <div class="video-wrapper-full-width">
+ <h3 id="install-phones-dual-mount">Installing phones on a dual mount</h3>
+ <iframe class="devsite-embedded-youtube-video" data-video-id="S2SrICXJWOA"
+ data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
+ </iframe>
+ </div>
+ <div class="video-wrapper-full-width">
+ <h3 id="calibrate-controller">Calibrating the controller</h3>
+ <iframe class="devsite-embedded-youtube-video" data-video-id="Jvm0RlwaTlY"
+ data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
+ </iframe>
+ </div>
+ <div class="video-wrapper-full-width">
+ <h3 id="adjust-phone-fixture">Adjusting the phone fixture</h3>
+ <iframe class="devsite-embedded-youtube-video" data-video-id="hbKCxqmg-eg"
+ data-autohide="1" data-showinfo="0" frameborder="0" allowfullscreen>
+ </iframe>
+ </div>
+
</body>
</html>
diff --git a/en/compatibility/cts/sensor_fusion_1.5.zip b/en/compatibility/cts/sensor_fusion_1_5.zip
index a35275b6..1090c033 100644
--- a/en/compatibility/cts/sensor_fusion_1.5.zip
+++ b/en/compatibility/cts/sensor_fusion_1_5.zip
Binary files differ
diff --git a/en/devices/architecture/kernel/modular-kernels.html b/en/devices/architecture/kernel/modular-kernels.html
index c314a956..a0908b71 100644
--- a/en/devices/architecture/kernel/modular-kernels.html
+++ b/en/devices/architecture/kernel/modular-kernels.html
@@ -599,7 +599,7 @@ where to load the DT blob from.</p>
<p>Requirements for Device Tree Overlay support (if used):</p>
<ul>
-<li>Device should have new device tree blob for overlay (DTBO) partion per
+<li>Device should have new device tree blob for overlay (DTBO) partition per
kernel image for board–specific DT overlay (for details on the partition format,
see <a href="/devices/architecture/dto/partitions.html">DTB/DTBO Partitions</a>.
The assumption is that bootloader already knows where and how to load the
diff --git a/en/devices/automotive/images/automotive_power_class_diagram.png b/en/devices/automotive/images/automotive_power_class_diagram.png
index 736dadb8..ac46c2c3 100644
--- a/en/devices/automotive/images/automotive_power_class_diagram.png
+++ b/en/devices/automotive/images/automotive_power_class_diagram.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_deep_sleep.png b/en/devices/automotive/images/automotive_power_deep_sleep.png
index 2ccfda75..a4ee79f9 100644
--- a/en/devices/automotive/images/automotive_power_deep_sleep.png
+++ b/en/devices/automotive/images/automotive_power_deep_sleep.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_deep_sleep_exit.png b/en/devices/automotive/images/automotive_power_deep_sleep_exit.png
index b920eb20..8ab08220 100644
--- a/en/devices/automotive/images/automotive_power_deep_sleep_exit.png
+++ b/en/devices/automotive/images/automotive_power_deep_sleep_exit.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_object_state.png b/en/devices/automotive/images/automotive_power_object_state.png
index 0e0aba62..32f3145c 100644
--- a/en/devices/automotive/images/automotive_power_object_state.png
+++ b/en/devices/automotive/images/automotive_power_object_state.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_reference_diagram.png b/en/devices/automotive/images/automotive_power_reference_diagram.png
index 625450f1..8b521c09 100644
--- a/en/devices/automotive/images/automotive_power_reference_diagram.png
+++ b/en/devices/automotive/images/automotive_power_reference_diagram.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_states.png b/en/devices/automotive/images/automotive_power_states.png
index d0c5cab6..8772354f 100644
--- a/en/devices/automotive/images/automotive_power_states.png
+++ b/en/devices/automotive/images/automotive_power_states.png
Binary files differ
diff --git a/en/devices/automotive/power.html b/en/devices/automotive/power.html
index f126825d..084a39bb 100644
--- a/en/devices/automotive/power.html
+++ b/en/devices/automotive/power.html
@@ -21,16 +21,16 @@
limitations under the License.
-->
-<p>Android Automotive (AAE) P introduces a new state – <em>deep sleep</em> – into the AAE P power
-management state machine. To implement this state, AAE P provides a new power management service
+<p>Android 9 introduces a new state – <em>deep sleep</em> – into the power
+management state machine. To implement this state, Android 9 provides a new power management service
and interface: <code>CarPowerManagementService</code> and <code>CarPowerManager</code>.</p>
-<p>State transitions are triggered by the Vehicle MCU (VMCU). To enable AAE to communicate with the
-VMCU, integrators must implement several components. Integrators are responsible for integrating
+<p>State transitions are triggered by the Vehicle MCU (VMCU). To communicate with the VMCU,
+integrators must implement several components. Integrators are responsible for integrating
with the VHAL and the kernel implementation. Integrators are also responsible for disabling wake
sources and ensuring that shutdowns are not postponed indefinitely.</p>
-<h2>Terminology</h2>
+<h2 id=terms>Terminology</h2>
<p>These terms are used throughout this document:</p>
@@ -73,7 +73,7 @@ bringup.</td>
<td>Hibernate</td>
<td>AKA <em>Suspend to Disk</em> (S2D/S4). The SoC is placed into S4 power mode (hibernate) and RAM
content is written to non-volatile media (such as flash or disk) and the entire system is powered
-off. Android does <strong><em>not</em></strong> currently implement hibernate.</td>
+off. Android does <strong><em>not</em></strong> currently implement hibernate.</td>
</tr>
<tr>
<td>Media Processor (MP)</td>
@@ -86,7 +86,7 @@ off. Android does <strong><em>not</em></strong> currently implement hibernate.<
<tr>
<td>System on a Chip (SoC)</td>
<td>Main processor that runs Android, typically supplied by manufacturers such as Intel, Mediatek,
-Nvidia, Qualcomm, Renesas, and Texas Instruments. </td>
+Nvidia, Qualcomm, Renesas, and Texas Instruments.</td>
</tr>
<tr>
<td>Suspend</td>
@@ -112,15 +112,15 @@ communicates with the VMCU via USB, UART, SPI, and GPIO signals. </td>
</tbody>
</table>
-<h2>System design</h2>
+<h2 id=design>System design</h2>
-<p>This section describes how AAE represents the application processor's power state and which
+<p>This section describes how Android 9 represents the application processor's power state and which
modules implement the power management system. This material also describes how these modules work
together and how state transitions typically occur.</p>
-<h3>Car power state machine</h3>
+<h3 id=state>Car power state machine</h3>
-<p>AAE uses a <em>state machine</em> to represent the power state of the AP. This state machine
+<p>Android 9 uses a <em>state machine</em> to represent the power state of the AP. This state machine
provides these five states, as illustrated below:
<p><img src="/devices/automotive/images/automotive_power_states.png"></p>
@@ -136,15 +136,15 @@ When display turns on, the ON: DISP OFF state transitions into ON:FULL (and vice
SHUTDOWN PREPARE and then transitions to OFF or DEEP SLEEP:</p>
<ul>
-<li>Power off</li>
-<li>Suspended to RAM</li>
+<li>Power off.</li>
+<li>Suspended to RAM.</li>
</ul>
<p>When this power management state machine enters the DEEP SLEEP state, the AP runs Suspend to
RAM. For example, the AP suspends its state (such as register stored value) in RAM. When the AP
wakes up, all states are restored.</p>
-<h3>Power management modules</h3>
+<h3 id=module>Power management modules</h3>
<p>These five modules comprise the power management system:</p>
@@ -203,14 +203,14 @@ modules, applications, and services is illustrated below:</p>
<p><b>Figure 2</b>. Power components reference diagram</p>
-<h3>Typical message sequence</h3>
+<h3 id=msg>Typical message sequence</h3>
<p>The previous section described the modules that comprise the power management system. This
section uses the following two examples to explain how the modules and applications communicate:</p>
<ul>
-<li>Enter deep sleep</li>
-<li>Exit deep sleep</li>
+<li>Enter deep sleep.</li>
+<li>Exit deep sleep.</li>
</ul>
<h4>Enter deep sleep</h4>
@@ -262,16 +262,16 @@ provided by the CPM. This method returns these values, as notified from the VMCU
<p><b>Figure 4</b>. Exit deep sleep sequence diagram</p>
-<h2>Programming interfaces provided by CPM</h2>
+<h2 id=cpm>Programming interfaces provided by CPM</h2>
<p>This section describes the Java and C++ API provided by the CPM for system applications and
services. The process to call the CPM in C++ is identical to that used by the Java API. This API
enables the system software to:</p>
<ul>
-<li>Monitor the AP's power state changes</li>
-<li>Acquire boot reasons from the CPMS</li>
-<li>Request the VMCU to shut down the AP on the next suspend instruction</li>
+<li>Monitor power state changes in the AP.</li>
+<li>Acquire boot reasons from the CPMS.</li>
+<li>Request the VMCU to shut down the AP on the next suspend instruction.</li>
</ul>
<p><code>PowerTestFragment.java</code> in <code>com.google.android.car.kitchensink.power</code>
@@ -282,7 +282,7 @@ illustrates how to use these APIs in Java. Use these steps to call the APIs prov
<li>Call the appropriate method on the object created in Step 1.</li>
</ol>
-<h3>Creating a CarPowerManager object</h3>
+<h3 id=object>Creating a CarPowerManager object</h3>
<p>To create a CPM object, call the Car object's <code>getCarManager()</code> method. This method is
a facade used to create CM objects. Specify <code>android.car.Car.POWER_SERVICE</code> as an
@@ -297,7 +297,7 @@ CarPowerManager powerManager =
</pre>
</div>
-<h2>CarPowerStateListener and registration</h2>
+<h2 id=reg>CarPowerStateListener and registration</h2>
<p>System applications and services can receive power state change notifications by implementing
<code>CarPowerManager.CarPowerStateListener</code>. This interface defines one method
@@ -358,7 +358,7 @@ following table:</p>
</tbody>
</table>
-<h3>CarPowerStateListener unregistration</h3>
+<h3 id=dereg>CarPowerStateListener unregistration</h3>
<p>To unregister all listener objects registered to CPM, call the <code>clearListener</code> method:</p>
@@ -367,7 +367,7 @@ powerManager.clearListener();
</pre>
</div>
-<h3>Boot reason acquisition</h3>
+<h3 id=boot>Boot reason acquisition</h3>
<p>To acquire the boot reason, call the <code>getBootReason</code> method, which communicates with
the CPMS and returns one of the following five boot reasons:</p>
@@ -424,29 +424,29 @@ try{
<p>This method throws a <code>CarNotConnectedException</code> when it fails to communicate with the
CPMS.</p>
-<h3>Shutdown request on next suspend</h3>
+<h3 id=shutdown>Shutdown request on next suspend</h3>
<p>The <code>requestShutdownOnNextSuspend()</code>method instructs CPMS to shut down instead of deep
sleep at the next opportunity.</p>
-<h2>System integration on your Android implementation</h2>
+<h2 id=integration>System integration on your Android implementation</h2>
<p>Integrators are responsible for implementing the following items:</p>
<ul>
-<li>Kernel interface to suspend Android</li>
+<li>Kernel interface to suspend Android.</li>
<li>The VHAL to:<ul type="circle">
-<li>Propagate the initiation of suspend or shutdown from the car to Android</li>
-<li>Send the shutdown ready message from Android to the car</li>
-<li>Initiate shutdown or suspend of Android via the Linux kernel interface</li>
-<li>Propagate the wake reason from the car to Android upon resume from suspend</li>
+<li>Propagate the initiation of suspend or shutdown from the car to Android.</li>
+<li>Send the shutdown ready message from Android to the car.</li>
+<li>Initiate shutdown or suspend of Android via the Linux kernel interface.</li>
+<li>Propagate the wake reason from the car to Android upon resume from suspend.</li>
</ul>
-<li>Wakesources to be disabled when the device is in suspend</li>
+<li>Wakesources to be disabled when the device is in suspend.</li>
<li>Applications to shut down quickly enough so as not to indefinitely postpone the shutdown
-process</li>
+process.</li>
</ul>
-<h3>Kernel interface: /sys/power/state</h3>
+<h3 id=kernel>Kernel interface: /sys/power/state</h3>
<p>First, implement the Linux suspend power state. Android places a device into suspend mode when
an application or service writes <code>mem</code> into a file located at
@@ -455,15 +455,15 @@ the VMCU that the device has shut down completely. The Integrator is also respon
any race conditions between VHAL sending the final message to the VMCU and the system going into
suspend or shutdown mode.</p>
-<h3>VHAL responsibility</h3>
+<h3 id=vhal>VHAL responsibility</h3>
<p>The VHAL provides an interface between the vehicle network and Android. The VHAL:</p>
<ul>
-<li>Propagates the initiation of suspend or shutdown from the car to Android</li>
-<li>Sends the shutdown ready message from Android to the car</li>
-<li>Initiates the shutdown or suspend of Android via the Linux kernel interface</li>
-<li>Propagates the wake reason from the car to Android upon resume from suspend</li>
+<li>Propagates the initiation of suspend or shutdown from the car to Android.</li>
+<li>Sends the shutdown ready message from Android to the car.</li>
+<li>Initiates the shutdown or suspend of Android via the Linux kernel interface.</li>
+<li>Propagates the wake reason from the car to Android upon resume from suspend.</li>
</ul>
<p>When the CPMS informs the VHAL that it is ready to shut down, the VHAL sends the shutdown ready
@@ -503,7 +503,7 @@ instruct the VMCU that it is safe to remove power from the device.</p>
integers:</p>
<ul>
-<li><code>int32Values[0]</code>: <code>VehicleApPowerStateReport</code> enum of current state </li>
+<li><code>int32Values[0]</code>: <code>VehicleApPowerStateReport</code> enum of the current state.</li>
<li><code>int32Values[1]</code>: Time in milliseconds to postpone or sleep/shutdown. This value
depends on the first value.</li>
</ul>
@@ -517,7 +517,7 @@ specific descriptions, which are stored in the
<tr>
<th><strong>Value name</strong></th>
<th><strong>Description</strong></th>
-<th><strong>Second value</strong></th>
+<th><strong>Second&nbsp;value</strong></th>
</tr>
</thead>
<tbody>
@@ -562,7 +562,7 @@ value.</td>
<p>The state can be set asynchronously (in the case of <code>BOOT_COMPLETE</code>) or in response to
a request via the VMCU. When the state is set to <code>SHUTDOWN_START</code>,
-<code>DEEP_SLEEP_ENTRY,</code> or <code>SHUTDOWN_POSTPONE</code>, an integer value in
+<code>DEEP_SLEEP_ENTRY,</code> or <code>SHUTDOWN_POSTPONE</code>, an integer value in
milliseconds is sent to notify the VMCU for how long the AP must postpone shutdown or sleep.</p>
<h4>AP_POWER_STATE_REQ</h4>
@@ -572,14 +572,14 @@ two integers:</p>
<ul>
<li><code>int32Values[0]</code>: <code>VehicleApPowerStateReq</code> enum value, which represents
-the new state into which to transition</li>
-<li><code>int32Values[1]</code>: <code>VehicleApPowerStateShutdownParam</code> enum value. This is
-sent only for a <code>SHUTDOWN_PREPARE</code> message and conveys to Android what options it
-contains.</li>
+the new state into which to transition.</li>
+<li><code>int32Values[1]</code>: <code>VehicleApPowerStateShutdownParam</code> enum value. This
+ value os sent only for a <code>SHUTDOWN_PREPARE</code> message and transmits to Android the
+ options it contains.</li>
</ul>
<p>The first integer value represents the new state into which Android is to transit. The semantics
-are defined in <code>types.hal</code> and provided in the following table:</p>
+are defined in <code>types.hal</code> and provided in the following table:</p>
<table>
<thead>
@@ -677,24 +677,24 @@ a specific duration, as specified in <code>VehicleApPowerSetState</code>#SHUTDOW
</tbody>
</table>
-<h3>Wake sources</h3>
+<h3 id=wake>Wake sources</h3>
<p>Use Integrator to disable the appropriate wake sources when the device is in suspend mode.
-Common wake sources include heartbeats, modem, wifi, and Bluetooth. The only valid wake source must
+Common wake sources include heartbeats, modem, wifi, and Bluetooth. The only valid wake source must
be an interrupt from the VMCU to wake up the SoC. This assumes that the VMCU can listen to the modem
-for remote wakeup events (such as remote engine start). If this functionality is pushed to the AP,
+for remote wakeup events (such as remote engine start). If this functionality is pushed to the AP,
then another wake source to service the modem must be added. In the current design, the Integrator
-supplies a file with a list of wake sources to be turned off. The CPMS iterates through this file
+supplies a file with a list of wake sources to be turned off. The CPMS iterates through this file
and manages the turning off and on of the wake sources at suspend time.</p>
-<h3>Applications</h3>
+<h3 id=apps>Applications</h3>
<p>OEMs must be careful to write applications so that they can be shut down quickly and not postpone
the process indefinitely. </p>
-<h2>Appendix</h2>
+<h2 id=app>Appendix</h2>
-<h3>Directories in the source code tree</h3>
+<h3 id=tree>Directories in the source code tree</h3>
<table>
<thead>
@@ -731,7 +731,7 @@ the process indefinitely. </p>
</tbody>
</table>
-<h3>Class diagram</h3>
+<h3 id=diagram>Class diagram</h3>
<p>This class diagram displays the Java classes and interfaces in the power management system:</p>
@@ -739,7 +739,7 @@ the process indefinitely. </p>
<p><b>Figure 5</b>. Power class diagram</p>
-<h3>Object relationship </h3>
+<h3 id=rel>Object relationship</h3>
<p>The following graph illustrates which objects have references to other objects. An edge
means that the source object holds a reference to the target object. For example, VehicleHAL has a
diff --git a/en/devices/camera/camera3.html b/en/devices/camera/camera3.html
index bb2e6833..71e90a34 100644
--- a/en/devices/camera/camera3.html
+++ b/en/devices/camera/camera3.html
@@ -30,7 +30,7 @@ to your underlying camera driver and hardware. Android 8.0 introduced
<a href="/devices/architecture/treble">Treble</a>, switching the CameraHal API
to a stable interface defined by the HAL Interface Description Language (HIDL).
If you have previously developed a camera
-HAL module and driver for older versions of Android, be aware of significant
+HAL module and driver for Android 7.0 and lower, be aware of significant
changes in the camera pipeline.</p>
<h2 id="v3-enhance">Camera HAL3 features</h2>
@@ -84,12 +84,12 @@ may be repeated indefinitely (with <code>setRepeatingRequest()</code>). Captures
have priority over repeating requests.</p>
<img src="images/camera_simple_model.png" alt="Camera data model" id="figure2" />
-<p class="img-caption"><strong>Figure 2.</strong> Camera core operation model</p>
+<p class="img-caption"><strong>Figure 1.</strong> Camera core operation model</p>
<h2 id="overview">Camera HAL1 overview</h2>
-<aside class="note"><strong>Note:</strong> Camera HAL1 has been deprecated. New
-devices should use Camera HAL3.</aside>
+<aside class="note"><strong>Note:</strong> As Camera HAL1 has been deprecated,
+ Camera HAL3 is recommended for devices launching on Android 9 or higher.</aside>
<p>Version 1 of the camera subsystem was designed as a black box with high-level
controls and the following three operating modes:</p>
@@ -105,7 +105,7 @@ hard to implement new features such as burst mode, which falls between two of
the operating modes.</p>
<img src="images/camera_block.png" alt="Camera block diagram" id="figure1" />
-<p class="img-caption"><strong>Figure 1.</strong> Camera components</p>
+<p class="img-caption"><strong>Figure 2.</strong> Camera components</p>
<p>Android 7.0 continues to support camera HAL1 as many devices still rely on
it. In addition, the Android camera service supports implementing both HALs (1
diff --git a/en/devices/tech/debug/asan.html b/en/devices/tech/debug/asan.html
index 9ea32939..29df8b6d 100644
--- a/en/devices/tech/debug/asan.html
+++ b/en/devices/tech/debug/asan.html
@@ -44,7 +44,8 @@ HWASan is non-deterministic. There are only 256 possible tag values, so there is
probability of missing any bug. HWAsan does not have ASan's limited-size redzones for
detecting overflows and limited-capacity quarantine for detecting use-after-free,
so it does not matter to HWAsan how large the overflow is or how long ago the memory
-was deallocated. This makes HWASan better than ASan.</p>
+was deallocated. This makes HWASan better than ASan. You can read more about
+<a href="http://clang.llvm.org/docs/HardwareAssistedAddressSanitizerDesign.html" class="external">the design of HWAsan</a>.</p>
<p>Valgrind's Memcheck tool is similar, but ASan also detects stack/global overflows
in addition to heap overflows, and is much faster with less memory overhead. Conversely,
@@ -60,10 +61,15 @@ instead.</p>
<h2 id="using-hwasan">Using HWAsan</h2>
-<p>As of December 2018 only Pixel 2 and Pixel 2 XL are supported. Supporting another device
-requires backporting several kernel patches. The Android team is working on getting those into
-the common kernel.
-You may also need to remove some optional extras to make room on your system partition for the
+<p>As of February 2019 only Pixel 2 and Pixel 2 XL support HWAsan. The Android team is working on
+getting the necessary patches into the common kernel, but for now supporting another device requires
+backporting these kernel patches:</p>
+<ul>
+<li><a href="https://lore.kernel.org/patchwork/project/lkml/list/?series=375855" class="external">arm64: untag user pointers passed to the kernel</a></li>
+<li><a href="https://lore.kernel.org/patchwork/project/lkml/list/?series=375865" class="external">arm64 relaxed ABI</a></li>
+</ul>
+
+<p>You may also need to remove some optional extras to make room on your system partition for the
larger libraries. See the <code>walleye_hwasan</code> target for an example.</p>
<p>Use the following commands to build the entire platform using HWASan:</p>
diff --git a/en/devices/tech/debug/gdb.html b/en/devices/tech/debug/gdb.html
index 49d62aa3..34096fb6 100644
--- a/en/devices/tech/debug/gdb.html
+++ b/en/devices/tech/debug/gdb.html
@@ -162,5 +162,47 @@ the following property:</p>
set arm fallback-mode arm # or thumb
</pre>
+<h2 id="vscode">Debugging with VS Code</h2>
+<p>GDB supports debugging platform code on
+ <a href="https://code.visualstudio.com/" class="external">Visual Studio Code</a>.
+ You can use the
+ VS Code debugger frontend instead of the GDB CLI interface to control and
+ debug native code running on devices.</p>
+<p>Before using VS Code for debugging, make sure you install the
+ <a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools" class="external">
+ C/C++ extension</a>.</p>
+<p>To debug code using VS Code:</p>
+<ol>
+ <li>Ensure all build artifacts (such as symbols) required to run
+ <code>gdbclient.py</code> are present.</li>
+ <li>
+ <p>Run the following command:</p>
+ <pre class="prettyprint"><code class="devsite-terminal">gdbclient.py <var>-p pid | -n proc-name | -r ...</var> --setup-forwarding vscode <var>ANY_OTHER_FLAGS</var></code></pre>
+ <p>This prints a JSON object and <code>gdbclient.py</code> continues running.
+ This is expected; do not kill the <code>gdbclient.py</code> program.</p>
+ </li>
+ <li>In the debugging tab in VS Code, select
+ <strong>add configuration</strong>, then select
+ <strong>C/C++ gdb attach</strong>.
+ This opens a <code>launch.json</code> file and adds a new JSON object to a
+ list.
+ </li>
+ <li>Delete the newly added debugger configuration.</li>
+ <li>Copy the JSON object printed by <code>gdbclient.py</code> and paste it
+ into the object you just deleted. Save the changes.
+ </li>
+ <li>To reload the window to refresh the debugger list, press
+ <strong>Ctrl+Shift+P</strong> and type "reload window".
+ </li>
+ <li>Select the new debugger configuration and press
+ <strong>run</strong>. The debugger should connect after 10 to 30 seconds.
+ </li>
+ <li>When you are done debugging, go to the terminal running
+ <code>gdbclient.py</code> and press <strong>enter</strong> to end the
+ <code>gdbclient.py</code> program.
+ </li>
+</ol>
+<p>After setting up the debugger configuration for the first time,
+ you can skip steps 3 through 6.</p>
</body>
</html>
diff --git a/en/devices/tech/power/values.html b/en/devices/tech/power/values.html
index e4c68426..a2ea8388 100644
--- a/en/devices/tech/power/values.html
+++ b/en/devices/tech/power/values.html
@@ -5,6 +5,7 @@
<meta name="book_path" value="/_book.yaml" />
</head>
<body>
+ {% include "_versions.html" %}
<!--
Copyright 2017 The Android Open Source Project
@@ -104,17 +105,18 @@ sample file in AOSP, see
<th>Example Value</th>
<th>Notes</th>
</tr>
+
<tr>
- <td>none</td>
- <td>Nothing</td>
- <td>0</td>
- <td></td>
+ <td>ambient.on</td>
+ <td>Additional power used when screen is in doze/ambient/always-on mode instead of off.</td>
+ <td>around 100 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>screen.on</td>
<td>Additional power used when screen is turned on at minimum brightness.</td>
- <td>200mA</td>
+ <td>200 mA</td>
<td>Includes touch controller and display backlight. At 0 brightness, not the
Android minimum which tends to be 10 or 20%.</td>
</tr>
@@ -123,7 +125,7 @@ sample file in AOSP, see
<td>screen.full</td>
<td>Additional power used when screen is at maximum brightness, compared to
screen at minimum brightness.</td>
- <td>100mA-300mA</td>
+ <td>100 mA-300 mA</td>
<td>A fraction of this value (based on screen brightness) is added to the
screen.on value to compute the power usage of the screen.</td>
</tr>
@@ -132,44 +134,43 @@ sample file in AOSP, see
<td>wifi.on</td>
<td>Additional power used when Wi-Fi is turned on but not receiving,
transmitting, or scanning.</td>
- <td>2mA</td>
- <td></td>
+ <td>2 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>wifi.active</td>
<td>Additional power used when transmitting or receiving over Wi-Fi.</td>
- <td>31mA</td>
- <td></td>
+ <td>31 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>wifi.scan</td>
<td>Additional power used when Wi-Fi is scanning for access points.</td>
- <td>100mA</td>
- <td></td>
+ <td>100 mA</td>
+ <td> - </td>
</tr>
<tr>
- <td>dsp.audio</td>
+ <td>audio</td>
<td>Additional power used when audio decoding/encoding via DSP.</td>
- <td>14.1mA</td>
- <td>Reserved for future use.</td>
+ <td>around 10 mA</td>
+ <td>Used for DSP audio.</td>
</tr>
-
<tr>
- <td>dsp.video</td>
+ <td>video</td>
<td>Additional power used when video decoding via DSP.</td>
- <td>54mA</td>
- <td>Reserved for future use.</td>
+ <td>around 50 mA</td>
+ <td>Used for DSP video.</td>
</tr>
<tr>
<td>camera.avg</td>
<td>Average power use by the camera subsystem for a typical camera
application.</td>
- <td>600mA</td>
+ <td>600 mA</td>
<td>Intended as a rough estimate for an application running a preview
and capturing approximately 10 full-resolution pictures per minute.</td>
</tr>
@@ -177,37 +178,44 @@ sample file in AOSP, see
<tr>
<td>camera.flashlight</td>
<td>Average power used by the camera flash module when on.</td>
- <td>200mA</td>
- <td></td>
+ <td>200 mA</td>
+ <td> - </td>
</tr>
+<tr>
+ <td>gps.signalqualitybased</td>
+ <td>Additional power used by GPS based on signal strength. This is a multi-value entry,
+ one per signal strength, from weakest to strongest.</td>
+ <td> 30 mA, 10 mA </td>
+ <td> - </td>
+</tr>
<tr>
<td>gps.on</td>
<td>Additional power used when GPS is acquiring a signal.</td>
- <td>50mA</td>
- <td></td>
+ <td>50 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>radio.active</td>
<td>Additional power used when cellular radio is transmitting/receiving.</td>
- <td>100mA-300mA</td>
- <td></td>
+ <td>100 mA-300 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>radio.scanning</td>
<td>Additional power used when cellular radio is paging the tower.</td>
- <td>1.2mA</td>
- <td></td>
+ <td>1.2 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>radio.on</td>
- <td>Additional power used when the cellular radio is on. Multi-value entry,
+ <td>Additional power used when the cellular radio is on. This is a multi-value entry,
one per signal strength (no signal, weak, moderate, strong).</td>
- <td>1.2mA</td>
+ <td>1.2 mA</td>
<td>Some radios boost power when they search for a cell tower and do not
detect a signal. Values can be the same or decrease with increasing signal
strength. If you provide only one value, the same value is used for all
@@ -223,7 +231,7 @@ sample file in AOSP, see
the controller. If there are multiple receive or transmit states, the average
of those states is taken. In addition, the system now collects data for
<a href="#le-bt-scans">Low Energy (LE) and Bluetooth scans</a>.<br><br>Android
- N and later no longer use the Bluetooth power values for bluetooth.active
+ 7.0 and later no longer use the Bluetooth power values for bluetooth.active
(used when playing audio via Bluetooth A2DP) and bluetooth.on (used when
Bluetooth is on but idle).</td>
</tr>
@@ -247,12 +255,19 @@ sample file in AOSP, see
</tr>
<tr>
+ <td>modem.controller.sleep</td>
+ <td> Average current draw (mA) of the modem controller when asleep.</td>
+ <td> 0 mA </td>
+ <td rowspan=5>These values are not estimated, but taken from the data sheet of the controller.
+ If there are multiple receive states, the average of those states is taken. If there are
+ multiple transmit states, specifying a value for each transmit state is supported
+ starting in Android {{ androidPVersionNumber}}.</td>
+</tr>
+
+<tr>
<td>modem.controller.idle</td>
<td>Average current draw (mA) of the modem controller when idle.</td>
<td> - </td>
- <td rowspan=4>These values are not estimated, but taken from the data sheet of
- the controller. If there are multiple receive or transmit states, the average
- of those states is taken.</td>
</tr>
<tr>
@@ -263,8 +278,9 @@ sample file in AOSP, see
<tr>
<td>modem.controller.tx</td>
- <td>Average current draw (mA) of the modem controller when transmitting.</td>
- <td> - </td>
+ <td>Average current draw (mA) of the modem controller when transmitting at different RF power
+ levels. This is a multi-value entry with one value per transmit power level.</td>
+ <td> 100 mA, 200 mA, 300 mA, 400 mA, 500 mA </td>
</tr>
<tr>
@@ -302,8 +318,8 @@ sample file in AOSP, see
<tr>
<td>cpu.speeds</td>
- <td>Multi-value entry that lists each possible CPU speed in KHz.</td>
- <td>125000KHz, 250000KHz, 500000KHz, 1000000KHz, 1500000KHz</td>
+ <td>This is a multi-value entry that lists each possible CPU speed in KHz.</td>
+ <td>125000 KHz, 250000 KHz, 500000 KHz, 1000000 KHz, 1500000 KHz</td>
<td>The number and order of entries must correspond to the mA entries in
cpu.active.</td>
</tr>
@@ -312,15 +328,15 @@ sample file in AOSP, see
<td>cpu.idle</td>
<td>Total power drawn by the system when CPUs (and the SoC) are in system
suspend state.</td>
- <td>3mA</td>
- <td></td>
+ <td>3 mA</td>
+ <td> - </td>
</tr>
<tr>
<td>cpu.awake</td>
<td>Additional power used when CPUs are in scheduling idle state
(kernel idle loop); system is not in system suspend state.</td>
- <td>50mA</td>
+ <td>50 mA</td>
<td>Your platform might have more than one idle state in use with differing
levels of power consumption; choose a representative idle state for longer
periods of scheduler idle (several milliseconds). Examine the power graph on
@@ -331,7 +347,7 @@ sample file in AOSP, see
<tr>
<td>cpu.active</td>
<td>Additional power used by CPUs when running at different speeds.</td>
- <td>100mA, 120mA, 140mA, 160mA, 200mA</td>
+ <td>100 mA, 120 mA, 140 mA, 160 mA, 200 mA</td>
<td>Value represents the power used by the CPU rails when running at different
speeds. Set the max speed in the kernel to each of the allowed speeds and peg
the CPU at that speed. The number and order of entries correspond to the
@@ -352,8 +368,8 @@ sample file in AOSP, see
<tr>
<td>battery.capacity</td>
<td>Total battery capacity in mAh.</td>
- <td>3000mAh</td>
- <td></td>
+ <td>3000 mAh</td>
+ <td> - </td>
</tr>
</table>
diff --git a/en/security/bulletin/2019.html b/en/security/bulletin/2019.html
index f5e41f15..9212b8ca 100644
--- a/en/security/bulletin/2019.html
+++ b/en/security/bulletin/2019.html
@@ -196,15 +196,13 @@ Android Security Bulletins</a> homepage.</p>
-->
<tr>
<td><a href="/security/bulletin/2019-01-01.html">January 2019</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
- -->
</td>
<td>January 7, 2019</td>
<td>2019-01-01<br>
diff --git a/en/security/bulletin/index.html b/en/security/bulletin/index.html
index ee61a610..aba83c43 100644
--- a/en/security/bulletin/index.html
+++ b/en/security/bulletin/index.html
@@ -72,15 +72,13 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
</tr>
<tr>
<td><a href="/security/bulletin/2019-01-01.html">January 2019</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
- -->
</td>
<td>January 7, 2019</td>
<td>2019-01-01<br>
diff --git a/en/security/bulletin/pixel/2019.html b/en/security/bulletin/pixel/2019.html
index 65eb244d..e580dd95 100644
--- a/en/security/bulletin/pixel/2019.html
+++ b/en/security/bulletin/pixel/2019.html
@@ -185,15 +185,13 @@ Bulletins</a> homepage.</p>
-->
<tr>
<td><a href="/security/bulletin/pixel/2019-01-01.html">January 2019</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
- -->
</td>
<td>January 7, 2019</td>
<td>2019-01-05</td>
diff --git a/en/security/bulletin/pixel/index.html b/en/security/bulletin/pixel/index.html
index 45a70c7b..d1382362 100644
--- a/en/security/bulletin/pixel/index.html
+++ b/en/security/bulletin/pixel/index.html
@@ -62,15 +62,13 @@ class="external">supported Google Pixel and Nexus devices</a> (Google devices).
</tr>
<tr>
<td><a href="/security/bulletin/pixel/2019-01-01.html">January 2019</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
- -->
</td>
<td>January 7, 2018</td>
<td>2018-12-05</td>
diff --git a/en/security/encryption/file-based.html b/en/security/encryption/file-based.html
index d62bac19..9c7787c9 100644
--- a/en/security/encryption/file-based.html
+++ b/en/security/encryption/file-based.html
@@ -145,8 +145,8 @@ following dependencies:
<ul>
<li><strong>Kernel Support</strong> for Ext4 encryption or F2FS encryption
-(Kernel config option: <code>EXT4_FS_ENCRYPTION</code> or
-<code>F2FS_FS_ENCRYPTION</code>)
+(Kernel config option: <code>CONFIG_EXT4_ENCRYPTION</code> or
+<code>CONFIG_F2FS_FS_ENCRYPTION</code>)
<li><strong><a
href="/security/keystore/index.html">Keymaster
Support</a></strong> with a HAL version 1.0 or 2.0. There is no support for
diff --git a/en/setup/build/initializing.html b/en/setup/build/initializing.html
index 24c697ff..ef36dd07 100644
--- a/en/setup/build/initializing.html
+++ b/en/setup/build/initializing.html
@@ -332,7 +332,7 @@ hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/andr
For older versions of Mac OS (10.8 or earlier), you must install Xcode from
the <a href="http://developer.apple.com/" class="external">Apple developer
site</a>. If you are not already registered as an Apple developer, you must
- must create an Apple ID to download.
+ create an Apple ID to download.
</li>
<li>Install MacPorts from
<a href="http://www.macports.org/install.php">macports.org</a>. Ensure
diff --git a/en/setup/build/known-issues.html b/en/setup/build/known-issues.html
index ef229a28..6a908c0e 100644
--- a/en/setup/build/known-issues.html
+++ b/en/setup/build/known-issues.html
@@ -32,7 +32,7 @@ fail with http errors, typically 403 or 500.</p>
<p><strong>Cause:</strong> There are quite a few possible causes, most often
related to http proxies, which have difficulties handling the
large amounts of data getting transferred.</p>
-<p><strong>Fix:</strong> While there's no general solution, using python 2.7
+<p><strong>Fix:</strong> While there's no general solution, using Python 2.7
and explicitly using <code>repo sync -j1</code> have been reported to
improve the situation for some users.</p>
diff --git a/ja/security/bulletin/2019-01-01.html b/ja/security/bulletin/2019-01-01.html
index 7fdf9132..3518cfaf 100644
--- a/ja/security/bulletin/2019-01-01.html
+++ b/ja/security/bulletin/2019-01-01.html
@@ -30,7 +30,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
下記の問題のうち最も重大度の高いものは、システムに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあります。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象のデバイスでその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
</p>
<p>
-この新たに報告された問題によってユーザーのデバイスが実際に不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="#mitigations">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="/security/enhancements/">Android と Google サービスでのリスク軽減策</a>をご覧ください。
+この新たに報告された問題によってユーザーのデバイスが実際に不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google サービスでのリスク軽減策</a>をご覧ください。
</p>
<p class="note">
<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2019-01-01">2019 年 1 月の Pixel のアップデートに関する公開情報</a>でご覧いただけます。
diff --git a/ja/security/bulletin/2019.html b/ja/security/bulletin/2019.html
index 7b828bd7..0d1753e6 100644
--- a/ja/security/bulletin/2019.html
+++ b/ja/security/bulletin/2019.html
@@ -191,7 +191,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
+ </tr><tr><td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
<td>準備中
<!--
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
@@ -205,7 +205,7 @@
<td>2019 年 1 月 7 日</td>
<td>2019-01-01<br />
2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/pixel/2019-01-01.html b/ja/security/bulletin/pixel/2019-01-01.html
index 6b38f711..a216a815 100644
--- a/ja/security/bulletin/pixel/2019-01-01.html
+++ b/ja/security/bulletin/pixel/2019-01-01.html
@@ -112,10 +112,10 @@ Pixel のアップデートに関する公開情報には、<a href="https://sup
セキュリティ パッチレベル 2019-01-05 以降では、セキュリティ パッチレベル 2019-01-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel のアップデート スケジュール</a>に記載されている手順をご覧ください。
</p>
<p id="type">
-<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
+<strong>2. 「タイプ」<em></em>列の項目はどういう意味ですか?</strong>
</p>
<p>
-脆弱性の詳細の表で「タイプ<em></em>」列に記載した項目は、セキュリティの脆弱性の分類を示しています。
+脆弱性の詳細の表で「タイプ」<em></em>列に記載した項目は、セキュリティの脆弱性の分類を示しています。
</p>
<table>
<colgroup><col width="25%" />
@@ -180,7 +180,7 @@ Pixel のアップデートに関する公開情報には、<a href="https://sup
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
+<strong>4. 「参照」<em></em>列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、<a href="https://developers.google.com/android/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel デバイス用最新バイナリ ドライバに通常含まれています。
diff --git a/ja/security/bulletin/pixel/2019.html b/ja/security/bulletin/pixel/2019.html
index fccd8401..7287edd9 100644
--- a/ja/security/bulletin/pixel/2019.html
+++ b/ja/security/bulletin/pixel/2019.html
@@ -179,7 +179,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
+ </tr><tr><td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
<td>準備中
<!--
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
@@ -192,7 +192,7 @@
</td>
<td>2019 年 1 月 7 日</td>
<td>2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/2018.html b/ko/security/bulletin/2018.html
index bec8c6a6..6fd9b759 100644
--- a/ko/security/bulletin/2018.html
+++ b/ko/security/bulletin/2018.html
@@ -1,207 +1,209 @@
<html devsite><head>
<title>2018년 Android 보안 게시판</title>
- <meta name="project_path" value="/_project.yaml"/>
<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
+ <!--
+ 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
+ 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.
- -->
+ 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>이 페이지에는 사용 가능한 2018년 Android 보안 게시판이 모두 포함되어 있습니다. 게시판의 전체 목록을 확인하려면 <a href="/security/bulletin/index.html">Android 보안 게시판</a> 홈페이지를 참조하세요.</p>
+ <p>이 페이지에는 사용 가능한 2018년 Android 보안 게시판이 모두 포함되어 있습니다. 게시판의 전체 목록을
+확인하려면 <a href="/security/bulletin/index.html">Android 보안 게시판</a> 홈페이지를 참조하세요.</p>
-<table>
- <colgroup><col width="15%" />
- <col width="49%" />
- <col width="17%" />
- <col width="19%" />
- </colgroup><tbody><tr>
- <th>게시판</th>
- <th>언어</th>
- <th>게시일</th>
- <th>보안 패치 수준</th>
- </tr>
-<tr>
- <td><a href="/security/bulletin/2018-12-01.html">2018년 12월</a></td>
- <td>
- <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-12-01.html">English</a> /
- <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2018년 12월 3일</td>
- <td>2018-12-01<br />
- 2018-12-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-11-01.html">2018년 11월</a></td>
- <td>
- <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-11-01.html">English</a> /
- <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2018년 11월 5일</td>
- <td>2018-11-01<br />
- 2018-11-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-10-01.html">2018년 10월</a></td>
- <td>
- <a href="/security/bulletin/2018-10-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-10-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-10-01.html">English</a> /
- <a href="/security/bulletin/2018-10-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/2018-10-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/2018-10-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2018년 10월 1일</td>
- <td>2018-10-01<br />
- 2018-10-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-09-01.html">2018년 9월</a></td>
- <td>
- <a href="/security/bulletin/2018-09-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-09-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-09-01.html">English</a> /
- <a href="/security/bulletin/2018-09-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/2018-09-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/2018-09-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2018년 9월 4일</td>
- <td>2018-09-01<br />
- 2018-09-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-08-01.html">2018년 8월</a></td>
- <td>
- <a href="/security/bulletin/2018-08-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-08-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-08-01.html">English</a> /
- <a href="/security/bulletin/2018-08-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/2018-08-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/2018-08-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2018 8월 6일</td>
- <td>2018-08-01<br />
- 2018-08-05</td>
- </tr>
+ <table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>게시판</th>
+ <th>언어</th>
+ <th>게시일</th>
+ <th>보안 패치 수준</th>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018년 12월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">简体中文</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2018년 12월 3일</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">2018년 11월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">简体中文</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2018년 11월 5일</td>
+ <td>2018-11-01<br />
+ 2018-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-10-01.html">2018년 10월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-10-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-10-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-10-01.html">English</a> /
+ <a href="/security/bulletin/2018-10-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-10-01.html?hl=zh-cn">简体中文</a> /
+ <a href="/security/bulletin/2018-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2018년 10월 1일</td>
+ <td>2018-10-01<br />
+ 2018-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-09-01.html">2018년 9월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-09-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-09-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-09-01.html">English</a> /
+ <a href="/security/bulletin/2018-09-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-09-01.html?hl=zh-cn">简体中文</a> /
+ <a href="/security/bulletin/2018-09-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2018년 9월 4일</td>
+ <td>2018-09-01<br />
+ 2018-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-08-01.html">2018년 8월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-08-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-08-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-08-01.html">English</a> /
+ <a href="/security/bulletin/2018-08-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-08-01.html?hl=zh-cn">简体中文</a> /
+ <a href="/security/bulletin/2018-08-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2018 8월 6일</td>
+ <td>2018-08-01<br />
+ 2018-08-05</td>
+ </tr>
- <tr>
- <td><a href="/security/bulletin/2018-07-01.html">2018년 7월</a></td>
- <td>
- <a href="/security/bulletin/2018-07-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-07-01.html">English</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?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-06-01.html">English</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?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-05-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-05-01.html">English</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>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-04-01.html">2018년 4월</a></td>
- <td>
- <a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-04-01.html">English</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>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-03-01.html">2018년 3월</a></td>
- <td>
- <a href="/security/bulletin/2018-03-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-03-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-03-01.html">English</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월</td>
- <td>2018-03-01<br />
- 2018-03-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-02-01.html">2018년 2월</a></td>
- <td>
- <a href="/security/bulletin/2018-02-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-02-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-02-01.html">English</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>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2018-01-01.html">2018년 1월</a></td>
- <td>
- <a href="/security/bulletin/2018-01-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/2018-01-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2018-01-01.html">English</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>
- </tr>
-</tbody></table>
+ <tr>
+ <td><a href="/security/bulletin/2018-07-01.html">2018년 7월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-07-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-07-01.html">English</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?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-06-01.html">English</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?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-05-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-05-01.html">English</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>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-04-01.html">2018년 4월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-04-01.html">English</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>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-03-01.html">2018년 3월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-03-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-03-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-03-01.html">English</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월</td>
+ <td>2018-03-01<br />
+ 2018-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-02-01.html">2018년 2월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-02-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-02-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-02-01.html">English</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>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-01-01.html">2018년 1월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-01-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-01-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-01-01.html">English</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>
+ </tr>
+ </tbody></table>
</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/2019-01-01.html b/ko/security/bulletin/2019-01-01.html
index ccea6b31..5e3d3447 100644
--- a/ko/security/bulletin/2019-01-01.html
+++ b/ko/security/bulletin/2019-01-01.html
@@ -53,7 +53,8 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게
<strong>참고:</strong> Google 기기의 최신 무선 업데이트(OTA)
및 펌웨어 이미지 관련 정보는
<a href="/security/bulletin/pixel/2019-01-01">2019년 1월
-Pixel 업데이트 게시판</a>을 참조하세요.
+Pixel 업데이트 게시판</a>
+을 참조하세요.
</p>
<h2 id="mitigations">Android 및 Google 서비스 완화</h2>
diff --git a/ko/security/bulletin/2019.html b/ko/security/bulletin/2019.html
index 4a8b0453..e093ca97 100644
--- a/ko/security/bulletin/2019.html
+++ b/ko/security/bulletin/2019.html
@@ -193,7 +193,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/2019-01-01.html">2019년 1월</a></td>
+ </tr><tr><td><a href="/security/bulletin/2019-01-01.html">2019년 1월</a></td>
<td>출시 예정
<!--
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
@@ -207,7 +207,7 @@
<td>2019년 1월 7일</td>
<td>2019-01-01<br />
2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/pixel/2018-02-01.html b/ko/security/bulletin/pixel/2018-02-01.html
index fe3c39d8..f38a4c8b 100644
--- a/ko/security/bulletin/pixel/2018-02-01.html
+++ b/ko/security/bulletin/pixel/2018-02-01.html
@@ -36,9 +36,8 @@ Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판에서는
업데이트됩니다. 모든 고객은 기기에서 이 업데이트를 수락하는 것이 좋습니다.
</p>
<p class="note">
-<strong>참고:</strong> Google 기기 펌웨어 이미지는 <a href="https://developers.google.com/android/nexus/images">Google
-개발자 사이트</a>
-에 있습니다.
+<strong>참고:</strong> Google 기기 펌웨어 이미지는 <a href="https://developers.google.com/android/nexus/images">Google 개발자 사이트</a>에
+있습니다.
</p>
<h2 id="announcements">공지사항</h2>
<p><a href="/security/bulletin/2018-02-01">2018년 2월 Android 보안 게시판</a>에 설명된
@@ -51,9 +50,7 @@ Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판에서는
<h2 id="security-patches">보안 패치</h2>
<p>
취약성은 영향을 받는 구성요소 아래에 분류되어 있습니다. 여기에는
-문제 설명 및 CVE, 관련 참조,
-<a href="#type">취약성 유형</a>,
-<a href="https://source.android.com/security/overview/updates-resources.html#severity">심각도</a>,
+문제 설명 및 CVE, 관련 참조, <a href="#type">취약성 유형</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">심각도</a>,
업데이트된 Android 오픈소스 프로젝트(AOSP) 버전(해당하는 경우)이 포함된 표가 제시됩니다. 가능한
경우 AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을 버그 ID에
연결합니다. 하나의 버그와 관련된 변경사항이 여러 개인 경우
diff --git a/ko/security/bulletin/pixel/2018-12-01.html b/ko/security/bulletin/pixel/2018-12-01.html
index 12674097..5c9dc258 100644
--- a/ko/security/bulletin/pixel/2018-12-01.html
+++ b/ko/security/bulletin/pixel/2018-12-01.html
@@ -34,9 +34,9 @@ Google 기기의 경우 2018-12-05 보안 패치 수준 이상에서 이 게시
업데이트됩니다. 모든 고객은 기기에서 이 업데이트를 수락하는 것이 좋습니다.
</p>
<p class="note">
-<strong>참고:</strong> Google 기기 펌웨어 이미지는 <a href="https://developers.google.com/android/images" class="external">Google
-개발자 사이트</a>
-에 있습니다.
+<strong>참고:</strong> Google 기기 펌웨어 이미지는
+<a href="https://developers.google.com/android/images" class="external">Google 개발자
+사이트</a>에 있습니다.
</p>
<h2 id="announcements">공지사항</h2>
@@ -281,7 +281,7 @@ QC-CR#2258691</a></td>
</p>
<p>
공개되지 않은 문제는 <em>참조</em> 열의 Android 버그 ID 옆에 * 표시가
-있습니다. 일반적으로 이러한 문제에 관한 업데이트는 <a href="https://developers.google.com/android/drivers" class="external">Google
+되어 있습니다. 일반적으로 이러한 문제에 관한 업데이트는 <a href="https://developers.google.com/android/drivers" class="external">Google
개발자 사이트</a>에서 제공되는 Pixel / Nexus 기기용 최신 바이너리
드라이버에 포함되어 있습니다.
</p>
diff --git a/ko/security/bulletin/pixel/2019-01-01.html b/ko/security/bulletin/pixel/2019-01-01.html
index 75631217..a293334e 100644
--- a/ko/security/bulletin/pixel/2019-01-01.html
+++ b/ko/security/bulletin/pixel/2019-01-01.html
@@ -35,7 +35,8 @@ Android 보안 게시판의 모든 문제를 해결했습니다. 기기의 보
업데이트됩니다. 모든 고객은 기기에서 이 업데이트를 수락하는 것이 좋습니다.
</p>
<p class="note">
-<strong>참고:</strong> Google 기기 펌웨어 이미지는 <a href="https://developers.google.com/android/images" class="external">Google
+<strong>참고:</strong> Google 기기 펌웨어 이미지는
+<a href="https://developers.google.com/android/images" class="external">Google
개발자 사이트</a>
에 있습니다.
</p>
diff --git a/ko/security/bulletin/pixel/2019.html b/ko/security/bulletin/pixel/2019.html
index 79c45459..2815c01f 100644
--- a/ko/security/bulletin/pixel/2019.html
+++ b/ko/security/bulletin/pixel/2019.html
@@ -182,7 +182,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/pixel/2019-01-01.html">2019년 1월</a></td>
+ </tr><tr><td><a href="/security/bulletin/pixel/2019-01-01.html">2019년 1월</a></td>
<td>출시 예정
<!--
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
@@ -195,7 +195,7 @@
</td>
<td>2019년 1월 7일</td>
<td>2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/2018-12-01.html b/ru/security/bulletin/2018-12-01.html
index ec1bbb7c..5726649b 100644
--- a/ru/security/bulletin/2018-12-01.html
+++ b/ru/security/bulletin/2018-12-01.html
@@ -47,7 +47,7 @@
</ul>
<h2 id="2018-12-01-details">Описание уязвимостей (обновление системы безопасности 2018-12-01)</h2>
<p>
-В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2018-12-01. Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Когда несколько изменений относятся к одной ошибке, дополнительные ссылки перечислены в квадратных скобках.
+В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2018-12-01. Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Дополнительные ссылки перечислены в квадратных скобках.
</p>
<h3 id="framework">Framework</h3>
diff --git a/ru/security/bulletin/2019-01-01.html b/ru/security/bulletin/2019-01-01.html
index 98ea3593..97aa8f81 100644
--- a/ru/security/bulletin/2019-01-01.html
+++ b/ru/security/bulletin/2019-01-01.html
@@ -480,7 +480,7 @@ QC-CR#2288358</a></td>
<strong>6. Почему теперь одни уязвимости описываются в этих бюллетенях, а другие – в бюллетенях по безопасности Pixel , а также в остальных бюллетенях партнеров?</strong>
</p>
<p>
-В этом бюллетене описаны уязвимости, которые были устранены в последнем обновлении системы безопасности для устройств Android. Решать дополнительные проблемы, перечисленные в бюллетенях по безопасности партнеров, для этого не потребовалось. Мы рекомендуем производителям чипсетов и устройств Android рассказывать об исправлениях для своих устройств в бюллетенях по безопасности на собственных сайтах, например <a href="https://security.samsungmobile.com/securityUpdate.smsb" class="external">Samsung</a>, <a href="https://lgsecurity.lge.com/security_updates.html" class="external">LGE</a>, а также <a href="/security/bulletin/pixel/" class="external">Pixel </a>.
+В этом бюллетене описаны уязвимости, которые были устранены в последнем обновлении системы безопасности для устройств Android. Решать дополнительные проблемы, перечисленные в бюллетенях по безопасности партнеров, для этого не потребовалось. Мы рекомендуем производителям чипсетов и устройств Android рассказывать об исправлениях для своих устройств в бюллетенях по безопасности на собственных сайтах, например <a href="https://security.samsungmobile.com/securityUpdate.smsb" class="external">Samsung</a>, <a href="https://lgsecurity.lge.com/security_updates.html" class="external">LGE</a> и <a href="/security/bulletin/pixel/" class="external">Pixel </a>.
</p>
<h2 id="versions">Версии</h2>
diff --git a/ru/security/bulletin/2019.html b/ru/security/bulletin/2019.html
index c052bc5c..c5724944 100644
--- a/ru/security/bulletin/2019.html
+++ b/ru/security/bulletin/2019.html
@@ -191,7 +191,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/2019-01-01.html">Январь 2019 г.</a></td>
+ </tr><tr><td><a href="/security/bulletin/2019-01-01.html">Январь 2019 г.</a></td>
<td>Готовится к публикации <!--
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
@@ -204,7 +204,7 @@
<td>7 января 2019 г.</td>
<td>2019-01-01<br />
2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/pixel/2018.html b/ru/security/bulletin/pixel/2018.html
index c7badd3a..ebedd41f 100644
--- a/ru/security/bulletin/pixel/2018.html
+++ b/ru/security/bulletin/pixel/2018.html
@@ -40,8 +40,8 @@
<a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
<td>3 декабря 2018 г.</td>
<td>2018-12-05</td>
@@ -53,21 +53,21 @@
<a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-11-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-11-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
<td>5 ноября 2018 г.</td>
<td>2018-11-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-10-01.html">Октябрь 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-10-01.html">Октябрь 2018 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2018-10-01.html">English</a> /
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
<td>1 октября 2018 г.</td>
<td>2018-10-05</td>
@@ -79,114 +79,114 @@
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>4 сентября 2018 г.</td>
+ <td>4 сентября 2018 г.</td>
<td>2018-09-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-08-01.html">Август 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-08-01.html">Август 2018 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2018-08-01.html">English</a> /
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>6 августа 2018 г.</td>
+ <td>6 августа 2018 г.</td>
<td>2018-08-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-07-01.html">Июль 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-07-01.html">Июль 2018 г.</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>
+<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>2 июля 2018 г.</td>
+ <td>2 июля 2018 г.</td>
<td>2018-07-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-06-01.html">Июнь 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-06-01.html">Июнь 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>4 июня 2018 г.</td>
+ <td>4 июня 2018 г.</td>
<td>2018-06-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-05-01.html">Май 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-05-01.html">Май 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>7 мая 2018 г.</td>
+ <td>7 мая 2018 г.</td>
<td>2018-05-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-04-01.html">Апрель 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-04-01.html">Апрель 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>2 апреля 2018 г.</td>
+ <td>2 апреля 2018 г.</td>
<td>2018-04-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-03-01.html">Март 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-03-01.html">Март 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>Март 2018 г.</td>
+ <td>Март 2018 г.</td>
<td>2018-03-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-02-01.html">Февраль 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-02-01.html">Февраль 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>Февраль 2018 г.</td>
+ <td>Февраль 2018 г.</td>
<td>2018-02-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-01-01.html">Январь 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-01-01.html">Январь 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>Январь 2018 г.</td>
+ <td>Январь 2018 г.</td>
<td>2018-01-05</td>
</tr>
</tbody></table>
diff --git a/ru/security/bulletin/pixel/2019.html b/ru/security/bulletin/pixel/2019.html
index 72c56c46..266e2f6f 100644
--- a/ru/security/bulletin/pixel/2019.html
+++ b/ru/security/bulletin/pixel/2019.html
@@ -179,7 +179,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/pixel/2019-01-01.html">Январь 2019 г.</a></td>
+ </tr><tr><td><a href="/security/bulletin/pixel/2019-01-01.html">Январь 2019 г.</a></td>
<td>Готовится к публикации <!--
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
@@ -191,7 +191,7 @@
</td>
<td>7 января 2019 г.</td>
<td>2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/pixel/index.html b/ru/security/bulletin/pixel/index.html
index ce48112d..62fc13ab 100644
--- a/ru/security/bulletin/pixel/index.html
+++ b/ru/security/bulletin/pixel/index.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>Бюллетени по безопасности Pixel и Nexus</title>
+ <title>Бюллетени по обновлениям Pixel</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -20,14 +20,15 @@
limitations under the License.
-->
-<p>На этой странице собраны ежемесячные бюллетени по безопасности Pixel  и Nexus. Они выпускаются как приложение к <a href="/security/bulletin">бюллетеням по безопасности Android</a>. В них описаны дополнительные обновления системы безопасности и улучшения функциональных возможностей для <a href="https://support.google.com/nexus/answer/4457705">поддерживаемых устройств Pixel и Nexus</a>.</p>
+<p>Здесь собраны ежемесячные бюллетени по обновлениям Pixel. Раньше они назывались бюллетенями по безопасности Pixel и Nexus. Эти бюллетени выпускаются как приложение к <a href="/security/bulletin">бюллетеням по безопасности Android</a>. В них описаны дополнительные обновления системы безопасности и улучшения функциональных возможностей для <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">поддерживаемых устройств Pixel и Nexus</a> (устройства Google).
+</p>
<h3 id="notification">Уведомления</h3>
-<p>Устройства Pixel и Nexus начинают получать автоматические обновления системы безопасности (OTA) со дня выхода ежемесячного бюллетеня. Обычно на устройства Nexus обновления приходят в течение 10–11 дней. Образы встроенного ПО Nexus также выходят каждый месяц и публикуются на <a href="https://developers.google.com/android/nexus/images">сайте для разработчиков</a>.
-</p>
-<h3 id="sources">Источники</h3>
-<p>Перечисленные здесь обновления получены из разных источников: из Android Open Source Project (AOSP), из сообщества Linux и от производителей процессоров. Ссылки на исправления для платформы Android в хранилище AOSP добавляются в бюллетень в течение 24–48 часов после его публикации.</p>
+ <p>Устройства Google начинают получать автоматические обновления системы безопасности (OTA) со дня выхода ежемесячного бюллетеня. Обычно на устройства Google обновления приходят в течение 10–11 дней. Образы встроенного ПО для устройств Google находятся на <a href="https://developers.google.com/android/images" class="external">сайте для разработчиков</a>.
+ </p>
+<h3 id="sources">Источники</h3>
+ <p>Перечисленные здесь обновления получены из разных источников: из Android Open Source Project (AOSP), из сообщества Linux и от производителей процессоров. Ссылки на исправления для платформы Android в хранилище AOSP добавляются в бюллетень в течение 24–48 часов после его публикации.</p>
<h3 id="bulletins">Бюллетени</h3>
@@ -43,14 +44,28 @@
<th>Обновление системы безопасности</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">Январь 2019 г.</a></td>
+ <td>Готовится к публикации <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>7 января 2018 г.</td>
+ <td>2018-12-05</td>
+ </tr>
+<tr>
<td><a href="/security/bulletin/pixel/2018-12-01.html">Декабрь 2018 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
<a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
<td>3 декабря 2018 г.</td>
<td>2018-12-05</td>
@@ -62,8 +77,8 @@
<a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-11-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-11-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
<td>5 ноября 2018 г.</td>
<td>2018-11-05</td>
@@ -75,8 +90,8 @@
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
<td>1 октября 2018 г.</td>
<td>2018-10-05</td>
@@ -88,153 +103,153 @@
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>4 сентября 2018 г.</td>
+ <td>4 сентября 2018 г.</td>
<td>2018-09-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-08-01.html">Август 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-08-01.html">Август 2018 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2018-08-01.html">English</a> /
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>6 августа 2018 г.</td>
+ <td>6 августа 2018 г.</td>
<td>2018-08-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-07-01.html">Июль 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-07-01.html">Июль 2018 г.</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>
+<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>2 июля 2018 г.</td>
+ <td>2 июля 2018 г.</td>
<td>2018-07-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-06-01.html">Июнь 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-06-01.html">Июнь 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>4 июня 2018 г.</td>
+ <td>4 июня 2018 г.</td>
<td>2018-06-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-05-01.html">Май 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-05-01.html">Май 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>7 мая 2018 г.</td>
+ <td>7 мая 2018 г.</td>
<td>2018-05-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-04-01.html">Апрель 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-04-01.html">Апрель 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>2 апреля 2018 г.</td>
+ <td>2 апреля 2018 г.</td>
<td>2018-04-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-03-01.html">Март 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-03-01.html">Март 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>5 марта 2018 г.</td>
+ <td>5 марта 2018 г.</td>
<td>2018-03-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-02-01.html">Февраль 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-02-01.html">Февраль 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>5 февраля 2018 г.</td>
+ <td>5 февраля 2018 г.</td>
<td>2018-02-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-01-01.html">Январь 2018 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2018-01-01.html">Январь 2018 г.</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?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>2 января 2018 г.</td>
+ <td>2 января 2018 г.</td>
<td>2018-01-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2017-12-01.html">Декабрь 2017 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2017-12-01.html">Декабрь 2017 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2017-12-01.html">English</a> /
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>4 декабря 2017 г.</td>
+ <td>4 декабря 2017 г.</td>
<td>2017-12-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2017-11-01.html">Ноябрь 2017 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2017-11-01.html">Ноябрь 2017 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2017-11-01.html">English</a> /
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>6 ноября 2017 г.</td>
+ <td>6 ноября 2017 г.</td>
<td>2017-11-05</td>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2017-10-01.html">Октябрь 2017 г.</a></td>
+ <td><a href="/security/bulletin/pixel/2017-10-01.html">Октябрь 2017 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2017-10-01.html">English</a> /
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ja">日本語</a> /
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ko">한국어</a> /
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ru">русский</a> /
-<a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">中文 (中国)</a> /
-<a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">中文 (台灣)</a>
+<a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">简体中文</a> /
+<a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
</td>
- <td>2 октября 2017 г.</td>
+ <td>2 октября 2017 г.</td>
<td>2017-10-05</td>
</tr>
</tbody></table>
diff --git a/zh-cn/_book.yaml b/zh-cn/_book.yaml
index 137aad24..46e032d4 100644
--- a/zh-cn/_book.yaml
+++ b/zh-cn/_book.yaml
@@ -542,6 +542,8 @@ upper_tabs:
title: 评估性能
- path: /devices/tech/debug/gdb
title: 使用 GDB
+ - path: /devices/tech/debug/native_stack_dump
+ title: 转储用户和内核堆栈
- path: /devices/tech/debug/native-memory
title: 本地内存使用情况
- path: /devices/tech/connect/connect_tests
@@ -608,6 +610,12 @@ upper_tabs:
title: 公告
- section:
- section:
+ - path: /security/bulletin/2019-01-01
+ title: 1 月
+ - path: /security/bulletin/2019
+ title: 索引
+ title: 2019 年公告
+ - section:
- path: /security/bulletin/2018-12-01
title: 12 月
- path: /security/bulletin/2018-11-01
@@ -710,6 +718,12 @@ upper_tabs:
- path: /security/bulletin/pixel/index
title: 概览
- section:
+ - path: /security/bulletin/pixel/2019-01-01
+ title: 1 月
+ - path: /security/bulletin/pixel/2019
+ title: 索引
+ title: 2019 年公告
+ - section:
- path: /security/bulletin/pixel/2018-12-01
title: 12 月
- path: /security/bulletin/pixel/2018-11-01
@@ -1355,8 +1369,6 @@ upper_tabs:
title: 特许权限白名单
- path: /devices/tech/config/runtime_perms
title: 运行时权限
- - path: /devices/tech/config/timezone-rules
- title: 时区规则
- path: /devices/tech/config/ambient
title: Ambient 权能
- path: /devices/tech/config/filesystem
@@ -1415,6 +1427,8 @@ upper_tabs:
- path: /devices/tech/ota/nonab/device_code
title: 设备专属代码
title: 非 A/B 系统更新
+ - path: /devices/tech/config/timezone-rules
+ title: 时区规则
name: 更新
name: 配置
- lower_tabs:
diff --git a/zh-cn/_index.yaml b/zh-cn/_index.yaml
index 9118c57e..b24a167b 100644
--- a/zh-cn/_index.yaml
+++ b/zh-cn/_index.yaml
@@ -53,6 +53,12 @@ landing_page:
image_path: /images/android_stack.png
- heading: 新闻
items:
+ - heading: 1 月安全公告
+ description: >
+ 2019 年 1 月的 Android 和 Pixel 安全公告已经发布,一同发布的还有相关修复程序的链接以及用于 1 月安全更新补丁的新版本号。
+ buttons:
+ - label: 2019 年 1 月 7 日
+ path: /security/bulletin/2019-01-01
- heading: 启用 Adiantum
description: >-
用于启用 Adiantum 的新页面,Adiantum 是一种加密方法,专为搭载 Android 9 或更高版本且其 CPU 缺少
@@ -66,12 +72,6 @@ landing_page:
buttons:
- label: 2018 年 12 月 18 日
path: /security/best-practices
- - heading: Trusty 可信执行环境
- description: >
- 更新了 Trusty(即 Android 的开源可信执行环境 (TEE))的相关信息。您可以使用 Trusty TEE 打造更安全的移动设备。
- buttons:
- - label: 2018 年 12 月 17 日
- path: /security/trusty/
- classname: devsite-landing-row-100 tf-row-centered
items:
- buttons:
diff --git a/zh-cn/devices/architecture/dto/compile.html b/zh-cn/devices/architecture/dto/compile.html
index 3d617b7e..845a8614 100644
--- a/zh-cn/devices/architecture/dto/compile.html
+++ b/zh-cn/devices/architecture/dto/compile.html
@@ -97,7 +97,7 @@ dtc -O dts -o my_merged_dt.dts my_merged_dt.dtb
<h4 id="example-invalid-overlays">示例:无效叠加层</h4>
- <p>在此示例中,<code>overlay_2.dts</code> 引用了由 <code>overlay_1.dts</code> 添加的节点 <strong><code>e</code></strong>。在将 <code>overlay_1</code> 应用于主 DT 之后,如果尝试将 <code>overlay_2</code> 应用于生成的 DT,则叠加层应用将发生故障,并出现基础 DT 的符号表中不存在符号 <strong><code>e</code></strong> 的错误。</p>
+ <p>在此示例中,<code>overlay_2.dts</code> 引用了由 <code>overlay_1.dts</code> 添加的节点 <strong><code>e</code></strong>。在将 <code>overlay_1</code> 应用于主 DT 之后,如果尝试将 <code>overlay_2</code> 应用于生成的 DT,则叠加层应用将运行失败,并显示基础 DT 的符号表中不存在符号 <strong><code>e</code></strong> 的错误。</p>
<table>
<tbody><tr>
@@ -160,7 +160,7 @@ dtc -O dts -o my_merged_dt.dts my_merged_dt.dtb
<h4 id="example-valid-overlays">示例:有效叠加层</h4>
- <p>在此示例中,<code>overlay_2.dts</code> 仅引用了主 DTS 中的节点 <strong><code>b</code></strong>。将 <code>overlay_1</code> 和 <code>overlay_2</code> 依次应用于基础 DT 之后,节点 <strong><code>e</code></strong> 的属性 <strong><code>prop</code></strong> 的值(由 <code>overlay_1.dts</code> 设置)将被 <code>overlay_2.dts</code> 设置的值覆盖。</p>
+ <p>在此示例中,<code>overlay_2.dts</code> 仅引用了主 DTS 中的节点 <strong><code>b</code></strong>。将 <code>overlay_1</code> 和 <code>overlay_2</code> 依次应用于基础 DT 之后,节点 <strong><code>e</code></strong> 中属性 <strong><code>prop</code></strong> 的值(由 <code>overlay_1.dts</code> 设置)将被 <code>overlay_2.dts</code> 设置的值覆盖。</p>
<table>
<tbody><tr>
diff --git a/zh-cn/devices/architecture/dto/optimize.html b/zh-cn/devices/architecture/dto/optimize.html
index e194aec3..4f53bfd2 100644
--- a/zh-cn/devices/architecture/dto/optimize.html
+++ b/zh-cn/devices/architecture/dto/optimize.html
@@ -4,7 +4,6 @@
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
-
<!--
Copyright 2017 The Android Open Source Project
@@ -81,14 +80,14 @@
<h2 id="libufdt">libufdt</h2>
<p>
- 虽然最新的 <code><a href="https://github.com/dgibson/dtc/tree/master/libfdt" class="external">libfdt</a></code> 支持 DTO,但我们还是建议您使用 <code>libufdt</code> 来实现 DTP(AOSP 源代码位于 <code><a href="https://android.googlesource.com/platform/system/libufdt/+/refs/heads/master" class="external">platform/system/libufdt</a></code> 下)。
- <code>libufdt</code> 会从扁平化设备树 (FDT) 编译真实的树结构(非扁平化设备树,简称“ufdt”<em></em>),从而改善两个 <code>.dtb</code> 文件(从 O(N2) 到 O(N),其中 N 是树中的节点数)的合并效果。
+ 虽然最新的 <code><a href="https://github.com/dgibson/dtc/tree/master/libfdt" class="external">libfdt</a></code> 支持 DTO,但我们还是建议使用 <code>libufdt</code> 实现 DTP(AOSP 源代码位于 <code><a href="https://android.googlesource.com/platform/system/libufdt/+/refs/heads/master" class="external">platform/system/libufdt</a></code> 下)。
+ <code>libufdt</code> 可从扁平化设备树 (FDT) 编译真实的树结构(非扁平化设备树,简称“ufdt”<em></em>),从而改善合并两个 <code>.dtb</code> 文件的效果(从 O(N2) 到 O(N),其中 N 是树中的节点数)。
</p>
<h3 id="performance">性能测试</h3>
<p>
- 在 Google 的内部测试中,进行编译后,在 2405 个 <code>.dtb</code> 和 283 个 <code>.dtbo</code> DT 节点上使用 <code>libufdt</code> 生成了 70618 字节和 8566 字节的文件。与从 FreeBSD 移植的 <a href="http://fxr.watson.org/fxr/source/boot/fdt/" class="external">DTO 实现</a>的运行时(为 124 毫秒)形成鲜明对比的是,<code>libufdt</code> DTO 运行时为 10 毫秒。
+ 在 Google 的内部测试中,进行编译后,在 2405 个 <code>.dtb</code> 和 283 个 <code>.dtbo</code> DT 节点上使用 <code>libufdt</code> 生成了 70618 字节和 8566 字节的文件。从 FreeBSD 移植的 <a href="http://fxr.watson.org/fxr/source/boot/fdt/" class="external">DTO 实现</a>的运行时为 124 毫秒,相比之下 <code>libufdt</code> DTO 的运行时为 10 毫秒,差异非常明显。
</p>
<p>
@@ -147,8 +146,7 @@ struct fdt_header *ufdt_apply_overlay(
</p>
<p>
- SoC 供应商必须定义主 DT 的叠加能力;ODM/OEM 只能使用由 SoC 供应商定义的标签附加或覆盖节点。要解决这个问题,您可以在基础 DT 中的根节点下定义一个 <strong><code>odm</code></strong> 节点,使叠加 DT 中的所有 ODM 节点都能够添加新节点。或者,您也可以将基础 DT 中的所有 SoC 相关节点放在根节点下的 <strong><code>soc</code></strong> 节点中,如下所述:
-</p>
+ SoC 供应商必须定义主 DT 的叠加能力;ODM/OEM 只能使用由 SoC 供应商定义的标签附加或覆盖节点。要解决这个问题,您可以在基础 DT 中的根节点下定义一个 <strong><code>odm</code></strong> 节点,使叠加 DT 中的所有 ODM 节点都能够添加新节点。或者,您也可以将基础 DT 中的所有 SoC 相关节点放在根节点下的 <strong><code>soc</code></strong> 节点中,如下所述:</p>
<table>
<tbody><tr>
diff --git a/zh-cn/devices/architecture/hidl-cpp/types.html b/zh-cn/devices/architecture/hidl-cpp/types.html
index 8001aed5..6b435190 100644
--- a/zh-cn/devices/architecture/hidl-cpp/types.html
+++ b/zh-cn/devices/architecture/hidl-cpp/types.html
@@ -308,7 +308,7 @@ memory-&gt;commit();
</pre>
<h2 id="interfaces">接口</h2>
-<p>接口可作为对象传递。“接口”一词可用作 <code>android.hidl.base@1.0::IBase</code> 类型的语法糖;此外,当前的接口以及任何导入的接口都将定义为一个类型。<em></em></p>
+<p>接口可作为对象传递。<em></em>“接口”一词可用作 <code>android.hidl.base@1.0::IBase</code> 类型的语法糖;此外,当前的接口以及任何导入的接口都将被定义为一个类型。</p>
<p>存储接口的变量应该是强指针:<code>sp&lt;IName&gt;</code>。接受接口参数的 HIDL 函数会将原始指针转换为强指针,从而导致不可预料的行为(可能会意外清除指针)。为避免出现问题,请务必将 HIDL 接口存储为 <code>sp&lt;&gt;</code>。</p>
diff --git a/zh-cn/devices/architecture/hidl/types.html b/zh-cn/devices/architecture/hidl/types.html
index 6ff875de..de20fc98 100644
--- a/zh-cn/devices/architecture/hidl/types.html
+++ b/zh-cn/devices/architecture/hidl/types.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>本部分介绍了 HIDL 数据类型。有关实现详情,请参阅 <a href="/devices/architecture/hidl-cpp/index.html">HIDL C++</a>(如果是 C++ 实现)或 <a href="/devices/architecture/hidl-java/index.html">HIDL Java</a>(如果是 Java 实现)。</p>
+<p>本部分介绍了 HIDL 数据类型。要了解实现详情,请参阅 <a href="/devices/architecture/hidl-cpp/index.html">HIDL C++</a>(如果是 C++ 实现)或 <a href="/devices/architecture/hidl-java/index.html">HIDL Java</a>(如果是 Java 实现)。</p>
<p>与 C++ 的相似之处包括:</p>
<ul>
@@ -48,7 +48,7 @@ Point[3] triangle; // sized array
</ul>
<h2 id="represent">数据表示法</h2>
-<p>采用<a href="http://en.cppreference.com/w/cpp/language/data_members#Standard_layout">标准布局</a>(plain-old-data 类型相关要求的子集)的 <code>struct</code> 或 <code>union</code> 在生成的 C++ 代码中具有一致的内存布局,这是依靠 <code>struct</code> 和 <code>union</code> 成员上的显式对齐属性实现的。</p>
+<p>采用<a href="http://en.cppreference.com/w/cpp/language/data_members#Standard_layout">标准布局</a>(plain-old-data 要求类型的子集)的 <code>struct</code> 或 <code>union</code> 在生成的 C++ 代码中具有一致的内存布局,这是依靠 <code>struct</code> 和 <code>union</code> 成员上的显式对齐属性实现的。</p>
<p>基本的 HIDL 类型以及 <code>enum</code> 和 <code>bitfield</code> 类型(一律从基本类型派生而来)会映射到标准 C++ 类型,例如 <a href="http://en.cppreference.com/w/cpp/types/integer">cstdint</a> 中的 <code>std::uint32_t</code>。</p>
@@ -125,7 +125,7 @@ get(string fqName, string name) generates (interface service);
<p><code>pointer</code> 类型仅供 HIDL 内部使用。</p>
<h2 id="bitfield">bitfield &lt;T&gt; 类型模板</h2>
-<p><code>bitfield&lt;T&gt;</code>(其中 <code>T</code> 是<a href="#enum">用户定义的枚举</a>)表明值是在 <code>T</code> 中定义的枚举值的按位“或”值。在生成的代码中,<code>bitfield&lt;T&gt;</code> 会显示为 T 的基础类型。例如:</p>
+<p><code>bitfield&lt;T&gt;</code>(其中 <code>T</code> 是<a href="#enum">用户定义的枚举</a>)表明该值是在 <code>T</code> 中定义的枚举值的按位“或”值。在生成的代码中,<code>bitfield&lt;T&gt;</code> 显示为 T 的基础类型。例如:</p>
<pre class="prettyprint">
enum Flag : uint8_t {
@@ -171,10 +171,10 @@ typedef struct native_handle
<p>当您调用传递(或返回)<code>hidl_handle</code> 对象(复合类型的顶级或一部分)的 HIDL 接口方法时,其中包含的文件描述符的所有权如下所述:</p>
<ul>
-<li>将 <code>hidl_handle</code> 对象作为参数传递的<strong>调用程序</strong>会保留对其封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;在对这些文件描述符完成操作后,该调用程序必须将其关闭。</li>
-<li>返回 <code>hidl_handle</code> 对象(通过将其传递到 <code>_cb</code> 函数)的<strong>进程</strong>会保留对相应对象封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;在对这些文件描述符完成操作后,该进程必须将其关闭。
+<li>将 <code>hidl_handle</code> 对象作为参数传递的<strong>调用程序</strong>会保留对其封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;该调用程序在完成对这些文件描述符的操作后,必须将这些描述符关闭。</li>
+<li>通过将 <code>hidl_handle</code> 对象传递到 <code>_cb</code> 函数来返回该对象的<strong>进程</strong>会保留对该对象封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;该进程在完成对这些文件描述符的操作后,必须将这些描述符关闭。
</li>
-<li>接收 <code>hidl_handle</code> 的 <strong>transport</strong> 拥有对相应对象封装的 <code>native_handle_t</code> 中的文件描述符的所有权;接收器可在事务回调期间按原样使用这些文件描述符,但如果想在回调完成后继续使用这些文件描述符,则必须克隆原生句柄。事务完成时,transport 将自动对文件描述符执行 <code>close()</code> 操作。</li>
+<li>接收 <code>hidl_handle</code> 的<strong>传输</strong>拥有对相应对象封装的 <code>native_handle_t</code> 中的文件描述符的所有权;接收器可在事务回调期间按原样使用这些文件描述符,但如果想在回调完成后继续使用这些文件描述符,则必须克隆原生句柄。事务完成时,transport 将自动对文件描述符执行 <code>close()</code> 操作。</li>
</ul>
<p>HIDL 不支持在 Java 中使用句柄(因为 Java 根本不支持句柄)。</p>
diff --git a/zh-cn/devices/architecture/kernel/config.html b/zh-cn/devices/architecture/kernel/config.html
index 3b256e9d..5dfd8398 100644
--- a/zh-cn/devices/architecture/kernel/config.html
+++ b/zh-cn/devices/architecture/kernel/config.html
@@ -22,7 +22,7 @@
-->
<p>
- 您可以将以下配置设置用作 Android 内核配置的基础。设置会整理到 <code>android-base</code>、<code>android-base-<var>ARCH</var></code> 和 <code>android-recommended</code> .cfg 文件中:
+您可以将以下配置设置用作 Android 内核配置的基础。设置会整理到 <code>android-base</code>、<code>android-base-<var>ARCH</var></code> 和 <code>android-recommended</code> .cfg 文件中:
</p>
<ul>
diff --git a/zh-cn/devices/architecture/kernel/modular-kernels.html b/zh-cn/devices/architecture/kernel/modular-kernels.html
index 12b5e86b..e7acf86b 100644
--- a/zh-cn/devices/architecture/kernel/modular-kernels.html
+++ b/zh-cn/devices/architecture/kernel/modular-kernels.html
@@ -3,7 +3,6 @@
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
-
<body>
<!--
Copyright 2017 The Android Open Source Project
@@ -198,14 +197,15 @@ on early-init
<ol>
<li>设备节点路径必须在 <code>fstab</code> 和设备树条目中使用其 by-name 符号链接。<em></em>例如,确保对分区进行命名且设备节点为 <code>/dev/block/…./by-name/{system,vendor,odm}</code>,而不是使用 <code>/dev/block/mmcblk0pX</code> 指定分区。
</li>
-<li>在产品的设备配置中(即 <code>device/<em>oem</em>/<em>project</em>/device.mk</code> 中)为 <code>PRODUCT_{SYSTEM,VENDOR}_VERITY_PARTITION</code> 和 <code>CUSTOM_IMAGE_VERITY_BLOCK_DEVICE</code> 指定的路径必须与 <code>fstab</code> 设备树条目中相应块设备节点指定的 by-name 相匹配。<em></em>例如:<pre class="prettyprint">
+<li>在产品的设备配置中(即 <code>device/<em>oem</em>/<em>project</em>/device.mk</code> 中)为 <code>PRODUCT_{SYSTEM,VENDOR}_VERITY_PARTITION</code> 和 <code>CUSTOM_IMAGE_VERITY_BLOCK_DEVICE</code> 指定的路径必须与 <code>fstab</code> 设备树条目中相应块设备节点指定的 by-name 相匹配。<em></em>例如:
+<pre class="prettyprint">
PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/…./by-name/system
PRODUCT_VENDOR_VERITY_PARTITION := /dev/block/…./by-name/vendor
CUSTOM_IMAGE_VERITY_BLOCK_DEVICE := /dev/block/…./by-name/odm
</pre>
</li>
<li>通过设备树叠加层提供的条目不得在 <code>fstab</code> 文件片段中出现重复。例如,指定某个条目以在设备树中装载 <code>/vendor</code> 时,<code>fstab</code> 文件不得重复该条目。</li>
-<li><code>verifyatboot</code>提前装载需要 <strong>verifyatboot</strong> 的分区(此操作不受支持)。</li>
+<li><strong>不得</strong>提前装载需要 <code>verifyatboot</code> 的分区(此操作不受支持)。</li>
<li>必须在内核命令行中使用 <code>androidboot.veritymode</code> 选项指定验证分区的真实模式/状态(现有要求)。</li>
</ol>
diff --git a/zh-cn/devices/architecture/vintf/fcm.html b/zh-cn/devices/architecture/vintf/fcm.html
index a39e0eba..d806e62c 100644
--- a/zh-cn/devices/architecture/vintf/fcm.html
+++ b/zh-cn/devices/architecture/vintf/fcm.html
@@ -212,7 +212,7 @@
<li>框架不再需要该 HAL。</li>
</ul>
-<p>例如,Android 9 引入了 <code>health@2.0</code> 作为 1.0 HAL 的 Major 版本升级。<code>health@1.0</code> 从 <code>compatibility_matrix.3.xml</code> 中移除了,但存在于 <code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.legacy.xml#150" class="external">compatibility_matrix.legacy.xml</a></code>、<code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.1.xml#150" class="external">compatibility_matrix.1.xml</a></code> 和 <code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.2.xml#158" class="external">compatibility_matrix.2.xml</a></code> 中。因此,<code>health@1.0</code> 会被视为已弃用。</p>
+<p>例如,Android 9 引入了 <code>health@2.0</code> 作为 1.0 HAL 的 Major 版本升级。<code>health@1.0</code> 已从 <code>compatibility_matrix.3.xml</code> 中移除,但存在于 <code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.legacy.xml#150" class="external">compatibility_matrix.legacy.xml</a></code>、<code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.1.xml#150" class="external">compatibility_matrix.1.xml</a></code> 和 <code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.2.xml#158" class="external">compatibility_matrix.2.xml</a></code> 中。因此,<code>health@1.0</code> 会被视为已弃用。</p>
<h2 id="removal-of-support">取消对目标 FCM 版本的支持</h2>
<p>当搭载某个目标 FCM 版本 <code>V</code> 的有效设备数量降至特定阈值以下时,应将该目标 FCM 版本从下一个框架版本的 S<sub>F</sub> 集中移除,方法是从编译规则中移除 <code>compatibility_matrix.V.xml</code>(以便它不再安装在系统映像中),并删除用于实现或依赖于已移除功能的所有代码。如果设备搭载的目标 FCM 版本不在指定框架版本的 S<sub>F</sub> 之内,则无法升级到该版本。</p>
@@ -232,7 +232,7 @@
<p>如果 HAL 版本位于任何公开且冻结的兼容性矩阵中,则为已发布版本。例如,FCM 版本 3 冻结(当 <code>compatibiility_matrix.current.xml</code> 已改名为 <code>compatibility_matrix.3.xml</code> 时)并发布到 AOSP 后,<code>health@2.0</code> HAL 会被视为已发布且当前有效的 HAL 版本。
</p>
-<p>如果 HAL 版本位于包含最高 FCM 版本的公开且冻结兼容性矩阵中(<code>compatibility_matrix.current.xml</code> 除外),则 HAL 版本为当前有效版本(即未弃用版本)。例如,如果现有 HAL 版本(例如,在 <code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.legacy.xml#198" class="external">compatibility_matrix.legacy.xml</a></code> 中引入的 <code>nfc@1.0</code>)继续存在于 <code>compatibility_matrix.3.xml</code> 中,则也会被视为已发布且当前有效的 HAL 版本。</p>
+<p>如果 HAL 版本位于包含最高 FCM 版本的公开且冻结兼容性矩阵中(<code>compatibility_matrix.current.xml</code> 除外),则 HAL 版本为当前有效版本(即未弃用版本)。例如,如果现有 HAL 版本(例如,在 <code>nfc@1.0</code> 中引入的 <code><a href="https://android.googlesource.com/platform/hardware/interfaces/+/241e5aba9ebfe85a9599b333f89be51905148f81/compatibility_matrices/compatibility_matrix.legacy.xml#198" class="external">compatibility_matrix.legacy.xml</a></code>)继续存在于 <code>compatibility_matrix.3.xml</code> 中,则也会被视为已发布且当前有效的 HAL 版本。</p>
<h3 id="hal-released-but-deprecated">已发布但已弃用</h3>
<p>当且仅当存在以下情况时,HAL 版本会被视为已弃用:</p>
diff --git a/zh-cn/devices/architecture/vintf/match-rules.html b/zh-cn/devices/architecture/vintf/match-rules.html
index ada98189..f3909573 100644
--- a/zh-cn/devices/architecture/vintf/match-rules.html
+++ b/zh-cn/devices/architecture/vintf/match-rules.html
@@ -3,7 +3,6 @@
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
-
<body>
<!--
Copyright 2017 The Android Open Source Project
diff --git a/zh-cn/devices/architecture/vndk/renderscript.html b/zh-cn/devices/architecture/vndk/renderscript.html
index 32dea1e6..1db4f504 100644
--- a/zh-cn/devices/architecture/vndk/renderscript.html
+++ b/zh-cn/devices/architecture/vndk/renderscript.html
@@ -115,7 +115,7 @@
</p>
<p>
- <em></em>在运行 Android 8.0 及更高版本的设备上,除 RenderScript 之外的所有 Same-Process HAL (SP-HA) 都会在链接器命名空间 <code>sphal</code> 中加载。RenderScript 将被加载到 RenderScript 专用的命名空间 <code>rs</code> 中,该位置对 RenderScript 库的限制稍微宽松些。由于 RS 实现需要加载编译后的位码,因此系统会将 <code>/data/*/*.so</code> 添加到 <code>rs</code> 命名空间的路径中(不允许其他 SP-HAL 从该数据分区加载库)。
+ 在运行 Android 8.0 或更高版本的设备上,除 RenderScript 之外的所有 Same-Process HAL (SP-HA) 都会在链接器命名空间 <em></em><code>sphal</code> 中加载。RenderScript 将被加载到 RenderScript 专用的命名空间 <code>rs</code> 中,该位置对 RenderScript 库的限制稍微宽松些。由于 RS 实现需要加载编译后的位码,因此系统会将 <code>/data/*/*.so</code> 添加到 <code>rs</code> 命名空间的路径中(不允许其他 SP-HAL 从该数据分区加载库)。
</p>
<p>
@@ -365,14 +365,8 @@ namespace.sphal.link.rs.shared_libs = libRS_internal.so
</p>
<pre class="prettyprint">
-device/vendor_foo/device_bar/sepolicy/file.te:
-type renderscript_exec, exec_type, file_type;
-
-device/vendor_foo/device_bar/sepolicy/app.te:
-allow appdomain renderscript_exec:file { read open getattr execute execute_no_trans };
-
device/vendor_foo/device_bar/sepolicy/file_contexts:
-/vendor/bin/bcc u:object_r:renderscript_exec:s0
+/vendor/bin/bcc u:object_r:same_process_hal_file:s0
</pre>
<h3 id="legacy-devices">旧版设备</h3>
diff --git a/zh-cn/devices/audio/attributes.html b/zh-cn/devices/audio/attributes.html
index 78db1704..b20033e6 100644
--- a/zh-cn/devices/audio/attributes.html
+++ b/zh-cn/devices/audio/attributes.html
@@ -115,7 +115,7 @@ AudioAttributes {
<h2 id="contexts">上下文</h2>
<p>
-Android 中的每段声音都由相应的应用和声音生成的原因来识别;Android 设备会使用这些信息来确定如何呈现声音。在 Android 8.x 及更低版本中,应用可以使用旧版流类型(如 <code>AudioSystem.STREAM_MUSIC</code>)或 <code>AudioAttributes</code> 报告声音生成的原因。在 Android 9 中,<code>AudioAttributes.usage</code> 值在 HAL 级别被提取为上下文<em></em>。
+Android 中的每段声音都由相应的应用和声音生成的原因来识别;Android 设备会使用这些信息来确定如何呈现声音。在 Android 8.x 及更低版本中,应用可以使用旧版流类型(如 <code>AudioSystem.STREAM_MUSIC</code>)或 <code>AudioAttributes</code> 报告声音生成的原因。在 Android 9 中,<code>AudioAttributes.usage</code> 值在 HAL 级别被提取为上下文。<em></em>
</p>
<table>
@@ -199,7 +199,7 @@ Android 中的每段声音都由相应的应用和声音生成的原因来识别
<h2 id="example">示例</h2>
<p>
-在以下示例中,<code>AudioAttributes.Builder</code> 定义了将由一个新的 <code>AudioTrack</code> 实例使用的 <code>AudioAttributes</code>:</p>
+在以下示例中,<code>AudioAttributes.Builder</code> 定义了将由一个新的 <code>AudioAttributes</code> 实例使用的 <code>AudioTrack</code>:</p>
<pre class="prettyprint">
AudioTrack myTrack = new AudioTrack(
diff --git a/zh-cn/devices/automotive/audio/audio-control.html b/zh-cn/devices/automotive/audio/audio-control.html
index d5d0158f..e9a88317 100644
--- a/zh-cn/devices/automotive/audio/audio-control.html
+++ b/zh-cn/devices/automotive/audio/audio-control.html
@@ -57,7 +57,7 @@ setBalanceTowardRight(float value);
将音响设备音量调向汽车右侧 (+) 或左侧 (-)。0.0 表示在中间,+1.0 表示完全调到右侧,-1.0 表示完全调到左侧,如果值未在 -1 到 1 之间,则是错误的。
</li>
- <li><code><strong>setFadeTowardFront</strong></code>:用于控制车载音响设备的前/后淡化设置。用法示例:
+ <li><code><strong>setFadeTowardFront</strong></code>。用于控制车载音响设备的前/后淡化设置。用法示例:
<pre class="prettyprint">
setFadeTowardFront(float value);
diff --git a/zh-cn/devices/bootloader/boot-image-header.html b/zh-cn/devices/bootloader/boot-image-header.html
index 2fd03438..6d9be66f 100644
--- a/zh-cn/devices/bootloader/boot-image-header.html
+++ b/zh-cn/devices/bootloader/boot-image-header.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/devices/bootloader/product-partitions.html b/zh-cn/devices/bootloader/product-partitions.html
index 4f51f156..3d1b62f4 100644
--- a/zh-cn/devices/bootloader/product-partitions.html
+++ b/zh-cn/devices/bootloader/product-partitions.html
@@ -3,7 +3,6 @@
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
-
<body>
<!--
Copyright 2018 The Android Open Source Project
diff --git a/zh-cn/devices/bootloader/system-as-root.html b/zh-cn/devices/bootloader/system-as-root.html
index ad9180b6..9c9333b8 100644
--- a/zh-cn/devices/bootloader/system-as-root.html
+++ b/zh-cn/devices/bootloader/system-as-root.html
@@ -3,7 +3,6 @@
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
-
<body>
<!--
Copyright 2018 The Android Open Source Project
@@ -33,7 +32,7 @@
<li>在非 A/B 分区架构中,<code>/boot</code> 分区中的 <code>ramdisk.img</code> 会被加载到内存中(反过来再作为 rootfs 进行装载),而 <code>system</code> 分区则在 <code>/system</code> 中装载。</li>
</ul>
- <p>在 Android 8.0 中进行的架构更改(在<a href="/devices/architecture/#hidl">项目 Treble</a> 中)支持系统专用 OTA。在系统专用 OTA 中,可以在不更改其他分区的情况下跨主要 Android 版本更新 <code>system.img</code>。不过,对于非 A/B 设备来说,由于 <code>ramdisk.img</code> 位于 <code>/boot</code> 分区中,因此它无法使用 Android 8.x 架构通过系统专用 OTA 进行更新。这样一来,旧的 <code>ramdisk.img</code> 可能不适用于新的 <code>system.img</code>,具体原因如下:</p>
+ <p>在 Android 8.0 中进行的架构更改(在 <a href="/devices/architecture/#hidl">Project Treble</a> 中)支持系统专用 OTA。在系统专用 OTA 中,可以在不更改其他分区的情况下跨主要 Android 版本更新 <code>system.img</code>。不过,对于非 A/B 设备来说,由于 <code>ramdisk.img</code> 位于 <code>/boot</code> 分区中,因此它无法使用 Android 8.x 架构通过系统专用 OTA 进行更新。这样一来,旧的 <code>ramdisk.img</code> 可能不适用于新的 <code>system.img</code>,具体原因如下:</p>
<ul>
<li><code>ramdisk.img</code> 中较旧的 <code>/init</code> 可能无法解析 <code>/system</code> 上的 *.rc 文件。</li>
@@ -94,7 +93,7 @@
<aside class="note"><strong>注意</strong>:如果设备使用的是 A/B 分区架构,则无需做出任何改动。</aside>
- <p>不同于将 <code>/boot</code> 改为 <a href="/devices/tech/ota/ab_implement#recovery">recovery</a> 分区的 A/B 设备,<strong>非 A/B 设备由于没有后备插槽分区</strong>(例如,从 <code>boot_a</code> 到 <code>boot_b</code>),必须保留单独的 <code>/recovery</code> 分区。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,在非 A/B 设备上,<strong>必须</strong>将 <code>/recovery</code> 分区与 <code>/boot</code> 分区分开,这意味着将继续延迟更新恢复映像(即和 <a href="/devices/tech/ota/nonab/#life-ota-update">Android 9 之前</a>的设备一样)。</p>
+ <p>不同于将 <code>/boot</code> 改为 <a href="/devices/tech/ota/ab_implement#recovery">recovery</a> 分区的 A/B 设备,<strong>非 A/B 设备由于没有后备插槽分区(例如,从 <code>boot_a</code> 到 <code>boot_b</code>),必须保留单独的 <code>/recovery</code> 分区</strong>。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,在非 A/B 设备上,<strong>必须</strong>将 <code>/recovery</code> 分区与 <code>/boot</code> 分区分开,这意味着将继续延迟更新恢复映像(即和搭载 <a href="/devices/tech/ota/nonab/#life-ota-update">Android 9 之前版本</a>的设备一样)。</p>
<p>非 A/B 设备在使用 Android 9 前后的分区布局差异:</p>
@@ -205,7 +204,7 @@ system.img
<p>在 system-as-root 中,内核必须使用 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity</a> 在 <strong><code>/</code></strong>(装载点)下装载 <code>system.img</code>。AOSP 支持 <code>system.img</code> 的下列 dm-verity 实现:</p>
<ol>
- <li>对于 <a href="/security/verifiedboot/">vboot 1.0</a>,内核必须在 <code>/system</code> 上解析 Android 专用<a href="/security/verifiedboot/dm-verity#metadata">元数据</a>,然后转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>以设置 dm-verity。需要这些<a href="/devices/tech/ota/ab_implement#kernel">内核补丁程序</a>。</li>
+ <li>对于 <a href="/security/verifiedboot/">vboot 1.0</a>,内核必须在 <code>/system</code> 上解析 Android 专用<a href="/security/verifiedboot/dm-verity#metadata">元数据</a>,然后转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a> 以设置 dm-verity。需要这些<a href="/devices/tech/ota/ab_implement#kernel">内核补丁程序</a>。</li>
<li>对于 vboot 2.0 (<a href="https://android.googlesource.com/platform/external/avb/" class="external">AVB</a>),引导加载程序必须先整合 <a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/" class="external">external/avb/libavb</a>,然后 external/avb/libavb 会解析 <code>/system</code> 的<a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/avb_hashtree_descriptor.h" class="external">哈希树描述符</a>,再将解析结果转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>,最后通过内核命令行将这些参数传递给内核。(<code>/system</code> 的哈希树描述符可能位于 <code>/vbmeta</code> 或 <code>/system</code> 本身上)。<br />
<br />需要下列内核补丁程序:<ul>
@@ -246,7 +245,7 @@ PARTUUID=00000016-0000-0000-0000-000000000000 fec_roots 2 fec_blocks
<h2 id="device-specific-folders">特定于设备的根文件夹</h2>
-<p>使用 system-as-root 时,在设备上刷写<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 之后(以及在运行<a href="/compatibility/vts/">供应商测试套件</a>测试之前),任何通过 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 添加的特定于设备的根文件夹都会消失,因为整个根目录内容已被 system-as-root GSI 取而代之。如果对特定于设备的根文件夹有依赖性(例如将此类文件夹用作装载点),则移除这些文件夹可能会导致设备无法启动。</p>
+<p>使用 system-as-root 时,在设备上刷写<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 之后(以及在运行<a href="/compatibility/vts/">供应商测试套件</a>测试之前),任何通过 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 添加的特定于设备的根文件夹都会消失,因为整个根目录内容已被 system-as-root GSI 取代。如果对特定于设备的根文件夹有依赖性(例如将此类文件夹用作装载点),则移除这些文件夹可能会导致设备无法启动。</p>
<p>要避免出现此问题,请不要使用 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 来添加特定于设备的根文件夹(此类文件夹将来可能会被弃用)。如果需要指定特定于设备的装载点,请使用 <code>/mnt/vendor/&lt;mount point&gt;</code>(已添加到这些<a href="https://android-review.googlesource.com/q/topic:vmount" class="external">更改列表</a>中)。这些特定于供应商的装载点可在 <code>fstab</code> 设备树(适用于第一阶段的装载)和 <code>/vendor/etc/fstab.{ro.hardware}</code> 文件中直接指定,而无需进行额外设置(因为 <code>fs_mgr</code> 将在 <code>/mnt/vendor/*</code> 下自动创建它们)。</p>
diff --git a/zh-cn/devices/bootloader/unlock-trusty.html b/zh-cn/devices/bootloader/unlock-trusty.html
index af02af43..86635141 100644
--- a/zh-cn/devices/bootloader/unlock-trusty.html
+++ b/zh-cn/devices/bootloader/unlock-trusty.html
@@ -27,7 +27,7 @@
flashing unlock</code> 设置此解锁模式,设置后,此模式在系统重新启动后应保留。
</p>
<p>
-除非<code> fastboot flashing get_unlock_ability </code>为“1”,否则设备应拒绝 <code>fastboot flashing unlock</code> 命令。如果 <code>get_unlock_ability</code> 为“0”,则用户需要启动进入主屏幕,然后依次转到<em></em>“设置”&gt;“系统”&gt; <a href="https://developer.android.com/studio/debug/dev-options.html">开发者选项</a>菜单,并启用 <strong>OEM 解锁</strong>选项以将 <code>unlock_ability</code> 设置为“1”。该标记在重新启动后以及恢复出厂设置后应保持不变。
+除非<code> fastboot flashing get_unlock_ability </code>为“1”,否则设备应拒绝 <code>fastboot flashing unlock</code> 命令。如果 <code>get_unlock_ability</code> 为“0”,则用户需要启动进入主屏幕,然后依次转到“设置”&gt;“系统”&gt; <a href="https://developer.android.com/studio/debug/dev-options.html">开发者选项</a>菜单,并启用 <strong>OEM 解锁</strong>选项以将 <code>unlock_ability</code> 设置为“1”。该标记在重新启动后以及恢复出厂设置后应保持不变。<em></em>
</p>
<p>
发送 <code>fastboot flashing unlock</code> 命令后,设备应提示用户,警告他们非官方映像可能会有问题。确认后,应恢复出厂设置,以防止未经授权的数据访问。即使引导加载程序无法正确重新格式化设备,也应将设备恢复出厂设置。只有在恢复出厂设置后,才能设置持久性标记,以便重新刷写设备。
@@ -37,7 +37,7 @@ flashing unlock</code> 设置此解锁模式,设置后,此模式在系统重
</p>
<p>
所有尚未覆盖的 RAM 都应在 <code>fastboot flashing
-unlock</code> 过程中被重置。此措施可防止出现读取上次启动的剩余 RAM 内容这一攻击。同样,解锁的设备应在每次启动时清除 RAM(前提是这样做不会造成不可接受的延迟),但应保留用于内核的 <a href="https://www.kernel.org/doc/html/v4.12/admin-guide/ramoops.html" class="external"><code>ramoops</code></a> 的区域。
+unlock</code> 过程中被重置。此措施可防止出现读取上次启动的剩余 RAM 内容这一攻击。同样,解锁的设备应在每次启动时清除 RAM(前提是这样做不会造成不可接受的延迟),但应保留供内核的 <a href="https://www.kernel.org/doc/html/v4.12/admin-guide/ramoops.html" class="external"><code>ramoops</code></a> 使用的区域。
</p>
<p>
打算零售的设备应以锁定状态发货(并且 <code>get_unlock_ability</code> 返回“0”)。这是为了确保攻击者不能通过安装自己的系统或启动映像来损害设备。
@@ -52,7 +52,7 @@ unlock</code> 过程中被重置。此措施可防止出现读取上次启动的
1</code>),则引导加载程序应通过将内核命令行变量 <code>androidboot.flash.locked</code>(或 <code>/firmware/android/flash.locked</code> DT 属性)设置为“1”(如果已锁定)或“0”(如果已解锁)来指示锁定状态。
</p>
<p>
-<strong>注意</strong>:对于支持 <a href="/security/verifiedboot/dm-verity">dm-verity</a> 的设备,您可以改用 <code>ro.boot.verifiedbootstate</code> 来设置 <code>ro.boot.flash.locked</code> 的值(如果验证启动状态显示为橙色,则值为“0”,即已解锁)。
+<strong>注意</strong>:对于支持 <a href="/security/verifiedboot/dm-verity">dm-verity</a> 的设备,您可以使用 <code>ro.boot.verifiedbootstate</code> 设置 <code>ro.boot.flash.locked</code> 的值(如果验证启动状态显示为橙色,则值为“0”,即已解锁)。
</p>
<h3 id="flashing-lock-unlock_critical">刷写锁定/解锁关键部分</h3>
<p>
diff --git a/zh-cn/devices/camera/multi-camera.html b/zh-cn/devices/camera/multi-camera.html
index a202fee1..08c943f6 100644
--- a/zh-cn/devices/camera/multi-camera.html
+++ b/zh-cn/devices/camera/multi-camera.html
@@ -58,7 +58,7 @@
<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#256" class="external"><code>ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_APPROXIMATE</code></a>:对于主主模式下的传感器,不执行硬件快门/曝光同步。</li>
<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#257" class="external"><code>ANDROID_LOGICAL_MULTI_CAMERA_SENSOR_SYNC_TYPE_CALIBRATED</code></a>:对于主从模式下的传感器,执行硬件快门/曝光同步。</li>
</ul></li>
-<li><p>使用各个物理摄像头支持的参数列表填充 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#106" class="external"><code>ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS</code></a>。如果逻辑设备不支持单个请求,则列表可以为空。</p></li>
+<li><p>使用各个物理摄像头所支持参数的列表填充 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#106" class="external"><code>ANDROID_REQUEST_AVAILABLE_PHYSICAL_CAMERA_REQUEST_KEYS</code></a>。如果逻辑设备不支持单个请求,则列表可以为空。</p></li>
<li><p>如果支持单个请求,则处理并应用可以在捕获请求中到达的各个 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/3.4/types.hal#226" class="external"><code>physicalCameraSettings</code></a>,并相应地附加单个 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/3.4/types.hal#289" class="external"><code>physicalCameraMetadata</code></a>。</p></li>
</ul>
@@ -66,7 +66,7 @@
<h3 id="stream_configuration_map">信息流配置映射</h3>
-<p>对于逻辑摄像头,特定硬件级别的摄像头设备的强制性信息流组合与 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession(java.util.List%3Candroid.view.Surface%3E,%20android.hardware.camera2.CameraCaptureSession.StateCallback,%20android.os.Handler)" class="external"><code>CameraDevice.createCaptureSession</code></a> 中所需的相同。信息流配置映射中的所有信息流都应该是融合/逻辑框架。</p>
+<p>对于逻辑摄像头,特定硬件级别的摄像头设备的强制性信息流组合与 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession(java.util.List%3Candroid.view.Surface%3E,%20android.hardware.camera2.CameraCaptureSession.StateCallback,%20android.os.Handler)" class="external"><code>CameraDevice.createCaptureSession</code></a> 中所需的信息流组合相同。信息流配置映射中的所有信息流都应该是融合/逻辑框架。</p>
<p>如果某些信息流组合无法融合,则不应包含在逻辑摄像头的信息流配置映射中。但是,应用可以查找单个物理摄像头的信息流配置映射,并使用物理摄像头 ID 配置信息流。</p>
diff --git a/zh-cn/devices/camera/versioning.html b/zh-cn/devices/camera/versioning.html
index 527967b8..ccf5e3b8 100644
--- a/zh-cn/devices/camera/versioning.html
+++ b/zh-cn/devices/camera/versioning.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>
@@ -187,7 +187,7 @@ Android 8.0 版本引入了 Treble。引入 Treble 后,供应商相机 HAL 实
<h4 id="system-api-for-custom-camera-modes">适用于自定义相机模式的系统 API</h4>
<p>
-公共相机 API 定义了两种操作模式:正常模式和受限高速录制模式。这两种模式的语义截然不同;高速模式受限于一次最多只能有两个具体输出等。各个原始设备制造商 (OEM) 已表现出极大的兴趣想要针对特定于硬件的功能定义其他自定义模式。说白了,该模式只是一个传递到 <code>configure_streams</code> 的整数。请参阅 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#configurestreams"><code>hardware/camera/device/3.2/ICameraDeviceSession#configurestreams</code></a>。
+公共相机 API 定义了两种操作模式:正常模式和受限高速录制模式。这两种模式的语义截然不同;高速模式受限于一次最多只能有两个具体输出等。各个原始设备制造商 (OEM) 已表现出极大的兴趣想要针对特定于硬件的功能定义其他自定义模式。说白了,该模式只是一个传递到 <code>configure_streams</code> 的整数。请参阅:<a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#configurestreams"><code>hardware/camera/device/3.2/ICameraDeviceSession#configurestreams</code></a>。
</p>
<p>
@@ -202,7 +202,7 @@ Android 8.0 版本引入了 Treble。引入 Treble 后,供应商相机 HAL 实
android.hardware.camera2.CameraDevice#createCustomCaptureSession</a></code>。
请参阅:<a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/hardware/camera2/CameraDevice.java#805" class="external"><code>frameworks/base/core/java/android/hardware/camera2/CameraDevice.java#805</code></a>。</p>
-<aside class="note"><strong>注意</strong>:在 Android 8.1 版本中,应用必须预安装到系统映像上,才能访问此 API。
+<aside class="note"><strong>注意</strong>:在 Android 8.1 版本中,应用必须预安装到系统映像上才能访问此 API。
</aside>
<h4 id="oncapturequeueempty">onCaptureQueueEmpty</h4>
diff --git a/zh-cn/devices/graphics/build-tests.html b/zh-cn/devices/graphics/build-tests.html
index afe7ea12..4d945eea 100644
--- a/zh-cn/devices/graphics/build-tests.html
+++ b/zh-cn/devices/graphics/build-tests.html
@@ -30,7 +30,7 @@
<p>CMake 支持且建议在源代码树之外进行编译,也就是说,您应该始终在源代码树之外的独立编译目录中创建 Makefile 或项目文件。CMake 没有任何类型的“distclean”目标,因此,您必须手动移除 CMake 生成的所有文件。</p>
-<p>可以使用 <code>-D<var>OPTION_NAME</var>=<var>VALUE</var></code> 语法为 CMake 提供配置选项。deqp 的一些常用选项如下所示。</p>
+<p>您可以使用 <code>-D<var>OPTION_NAME</var>=<var>VALUE</var></code> 语法为 CMake 提供配置选项。deqp 的一些常用选项如下所示。</p>
<table>
<tbody><tr>
@@ -41,7 +41,7 @@
<tr>
<td><code>DEQP_TARGET</code></td>
<td><p>目标名称,例如“android”</p>
-<p>deqp CMake 脚本将包含文件 <code>targets/<var>DEQP_TARGET</var>/<var>DEQP_TARGET</var>.cmake</code>,而且在此文件中应该可以找到针对特定目标的编译选项。</p>
+<p>deqp CMake 脚本将包含文件 <code>targets/<var>DEQP_TARGET</var>/<var>DEQP_TARGET</var>.cmake</code>,而且此文件中应该可以找到针对特定目标的编译选项。</p>
</td>
</tr>
<tr>
@@ -58,7 +58,7 @@
<h2 id="creating_target_build_file">创建目标编译文件</h2>
-<p>针对新目标的 deqp 编译系统使用目标编译文件进行配置。目标编译文件可定义平台支持哪些功能以及需要哪些库或其他包含路径。目标文件名遵循 <code>targets/<var>NAME</var>/<var>NAME</var>.cmake</code> 格式,并且目标是使用 <code>DEQP_TARGET</code> 编译参数选择的。</p>
+<p>针对新目标的 deqp 编译系统使用目标编译文件进行配置。目标编译文件可定义平台支持哪些功能以及需要哪些库或其他包含路径。目标文件名采用 <code>targets/<var>NAME</var>/<var>NAME</var>.cmake</code> 格式,并且目标是使用 <code>DEQP_TARGET</code> 编译参数选择的。</p>
<p>目标文件中的文件路径是相对于基本 <code>deqp</code> 目录(而非 <code>targets/<var>NAME</var></code> 目录)的路径。目标编译文件可以设置以下标准变量。</p>
diff --git a/zh-cn/devices/graphics/index.html b/zh-cn/devices/graphics/index.html
index e0b7d6b3..3bec34ff 100644
--- a/zh-cn/devices/graphics/index.html
+++ b/zh-cn/devices/graphics/index.html
@@ -30,7 +30,7 @@
<p>从 Android 4.0 开始,硬件加速的 Canvas 默认情况下处于启用状态。因此,支持 OpenGL ES 2.0 的硬件 GPU 对于 Android 4.0 及更高版本的设备来说是强制要求。有关硬件加速绘制路径的工作原理及其行为与软件绘制路径行为之间的差异的说明,请参阅<a href="https://developer.android.com/guide/topics/graphics/hardware-accel.html">硬件加速指南</a>。</p>
-<p>除了 Canvas,开发者渲染图形的另一个主要方式是使用 OpenGL ES 直接渲染到 Surface。Android 会在 <a href="http://developer.android.com/reference/android/opengl/package-summary.html">Android.opengl</a> 软件包中提供 OpenGL ES 接口,开发者可以使用这些接口通过 SDK 或原生 API(在 <a href="https://developer.android.com/tools/sdk/ndk/index.html">Android NDK</a> 中提供)来调用其 GL 实现。</p>
+<p>除了 Canvas,开发者渲染图形的另一个主要方式是使用 OpenGL ES 直接渲染到 Surface。Android 在 <a href="http://developer.android.com/reference/android/opengl/package-summary.html">Android.opengl</a> 软件包中提供了 OpenGL ES 接口,开发者可以使用这些接口通过 SDK 或 <a href="https://developer.android.com/tools/sdk/ndk/index.html">Android NDK</a> 中提供的原生 API 来调用自己的 GL 实现。</p>
<p>Android 实现人员可以使用 <a href="testing.html">drawElements 质量计划</a>(也称为 deqp)来测试 OpenGL ES 功能。</p>
diff --git a/zh-cn/devices/graphics/run-tests.html b/zh-cn/devices/graphics/run-tests.html
index 841be789..14ad2537 100644
--- a/zh-cn/devices/graphics/run-tests.html
+++ b/zh-cn/devices/graphics/run-tests.html
@@ -218,7 +218,7 @@ adb –d shell setprop log.tag.dEQP DEBUG
<h3 id="executing_tests_on_android_without_android_cts">在没有 Android CTS 的 Android 设备上执行测试</h3>
-<p>要手动启动测试执行 Activity,请构造一个目标为 <code>android.app.NativeActivity</code> 的 Android Intent。这些 Activity 可以在 <code>com.drawelements.deqp</code> 包中找到。在 Intent 中,命令行必须以含 <code>"cmdLine"</code> 键的额外字符串提供。</p>
+<p>要手动启动测试执行 Activity,请构建一个目标为 <code>android.app.NativeActivity</code> 的 Android Intent。这些 Activity 可以在 <code>com.drawelements.deqp</code> 包中找到。在 Intent 中,命令行必须以含 <code>"cmdLine"</code> 键的额外字符串提供。</p>
<p>测试日志会写入 <code>/sdcard/dEQP-log.qpa</code>。若测试运行无法正常启动,请查看设备日志,了解其他调试信息。</p>
diff --git a/zh-cn/devices/sensors/hal-interface.html b/zh-cn/devices/sensors/hal-interface.html
index b1a8e108..212b3725 100644
--- a/zh-cn/devices/sensors/hal-interface.html
+++ b/zh-cn/devices/sensors/hal-interface.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中声明的 HAL 接口表示 Android <a href="sensor-stack.html#framework">框架</a>与特定硬件专用软件之间的接口。HAL 实现必须定义 sensors.h 中声明的每个函数。主要函数如下:</p>
+<p><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中声明的 HAL 接口表示 Android <a href="sensor-stack.html#framework">框架</a>与硬件专用软件之间的接口。HAL 实现必须定义 sensors.h 中声明的每个函数。主要函数如下:</p>
<ul>
<li><code>get_sensors_list</code> - 返回所有传感器的列表。</li>
<li><code>activate</code> - 启动或停止传感器。</li>
@@ -49,7 +49,7 @@
<pre class="prettyprint">int (*activate)(struct sensors_poll_device_t *dev, int sensor_handle, int
enabled);</pre>
<p>激活或禁用传感器。</p>
-<p><code>sensor_handle</code> 是要激活/禁用的传感器的句柄。传感器的句柄是通过其 <a href="#sensor_t">sensor_t</a> 结构的 <code>handle</code> 字段定义的。</p>
+<p><code>sensor_handle</code> 是要激活/禁用的传感器的句柄。传感器的句柄是由传感器的 <a href="#sensor_t">sensor_t</a> 结构的 <code>handle</code> 字段定义的。</p>
<p><code>enabled</code> 设为 1 时启用传感器,设为 0 时则停用传感器。</p>
<p>单次传感器在接收到事件后会自动自行禁用,并且必须仍接受通过调用 <code>activate(...,
enabled=0)</code> 进行禁用。</p>
@@ -79,7 +79,7 @@ int (*batch)(
<li>连续模式:<code>sampling_period_ns</code> 是采样率,指的是生成事件的速率。</li>
<li>变化模式:<code>sampling_period_ns</code> 限制事件的采样率,表示事件的生成频率不会高于每 <code>sampling_period_ns</code> 纳秒一次。可能会有比 <code>sampling_period_ns</code> 长的周期,在这种情况下,如果测量值长时间不变化,则不会生成任何事件。要了解详情,请参阅<a href="report-modes.html#on-change">变化</a>报告模式。</li>
<li>单次模式:<code>sampling_period_ns</code> 会被忽略。该参数没有任何作用。</li>
- <li>特殊模式:要详细了解 <code>sampling_period_ns</code> 如何用于特殊的传感器,请参阅具体的<a href="sensor-types.html">传感器类型说明</a>。</li>
+ <li>特殊模式:要详细了解如何将 <code>sampling_period_ns</code> 用于特殊的传感器,请参阅具体的<a href="sensor-types.html">传感器类型说明</a>。</li>
</ul>
<p>要详细了解 <code>sampling_period_ns</code> 在不同模式下的影响,请参阅<a href="report-modes.html">报告模式</a>。</p>
<p>对于连续和变化传感器:</p>
@@ -131,7 +131,7 @@ int (*setDelay)(
<p>刷写会异步执行(即该函数必须立即返回)。如果实现将一个 FIFO 用于多个传感器,则刷写该 FIFO,并且仅为指定传感器添加刷写完成事件。</p>
<p>如果指定传感器没有 FIFO(无法缓冲),或者如果 FIFO 在调用时为空,则 <code>flush</code> 仍必须操作成功并为该传感器发送刷写完成事件。这适用于除单次传感器以外的所有传感器。</p>
<p>当调用 <code>flush</code> 时,即使该传感器的 FIFO 中已经存在刷写事件,也必须另外创建一个刷写事件并将其添加到 FIFO 的末尾,并且必须刷写 FIFO。<code>flush</code> 调用的次数必须等于创建的刷写完成事件数。</p>
-<p><code>flush</code> 不适用于<a href="report-modes.html#one-shot">单次</a>传感器。如果 <code>sensor_handle</code> 指的是单次传感器,则 <code>flush</code> 必须返回 <code>-EINVAL</code>,并且不生成任何刷写完成元数据事件。</p>
+<p><code>flush</code> 不适用于<a href="report-modes.html#one-shot">单次</a>传感器。如果 <code>sensor_handle</code> 指的是单次传感器,则 <code>flush</code> 必须返回 <code>-EINVAL</code>,并且不会生成任何刷写完成元数据事件。</p>
<p>如果操作成功,该函数返回 0;如果指定的传感器是单次传感器或未启用,则返回 <code>-EINVAL</code>;其他情况返回表示错误的负数。</p>
<h2 id="poll">poll()</h2>
<pre class="prettyprint">int (*poll)(struct sensors_poll_device_t *dev, sensors_event_t* data, int
@@ -147,15 +147,15 @@ int (*setDelay)(
<p>当传感器禁用时,将调用 <code>activate(..., enable=0)</code>。</p>
<p>在进行上述调用的同时,会反复调用 <code>poll</code> 函数来请求数据。甚至在没有传感器激活的情况下,也可以调用 <code>poll</code>。</p>
<h2 id="sensors_module_t">sensors_module_t</h2>
-<p><code>sensors_module_t</code> 是用于为传感器创建 Android 硬件模块的类型。HAL 的实现必须定义一个该类型的对象 <code>HAL_MODULE_INFO_SYM</code>,以提供 <a href="#get_sensors_list_list">get_sensors_list</a> 函数。要了解详情,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中 <code>sensors_module_t</code> 的定义以及 <code>hw_module_t</code> 的定义。</p>
+<p><code>sensors_module_t</code> 是用于为传感器创建 Android 硬件模块的类型。HAL 的实现必须定义一个该类型的对象 <code>HAL_MODULE_INFO_SYM</code>,以提供 <a href="#get_sensors_list_list">get_sensors_list</a> 函数。要了解详情,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中的 <code>sensors_module_t</code> 的定义以及 <code>hw_module_t</code> 的定义。</p>
<h2 id="sensors_poll_device_t_sensors_poll_device_1_t">sensors_poll_device_t/sensors_poll_device_1_t</h2>
-<p><code>sensors_poll_device_1_t</code> 包含上文定义的方法的剩余部分:<code>activate</code>、<code>batch</code>、<code>flush</code> 和 <code>poll</code>。它的 <code>common</code> 字段(类型为 <a href="/devices/halref/structhw__device__t.html">hw_device_t</a>)用于定义 HAL 的版本号。</p>
+<p><code>sensors_poll_device_1_t</code> 包含上文定义的方法的剩余部分:<code>activate</code>、<code>batch</code>、<code>flush</code> 和 <code>poll</code>。它的 <code>common</code> 字段(类型为 <a href="/devices/halref/structhw__device__t.html">hw_device_t</a>)定义了 HAL 的版本号。</p>
<h2 id="sensor_t">sensor_t</h2>
-<p><code>sensor_t</code> 表示 <a href="index.html">Android 传感器</a>。以下是 sensor_t 的一些重要字段:</p>
+<p><code>sensor_t</code> 表示这是一个 <a href="index.html">Android 传感器</a>。以下是 sensor_t 的一些重要字段:</p>
<p><strong>name</strong>:表示传感器的用户可见字符串。该字符串通常包括底层传感器的部件名称、传感器的类型以及是否为唤醒传感器。例如,“LIS2HH12 Accelerometer”、“MAX21000 Uncalibrated Gyroscope”、“BMP280 Wake-up Barometer”、“MPU6515 Game Rotation Vector”。</p>
<p><strong>handle</strong>:用于在注册到传感器或从传感器生成事件时表示传感器的整数。</p>
<p><strong>type</strong>:传感器的类型。要详细了解传感器类型的解释,请参阅<a href="index.html">什么是 Android 传感器?</a>; 要了解官方传感器类型,请参阅<a href="sensor-types.html">传感器类型</a>。对于非官方传感器类型,<code>type</code> 必须以 <code>SENSOR_TYPE_DEVICE_PRIVATE_BASE</code> 开头。</p>
-<p><strong>stringType</strong>:传感器的类型(以字符串表示)。如果传感器为官方类型,则设置为 <code>SENSOR_STRING_TYPE_*</code>。如果传感器为制造商特定类型,<code>stringType</code> 必须以制造商的反向域名开头。<em></em>例如,由 Fictional-Company 的 Cool-product 团队定义的传感器(比如独角兽检测器)可以使用 <code>stringType=”com.fictional_company.cool_product.unicorn_detector”</code>。
+<p><strong>stringType</strong>:传感器的类型(以字符串表示)。如果传感器为官方类型,则设置为 <code>SENSOR_STRING_TYPE_*</code>。如果传感器为制造商特定类型,<code>stringType</code> 必须以制造商的反向域名开头。例如,由 Fictional-Company 的 Cool-product 团队定义的传感器(比如独角兽检测器)可以使用 <code>stringType=”com.fictional_company.cool_product.unicorn_detector”</code>。<em></em>
<code>stringType</code> 用于唯一标识非官方传感器类型。要详细了解传感器类型和字符串类型,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a>。</p>
<p><strong>requiredPermission</strong>:代表应用要查看传感器、注册到传感器和接收传感器数据所必须具备的权限的字符串。空字符串表明应用不需要获取该传感器的任何访问权限。部分传感器类型(例如<a href="sensor-types.html#heart_rate">心率监测器</a>)具有强制性的 <code>requiredPermission</code>。提供敏感用户信息(例如心率)的所有传感器必须受到权限保护。</p>
<p><strong>flags</strong>:传感器的标记,用于定义传感器的报告模式以及传感器是否为唤醒传感器。例如,对于单次唤醒传感器,标记为 <code>flags = SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP</code>。当前版本的 HAL 中未使用的标记位必须等于 0。</p>
@@ -169,7 +169,7 @@ int (*setDelay)(
<p>对于官方传感器类型的传感器,一些字段会被框架覆盖。例如,强制要求<a href="sensor-types.html#accelerometer">加速度计</a>传感器使用连续报告模式,并强制要求<a href="sensor-types.html#heart_rate">心率</a>监测器受 <code>SENSOR_PERMISSION_BODY_SENSORS</code> 权限的保护。</p>
<h2 id="sensors_event_t">sensors_event_t</h2>
<p>由 Android 传感器生成并通过 <a href="#poll">poll</a> 函数报告的传感器事件属于 <code>type sensors_event_t</code>。以下是 <code>sensors_event_t</code> 的一些重要字段:</p>
-<p><strong>version</strong>:必须是 <code>sizeof(struct sensors_event_t)</code>。</p>
+<p><strong>version</strong>:必须是 <code>sizeof(struct sensors_event_t)</code></p>
<p><strong>sensor</strong>:生成相应事件的传感器的句柄,如 <code>sensor_t.handle</code> 所定义。</p>
<p><strong>type</strong>:生成相应事件的传感器的类型,如 <code>sensor_t.type</code> 所定义。</p>
<p><strong>timestamp</strong>:事件的时间戳,以纳秒为单位。这是事件发生(采取了步骤,或是进行了加速度计测量)的时间,而不是报告事件的时间。<code>timestamp</code> 必须与 <code>elapsedRealtimeNano</code> 时钟同步,并且对于连续传感器,抖动必须很小。有时需要进行时间戳过滤以满足 CDD 要求,因为仅使用 SoC 中断时间来设置时间戳会导致抖动过大,而仅使用传感器芯片时间来设置时间戳又会由于传感器时钟漂移而无法与 <code>elapsedRealtimeNano</code> 时钟同步。</p>
diff --git a/zh-cn/devices/sensors/sensor-stack.html b/zh-cn/devices/sensors/sensor-stack.html
index 22cfef75..43de69fb 100644
--- a/zh-cn/devices/sensors/sensor-stack.html
+++ b/zh-cn/devices/sensors/sensor-stack.html
@@ -57,15 +57,15 @@
<li>没有将数据从应用向下发送至传感器或其驱动程序的机制。这样可以确保某个应用无法修改传感器的行为,从而不会对其他应用造成破坏。</li>
</ul>
<h3 id="sensor_fusion">传感器融合</h3>
-<p>Android 框架为部分复合传感器提供默认实现。如果设备上有<a href="sensor-types.html#gyroscope">陀螺仪</a>、<a href="sensor-types.html#accelerometer">加速度计</a>和<a href="sensor-types.html#magnetic_field_sensor">磁力计</a>,但没有<a href="sensor-types.html#rotation_vector">旋转矢量</a>传感器、<a href="sensor-types.html#gravity">重力</a>传感器和<a href="sensor-types.html#linear_acceleration">线性加速度</a>传感器,则该框架会实现这些传感器,以便应用仍可以使用它们。</p>
+<p>Android 框架为部分复合传感器提供默认实现。如果设备上有<a href="sensor-types.html#gyroscope">陀螺仪</a>、<a href="sensor-types.html#accelerometer">加速度计</a>和<a href="sensor-types.html#magnetic_field_sensor">磁力计</a>,但没有<a href="sensor-types.html#rotation_vector">旋转矢量</a>传感器、<a href="sensor-types.html#gravity">重力</a>传感器和<a href="sensor-types.html#linear_acceleration">线性加速度</a>传感器,则 Android 框架会实现这些传感器,以便应用仍可以使用它们。</p>
<p>默认实现无法访问其他实现可以访问的所有数据,并且必须在 SoC 上运行,因此它不像其他实现那样精准和省电。设备制造商应尽可能定义自己的融合传感器(旋转矢量传感器、重力传感器和线性加速度传感器,以及<a href="sensor-types.html#game_rotation_vector">游戏旋转矢量</a>传感器等较新的复合传感器),而非依赖该默认实现。此外,设备制造商也可以要求传感器芯片供应商为其提供实现。</p>
<p>默认的传感器融合实现没有相关的维护,且可能导致依赖它的设备无法通过 CTS 验证。</p>
<h3 id="under_the_hood">深入了解</h3>
<p>本部分作为背景信息提供,适用于 Android 开放源代码项目 (AOSP) 框架代码的维护人员,与硬件制造商无关。</p>
<h4 id="jni">JNI</h4>
-<p>框架会使用与 <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> 相关联且位于 <code>frameworks/base/core/jni/</code> 目录中的 Java 原生接口 (JNI)。该代码会调用较低级别的原生代码,以获取对相应传感器硬件的访问权限。</p>
+<p>Android 框架会使用 <code>frameworks/base/core/jni/</code> 目录中与 <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> 相关联的 Java 原生接口 (JNI)。该代码会调用较低级别的原生代码,以获取对相应传感器硬件的访问权限。</p>
<h4 id="native_framework">原生框架</h4>
-<p>原生框架在 <code>frameworks/native/</code> 中定义,并提供相当于 <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> 软件包的原生内容。原生框架会调用 Binder IPC 代理,以获取对传感器专属服务的访问权限。</p>
+<p>原生框架在 <code>frameworks/native/</code> 中定义,并提供相当于 <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> 软件包的原生软件包。原生框架会调用 Binder IPC 代理,以获取对传感器专属服务的访问权限。</p>
<h4 id="binder_ipc">Binder IPC</h4>
<p>Binder IPC 代理用于促进跨越进程边界的通信。</p>
<h2 id="hal">HAL</h2>
diff --git a/zh-cn/devices/tech/admin/ota-updates.html b/zh-cn/devices/tech/admin/ota-updates.html
index b362f3c9..b22c6e6a 100644
--- a/zh-cn/devices/tech/admin/ota-updates.html
+++ b/zh-cn/devices/tech/admin/ota-updates.html
@@ -19,7 +19,6 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
<p>
<a href="https://source.android.com/compatibility/android-cdd#11_updatable_software">Android 兼容性定义文档 (CDD) 可更新软件</a>要求设备实现 <a href="https://developer.android.com/reference/android/app/admin/SystemUpdatePolicy.html" class="external"><code>SystemUpdatePolicy</code></a> 类。<code>SystemUpdatePolicy</code> 可让设备所有者 (DO) 应用(如果存在)控制系统更新的安装。
</p>
@@ -55,7 +54,7 @@ Android 9 允许设备所有者将 OTA 更新最多推迟 90 天,增强了设
</ul>
<p>
-设备所有者还可以通过<a href="https://developer.android.com/work/dpc/system-updates#freeze-periods">设置冻结时段</a>(在 Android 9 或更高版本中),在重要时段(如节假日或其他繁忙时段)冻结操作系统版本。系统在冻结时段不会安装 OTA 更新。我们建议使用 <code>SystemUpdatePolicy.InstallationOption</code>(请参见下一节);不过,OTA 客户端还可以通过调用 <a href="https://developer.android.com/reference/android/app/admin/SystemUpdatePolicy#getFreezePeriods()"><code>SystemUpdatePolicy.getFreezePeriods()</code></a> 来检查设备是否处于冻结时段。
+设备所有者还可以通过<a href="https://developer.android.com/work/dpc/system-updates#freeze-periods">设置冻结时段</a>(在 Android 9 或更高版本中),在重要时段(如节假日或其他繁忙时段)冻结操作系统版本。系统在冻结时段不会安装 OTA 更新。我们建议使用 <code>SystemUpdatePolicy.InstallationOption</code>(请参见下一节);不过,OTA 客户端还可以调用 <a href="https://developer.android.com/reference/android/app/admin/SystemUpdatePolicy#getFreezePeriods()"><code>SystemUpdatePolicy.getFreezePeriods()</code></a> 来检查设备是否处于冻结时段。
</p>
<h2 id="implementing-installation-options">
@@ -78,7 +77,7 @@ Android 9 引入了专为系统更新客户端设计的 @SystemApi <code>SystemU
</ul>
<p>
-系统更新客户端可以查询 <code>SystemUpdatePolicy.InstallationOption</code>,方法是使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code>,其中“when”表示查询安装选项的时间(从公元纪年开始计算的毫秒数)<var></var>。系统更新客户端可以使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code> 方法在有效时间结束前针对返回的选项执行操作。在返回的选项失效后,客户端可以使用新的时间戳为最近的选项执行另一次查询。
+系统更新客户端可以查询 <code>SystemUpdatePolicy.InstallationOption</code>,方法是使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code>,其中“when”表示查询安装选项的时间(从公元纪年开始计算的毫秒数)。<var></var>系统更新客户端可以使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code> 方法在有效时间结束前针对返回的选项执行操作。在返回的选项失效后,客户端可以使用新的时间戳为最近的选项执行另一次查询。
</p>
<p>
diff --git a/zh-cn/devices/tech/config/carrierid.html b/zh-cn/devices/tech/config/carrierid.html
index 699ec099..d0cbda2b 100644
--- a/zh-cn/devices/tech/config/carrierid.html
+++ b/zh-cn/devices/tech/config/carrierid.html
@@ -21,7 +21,7 @@
-->
<p>
-运行 Android 9 及更高版本的设备可以识别订阅运营商信息,以提供相应 ID 和运营商名称。Android 维护着一个运营商 ID 数据库,该数据库采用针对每个运营商及其专属运营商 ID 的匹配规则。AOSP 在 <a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/carrier_list.textpb" class="external"><code>android/packages/providers/TelephonyProvider/assets/carrier_list.textpb</code></a> 文件中包含运营商 ID 数据库的内容。统一的数据库有助于最大限度地减少需要识别运营商的应用内的重复逻辑,并限制暴露可用于识别运营商的属性。
+运行 Android 9 及更高版本的设备可以识别订阅运营商信息,以提供相应 ID 和运营商名称。Android 维护着一个运营商 ID 数据库,该数据库采用每个运营商对应其唯一运营商 ID 的匹配规则。AOSP 在 <a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/carrier_list.textpb" class="external"><code>android/packages/providers/TelephonyProvider/assets/carrier_list.textpb</code></a> 文件中包含运营商 ID 数据库的内容。统一的数据库有助于最大限度地减少需要识别运营商的应用内的重复逻辑,并限制暴露可用于识别运营商的属性。
</p>
<p>
@@ -31,11 +31,11 @@
<h2 id="implementation">实现</h2>
<p>
-想要实现带外更新的用户可以从 AOSP 下载 <a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/carrier_list.pb" class="external"><code>carrier_list.pb</code></a> 二进制文件。要查看该表的可读懂格式,请参阅 <a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/carrier_list.textpb" class="external"><code>carrier_list.txtpb</code></a>。
+想要实现带外更新的用户可以从 AOSP 下载 <a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/carrier_list.pb" class="external"><code>carrier_list.pb</code></a> 二进制文件。要查看该表的用户可读懂格式,请参阅 <a href="https://android.googlesource.com/platform/packages/providers/TelephonyProvider/+/master/assets/carrier_list.textpb" class="external"><code>carrier_list.txtpb</code></a>。
</p>
<p>
-请将更新后的运营商 ID 表放到 <code>/data/misc/carrierid/</code> 数据分区中。如果更新后的版本高于安装的版本,设备会将该表保留到<a href="https://developer.android.com/reference/android/provider/Telephony.CarrierId" class="external">运营商 ID 数据库</a>中。公共 API <a href="https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCarrierId()" class="external"><code>getSimCarrierId()</code></a> 和 <a href="https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCarrierIdName()" class="external"><code>getSimCarrierIdName()</code></a> 将获取运营商 ID 数据库中的最新信息。
+请将更新后的运营商 ID 表放到 <code>/data/misc/carrierid/</code> 数据分区中。如果更新后的版本高于安装的版本,设备会将该表保留到<a href="https://developer.android.com/reference/android/provider/Telephony.CarrierId" class="external">运营商 ID 数据库</a>中。运营商 ID 数据库中的最新信息将通过公共 API <a href="https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCarrierId()" class="external"><code>getSimCarrierId()</code></a> 和 <a href="https://developer.android.com/reference/android/telephony/TelephonyManager#getSimCarrierIdName()" class="external"><code>getSimCarrierIdName()</code></a> 获取。
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/config/filesystem.html b/zh-cn/devices/tech/config/filesystem.html
index da34adca..6b556dc9 100644
--- a/zh-cn/devices/tech/config/filesystem.html
+++ b/zh-cn/devices/tech/config/filesystem.html
@@ -4,7 +4,6 @@
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
-
<!--
Copyright 2017 The Android Open Source Project
@@ -263,7 +262,7 @@ service vendor_foo /vendor/bin/foo_service
<h2 id="converting-aid-to-friendly">从 AID 转换为好记的名称</h2>
<p>
- 对于 <a href="#using-oem-aid">OEM AID</a>,Android 8.x 要求配合 <code>oem_####</code> 使用 <code>getpwnam</code> 和类似函数,在通过 <code>getpwnam</code>(如 <code>init</code> 脚本)处理查询时也是如此。在 Android 9 中,您可以使用 Bionic 中的 <code>getpwnam</code> 和 <code>getgrnam</code> 这对组合函数从 Android ID (AID) 转换为好记的名称,反之亦然。
+ 对于 <a href="#using-oem-aid">OEM AID</a>,Android 8.x 要求jiang 配合 <code>oem_####</code> 使用 <code>getpwnam</code> 和类似函数,在通过 <code>getpwnam</code>(如 <code>init</code> 脚本)处理查询时也是如此。在 Android 9 中,您可以使用 Bionic 中的 <code>getpwnam</code> 和 <code>getgrnam</code> 这对组合函数从 Android ID (AID) 转换为好记的名称,反之亦然。
</p>
<h3 id="using-file-system-capabilities">使用文件系统权能</h3>
diff --git a/zh-cn/devices/tech/connect/block-numbers.html b/zh-cn/devices/tech/connect/block-numbers.html
index 2976b303..462a9a9b 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) 中针对此功能列出的要求。
+如果设备在之前出厂时就具备呼叫/短信限制功能,请调整这些功能,以确保将所有严格匹配的被屏蔽电话号码都存储在 <code>BlockedNumberProvider,</code> 中,并确保围绕该提供程序发生的行为满足 Android 兼容性定义文档 (CDD) 中针对此功能列出的要求。<em></em>
</p>
<p>
@@ -172,7 +172,8 @@ android.telephony.cts.SmsManagerTest#testSmsBlocking
</pre>
<p>
-在运行 <code>$ adb root</code> 之后,可以使用 <code>adb</code> 命令来操作 <code>BlockedNumberProvider</code>。例如:</p>
+在运行 <code>$ adb root</code> 之后,可以使用 <code>adb</code> 命令来操作 <code>BlockedNumberProvider</code>。例如:
+</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">adb root</code>
<code class="devsite-terminal">adb shell content query --uri content://com.android.blockednumber/blocked</code>
diff --git a/zh-cn/devices/tech/connect/data-plans.html b/zh-cn/devices/tech/connect/data-plans.html
index 04229c4c..b43cd9df 100644
--- a/zh-cn/devices/tech/connect/data-plans.html
+++ b/zh-cn/devices/tech/connect/data-plans.html
@@ -28,7 +28,7 @@
<h2 id="configuration_by_carrier">运营商配置</h2>
-<p>要配置流量套餐,运营商可以使用 <a href="https://developer.android.com/reference/android/telephony/SubscriptionPlan.Builder" class="external"><code>SubscriptionPlan</code> API</a> 向其现有 Android 应用中添加功能。这些 API 用于支持各种类型的流量套餐,其中包括可续费和不可续费套餐以及随时间而变化的套餐。</p>
+<p>要配置流量套餐,运营商可以使用 <a href="https://developer.android.com/reference/android/telephony/SubscriptionPlan.Builder" class="external"><code>SubscriptionPlan</code> API</a> 向其现有 Android 应用中添加功能。这些 API 用于支持各种类型的流量套餐,包括可续费和不可续费套餐以及随时间而变化的套餐。</p>
<p>以下是如何配置按月续费的常见流量套餐类型的示例:</p>
<pre class="prettyprint"><code>SubscriptionManager sm =
@@ -70,6 +70,6 @@ sm.setSubscriptionPlans(subId, Lists.newArrayList(
<p>Android 的“设置”应用将显示由运营商配置的所有流量套餐详情,从而确保用户可以看到最准确的运营商关系状态,并为用户提供进入运营商应用的途径以升级其套餐。建议您选择可自定义“设置”应用的设备制造商,以便继续显示相关详情。</p>
-<p>上述 <code>SubscriptionManager</code> API 由 <code>android.telephony.cts.SubscriptionManagerTest</code> 进行测试,这样可确保流量套餐详情可由运营商应用来配置,且更改得以应用于整个操作系统。</p>
+<p>上述 <code>SubscriptionManager</code> API 由 <code>android.telephony.cts.SubscriptionManagerTest</code> 进行测试,这样可确保流量套餐详情可通过运营商应用配置,且更改得以应用于整个操作系统。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/connect/esim-modem-requirements.html b/zh-cn/devices/tech/connect/esim-modem-requirements.html
index e61bff93..77ceef9a 100644
--- a/zh-cn/devices/tech/connect/esim-modem-requirements.html
+++ b/zh-cn/devices/tech/connect/esim-modem-requirements.html
@@ -40,7 +40,7 @@
<p>请参阅 <a href="https://www.etsi.org/deliver/etsi_ts/102200_102299/102221/15.00.00_60/ts_102221v150000p.pdf">ETSI TS 102 221 第 11.1.19.2.4 节</a>:“Additional Terminal capability indications related to eUICC”。字节 [1-3] 应为:‘83’(代码)‘01’(长度)‘07’(eUICC 功能)。</p>
<h3 id="optional_support_esim_os_ota_updates">(可选)支持 eSIM 卡操作系统 OTA 更新</h3>
-<aside class="note"><strong>注意:</strong><span>由于 eSIM 卡操作系统无线下载 (OTA) 更新未标准化,因此是否提供此更新取决于提供 eSIM 卡操作系统的供应商。</span></aside>
+<aside class="note"><strong>注意</strong>:<span>由于 eSIM 卡操作系统无线下载 (OTA) 更新未标准化,因此是否支持此更新取决于提供 eSIM 卡操作系统的供应商。</span></aside>
<p>调制解调器应该支持 eSIM 卡操作系统 OTA 更新的所有要求,例如切换到直通模式并确保 eSIM 卡在 OTA 更新过程中一直处于通电状态。</p>
<h2 id="hal_requirements">HAL 要求</h2>
@@ -64,7 +64,7 @@
<p>如果 eSIM 卡处于 SIM 锁定(subsidy 锁定)状态,则调制解调器应在 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.0/IRadioResponse#geticccardstatusresponse">getIccCardStatusResponse</a> API 中将卡状态设置为 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.0/types#cardstate"><code>CardState:RESTRICTED</code></a>。</p>
<h3 id="optional_implement_setsimslotsmapping_api_in_iradioconfig_hal_v10">(可选)在 IRadioConfig HAL v1.0 中实现 setSimSlotsMapping API</h3>
-<aside class="note"><strong>注意</strong>:<span>仅在需要切换插槽的设备配置中需要执行此操作,例如,设备具有一个 eSIM 卡插槽和一个实体/可移除的 SIM (pSIM) 卡插槽,并且一次只有一个插槽可处于有效状态。</span></aside>
+<aside class="note"><strong>注意</strong>:<span>仅在需要切换插槽的设备配置中才需执行此操作,例如,设备具有一个 eSIM 卡插槽和一个实体/可移除的 SIM (pSIM) 卡插槽,并且一次只有一个插槽可处于有效状态。</span></aside>
<p>调制解调器应支持 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/config/1.0/IRadioConfig.hal#81" class="external">setSimSlotsMapping API</a>,此 API 能够设置从实体插槽到逻辑插槽的映射。LPA 使用此 API 来选择处于有效状态的 SIM 卡插槽。</p>
<h2 id="logging_requirements">日志记录要求</h2>
diff --git a/zh-cn/devices/tech/connect/third-party-call-apps.html b/zh-cn/devices/tech/connect/third-party-call-apps.html
index 5871d7c1..be076172 100644
--- a/zh-cn/devices/tech/connect/third-party-call-apps.html
+++ b/zh-cn/devices/tech/connect/third-party-call-apps.html
@@ -30,7 +30,7 @@
<p>在 Android 9 中,建议您使用第三方通话应用来实现自行管理的 <code>ConnectionService</code> API。要详细了解如何使用此 API 构建通话应用,请参阅<a href="https://developer.android.com/guide/topics/connectivity/telecom/selfManaged" class="external">构建通话应用</a>。</p>
-<p>借助自行管理的 <code>ConnectionService</code> API,开发者还可以选择使其应用中的通话记录显示在系统的通话记录中(请参阅 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount#EXTRA_LOG_SELF_MANAGED_CALLS" class="external"><code>EXTRA_LOG_SELF_MANAGED_CALLS</code></a>)。根据 <a href="/compatibility/android-cdd#7_4_data_connectivity">Android 兼容性定义文档 (CDD)</a>(第 7.4.1.2 节)中的要求,您应确保自己的拨号器/电话应用能够显示此类通话记录条目,并显示接入相应通话的第三方通话应用的名称(要查看有关 AOSP 拨号器应用如何满足此要求的示例,请参阅<a href="#call_log_entries_from_3p_calling_apps">源自第三方通话应用的通话记录条目</a>)。</p>
+<p>借助自行管理的 <code>ConnectionService</code> API,开发者还可以选择使其应用中的通话记录显示在系统的通话记录中(请参阅 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount#EXTRA_LOG_SELF_MANAGED_CALLS" class="external"><code>EXTRA_LOG_SELF_MANAGED_CALLS</code></a>)。根据 <a href="/compatibility/android-cdd#7_4_data_connectivity">Android 兼容性定义文档 (CDD)</a>(第 7.4.1.2 节)中的要求,您应确保自己的拨号器/“电话”应用能够显示此类通话记录条目,并显示接入相应通话的第三方通话应用的名称(要查看有关 AOSP 拨号器应用如何满足此要求的示例,请参阅<a href="#call_log_entries_from_3p_calling_apps">源自第三方通话应用的通话记录条目</a>)。</p>
<p>应用需要在其连接中设置 <a href="https://developer.android.com/reference/android/telecom/Connection.html#CAPABILITY_SUPPORT_HOLD" class="external"><code>CAPABILITY_SUPPORT_HOLD</code></a> 和 <a href="https://developer.android.com/reference/android/telecom/Connection.html#CAPABILITY_HOLD" class="external"><code>CAPABILITY_HOLD</code></a>。但在某些情况下,应用可能无法使通话处于呼叫保持状态。该框架包含了应对此类情形的规定。</p>
diff --git a/zh-cn/devices/tech/connect/wifi-infrastructure.html b/zh-cn/devices/tech/connect/wifi-infrastructure.html
index 3a1725e3..d8add6fe 100644
--- a/zh-cn/devices/tech/connect/wifi-infrastructure.html
+++ b/zh-cn/devices/tech/connect/wifi-infrastructure.html
@@ -42,7 +42,7 @@
<ul>
<li>WLAN 已启用</li>
<li>设备未连接到 WLAN 网络</li>
-<li>有<strong>开放</strong>且 <strong>RSSI 足够高</strong>(与内部 WLAN 选择算法使用的 RSSI 阈值相同)的 WLAN 网络<em></em>时</li>
+<li>有<strong>开放</strong>且 <strong>RSSI 足够高</strong>(与内部 WLAN 选择算法使用的 RSSI 阈值相同)的 WLAN 网络时<em></em></li>
</ul>
<p>用户可在设置应用中通过以下路径启用或停用该功能:</p>
diff --git a/zh-cn/devices/tech/dalvik/improvements.html b/zh-cn/devices/tech/dalvik/improvements.html
index 6558832b..9e762394 100644
--- a/zh-cn/devices/tech/dalvik/improvements.html
+++ b/zh-cn/devices/tech/dalvik/improvements.html
@@ -200,7 +200,7 @@
<h2 id="faster-native-methods">更快速的原生方法</h2>
<p>
- 使用 <a class="external" href="https://android.googlesource.com/platform/libcore/+/master/dalvik/src/main/java/dalvik/annotation/optimization/FastNative.java"><code>@FastNative</code></a> 和 <a class="external" href="https://android.googlesource.com/platform/libcore/+/master/dalvik/src/main/java/dalvik/annotation/optimization/CriticalNative.java"><code>@CriticalNative</code></a> 注释可以更快速地对 Java 原生接口 (JNI) 进行原生调用。这些内置的 ART 运行时优化可加快 JNI 转换速度,并取代了现在已弃用的 !<em>bang JNI 标记。</em>注解对非原生方法没有任何影响,并且仅适用于 <code>bootclasspath</code> 上的平台 Java 语言代码(无 Play 商店更新)。
+使用 <a class="external" href="https://android.googlesource.com/platform/libcore/+/master/dalvik/src/main/java/dalvik/annotation/optimization/FastNative.java"><code>@FastNative</code></a> 和 <a class="external" href="https://android.googlesource.com/platform/libcore/+/master/dalvik/src/main/java/dalvik/annotation/optimization/CriticalNative.java"><code>@CriticalNative</code></a> 注解可以更快速地对 Java 原生接口 (JNI) 进行原生调用。这些内置的 ART 运行时优化可以加快 JNI 转换速度,并取代了现在已弃用的 !<em></em>bang JNI 标记。注解对非原生方法没有任何影响,并且仅适用于 <code>bootclasspath</code> 上的平台 Java 语言代码(无 Play 商店更新)。
</p>
<p>
@@ -234,7 +234,7 @@
</aside>
<p>
- <code>@FastNative</code> 可以使原生方法的性能提升高达 3 倍,<code>@CriticalNative</code> 则可以提升高达 5 倍。例如,在 Nexus 6P 设备上测量的 JNI 转换如下:
+ <code>@FastNative</code> 可以使原生方法的性能提升高达 2 倍,<code>@CriticalNative</code> 则可以提升高达 4 倍。例如,在 Nexus 6P 设备上测量的 JNI 转换如下:
</p>
<table>
diff --git a/zh-cn/devices/tech/debug/gdb.html b/zh-cn/devices/tech/debug/gdb.html
index d708a448..7aa0abf1 100644
--- a/zh-cn/devices/tech/debug/gdb.html
+++ b/zh-cn/devices/tech/debug/gdb.html
@@ -43,7 +43,7 @@ gdbclient.py -p 1234
<p>此脚本会设置端口转发,在设备上启动相应的 <code>gdbserver</code>,在主机上启动相应的 <code>gdb</code>,配置 <code>gdb</code> 以查找符号,然后将 <code>gdb</code> 连接到远程 <code>gdbserver</code>。</p>
-<aside class="note"><strong>注意</strong>:在 Android 6 及更低版本中,该脚本是一个名为 <code>gdbclient</code> 的 Shell 脚本,而不是名为 <code>gdbclient.py</code> 的 Python 脚本。</aside>
+<aside class="note"><strong>注意</strong>:在 Android 6 及更低版本的 Android 系统中,该脚本是一个名为 <code>gdbclient</code> 的 Shell 脚本,而不是名为 <code>gdbclient.py</code> 的 Python 脚本。</aside>
<h2 id="starts">调试本机进程启动</h2>
@@ -83,7 +83,7 @@ gdbclient.py -p <var>APP_PID</var>
<p>要调试应用启动,请使用“设置”中的开发者选项,指示应用等待附加 Java 调试程序:</p>
<ol>
-<li><em></em>依次转到“设置”&gt;“开发者选项”&gt;“选择调试应用”,并从列表中选择您的应用,然后按<strong>等待调试程序</strong>。</li>
+<li>依次转到“设置”&gt;“开发者选项”&gt;“选择调试应用”,并从列表中选择您的应用,然后按<strong>等待调试程序</strong>。<em></em></li>
<li>启动应用,您可以从启动器启动,也可以在命令行中运行以下命令来启动:<pre class="devsite-terminal devsite-click-to-copy">
adb shell am start -a android.intent.action.MAIN -n <var>APP_NAME</var>/.<var>APP_ACTIVITY</var>
diff --git a/zh-cn/devices/tech/debug/index.html b/zh-cn/devices/tech/debug/index.html
index f6ce152e..cb3e437b 100644
--- a/zh-cn/devices/tech/debug/index.html
+++ b/zh-cn/devices/tech/debug/index.html
@@ -22,7 +22,7 @@
<p>本部分总结了开发平台级功能时,可用于调试、跟踪和分析原生 Android 平台代码的实用工具和相关命令。</p>
-<p class="note"><strong>注意</strong>:本部分和本网站其他部分的页面建议您配合使用 <code>adb</code> 和 <code>setprop</code> 参数来调试 Android 的某些方面。请注意,在 Android 操作系统的 O 版本之前,属性名称的长度上限为 32 个字符。也就是说,要创建一个包含应用名称的 wrap 属性,您需要截断该名称以使其符合字符数限制。在 Android O 及更高版本中,此字符数上限值要大得多,应该不需要截断。</p>
+<p class="note"><strong>注意</strong>:本部分和本网站其他部分的页面建议您配合使用 <code>adb</code> 与 <code>setprop</code> 参数来调试 Android 的某些方面。请注意,在 Android 操作系统的 O 版本之前,属性名称的长度上限为 32 个字符。也就是说,要创建一个包含应用名称的 wrap 属性,您需要截断该名称以使其符合字符数限制。在 Android O 及更高版本中,此字符数上限值要大得多,应该不需要截断。</p>
<p>本页面中介绍了与崩溃转储有关的基本信息(可以在 logcat 输出中找到);其他页面更详细地介绍了如何<a href="/devices/tech/debug/native-crash.html">诊断原生代码崩溃问题</a>,如何通过<a href="https://developer.android.com/studio/command-line/dumpsys.html"> <code>dumpsys</code></a> 了解系统服务状况,如何查看<a href="/devices/tech/debug/native-memory.html">本地内存</a>、<a href="https://developer.android.com/studio/command-line/dumpsys.html#network">网络</a>和 <a href="https://developer.android.com/studio/command-line/dumpsys.html#procstats">RAM</a> 使用情况,如何使用 <a href="/devices/tech/debug/asan.html">AddressSanitizer</a> 检测原生代码中的内存错误,如何评估<a href="/devices/tech/debug/eval_perf.html">性能问题</a>(包括 <a href="/devices/tech/debug/systrace">systrace</a>),以及如何使用 <a href="/devices/tech/debug/gdb.html">GNU 调试程序 (GDB)</a> 和其他调试工具。</p>
@@ -267,6 +267,6 @@ stack &lt; FS/data/tombstones/tombstone_05
#51 pc 00000000000233bc /system/lib64/libc.so (__start_thread+68)
</pre>
-<p>框架 #50-#51 是所有线程实际应启动的方式。这是 <code>libc</code> 新线程启动代码。便利提示:如果您看到这些框架,即表示您拥有的展开信息有效且完整。只要您未在堆栈的底部看到这些框架,就应怀疑您查看的堆栈是否被截断或损坏;如果堆栈未采用这种方式,切勿盲目地认为它正确无误。</p>
+<p>框架 #50-#51 是所有线程实际应启动的方式。这是 <code>libc</code> 新线程启动代码。便利提示:如果您看到这些框架,即表示您拥有的展开信息有效且完整。只要您未在堆栈的底部看到这些调用帧,就应怀疑您查看的堆栈是否被截断或损坏;如果堆栈未在底部显示这些调用帧,切勿盲目地认为它正确无误。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/debug/sanitizers.html b/zh-cn/devices/tech/debug/sanitizers.html
index da390a94..bab591ea 100644
--- a/zh-cn/devices/tech/debug/sanitizers.html
+++ b/zh-cn/devices/tech/debug/sanitizers.html
@@ -36,8 +36,7 @@ Android 编译版本最好在启用排错程序(如 AddressSanitizer 和 Undef
<li>双重释放</li>
<li>释放后再使用</li>
</ul>
-<p>
-Android 允许在完整编译级别和在<a href="/devices/tech/debug/asan">应用级别</a>通过 asanwrapper 进行 <a href="/devices/tech/debug/asan#addresssanitizer_in_the_apps">ASan 插桩</a>。
+<p>Android 允许在完整编译级别和<a href="/devices/tech/debug/asan">应用级别</a>通过 asanwrapper 进行 <a href="/devices/tech/debug/asan#addresssanitizer_in_the_apps">ASan 插桩</a>。
</p>
<p>
AddressSanitizer 对所有与内存相关的函数调用(包括 alloca、malloc 和 free)进行插桩,并使用被读取或写入时会触发 ASan 回调的内存填充所有变量和已分配的内存区域。
diff --git a/zh-cn/devices/tech/health/implementation.html b/zh-cn/devices/tech/health/implementation.html
index 083a3479..6b8d99f9 100644
--- a/zh-cn/devices/tech/health/implementation.html
+++ b/zh-cn/devices/tech/health/implementation.html
@@ -44,7 +44,7 @@
<p>与其他 HAL 实现库不同,实现库 health@2.0-impl 是一个<strong>静态</strong>库,health@2.0-service、charger、recovery 和旧版 healthd 均关联到此库。</p>
-<p>health@2.0.impl 会实现 <code>IHealth</code>(如上所述),并旨在封装 <code>libbatterymonitor</code> 和 <code>libhealthd.<var>BOARD</var></code>。这些 health@2.0-impl 用户不得直接使用 <code>BatteryMonitor</code> 或 <code>libhealthd</code> 中的函数,而应该将这些调用替换为对 <code>Health</code> 类的调用(即实现 <code>IHealth</code> 接口)。为了进一步进行泛化,<code>healthd_common</code> 代码也会包含在 health@2.0-impl 中。新的 <code>healthd_common</code> 包含 health@2.0-service、charger 和 <code>healthd</code> 之间公用代码的剩余部分,并会调用 IHealth 方法(而不是 BatteryMonitor)。</p>
+<p>health@2.0.impl 会实现 <code>IHealth</code>(如上所述),并旨在封装 <code>libbatterymonitor</code> 和 <code>libhealthd.<var>BOARD</var></code>。这些 health@2.0-impl 用户不得直接使用 <code>BatteryMonitor</code>,也不得直接使用 <code>libhealthd</code> 中的函数,而应该将这些调用替换为对 <code>Health</code> 类的调用(即实现 <code>IHealth</code> 接口)。为了进一步进行泛化,<code>healthd_common</code> 代码也会包含在 health@2.0-impl 中。新的 <code>healthd_common</code> 包含 health@2.0-service、charger 和 <code>healthd</code> 之间公用代码的剩余部分,并会调用 IHealth 方法(而不是 BatteryMonitor)。</p>
<h2 id="implementing_health_20_service">实现 Health 2.0 服务</h2>
diff --git a/zh-cn/devices/tech/ota/ab/ab_implement.html b/zh-cn/devices/tech/ota/ab/ab_implement.html
index 988f072d..9dd428d4 100644
--- a/zh-cn/devices/tech/ota/ab/ab_implement.html
+++ b/zh-cn/devices/tech/ota/ab/ab_implement.html
@@ -23,7 +23,7 @@
<p>想要实现 A/B 系统更新的原始设备制造商 (OEM) 和 SoC 供应商必须确保其引导加载程序实现 boot_control HAL,并将<a href="#kernel">正确的参数</a>传递到内核。</p>
<h2 id="bootcontrol">实现启动控件 HAL</h2>
-<p>支持 A/B 更新的引导加载程序必须在 <code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/boot_control.h" class="external">hardware/libhardware/include/hardware/boot_control.h</a></code> 中实现 <code>boot_control</code> HAL。您可以使用 <code><a href="https://android.googlesource.com/platform/system/extras/+/master/bootctl/" class="external">system/extras/bootctl</a></code> 实用工具和 <code><a href="https://android.googlesource.com/platform/system/extras/+/refs/heads/master/tests/bootloader/" class="external">system/extras/tests/bootloader/</a></code> 来测试此类实现。
+<p>支持 A/B 更新的引导加载程序必须在 <code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/boot_control.h" class="external">hardware/libhardware/include/hardware/boot_control.h</a></code> 中实现 <code>boot_control</code> HAL。您可以使用 <code><a href="https://android.googlesource.com/platform/system/extras/+/master/bootctl/" class="external">system/extras/bootctl</a></code> 实用工具和 <code><a href="https://android.googlesource.com/platform/system/extras/+/refs/heads/master/tests/bootloader/" class="external">system/extras/tests/bootloader/</a></code> 测试实现代码。
</p>
<p>您还必须实现状态机,如下所示:</p>
@@ -41,8 +41,7 @@
</li>
<li>确保内核命令行参数包含中以下额外参数:
<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">skip_initramfs rootwait ro init=/init root="/dev/dm-0 dm=system none ro,0 1 android-verity &lt;public-key-id&gt; &lt;path-to-system-partition&gt;"</code></pre>
-... 其中 <code>&lt;public-key-id&gt;</code> 值是验证 verity 表签名时使用的公钥的 ID(有关详情,请参阅 <a href="/security/verifiedboot/dm-verity.html">dm-verity</a>)。</li>
+<code class="devsite-terminal">skip_initramfs rootwait ro init=/init root="/dev/dm-0 dm=system none ro,0 1 android-verity &lt;public-key-id&gt; &lt;path-to-system-partition&gt;"</code></pre>其中 <code>&lt;public-key-id&gt;</code> 值是验证 verity 表签名时所使用的公钥的 ID(有关详情,请参阅 <a href="/security/verifiedboot/dm-verity.html">dm-verity</a>)。</li>
<li>将包含公钥的 .X509 证书添加到系统密钥环:
<ol>
<li>将设置为 <code>.der</code> 格式的 .X509 证书复制到 <code>kernel</code> 的根目录。如果 .X509 证书的格式为 <code>.pem</code> 文件,请使用以下 <code>openssl</code> 命令将证书格式从 <code>.pem</code> 转换为 <code>.der</code>:
@@ -150,7 +149,7 @@ wait,verify=&lt;path-to-block-device&gt;/metadata,slotselect
<li><code>current-slot</code>:返回接下来将从中启动的插槽后缀。</li>
<li><code>slot-count</code>:返回一个表示可用插槽数量的整数。目前支持两个插槽,因此该值为 <code>2</code>。</li>
<li><code>slot-successful:&lt;slot-suffix&gt;</code>:如果指定插槽已标记为成功启动,则返回“yes”,否则返回“no”。</li>
-<li><code>slot-unbootable:&lt;slot-suffix&gt;</code>:如果指定插槽已标记为不可启动,则返回“yes”,否则返回“no”。</li>
+<li><code>slot-unbootable:&lt;slot-suffix&gt;</code>:如果指定插槽被标记为不可启动,则返回“yes”,否则返回“no”。</li>
<li><code>slot-retry-count<slot suffix></slot></code>:启动指定插槽的剩余重试次数。</li>
</ul>
@@ -229,6 +228,6 @@ AB_OTA_POSTINSTALL_CONFIG += \
</li>
</ol>
-<p>要获取有关将预先优化的文件安装到未使用的第二个系统分区的帮助,请参阅 <a href="/devices/tech/dalvik/configure.html#other_odex">DEX_PREOPT 文件的首次启动安装</a>。</p>
+<p>要了解如何将预先优化的文件安装到未使用的第二个系统分区,请参阅 <a href="/devices/tech/dalvik/configure.html#other_odex">DEX_PREOPT 文件的首次启动安装</a>。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/ota/nonab/device_code.html b/zh-cn/devices/tech/ota/nonab/device_code.html
index 11635e2c..92f57f6d 100644
--- a/zh-cn/devices/tech/ota/nonab/device_code.html
+++ b/zh-cn/devices/tech/ota/nonab/device_code.html
@@ -514,7 +514,7 @@ Value* ReprogramTardisFn(const char* name, State* state, int argc, Expr* argv[])
}
</pre>
-<p><code>ReadValueArgs()</code> 不会执行类型检查,因此您必须在这里执行这项检查;使用一条 <b>if</b> 语句执行这项检查会更方便,不过这样做也有一个弊端:如果操作失败,所显示的错误消息不够具体。不过,如果有任何求值操作失败,<code>ReadValueArgs()</code> 会处理每个参数的求值操作,并释放之前求值的所有参数(以及设置有用的错误消息)。您可以使用 <code>
+<p><code>ReadValueArgs()</code> 不会执行类型检查,因此您必须在这里执行这项检查;使用一条 <b>if</b> 语句执行这项检查会更方便,不过这样做也有一个弊端,那就是,如果操作失败,所显示的错误消息不够具体。不过,如果有任何求值操作失败,<code>ReadValueArgs()</code> 会处理每个参数的求值操作,并释放之前求值的所有参数(以及设置有用的错误消息)。您可以使用 <code>
ReadValueVarArgs()</code> 便捷函数对数量不定的参数进行求值(它会返回 <code>Value*</code> 的数组)。</p>
<p>对参数进行求值后,执行以下函数:</p>
@@ -694,7 +694,7 @@ def IncrementalOTA_InstallEnd(info):
</p>
<ul>
<li><b>info.input_zip</b>:(仅限完整 OTA)输入项 target-files .zip 的 <code>zipfile.ZipFile</code> 对象。</li>
-<li><b>info.source_zip</b>:(仅限版本递增 OTA)源 target-files .zip 的 <code>zipfile. ZipFile
+<li><b>info.source_zip</b>:(仅限版本递增 OTA)源 target-files .zip 的 <code>zipfile.ZipFile
</code> 对象(安装版本递增包时已在设备上的编译版本)。</li>
<li><b>info.target_zip</b>:(仅限版本递增 OTA)目标 target-files .zip 的 <code>zipfile.ZipFile
</code> 对象(版本递增包置于设备上的编译版本)。</li>
diff --git a/zh-cn/devices/tech/ota/sign_builds.html b/zh-cn/devices/tech/ota/sign_builds.html
index 445ef16b..b44a42bf 100644
--- a/zh-cn/devices/tech/ota/sign_builds.html
+++ b/zh-cn/devices/tech/ota/sign_builds.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/devices/tech/power/batteryless.html b/zh-cn/devices/tech/power/batteryless.html
index a7bce71e..807e343b 100644
--- a/zh-cn/devices/tech/power/batteryless.html
+++ b/zh-cn/devices/tech/power/batteryless.html
@@ -92,9 +92,9 @@ return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
<h2 id="implementation">实现</h2>
-<p>如上所述,Android 9 原始代码可在您的设备上正常运行,但建议您对内核或 HAL 进行更改,以准确反映产品的电源和电池状态。如果 Android 9 及更高版本未检测到 <a href="https://www.kernel.org/doc/Documentation/power/power_supply_class.txt" class="external">Linux power supply 类</a>充电器设备,则在默认情况下,所有充电器类型(交流、USB、无线)的状态都将为“离线”<em></em>。如前所述,如果所有充电器都处于离线状态,但未检测到电池设备,则系统仍会被视为“正在充电”,也就是说,系统正在使用外部电源(而不是电池电量)运行。</p>
+<p>如上所述,Android 9 原始代码可在您的设备上正常运行,但建议您对内核或 HAL 进行更改,以准确反映产品的电源和电池状态。如果 Android 9 及更高版本未检测到 <a href="https://www.kernel.org/doc/Documentation/power/power_supply_class.txt" class="external">Linux power supply class</a> 充电器设备,则在默认情况下,所有充电器类型(交流、USB、无线)的状态都将为“离线”<em></em>。如前所述,如果所有充电器都处于离线状态,但未检测到电池设备,则系统仍会被视为“正在充电”,也就是说,系统正在使用外部电源(而不是电池电量)运行。</p>
-<p><em></em>如果您的产品没有电池,且会始终连接到电源,那么,您最好针对交流电源或 USB 电源(其在线 <code>sysfs</code> 属性会设置为 <code>true</code>)实现 Linux 内核 power_supply 类<em></em>充电器驱动程序。或者,您也可以在 Health HAL 中为设备配置交流充电器在线属性。为此,请按照<a href="/devices/tech/health/implementation">实现 Health 2.0</a> 中的说明实现 Health HAL。</p>
+<p><em></em>如果您的产品没有电池,且会始终连接到电源,那么,您最好针对交流电源或 USB 电源(其在线 <code>sysfs</code> 属性会设置为 <code>true</code>)实现 Linux 内核 power_supply class<em></em> 充电器驱动程序。或者,您也可以在 Health HAL 中为设备配置交流充电器在线属性。为此,请按照<a href="/devices/tech/health/implementation">实现 Health 2.0</a> 中的说明实现 Health HAL。</p>
<p>此自定义 Health HAL 会实现 <code>Health::getHealthInfo()</code> 的自定义版本,而该版本会修改 <code>BatteryProperties.chargerAcOnline = true</code> 的值。</p>
diff --git a/zh-cn/devices/tv/index.html b/zh-cn/devices/tv/index.html
index 29f962e3..4f933f77 100644
--- a/zh-cn/devices/tv/index.html
+++ b/zh-cn/devices/tv/index.html
@@ -61,7 +61,7 @@
<h2 id="permissions">权限</h2>
<ul>
- <li>只有 <code><a href="http://developer.android.com/guide/topics/manifest/permission-element.html#plevel">signatureOrSystem</a></code> TV Input 和 TV 应用拥有对 TV Provider 数据库的完全访问权限,并且能够接收 KeyEvent。
+ <li>只有 <code><a href="http://developer.android.com/guide/topics/manifest/permission-element.html#plevel">signatureOrSystem</a></code> TV Input 和 TV 应用拥有对 TV Provider 数据库的完整访问权限,并且能够接收 KeyEvent。
</li><li>只有系统 TV Input 可以通过 TV Input Manager Service 访问 TV Input HAL。系统通过 TV Input Manager 会话对 TV Input 进行一对一访问。</li>
<li>第三方 TV Input 拥有对 TV Provider 数据库的访问权限(软件包已锁定),只能对匹配的软件包行进行读写。</li>
<li>第三方 TV Input 可以显示自己的内容,也可显示来自设备制造商提供的直通 TV Input(如 HDMI1)上的内容。它们不能显示来自非直通 TV Input(如内置调谐器或 IPTV 调谐器)的内容。</li>
@@ -72,7 +72,7 @@
<p>TV Provider 数据库会存储来自 TV Input 的频道和节目。TV Provider 还发布和管理相关权限,以使 TV Input 只能查看自身的记录。例如,特定的 TV Input 只能查看它自己提供的频道和节目,并被禁止访问任何其他 TV Input 的频道和节目。</p>
-<p>TV Provider 在内部将“广播类型”映射到“规范类型”。TV Input 负责使用基本广播标准中的值填充“广播类型”,而系统会使用来自 <code>android.provider.TvContract.Genres</code> 的正确相关类型自动填充“规范类型”字段。例如,对于广播标准 ATSC A/65 和类型为 0x25(意为“体育”)的节目,TV Input 将使用字符串“Sports”填充“广播类型”,并且 TV Provider 将使用映射的值 <code>android.provider.TvContract.Genres.SPORTS</code> 填充“规范类型”字段。</p>
+<p>TV Provider 在内部将“广播类型”映射到“规范类型”。TV Input 负责使用满足底层广播标准的值填充“广播类型”,而“规范类型”字段将使用来自 <code>android.provider.TvContract.Genres</code> 的正确关联类型自动填充。例如,对于广播标准 ATSC A/65 和类型为 0x25(意为“体育”)的节目,TV Input 将使用字符串“Sports”填充“广播类型”,并且 TV Provider 将使用映射的值 <code>android.provider.TvContract.Genres.SPORTS</code> 填充“规范类型”字段。</p>
<p>有关 TV Provider 的详细视图,请参见下图。</p>
@@ -92,8 +92,8 @@
<p>TV Provider 支持频道 (<code>android.provider.TvContract.Channels</code>) 和节目 (<code>android.provider.TvContract.Programs</code>) 表格中的结构化数据。这些表格由 TV Input 和系统应用(如 TV 应用)进行填充和访问。这些表格具有四种类型的字段:</p>
<ul>
- <li><strong>显示</strong>:显示字段包含应用可能希望向用户显示的信息,如频道名称 (<code>COLUMN_DISPLAY_NAME</code>) 或编号 (<code>COLUMN_DISPLAY_NUMBER</code>) 或正在观看的节目的名称。</li>
- <li><strong>元数据</strong>:根据相关标准,有三个字段可用于识别内容,如频道的传输流 ID (<code>COLUMN_TRANSPORT_STREAM_ID</code>)、原始网络 ID (<code>COLUMN_ORIGINAL_NETWORK_ID</code>) 和服务 ID (<code>COLUMN_SERVICE_ID</code>)。</li>
+ <li><strong>显示</strong>:显示字段包含应用可能希望用户看到的信息,如频道名称 (<code>COLUMN_DISPLAY_NAME</code>)、编号 (<code>COLUMN_DISPLAY_NUMBER</code>) 或正在观看的节目的名称。</li>
+ <li><strong>元数据</strong>:根据相关标准,有三个字段可用于标识内容,包括频道的传输流 ID (<code>COLUMN_TRANSPORT_STREAM_ID</code>)、原始网络 ID (<code>COLUMN_ORIGINAL_NETWORK_ID</code>) 和服务 ID (<code>COLUMN_SERVICE_ID</code>)。</li>
<li><strong>内部数据</strong>:用于 TV Input 自定义用途的字段。<br />
某些字段(如 <code>COLUMN_INTERNAL_PROVIDER_DATA</code>)是可自定义的 BLOB 字段,TV Input 可以在这些字段中存储有关其频道或节目的任意元数据。</li>
<li><strong>标记</strong>:标记字段表示是否应禁止搜索、浏览或查看某个频道。只能在频道级别进行此设置。所有节目均应遵循这项频道设置。</li>
@@ -176,7 +176,7 @@
<figcaption><strong>图 6.</strong> Android TV KeyEvent</figcaption>
</figure>
-<p>上图显示了遥控器上的按钮事件如何传递到特定的 TV Input,从而实现画中画 (PIP) 显示。这些按下按钮的操作由设备制造商提供的硬件驱动程序进行解析,从而将硬件扫描码转换为 Android 键码,并将它们作为 <a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvent</a> 传递到标准的 Android <a href="/devices/input/overview.html">输入管道</a> <code>InputReader</code> 和 <code>InputDispatcher</code> 函数。
+<p>上图显示了遥控器上的按钮事件如何传递到特定的 TV Input,从而实现画中画 (PIP) 显示。设备制造商提供的硬件驱动程序会对这些按下按钮的操作进行解析,将硬件扫描码转换为 Android 键码,然后将 Android 键码作为 <a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvent</a> 传递到标准的 Android <a href="/devices/input/overview.html">输入管道</a> <code>InputReader</code> 和 <code>InputDispatcher</code> 函数。
当 TV 应用获得焦点时,它们就会在 TV 应用上触发事件。</p>
<p>只有系统 TV Input 才有资格接收 <code>InputEvents</code>(前提是这些系统 TV Input 具有 <code>RECEIVE_INPUT_EVENT</code> 系统权限)。
@@ -404,7 +404,7 @@ TV Input 负责确定要消耗哪些 InputEvent,并允许 TV 应用处理它
<p>我们鼓励设备制造商进行如下操作:</p>
<ul>
<li>对照作为参考的 Live TV 应用进行 CTS 验证程序家长控制测试,以对兼容性要求进行验证。</li>
- <li>使用 Live TV 应用作为自己的 TV 应用的参考:请重点参阅 <a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/parental/ContentRatingsManager.java">ContentRatingsManager</a> 和 <a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java">RatingSystemsFragment</a> 源代码,了解二者处理自定义评级的方式。</li>
+ <li>在构建 TV 应用时参考 Live TV 应用:请重点参阅 <a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/parental/ContentRatingsManager.java">ContentRatingsManager</a> 和 <a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java">RatingSystemsFragment</a> 源代码,了解二者处理自定义评级的方式。</li>
</ul>
<h2 id="hdmi-cec">HDMI-CEC</h2>
diff --git a/zh-cn/devices/tv/reference-tv-app.html b/zh-cn/devices/tv/reference-tv-app.html
index 498bbb42..10660b8e 100644
--- a/zh-cn/devices/tv/reference-tv-app.html
+++ b/zh-cn/devices/tv/reference-tv-app.html
@@ -134,7 +134,7 @@ adb shell am instrument \
<h3 id="jank_tests">Jank 测试</h3>
-<p>Jank 测试用于检查是否存在丢帧和呈现延迟的情况。</p>
+<p>Jank 测试会检查是否存在丢帧和呈现延迟的情况。</p>
<pre class="devsite-terminal devsite-click-to-copy">
adb shell logcat -c
diff --git a/zh-cn/security/bulletin/2015.html b/zh-cn/security/bulletin/2015.html
index 90ed5260..e847c07b 100644
--- a/zh-cn/security/bulletin/2015.html
+++ b/zh-cn/security/bulletin/2015.html
@@ -1,78 +1,79 @@
<html devsite><head>
<title>2015 年 Android 安全公告</title>
- <meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
+ <meta name="project_path" value="/_project.yaml"/>
</head>
<body>
- <!--
- Copyright 2017 The Android Open Source Project
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
+ 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.
- -->
+ 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>本页中列出了我们在 2015 年发布的所有 Android 安全公告(以前称为 Nexus 安全公告)。如需所有公告的列表,请访问 <a href="index.html">Android 安全公告</a>首页。</p>
+ <p>本页中列出了我们在 2015 年发布的所有 Android 安全公告(以前称为 Nexus 安全公告)。如需所有公告的列表,请访问 <a href="index.html">Android 安全公告</a>首页。</p>
-<table>
- <colgroup><col width="15%" />
- <col width="49%" />
- <col width="17%" />
- <col width="19%" />
- </colgroup><tbody><tr>
- <th>公告</th>
- <th>语言</th>
- <th>发布日期</th>
- <th>安全补丁程序级别</th>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2015-12-01.html">2015 年 12 月</a></td>
- <td>
- <a href="/security/bulletin/2015-12-01.html">English</a> / <a href="/security/bulletin/2015-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-12-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-12-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2015-12-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2015 年 12 月 7 日</td>
- <td>2015-12-01</td>
-</tr>
-<tr>
- <td><a href="/security/bulletin/2015-11-01.html">2015 年 11 月</a></td>
- <td>
- <a href="/security/bulletin/2015-11-01.html">English</a> / <a href="/security/bulletin/2015-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-11-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-11-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2015-11-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2015 年 11 月 2 日</td>
- <td>2015-11-01</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2015-10-01.html">2015 年 10 月</a></td>
- <td>
- <a href="/security/bulletin/2015-10-01.html">English</a> / <a href="/security/bulletin/2015-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-10-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-10-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2015-10-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2015 年 10 月 5 日</td>
- <td>2015-10-01</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2015-09-01.html">2015 年 9 月</a></td>
- <td>
- <a href="/security/bulletin/2015-09-01.html">English</a> / <a href="/security/bulletin/2015-09-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-09-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-09-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-09-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2015-09-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2015 年 9 月 9 日</td>
- <td>N/A</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2015-08-01.html">2015 年 8 月</a></td>
- <td>
- <a href="/security/bulletin/2015-08-01.html">English</a> / <a href="/security/bulletin/2015-08-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-08-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-08-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-08-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2015-08-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2015 年 8 月 13 日</td>
- <td>N/A</td>
- </tr>
-</tbody></table>
+ <table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>语言</th>
+ <th>发布日期</th>
+ <th>安全补丁程序级别</th>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2015-12-01.html">2015 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2015-12-01.html">English</a> / <a href="/security/bulletin/2015-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-12-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-12-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2015-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2015 年 12 月 7 日</td>
+ <td>2015-12-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2015-11-01.html">2015 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2015-11-01.html">English</a> / <a href="/security/bulletin/2015-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-11-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-11-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2015-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2015 年 11 月 2 日</td>
+ <td>2015-11-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2015-10-01.html">2015 年 10 月</a></td>
+ <td>
+ <a href="/security/bulletin/2015-10-01.html">English</a> / <a href="/security/bulletin/2015-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-10-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-10-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2015-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2015 年 10 月 5 日</td>
+ <td>2015-10-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2015-09-01.html">2015 年 9 月</a></td>
+ <td>
+ <a href="/security/bulletin/2015-09-01.html">English</a> / <a href="/security/bulletin/2015-09-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-09-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-09-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-09-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2015-09-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2015 年 9 月 9 日</td>
+ <td>无</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2015-08-01.html">2015 年 8 月</a></td>
+ <td>
+ <a href="/security/bulletin/2015-08-01.html">English</a> / <a href="/security/bulletin/2015-08-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2015-08-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2015-08-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2015-08-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2015-08-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2015 年 8 月 13 日</td>
+ <td>无</td>
+ </tr>
+ </tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2016.html b/zh-cn/security/bulletin/2016.html
index a4111a4f..bd6c9459 100644
--- a/zh-cn/security/bulletin/2016.html
+++ b/zh-cn/security/bulletin/2016.html
@@ -1,134 +1,135 @@
<html devsite><head>
<title>2016 年 Android 安全公告</title>
- <meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
+ <meta name="project_path" value="/_project.yaml"/>
</head>
<body>
- <!--
- Copyright 2017 The Android Open Source Project
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
+ 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.
- -->
+ 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>本页中列出了我们在 2016 年发布的所有 Android 安全公告。如需所有公告的列表,请访问 <a href="index.html">Android 安全公告</a>首页。</p>
+ <p>本页中列出了我们在 2016 年发布的所有 Android 安全公告。如需所有公告的列表,请访问 <a href="index.html">Android 安全公告</a>首页。</p>
-<table>
- <colgroup><col width="15%" />
- <col width="49%" />
- <col width="17%" />
- <col width="19%" />
- </colgroup><tbody><tr>
- <th>公告</th>
- <th>语言</th>
- <th>发布日期</th>
- <th>安全补丁程序级别</th>
- </tr>
- <tr>
- <td><a href="2016-12-01.html">2016 年 12 月</a></td>
- <td>
- <a href="/security/bulletin/2016-12-01.html">English</a> / <a href="/security/bulletin/2016-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-12-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-12-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-12-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 12 月 5 日</td>
- <td>2016-12-01<br />2016-12-05</td>
- </tr>
-<tr>
- <td><a href="/security/bulletin/2016-11-01.html">2016 年 11 月</a></td>
- <td>
- <a href="/security/bulletin/2016-11-01.html">English</a> / <a href="/security/bulletin/2016-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-11-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-11-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-11-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 11 月 7 日</td>
- <td>2016-11-01<br />2016-11-05<br />2016-11-06</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-10-01.html">2016 年 10 月</a></td>
- <td>
- <a href="/security/bulletin/2016-10-01.html">English</a> / <a href="/security/bulletin/2016-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-10-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-10-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-10-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 10 月 3 日</td>
- <td>2016-10-01<br />2016-10-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-09-01.html">2016 年 9 月</a></td>
- <td>
- <a href="/security/bulletin/2016-09-01.html">English</a> / <a href="/security/bulletin/2016-09-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-09-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-09-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-09-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-09-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 9 月 6 日</td>
- <td>2016-09-01<br />2016-09-05<br />2016-09-06</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-08-01.html">2016 年 8 月</a></td>
- <td>
- <a href="/security/bulletin/2016-08-01.html">English</a> / <a href="/security/bulletin/2016-08-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-08-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-08-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-08-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-08-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 8 月 1 日</td>
- <td>2016-08-01<br />2016-08-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-07-01.html">2016 年 7 月</a></td>
- <td>
- <a href="/security/bulletin/2016-07-01.html">English</a> / <a href="/security/bulletin/2016-07-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-07-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-07-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-07-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-07-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 7 月 6 日</td>
- <td>2016-07-01<br />2016-07-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-06-01.html">2016 年 6 月</a></td>
- <td>
- <a href="/security/bulletin/2016-06-01.html">English</a> / <a href="/security/bulletin/2016-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-06-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-06-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 6 月 6 日</td>
- <td>2016-06-01</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-05-01.html">2016 年 5 月</a></td>
- <td>
- <a href="/security/bulletin/2016-05-01.html">English</a> / <a href="/security/bulletin/2016-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-05-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-05-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 5 月 2 日</td>
- <td>2016-05-01</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-04-02.html">2016 年 4 月</a></td>
- <td>
- <a href="/security/bulletin/2016-04-02.html">English</a> / <a href="/security/bulletin/2016-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-04-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-04-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 4 月 4 日</td>
- <td>2016-04-02</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-03-01.html">2016 年 3 月</a></td>
- <td>
- <a href="/security/bulletin/2016-03-01.html">English</a> / <a href="/security/bulletin/2016-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-03-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-03-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-03-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 3 月 7 日</td>
- <td>2016-03-01</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-02-01.html">2016 年 2 月</a></td>
- <td>
- <a href="/security/bulletin/2016-02-01.html">English</a> / <a href="/security/bulletin/2016-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-02-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-02-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-02-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 2 月 1 日</td>
- <td>2016-02-01</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2016-01-01.html">2016 年 1 月</a></td>
- <td>
- <a href="/security/bulletin/2016-01-01.html">English</a> / <a href="/security/bulletin/2016-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-01-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-01-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2016-01-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2016 年 1 月 4 日</td>
- <td>2016-01-01</td>
- </tr>
-</tbody></table>
+ <table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>语言</th>
+ <th>发布日期</th>
+ <th>安全补丁程序级别</th>
+ </tr>
+ <tr>
+ <td><a href="2016-12-01.html">2016 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-12-01.html">English</a> / <a href="/security/bulletin/2016-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-12-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-12-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 12 月 5 日</td>
+ <td>2016-12-01<br />2016-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-11-01.html">2016 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-11-01.html">English</a> / <a href="/security/bulletin/2016-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-11-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-11-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 11 月 7 日</td>
+ <td>2016-11-01<br />2016-11-05<br />2016-11-06</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-10-01.html">2016 年 10 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-10-01.html">English</a> / <a href="/security/bulletin/2016-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-10-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-10-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 10 月 3 日</td>
+ <td>2016-10-01<br />2016-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-09-01.html">2016 年 9 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-09-01.html">English</a> / <a href="/security/bulletin/2016-09-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-09-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-09-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-09-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-09-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 9 月 6 日</td>
+ <td>2016-09-01<br />2016-09-05<br />2016-09-06</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-08-01.html">2016 年 8 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-08-01.html">English</a> / <a href="/security/bulletin/2016-08-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-08-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-08-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-08-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-08-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 8 月 1 日</td>
+ <td>2016-08-01<br />2016-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-07-01.html">2016 年 7 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-07-01.html">English</a> / <a href="/security/bulletin/2016-07-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-07-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-07-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-07-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-07-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 7 月 6 日</td>
+ <td>2016-07-01<br />2016-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-06-01.html">2016 年 6 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-06-01.html">English</a> / <a href="/security/bulletin/2016-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-06-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-06-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-06-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 6 月 6 日</td>
+ <td>2016-06-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-05-01.html">2016 年 5 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-05-01.html">English</a> / <a href="/security/bulletin/2016-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-05-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-05-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-05-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 5 月 2 日</td>
+ <td>2016-05-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-04-02.html">2016 年 4 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-04-02.html">English</a> / <a href="/security/bulletin/2016-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-04-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-04-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-04-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 4 月 4 日</td>
+ <td>2016-04-02</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-03-01.html">2016 年 3 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-03-01.html">English</a> / <a href="/security/bulletin/2016-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-03-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-03-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-03-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 3 月 7 日</td>
+ <td>2016-03-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-02-01.html">2016 年 2 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-02-01.html">English</a> / <a href="/security/bulletin/2016-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-02-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-02-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-02-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 2 月 1 日</td>
+ <td>2016-02-01</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2016-01-01.html">2016 年 1 月</a></td>
+ <td>
+ <a href="/security/bulletin/2016-01-01.html">English</a> / <a href="/security/bulletin/2016-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2016-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2016-01-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2016-01-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2016-01-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2016 年 1 月 4 日</td>
+ <td>2016-01-01</td>
+ </tr>
+ </tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2017.html b/zh-cn/security/bulletin/2017.html
index 0a77139f..5f71748d 100644
--- a/zh-cn/security/bulletin/2017.html
+++ b/zh-cn/security/bulletin/2017.html
@@ -1,134 +1,148 @@
<html devsite><head>
<title>2017 年 Android 安全公告</title>
- <meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
+ <meta name="project_path" value="/_project.yaml"/>
</head>
<body>
- <!--
- Copyright 2017 The Android Open Source Project
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
+ 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.
- -->
+ 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>本页中列出了我们在 2017 年发布的所有 Android 安全公告。如需所有公告的列表,请访问 <a href="index.html">Android 安全公告</a>首页。</p>
+ <p>本页中列出了我们在 2017 年发布的所有 Android 安全公告。如需所有公告的列表,请访问 <a href="index.html">Android 安全公告</a>首页。</p>
-<table>
- <colgroup><col width="15%" />
- <col width="49%" />
- <col width="17%" />
- <col width="19%" />
- </colgroup><tbody><tr>
- <th>公告</th>
- <th>语言</th>
- <th>发布日期</th>
- <th>安全补丁程序级别</th>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2017-12-01.html">2017 年 12 月</a></td>
- <td>
- <a href="/security/bulletin/2017-12-01.html">English</a> / <a href="/security/bulletin/2017-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-12-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-12-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-12-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 12 月 4 日</td>
- <td>2017-12-01<br />2017-12-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2017-11-01.html">2017 年 11 月</a></td>
- <td>
- <a href="/security/bulletin/2017-11-01.html">English</a> / <a href="/security/bulletin/2017-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-11-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-11-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-11-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 11 月 6 日</td>
- <td>2017-11-01<br />2017-11-05<br />2017-11-06</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2017-10-01.html">2017 年 10 月</a></td>
- <td>
- <a href="/security/bulletin/2017-10-01.html">English</a> / <a href="/security/bulletin/2017-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-10-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-10-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-10-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 10 月 2 日</td>
- <td>2017-10-01<br />2017-10-05</td>
- </tr>
- <tr>
- <td><a href="2017-09-01.html">2017 年 9 月</a></td>
- <td>
- <a href="/security/bulletin/2017-09-01.html">English</a> / <a href="/security/bulletin/2017-09-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-09-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-09-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-09-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-09-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 9 月 5 日</td>
- <td>2017-09-01<br />2017-09-05</td>
- </tr>
- <tr>
- <td><a href="2017-08-01.html">2017 年 8 月</a></td>
- <td>
- <a href="/security/bulletin/2017-08-01.html">English</a> / <a href="/security/bulletin/2017-08-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-08-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-08-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-08-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-08-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 8 月 7 日</td>
- <td>2017-08-01<br />2017-08-05</td>
- </tr>
- <tr>
- <td><a href="2017-07-01.html">2017 年 7 月</a></td>
- <td>
- <a href="/security/bulletin/2017-07-01.html">English</a> / <a href="/security/bulletin/2017-07-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-07-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-07-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-07-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-07-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 7 月 5 日</td>
- <td>2017-07-01<br />2017-07-05</td>
- </tr>
- <tr>
- <td><a href="2017-06-01.html">2017 年 6 月</a></td>
- <td>
- <a href="/security/bulletin/2017-06-01.html">English</a> / <a href="/security/bulletin/2017-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-06-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-06-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-06-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 6 月 5 日</td>
- <td>2017-06-01<br />2017-06-05</td>
- </tr>
- <tr>
- <td><a href="2017-05-01.html">2017 年 5 月</a></td>
- <td>
- <a href="/security/bulletin/2017-05-01.html">English</a> / <a href="/security/bulletin/2017-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-05-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-05-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-05-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 5 月 1 日</td>
- <td>2017-05-01<br />2017-05-05</td>
- </tr>
- <tr>
- <td><a href="2017-04-01.html">2017 年 4 月</a></td>
- <td>
- <a href="/security/bulletin/2017-04-01.html">English</a> / <a href="/security/bulletin/2017-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-04-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-04-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-04-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 4 月 3 日</td>
- <td>2017-04-01<br />2017-04-05</td>
- </tr>
- <tr>
- <td><a href="2017-03-01.html">2017 年 3 月</a></td>
- <td>
- <a href="/security/bulletin/2017-03-01.html">English</a> / <a href="/security/bulletin/2017-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-03-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-03-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-03-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 3 月 6 日</td>
- <td>2017-03-01<br />2017-03-05</td>
- </tr>
-<tr>
- <td><a href="/security/bulletin/2017-02-01.html">2017 年 2 月</a></td>
- <td>
- <a href="/security/bulletin/2017-02-01.html">English</a> / <a href="/security/bulletin/2017-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-02-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-02-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-02-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 2 月 6 日</td>
- <td>2017-02-01<br />2017-02-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/2017-01-01.html">2017 年 1 月</a></td>
- <td>
- <a href="/security/bulletin/2017-01-01.html">English</a> / <a href="/security/bulletin/2017-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-01-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-01-01.html?hl=zh-cn">中文 (中国)</a> / <a href="/security/bulletin/2017-01-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 1 月 3 日</td>
- <td>2017-01-01<br />2017-01-05</td>
- </tr>
-</tbody></table>
+ <table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>语言</th>
+ <th>发布日期</th>
+ <th>安全补丁程序级别</th>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2017-12-01.html">2017 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-12-01.html">English</a> / <a href="/security/bulletin/2017-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-12-01.html?hl=ko">한국어</a>/ <a href="/security/bulletin/2017-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-12-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 12 月 4 日</td>
+ <td>2017-12-01<br />
+ 2017-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2017-11-01.html">2017 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-11-01.html">English</a> / <a href="/security/bulletin/2017-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-11-01.html?hl=ko">한국어</a>/ <a href="/security/bulletin/2017-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-11-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 11 月 6 日</td>
+ <td>2017-11-01<br />
+ 2017-11-05<br />
+ 2017-11-06</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2017-10-01.html">2017 年 10 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-10-01.html">English</a> / <a href="/security/bulletin/2017-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-10-01.html?hl=ko">한국어</a>/ <a href="/security/bulletin/2017-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-10-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 10 月 2 日</td>
+ <td>2017-10-01<br />
+ 2017-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-09-01.html">2017 年 9 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-09-01.html">English</a> / <a href="/security/bulletin/2017-09-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-09-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-09-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-09-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-09-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 9 月 5 日</td>
+ <td>2017-09-01<br />
+ 2017-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-08-01.html">2017 年 8 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-08-01.html">English</a> / <a href="/security/bulletin/2017-08-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-08-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-08-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-08-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-08-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 8 月 7 日</td>
+ <td>2017-08-01<br />
+ 2017-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-07-01.html">2017 年 7 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-07-01.html">English</a> / <a href="/security/bulletin/2017-07-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-07-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-07-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-07-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-07-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 7 月 5 日</td>
+ <td>2017-07-01<br />
+ 2017-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-06-01.html">2017 年 6 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-06-01.html">English</a> / <a href="/security/bulletin/2017-06-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-06-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-06-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-06-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-06-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 6 月 5 日</td>
+ <td>2017-06-01<br />
+ 2017-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-05-01.html">2017 年 5 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-05-01.html">English</a> / <a href="/security/bulletin/2017-05-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-05-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-05-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-05-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-05-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 5 月 1 日</td>
+ <td>2017-05-01<br />
+ 2017-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-04-01.html">2017 年 4 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-04-01.html">English</a> / <a href="/security/bulletin/2017-04-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-04-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-04-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-04-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-04-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 4 月 3 日</td>
+ <td>2017-04-01<br />
+ 2017-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="2017-03-01.html">2017 年 3 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-03-01.html">English</a> / <a href="/security/bulletin/2017-03-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-03-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-03-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-03-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-03-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 3 月 6 日</td>
+ <td>2017-03-01<br />
+ 2017-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2017-02-01.html">2017 年 2 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-02-01.html">English</a> / <a href="/security/bulletin/2017-02-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-02-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-02-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-02-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-02-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 2 月 6 日</td>
+ <td>2017-02-01<br />
+ 2017-02-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2017-01-01.html">2017 年 1 月</a></td>
+ <td>
+ <a href="/security/bulletin/2017-01-01.html">English</a> / <a href="/security/bulletin/2017-01-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/2017-01-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/2017-01-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/2017-01-01.html?hl=zh-cn">简体中文</a> / <a href="/security/bulletin/2017-01-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 1 月 3 日</td>
+ <td>2017-01-01<br />
+ 2017-01-05</td>
+ </tr>
+ </tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2019-01-01.html b/zh-cn/security/bulletin/2019-01-01.html
index f759960f..a3b92ec7 100644
--- a/zh-cn/security/bulletin/2019-01-01.html
+++ b/zh-cn/security/bulletin/2019-01-01.html
@@ -30,7 +30,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
这些问题中危险性最高的是系统中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
</p>
<p>
-尚未有人向我们举报过有用户主动利用或滥用这些新报告的问题。请参阅 <a href="#mitigations">Android 和 Google Play 保护机制提供的缓解措施</a>部分,详细了解有助于提高 Android 平台安全性的 <a href="/security/enhancements/">Android 安全平台防护功能</a>和 Google Play 保护机制。
+尚未有人向我们举报过有用户主动利用或滥用这些新报告的问题。如需详细了解有助于提高 Android 平台安全性的 <a href="/security/enhancements/">Android 安全平台防护功能</a>和 Google Play 保护机制,请参阅 <a href="#mitigations">Android 和 Google Play 保护机制提供的缓解措施</a>部分。
</p>
<p class="note">
<strong>注意</strong>:如需了解适用于 Google 设备的最新无线下载更新 (OTA) 和固件映像,请参阅 <a href="/security/bulletin/pixel/2019-01-01">2019 年 1 月的 Pixel 更新公告</a>。
@@ -43,11 +43,11 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</p>
<ul>
<li>较高版本的 Android 平台中提供的增强功能让攻击者更加难以利用 Android 上存在的许多问题。我们建议所有用户都尽可能更新到最新版 Android。</li>
-<li>Android 安全团队会积极利用 <a href="https://www.android.com/play-protect" class="external">Google Play 保护机制</a>监控滥用行为,并会在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">可能有害的应用</a>时向用户发出警告。在安装有 <a href="http://www.android.com/gms" class="external">Google 移动服务</a>的设备上,Google Play 保护机制会默认处于启用状态,对于从 Google Play 以外的来源安装应用的用户来说,该功能尤为重要。</li>
+<li>Android 安全团队会积极利用 <a href="https://www.android.com/play-protect" class="external">Google Play 保护机制</a>监控滥用行为,并会在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">潜在有害应用</a>时向用户发出警告。在安装有 <a href="http://www.android.com/gms" class="external">Google 移动服务</a>的设备上,Google Play 保护机制会默认处于启用状态,对于从 Google Play 以外的来源安装应用的用户来说,该功能尤为重要。</li>
</ul>
<h2 id="2019-01-01-details">2019-01-01 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2019-01-01 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2019-01-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="framework">框架</h3>
@@ -62,7 +62,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -87,7 +87,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -181,7 +181,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<h2 id="2019-01-05-details">2019-01-05 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2019-01-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2019-01-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(若有)和已更新的 AOSP 版本(若有)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="kernel-components">内核组件</h3>
@@ -195,7 +195,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -269,7 +269,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -295,7 +295,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -341,7 +341,7 @@ QC-CR#2288358</a></td>
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -432,14 +432,14 @@ QC-CR#2288358</a></td>
<strong>4.“参考内容”列中的条目表示什么意思?<em></em></strong>
</p>
<p>
-在漏洞详情表内,“参考内容”列中的条目可能包含用于标识参考值所属组织的前缀。<em></em>
+在漏洞详情表内,“参考编号”列中的条目可能包含用于标识参考编号值所属组织的前缀。<em></em>
</p>
<table>
<colgroup><col width="25%" />
<col width="75%" />
</colgroup><tbody><tr>
<th>前缀</th>
- <th>参考内容</th>
+ <th>参考编号</th>
</tr>
<tr>
<td>A-</td>
diff --git a/zh-cn/security/bulletin/2019.html b/zh-cn/security/bulletin/2019.html
index 25f4843f..91b025c4 100644
--- a/zh-cn/security/bulletin/2019.html
+++ b/zh-cn/security/bulletin/2019.html
@@ -191,7 +191,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
+ </tr><tr><td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
<td>即将发布<!--
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
@@ -204,7 +204,7 @@
<td>2019 年 1 月 7 日</td>
<td>2019-01-01<br />
2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/2017.html b/zh-cn/security/bulletin/pixel/2017.html
index c84f34f0..6cfe38a0 100644
--- a/zh-cn/security/bulletin/pixel/2017.html
+++ b/zh-cn/security/bulletin/pixel/2017.html
@@ -1,77 +1,63 @@
<html devsite><head>
<title>2017 年 Pixel / Nexus 安全公告</title>
- <meta name="project_path" value="/_project.yaml"/>
<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
+ <!--
+ 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
+ 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.
- -->
+ 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>本页面列出了我们已发布的所有 2017 Pixel/Nexus 安全公告。如需所有公告的列表,请参阅 <a href="/security/bulletin/pixel/index.html">Pixel/Nexus 安全公告</a>首页。</p>
+ <p>本页中列出了我们在 2017 年发布的所有 2018 Pixel/Nexus 安全公告。如需所有公告的列表,请访问 <a href="/security/bulletin/pixel/index.html">Pixel/Nexus 安全公告</a>首页。</p>
-<table>
- <colgroup><col width="15%" />
- <col width="49%" />
- <col width="17%" />
- <col width="19%" />
- </colgroup><tbody><tr>
- <th>公告</th>
- <th>语言</th>
- <th>发布日期</th>
- <th>安全补丁程序级别</th>
- </tr>
- <tr>
- <td><a href="/security/bulletin/pixel/2017-12-01.html">2017 年 12 月</a></td>
- <td>
- <a href="/security/bulletin/pixel/2017-12-01.html">English</a> /
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 12 月 4 日</td>
- <td>2017-12-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/pixel/2017-11-01.html">2017 年 11 月</a></td>
- <td>
- <a href="/security/bulletin/pixel/2017-11-01.html">English</a> /
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 11 月 6 日</td>
- <td>2017-11-05</td>
- </tr>
- <tr>
- <td><a href="/security/bulletin/pixel/2017-10-01.html">2017 年 10 月</a></td>
- <td>
- <a href="/security/bulletin/pixel/2017-10-01.html">English</a> /
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=ko">한국어</a> /
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=ru">ру́сский</a> /
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">中文 (中国)</a> /
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">中文 (台灣)</a>
- </td>
- <td>2017 年 10 月 2 日</td>
- <td>2017-10-05</td>
- </tr>
-</tbody></table>
+ <table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>语言</th>
+ <th>发布日期</th>
+ <th>安全补丁程序级别</th>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2017-12-01.html">2017 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2017-12-01.html">English</a> / <a href="/security/bulletin/pixel/2017-12-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2017-12-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2017-12-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">简体中文</a>/ <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 12 月 4 日</td>
+ <td>2017-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2017-11-01.html">2017 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2017-11-01.html">English</a> / <a href="/security/bulletin/pixel/2017-11-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2017-11-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2017-11-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">简体中文</a>/ <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 11 月 6 日</td>
+ <td>2017-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2017-10-01.html">2017 年 10 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2017-10-01.html">English</a> / <a href="/security/bulletin/pixel/2017-10-01.html?hl=ja">日本語</a> / <a href="/security/bulletin/pixel/2017-10-01.html?hl=ko">한국어</a> / <a href="/security/bulletin/pixel/2017-10-01.html?hl=ru">ру́сский</a> / <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">简体中文</a>/ <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">繁體中文 (台灣)</a>
+ </td>
+ <td>2017 年 10 月 2 日</td>
+ <td>2017-10-05</td>
+ </tr>
+ </tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/2019-01-01.html b/zh-cn/security/bulletin/pixel/2019-01-01.html
index 679209a4..7065a573 100644
--- a/zh-cn/security/bulletin/pixel/2019-01-01.html
+++ b/zh-cn/security/bulletin/pixel/2019-01-01.html
@@ -202,7 +202,7 @@
<tr>
<td>1.0</td>
<td>2019 年 1 月 7 日</td>
- <td>公告已发布。</td>
+ <td>发布了本公告。</td>
</tr>
</tbody></table>
diff --git a/zh-cn/security/bulletin/pixel/2019.html b/zh-cn/security/bulletin/pixel/2019.html
index d7298a12..565f3d49 100644
--- a/zh-cn/security/bulletin/pixel/2019.html
+++ b/zh-cn/security/bulletin/pixel/2019.html
@@ -179,7 +179,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
+ </tr><tr><td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
<td>即将发布<!--
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
<a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
@@ -191,7 +191,7 @@
</td>
<td>2019 年 1 月 7 日</td>
<td>2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/encryption/full-disk.html b/zh-cn/security/encryption/full-disk.html
index 3e7d41c9..16c0c6af 100644
--- a/zh-cn/security/encryption/full-disk.html
+++ b/zh-cn/security/encryption/full-disk.html
@@ -62,7 +62,7 @@
</li><li><code>late_start</code>:在 <code>/data</code> 未解密并装载之前,一直不会启动。
</li></ul>
-<p>为了触发这些操作,<code>vold.decrypt</code> 属性会设置为<a href="https://android.googlesource.com/platform/system/vold/+/master/cryptfs.c">各种字符串</a>。要结束和重启服务,请使用以下 <code>init</code> 命令:</p>
+<p>要触发这些操作,应将 <code>vold.decrypt</code> 属性设置为<a href="https://android.googlesource.com/platform/system/vold/+/master/cryptfs.c">各种字符串</a>。要结束和重启服务,请使用以下 <code>init</code> 命令:</p>
<ul>
<li><code>class_reset</code>:停止相应服务,但允许通过 class_start 重启该服务。
diff --git a/zh-cn/security/encryption/metadata.html b/zh-cn/security/encryption/metadata.html
index 4928d403..e1ecf38c 100644
--- a/zh-cn/security/encryption/metadata.html
+++ b/zh-cn/security/encryption/metadata.html
@@ -92,7 +92,7 @@ late-fs</code> 节中。请在这行代码前面添加以下指令,以执行 <
<h3 id="metadata-encryption-test">元数据加密测试</h3>
<p>
-我们会将这些测试放到上游,但与此同时,请向 <code>Android.bp</code> 中添加几行代码,并将 <code>check_encryption.cpp</code> 添加到 <code><a href="https://android.googlesource.com/platform/system/vold/+/master">platform/system/vold</a></code> 以测试您的实现。</p>
+我们会将这些测试放到上游,与此同时,请向 <code>Android.bp</code> 中添加几行代码,并将 <code>check_encryption.cpp</code> 添加到 <code><a href="https://android.googlesource.com/platform/system/vold/+/master">platform/system/vold</a></code> 以测试您的实现。</p>
<h4 id="changes-to-android-bp">对 <code>Android.bp</code> 的更改</h4>
<p>下面列出了对 <code>Android.bp</code> 的更改。
diff --git a/zh-cn/security/enhancements/enhancements42.html b/zh-cn/security/enhancements/enhancements42.html
index 6ac92fd9..6588bb16 100644
--- a/zh-cn/security/enhancements/enhancements42.html
+++ b/zh-cn/security/enhancements/enhancements42.html
@@ -33,17 +33,17 @@ Android 提供了一个多层安全模型,<a href="/security/index.html">Andro
<li><strong>改进后的 Android 权限显示方式</strong> - 权限划分到了多个对用户来说更清晰明了的组中。在审核权限时,用户可以点击权限来查看关于相应权限的更多详细信息。</li>
-<li><strong>installd 安全强化</strong> - <code>installd</code> 守护进程不会以 Root 用户身份运行,从而可缩小 Root 提权攻击的潜在攻击面。</li>
+<li><strong>installd 安全强化</strong> - <code>installd</code> 守护进程不会以 Root 用户身份运行,这样可以缩小 Root 提权攻击的潜在攻击面。</li>
-<li><strong>init 脚本安全强化</strong> - init 脚本现在应用 <code>O_NOFOLLOW</code> 语义来防范与符号链接相关的攻击。</li>
+<li><strong>init 脚本安全强化</strong> - init 脚本现在会应用 <code>O_NOFOLLOW</code> 语义来防范与符号链接相关的攻击。</li>
-<li><strong>FORTIFY_SOURCE</strong> - Android 现在实现了 <code>FORTIFY_SOURCE</code>,以供系统库和应用用于防范内存损坏。</li>
+<li><strong>FORTIFY_SOURCE</strong> - Android 现在会实现 <code>FORTIFY_SOURCE</code>,以供系统库和应用用于防范内存损坏。</li>
<li><strong>ContentProvider 默认配置</strong> - 默认情况下,对于每个<a href="https://developer.android.com/reference/android/content/ContentProvider.html">内容提供方</a>,选择 API 17 级的应用都会将“export”设为“false”,以缩小应用的默认受攻击面。</li>
<li><strong>加密</strong> - 修改了 SecureRandom 和 Cipher.RSA 的默认实现,以便使用 OpenSSL。为使用 OpenSSL 1.0.1 的 TLSv1.1 和 TLSv1.2 添加了安全套接字支持</li>
-<li><strong>安全漏洞修复程序</strong> - 升级了开放源代码库,新增了一些安全漏洞修复程序,其中包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,搭载更低 Android 版本的某些设备可能也会包含这些修复程序。</li>
+<li><strong>安全漏洞修复程序</strong> - 升级了开放源代码库,新增了一些安全漏洞修复程序,其中包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,部分搭载更低版本 Android 系统的设备可能也会包含这些修复程序。</li>
</ul>
diff --git a/zh-cn/security/keystore/tags.html b/zh-cn/security/keystore/tags.html
index 362f1968..7c77441b 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、4</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、4</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>
@@ -138,7 +138,7 @@ typedef enum {
<p><strong>版本</strong>:3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>提供设备的品牌名称(与 Android 中的 <code>Build.BRAND</code> 返回的名称相同)。仅在请求认证该设备的标识符时才会设置此字段。</p>
+<p>提供设备的品牌名称(由 Android 中的 <code>Build.BRAND</code> 返回)。仅在请求认证该设备的标识符时才会设置此字段。</p>
<p>如果该设备不支持 ID 认证(或者之前已调用 <code>destroyAttestationIds()</code> 且该设备无法再证明其 ID),则任何包含该标记的密钥认证请求都会失败并显示 <code>ErrorCode::CANNOT_ATTEST_IDS</code>。</p>
<p>此标记的值是一个 Blob(任意长度的字节数数组)。</p>
@@ -146,7 +146,7 @@ typedef enum {
<p><strong>版本</strong>:3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>提供设备的设备名称(与 Android 中的 <code>Build.DEVICE</code> 返回的名称相同)。仅在请求认证该设备的标识符时才会设置此字段。</p>
+<p>提供设备的设备名称(由 Android 中的 <code>Build.DEVICE</code> 返回)。仅在请求认证该设备的标识符时才会设置此字段。</p>
<p>如果该设备不支持 ID 认证(或者之前已调用 <code>destroyAttestationIds()</code> 且该设备无法再证明其 ID),则任何包含该标记的密钥认证请求都会失败并显示 <code>ErrorCode::CANNOT_ATTEST_IDS</code>。</p>
<p>此标记的值是一个 Blob(任意长度的字节数数组)。</p>
@@ -162,7 +162,7 @@ typedef enum {
<p><strong>版本</strong>:3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>提供设备的制造商名称(与 Android 中的 <code>Build.MANUFACTURER</code> 返回的名称相同)。仅在请求认证该设备的标识符时才会设置此字段。</p>
+<p>提供设备的制造商名称(由 Android 中的 <code>Build.MANUFACTURER</code> 返回)。仅在请求认证该设备的标识符时才会设置此字段。</p>
<p>如果该设备不支持 ID 认证(或者之前已调用 <code>destroyAttestationIds()</code> 且该设备无法再证明其 ID),则任何包含该标记的密钥认证请求都会失败并显示 <code>ErrorCode::CANNOT_ATTEST_IDS</code>。</p>
<p>此标记的值是一个 Blob(任意长度的字节数数组)。</p>
@@ -178,7 +178,7 @@ typedef enum {
<p><strong>版本</strong>:3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>提供设备的型号名称(与 Android 中的 <code>Build.MODEL</code> 返回的名称相同)。仅在请求认证该设备的标识符时才会设置此字段。</p>
+<p>提供设备的型号名称(由 Android 中的 <code>Build.MODEL</code> 返回)。仅在请求认证该设备的标识符时才会设置此字段。</p>
<p>如果该设备不支持 ID 认证(或者之前已调用 <code>destroyAttestationIds()</code> 且该设备无法再证明其 ID),则任何包含该标记的密钥认证请求都会失败并显示 <code>ErrorCode::CANNOT_ATTEST_IDS</code>。</p>
<p>此标记的值是一个 Blob(任意长度的字节数数组)。</p>
@@ -187,7 +187,7 @@ typedef enum {
<p><strong>版本</strong>:3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>提供设备的产品名称(与 Android 中的 <code>Build.PRODUCT</code> 返回的名称相同)。仅在请求认证该设备的标识符时才会设置此字段。</p>
+<p>提供设备的产品名称(由 Android 中的 <code>Build.PRODUCT</code> 返回)。仅在请求认证该设备的标识符时才会设置此字段。</p>
<p>如果该设备不支持 ID 认证(或者之前已调用 <code>destroyAttestationIds()</code> 且该设备无法再证明其 ID),则任何包含该标记的密钥认证请求都会失败并显示 <code>ErrorCode::CANNOT_ATTEST_IDS</code>。</p>
<p>此标记的值是一个 Blob(任意长度的字节数数组)。</p>
@@ -630,7 +630,7 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于表明相应密钥可抗回滚,也就是说,当通过 <a href="/security/keystore/implementer-ref#delete_key">deleteKey</a> 或 <a href="/security/keystore/implementer-ref#delete_all_keys">deleteAllKeys</a> 删除相应密钥后,可保证该密钥已被永久删除且无法再使用。如果密钥不带此标记,那么在被删除后,可能能够从备份中恢复。</p>
+<p>用于表明密钥可抗回滚,也就是说,当通过 <a href="/security/keystore/implementer-ref#delete_key">deleteKey</a> 或 <a href="/security/keystore/implementer-ref#delete_all_keys">deleteAllKeys</a> 删除密钥后,可保证该密钥已被永久删除且无法再使用。如果密钥不带此标记,那么在被删除后,可能能够从备份中恢复。</p>
<p>此标记为布尔值,因此可能的值为 true(如果此标记存在)和 false(如果此标记不存在)。</p>
diff --git a/zh-cn/security/overview/acknowledgements.html b/zh-cn/security/overview/acknowledgements.html
index ed42547e..3584080b 100644
--- a/zh-cn/security/overview/acknowledgements.html
+++ b/zh-cn/security/overview/acknowledgements.html
@@ -48,7 +48,7 @@
<td>CVE-2018-9587</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org/" class="external">C0RE</a> 团队的 <a href="mailto:arnow117@gmail.com" class="external">Hanxiang Wen</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou" class="external">@Mingjian_Zhou</a>)</td>
+ <td><a href="http://c0reteam.org/" class="external">C0RE</a> 团队的<a href="mailto:arnow117@gmail.com" class="external">温翰翔</a>和周明建 (<a href="https://twitter.com/Mingjian_Zhou" class="external">@Mingjian_Zhou</a>)</td>
<td>CVE-2018-6241</td>
</tr>
<tr>
@@ -145,6 +145,10 @@
<td>CVE-2018-9457</td>
</tr>
<tr>
+ <td>Deja vu Security 的 Joshua Laney</td>
+ <td>CVE-2018-9542</td>
+ </tr>
+ <tr>
<td><a href="https://github.com/michalbednarski" class="external">Michał Bednarski</a></td>
<td>CVE-2018-9522、CVE-2018-9523</td>
</tr>
@@ -332,7 +336,7 @@
<td>CVE-2018-9459、CVE-2018-9461</td>
</tr>
<tr>
- <td><a href="http://www.ms509.com" class="external">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x" class="external">@heeeeen4x</a>) 和 Bo Liu</td>
+ <td><a href="https://twitter.com/heeeeen4x" class="external">MS509Team</a> 的 En He (<a href="http://www.ms509.com" class="external">@heeeeen4x</a>) 和 Bo Liu</td>
<td>CVE-2017-13242、CVE-2018-9457</td>
</tr>
<tr>
@@ -353,7 +357,7 @@
<td>CVE-2018-9441</td>
</tr>
<tr>
- <td>Tencent Blade 团队</td>
+ <td>Tencent Blade Team</td>
<td>CVE-2017-18306、CVE-2017-18307</td>
</tr>
<tr>
@@ -474,7 +478,7 @@
</tr>
<tr>
<td>奇虎 360 科技有限公司 Alpha 团队的戴建军 (<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>
+ <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>
@@ -559,7 +563,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">温翰翔</a>和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
<td>CVE-2017-18154</td>
</tr>
<tr>
@@ -654,7 +658,7 @@
<td>CVE-2017-13306、CVE-2017-13290、CVE-2017-15837</td>
</tr>
<tr>
- <td>Tencent Blade 团队</td>
+ <td>Tencent Blade Team</td>
<td>CVE-2017-15853</td>
</tr>
<tr>
@@ -840,7 +844,7 @@
<td>CVE-2017-13273</td>
</tr>
<tr>
- <td>腾讯安全平台部门的张博</td>
+ <td>腾讯安全平台部的张博</td>
<td>CVE-2015-9016</td>
</tr>
<tr>
@@ -891,7 +895,7 @@
<td>CVE-2017-13209</td>
</tr>
<tr>
- <td>Haosheng Wang (<a href="https://twitter.com/gnehsoah">@gnehsoah</a>)</td>
+ <td>王浩生 (<a href="https://twitter.com/gnehsoah">@gnehsoah</a>)</td>
<td>CVE-2017-13198</td>
</tr>
<tr>
@@ -1155,7 +1159,7 @@
<td>CVE-2017-13172</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org/">C0RE 团队</a>的 <a href="mailto:arnow117@gmail.com">Hanxiang Wen</a></td>
+ <td><a href="http://c0reteam.org/">C0RE 团队</a>的<a href="mailto:arnow117@gmail.com">温翰翔</a></td>
<td>CVE-2017-0400、CVE-2017-0418、CVE-2017-0479、CVE-2017-0480、CVE-2017-0665、CVE-2017-0681、CVE-2017-0737、CVE-2017-14904</td>
</tr>
<tr>
@@ -1231,7 +1235,7 @@
<td>CVE-2016-10276</td>
</tr>
<tr>
- <td>阿里巴巴的 Jun Cheng</td>
+ <td>阿里巴巴的陈军</td>
<td>CVE-2017-0404</td>
</tr>
<tr>
@@ -1463,7 +1467,7 @@
<td>CVE-2017-0391、CVE-2017-0407、CVE-2017-0549、CVE-2017-0759</td>
</tr>
<tr>
- <td>Palo Alto Networks 的 Wenjun Hu</td>
+ <td>Palo Alto Networks 的胡文君</td>
<td>CVE-2017-0752</td>
</tr>
<tr>
@@ -1735,7 +1739,7 @@
<p>加州大学河滨分校的 <a href="mailto:hzhan033@ucr.edu">Hang Zhang</a></p>
-<p><a href="http://c0reteam.org">C0RE 团队</a>的 <a href="mailto:arnow117@gmail.com">Hanxiang Wen</a></p>
+<p><a href="http://c0reteam.org">C0RE 团队</a>的<a href="mailto:arnow117@gmail.com">温翰翔</a></p>
<p>奇虎 360 科技有限公司 Vulpecker 团队的 Hao Chen</p>
@@ -2034,7 +2038,7 @@
<p>奇虎 360 C0RE 团队的 Lei Wu</p>
-<p><a href="https://twitter.com/k33nteam">碁震安全研究团队</a> (<a href="http://k33nteam.org/">@K33nTeam</a>) 的 Marco Grassi (<a href="https://twitter.com/marcograss">@marcograss</a>)</p>
+<p><a href="http://k33nteam.org/">碁震安全研究团队</a> (<a href="https://twitter.com/k33nteam">@K33nTeam</a>) 的 Marco Grassi (<a href="https://twitter.com/marcograss">@marcograss</a>)</p>
<p>EmberMitre Ltd 的 Mark Carter (<a href="https://twitter.com/hanpingchinese">@hanpingchinese</a>)</p>
@@ -2103,7 +2107,7 @@
<p><a href="http://davidmurdoch.com">David Murdoch</a></p>
-<p><a href="https://labs.mwrinfosecurity.com/">MWR 实验室</a>的 Henry Hoggard (<a href="https://twitter.com/henryhoggard">@HenryHoggard</a>)</p>
+<p><a href="https://twitter.com/henryhoggard">MWR 实验室</a>的 Henry Hoggard (<a href="https://labs.mwrinfosecurity.com/">@HenryHoggard</a>)</p>
<p><a href="http://www.search-lab.hu/">Search-Lab Ltd.</a> 的 Imre Rad</p>
@@ -2182,7 +2186,7 @@
</div>
-<h2 id="2013">2013</h2>
+<h2 id="2013">2013 年</h2>
<div style="LINE-HEIGHT:25px;">
@@ -2226,7 +2230,7 @@
</div>
-<h2 id="2012">2012</h2>
+<h2 id="2012">2012 年</h2>
<div style="LINE-HEIGHT:25px;">
@@ -2249,7 +2253,7 @@
</div>
-<h2 id="2011">2011</h2>
+<h2 id="2011">2011 年</h2>
<div style="LINE-HEIGHT:25px;">
diff --git a/zh-cn/security/selinux/compatibility.html b/zh-cn/security/selinux/compatibility.html
index 763fee84..42da3743 100644
--- a/zh-cn/security/selinux/compatibility.html
+++ b/zh-cn/security/selinux/compatibility.html
@@ -24,7 +24,7 @@
本文介绍 Android 如何处理与平台 OTA 相关的政策兼容性问题,其中新平台 SELinux 设置可能与旧供应商 SELinux 设置有所不同。
</p>
<p>
-基于 Treble 的 SELinux 政策设计会考虑平台政策和供应商政策之间的二进制文件区别;如果供应商分区生成依赖项(例如 <code>platform</code> &lt; <code>vendor</code> &lt; <code>oem</code>),则架构会更加复杂。<em></em><em></em>
+基于 Treble 的 SELinux 政策设计会考虑平台政策和供应商政策之间的二进制文件区别;如果供应商分区生成依赖项(例如 <code>platform</code> &lt; <code>vendor</code> &lt; <code>oem</code>),则架构会变得更加复杂。<em></em><em></em>
</p>
<p>
在 Android 8.0 及更高版本中,SELinux 全局政策划分为私有和公共组件。公共组件包含政策和相关基础架构,保证可用于平台版本。
@@ -156,7 +156,7 @@ AOSP SELinux 政策已经为平台与之交互的 <code>vendor</code> 分区部
<code>/proc</code> 中的文件可以仅使用 <code>genfscon</code> 标签进行标记。在 Android 7.0 中,<a href="https://android.googlesource.com/platform/system/sepolicy/+/nougat-dr1-release/genfs_contexts" class="external">平台</a>政策和<a href="https://android.googlesource.com/device/google/marlin/+/nougat-dr1-release/sepolicy/genfs_contexts" class="external">供应商</a>政策都使用 <code>genfscon</code> 来标记 <code>procfs</code> 中的文件。
</p>
<p>
-<strong>建议</strong>:只有平台政策标记 <code>/proc</code>。如果 <code>vendor</code> 进程需要访问 <code>/proc</code> 中当前使用默认标签 (<code>proc</code>) 标记的文件,则供应商政策不应明确标记它们,而应使用常规 <code>proc</code> 类型为供应商域添加规则。这样,平台更新可以适应通过 <code>procfs</code> 公开的未来内核接口,并根据需要进行明确标记。
+<strong>建议</strong>:只有平台政策可以标记 <code>/proc</code>。如果 <code>vendor</code> 进程需要访问 <code>/proc</code> 中当前使用默认标签 (<code>proc</code>) 标记的文件,则供应商政策不应明确标记它们,而应使用常规 <code>proc</code> 类型为供应商域添加规则。这样,平台更新可以适应通过 <code>procfs</code> 公开的未来内核接口,并根据需要进行明确标记。
</p>
<h4 id="debugfs">Debugfs (/sys/kernel/debug)</h4>
<p>
diff --git a/zh-cn/security/selinux/customize.html b/zh-cn/security/selinux/customize.html
index a6148f14..a33284b0 100644
--- a/zh-cn/security/selinux/customize.html
+++ b/zh-cn/security/selinux/customize.html
@@ -53,8 +53,8 @@
<li>采用<a href="http://en.wikipedia.org/wiki/Principle_of_least_privilege">最小权限原则</a>。</li>
<li>仅针对您向 Android 添加的内容调整 SELinux 政策。默认政策能够自动适用于 <a href="https://android.googlesource.com/">Android 开源项目</a>代码库。</li>
<li>将各个软件组件拆分成多个负责执行单项任务的模块。</li>
- <li>创建用于将这些任务与无关功能隔离开来的 SELinux 政策。</li>
- <li>将这些政策放在 <code>/device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 目录中的 <code>*.te</code> 文件(te 是 SELinux 政策源代码文件使用的扩展名)内,然后使用 <code>BOARD_SEPOLICY</code> 变量将它们纳入到您的版本中。</li>
+ <li>创建将这些任务与无关功能隔离开来的 SELinux 政策。</li>
+ <li>将这些政策放在 <code>/device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 目录中的 <code>*.te</code> 文件(te 是 SELinux 政策源代码文件的扩展名)内,然后使用 <code>BOARD_SEPOLICY</code> 变量将它们纳入到您的版本中。</li>
<li>先将新域设为宽容域。为此,可以在该域的 <code>.te</code> 文件中使用宽容声明。</li>
<li>分析结果并优化域定义。</li>
<li>当 userdebug 版本中不再出现拒绝事件时,移除宽容声明。</li>
@@ -262,7 +262,7 @@ audit_control setfcap</pre>
<strong>示例</strong>:从支持相关进程的供应商映像向 <code>vndservicemanager</code> 添加新服务。
</p>
<p>
-与搭载旧版 Android 的设备一样,请在 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中添加针对特定设备的自定义配置。用于管控供应商组件如何与其他供应商组件(仅限这些组件)交互的新政策<strong>应涉及仅存在于 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中的类型</strong>。此处编写的政策允许运行供应商的代码,不会在仅针对框架的 OTA 期间更新,并且将存在于具有参考 AOSP 系统映像的设备上的组合政策中。
+与搭载旧版 Android 的设备一样,请在 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中添加针对特定设备的自定义配置。管控供应商组件如何与其他供应商组件(仅限这些组件)交互的新政策<strong>应涉及仅存在于 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中的类型</strong>。此处编写的政策允许运行供应商的代码,不会在仅针对框架的 OTA 期间更新,并且将存在于具有参考 AOSP 系统映像的设备上的组合政策中。
</p><h4 id="vendor-image-support-to-work-with-aosp">支持使用 AOSP 的供应商映像</h4>
<p>
@@ -315,12 +315,12 @@ audit_control setfcap</pre>
<strong>示例</strong>:在下一个 Android 版本中添加新的非 AOSP 系统进程(需要自己的域),该进程需要访问新的非 AOSP HAL。
</p>
<p>
-与<a href="#vendor-image-extensions-that-serve-extended-aosp-components">新(非 AOSP)系统和供应商组件</a>之间的交互类似,不同之处在于新的系统类型是在仅针对框架的 OTA 中引入的。虽然这个新类型可以添加到 <code>system/sepolicy/public</code> 中的政策,但现有的供应商政策不知道这个新类型,因为它仅跟踪 Android 8.0 系统公共政策。AOSP 可通过某个属性(例如 <code>hal_foo</code> 属性)要求取得供应商提供的资源,进而处理此情况,但由于属性合作伙伴扩展在 <code>system/sepolicy/public</code> 中不受支持,因此供应商政策无法使用此方法。访问权限必须由之前存在的公共类型提供。
+与<a href="#vendor-image-extensions-that-serve-extended-aosp-components">新(非 AOSP)系统和供应商组件</a>之间的交互类似,不同之处在于新的系统类型是在仅针对框架的 OTA 中引入的。虽然这个新类型可以添加到 <code>system/sepolicy/public</code> 中的政策里,但现有的供应商政策不知道这个新类型,因为它仅跟踪 Android 8.0 系统公共政策。AOSP 可通过某个属性(例如 <code>hal_foo</code> 属性)要求取得供应商提供的资源,进而处理此情况,但由于属性合作伙伴扩展在 <code>system/sepolicy/public</code> 中不受支持,因此供应商政策无法使用此方法。访问权限必须由之前存在的公共类型提供。
</p>
<p>
<strong>示例</strong>:对系统进程(AOSP 或非 AOSP)的更改必须更改它与新的非 AOSP 供应商组件进行互动的方式。
</p>
<p>
-在编写系统映像上的政策时必须对供应商独有的自定义不知情。因此,系统会通过 system/sepolicy/public 中的属性公开 AOSP 中涉及特定接口的政策,以便供应商政策可以选择启用将来使用这些属性的系统政策。不过,<strong><code>system/sepolicy/public</code> 中的属性扩展不受支持</strong>,因此用于指明系统组件与新供应商组件之间交互方式的所有政策(这些政策不通过 AOSP <code>system/sepolicy/public</code> 中已存在的属性进行处理)都必须位于 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中。这意味着系统类型无法在仅针对框架的 OTA 中更改已为供应商类型授予的访问权限。</p>
+在编写系统映像上的政策时必须对供应商独有的自定义不知情。因此,系统会通过 system/sepolicy/public 中的属性公开 AOSP 中涉及特定接口的政策,以便供应商政策可以选择启用将来使用这些属性的系统政策。不过,<strong><code>system/sepolicy/public</code> 中的属性扩展不受支持</strong>,因此指明系统组件与新供应商组件之间交互方式的所有政策(这些政策不通过 AOSP <code>system/sepolicy/public</code> 中已存在的属性进行处理)都必须位于 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中。这意味着系统类型无法在仅针对框架的 OTA 中更改已为供应商类型授予的访问权限。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/selinux/validate.html b/zh-cn/security/selinux/validate.html
index f6479868..2e0f3783 100644
--- a/zh-cn/security/selinux/validate.html
+++ b/zh-cn/security/selinux/validate.html
@@ -24,9 +24,9 @@
<p>实施新政策后,您可以通过执行 <code>getenforce</code> 命令来确认 SELinux 在设备上的运行模式是否正确。</p>
-<p>该命令会输出全局 SELinux 模式:强制或宽容。要确定每个域的 SELinux 模式,您必须查看相应的文件,或运行带有适当 (<code>-p</code>) 标记的最新版 <code>sepolicy-analyze</code>(位于 <a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tools/" class="external"><code>/platform/system/sepolicy/tools/</code></a> 中)。</p>
+<p>该命令会输出全局 SELinux 模式:强制或宽容。要确定每个域的 SELinux 模式,您必须检查相应的文件,或运行带有相应 (<code>-p</code>) 标记的最新版 <code>sepolicy-analyze</code>(位于 <a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tools/" class="external"><code>/platform/system/sepolicy/tools/</code></a> 中)。</p>
-<h2 id="reading_denials">读取拒绝事件</h2>
+<h2 id="reading_denials">阅读拒绝事件</h2>
<p>检查是否有错误,错误会以事件日志的形式传给 <code>dmesg</code> 和 <code>logcat</code>,并可在设备上从本地查看。制造商应先检查这些设备上传给 <code>dmesg</code> 的 SELinux 输出并优化设置,然后再在宽容模式下公开发布,最后切换到强制模式。SELinux 日志消息中包含“<code>avc:</code>”字样,因此可使用 <code>grep</code> 轻松找到。您可以通过运行 <code>cat /proc/kmsg</code> 来获取当前的拒绝事件日志,也可以通过运行 <code>cat /sys/fs/pstore/console-ramoops</code> 来获取上次启动时的拒绝事件日志。</p>
diff --git a/zh-tw/security/bulletin/2019.html b/zh-tw/security/bulletin/2019.html
index e6f5d60f..7edd49c6 100644
--- a/zh-tw/security/bulletin/2019.html
+++ b/zh-tw/security/bulletin/2019.html
@@ -191,7 +191,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
+ </tr><tr><td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
<td>即將推出
<!--
<a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
@@ -205,7 +205,7 @@
<td>2019 年 1 月 7 日</td>
<td>2019-01-01<br />
2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/pixel/2018-09-01.html b/zh-tw/security/bulletin/pixel/2018-09-01.html
index 06b68416..2d45ec5f 100644
--- a/zh-tw/security/bulletin/pixel/2018-09-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-09-01.html
@@ -310,7 +310,7 @@ QC-CR#2204285</a>
<strong>4.「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong>
</p>
<p>
-在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+在「參考資料」<em></em>欄中的 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
</p>
<p>
<strong>5. 為什麼安全性漏洞會分別刊載在這份安全性公告和 Android 安全性公告?</strong>
diff --git a/zh-tw/security/bulletin/pixel/2018-10-01.html b/zh-tw/security/bulletin/pixel/2018-10-01.html
index 9427d169..b410268c 100644
--- a/zh-tw/security/bulletin/pixel/2018-10-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-10-01.html
@@ -158,7 +158,7 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
<strong>4.「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong>
</p>
<p>
-在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+在「參考資料」<em></em>欄中的 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
</p>
<p>
<strong>5. 為什麼安全性漏洞會分別刊載在這份安全性公告和 Android 安全性公告?</strong>
diff --git a/zh-tw/security/bulletin/pixel/2018-11-01.html b/zh-tw/security/bulletin/pixel/2018-11-01.html
index 92935bef..edd58c54 100644
--- a/zh-tw/security/bulletin/pixel/2018-11-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-11-01.html
@@ -248,7 +248,7 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
<strong>4.「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong>
</p>
<p>
-在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+在「參考資料」<em></em>欄中的 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
</p>
<p>
<strong>5. 為什麼安全性漏洞會分別刊載在這份安全性公告和 Android 安全性公告?</strong>
diff --git a/zh-tw/security/bulletin/pixel/2018-12-01.html b/zh-tw/security/bulletin/pixel/2018-12-01.html
index a7f9ec97..c9cd3c3a 100644
--- a/zh-tw/security/bulletin/pixel/2018-12-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-12-01.html
@@ -251,7 +251,7 @@ QC-CR#2258691</a></td>
<strong>4.「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong>
</p>
<p>
-在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+在「參考資料」<em></em>欄中的 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
</p>
<p>
<strong>5. 為什麼安全性漏洞會分別刊載在這份安全性公告和 Android 安全性公告?</strong>
diff --git a/zh-tw/security/bulletin/pixel/2019.html b/zh-tw/security/bulletin/pixel/2019.html
index d700ce35..1e6efde2 100644
--- a/zh-tw/security/bulletin/pixel/2019.html
+++ b/zh-tw/security/bulletin/pixel/2019.html
@@ -179,7 +179,7 @@
</tr>
-->
</td></tr><tr>
- <td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
+ </tr><tr><td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
<td>即將推出
<!--
<a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
@@ -192,7 +192,7 @@
</td>
<td>2019 年 1 月 7 日</td>
<td>2019-01-05</td>
- </tr>
-</tbody></table>
+
+</tr></tbody></table>
</body></html> \ No newline at end of file