aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Partner Docs <noreply@android.com>2018-12-14 10:00:48 -0800
committerMark Hecomovich <mheco@google.com>2018-12-14 14:48:16 -0800
commitf2db2b61cb449bf1b0276974d1f4d0f73ef2b4dd (patch)
treec4cb2c473a1e89617ba7e1a874f040b0c2e1ae53
parent0929a40f7786a1f574c202f8bf01bf38fc5bdc03 (diff)
downloadsource.android.com-f2db2b61cb449bf1b0276974d1f4d0f73ef2b4dd.tar.gz
Docs: Changes to source.android.com
- 225558908 Automated g4 rollback of changelist 225461674. by Android Partner Docs <noreply@android.com> - 225550864 Devsite localized content from translation request 1036674. by Android Partner Docs <noreply@android.com> - 225547899 Fix broken link by Danielle Roberts <daroberts@google.com> - 225547403 Drop additional whitespace introduced by accident when tr... by Android Partner Docs <noreply@android.com> - 225536653 Add official guideline for headers for extended VNDK by Android Partner Docs <noreply@android.com> - 225489731 Devsite localized content from translation request 1015203. by Android Partner Docs <noreply@android.com> - 225489729 Devsite localized content from translation request 1047579. by Android Partner Docs <noreply@android.com> - 225489727 Devsite localized content from translation request 1047590. by Android Partner Docs <noreply@android.com> - 225465663 Fix typo by Android Partner Docs <noreply@android.com> - 225461674 Revert CID update by Danielle Roberts <daroberts@google.com> - 225458889 Add setup/build/dashboard to devsite; Link from homepage ... by Android Partner Docs <noreply@android.com> - 225452187 Update catching exceptions per Tobias' CL http://ag/57916... by Christina Nguyen <cqn@google.com> - 225410221 Created a guide to access work profile contacts. by Android Partner Docs <noreply@android.com> - 225380106 Devsite localized content from translation request 1044541. by Android Partner Docs <noreply@android.com> - 225280142 Remove holdover 9.0 directory from zh-cn localized files. by Gina Dimino <gdimino@google.com> - 225276176 Changing reviewer to gdimino by Gina Dimino <gdimino@google.com> - 225268401 Add benefits of Atest to introductory statement by Android Partner Docs <noreply@android.com> - 225268205 Fix "directorys" typo in TEST MAPPING doc by Android Partner Docs <noreply@android.com> - 225261448 Clean up the HTML formatting so that the file is easier f... by Christina Nguyen <cqn@google.com> - 225251081 Secure Element: Fix typos for few test cases by Android Partner Docs <noreply@android.com> - 225206956 Update build numbers for 2018/12 Docomo releases by Android Partner Docs <noreply@android.com> - 225195616 Devsite localized content from translation request 1046264. by Android Partner Docs <noreply@android.com> - 225195419 Devsite localized content from translation request 1024866. by Android Partner Docs <noreply@android.com> - 225195391 Devsite localized content from translation request 1040016. by Android Partner Docs <noreply@android.com> - 225195374 Devsite localized content from translation request 1032282. by Android Partner Docs <noreply@android.com> - 225059126 Secure Element: Add clarification on test cases by Android Partner Docs <noreply@android.com> - 225018931 Devsite localized content from translation request 1045477. by Android Partner Docs <noreply@android.com> - 224904315 Devsite localized content from translation request 1044282. by Android Partner Docs <noreply@android.com> - 224904309 Devsite localized content from translation request 1029445. by Android Partner Docs <noreply@android.com> - 224904295 Devsite localized content from translation request 1044542. by Android Partner Docs <noreply@android.com> - 224897168 Removed the comment tag and "Comming soon" for the local... by Luke Haviland <lhaviland@google.com> - 224891868 Add Luke to localization configs by Danielle Roberts <daroberts@google.com> - 224860068 Devsite localized content from translation request 1044262. by Android Partner Docs <noreply@android.com> - 224752674 Devsite localized content from translation request 1026891. by Android Partner Docs <noreply@android.com> - 224752671 Devsite localized content from translation request 1061530. by Android Partner Docs <noreply@android.com> - 224752667 Devsite localized content from translation request 1040025. by Android Partner Docs <noreply@android.com> - 224752636 Devsite localized content from translation request 1008389. by Android Partner Docs <noreply@android.com> - 224752634 Devsite localized content from translation request 1013269. by Android Partner Docs <noreply@android.com> - 224752628 Devsite localized content from translation request 1020396. by Android Partner Docs <noreply@android.com> - 224422875 Add link to Packaging Build Rules section anchor by Android Partner Docs <noreply@android.com> - 224421602 Move Atests links from AOSP to SAC, standardize envar setup by Android Partner Docs <noreply@android.com> - 224421460 Fix code example "MyLuiActivity" by Kenneth Lau <kennethlau@google.com> - 224420429 Fix incorrect starting path to all Atest links by Android Partner Docs <noreply@android.com> - 224417300 Replace AOSP link for Atest with native page by Android Partner Docs <noreply@android.com> - 224252988 Fix "Title Case" to "Sentence case" for H2 and lower. by Android Partner Docs <noreply@android.com> - 224233356 Fix broken link on APK Signing page by Kenneth Lau <kennethlau@google.com> - 224204432 Updated AOSP links by Luke Haviland <lhaviland@google.com> - 224200053 Added AOSP Links to December Bulletin. by Luke Haviland <lhaviland@google.com> - 224182129 Add Atest and Test Mapping to News section of home page by Android Partner Docs <noreply@android.com> - 224162840 Devsite localized content from translation request 1024730. by Android Partner Docs <noreply@android.com> - 224159473 Remove text regarding notification email group. by Android Partner Docs <noreply@android.com> - 224086085 Add terminal types to USB-C headset page by Danielle Roberts <daroberts@google.com> - 224072758 added row back to the functional patches table by Luke Haviland <lhaviland@google.com> - 224053547 Update build numbers for 2018/12 m/s releases by Android Partner Docs <noreply@android.com> - 224043334 Add WinScope developer documentation by Android Partner Docs <noreply@android.com> - 224032853 Move localized CDD file to 9 directory by Danielle Roberts <daroberts@google.com> - 224026519 Add Test Mapping docs to Tests Development section by Android Partner Docs <noreply@android.com> - 223922752 Enhance the documentation for ld.config.txt file format by Android Partner Docs <noreply@android.com> - 223920489 Devsite localized content from translation request 1040039. by Android Partner Docs <noreply@android.com> - 223920485 Devsite localized content from translation request 1040022. by Android Partner Docs <noreply@android.com> - 223857636 Update build numbers for 2018/12 releases by Android Partner Docs <noreply@android.com> - 223845531 Fix the Qualcomm table to exclude component and only read... by Luke Haviland <lhaviland@google.com> - 223816883 Adding the December security bulletins by Luke Haviland <lhaviland@google.com> - 223805280 Updated the CDD navigation to include the previous versio... by Luke Haviland <lhaviland@google.com> - 223799250 Devsite localized content from translation request 1036673. by Android Partner Docs <noreply@android.com> - 223799221 Devsite localized content from translation request 1005914. by Android Partner Docs <noreply@android.com> - 223799216 Devsite localized content from translation request 1015209. by Android Partner Docs <noreply@android.com> - 223799211 Devsite localized content from translation request 1034359. by Android Partner Docs <noreply@android.com> - 223587266 Clarify disabled HALs by Android Partner Docs <noreply@android.com> - 223457102 Devsite localized content from translation request 1034369. by Android Partner Docs <noreply@android.com> - 223450822 Devsite localized content from translation request 1036675. by Android Partner Docs <noreply@android.com> - 223365433 Minor style edits by Christina Nguyen <cqn@google.com> - 223364760 Fix typo. by Christina Nguyen <cqn@google.com> - 223361317 Devsite localized content from translation request 1018906. by Android Partner Docs <noreply@android.com> - 223356382 Correct repo location for bluecross kernel by Android Partner Docs <noreply@android.com> - 223176719 Devsite localized content from translation request 1024867. by Android Partner Docs <noreply@android.com> - 223176706 Devsite localized content from translation request 1020251. by Android Partner Docs <noreply@android.com> - 223097181 Devsite localized content from translation request 1013714. by Android Partner Docs <noreply@android.com> - 222999852 Devsite localized content from translation request 1024727. by Android Partner Docs <noreply@android.com> - 222999831 Devsite localized content from translation request 1008230. by Android Partner Docs <noreply@android.com> - 222999739 Devsite localized content from translation request 1022537. by Android Partner Docs <noreply@android.com> - 222999726 Devsite localized content from translation request 1026861. by Android Partner Docs <noreply@android.com> - 222999709 Devsite localized content from translation request 1028231. by Android Partner Docs <noreply@android.com> - 222906457 Add Atest docs to Tests section by Kenneth Lau <kennethlau@google.com> - 222886182 Devsite localized content from translation request 1019176. by Android Partner Docs <noreply@android.com> PiperOrigin-RevId: 225558908 Change-Id: I318551b443def5e3a8f402c1585d0ad4f986276a
-rw-r--r--en/_index.yaml39
-rw-r--r--en/compatibility/_toc-compatibility.yaml78
-rw-r--r--en/compatibility/_toc-tests.yaml4
-rw-r--r--en/compatibility/_translation.yaml3
-rw-r--r--en/compatibility/cts/audio-framework.html2
-rw-r--r--en/compatibility/cts/secure-element.md25
-rw-r--r--en/compatibility/tests/development/atest.md418
-rw-r--r--en/compatibility/tests/development/index.md10
-rw-r--r--en/compatibility/tests/development/instr-app-e2e.md14
-rw-r--r--en/compatibility/tests/development/instr-self-e2e.md12
-rw-r--r--en/compatibility/tests/development/instrumentation.md3
-rw-r--r--en/compatibility/tests/development/native-func-e2e.md2
-rw-r--r--en/compatibility/tests/development/native.md4
-rw-r--r--en/compatibility/tests/development/test-mapping.md270
-rw-r--r--en/compatibility/tests/index.md2
-rw-r--r--en/devices/_toc-graphics.yaml2
-rw-r--r--en/devices/accessories/headset/usb-headset-spec.html11
-rw-r--r--en/devices/architecture/vintf/objects.html5
-rw-r--r--en/devices/architecture/vndk/build-system.html211
-rw-r--r--en/devices/architecture/vndk/linker-namespace.html496
-rw-r--r--en/devices/graphics/images/winscope_screenshot.pngbin0 -> 299596 bytes
-rw-r--r--en/devices/graphics/tracing-win-transitions.html137
-rw-r--r--en/devices/tech/admin/enterprise-telephony.html49
-rw-r--r--en/devices/tech/config/update.html20
-rw-r--r--en/devices/tech/connect/esim-overview.md10
-rw-r--r--en/legal.html2
-rw-r--r--en/security/_toc-bulletins.yaml4
-rw-r--r--en/security/apksigning/index.html36
-rw-r--r--en/security/bulletin/2018-12-01.html848
-rw-r--r--en/security/bulletin/2018.html14
-rw-r--r--en/security/bulletin/_translation.yaml2
-rw-r--r--en/security/bulletin/index.html22
-rw-r--r--en/security/bulletin/pixel/2018-12-01.html325
-rw-r--r--en/security/bulletin/pixel/2018.html15
-rw-r--r--en/security/bulletin/pixel/index.html15
-rw-r--r--en/security/overview/acknowledgements.html54
-rw-r--r--en/setup/_toc-build.yaml2
-rw-r--r--en/setup/build/building-kernels.html2
-rw-r--r--en/setup/build/dashboard.html64
-rw-r--r--en/setup/contribute/code-style.html1396
-rw-r--r--en/setup/images/dashboard.pngbin0 -> 92126 bytes
-rw-r--r--en/setup/start/build-numbers.html36
-rw-r--r--en/setup/start/p-release-notes.md7
-rw-r--r--ja/security/bulletin/2018-08-01.html2
-rw-r--r--ja/security/bulletin/2018-11-01.html99
-rw-r--r--ja/security/bulletin/2018-12-01.html706
-rw-r--r--ja/security/bulletin/pixel/2018-01-01.html3
-rw-r--r--ja/security/bulletin/pixel/2018-04-01.html8
-rw-r--r--ja/security/bulletin/pixel/2018-06-01.html2
-rw-r--r--ja/security/bulletin/pixel/2018-07-01.html11
-rw-r--r--ja/security/bulletin/pixel/2018-08-01.html4
-rw-r--r--ja/security/bulletin/pixel/2018-09-01.html4
-rw-r--r--ja/security/bulletin/pixel/2018-11-01.html29
-rw-r--r--ja/security/bulletin/pixel/2018-12-01.html274
-rw-r--r--ja/security/bulletin/pixel/2018.html16
-rw-r--r--ko/security/bulletin/2018-08-01.html4
-rw-r--r--ko/security/bulletin/2018-09-01.html59
-rw-r--r--ko/security/bulletin/2018-11-01.html101
-rw-r--r--ko/security/bulletin/2018-12-01.html802
-rw-r--r--ko/security/bulletin/2018.html16
-rw-r--r--ko/security/bulletin/index.html18
-rw-r--r--ko/security/bulletin/pixel/2018-01-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-02-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-03-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-04-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-06-01.html8
-rw-r--r--ko/security/bulletin/pixel/2018-07-01.html13
-rw-r--r--ko/security/bulletin/pixel/2018-08-01.html6
-rw-r--r--ko/security/bulletin/pixel/2018-09-01.html6
-rw-r--r--ko/security/bulletin/pixel/2018-11-01.html29
-rw-r--r--ko/security/bulletin/pixel/2018-12-01.html309
-rw-r--r--ru/security/bulletin/2018-08-01.html2
-rw-r--r--ru/security/bulletin/2018-11-01.html98
-rw-r--r--ru/security/bulletin/2018-12-01.html709
-rw-r--r--ru/security/bulletin/pixel/2018-01-01.html4
-rw-r--r--ru/security/bulletin/pixel/2018-02-01.html2
-rw-r--r--ru/security/bulletin/pixel/2018-03-01.html2
-rw-r--r--ru/security/bulletin/pixel/2018-05-01.html4
-rw-r--r--ru/security/bulletin/pixel/2018-11-01.html27
-rw-r--r--ru/security/bulletin/pixel/2018-12-01.html276
-rw-r--r--ru/security/bulletin/pixel/2018.html122
-rw-r--r--ru/security/bulletin/pixel/index.html150
-rw-r--r--zh-cn/compatibility/9.0/versions.html29
-rw-r--r--zh-cn/compatibility/9/android-9-cdd.html (renamed from zh-cn/compatibility/9.0/android-9.0-cdd.html)0
-rw-r--r--zh-cn/compatibility/cts/audio-framework.html2
-rw-r--r--zh-cn/compatibility/cts/camera-wfov-box-assembly.html2
-rw-r--r--zh-cn/compatibility/cts/downloads.html54
-rw-r--r--zh-cn/compatibility/cts/run.html4
-rw-r--r--zh-cn/compatibility/cts/secure-element.html19
-rw-r--r--zh-cn/compatibility/cts/setup.html12
-rw-r--r--zh-cn/compatibility/cts/usb-audio.html2
-rw-r--r--zh-cn/compatibility/overview.html4
-rw-r--r--zh-cn/compatibility/tests/development/atest.html450
-rw-r--r--zh-cn/compatibility/tests/development/blueprints.html72
-rw-r--r--zh-cn/compatibility/tests/development/index.html69
-rw-r--r--zh-cn/compatibility/tests/development/instr-app-e2e.html181
-rw-r--r--zh-cn/compatibility/tests/development/instr-self-e2e.html187
-rw-r--r--zh-cn/compatibility/tests/development/instrumentation.html106
-rw-r--r--zh-cn/compatibility/tests/development/metrics.html55
-rw-r--r--zh-cn/compatibility/tests/development/native-func-e2e.html142
-rw-r--r--zh-cn/compatibility/tests/development/native.html60
-rw-r--r--zh-cn/compatibility/tests/development/test-config.html147
-rw-r--r--zh-cn/compatibility/tests/development/test-mapping.html211
-rw-r--r--zh-cn/compatibility/tests/index.html144
-rw-r--r--zh-cn/compatibility/vts/codelab-video.html470
-rw-r--r--zh-cn/compatibility/vts/hal-testability.html4
-rw-r--r--zh-cn/compatibility/vts/index.html3
-rw-r--r--zh-cn/devices/accessories/headset/usb-headset-spec.html10
-rw-r--r--zh-cn/devices/architecture/dto/optimize.html4
-rw-r--r--zh-cn/devices/architecture/kernel/modular-kernels.html9
-rw-r--r--zh-cn/devices/architecture/vintf/match-rules.html4
-rw-r--r--zh-cn/devices/architecture/vndk/linker-namespace.html2
-rw-r--r--zh-cn/devices/bluetooth/asha.html41
-rw-r--r--zh-cn/devices/bootloader/flashing-updating.html10
-rw-r--r--zh-cn/devices/bootloader/partitions-images.html2
-rw-r--r--zh-cn/devices/bootloader/product-partitions.html2
-rw-r--r--zh-cn/devices/bootloader/system-as-root.html4
-rw-r--r--zh-cn/devices/graphics/build-tests.html2
-rw-r--r--zh-cn/devices/graphics/run-tests.html2
-rw-r--r--zh-cn/devices/graphics/tracing-win-transitions.html120
-rw-r--r--zh-cn/devices/media/oem.html2
-rw-r--r--zh-cn/devices/sensors/batching.html4
-rw-r--r--zh-cn/devices/sensors/power-use.html2
-rw-r--r--zh-cn/devices/sensors/sensor-stack.html14
-rw-r--r--zh-cn/devices/sensors/versioning.html2
-rw-r--r--zh-cn/devices/tech/config/filesystem.html3
-rw-r--r--zh-cn/devices/tech/config/update.html12
-rw-r--r--zh-cn/devices/tech/connect/block-numbers.html5
-rw-r--r--zh-cn/devices/tech/connect/carrier-wifi.html26
-rw-r--r--zh-cn/devices/tech/connect/connect_tests.html6
-rw-r--r--zh-cn/devices/tech/connect/data-plans.html14
-rw-r--r--zh-cn/devices/tech/connect/esim-euicc-api.html8
-rw-r--r--zh-cn/devices/tech/connect/esim-modem-requirements.html8
-rw-r--r--zh-cn/devices/tech/connect/esim-overview.html36
-rw-r--r--zh-cn/devices/tech/connect/ims.html12
-rw-r--r--zh-cn/devices/tech/connect/third-party-call-apps.html19
-rw-r--r--zh-cn/devices/tech/connect/wifi-aware.html8
-rw-r--r--zh-cn/devices/tech/connect/wifi-debug.html6
-rw-r--r--zh-cn/devices/tech/connect/wifi-hal.html8
-rw-r--r--zh-cn/devices/tech/connect/wifi-overview.html6
-rw-r--r--zh-cn/devices/tech/connect/wifi-rtt.html8
-rw-r--r--zh-cn/devices/tech/connect/wifi-sta-ap-concurrency.html2
-rw-r--r--zh-cn/devices/tech/dalvik/improvements.html2
-rw-r--r--zh-cn/devices/tech/debug/gdb.html16
-rw-r--r--zh-cn/devices/tech/debug/index.html4
-rw-r--r--zh-cn/devices/tech/debug/sanitizers.html2
-rw-r--r--zh-cn/devices/tech/display/display-cutouts.html12
-rw-r--r--zh-cn/devices/tech/display/synched-app-transitions.html12
-rw-r--r--zh-cn/devices/tech/health/deprecation.html15
-rw-r--r--zh-cn/devices/tech/health/implementation.html4
-rw-r--r--zh-cn/devices/tech/health/index.html4
-rw-r--r--zh-cn/devices/tech/ota/ab/ab_implement.html26
-rw-r--r--zh-cn/devices/tech/ota/nonab/device_code.html38
-rw-r--r--zh-cn/devices/tech/ota/sign_builds.html2
-rw-r--r--zh-cn/devices/tech/perf/compatibility-wal.html4
-rw-r--r--zh-cn/devices/tech/power/batteryless.html2
-rw-r--r--zh-cn/devices/tech/power/component.html2
-rw-r--r--zh-cn/devices/tech/power/platform_mgmt.html2
-rw-r--r--zh-cn/devices/tv/reference-tv-app.html6
-rw-r--r--zh-cn/security/advisory/index.html6
-rw-r--r--zh-cn/security/bulletin/2018-07-01.html8
-rw-r--r--zh-cn/security/bulletin/2018-09-01.html70
-rw-r--r--zh-cn/security/bulletin/2018-11-01.html99
-rw-r--r--zh-cn/security/bulletin/2018-12-01.html708
-rw-r--r--zh-cn/security/bulletin/pixel/2018-01-01.html38
-rw-r--r--zh-cn/security/bulletin/pixel/2018-02-01.html35
-rw-r--r--zh-cn/security/bulletin/pixel/2018-03-01.html38
-rw-r--r--zh-cn/security/bulletin/pixel/2018-06-01.html32
-rw-r--r--zh-cn/security/bulletin/pixel/2018-07-01.html9
-rw-r--r--zh-cn/security/bulletin/pixel/2018-09-01.html18
-rw-r--r--zh-cn/security/bulletin/pixel/2018-10-01.html14
-rw-r--r--zh-cn/security/bulletin/pixel/2018-11-01.html42
-rw-r--r--zh-cn/security/bulletin/pixel/2018-12-01.html275
-rw-r--r--zh-cn/security/encryption/file-based.html66
-rw-r--r--zh-cn/security/enhancements/enhancements42.html4
-rw-r--r--zh-cn/security/index.html2
-rw-r--r--zh-cn/security/keystore/tags.html12
-rw-r--r--zh-cn/security/overview/acknowledgements.html215
-rw-r--r--zh-cn/security/overview/app-security.html14
-rw-r--r--zh-cn/security/overview/reports.html30
-rw-r--r--zh-cn/security/selinux/compatibility.html8
-rw-r--r--zh-cn/security/selinux/customize.html10
-rw-r--r--zh-cn/security/selinux/validate.html6
-rw-r--r--zh-cn/setup/build/building-kernels.html25
-rw-r--r--zh-cn/setup/build/jack.html2
-rw-r--r--zh-cn/setup/build/running.html44
-rw-r--r--zh-cn/setup/community.html2
-rw-r--r--zh-cn/setup/contribute/read-bug-reports.html4
-rw-r--r--zh-cn/setup/develop/64-bit-builds.html2
-rw-r--r--zh-cn/setup/start/brands.html2
-rw-r--r--zh-cn/setup/start/p-release-notes.html38
-rw-r--r--zh-cn/setup/start/site-updates.html32
-rw-r--r--zh-tw/security/bulletin/2018-07-01.html2
-rw-r--r--zh-tw/security/bulletin/2018-08-01.html3
-rw-r--r--zh-tw/security/bulletin/2018-09-01.html32
-rw-r--r--zh-tw/security/bulletin/2018-11-01.html99
-rw-r--r--zh-tw/security/bulletin/2018-12-01.html706
-rw-r--r--zh-tw/security/bulletin/pixel/2018-07-01.html9
-rw-r--r--zh-tw/security/bulletin/pixel/2018-11-01.html27
-rw-r--r--zh-tw/security/bulletin/pixel/2018-12-01.html273
200 files changed, 12510 insertions, 2168 deletions
diff --git a/en/_index.yaml b/en/_index.yaml
index 1694a614..e5e42f7b 100644
--- a/en/_index.yaml
+++ b/en/_index.yaml
@@ -45,10 +45,10 @@ landing_page:
items:
- heading: About the Android Open Source Project
description: |
- Android is an open source software stack for mobile devices and a
+ Android is an open source operating system for mobile devices and a
corresponding open source project led by Google. This site and the
Android Open Source Project (AOSP) repository offer the information and
- source code needed to create custom variants of the Android stack, port
+ source code needed to create custom variants of the Android OS, port
devices and accessories to the Android platform, and ensure devices meet
the compatibility requirements that keep the Android ecosystem a healthy
and stable environment for millions of users.
@@ -77,30 +77,29 @@ landing_page:
image_path: /images/android_stack.png
- heading: News
items:
- - heading: November Security Bulletins
+ - heading: Continuous Integration Dashboard
description: >
- The November 2018 Android and Pixel/Nexus Security Bulletins have been
- published along with links to associated fixes and new build numbers
- to support the November security release.
+ The Android Open Source Project (AOSP) has published its continuous integration
+ dashboard.
buttons:
- - label: November 5th, 2018
- path: /security/bulletin/2018-11-01
- - heading: Platform Testing Overview
+ - label: December 14th, 2018
+ path: /setup/build/dashboard
+ - heading: December Security Bulletins
description: >
- The Tests section now contains a thorough introduction
- to all primary test types with end-to-end examples employing the new Soong build system. See
- the Test Development Workflow.
+ The December 2018 Android and Pixel/Nexus Security Bulletins have been
+ published along with links to associated fixes and new build numbers
+ to support the December security release.
buttons:
- - label: November 1st, 2018
- path: /compatibility/tests
- - heading: Android 9 Documentation
+ - label: December 5th, 2018
+ path: /security/bulletin/2018-12-01
+ - heading: Test Mapping Made Easy
description: >
- Android 9 has been released! This site includes documentation for
- implementing the features, improvements, and enhancements
- in the newest version of Android.
+ Test Mapping is a Gerrit-based approach that allows developers to create pre- and
+ post-submit test rules directly in the Android source tree and leave branch and device
+ selection to the test infrastructure.
buttons:
- - label: August 6th, 2018
- path: /setup/start/p-release-notes
+ - label: December 4th, 2018
+ path: /compatibility/tests/development/test-mapping
- classname: devsite-landing-row-100 tf-row-centered
items:
- buttons:
diff --git a/en/compatibility/_toc-compatibility.yaml b/en/compatibility/_toc-compatibility.yaml
index 20f2abb3..3ce35262 100644
--- a/en/compatibility/_toc-compatibility.yaml
+++ b/en/compatibility/_toc-compatibility.yaml
@@ -3,7 +3,77 @@ toc:
path: /compatibility/overview
- title: Compatibility Definition Document
path: /compatibility/cdd/
-- title: CDD in HTML
- path: /compatibility/android-cdd
-- title: CDD in PDF
- path: /compatibility/android-cdd.pdf
+- title: CDDs in HTML
+ section:
+ - title: Android 9 (current)
+ path: /compatibility/9/android-9-cdd
+ - title: Android 8.1
+ path: /compatibility/8.1/android-8.1-cdd
+ - title: Android 8.0
+ path: /compatibility/8.0/android-8.0-cdd
+ - title: Android 7.1
+ path: /compatibility/7.1/android-7.1-cdd
+ - title: Android 7.0
+ path: /compatibility/7.0/android-7.0-cdd
+ - title: Android 6.0
+ path: /compatibility/6.0/android-6.0-cdd
+ - title: Android 5.1
+ path: /compatibility/5.1/android-5.1-cdd
+ - title: Android 5.0
+ path: /compatibility/5.0/android-5.0-cdd
+ - title: Android 4.4
+ path: /compatibility/4.4/android-4.4-cdd
+ - title: Android 4.3
+ path: /compatibility/4.3/android-4.3-cdd
+ - title: Android 4.2
+ path: /compatibility/4.2/android-4.2-cdd
+ - title: Android 4.1
+ path: /compatibility/4.1/android-4.1-cdd
+ - title: Android 4.0
+ path: /compatibility/4.0/android-4.0-cdd
+ - title: Android 2.3
+ path: /compatibility/2.3/android-2.3-cdd
+ - title: Android 2.2
+ path: /compatibility/2.2/android-2.2-cdd
+ - title: Android 2.1
+ path: /compatibility/2.1/android-2.1-cdd
+ - title: Android 1.6
+ path: /compatibility/1.6/android-1.6-cdd
+- title: CDDs as PDF
+ section:
+ - title: Android 9 (current)
+ path: /compatibility/9/android-9-cdd.pdf
+ - title: Android 8.1
+ path: /compatibility/8.1/android-8.1-cdd.pdf
+ - title: Android 8.0
+ path: /compatibility/8.0/android-8.0-cdd.pdf
+ - title: Android 7.1
+ path: /compatibility/7.1/android-7.1-cdd.pdf
+ - title: Android 7.0
+ path: /compatibility/7.0/android-7.0-cdd.pdf
+ - title: Android 6.0
+ path: /compatibility/6.0/android-6.0-cdd.pdf
+ - title: Android 5.1
+ path: /compatibility/5.1/android-5.1-cdd.pdf
+ - title: Android 5.0
+ path: /compatibility/5.0/android-5.0-cdd.pdf
+ - title: Android 4.4
+ path: /compatibility/4.4/android-4.4-cdd.pdf
+ - title: Android 4.3
+ path: /compatibility/4.3/android-4.3-cdd.pdf
+ - title: Android 4.2
+ path: /compatibility/4.2/android-4.2-cdd.pdf
+ - title: Android 4.1
+ path: /compatibility/4.1/android-4.1-cdd.pdf
+ - title: Android 4.0
+ path: /compatibility/4.0/android-4.0-cdd.pdf
+ - title: Android 2.3
+ path: /compatibility/2.3/android-2.3-cdd.pdf
+ - title: Android 2.3.3
+ path: /compatibility/2.3/android-2.3.3-cdd.pdf
+ - title: Android 2.2
+ path: /compatibility/2.2/android-2.2-cdd.pdf
+ - title: Android 2.1
+ path: /compatibility/2.1/android-2.1-cdd.pdf
+ - title: Android 1.6
+ path: /compatibility/1.6/android-1.6-cdd.pdf
diff --git a/en/compatibility/_toc-tests.yaml b/en/compatibility/_toc-tests.yaml
index 03c550c7..6d9d575f 100644
--- a/en/compatibility/_toc-tests.yaml
+++ b/en/compatibility/_toc-tests.yaml
@@ -27,6 +27,10 @@ toc:
path: /compatibility/tests/development/metrics.md
- title: JAR Host Tests
path: /compatibility/tests/development/jar.md
+ - title: Mapping Tests
+ path: /compatibility/tests/development/test-mapping
+ - title: Running Tests (Atest)
+ path: /compatibility/tests/development/atest
- title: Compatibility Test Suite (CTS)
section:
- title: Overview
diff --git a/en/compatibility/_translation.yaml b/en/compatibility/_translation.yaml
index b458dee8..320f9ed7 100644
--- a/en/compatibility/_translation.yaml
+++ b/en/compatibility/_translation.yaml
@@ -17,6 +17,7 @@ ignore_paths:
- /compatibility/8.1/...
- /compatibility/images/...
- /compatibility/source/...
+- /compatibility/android-cdd
enable_continuous_translation: true
title: Android Open Source Project Compatibility tab
description: Translations for SAC compatibility tab
@@ -25,5 +26,5 @@ language:
cc:
- sac-doc-leads+translation@google.com
reviewer:
-- daroberts@google.com
+- gdimino@google.com
product: Android
diff --git a/en/compatibility/cts/audio-framework.html b/en/compatibility/cts/audio-framework.html
index 81d69a75..d0aa2ad1 100644
--- a/en/compatibility/cts/audio-framework.html
+++ b/en/compatibility/cts/audio-framework.html
@@ -353,7 +353,7 @@ have a solid reference to compare the built in microphone against.</p>
</tr>
</table>
-<h2>Audio Frequency Unprocessed Test</h2>
+<h2>Audio frequency unprocessed test</h2>
<p>
For this test, in addition to the USB reference microphone and external
speakers, it is necessary to have access to a Sound Pressure Level Meter (SPL
diff --git a/en/compatibility/cts/secure-element.md b/en/compatibility/cts/secure-element.md
index 86f8d68f..01ea9e18 100644
--- a/en/compatibility/cts/secure-element.md
+++ b/en/compatibility/cts/secure-element.md
@@ -172,7 +172,7 @@ applet with the following application identifiers (AIDs):
</tr>
<tr>
<td>0x00F30E06</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>No</td>
</tr>
<tr>
@@ -252,7 +252,7 @@ applet with the following application identifiers (AIDs):
</tr>
<tr>
<td>0x00F30E0A01AA</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>No</td>
</tr>
<tr>
@@ -332,7 +332,7 @@ applet with the following application identifiers (AIDs):
</tr>
<tr>
<td>0x00F30E0800</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>Yes</td>
</tr>
<tr>
@@ -412,7 +412,7 @@ applet with the following application identifiers (AIDs):
</tr>
<tr>
<td>0x00F30E0C01AA00</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>Yes*</td>
</tr>
<tr>
@@ -467,12 +467,12 @@ applet with the following application identifiers (AIDs):
<tr>
<td>0x00C27FFF00</td>
<td>0x9000</td>
- <td>2048</td>
+ <td>32767</td>
</tr>
<tr>
<td>0x00CF080000</td>
<td>0x9000</td>
- <td>32767</td>
+ <td>2048</td>
</tr>
<tr>
<td>0x94C2080000</td>
@@ -482,9 +482,9 @@ applet with the following application identifiers (AIDs):
</tbody>
</table>
</li>
- <li>The applet should return success status word <code>0x9000</code> for
- the given
- APDU: 0x00F40000</li>
+ <li>The applet should return the value of P2 received in the SELECT
+ command + the success status word (i.e <code>0x009000</code>) for the given
+ APDU: 0x00F4000000</li>
</ol>
<li>A000000476416E64726F696443545332
<ol>
@@ -527,6 +527,9 @@ Create an instance of the applet under these AIDs:
- 0xA000000476416E64726F69644354534E
- 0xA000000476416E64726F69644354534F
+When selected, any of these AIDs should return a select response greater than
+2 bytes that are correctly formatted using BER and TLV.
+
### `CtsSecureElementAccessControlTestCases1`
- **Hash of the APK:** 0x4bbe31beb2f753cfe71ec6bf112548687bb6c34e
@@ -768,7 +771,7 @@ Run installation command for each applet.
Command to install applet
-<code>80E60C00300C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>010002C90000</code><br>
+<code>80E60C00300C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>01000EEF0AA008810101A5038201C0C9000000</code><br>
**Module_AID**: 6F 6D 61 70 69 4A 53 52 31 37 37
**AID:** A000000476416E64726F696443545331
@@ -778,7 +781,7 @@ Command to install applet
##### AccessControl tests (template using PKCS#15 structure)
-<code>80E60C003C0C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>01000EEF0AA008810101A5038201C0C90000</code><br>
+<code>80E60C003C0C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>01000EEF0AA008810101A5038201C0C9000000</code><br>
**Module_AID**: 6F 6D 61 70 69 4A 53 52 31 37 37
**AIDs:**
diff --git a/en/compatibility/tests/development/atest.md b/en/compatibility/tests/development/atest.md
new file mode 100644
index 00000000..8c3fe385
--- /dev/null
+++ b/en/compatibility/tests/development/atest.md
@@ -0,0 +1,418 @@
+Project: /_project.yaml
+Book: /_book.yaml
+
+{% include "_versions.html" %}
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+# Atest
+
+Atest is a command line tool that allows users to build, install, and run
+Android tests locally, greatly speeding test re-runs without requiring knowledge
+of [Trade Federation test harness](/devices/tech/test_infra/tradefed) command
+line options. This page explains how to use Atest to run Android tests.
+
+For general information on writing tests for Android, see
+[Android Platform Testing](/compatibility/tests/index.md).
+
+For information on the overall structure of Atest, see
+[Atest Developer Guide](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/docs/atest_structure.md){: .external}.
+
+And to add a feature to Atest, follow
+[Atest Developer Workflow](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/docs/developer_workflow.md){: .external}.
+
+## Setting up your environment
+
+To run Atest, follow the steps in the sections below to set up your environment.
+
+### Set environment variable
+
+Set test_suite for [Soong](/compatibility/tests/development/blueprints) or
+LOCAL_COMPATIBILITY_SUITE for Make per
+[Packaging build script rules](/compatibility/tests/development/test-mapping#packaging_build_script_rules).
+
+### 1. Run envsetup.sh
+
+From the root of the Android source checkout, run:
+
+<pre>
+<code class="devsite-terminal">source build/envsetup.sh</code>
+</pre>
+
+### 2. Run lunch
+
+Run the `$ lunch` command to bring up a menu of supported devices. Find the
+device and run that command.
+
+For example, if you have an ARM device connected, run the following command:
+
+<pre>
+<code class="devsite-terminal">lunch aosp_arm64-eng</code>
+</pre>
+
+This sets various environment variables required for running Atest and adds the
+Atest command to your `$PATH`.
+
+## Basic usage
+
+Atest commands take the following form:
+
+<pre>
+<code class="devsite-terminal">atest [<var>optional-arguments</var>] <var>test-to-run</var></code>
+</pre>
+
+### Optional arguments
+
+You can use the following optional arguments with Atest commands.
+
+| Option | Long option | Description |
+| :----: | :----------------------- | ---------------------------------------- |
+| `-b` | `--build` | Builds test targets. |
+| `-i` | `--install` | Installs test artifacts (APKs) on |
+: : : device. :
+| `-t` | `--test` | Runs the tests. |
+| `-s` | `--serial` | Runs the tests on the specified device. |
+: : : One device can be tested at a time. :
+| `-d` | `--disable-teardown` | Disables test teardown and cleanup. |
+| <c> | `--info` | Shows the relevant info of the specified |
+: : : targets and exits. :
+| <c> | `--dry-run` | A synonym of --info. |
+| `-m` | `--rebuild-module-info` | Forces a rebuild of the module-info.json |
+: : : file. :
+| `-w` | `--wait-for-debugger` | Waits for debugger prior to execution. |
+: : : Only for instrumentation tests. :
+| `-v` | `--verbose` | Displays DEBUG level logging. |
+| <c> | `--generate-baseline` | Generates baseline metrics, runs 5 |
+: : : iterations by default. :
+| <c> | `--generate-new-metrics` | Generates new metrics, run 5 iterations |
+: : : by default. :
+| <c> | `--detect-regression` | Runs regression detection algorithm. |
+| <c> | `--[CUSTOM_ARGS]` | Specifies custom args for the test |
+: : : runners. :
+| `-a` | `--all-abi` | Runs the tests for all available device |
+: : : architectures. :
+| `-h` | `--help` | Shows help message and exits. |
+| <c> | `--host` | Runs the test completely on the host |
+: : : without a device.<br>(Note\: Running a :
+: : : host test that requires a device with :
+: : : --host will fail.) :
+
+For more information on `-b`, `-i` and `-t`, see
+[Specifying steps: build, install, or run.](#specifying_steps_build_install_or_run)
+
+### Tests to run
+
+You can run one or more tests using <var>test-to-run</var>. To run multiple
+tests, separate test references with spaces. For example:
+
+<pre>
+<code class="devsite-terminal">atest <var>test-to-run-1</var> <var>test-to-run-2</var></code>
+</pre>
+
+Here are some examples:
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests</code>
+<code class="devsite-terminal">atest example/reboot</code>
+<code class="devsite-terminal">atest FrameworksServicesTests CtsJankDeviceTestCases</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests</code>
+</pre>
+
+For more information on how to reference a test, see
+[Identifying tests.](#identifying_tests)
+
+## Identifying tests
+
+You can specify the <var>test-to-run</var> argument with the test's module name,
+Module:Class, class name, TF integration test, file path or package name.
+
+### Module name
+
+To run an entire test module, use its module name. Input the name as it appears
+in the `LOCAL_MODULE` or `LOCAL_PACKAGE_NAME` variables in that test's
+`Android.mk` or `Android.bp` file.
+
+Note: Use **TF Integration Test** to run non-module tests integrated directly
+into TradeFed.
+
+Examples:
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests</code>
+<code class="devsite-terminal">atest CtsJankDeviceTestCases</code>
+</pre>
+
+### Module:Class
+
+To run a single class within a module, use **Module:Class**. **Module** is the
+same as described in [Module name](#module_name). **Class** is the name of the
+test class in the `.java` file and can be the fully qualified class name or the
+basic name.
+
+Examples:
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest CtsJankDeviceTestCases:CtsDeviceJankUi</code>
+</pre>
+
+### Class name
+
+To run a single class without explicitly stating a module name, use the class
+name.
+
+Examples:
+
+<pre>
+<code class="devsite-terminal">atest ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest CtsDeviceJankUi</code>
+</pre>
+
+Using the **Module:Class** reference is recommended whenever possible since
+Atest requires more time to search the complete source tree for potential
+matches if no module is stated.
+
+Examples (ordered from fastest to slowest):
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest ScreenDecorWindowTests</code>
+</pre>
+
+### TF integration test
+
+To run tests that are integrated directly into TradeFed (non-modules), input the
+name as it appears in the output of the `tradefed.sh list configs` command. For
+example:
+
+To run the
+[`reboot.xml` test](https://android.googlesource.com/platform/tools/tradefederation/contrib/+/master/res/config/example/reboot.xml){: .external}:
+
+<pre>
+<code class="devsite-terminal">atest example/reboot</code>
+</pre>
+
+To run the
+[`native-benchmark.xml` test](https://android.googlesource.com/platform/tools/tradefederation/+/master/res/config/native-benchmark.xml){: .external}:
+
+<pre>
+<code class="devsite-terminal">atest native-benchmark</code>
+</pre>
+
+### File path
+
+You can run both module-based tests and integration-based tests by inputting the
+path to their test file or directory as appropriate. You can also run a single
+class by specifying the path to the class's Java file. Both relative and
+absolute paths are supported.
+
+Example: Two ways to run the `CtsJankDeviceTestCases` module via path
+
+1. Run module from android <var>repo-root</var>:
+
+ <pre>
+ <code class="devsite-terminal">atest cts/tests/jank</code>
+ </pre>
+
+2. From android <var>repo-root</var>/cts/tests/jank:
+
+ <pre>
+ <code class="devsite-terminal">atest .</code>
+ </pre>
+
+Example: Run a specific class within `CtsJankDeviceTestCases` module via path.
+From android <var>repo-root</var>:
+
+<pre>
+<code class="devsite-terminal">atest cts/tests/jank/src/android/jank/cts/ui/CtsDeviceJankUi.java</code>
+</pre>
+
+Example: Run an integration test via path. From android <var>repo-root</var>:
+
+<pre>
+<code class="devsite-terminal">atest tools/tradefederation/contrib/res/config/example/reboot.xml</code>
+</pre>
+
+### Package name
+
+Atest supports searching tests by package name.
+
+Examples:
+
+<pre>
+<code class="devsite-terminal">atest com.android.server.wm</code>
+<code class="devsite-terminal">atest android.jank.cts</code>
+</pre>
+
+## Specifying steps: Build, install, or run
+
+You can specify which steps to run by using the `-b`, `-i`, and `-t` options. If
+you don't specify an option, then all steps run.
+
+Note: You can run `-b` and `-t` alone, but `-i` needs `-t` to run.
+
+- Build targets only: <code>atest -b <var>test-to-run</var></code>
+- Run tests only: <code>atest -t <var>test-to-run</var></code>
+- Install apk and run tests: <code>atest -it <var>test-to-run</var></code>
+- Build and run, but don't install: <code>atest -bt
+ <var>test-to-run</var></code>
+
+Atest can force a test to skip the cleanup/teardown step. Many tests, such as
+CTS, clean up the device after the test is run, so trying to rerun your test
+with `-t` will fail without the `--disable-teardown` parameter. Use `-d` before
+`-t` to skip the test clean up step and test iteratively.
+
+<pre>
+<code class="devsite-terminal">atest -d <var>test-to-run</var></code>
+<code class="devsite-terminal">atest -t <var>test-to-run</var></code>
+</pre>
+
+Note: `-t` disables both **setup/install** and **teardown/cleanup** of the
+device so you can rerun your test with <code>atest -t
+<var>test-to-run</var></code> as many times as you want.
+
+## Running specific methods
+
+You can run specific methods within a test class. Although the whole module
+needs to be built, this reduces the time needed to run the tests. To run
+specific methods, identify the class using any of the ways supported for
+identifying a class (Module:Class, file path, etc) and append the name of the
+method.
+
+<pre>
+<code class="devsite-terminal">atest <var>reference-to-class</var>#<var>method1</var></code>
+</pre>
+
+You can specify multiple methods with commas.
+
+<pre>
+<code class="devsite-terminal">atest <var>reference-to-class</var>#<var>method1</var>,<var>method2</var>,<var>method3</var></code>
+</pre>
+
+Examples:
+
+<pre>
+<code class="devsite-terminal">atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval</code>
+</pre>
+
+The following two examples show the preferred ways to run a single method,
+`testFlagChange`. These examples are preferred over only using the class name
+because specifying the module or the Java file location allows Atest to find the
+test much faster:
+
+1. Using Module:Class
+
+ <pre>
+ <code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange</code>
+ </pre>
+
+1. From android <var>repo-root</var>
+
+ <pre>
+ <code class="devsite-terminal">atest frameworks/base/services/tests/servicestests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange</code>
+ </pre>
+
+Multiple methods can be run from different classes and modules:
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors</code>
+</pre>
+
+## Running multiple classes
+
+To run multiple classes, separate them with spaces in the same way as running
+multiple tests. Atest builds and runs classes efficiently, so specifying a
+subset of classes in a module improves performance over running the whole
+module.
+
+Examples:
+
+- Two classes in the same module:
+
+ <pre>
+ <code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests</code>
+ </pre>
+
+- Two classes in different modules:
+
+ <pre>
+ <code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests CtsJankDeviceTestCases:CtsDeviceJankUi</code>
+ </pre>
+
+## Running native tests
+
+Atest can run native tests.
+
+Examples:
+
+- Input tests:
+
+ <pre>
+ <code class="devsite-terminal">atest -a libinput_tests inputflinger_tests</code>
+ </pre>
+
+Use `-a` to run the tests for all available device architectures, which in this
+example is armeabi-v7a (ARM 32-bit) and arm64-v8a (ARM 64-bit).
+
+## Detecting metrics regression
+
+You can generate pre-patch or post-patch metrics without running regression
+detection. You can specify the number of iterations, but the default is five.
+
+Examples:
+
+<pre>
+<code class="devsite-terminal">atest <var>test-to-run</var> --generate-baseline <var>[optional-iteration]</var></code>
+<code class="devsite-terminal">atest <var>test-to-run</var> --generate-new-metrics <var>[optional-iteration]</var></code>
+</pre>
+
+Local regression detection can be run in three options:
+
+1. Generate baseline (pre-patch) metrics and place them in a folder. Atest runs
+ the tests through the specified iterations, generates post-patch metrics,
+ and compares those against existing metrics.
+
+ Example:
+
+ <pre>
+ <code class="devsite-terminal">atest <var>test-to-run</var> --detect-regression <var>/path/to/baseline</var> --generate-new-metrics <var>[optional-iteration]</var></code>
+ </pre>
+
+2. Using a folder containing previously generated post-patch metrics, Atest
+ runs the tests _n_ iterations, generates a new set of pre-patch metrics, and
+ compares those against those provided.
+
+ Note: The developer needs to revert the device/tests to pre-patch state to
+ generate baseline metrics.
+
+ Example:
+
+ <pre>
+ <code class="devsite-terminal">atest <var>test-to-run</var> --detect-regression <var>/path/to/new</var> --generate-baseline <var>[optional-iteration]</var></code>
+ </pre>
+
+3. Using two folders containing both pre-patch and post-patch metrics, Atest
+ runs the regression detection algorithm without any tests.
+
+ Example:
+
+ <pre>
+ <code class="devsite-terminal">atest --detect-regression <var>/path/to/baseline</var> <var>/path/to/new</var></code>
+ </pre>
diff --git a/en/compatibility/tests/development/index.md b/en/compatibility/tests/development/index.md
index 12f1b610..6fc66d6c 100644
--- a/en/compatibility/tests/development/index.md
+++ b/en/compatibility/tests/development/index.md
@@ -19,10 +19,16 @@ Book: /_book.yaml
limitations under the License.
-->
-# Test Types and Guidelines
+# Test Development Workflow
To integrate tests into a platform continuous testing service, they should meet
-the following guidelines.
+the guidelines on this page and follow this recommended flow.
+
+1. Use the [Soong build system](https://android.googlesource.com/platform/build/soong/)
+ for [Simple Test Configuration](blueprints).
+1. Employ [Test Mapping](test-mapping) to easily create pre- and post-submit
+ test rules directly in the Android source tree.
+1. Run tests locally using [Atest](atest).
## Test types
diff --git a/en/compatibility/tests/development/instr-app-e2e.md b/en/compatibility/tests/development/instr-app-e2e.md
index b61d6644..11839be1 100644
--- a/en/compatibility/tests/development/instr-app-e2e.md
+++ b/en/compatibility/tests/development/instr-app-e2e.md
@@ -56,8 +56,8 @@ manifest file. If you name the file as `AndroidManifest.xml` and provide it next
to `Android.mk` for your test tmodule, it will get included automatically by the
`BUILD_PACKAGE` core makefile.
-Before proceeding further, it's highly recommended to go through the external
-[documentation on manifest file](https://developer.android.com/guide/topics/manifest/manifest-intro.html)
+Before proceeding further, it's highly recommended to go through the
+[App Manifest Overview](https://developer.android.com/guide/topics/manifest/manifest-intro.html){: .external}
first.
This gives an overview of basic components of a manifest file and their
@@ -156,12 +156,12 @@ sufficient. See [Simple Test Configuration](blueprints.md) for details.
Important: The instructions in this section are needed only for CTS tests or those
that require special setup, such as disabling Bluetooth or collecting sample data.
All other cases can be covered through the
-[Simple Test Configuration](blueprints.md). See the
-[Complex Test Configuration](compatibility/tests/development/test-config) for
+[Simple Test Configuration](blueprints). See the
+[Complex Test Configuration](test-config) for
more details applicable to this section.
-For more complex tests, you also need write a test configuration
-file for Android's test harness, [Trade Federation](https://source.android.com/devices/tech/test_infra/tradefed/).
+For more complex tests, you also need to write a test configuration
+file for Android's test harness, [Trade Federation](/devices/tech/test_infra/tradefed/).
The test configuration can specify special device setup options and default
arguments to supply the test class.
@@ -285,7 +285,7 @@ stored. Through this class, you can also call:
## Build and test locally
For the most common use cases, employ
-[Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md).
+[Atest](/compatibility/tests/development/atest).
For more complex cases requiring heavier customization, follow the
[instrumentation instructions](instrumentation.md).
diff --git a/en/compatibility/tests/development/instr-self-e2e.md b/en/compatibility/tests/development/instr-self-e2e.md
index 6c8885e9..b68a94df 100644
--- a/en/compatibility/tests/development/instr-self-e2e.md
+++ b/en/compatibility/tests/development/instr-self-e2e.md
@@ -95,8 +95,8 @@ manifest file. If you name the file as `AndroidManifest.xml` and provide it next
to `Android.mk` for your test tmodule, it will get included automatically by the
`BUILD_PACKAGE` core makefile.
-Before proceeding further, it's highly recommended to go through the external
-[documentation on manifest file](https://developer.android.com/guide/topics/manifest/manifest-intro.html)
+Before proceeding further, it's highly recommended to go through the
+[App Manifest Overview](https://developer.android.com/guide/topics/manifest/manifest-intro.html){: .external}
first.
This gives an overview of basic components of a manifest file and their
@@ -191,12 +191,12 @@ sufficient. See [Simple Test Configuration](blueprints.md) for details.
Important: The instructions in this section are needed only for CTS tests or those
that require special setup, such as disabling Bluetooth or collecting sample data.
All other cases can be covered through the
-[Simple Test Configuration](blueprints.md). See the
-[Complex Test Configuration](compatibility/tests/development/test-config) for
+[Simple Test Configuration](blueprints). See the
+[Complex Test Configuration](test-config) for
more details applicable to this section.
For these more complex cases, you also need to write a test configuration
-file for Android's test harness, [Trade Federation](https://source.android.com/devices/tech/test_infra/tradefed/).
+file for Android's test harness, [Trade Federation](/devices/tech/test_infra/tradefed/).
The test configuration can specify special device setup options and default
arguments to supply the test class. See the example at
@@ -324,7 +324,7 @@ Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation()
## Build and test locally
For the most common use cases, employ
-[Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md).
+[Atest](/compatibility/tests/development/atest).
For more complex cases requiring heavier customization, follow the
[instrumentation instructions](instrumentation.md).
diff --git a/en/compatibility/tests/development/instrumentation.md b/en/compatibility/tests/development/instrumentation.md
index 70439a7c..6a468758 100644
--- a/en/compatibility/tests/development/instrumentation.md
+++ b/en/compatibility/tests/development/instrumentation.md
@@ -91,8 +91,7 @@ and APIs to manipulate the application process under test.
1. Run the tests:
* The simplest solution is to use
- [Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md){: .external}
- like so:
+ [Atest](/compatibility/tests/development/atest) like so:
```
atest FrameworksCoreTests
diff --git a/en/compatibility/tests/development/native-func-e2e.md b/en/compatibility/tests/development/native-func-e2e.md
index 7f143c3e..a6b03108 100644
--- a/en/compatibility/tests/development/native-func-e2e.md
+++ b/en/compatibility/tests/development/native-func-e2e.md
@@ -173,7 +173,7 @@ arguments to supply the test class.
## Build and test locally
For the most common use cases, employ
-[Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md).
+[Atest](/compatibility/tests/development/atest).
For more complex cases requiring heavier customization, follow the
[instrumentation instructions](instrumentation.md).
diff --git a/en/compatibility/tests/development/native.md b/en/compatibility/tests/development/native.md
index cb798694..399e6664 100644
--- a/en/compatibility/tests/development/native.md
+++ b/en/compatibility/tests/development/native.md
@@ -51,9 +51,7 @@ incremental or full build), e.g.:
```shell
make hwui_unit_tests -j
```
-1. Use
- [Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md)
- to run the test locally:
+1. Use [Atest](/compatibility/tests/development/atest) to run the test locally:
```
atest hwui_unit_tests
diff --git a/en/compatibility/tests/development/test-mapping.md b/en/compatibility/tests/development/test-mapping.md
new file mode 100644
index 00000000..5f843199
--- /dev/null
+++ b/en/compatibility/tests/development/test-mapping.md
@@ -0,0 +1,270 @@
+Project: /_project.yaml
+Book: /_book.yaml
+
+{% include "_versions.html" %}
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+# Test Mapping
+
+This is a brief introduction of Test Mapping and an explanation of how to get
+started configuring tests easily in the Android Open Source Project (AOSP).
+
+## What is Test Mapping?
+
+Test Mapping is a Gerrit-based approach that allows developers to create pre-
+and post-submit test rules directly in the Android source tree and leave the
+decisions of branches and devices to be tested to the test infrastructure
+itself. Test Mapping definitions are JSON files named TEST_MAPPING that can be
+placed in any source directory.
+
+[Atest](atest) can use the TEST_MAPPING files to run presubmit tests in the
+associated directories. With Test Mapping, you can add the same set of tests to
+presubmit checks with a simple change inside the Android source tree.
+
+See these examples:
+
+[Add presubmit tests to TEST_MAPPING for services.core](https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/dex/TEST_MAPPING)
+
+[Add presubmit and postsubmit tests to TEST_MAPPING for startop/iorap](https://android.googlesource.com/platform/frameworks/base/+/master/startop/iorap/TEST_MAPPING)
+
+## Defining test groups
+
+Test Mapping groups tests via a **test group**. The name of a test group can be
+any string. For example, *presubmit* can be for a group of tests to run when
+validating changes. And *postsubmit* tests can be used to validate the
+builds after changes are merged.
+
+## Packaging build script rules
+
+In order for the [Trade Federation Test Harness](/devices/tech/test_infra/tradefed)
+to run Test Mapping's test modules for a given build, these modules must have
+**test_suite** set for [Soong](blueprints) or **LOCAL_COMPATIBILITY_SUITE** set
+for Make to one of these two suites:
+
+* **device-tests** - built against a specific device CPU
+* **general-tests** - built against any application binary interface (ABI)
+
+When in doubt, put gtests in _device-tests_ and APK tests in _general-tests_.
+
+Examples:
+
+```
+Android.bp: test_suites: ["device-tests"],
+Android.mk: LOCAL_COMPATIBILITY_SUITE := device-tests
+```
+
+
+## Creating Test Mapping files
+
+For the directory requiring test coverage, simply add a TEST_MAPPING JSON file
+resembling the example below. These rules will ensure the tests run in presubmit
+checks when any files are touched in that directory or any of its subdirectories.
+
+### Following an example
+
+Here is a sample TEST_MAPPING file:
+
+```
+{
+ "presubmit": [
+ {
+ "name": "CtsWindowManagerDeviceTestCases",
+ "options": [
+ {
+ "include-annotation": "android.platform.test.annotations.RequiresDevice"
+ }
+ ]
+ }
+ ],
+ "postsubmit": [
+ {
+ "name": "CtsWindowManagerDeviceTestCases"
+ }
+ ],
+ "imports": [
+ {
+ "path": "frameworks/base/services/core/java/com/android/server/am"
+ }
+ ]
+}
+```
+
+### Setting attributes
+
+In the above example, `presubmit` and `postsubmit` are the names of each **test
+group**. Note that a test run for `postsubmit` will automatically include all
+tests in the `presubmit` group. See
+[Defining test groups](#defining_test_groups) for more information about test
+groups.
+
+The **name** of the **test module** or **Trade Federation integration test
+name** (resource path to the test XML file, e.g.,
+[uiautomator/uiautomator-demo](https://android.googlesource.com/platform/tools/tradefederation/contrib/+/master/res/config/uiautomator/uiautomator-demo.xml))
+can be set in the value of the `name` attribute. Note the **name** field cannot
+use class `name` or test method `name`. To narrow down the tests to run, you can
+use options such as `include-filter` here. See
+([include-filter sample usage](https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/dex/TEST_MAPPING#7)).
+
+The `imports` attribute allows you to include tests in other TEST_MAPPING files
+without copying the content. Note that the TEST_MAPPING files in the parent
+directories of the imported path will also be included.
+
+The `options` attribute contains additional TradeFed command line options. In
+the above example, only tests with annotation `Presubmit` will run in presubmit;
+all tests will run in postsubmit.
+
+To get a complete list of available options for a given test, run:
+
+<pre>
+<code class="devsite-terminal">tradefed.sh run commandAndExit [test_module] --help</code>
+</pre>
+
+Refer to
+[TradeFed Option Handling ](/devices/tech/test_infra/tradefed/fundamentals/options)
+for more details about how options work.
+
+## Running tests with Atest
+
+To execute the presubmit test rules locally:
+
+1. Go to the directory containing the TEST_MAPPING file.
+1. Run the command:
+
+<pre>
+<code class="devsite-terminal">atest</code>
+</pre>
+
+All presubmit tests configured in the TEST_MAPPING files of the current
+directory and its parent directories are run. Atest will locate and run two tests
+for presubmit (A and B).
+
+This is the simplest way to run presubmit tests in TEST_MAPPING files in the
+current working directory (CWD) and parent directories. Atest will locate and
+use the TEST_MAPPING file in CWD and all of its parent directories, unless a
+TEST_MAPPING file has `inherit_parent` set to false.
+
+### Structuring source code
+
+The following example shows how TEST_MAPPING files can be configured across the
+source tree.
+
+```
+src
+├── project_1
+│ └── TEST_MAPPING
+├── project_2
+│ └── TEST_MAPPING
+└── TEST_MAPPING
+```
+
+Content of `src/TEST_MAPPING`:
+
+```
+{
+ "presubmit": [
+ {
+ "name": "A"
+ }
+ ]
+}
+```
+
+Content of `src/project_1/TEST_MAPPING`:
+
+```
+{
+ "presubmit": [
+ {
+ "name": "B"
+ }
+ ],
+ "postsubmit": [
+ {
+ "name": "C"
+ }
+ ],
+ "other_group": [
+ {
+ "name": "X"
+ }
+ ]}
+```
+
+Content of `src/project_2/TEST_MAPPING`:
+
+```
+{
+ "presubmit": [
+ {
+ "name": "D"
+ }
+ ],
+ "import": [
+ {
+ "path": "src/project_1"
+ }
+ ]}
+```
+
+### Specifying target directories
+
+You can specify a target directory to run tests in TEST_MAPPING files in that
+directory. The following command will run two tests (A, B).
+
+<pre>
+<code class="devsite-terminal">atest --test-mapping src/project_1</code>
+</pre>
+
+### Running postsubmit test rules
+
+You can also use this command to run the postsubmit test rules defined in
+TEST_MAPPING in `src_path` (default to CWD)
+and its parent directories:
+
+<pre>
+<code class="devsite-terminal">atest [--test-mapping] [src_path]:postsubmit</code>
+</pre>
+
+### Identifying test groups
+
+You can specify test groups in the Atest command. Note that presubmit tests are
+part of postsubmit tests, as well. The following command will run all
+**postsubmit** tests related to files in directory src/project_1, which are
+three tests (A, B, C).
+
+Or you can use **:all** to run all tests regardless of group. The following
+command runs four tests (A, B, C, X):
+
+<pre>
+<code class="devsite-terminal">atest --test-mapping src/project_1:all</code>
+</pre>
+
+### Including subdirectories
+
+By default, running tests in TEST_MAPPING with Atest will run only presubmit
+tests configured in the TEST_MAPPING file in CWD (or
+given directory) and its parent directories. If you want to run tests in all
+TEST_MAPPING files in the sub-directories, use the option `--include-subdir` to
+force Atest to include those tests too.
+
+<pre>
+<code class="devsite-terminal">atest --include-subdir</code>
+</pre>
+
+Without the `--include-subdir` option, Atest will run only test A. With the
+`--include-subdir` option, Atest will run two tests (A, B).
diff --git a/en/compatibility/tests/index.md b/en/compatibility/tests/index.md
index ac6bbe60..778d9064 100644
--- a/en/compatibility/tests/index.md
+++ b/en/compatibility/tests/index.md
@@ -44,7 +44,7 @@ Make solution.
### Atest
-[Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md){: .external}
+[Atest](/compatibility/tests/development/atest)
is a command line tool that allows users to build, install and run Android tests
locally. It is the recommended standard for initial testing of your feature.
diff --git a/en/devices/_toc-graphics.yaml b/en/devices/_toc-graphics.yaml
index f249cfaa..dc30a6bd 100644
--- a/en/devices/_toc-graphics.yaml
+++ b/en/devices/_toc-graphics.yaml
@@ -53,3 +53,5 @@ toc:
path: /devices/graphics/test-groups
- title: Integrating with Android CTS
path: /devices/graphics/cts-integration
+- title: Tracing Window Transitions
+ path: /devices/graphics/tracing-win-transitions
diff --git a/en/devices/accessories/headset/usb-headset-spec.html b/en/devices/accessories/headset/usb-headset-spec.html
index 9302fe09..cd5b36af 100644
--- a/en/devices/accessories/headset/usb-headset-spec.html
+++ b/en/devices/accessories/headset/usb-headset-spec.html
@@ -46,6 +46,17 @@ specification only covers mandated basic features:
<li>Function buttons for volume, playback, and call control</li>
</ul>
+<h2 id="terminal-types">USB Audio Class terminal types</h2>
+<p>
+Headphones and headsets must report these USB Audio Class (UAC) terminal types:
+</p>
+
+<ul>
+ <li><strong>Headphones</strong>. Low impedance transducers, &lt; 100 ohms, no
+ microphone: 0x0302</li>
+ <li><strong>Headset</strong>. Low impedance transducers with microphone: 0x0402</li>
+</ul>
+
<h2 id="control-function">Control functions</h2>
<p>Headsets can come with varying number of buttons to control specific
functions, such as volume and play/pause.<p>
diff --git a/en/devices/architecture/vintf/objects.html b/en/devices/architecture/vintf/objects.html
index 825b20d9..3bfeff64 100644
--- a/en/devices/architecture/vintf/objects.html
+++ b/en/devices/architecture/vintf/objects.html
@@ -167,7 +167,7 @@ specify product-specific HALs).</p>
&lt;instance>legacy/0&lt;/instance>
&lt;/interface>
&lt;/hal>
- &lt;!-- NFC is disabled -->
+ &lt;!-- NFC is declared to be disabled -->
&lt;hal override="true">
&lt;name>android.hardware.nfc&lt;/name>
&lt;transport>hwbinder&lt;/transport>
@@ -281,7 +281,8 @@ depending on the <code>format</code> attribute.</dd>
<li><code>true</code>: override other <code>&lt;hal></code> elements with
the same <code>&lt;name></code> and major version. If no
<code>&lt;version></code> or <code>&lt;fqname></code> are in this
- <code>&lt;hal></code> element, then this HAL is disabled.</li>
+ <code>&lt;hal></code> element, then the <code>&lt;hal></code> element
+ declares this HAL to be disabled.</li>
<li><code>false</code>: do not override other <code>&lt;hal></code> elements
with the same <code>&lt;name></code> and major version.</li>
</ul>
diff --git a/en/devices/architecture/vndk/build-system.html b/en/devices/architecture/vndk/build-system.html
index 72737be6..98e95b63 100644
--- a/en/devices/architecture/vndk/build-system.html
+++ b/en/devices/architecture/vndk/build-system.html
@@ -506,18 +506,19 @@ $(call add-clean-step, rm -rf $(TARGET_OUT_VENDOR)/lib/libvndk.so)
</p>
<ul>
- <li>core variant (e.g. <code>/system/lib[64]/libexample.so</code>)</li>
- <li>vendor variant (e.g.
+ <li>Core variant (e.g. <code>/system/lib[64]/libexample.so</code>)</li>
+ <li>Vendor variant (e.g.
<code>/system/lib[64]/vndk[-sp]-${VER}/libexample.so</code>)</li>
<li>VNDK extension (e.g. <code>/vendor/lib[64]/vndk[-sp]/libexample.so</code>)
</li>
</ul>
+
<h4 id="conditional-cflags">Conditional compiler flags</h4>
<p>
The Android build system defines <code>__ANDROID_VNDK__</code> for vendor
- variants (including VNDK extensions) by default. You may guard the code
+ variants and VNDK extensions by default. You may guard the code
with the C preprocessor guards:
</p>
@@ -537,15 +538,18 @@ void vndk_only() { }
In addition to <code>__ANDROID_VNDK__</code>, different <code>cflags</code> or
<code>cppflags</code> may be specified in <code>Android.bp</code>. The
<code>cflags</code> or <code>cppflags</code> specified in
- <code>target.vendor</code> is specific to the vendor variant. For example, the
- following code example is the <code>Android.bp</code> module definition for
+ <code>target.vendor</code> is specific to the vendor variant.
+</p>
+
+<p>
+ For example, the following <code>Android.bp</code> defines
<code>libexample</code> and <code>libexample_ext</code>:
</p>
<pre class="prettyprint">
cc_library {
name: "libexample",
- srcs: ["example.c"],
+ srcs: ["src/example.c"],
vendor_available: true,
vndk: {
enabled: true,
@@ -559,7 +563,7 @@ cc_library {
cc_library {
name: "libexample_ext",
- srcs: ["example.c"],
+ srcs: ["src/example.c"],
vendor: true,
vndk: {
enabled: true,
@@ -573,7 +577,7 @@ cc_library {
</pre>
<p>
- Code listing of <code>example.c</code>:
+ And this is the code listing of <code>src/example.c</code>:
</p>
<pre class="prettyprint">
@@ -593,7 +597,8 @@ void vndk_ext() { }
</pre>
<p>
- Exported symbols for each variant:
+ According to these two files, the build system generates shared libraries
+ with following exported symbols:
</p>
<table>
@@ -618,19 +623,34 @@ void vndk_ext() { }
</tr>
</table>
+
+<h4 id="exported-symbols">Requirements on the exported symbols</h4>
+
<p>
- The VNDK ABI compliance checker compares the ABI of VNDK and VNDK
- extensions to the ABI dumps under <code>prebuilts/abi-dumps/vndk</code>:
+ The <a href="/devices/architecture/vndk/abi-stability">VNDK ABI checker</a>
+ compares the ABI of <em>VNDK vendor variants</em> and
+ <em>VNDK extensions</em> to the reference ABI dumps under
+ <code>prebuilts/abi-dumps/vndk</code>.
</p>
<ul>
- <li>Symbols exported by original VNDK shared libraries must be identical to
- (not the supersets of) the symbols defined in ABI dumps.</li>
- <li>Symbols exported by VNDK extensions must be supersets of the symbols
- defined in ABI dumps.</li>
+ <li>Symbols exported by <em>VNDK vendor variants</em> (e.g.
+ <code>/system/lib[64]/vndk-${VER}/libexample.so</code>) must be identical
+ to (not the supersets of) the symbols defined in ABI dumps.</li>
+
+ <li>Symbols exported by <em>VNDK extensions</em> (e.g.
+ <code>/vendor/lib[64]/vndk/libexample.so</code>) must be supersets of the
+ symbols defined in ABI dumps.</li>
</ul>
-<h4 id="excluding">Excluding source files or shared libs</h4>
+<p>
+ If <em>VNDK vendor variants</em> or <em>VNDK extensions</em> fail to follow
+ the requirements above, VNDK ABI checker emits build errors and stops the
+ build.
+</p>
+
+
+<h4 id="excluding">Excluding source files or shared libraries from vendor variants</h4>
<p>
To exclude source files from the vendor variant, add them to the
@@ -641,7 +661,7 @@ void vndk_ext() { }
<pre class="prettyprint">
cc_library {
- name: "libcond_exclude_example",
+ name: "libexample_cond_exclude",
srcs: ["fwk.c", "both.c"],
shared_libs: ["libfwk_only", "libboth"],
target: {
@@ -654,17 +674,168 @@ cc_library {
</pre>
<p>
- In this example, the core variant of <code>libcond_exclude_example</code>
+ In this example, the core variant of <code>libexample_cond_exclude</code>
includes the code from <code>fwk.c</code> and <code>both.c</code> and depends
on the shared libraries <code>libfwk_only</code> and <code>libboth</code>. The
- vendor variant of <code>libcond_exclude_example</code> includes only the code
+ vendor variant of <code>libexample_cond_exclude</code> includes only the code
from <code>both.c</code> because <code>fwk.c</code> is excluded by the
<code>exclude_srcs</code> property. Similarly,
- <code>libcond_exclude_example</code> depends only on the shared library
+ <code>libexample_cond_exclude</code> depends only on the shared library
<code>libboth</code> because <code>libfwk_only</code> is excluded by the
<code>exclude_shared_libs</code> property.
</p>
+<h4 id="export-headers-from-vndk-extension">Export headers from VNDK extensions</h4>
+
+<p>
+ A VNDK extension may add new classes or new functions to a VNDK shared
+ library. It is suggested to keep those declarations in independent headers
+ and avoid changing the existing headers.
+</p>
+
+<p>
+ For example, a new header file
+ <code>include-ext/example/ext/feature_name.h</code> is created for the VNDK
+ extension <code>libexample_ext</code>:
+</p>
+
+<ul>
+ <li>Android.bp</li>
+ <li><strong>include-ext/example/ext/feature_name.h</strong></li>
+ <li>include/example/example.h</li>
+ <li>src/example.c</li>
+ <li><strong>src/ext/feature_name.c</strong></li>
+</ul>
+
+<p>
+ In the following <code>Android.bp</code>, <code>libexample</code> exports
+ only <code>include</code>, whereas <code>libexample_ext</code> exports both
+ <code>include</code> and <code>include-ext</code>. This ensures
+ <code>feature_name.h</code> won't be incorrectly included by the users of
+ <code>libexample</code>:
+</p>
+
+<pre class="prettyprint">
+cc_library {
+ name: "libexample",
+ srcs: ["src/example.c"],
+ export_include_dirs: ["include"],
+ vendor_available: true,
+ vndk: {
+ enabled: true,
+ },
+}
+
+cc_library {
+ name: "libexample_ext",
+ srcs: [
+ "src/example.c",
+ "src/ext/feature_name.c",
+ ],
+ export_include_dirs: [
+ "include",
+ "include-ext",
+ ],
+ vendor: true,
+ vndk: {
+ enabled: true,
+ extends: "libexample",
+ },
+}
+</pre>
+
+<p>
+ If separating extensions to independent header files is not feasible, an
+ alternative is to add <code>#ifdef</code> guards. However, make sure that all
+ VNDK extension users add the define flags. You may define
+ <code>cc_defaults</code> to add define flags to <code>cflags</code> and link
+ shared libraries with <code>shared_libs</code>.
+</p>
+
+<p>
+ For example, to add a new member function <code>Example2::get_b()</code> to
+ the VNDK extension <code>libexample2_ext</code>, you must modify the existing
+ header file and add a <code>#ifdef</code> guard:
+</p>
+
+<pre class="prettyprint">
+#ifndef LIBEXAMPLE2_EXAMPLE_H_
+#define LIBEXAMPLE2_EXAMPLE_H_
+
+class Example2 {
+ public:
+ Example2();
+
+ void get_a();
+
+#ifdef LIBEXAMPLE2_ENABLE_VNDK_EXT
+ void get_b();
+#endif
+
+ private:
+ void *impl_;
+};
+
+#endif // LIBEXAMPLE2_EXAMPLE_H_
+</pre>
+
+<p>
+ A <code>cc_defaults</code> named <code>libexample2_ext_defaults</code> is
+ defined for the users of <code>libexample2_ext</code>:
+</p>
+
+<pre class="prettyprint">
+cc_library {
+ name: "libexample2",
+ srcs: ["src/example2.cpp"],
+ export_include_dirs: ["include"],
+ vendor_available: true,
+ vndk: {
+ enabled: true,
+ },
+}
+
+cc_library {
+ name: "libexample2_ext",
+ srcs: ["src/example2.cpp"],
+ export_include_dirs: ["include"],
+ vendor: true,
+ vndk: {
+ enabled: true,
+ extends: "libexample2",
+ },
+ cflags: [
+ "-DLIBEXAMPLE2_ENABLE_VNDK_EXT=1",
+ ],
+}
+
+cc_defaults {
+ name: "libexample2_ext_defaults",
+ shared_libs: [
+ "libexample2_ext",
+ ],
+ cflags: [
+ "-DLIBEXAMPLE2_ENABLE_VNDK_EXT=1",
+ ],
+}
+</pre>
+
+<p>
+ The users of <code>libexample2_ext</code> may simply include
+ <code>libexample2_ext_defaults</code> in their <code>defaults</code>
+ property:
+</p>
+
+<pre class="prettyprint">
+cc_binary {
+ name: "example2_user_executable",
+ defaults: ["libexample2_ext_defaults"],
+ vendor: true,
+}
+</pre>
+
+
+
<h3 id="product-packages">Product packages</h3>
<p>
diff --git a/en/devices/architecture/vndk/linker-namespace.html b/en/devices/architecture/vndk/linker-namespace.html
index b0d82512..a460e158 100644
--- a/en/devices/architecture/vndk/linker-namespace.html
+++ b/en/devices/architecture/vndk/linker-namespace.html
@@ -46,7 +46,7 @@ hiding their implementation details within their linker namespaces.</p>
<p>For example, <code>/system/lib[64]/libcutils.so</code> and
<code>/system/lib[64]/vndk-sp-${VER}/libcutils.so</code> are two shared
-libraries. These two libraries may have different symbols. They will be loaded
+libraries. These two libraries may have different symbols. They are loaded
into different linker namespaces so that framework modules can depend on
<code>/system/lib[64]/libcutils.so</code> and SP-HAL shared libraries can
depend on <code>/system/lib[64]/vndk-sp-${VER}/libcutils.so</code>.</p>
@@ -55,7 +55,7 @@ depend on <code>/system/lib[64]/vndk-sp-${VER}/libcutils.so</code>.</p>
public libraries that is exported by a linker namespace and imported into
many linker namespaces. The dependencies of
<code>/system/lib[64]/libc.so</code>, such as <code>libnetd_client.so</code>,
-will be loaded into the namespace in which <code>/system/lib[64]/libc.so</code>
+is loaded into the namespace in which <code>/system/lib[64]/libc.so</code>
resides. Other namespaces won't have accesses to those dependencies. This
mechanism encapsulates the implementation details while providing the public
interfaces.</p>
@@ -69,10 +69,10 @@ interfaces.</p>
<p>The dynamic linker is responsible for loading the shared libraries specified
in <code>DT_NEEDED</code> entries or the shared libraries specified by the
argument of <code>dlopen()</code> or <code>android_dlopen_ext()</code>. In both
-cases, the dynamic linker will find the linker namespace where the caller
+cases, the dynamic linker finds the linker namespace where the caller
resides and try to load the dependencies into the same linker namespace. If
the dynamic linker cannot load the shared library into the specified linker
-namespace, it will ask the <em>linked linker namespace</em> for exported shared
+namespace, it asks the <em>linked linker namespace</em> for exported shared
libraries.</p>
@@ -86,130 +86,408 @@ configuration file looks like:</p>
<pre class="prettyprint">
dir.system = /system/bin
+dir.system = /system/xbin
dir.vendor = /vendor/bin
[system]
-additional.namespaces = sphal
+additional.namespaces = sphal,vndk
namespace.default.isolated = true
-namespace.default.search.paths = /system/${LIB}:/vendor/${LIB}
-namespace.default.permitted.paths = /system/${LIB}:/vendor/${LIB}
+namespace.default.search.paths = /system/${LIB}
+namespace.default.permitted.paths = /system/${LIB}/hw
+namespace.default.asan.search.paths = /data/asan/system/${LIB}:/system/${LIB}
+namespace.default.asan.permitted.paths = /data/asan/system/${LIB}/hw:/system/${LIB}/hw
namespace.sphal.isolated = true
namespace.sphal.visible = true
-namespace.sphal.search.paths = /vendor/${LIB}
-namespace.sphal.permitted.paths = /vendor/${LIB}
-namespace.sphal.links = default
+namespace.sphal.search.paths = /odm/${LIB}:/vendor/${LIB}
+namespace.sphal.permitted.paths = /odm/${LIB}:/vendor/${LIB}
+namespace.sphal.asan.search.paths = /data/asan/odm/${LIB}:/odm/${LIB}
+namespace.sphal.asan.search.paths += /data/asan/vendor/${LIB}:/vendor/${LIB}
+namespace.sphal.asan.permitted.paths = /data/asan/odm/${LIB}:/odm/${LIB}
+namespace.sphal.asan.permitted.paths += /data/asan/vendor/${LIB}:/vendor/${LIB}
+namespace.sphal.links = default,vndk
namespace.sphal.link.default.shared_libs = libc.so:libm.so
+namespace.sphal.link.vndk.shared_libs = libbase.so:libcutils.so
+
+namespace.vndk.isolated = true
+namespace.vndk.search.paths = /system/${LIB}/vndk-sp-29
+namespace.vndk.permitted.paths = /system/${LIB}/vndk-sp-29
+namespace.vndk.links = default
+namespace.vndk.link.default.shared_libs = libc.so:libm.so
[vendor]
namespace.default.isolated = false
namespace.default.search.paths = /vendor/${LIB}:/system/${LIB}
-namespace.default.permitted.paths = /vendor/${LIB}:/system/${LIB}
</pre>
-<p>First, there are several <code>dir.${section}</code> properties at the
-beginning of <code>ld.config.txt</code>:</p>
+<p>The configuration file includes:</p>
-<pre class="prettyprint">
-dir.${section} = /path/to/bin/directory
-</pre>
+<ul>
+ <li>Several directory-section mapping properties at the beginning for the
+ dynamic linker to select the effective section.</li>
-<p>These properties decide which set of rules will be applied to the process.
-For example, if a <em>main executable</em> resides in <code>/system/bin</code>,
-the rules in the <code>[system]</code> section are applied. Similarly, if a
-<em>main executable</em> resides in <code>/vendor/bin</code>, the rules in the
-<code>[vendor]</code> section are applied.</p>
+ <li>
+ Several linker namespaces configuration sections:
-<p>Second, for each section, in addition to the <code>default</code> linker
-namespace, <code>addition.namespaces</code> specifies the extra linker
-namespaces (separated by comma) that will be created by the dynamic
-linker:</p>
+ <ul>
+ <li>Each section contains several namespaces (graph vertices) and several
+ fallback links between namespaces (graph arcs).</li>
-<pre class="prettyprint">
-additional.namespaces = namespace1,namespace2,namespace3
-</pre>
+ <li>Each namespace has its own isolation, search paths, permitted paths,
+ and visibility settings.</li>
+ </ul>
+ </li>
+</ul>
-<p>In the example above, the dynamic linker creates two linker namespaces
-(<code>default</code> and <code>sphal</code>) for the executables in
-<code>/system/bin</code>.</p>
+<p>The tables below describe the meaning of each property in detail.</p>
-<p>Third, for each linker namespace, following properties can be configured:</p>
-<pre class="prettyprint">
-namespace.${name}.search.paths = /path1/${LIB}:/path2/${LIB}
-namespace.${name}.permitted.paths = /path1:/path2
-namespace.${name}.isolated = true|false
-namespace.${name}.links = namespace1,namespace2
-namespace.${name}.link.${other}.shared_libs = lib1.so:lib2.so
-namespace.${name}.link.${other}.allow_all_shared_libs = true
-namespace.${name}.visible = true|false
-</pre>
-<p><code>namespace.${name}.search.paths</code> denotes the directories that
-will be prepended to the library name. Directories are separated by colons.
-<code>${LIB}</code> is a special placeholder. If the process is running a
-32-bit executable, <code>${LIB}</code> is substituted by
-<code>lib</code>. Similarly, if the process is running a 64-bit executable,
-<code>${LIB}</code> is substituted by <code>lib64</code>.</p>
-
-<p>In the example above, if a 64-bit executable in <code>/system/bin</code>
-links with <code>libexample.so</code>, the dynamic linker searches for
-<code>/system/lib64/libexample.so</code> first. If
-<code>/system/lib64/libexample.so</code> is not available, the dynamic
-linker searches for <code>/vendor/lib64/libexample.so</code>.</p>
-
-<p>If <code>namespace.${name}.isolated</code> is <code>true</code>, the
-dynamic linker loads only the shared libraries in the directories specified
-in <code>namespace.${name}.search.paths</code> or the shared libraries under
-the directories specified in
-<code>namespace.${name}.permitted.paths</code>.</p>
-
-<p>In the example above, a shared library that is loaded in the
-<code>sphal</code> linker namespace won't be able to link to shared libraries
-in <code>/system/lib[64]</code> because <code>namespace.sphal.isolated</code>
-is <code>true</code> and <code>/system/lib[64]</code> is in neither
-<code>namespace.sphal.permitted.paths</code> nor
-<code>namespace.sphal.search.paths</code>.</p>
-
-<p><code>namespace.${name}.links</code> specifies a comma-separated list of
-linker namespaces that the <code>${name}</code> linker namespace links to.</p>
-
-<p>In the example above, <code>namespace.sphal.links</code> specifies that the
-<code>sphal</code> linker namespace links to the <code>default</code> linker
-namespace.</p>
-
-<p><code>namespace.${name}.link.${other}.shared_libs</code> specifies the
-shared library names (separated by colons) that may utilize the fallback link.
-If a shared library can't be loaded into the <code>${name}</code> linker
-namespace and its name is in
-<code>namespace.${name}.link.${other}.shared_libs</code>, the dynamic linker
-will try to import the library from the <code>${other}</code> linker
-namespace.</p>
-
-<p>In the example above, <code>namespace.sphal.link.default.shared_libs</code>
-specifies that <code>libc.so</code> and <code>libm.so</code> may be exported by
-the <code>default</code> linker namespace. If a shared library loaded in the
-<code>sphal</code> linker namespace links to <code>libc.so</code> and the
-dynamic linker cannot find <code>libc.so</code> in
-<code>/vendor/lib[64]</code>, the dynamic linker will walk through the
-fallback link and find the <code>libc.so</code> exported by the
-<code>default</code> linker namespace.</p>
-
-<p>If <code>namespace.${name}.link.${other}.allow_all_shared_libs</code> is
-<code>true</code>, all shared library names may utilize the fallback link. If
-a shared library can't be loaded into the <code>${name}</code> linker
-namespace, the dynamic linker will try to import the library from the
-<code>${other}</code> linker namespace.</p>
-
-<p>If <code>namespace.${name}.visible</code> is <code>true</code>, the
-program will be able to obtain a linker namespace handle, which can be passed
-to <code>android_dlopen_ext()</code> later.</p>
-
-<p>In the example above, the <code>namespace.sphal.visible</code> is
-<code>true</code> so that <code>android_load_sphal_library()</code> can
-explicitly ask the dynamic linker to load a shared library in the
-<code>sphal</code> linker namespace.</p>
+<h3 id="directory-section-mapping-property">Directory-section mapping property</h3>
+
+<table>
+ <tr>
+ <th>Property</th>
+ <th>Description</th>
+ <th>Example</th>
+ </tr>
+
+ <tr>
+ <td><p><code>dir.<var>name</var></code></p></td>
+
+ <td>
+ <p>A path to a directory that the <code>[<var>name</var>]</code> section
+ applies to.</p>
+
+ <p>Each property maps the executables under the directory to a linker
+ namespaces configuration section. There might be two (or more) properties
+ with the same <code><var>name</var></code> but point to different
+ directories.</p>
+ </td>
+
+ <td>
+ <p>
+ <code>dir.system = /system/bin</code><br/>
+ <code>dir.system = /system/xbin</code><br/>
+ <code>dir.vendor = /vendor/bin</code><br/>
+ </p>
+
+ <p>This indicates that the configuration specified in the
+ <code>[system]</code> section applies to the executables that are loaded
+ from either <code>/system/bin</code> or <code>/system/xbin</code>.</p>
+
+ <p>The configuration specified in the <code>[vendor]</code> section applies
+ to the executables that are loaded from <code>/vendor/bin</code>.</p>
+ </td>
+ </tr>
+</table>
+
+
+
+<h3 id="relation-properties">Relation properties</h3>
+
+<table>
+ <tr>
+ <th>Property</th>
+ <th>Description</th>
+ <th>Example</th>
+ </tr>
+
+ <tr>
+ <td><code>additional.<wbr/>namespaces</code></td>
+
+ <td>
+ <p>A comma-separated list of additional namespaces (in addition to the
+ <code>default</code> namespace) for the section.</p>
+ </td>
+
+ <td>
+ <p><code>additional.<wbr/>namespaces = sphal,<wbr/>vndk</code></p>
+
+ <p>This indicates there are three namespaces (<code>default</code>,
+ <code>sphal</code>, and <code>vndk</code>) in the <code>[system]</code>
+ configuration.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>links</code></td>
+
+ <td>
+ <p>A comma-separated list of fallback namespaces.</p>
+
+ <p>If a shared library cannot be found in the current namespace, the dynamic
+ linker tries to load the shared library from the fallback namespaces. The
+ namespace specified at the beginning of the list has higher priority.</p>
+
+ <aside class="note">Note: Fallback namespaces are not transitive. For
+ example, namespace <em>A</em> links to namespace <em>B</em> and namespace
+ <em>B</em> links to namespace <em>C</em>. If the dynamic linker can not
+ find the library in namespace <em>A</em>, it ONLY searches namespace
+ <em>B</em>. It doesn't search namespace <em>C</em>.</aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>sphal.<wbr/>links = default,<wbr/>vndk</code></p>
+
+ <p>If a shared library or an executable requests a shared library that
+ cannot be loaded into the <code>sphal</code> namespace, the dynamic linker
+ tries to load the shared library from the <code>default</code>
+ namespace.</p>
+
+ <p>And then, if the shared library cannot be loaded from the
+ <code>default</code> namespace either, the dynamic linker tries to load the
+ shared library from the <code>vndk</code> namespace.</p>
+
+ <p>Finally, if all attempts fail, the dynamic linker returns an error.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>link.<wbr/><var>other</var>.<wbr/>shared_libs</code></td>
+
+ <td>
+ <p>A colon-separated list of shared libraries that can be searched in the
+ <code>other</code> namespaces when those libraries cannot be found in the
+ <code>name</code> namespace.</p>
+
+ <p>This property cannot be used with
+ <code>namespace.<wbr/><var>name</var>.<wbr/>link.<wbr/><var>other</var>.<wbr/>allow_all_shared_libs</code>.</p>
+
+ <aside class="note"><p>Note: This property shares the same underlying
+ implementation with
+ <a href="/devices/tech/config/namespaces_libraries">public.libraries.txt</a>
+ files. Both mechanisms control the imported shared libraries by specifying a
+ link with a library name filter.</p>
+
+ <p>The difference is that <code>ld.config.txt</code> is loaded by the
+ dynamic linker and all namespaces are created when a program starts. On the
+ contrary, <code>libnativeloader</code> creates a linker namespace when the
+ Zygote process is forked and specialized for an application. The namespace
+ for the application native libraries has a link that only allows the library
+ names specified in <code>public.libraries.txt</code>.</p></aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>sphal.<wbr/>link.<wbr/>default.<wbr/>shared_libs = libc.so:<wbr/>libm.so</code></p>
+
+ <p>This indicates that the fallback link only accepts <code>libc.so</code>
+ or <code>libm.so</code> as the requested library name. The dynamic linker
+ ignores the fallback link from <code>sphal</code> to
+ <code>default</code> namespace if the requested library name is not
+ <code>libc.so</code> nor <code>libm.so</code>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>link.<wbr/><var>other</var>.<wbr/>allow_all_shared_libs</code></td>
+
+ <td>
+ <p>A boolean value that indicates whether all shared libraries can be
+ searched in the <code><var>other</var></code> namespace when those libraries cannot
+ be found in the <code><var>name</var></code> namespace.</p>
+
+ <p>This property cannot be used with
+ <code>namespace.<wbr/><var>name</var>.<wbr/>link.<wbr/><var>other</var>.<wbr/>shared_libs</code>.</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>vndk.<wbr/>link.<wbr/>sphal.<wbr/>allow_all_shared_libs = true</code></p>
+
+ <p>This indicates all library names can walk through the fallback link
+ from <code>vndk</code> to <code>sphal</code> namespace.</p>
+ </td>
+ </tr>
+</table>
+
+
+
+<h3 id="namespace-properties">Namespace properties</h3>
+
+<table>
+ <tr>
+ <th>Property</th>
+ <th>Description</th>
+ <th>Example</th>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>isolated</code></td>
+
+ <td>
+ <p>A boolean value that indicates whether the dynamic linker should check
+ where the shared library resides.</p>
+
+ <p>If <code>isolated</code> is <code>true</code>, only the shared libraries
+ that are <em>in</em> one of the <code>search.paths</code> directories
+ (excluding sub-directories) or are <em>under</em> one of the
+ <code>permitted.paths</code> directories (including sub-directories) can be
+ loaded.</p>
+
+ <p>If <code>isolated</code> is <code>false</code> (default), the dynamic
+ linker doesn't check the path of shared libraries.</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>sphal.<wbr/>isolated = true</code></p>
+
+ <p>This indicates that only the shared libraries in
+ <code>search.paths</code> or under <code>permitted.paths</code> can be
+ loaded into the <code>sphal</code> namespace.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>search.paths</code></td>
+
+ <td>
+ <p>A colon-separated list of directories to search for shared
+ libraries.</p>
+
+ <p>The directories specified in <code>search.paths</code> are prepended
+ to the requested library name if function calls to <code>dlopen()</code> or
+ <code>DT_NEEDED</code> entries do not specify the full path. The directory
+ specified at the beginning of the list has higher priority.</p>
+
+ <p>When <code>isolated</code> is <code>true</code>, shared libraries that
+ are <em>in</em> one of the <code>search.paths</code> directories (excluding
+ sub-directories) can be loaded regardless the <code>permitted.paths</code>
+ property.</p>
+
+ <p>For example, if <code>search.paths</code> is
+ <code>/system/${LIB}</code> and <code>permitted.paths</code> is empty,
+ <code>/system/${LIB}/libc.so</code> can be loaded but
+ <code>/system/${LIB}/vndk/libutils.so</code> cannot be loaded.</p>
+
+ <aside class="note">Note: <code>${LIB}</code> is a built-in
+ placeholder. It is replaced by <code>lib</code> for 32-bit processes and
+ <code>lib64</code> for 64-bit processes.</aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>default.<wbr/>search.paths = /system/${LIB}</code></p>
+
+ <p>This indicates that the dynamic linker searches
+ <code>/system/${LIB}</code> for shared libraries.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>asan.search.paths</code></td>
+
+ <td>
+ <p>A colon-separated list of directories to search for shared libraries when
+ <a href="/devices/tech/debug/asan">Address Sanitizer</a> is enabled.</p>
+
+ <p><code>namespace.<wbr/><var>name</var>.<wbr/>search.paths</code> is
+ ignored when <a href="/devices/tech/debug/asan">Address Sanitizer</a> is
+ enabled.</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>default.<wbr/>asan.search.paths = /data/asan/system/${LIB}:<wbr/>/system/${LIB}</code></p>
+
+ <p>This indicates that when
+ <a href="/devices/tech/debug/asan">Address Sanitizer</a> is enabled the
+ dynamic linker searches <code>/data/asan/system/${LIB}</code> first and
+ then searches <code>/system/${LIB}</code>.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>permitted.paths</code></td>
+
+ <td>
+ <p>A colon-separated list of directories (including sub-directories) where
+ the dynamic linker can load the shared libraries (in addition to
+ <code>search.paths</code>) when <code>isolated</code> is
+ <code>true</code>.</p>
+
+ <p>The shared libraries that are under the sub-directories of
+ <code>permitted.paths</code> can be loaded too. For example, if
+ <code>permitted.paths</code> is <code>/system/${LIB}</code>,
+ both <code>/system/${LIB}/libc.so</code> and
+ <code>/system/${LIB}/vndk/libutils.so</code> can be loaded.</p>
+
+ <p>If <code>isolated</code> is <code>false</code>,
+ <code>permitted.paths</code> are ignored and a warning is emitted.</p>
+
+ <aside class="note">Note: <code>permitted.paths</code> are NOT
+ prepended to the requested library names when the dynamic linker is
+ searching for a shared library. Its main purpose is to allow programers to
+ load shared libraries into an isolated namespace by specifying the full path
+ of the shared library.</aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>default.<wbr/>permitted.paths = /system/${LIB}/hw</code></p>
+
+ <p>This indicates that the shared libraries under
+ <code>/system/${LIB}/hw</code> can be loaded into the isolated
+ <code>default</code> namespace.</p>
+
+ <p>For example, without <code>permitted.paths</code>,
+ <code>libaudiohal.so</code> won't be able to load
+ <code>/system/${LIB}/hw/audio.a2dp.default.so</code> into the
+ <code>default</code> namespace.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>asan.permitted.paths</code></td>
+
+ <td>
+ <p>A colon-separated list of directories where the dynamic linker can load
+ the shared libraries when <a href="/devices/tech/debug/asan">Address
+ Sanitizer</a> is enabled.</p>
+
+ <p><code>namespace.<wbr/><var>name</var>.<wbr/>permitted.paths</code> is
+ ignored when <a href="/devices/tech/debug/asan">Address Sanitizer</a> is
+ enabled.</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>default.<wbr/>asan.permitted.paths = /data/asan/system/${LIB}/hw:<wbr/>/system/${LIB}/hw</code></p>
+
+ <p>This indicates that when
+ <a href="/devices/tech/debug/asan">Address Sanitizer</a> is enabled shared
+ libraries under <code>/data/asan/system/${LIB}/hw</code> or
+ <code>/system/${LIB}/hw</code> can be loaded to the isolated
+ <code>default</code> namespace.</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr/><var>name</var>.<wbr/>visible</code></td>
+
+ <td>
+ <p>A boolean value that indicates whether the program (other than
+ <code>libc</code>) can obtain a linker namespace handle with
+ <code>android_get_exported_namespace()</code> and open a shared library in
+ the linker namespace by passing the handle to
+ <code>android_dlopen_ext()</code>.</p>
+
+ <p>If <code>visible</code> is <code>true</code>,
+ <code>android_get_exported_namespace()</code> always returns the handle if
+ the namespace exists.</p>
+
+ <p>If <code>visible</code> is <code>false</code> (default),
+ <code>android_get_exported_namespace()</code> always returns
+ <code>NULL</code> regardless the presence of the namespace. Shared libraries
+ can only be loaded into this namespace if (1) they are requested by another
+ linker namespace that has a fallback link to this namespace or (2) they are
+ requested by other shared libraries or executables in this namespace.</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr/>sphal.<wbr/>visible = true</code></p>
+
+ <p>This indicates that <code>android_get_exported_namespace("sphal")</code>
+ can return a valid linker namespace handle.</p>
+ </td>
+ </tr>
+</table>
@@ -217,11 +495,11 @@ explicitly ask the dynamic linker to load a shared library in the
<h2 id="linker-namespace-isolation">Linker namespace isolation</h2>
-<p>There are three configurations in
+<p>There are three configuration files in
<code>${android-src}/system/core/rootdir/etc</code>. Depending on the value of
<code>PRODUCT_TREBLE_LINKER_NAMESPACES</code>, <code>BOARD_VNDK_VERSION</code>,
and <code>BOARD_VNDK_RUNTIME_DISABLE</code> in <code>BoardConfig.mk</code>,
-different configurations will be selected:</p>
+different configurations are selected:</p>
<table>
<tr>
@@ -282,7 +560,7 @@ BOARD_VNDK_RUNTIME_DISABLE := true
<p>If <code>BOARD_VNDK_RUNTIME_DISABLE</code> is <code>true</code>,
<code>${android-src}/system/core/rootdir/etc/ld.config.vndk_lite.txt</code>
-will be installed.</p>
+is installed.</p>
@@ -436,7 +714,7 @@ processes, which is excerpted from the <code>[system]</code> section in
<code>/product/app</code><br/>
<code>/product/priv-app</code><br/>
<code>/data</code><br/>
- <code>/mnt/expand
+ <code>/mnt/expand</code>
</td>
</tr>
diff --git a/en/devices/graphics/images/winscope_screenshot.png b/en/devices/graphics/images/winscope_screenshot.png
new file mode 100644
index 00000000..23dcb9b0
--- /dev/null
+++ b/en/devices/graphics/images/winscope_screenshot.png
Binary files differ
diff --git a/en/devices/graphics/tracing-win-transitions.html b/en/devices/graphics/tracing-win-transitions.html
new file mode 100644
index 00000000..f86c9741
--- /dev/null
+++ b/en/devices/graphics/tracing-win-transitions.html
@@ -0,0 +1,137 @@
+<html devsite>
+ <head>
+ <title>Tracing Window Transitions</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+ <p>You can trace window transitions with WinScope, which provides infrastructure and tools to
+ record and analyze Window Manager and Surface Flinger states during and after transitions.
+ WinScope records all pertinent system service states to a trace file, which you can use to
+ replay and step through the transition.
+
+ </p>
+
+ <h2 id="capture_trace">Capturing traces</h2>
+ <p>You can capture traces through Quick Settings or ADB on devices running userdebug or eng
+ builds.
+ </p>
+
+ <h3 id="capture_trace_quick_settings">From Quick Settings</h3>
+ <ol>
+ <li><a href="https://developer.android.com/studio/debug/dev-options#enable"
+ class="external">Enable developer options</a></li>
+ <li>Go to <b>Developer options</b> -> <b>Quick settings developer tiles</b></li>
+ <li>Enable WinScope Trace</li>
+ <li>Open Quick Settings</li>
+ <li>Tap <b>Winscope Trace</b> to enable tracing</li>
+ <li>Run window transitions on the device</li>
+ <li>After you are finished, open Quick Settings and tap <b>Winscope Trace</b> to disable
+ tracing
+ </li>
+ </ol>
+ <p>Traces are written to <code>/data/misc/wmtrace/wm_trace.pb</code> and
+ <code>/data/misc/wmtrace/layers_trace.pb</code>. They are also included in any bugreports.
+ </p>
+
+ <h3 id="capture_trace_quick_adb">From ADB</h3>
+ <h4 id="capture_trace_quick_adb_wm">Window Manager trace</h4>
+ <ol>
+ <li>Enable trace
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell cmd window tracing start</pre>
+ </li>
+ <li>Disable trace
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell cmd window tracing stop</pre>
+ </li>
+ <li>Grab trace file
+ <pre class="devsite-terminal devsite-click-to-copy">adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb</pre>
+ </li>
+ </ol>
+ <h4 id="capture_trace_quick_adb_sf">Surface Flinger trace</h4>
+ <ol>
+ <li>Enable trace
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell su root service call SurfaceFlinger 1025 i32 1</pre>
+ </li>
+ <li>Disable trace
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell su root service call SurfaceFlinger 1025 i32 0</pre>
+ </li>
+ <li>Grab trace file
+ <pre class="devsite-terminal devsite-click-to-copy">adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb</pre>
+ </li>
+ </ol>
+
+ <h3 id="capture_trace_gen_state">Generating state dumps</h3>
+ <p><p>WinScope can read a snapshot of Window Manager and Surface Flinger's current state from
+ bugreports. The bugreport stores the states as separate proto files inside the
+ <code>proto</code> folder. To generate the state dumps using ADB, run these commands.</p>
+ <h4 id="window_manager_dump">Window Manager</h4>
+ <pre class="devsite-terminal devsite-click-to-copy">adb exec-out dumpsys window --proto > window_dump.pb</pre>
+ <h4 id="surface_flinger_dump">Surface Flinger</h4>
+ <pre class="devsite-terminal devsite-click-to-copy">adb exec-out dumpsys SurfaceFlinger --proto > sf_dump.pb</pre>
+ </p>
+
+ <h2 id="analyze_traces">Analyzing traces</h2>
+ <p>To analyze a trace file, use the WinScope web app. The app can be built from source or opened
+ from the prebuilt directory.
+ </p>
+ <ol>
+ <li>Download prebuilt artifact from Android source repository
+ <pre class="devsite-terminal devsite-click-to-copy">curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d > winscope.html</pre>
+ </li>
+ <li>Open downloaded artifact in a web browser</li>
+ <li>After WinScope opens, click <b>OPEN FILE</b> to load a trace file</li>
+ </ol>
+
+ <h3 id="using_winscope">Using WinScope</h3>
+ <p>After opening a trace file in WinScope, you can analyze the trace in several ways.</p>
+ <img src="images/winscope_screenshot.png" alt="WinScope Screenshot">
+ <p><em>Timeline</em></p>
+ <p>Use arrow keys or click each entry to navigate through the timeline.</p>
+ <p><em>Screen</em></p>
+ <p>Provides a visual representation of every visible window on the screen. Click a window to
+ select the source window in the hierarchy.</p>
+ <p><em>Hierarchy</em></p>
+ <p>Represents each window known to the system. Some windows do not contain buffers, but
+ exist to set policies on its children. Visible windows are marked with the <code>V</code> icon.
+ </p>
+ <p><em>Properties</em></p>
+ <p>Shows state information for the selected entry in the hierarchy.</p>
+
+ <h2 id="winscope_dev">Developing WinScope</h2>
+ <p>
+ When the trace is enabled, Window Manager and Surface Flinger capture and save current state to
+ a file at each point of interest.
+ <code>frameworks/base/core/proto/android/server/windowmanagertrace.proto</code> and
+ <code>frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto</code> contain the
+ proto definitions for their internal states.
+ </p>
+ <h3 id="winscope_dev_checkout">Checking out code and setting up environment</h3>
+ <ol>
+ <li>Install <a href="https://yarnpkg.com" class="external">Yarn</a>, a JS package manager</li>
+ <li><a href="/setup/build/downloading.html">Download Android source</a></li>
+ <li>Navigate to <code>development/tools/winscope</code></li>
+ <li>Run <pre class="devsite-terminal devsite-click-to-copy">yarn install</pre></li>
+ </ol>
+ <h3 id="winscope_dev_build">Building &amp; testing changes</h3>
+ <ol>
+ <li>Navigate to <code>development/tools/winscope</code></li>
+ <li>Run <pre class="devsite-terminal devsite-click-to-copy">yarn run dev</pre></li>
+ </ol>
+ </body>
+</html>
diff --git a/en/devices/tech/admin/enterprise-telephony.html b/en/devices/tech/admin/enterprise-telephony.html
index 95d73bd0..b1b7abe0 100644
--- a/en/devices/tech/admin/enterprise-telephony.html
+++ b/en/devices/tech/admin/enterprise-telephony.html
@@ -24,16 +24,15 @@
<p>
-This document outlines the changes made to the telephony-related parts of the
-Android framework in the 7.0 release to support enterprise use cases. This
-document is targeted at manufacturers and focuses entirely on framework-related
-telephony changes. In addition, this document outlines the changes that OEMs
-will need to make to their preloaded applications that handle telephony-related
-functions.
+This document outlines the telephony-related parts of the Android framework that
+support enterprise use cases. This document is targeted at manufacturers and
+focuses entirely on framework-related telephony changes. In addition, this
+document outlines the changes that OEMs will need to make to their preloaded
+applications that handle telephony-related functions.
</p>
<p>
-Android 7.0 introduces several new features to support enterprise telephony use
+Android 7.0 introduced several new features to support enterprise telephony use
cases, in particular:
</p>
@@ -41,19 +40,32 @@ cases, in particular:
<li>Cross profile contact search - Allows applications in the personal profile
to search for contacts that are supplied by the managed profile contacts
provider, which can be backed by any datastore, for example local to the device
-or perhaps within an enterprise directory
+or perhaps within an enterprise directory.</li>
<li>Cross profile contact badging - Allows work contacts to be clearly
-distinguished from personal contacts
+distinguished from personal contacts.</li>
<li>Making Connection Service managed profile aware - Allows applications within
the Managed Profile to offer telephony features, such as to provide a separate
work dialer and work ConnectionService</li>
</ul>
+<p>
+Android 5.0 supported the following enterprise telephony feature:
+</p>
+
+<ul>
+<li>Work contact name lookup for telephone numbers using
+<a
+ class="external"
+ href="https://developer.android.com/reference/android/provider/ContactsContract.PhoneLookup#ENTERPRISE_CONTENT_FILTER_URI">
+<code>ENTERPRISE_CONTENT_FILTER_URI</code></a>
+</li>
+</ul>
+
<h2 id="examples-and-source">Examples and source</h2>
<p>
The Android Open Source Project (AOSP) implementations of Dialer, Contacts, and
-Messaging apps have integrated the cross profile contact search and badging
+Messaging apps have integrated the cross profile contact search and badging
capability.
</p>
@@ -76,9 +88,9 @@ for contacts in their Dialer Contacts and SMS/MMS Messaging apps.</p>
<p>
Cross profile contact search should be implemented using the Enterprise Contacts
API (<code>ContactsContract.Contacts.ENTERPRISE_CONTENT_FILTER_URI</code> etc.), which can be found
-in the <a
-href="https://developers.google.com/android/work/overview#contacts">EMM developer's overview</a>
-on the Android EMM Developers site.
+in the
+<a class="external" href="https://developer.android.com/work/contacts">Work
+profile contacts</a> guide on the Android Developers site.
</p>
<h3 id="work-profile-contact-badging">Work profile contact badging</h3>
@@ -86,9 +98,11 @@ on the Android EMM Developers site.
<p>
Work profile contact badging can be implemented by checking
<code>ContactsContract.Directory.isEntepriseDirectoryId()</code> if available or
-<code><a
-href="http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html#isEnterpriseContactId(long)">isEnterpriseContactId</a></code>
-.
+<a
+ class="external"
+ href="http://developer.android.com/reference/android/provider/ContactsContract.Contacts.html#isEnterpriseContactId(long)">
+<code>isEnterpriseContactId()</code></a>. To learn more, see
+<a class="external" href="https://developer.android.com/work/contacts">Work profile contacts</a>.
</p>
<h3 id="managed-profile-aware-connectionservice">Managed Profile Aware
@@ -108,7 +122,8 @@ The cross profile contact search and badging feature can be validated by:
<ol>
<li>Setting up a managed profile on a test device using <a
-href="https://github.com/googlesamples/android-testdpc">TestDPC</a>.
+href="https://github.com/googlesamples/android-testdpc"
+class="external">TestDPC</a>.
<li>Enabling cross profile contact search.
<li>Adding a local work contact within the managed profile.
<li>Searching for that contact within the system Dialer Contacts and SMS/MMS
diff --git a/en/devices/tech/config/update.html b/en/devices/tech/config/update.html
index db1a9cd9..e3c6513a 100644
--- a/en/devices/tech/config/update.html
+++ b/en/devices/tech/config/update.html
@@ -30,22 +30,16 @@ in the Android Open Source Project (AOSP).</p>
<p>To update APN information or your CarrierConfig, you need
to submit the request using a Google Account with an active corporate email
-address (e.g., An APN update request from Acme Company should come from an
+address (e.g., an APN update request from Acme Company should come from an
email address such as <em>foobar@acme.com</em>).</p>
<p>If you do not have a Google Account that links to your corporate email
-address, sign out of all Gmail accounts from your browser (we recommend you use
-a private browsing feature such as an incognito window to avoid confusion with
+address, sign out of all Gmail accounts from your browser (we recommend using
+a private browsing feature, such as an incognito window, to avoid confusion with
your other accounts) and then
-<a href="https://accounts.google.com/SignUpWithoutGmail?hl=en"> create a Google
+<a href="https://accounts.google.com/SignUpWithoutGmail?hl=en">create a Google
account with your corporate email address</a>.</p>
-<!--<ol>-->
- <!--<li>Sign out of all gmail accounts from your browser. (We recommend you use a private browsing
- feature such as an incognito window to avoid confusion with your other accounts.)</li>-->
- <!--<li>Create a Google account with your corporate email address using:
- <a href="https://accounts.google.com/SignUpWithoutGmail?hl=en">
- https://accounts.google.com/SignUpWithoutGmail?hl=en</a></li>-->
-<!--</ol>-->
-<aside class="note"><strong>Note:</strong> Do NOT associate any Gmail accounts with this
+
+<aside class="caution"><strong>Caution:</strong> Do NOT associate any Gmail accounts with this
newly created account.</aside>
<h2 id="local-environment">Prepare a local development environment</h2>
@@ -98,7 +92,7 @@ requesting.</p>
<h2 id="submit-changes">Submit changes</h2>
-<p>When you're ready to make changes, follow these steps:</p>
+<p>To make changes:</p>
<ol>
<li>Identify which file to change.</li>
<li>Make changes to the file.</li>
diff --git a/en/devices/tech/connect/esim-overview.md b/en/devices/tech/connect/esim-overview.md
index 0aa91fcc..11498351 100644
--- a/en/devices/tech/connect/esim-overview.md
+++ b/en/devices/tech/connect/esim-overview.md
@@ -363,8 +363,8 @@ support is disabled.
To implement the LUI, you must provide an activity for the following actions:
-+ `android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS`
-+ `android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION`
++ `android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS`
++ `android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION`
As with the service, each activity must require the
`android.permission.BIND_EUICC_SERVICE` system permission. Each should have an
@@ -380,10 +380,8 @@ For example:
android:exported="true"
android:permission="android.permission.BIND_EUICC_SERVICE">
<intent-filter android:priority="100">
- <action android:name=
- "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" />
- <action android:name=
- "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" />
+ <action android:name="android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" />
+ <action android:name="android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.service.euicc.category.EUICC_UI" />
</intent-filter>
diff --git a/en/legal.html b/en/legal.html
index 181d4bf7..d71ccc0c 100644
--- a/en/legal.html
+++ b/en/legal.html
@@ -40,7 +40,7 @@
style="margin:0;padding:0 2px;vertical-align:baseline" /> logo, and
<a href="http://www.google.com/permissions/">other trademarks</a> are property of Google LLC.</p>
-<p>See the <a href="/setup/brands.html">Brand Guidelines</a> for additional details.</p>
+<p>See the <a href="/setup/start/brands.html">Brand Guidelines</a> for additional details.</p>
<h2 id="WebSite">Web Site Content</h2>
diff --git a/en/security/_toc-bulletins.yaml b/en/security/_toc-bulletins.yaml
index 5914969e..fd95a0ae 100644
--- a/en/security/_toc-bulletins.yaml
+++ b/en/security/_toc-bulletins.yaml
@@ -11,6 +11,8 @@ toc:
section:
- title: 2018 Bulletins
section:
+ - title: December
+ path: /security/bulletin/2018-12-01
- title: November
path: /security/bulletin/2018-11-01
- title: October
@@ -111,6 +113,8 @@ toc:
path: /security/bulletin/pixel/index
- title: 2018 Bulletins
section:
+ - title: December
+ path: /security/bulletin/pixel/2018-12-01
- title: November
path: /security/bulletin/pixel/2018-11-01
- title: October
diff --git a/en/security/apksigning/index.html b/en/security/apksigning/index.html
index 53130c78..2086d0a5 100644
--- a/en/security/apksigning/index.html
+++ b/en/security/apksigning/index.html
@@ -26,9 +26,10 @@
<p>
Application signing allows developers to identify the author of the application
and to update their application without creating complicated interfaces and
-permissions. Every application that is run on the Android platform must be <a
-href="https://developer.android.com/studio/publish/app-signing.html">signed by
-the developer</a>. Applications that attempt to install without being signed
+permissions. Every application that is run on the Android platform must be
+<a class="external" href="https://developer.android.com/studio/publish/app-signing">
+signed by the developer</a>.
+Applications that attempt to install without being signed
will be rejected by either Google Play or the package installer on the Android
device.
</p>
@@ -64,19 +65,19 @@ does not perform CA verification for application certificates.
Applications are also able to declare security permissions at the Signature
protection level, restricting access only to applications signed with the same
key while maintaining distinct UIDs and Application Sandboxes. A closer
-relationship with a shared Application Sandbox is allowed via the <a
-href="https://developer.android.com/guide/topics/manifest/manifest-element.html#uid">shared
-UID feature</a> where two or more applications signed with same developer key
-can declare a shared UID in their manifest.
+relationship with a shared Application Sandbox is allowed via the
+<a class="external" href="https://developer.android.com/guide/topics/manifest/manifest-element#uid">
+shared UID feature</a> where two or more applications signed with same
+developer key can declare a shared UID in their manifest.
</p>
<h2 id="schemes">APK signing schemes</h2>
<p>
Android supports three application signing schemes:</p>
<ul>
<li>v1 scheme: based on JAR signing</li>
- <li>v2 scheme: <a href="/security/apksigning/v2.html">APK Signature Scheme v2</a>,
+ <li>v2 scheme: <a href="/security/apksigning/v2">APK Signature Scheme v2</a>,
which was introduced in Android 7.0.</li>
- <li>v3 scheme: <a href="/security/apksigning/v3.html">APK Signature Scheme v3</a>,
+ <li>v3 scheme: <a href="/security/apksigning/v3">APK Signature Scheme v3</a>,
which was introduced in Android 9.</li>
</ul>
@@ -89,11 +90,12 @@ contain v1 signatures.
</p>
<h3 id="v1">JAR signing (v1 scheme)</h3>
<p>
-APK signing has been a part of Android from the beginning. It is based on <a
+APK signing has been a part of Android from the beginning. It is based on <a class="external"
href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Signed_JAR_File">
-signed JAR</a>. For details on using this scheme, see the Android Studio documentation on
-<a href="https://developer.android.com/studio/publish/app-signing.html">Signing
-your app</a>.
+signed JAR</a>. For details on using this scheme, see the Android Studio
+documentation on
+<a class="external" href="https://developer.android.com/studio/publish/app-signing">
+Signing your app</a>.
</p>
<p>
v1 signatures do not protect some parts of the APK, such as ZIP metadata. The
@@ -110,8 +112,8 @@ scheme) and later. (v2 scheme was updated to v3 in Android P to include
additional information in the signing block, but otherwise works the same.) The
contents of the APK are hashed and signed, then the resulting APK Signing Block
is inserted into the APK. For details on applying the v2+ scheme to an app, see
-<a href="https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2">APK
-Signature Scheme v2</a>.
+<a class="external" href="https://developer.android.com/about/versions/nougat/android-7.0#apk_signature_v2">
+APK Signature Scheme v2</a>.
</p>
<p>
During validation, v2+ scheme treats the APK file as a blob and performs signature
@@ -126,7 +128,7 @@ format can be installed on older Android devices (which simply ignore the extra
data added to the APK), as long as these APKs are also v1-signed.
</p>
<p>
- <img src="../images/apk-validation-process.png" alt="APK signature verification process" id="figure1" />
+ <img src="/security/images/apk-validation-process.png" alt="APK signature verification process" id="figure1" />
</p>
<p class="img-caption"><strong>Figure 1.</strong> APK signature verification
process</p>
@@ -141,7 +143,7 @@ APK was v2-signed, which makes Android 7.0 and newer refuse to verify APKs
using their v1 signatures.
</p>
-<p>For details on the APK signature verification process, see the <a href="v2.html#verification">
+<p>For details on the APK signature verification process, see the <a href="/security/apksigning/v2#verification">
Verification section</a> of APK Signature Scheme v2.</p>
</body>
diff --git a/en/security/bulletin/2018-12-01.html b/en/security/bulletin/2018-12-01.html
new file mode 100644
index 00000000..ac427bb9
--- /dev/null
+++ b/en/security/bulletin/2018-12-01.html
@@ -0,0 +1,848 @@
+<html devsite>
+ <head>
+ <title>Android Security Bulletin—December 2018</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>Published December 3, 2018 | Updated December 5, 2018</em></p>
+
+<p>
+The Android Security Bulletin contains details of security vulnerabilities
+affecting Android devices. Security patch levels of 2018-12-05 or later address
+all of these issues. To learn how to check a device's security patch level, see
+<a href="https://support.google.com/pixelphone/answer/4457705"
+ class="external">Check and update your Android version</a>.
+</p>
+<p>Android partners are notified of all issues at least a month before
+publication. Source code patches for these issues have been released to the
+Android Open Source Project (AOSP) repository and linked from this bulletin.
+This bulletin also includes links to patches outside of AOSP.</p>
+<p>
+The most severe of these issues is a critical security vulnerability in Media
+framework that could enable a remote attacker using a specially crafted file to
+execute arbitrary code within the context of a privileged process. The
+<a href="/security/overview/updates-resources.html#severity">severity
+assessment</a> is based on the effect that exploiting the vulnerability would
+possibly have on an affected device, assuming the platform and service
+mitigations are turned off for development purposes or if successfully bypassed.
+</p>
+<p>
+We have had no reports of active customer exploitation or abuse of these newly
+reported issues. Refer to the
+<a href="#mitigations">Android and Google Play Protect mitigations</a>
+section for details on the
+<a href="/security/enhancements/">Android security platform protections</a>
+and Google Play Protect, which improve the security of the Android platform.
+</p>
+<p class="note">
+<strong>Note:</strong> Information on the latest over-the-air update (OTA) and
+firmware images for Google devices is available in the
+<a href="/security/bulletin/pixel/2018-12-01">December 2018
+Pixel&hairsp;/&hairsp;Nexus Security Bulletin</a>.
+</p>
+
+<h2 id="mitigations">Android and Google service mitigations</h2>
+
+<p>
+This is a summary of the mitigations provided by the
+<a href="/security/enhancements/">Android security platform</a>
+and service protections such as
+<a href="https://www.android.com/play-protect" class="external">Google Play
+Protect</a>. These capabilities reduce the likelihood that security
+vulnerabilities could be successfully exploited on Android.
+</p>
+<ul>
+<li>Exploitation for many issues on Android is made more difficult by
+enhancements in newer versions of the Android platform. We encourage all users
+to update to the latest version of Android where possible.</li>
+<li>The Android security team actively monitors for abuse through
+<a href="https://www.android.com/play-protect" class="external">Google Play
+Protect</a> and warns users about
+<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">Potentially
+Harmful Applications</a>. Google Play Protect is enabled by default on devices
+with <a href="http://www.android.com/gms" class="external">Google Mobile
+Services</a>, and is especially important for users who install apps from
+outside of Google Play.</li>
+</ul>
+<h2 id="2018-12-01-details">2018-12-01 security patch level vulnerability details</h2>
+<p>
+In the sections below, we provide details for each of the security
+vulnerabilities that apply to the 2018-12-01 patch level. Vulnerabilities are
+grouped under the component they affect. There is a description of the
+issue and a table with the CVE, associated references,
+<a href="#type">type of vulnerability</a>,
+<a href="/security/overview/updates-resources.html#severity">severity</a>,
+and updated AOSP versions (where applicable). When available, we link the public
+change that addressed the issue to the bug ID, such as the AOSP change list. When
+multiple changes relate to a single bug, additional references are linked to
+numbers following the bug ID.
+</p>
+
+<h3 id="framework">Framework</h3>
+
+<p>The most severe vulnerability in this section could enable a local malicious
+application to execute arbitrary code within the context of a privileged
+process.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9547</td>
+ <td><a
+ href="https://android.googlesource.com/platform/frameworks/native/+/e6eb42cb2e57747e52e488d54da314bc6eabb546"
+ class="external">A-114223584</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9548</td>
+ <td><a
+ href="https://android.googlesource.com/platform/frameworks/base/+/c97efaa05124e020d7cc8c6e08be9c3b55ac4ea7" class="external">A-112555574</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+</table>
+
+<h3 id="media-framework">Media framework</h3>
+<p>The most severe vulnerability in this section could enable a remote attacker
+using a specially crafted file to execute arbitrary code within the context of
+a privileged process.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9549</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/aac/+/6f6d220a3255e7cbd31bcd1220ffb83af0a2779a"
+ class="external">A-112160868</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9550</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/aac/+/ce97e7d55e1f69683b5bc8f19cc8da8c85bc2cd4"
+ class="external">A-112660981</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9551</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/aac/+/0e5db9fee912d367a572b88f0d86f9a33006fa29"
+ class="external">A-112891548</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9552</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/libhevc/+/d15da6f960dd2d5b77faced4e799f8bf53785d9c"
+ class="external">A-113260892</a></td>
+ <td>ID</td>
+ <td>Critical</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9553</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/libvpx/+/c4c92b2c6ed72a78ea430c3cdce564ec11866a24"
+ class="external">A-116615297</a></td>
+ <td>RCE</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9538</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/v4l2_codec2/+/0a7d252adb774338c2c69a17651aceca3aec1b23"
+ class="external">A-112181526</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9554</td>
+ <td><a
+ href="https://android.googlesource.com/platform/frameworks/av/+/16f9b39c69626093ae9225b458739707c9a3b4e7"
+ class="external">A-114770654</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</table>
+
+<h3 id="system">System</h3>
+<p>The most severe vulnerability in this section could enable a remote attacker
+using a specially crafted transmission to execute arbitrary code within the
+context of a privileged process.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9555</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/02fc52878d8dba16b860fbdf415b6e4425922b2c"
+ class="external">A-112321180</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9556</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/update_engine/+/840a7eae5a6d8250490e8ea430193531f0c4ccd6"
+ class="external">A-113118184</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9557</td>
+ <td>A-35385357<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9558</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/nfc/+/ce7fcb95d5111ad8c554e7ec8ff02f9b40196cdc"
+ class="external">A-112161557</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9559</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/vold/+/c2e37da22aadcdb4a5b7f61a61f824ab8e9b8af9"
+ class="external">A-112731440</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9560</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/9009da96e00434501d9398bbfbc636902c757632"
+ class="external">A-79946737</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9562</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/1bb14c41a72978c6075c5753a8301ddcbb10d409"
+ class="external">A-113164621</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9566</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/314336a22d781f54ed7394645a50f74d6743267d"
+ class="external">A-74249842</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+</table>
+
+<h2 id="2018-12-05-details">2018-12-05 security patch level vulnerability details</h2>
+
+<p>
+In the sections below, we provide details for each of the security
+vulnerabilities that apply to the 2018-12-05 patch level. Vulnerabilities are
+grouped under the component they affect and include details such as the
+CVE, associated references, <a href="#type">type of vulnerability</a>,
+<a href="/security/overview/updates-resources.html#severity">severity</a>,
+component (where applicable), and updated AOSP versions (where applicable). When
+available, we link the public change that addressed the issue to the bug ID,
+such as the AOSP change list. When multiple changes relate to a single bug,
+additional references are linked to numbers following the bug ID.
+</p>
+
+<h3 id="system-05">System</h3>
+
+<p>The most severe vulnerability in this section could lead to remote
+information disclosure with no additional execution privileges needed.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9565</td>
+ <td>A-16680558<a href="#asterisk">*</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>OMA-DM</td>
+ </tr>
+</table>
+
+<h3 id="htc-components">HTC components</h3>
+
+<p>The most severe vulnerability in this section could enable a local attacker
+to bypass user interaction requirements in order to gain access to additional
+permissions.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9567</td>
+ <td>A-65543936<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>Bootloader</td>
+ </tr>
+</table>
+
+<h3 id="kernel-components">Kernel components</h3>
+
+<p>The most severe vulnerability in this section could enable a local attacker
+to execute arbitrary code within the context of a privileged process.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10840</td>
+ <td>A-116406508<br />
+<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>ext4 filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9568</td>
+ <td>A-113509306<br />
+<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/core/sock.c?id=9d538fa60bad4f7b23193c89e843797a1cf71ef3">Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>network</td>
+ </tr>
+</table>
+
+<h3 id="qualcomm-components">Qualcomm components</h3>
+
+<p>These vulnerabilities affect Qualcomm components and are described in
+further detail in the appropriate Qualcomm security bulletin or security alert.
+The severity assessment of these issues is provided directly by Qualcomm.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11960</td>
+ <td>A-114042002<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=18ce15db603e19cfac9a2f4076f255e879100495">QC-CR#2264832</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>HWEngines</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11961</td>
+ <td>A-114040881<br />
+<a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=c57ee0a5d3261ab20c35b451d1b3ae2b02a21591">QC-CR#2261813</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>GPS_AP_LINUX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11963</td>
+ <td>A-114041685<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c9ac3476a91c384a3f2760fabaecef0ad8698d7b">QC-CR#2220770</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Automotive Multimedia</td>
+ </tr>
+</table>
+
+<h3 id="qualcomm-closed-source-components">Qualcomm closed-source components</h3>
+
+<p>These vulnerabilities affect Qualcomm components and are described in
+further detail in the appropriate Qualcomm security bulletin or security
+alert. The severity assessment of these issues is provided directly by
+Qualcomm.</p>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-8248</td>
+ <td>A-78135902<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11004</td>
+ <td>A-66913713<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18141</td>
+ <td>A-67712316<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5913</td>
+ <td>A-79419833<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11279</td>
+ <td>A-109678200<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18319</td>
+ <td>A-78284753<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18321</td>
+ <td>A-78283451<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18322</td>
+ <td>A-78285196<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18323</td>
+ <td>A-78284194<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18324</td>
+ <td>A-78284517<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18327</td>
+ <td>A-78240177<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18331</td>
+ <td>A-78239686<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18332</td>
+ <td>A-78284545<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18160</td>
+ <td>A-109660689<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18326</td>
+ <td>A-78240324<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8276</td>
+ <td>A-68141338<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18328</td>
+ <td>A-78286046<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18329</td>
+ <td>A-73539037<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18330</td>
+ <td>A-73539235<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3595</td>
+ <td>A-71501115<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18320</td>
+ <td>A-33757308<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11999</td>
+ <td>A-74236942<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5867</td>
+ <td>A-77485184<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5868</td>
+ <td>A-77484529<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5869</td>
+ <td>A-33385206<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-79419639<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5915</td>
+ <td>A-79420511<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11267</td>
+ <td>A-109678338<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11922</td>
+ <td>A-112279564<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+</table>
+
+<h2 id="common-questions-and-answers">Common questions and answers</h2>
+
+<p>This section answers common questions that may occur after reading this
+bulletin.</p>
+<p><strong>1. How do I determine if my device is updated to address these
+issues?</strong></p>
+<p>To learn how to check a device's security patch level, see
+<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices"
+ class="external">Check and update your Android version</a>.</p>
+<ul>
+<li>Security patch levels of 2018-12-01 or later address all issues associated
+with the 2018-12-01 security patch level.</li>
+<li>Security patch levels of 2018-12-05 or later address all issues associated
+with the 2018-12-05 security patch level and all previous patch levels.</li>
+</ul>
+<p>Device manufacturers that include these updates should set the patch string
+level to:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2018-12-01]</li>
+ <li>[ro.build.version.security_patch]:[2018-12-05]</li>
+</ul>
+<p><strong>2. Why does this bulletin have two security patch levels?</strong></p>
+<p>
+This bulletin has two security patch levels so that Android partners have the
+flexibility to fix a subset of vulnerabilities that are similar across all
+Android devices more quickly. Android partners are encouraged to fix all issues
+in this bulletin and use the latest security patch level.
+</p>
+<ul>
+<li>Devices that use the 2018-12-01 security patch level must include all
+issues associated with that security patch level, as well as fixes for all
+issues reported in previous security bulletins.</li>
+<li>Devices that use the security patch level of 2018-12-05 or newer must
+include all applicable patches in this (and previous) security
+bulletins.</li>
+</ul>
+<p>
+Partners are encouraged to bundle the fixes for all issues they are addressing
+in a single update.
+</p>
+<p id="type">
+<strong>3. What do the entries in the <em>Type</em> column mean?</strong>
+</p>
+<p>
+Entries in the <em>Type</em> column of the vulnerability details table
+reference the classification of the security vulnerability.
+</p>
+<table>
+ <col width="25%">
+ <col width="75%">
+ <tr>
+ <th>Abbreviation</th>
+ <th>Definition</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>Remote code execution</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>Elevation of privilege</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>Information disclosure</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>Denial of service</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>Classification not available</td>
+ </tr>
+</table>
+<p>
+<strong>4. What do the entries in the <em>References</em> column mean?</strong>
+</p>
+<p>
+Entries under the <em>References</em> column of the vulnerability details table
+may contain a prefix identifying the organization to which the reference value
+belongs.
+</p>
+<table>
+ <col width="25%">
+ <col width="75%">
+ <tr>
+ <th>Prefix</th>
+ <th>Reference</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android bug ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm reference number</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek reference number</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA reference number</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom reference number</td>
+ </tr>
+</table>
+<p id="asterisk">
+<strong>5. What does a * next to the Android bug ID in the <em>References</em>
+column mean?</strong>
+</p>
+<p>
+Issues that are not publicly available have a * next to the Android bug ID in
+the <em>References</em> column. The update for that issue is generally
+contained in the latest binary drivers for Pixel&hairsp;/&hairsp;Nexus devices
+available from the
+<a href="https://developers.google.com/android/drivers" class="external">Google
+Developer site</a>.
+</p>
+<p>
+<strong>6. Why are security vulnerabilities split between this bulletin and
+device&hairsp;/&hairsp;partner security bulletins, such as the
+Pixel&hairsp;/&hairsp;Nexus bulletin?</strong>
+</p>
+<p>
+Security vulnerabilities that are documented in this security bulletin are
+required to declare the latest security patch level on Android
+devices. Additional security vulnerabilities that are documented in the
+device&hairsp;/&hairsp;partner security bulletins are not required for
+declaring a security patch level. Android device and chipset manufacturers are
+encouraged to document the presence of other fixes on their devices through
+their own security websites, such as the
+<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>, or
+<a href="/security/bulletin/pixel/"
+ class="external">Pixel&hairsp;/&hairsp;Nexus</a> security bulletins.
+</p>
+
+<h2 id="versions">Versions</h2>
+
+<table>
+ <col width="25%">
+ <col width="25%">
+ <col width="50%">
+ <tr>
+ <th>Version</th>
+ <th>Date</th>
+ <th>Notes</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>December 3, 2018</td>
+ <td>Bulletin published</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>December 5, 2018</td>
+ <td>Bulletin revised to include AOSP links.</td>
+ </tr>
+</table>
+</body></html>
diff --git a/en/security/bulletin/2018.html b/en/security/bulletin/2018.html
index 8feee59b..3eeceac6 100644
--- a/en/security/bulletin/2018.html
+++ b/en/security/bulletin/2018.html
@@ -36,6 +36,20 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<th>Published date</th>
<th>Security patch level</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">December 2018</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 3, 2018</td>
+ <td>2018-12-01<br>
+ 2018-12-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-11-01.html">November 2018</a></td>
<td>
diff --git a/en/security/bulletin/_translation.yaml b/en/security/bulletin/_translation.yaml
index 7ff6379d..1a07c4e8 100644
--- a/en/security/bulletin/_translation.yaml
+++ b/en/security/bulletin/_translation.yaml
@@ -53,7 +53,7 @@ language:
cc:
- daroberts@google.com
- sac-doc-leads+translation@google.com
-- shaileshs@google.com
+- lhaviland@google.com
reviewer:
- daroberts
product: Android
diff --git a/en/security/bulletin/index.html b/en/security/bulletin/index.html
index 3b13b8df..6fdea4d0 100644
--- a/en/security/bulletin/index.html
+++ b/en/security/bulletin/index.html
@@ -36,13 +36,6 @@ vulnerability details specific to their products, such as:</p>
<li><a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a></li>
</ul>
-<h3 id="notification">Notifications</h3>
-<p>To get notifications when a new Android bulletin is published, join the
-<a href="https://groups.google.com/forum/#!forum/android-security-updates">Android
-Security Updates group</a>, and set your email delivery preference to receive
-all updates.
-</p>
-
<h3 id="sources">Sources</h3>
<p>Fixes listed in the public bulletin come from various different sources: the
@@ -68,7 +61,20 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<th>Published date</th>
<th>Security patch level</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">December 2018</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <td>December 3, 2018</td>
+ <td>2018-12-01<br>
+ 2018-12-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-11-01.html">November 2018</a></td>
<td>
<a href="/security/bulletin/2018-11-01.html">English</a>&nbsp;/
diff --git a/en/security/bulletin/pixel/2018-12-01.html b/en/security/bulletin/pixel/2018-12-01.html
new file mode 100644
index 00000000..3be66d93
--- /dev/null
+++ b/en/security/bulletin/pixel/2018-12-01.html
@@ -0,0 +1,325 @@
+<html devsite>
+ <head>
+ <title>Pixel&hairsp;/&hairsp;Nexus Security Bulletin—December 2018</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p><em>Published December 3, 2018</em></p>
+
+<p>
+The Pixel&hairsp;/&hairsp;Nexus Security Bulletin contains details of security
+vulnerabilities and functional improvements affecting <a
+href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices"
+class="external">supported Google Pixel and Nexus devices</a> (Google devices).
+For Google devices, security patch levels of 2018-12-05 or later address all
+issues in this bulletin and all issues in the December 2018 Android Security
+Bulletin. To learn how to check a device's security patch level, see <a
+href="https://support.google.com/pixelphone/answer/4457705"
+class="external">Check & update your Android version</a>.
+</p>
+<p>
+All supported Google devices will receive an update to the 2018-12-05 patch
+level. We encourage all customers to accept these updates to their devices.
+</p>
+<p class="note">
+<strong>Note:</strong> The Google device firmware images are available on the
+<a href="https://developers.google.com/android/images" class="external">Google
+Developer site</a>.
+</p>
+
+<h2 id="announcements">Announcements</h2>
+
+<p>In addition to the security vulnerabilities described in the
+<a href="/security/bulletin/2018-12-01">December 2018 Android Security
+Bulletin</a>, Google devices also contain patches for the security
+vulnerabilities described below. Partners were notified of these issues at
+least a month ago and may choose to incorporate them as part of their device
+updates.
+</p>
+
+<h2 id="security-patches">Security patches</h2>
+<p>
+Vulnerabilities are grouped under the component they affect. There is a
+description of the issue and a table with the CVE, associated references,
+<a href="#type">type of vulnerability</a>,
+<a href="/security/overview/updates-resources#severity">severity</a>,
+and updated Android Open Source Project (AOSP) versions (where applicable).
+When available, we link the public change that addressed the issue to the bug
+ID, such as the AOSP change list. When multiple changes relate to a single bug,
+additional references are linked to numbers following the bug ID.
+</p>
+
+<h3 id="qualcomm-components">Qualcomm components</h3>
+
+<table>
+<col width="21%">
+<col width="21%">
+<col width="14%">
+<col width="14%">
+<col width="30%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11987</td>
+ <td>A-70638103<br />
+<a
+href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=5e9ffcfa152ecb2832990c42fcd8a0f2e63c2c04">
+QC-CR#2258691</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>ION</td>
+ </tr>
+</table>
+
+<h2 id="functional-patches">Functional patches</h2>
+
+<p>The functional patches are included for affected Pixel devices to address
+functionality issues not related to the security of Pixel devices. The patches
+listed in the table below include associated references, the affected category,
+and the affected devices.</p>
+
+<table>
+<col width="15%">
+<col width="15%">
+<col width="40%">
+<col width="30%">
+ <tr>
+ <th>References</th>
+ <th>Category</th>
+ <th>Improvements</th>
+ <th>Devices</th>
+ </tr>
+ <tr>
+ <td>A-112646910</td>
+ <td>Security</td>
+ <td>Improved pattern unlock recognition after reset</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-117522738</td>
+ <td>Performance</td>
+ <td>Improved memory performance in certain circumstances</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-110969183</td>
+ <td>Camera</td>
+ <td>Improved camera capture performance</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111008450</td>
+ <td>Pixel Stand</td>
+ <td>Improved notification visibility when using Pixel Stand</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112376366</td>
+ <td>Android Auto</td>
+ <td>Improved Android Auto compatibility</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115666282</td>
+ <td>Camera</td>
+ <td>Adjusted autofocus behavior</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115624433</td>
+ <td>Pixel Stand</td>
+ <td>Improved hotword performance when using Pixel Stand</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-116758282</td>
+ <td>Display</td>
+ <td>Improved Always On Display triggering</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111964925</td>
+ <td>Audio</td>
+ <td>Improved USB-C Audio accessory detection</td>
+ <td>Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111716107</td>
+ <td>Bluetooth</td>
+ <td>Adjusted volume behavior when toggling Bluetooth</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111159723</td>
+ <td>Android Auto</td>
+ <td>Improved audio performance for when using Android Auto in certain vehicles</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112228430</td>
+ <td>Media</td>
+ <td>Improved contouring on HDR color on certain media apps</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-113151604</td>
+ <td>Camera</td>
+ <td>Improved camera shutter performance</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111277984</td>
+ <td>Performance</td>
+ <td>Improve unlocking performance when using Bluetooth</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+</table>
+
+<h2 id="common-questions-and-answers">Common questions and answers</h2>
+<p>
+This section answers common questions that may occur after reading this
+bulletin.
+</p>
+<p>
+<strong>1. How do I determine if my device is updated to address these issues?
+</strong>
+</p>
+<p>
+Security patch levels of 2018-12-05 or later address all issues associated with
+the 2018-12-05 security patch level and all previous patch levels. To learn how
+to check a device's security patch level, read the instructions on the <a
+href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices"
+class="external">Pixel and Nexus update schedule</a>.
+</p>
+<p id="type">
+<strong>2. What do the entries in the <em>Type</em> column mean?</strong>
+</p>
+<p>
+Entries in the <em>Type</em> column of the vulnerability details table reference
+the classification of the security vulnerability.
+</p>
+<table>
+ <col width="25%">
+ <col width="75%">
+ <tr>
+ <th>Abbreviation</th>
+ <th>Definition</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>Remote code execution</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>Elevation of privilege</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>Information disclosure</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>Denial of service</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>Classification not available</td>
+ </tr>
+</table>
+<p>
+<strong>3. What do the entries in the <em>References</em> column mean?</strong>
+</p>
+<p>
+Entries under the <em>References</em> column of the vulnerability details table
+may contain a prefix identifying the organization to which the reference value
+belongs.
+</p>
+<table>
+ <col width="25%">
+ <col width="75%">
+ <tr>
+ <th>Prefix</th>
+ <th>Reference</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android bug ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm reference number</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek reference number</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA reference number</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom reference number</td>
+ </tr>
+</table>
+<p id="asterisk">
+<strong>4. What does a * next to the Android bug ID in the <em>References</em>
+column mean?</strong>
+</p>
+<p>
+Issues that are not publicly available have a * next to the Android bug ID in
+the <em>References</em> column. The update for that issue is generally contained
+in the latest binary drivers for Pixel&hairsp;/&hairsp;Nexus devices available
+from the <a href="https://developers.google.com/android/drivers"
+class="external">Google Developer site</a>.
+</p>
+<p>
+<strong>5. Why are security vulnerabilities split between this bulletin and the
+Android Security Bulletins?</strong>
+</p>
+<p>
+Security vulnerabilities that are documented in the Android Security Bulletins
+are required to declare the latest security patch level on Android
+devices. Additional security vulnerabilities, such as those documented in this
+bulletin are not required for declaring a security patch level.
+</p>
+<h2 id="versions">Versions</h2>
+<table>
+ <col width="25%">
+ <col width="25%">
+ <col width="50%">
+ <tr>
+ <th>Version</th>
+ <th>Date</th>
+ <th>Notes</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>December 3, 2018</td>
+ <td>Bulletin published.</td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/en/security/bulletin/pixel/2018.html b/en/security/bulletin/pixel/2018.html
index a7854882..a1cace8f 100644
--- a/en/security/bulletin/pixel/2018.html
+++ b/en/security/bulletin/pixel/2018.html
@@ -38,7 +38,20 @@ Bulletins</a> homepage.</p>
<th>Published date</th>
<th>Security patch level</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">December 2018</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 3, 2018</td>
+ <td>2018-12-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/pixel/2018-11-01.html">November 2018</a></td>
<td>
<a href="/security/bulletin/pixel/2018-11-01.html">English</a>&nbsp;/
diff --git a/en/security/bulletin/pixel/index.html b/en/security/bulletin/pixel/index.html
index f89274e6..a32aa036 100644
--- a/en/security/bulletin/pixel/index.html
+++ b/en/security/bulletin/pixel/index.html
@@ -58,7 +58,20 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<th>Published date</th>
<th>Security patch level</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">December 2018</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 3, 2018</td>
+ <td>2018-12-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/pixel/2018-11-01.html">November 2018</a></td>
<td>
<a href="/security/bulletin/pixel/2018-11-01.html">English</a>&nbsp;/
diff --git a/en/security/overview/acknowledgements.html b/en/security/overview/acknowledgements.html
index d63ad8f0..b6f7074e 100644
--- a/en/security/overview/acknowledgements.html
+++ b/en/security/overview/acknowledgements.html
@@ -37,6 +37,60 @@ Rewards</a> program.</p>
<p>In 2018, the security acknowledgements are listed by month. In prior years,
acknowledgements were listed together.</p>
+<h4 id="dec-2018">December</h4>
+
+<table>
+ <tr>
+ <th>Researchers</th>
+ <th>CVEs</th>
+ </tr>
+ <tr>
+ <td>Baozeng Ding (<a href="https://twitter.com/sploving1" class="external">@sploving1</a>)
+ </td>
+ <td>CVE-2017-18320</td>
+ </tr>
+ <tr>
+ <td>Daniel Micay (<a href="https://twitter.com/DanielMicay" class="external">@DanielMicay</a>)
+ </td>
+ <td>CVE-2018-9567</td>
+ </tr>
+ <tr>
+ <td>Hao Chen and Guang Gong of Alpha Team, Qihoo 360 Technology Co. Ltd.</td>
+ <td>CVE-2018-9557</td>
+ </tr>
+ <tr>
+ <td>Joydeep Mitra and Venkatesh-Prasad Ranganath of Ghera project at
+ Kansas State University, USA</td>
+ <td>CVE-2018-9548</td>
+ </tr>
+ <tr>
+ <td>Mingjian Zhou (周明建) (
+ <a href="https://twitter.com/Mingjian_Zhou"
+ class="external">@Mingjian_Zhou</a>)
+ of <a href="http://c0reteam.org/" class="external">C0RE Team</a></td>
+ <td>CVE-2018-9547</td>
+ </tr>
+ <tr>
+ <td>Newroot (<a href="https://twitter.com/newroot" class="external">@newroot</a>)</td>
+ <td>CVE-2018-9560</td>
+ </tr>
+ <tr>
+ <td>Scott Bauer (<a href="https://twitter.com/ScottyBauer1" class="external">@ScottyBauer1</a>)</td>
+ <td>CVE-2018-9555, CVE-2018-9558, CVE-2018-9566</td>
+ </tr>
+ <tr>
+ <td>Yong Wang (王勇) (<a href="https://twitter.com/ThomasKing2014" class="external">@ThomasKing2014</a>)
+ of Alibaba Inc.</td>
+ <td>CVE-2018-9568</td>
+ </tr>
+ <tr>
+ <td>Zinuo Han (<a href="http://weibo.com/ele7enxxh"
+ class="external">weibo.com/ele7enxxh</a>)
+ of Chengdu Security Response Center, Qihoo 360 Technology Co. Ltd.</td>
+ <td>CVE-2018-9549, CVE-2018-9552, CVE-2018-9553, CVE-2018-9562</td>
+ </tr>
+</table>
+
<h4 id="nov-2018">November</h4>
<table>
diff --git a/en/setup/_toc-build.yaml b/en/setup/_toc-build.yaml
index 5f4050ac..70abeba2 100644
--- a/en/setup/_toc-build.yaml
+++ b/en/setup/_toc-build.yaml
@@ -11,3 +11,5 @@ toc:
path: /setup/build/building-kernels
- title: See Known Issues
path: /setup/build/known-issues
+- title: Continuous Integration Dashboard
+ path: /setup/build/dashboard
diff --git a/en/setup/build/building-kernels.html b/en/setup/build/building-kernels.html
index cb795c79..a340e5df 100644
--- a/en/setup/build/building-kernels.html
+++ b/en/setup/build/building-kernels.html
@@ -327,7 +327,7 @@ projects. Use <a href="/setup/develop/repo#init">repo</a> to download the
kernel source for the appropriate branch (as of this writing, <code><var>VERSION</var></code> should be
<code>4.9-pie-qpr1</code>):</p>
-<pre class="devsite-terminal devsite-click-to-copy">repo init -u https://android.googlesource.com/platform/manifest -b android-msm-bluecross-$<var>VERSION</var></pre>
+<pre class="devsite-terminal devsite-click-to-copy">repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-bluecross-$<var>VERSION</var></pre>
<pre class="devsite-terminal devsite-click-to-copy">repo sync</pre>
<p>Then build the kernel with:</p>
diff --git a/en/setup/build/dashboard.html b/en/setup/build/dashboard.html
new file mode 100644
index 00000000..7dee5bee
--- /dev/null
+++ b/en/setup/build/dashboard.html
@@ -0,0 +1,64 @@
+<html devsite>
+ <head>
+ <title>Continuous Integration Dashboard</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>This dashboard provides visibility into the
+ <a href="https://en.wikipedia.org/wiki/Continuous_integration" class="external">continuous
+ integration</a> system used by the Android Open Source Project (AOSP).</p>
+
+<p>Contributors to AOSP can use this dashboard to monitor when their submissions are integrated
+ into the tree. The status color shows whether the integrated change has built successfully
+ across all of our build types. For convenience, the build artifacts
+ from each build are available for download.</p>
+
+<p>Each row represents a build that is completed on
+ Android's automated builders. Each column represents a build target/buildtype combination.
+ Within the grid, in-progress and completed builds are shown. In-progress builds are color-coded
+ with a yellow background, failed builds with a red background, and successful builds with a green
+ background. When a build is completed you can download the build artifacts by clicking the
+ <span class="material-icons">get_app</span>(<strong>View artifacts</strong>) icon, which links to
+ a page where the artifacts can be downloaded. Selecting a square opens a panel at the bottom of
+ the screen with tabs for "Details" where the logs are kept, "Changes" which lists what changes
+ went into a build, and another link to the build artifacts. The dashboard refreshes automatically
+ as new builds are completed.</p>
+
+<p>The dashboard can be found at <a href="https://ci.android.com"
+ class="external">ci.android.com</a></p>
+
+<figure><img src="../images/dashboard.png" alt="Image of dashboard"/><figcaption><b>Figure 1</b>:
+ Continuous Integration Dashboard</figcaption></figure>
+
+<p>The attributes of the dashboard include:<p>
+<ul>
+ <li><b>Branch name</b>: Name of the git branch where the builds happen</li>
+ <li><b>Build artifacts</b>: Link to see and download artifacts from this build</li>
+ <li><b>Build ID</b>: Unique ID for each build</li>
+ <li><b>Build target</b>: Device configuration</li>
+ <li><b>Buildtype</b>: Exact configuration of the target, which can be user, userdebug, or eng.
+ For more details, see <a href="/setup/build/building#choose-a-target">Choose a
+ Target</a></li>
+ <li><b>Changes link</b>: Link to the changes included in this build</li>
+ <li><b>Perm link</b>: Permanent link to this build’s page on
+ <a href="https://ci.android.com" class="external">ci.android.com</a></li>
+
+ </body>
+</html>
diff --git a/en/setup/contribute/code-style.html b/en/setup/contribute/code-style.html
index bc9ad880..112c30fe 100644
--- a/en/setup/contribute/code-style.html
+++ b/en/setup/contribute/code-style.html
@@ -23,92 +23,126 @@
-<p>The code styles below are strict rules for contributing Java code to the
-Android Open Source Project (AOSP). Contributions to the Android platform that
-do not adhere to these rules are generally <em>not accepted</em>. We recognize
-that not all existing code follows these rules, but we expect all new code to
-be compliant.</p>
-
-<p class="note"><strong>Note:</strong> These rules are intended for the Android
-platform and are not required of Android app developers. App developers may
-follow the standard of their choosing, such as the <a
-href="https://google.github.io/styleguide/javaguide.html">Google Java Style
-Guide</a>.</p>
+<p>
+ The code styles below are strict rules for contributing Java code to the
+ Android Open Source Project (AOSP). Contributions to the Android platform
+ that do not adhere to these rules are generally <em>not accepted</em>. We
+ recognize that not all existing code follows these rules, but we expect all
+ new code to be compliant.
+</p>
+
+<aside class="note">
+ <strong>Note:</strong> These rules are intended for the Android platform and
+ are not required of Android app developers. App developers may follow the
+ standard of their choosing, such as the <a
+ href="https://google.github.io/styleguide/javaguide.html" class="external">Google
+ Java Style Guide</a>.
+</aside>
<h2 id="java-language-rules">Java language rules</h2>
-<p>Android follows standard Java coding conventions with the additional rules
-described below.</p>
-<h3 id="dont-ignore-exceptions">Don't ignore exceptions</h3>
-<p>It can be tempting to write code that completely ignores an exception, such
-as:</p>
-<pre><code>void setServerPort(String value) {
+ <p>
+ Android follows standard Java coding conventions with the additional rules
+ described below.
+ </p>
+
+ <h3 id="dont-ignore-exceptions">Don't ignore exceptions</h3>
+
+ <p>
+ It can be tempting to write code that completely ignores an exception, such as:
+ </p>
+
+<pre class="prettyprint">
+ void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) { }
-}
-</code></pre>
-<p>Do not do this. While you may think your code will never encounter this error
-condition or that it is not important to handle it, ignoring exceptions as above
-creates mines in your code for someone else to trigger some day. You must handle
-every Exception in your code in a principled way; the specific handling varies
-depending on the case.</p>
-<p><em>Anytime somebody has an empty catch clause they should have a
-creepy feeling. There are definitely times when it is actually the correct
-thing to do, but at least you have to think about it. In Java you can't escape
-the creepy feeling.</em> -<a href="http://www.artima.com/intv/solid4.html">James Gosling</a></p>
-<p>Acceptable alternatives (in order of preference) are:</p>
-<ul>
-<li>Throw the exception up to the caller of your method.
-<pre><code>void setServerPort(String value) throws NumberFormatException {
- serverPort = Integer.parseInt(value);
-}
-</code></pre>
-</li>
-<li>Throw a new exception that's appropriate to your level of abstraction.
-<pre><code>void setServerPort(String value) throws ConfigurationException {
+ }
+</pre>
+
+ <p>
+ Do not do this. While you may think your code will never encounter this
+ error condition or that it is not important to handle it, ignoring
+ exceptions as above creates mines in your code for someone else to
+ trigger some day. You must handle every Exception in your code in a
+ principled way; the specific handling varies depending on the case.
+ </p>
+
+ <p class="inline-block">
+ "<em>Anytime somebody has an empty catch clause they should have a creepy
+ feeling. There are definitely times when it is actually the correct
+ thing to do, but at least you have to think about it. In Java you can't
+ escape the creepy feeling.</em>" &mdash;
+ <a href="http://www.artima.com/intv/solid4.html" class="external">James
+ Gosling</a>
+ </p>
+
+ <p>Acceptable alternatives (in order of preference) are:</p>
+
+ <ul>
+ <li>Throw the exception up to the caller of your method.
+<pre class="prettyprint">
+ void setServerPort(String value) throws NumberFormatException {
+ serverPort = Integer.parseInt(value);
+ }
+</pre>
+ </li>
+ <li>
+ Throw a new exception that's appropriate to your level of abstraction.
+<pre class="prettyprint">
+ void setServerPort(String value) throws ConfigurationException {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) {
throw new ConfigurationException("Port " + value + " is not valid.");
}
-}
-</code></pre>
-</li>
-<li>Handle the error gracefully and substitute an appropriate value in the
-catch {} block.
-<pre><code>/** Set port. If value is not a valid number, 80 is substituted. */
-
-void setServerPort(String value) {
+ }
+</pre>
+ </li>
+ <li>
+ Handle the error gracefully and substitute an appropriate value in the
+ <code>catch {}</code> block.
+<pre class="prettyprint">
+ /** Set port. If value is not a valid number, 80 is substituted. */
+
+ void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) {
serverPort = 80; // default port for server
}
-}
-</code></pre>
-</li>
-<li>Catch the Exception and throw a new <code>RuntimeException</code>. This is
-dangerous, so do it only if you are positive that if this error occurs the
-appropriate thing to do is crash.
-<pre><code>/** Set port. If value is not a valid number, die. */
-
-void setServerPort(String value) {
+ }
+</pre>
+ </li>
+ <li>
+ Catch the Exception and throw a new <code>RuntimeException</code>.
+ This is dangerous, so do it only if you are positive that if this
+ error occurs the appropriate thing to do is crash.
+
+<pre class="prettyprint">
+ /** Set port. If value is not a valid number, die. */
+
+ void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) {
throw new RuntimeException("port " + value " is invalid, ", e);
}
-}
-</code></pre>
-<p class="note"><strong>Note</strong> The original exception is passed to the
-constructor for RuntimeException. If your code must compile under Java 1.3, you
-must omit the exception that is the cause.</p>
-</li>
-<li>As a last resort, if you are confident that ignoring the exception is
-appropriate then you may ignore it, but you must also comment why with a good
-reason:
-<pre><code>/** If value is not a valid number, original port number is used. */
+ }
+</pre>
+ <aside class="note">
+ <strong>Note:</strong> The original exception is passed to the
+ constructor for RuntimeException. If your code must compile under
+ Java 1.3, you must omit the exception that is the cause.
+ </aside>
+ </li>
+ <li>
+ As a last resort, if you are confident that ignoring the exception is
+ appropriate then you may ignore it, but you must also comment why with
+ a good reason:
+<pre class="prettyprint">
+/** If value is not a valid number, original port number is used. */
+
void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
@@ -117,97 +151,144 @@ void setServerPort(String value) {
// serverPort will just be unchanged.
}
}
-</code></pre>
-</li>
-</ul>
-
-<h3 id="dont-catch-generic-exception">Don't catch generic exception</h3>
-<p>It can also be tempting to be lazy when catching exceptions and do
-something like this:</p>
-<pre><code>try {
- someComplicatedIOFunction(); // may throw IOException
- someComplicatedParsingFunction(); // may throw ParsingException
- someComplicatedSecurityFunction(); // may throw SecurityException
- // phew, made it all the way
-} catch (Exception e) { // I'll just catch all exceptions
- handleError(); // with one generic handler!
-}
-</code></pre>
-<p>Do not do this. In almost all cases it is inappropriate to catch generic
-Exception or Throwable (preferably not Throwable because it includes Error
-exceptions). It is very dangerous because it means that Exceptions
-you never expected (including RuntimeExceptions like ClassCastException) get
-caught in application-level error handling. It obscures the failure handling
-properties of your code, meaning if someone adds a new type of Exception in the
-code you're calling, the compiler won't help you realize you need to handle the
-error differently. In most cases you shouldn't be handling different types of
-exception the same way.</p>
-<p>The rare exception to this rule is test code and top-level code where you
-want to catch all kinds of errors (to prevent them from showing up in a UI, or
-to keep a batch job running). In these cases you may catch generic Exception
-(or Throwable) and handle the error appropriately. Think very carefully before
-doing this, though, and put in comments explaining why it is safe in this place.</p>
-<p>Alternatives to catching generic Exception:</p>
-<ul>
-<li>
-<p>Catch each exception separately as separate catch blocks after a single
-try. This can be awkward but is still preferable to catching all Exceptions.
-Beware repeating too much code in the catch blocks.</li></p>
-</li>
-<li>
-<p>Refactor your code to have more fine-grained error handling, with multiple
-try blocks. Split up the IO from the parsing, handle errors separately in each
-case.</p>
-</li>
-<li>
-<p>Rethrow the exception. Many times you don't need to catch the exception at
-this level anyway, just let the method throw it.</p>
-</li>
-</ul>
-<p>Remember: exceptions are your friend! When the compiler complains you're
-not catching an exception, don't scowl. Smile: the compiler just made it
-easier for you to catch runtime problems in your code.</p>
-<h3 id="dont-use-finalizers">Don't use finalizers</h3>
-<p>Finalizers are a way to have a chunk of code executed when an object is
-garbage collected. While they can be handy for doing cleanup (particularly of
-external resources), there are no guarantees as to when a finalizer will be
-called (or even that it will be called at all).</p>
-<p>Android doesn't use finalizers. In most cases, you can do what
-you need from a finalizer with good exception handling. If you absolutely need
-it, define a close() method (or the like) and document exactly when that
-method needs to be called (see InputStream for an example). In this case it is
-appropriate but not required to print a short log message from the finalizer,
-as long as it is not expected to flood the logs.</p>
-
-<h3 id="fully-qualify-imports">Fully qualify imports</h3>
-<p>When you want to use class Bar from package foo,there
-are two possible ways to import it:</p>
-<ul>
-<li><code>import foo.*;</code>
-<p>Potentially reduces the number of import statements.</p></li>
-<li><code>import foo.Bar;</code>
-<p>Makes it obvious what classes are actually used and the code is more readable
-for maintainers.</p></li></ul>
-<p>Use <code>import foo.Bar;</code> for importing all Android code. An explicit
-exception is made for java standard libraries (<code>java.util.*</code>,
-<code>java.io.*</code>, etc.) and unit test code
-(<code>junit.framework.*</code>).</p>
+</pre>
+ </li>
+ </ul>
+
+ <h3 id="dont-catch-generic-exception">Don't catch generic exception</h3>
+
+ <p>
+ It can also be tempting to be lazy when catching exceptions and do
+ something like this:
+ </p>
+
+<pre class="prettyprint">
+ try {
+ someComplicatedIOFunction(); // may throw IOException
+ someComplicatedParsingFunction(); // may throw ParsingException
+ someComplicatedSecurityFunction(); // may throw SecurityException
+ // phew, made it all the way
+ } catch (Exception e) { // I'll just catch all exceptions
+ handleError(); // with one generic handler!
+ }
+</pre>
+
+ <p>
+ Do not do this. In almost all cases it is inappropriate to catch generic
+ Exception or Throwable (preferably not Throwable because it includes
+ Error exceptions). It is very dangerous because it means that Exceptions
+ you never expected (including RuntimeExceptions like ClassCastException)
+ get caught in application-level error handling. It obscures the failure
+ handling properties of your code, meaning if someone adds a new type of
+ Exception in the code you're calling, the compiler won't help you
+ realize you need to handle the error differently. In most cases you
+ shouldn't be handling different types of exception the same way.
+ </p>
+
+ <p>
+ The rare exception to this rule is test code and top-level code where
+ you want to catch all kinds of errors (to prevent them from showing up
+ in a UI, or to keep a batch job running). In these cases you may catch
+ generic Exception (or Throwable) and handle the error appropriately.
+ Think very carefully before doing this, though, and put in comments
+ explaining why it is safe in this place.
+ </p>
+
+ <p>Alternatives to catching generic Exception:</p>
+
+ <ul>
+ <li>
+ Catch each exception separately as part of a multi-catch block, for example:
+<pre class="prettyprint">
+try {
+ ...
+} catch (ClassNotFoundException | NoSuchMethodException e) {
+ ...
+}</pre>
+ </li>
+ <li>
+ Refactor your code to have more fine-grained error handling, with
+ multiple try blocks. Split up the IO from the parsing, handle errors
+ separately in each case.
+ </li>
+ <li>
+ Rethrow the exception. Many times you don't need to catch the
+ exception at this level anyway, just let the method throw it.
+ </li>
+ </ul>
+
+ <p>
+ Remember: exceptions are your friend! When the compiler complains you're
+ not catching an exception, don't scowl. Smile: the compiler just made it
+ easier for you to catch runtime problems in your code.
+ </p>
+
+ <h3 id="dont-use-finalizers">Don't use finalizers</h3>
+
+ <p>
+ Finalizers are a way to have a chunk of code executed when an object is
+ garbage collected. While they can be handy for doing cleanup
+ (particularly of external resources), there are no guarantees as to when
+ a finalizer will be called (or even that it will be called at all).
+ </p>
+
+ <p>
+ Android doesn't use finalizers. In most cases, you can do what you need
+ from a finalizer with good exception handling. If you absolutely need
+ it, define a close() method (or the like) and document exactly when that
+ method needs to be called (see InputStream for an example). In this case
+ it is appropriate but not required to print a short log message from the
+ finalizer, as long as it is not expected to flood the logs.
+ </p>
+
+ <h3 id="fully-qualify-imports">Fully qualify imports</h3>
+
+ <p>
+ When you want to use class Bar from package foo, there are two possible
+ ways to import it:
+ </p>
+
+ <ul>
+ <li><code>import foo.*;</code>
+ <p>Potentially reduces the number of import statements.</p>
+ </li>
+ <li><code>import foo.Bar;</code>
+ <p>
+ Makes it obvious what classes are actually used and the code is more
+ readable for maintainers.
+ </p>
+ </li>
+ </ul>
+
+ <p>
+ Use <code>import foo.Bar;</code> for importing all Android code. An
+ explicit exception is made for java standard libraries (<code>java.util.
+ </code>, <code>java.io.*</code>, etc.) and unit test code
+ (<code>junit.framework.*</code>).
+ </p>
<h2 id="java-library-rules">Java library rules</h2>
-<p>There are conventions for using Android's Java libraries and tools. In some
-cases, the convention has changed in important ways and older code might use a
-deprecated pattern or library. When working with such code, it's okay to
-continue the existing style. When creating new components however, never use
-deprecated libraries.</p>
+
+ <p>
+ There are conventions for using Android's Java libraries and tools. In
+ some cases, the convention has changed in important ways and older code
+ might use a deprecated pattern or library. When working with such code,
+ it's okay to continue the existing style. When creating new components
+ however, never use deprecated libraries.
+ </p>
<h2 id="java-style-rules">Java style rules</h2>
-<h3 id="use-javadoc-standard-comments">Use Javadoc standard comments</h3>
-<p>Every file should have a copyright statement at the top, followed by package
-and import statements (each block separated by a blank line) and finally the
-class or interface declaration. In the Javadoc comments, describe what the class
-or interface does.</p>
-<pre><code>/*
+ <h3 id="use-javadoc-standard-comments">Use Javadoc standard comments</h3>
+
+ <p>
+ Every file should have a copyright statement at the top, followed by
+ package and import statements (each block separated by a blank line) and
+ finally the class or interface declaration. In the Javadoc comments,
+ describe what the class or interface does.
+ </p>
+<pre class="prettyprint">
+/*
* Copyright 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -238,62 +319,99 @@ import java.sql.SQLException;
public class Foo {
...
}
-</code></pre>
-<p>Every class and nontrivial public method you write <em>must</em> contain a
-Javadoc comment with at least one sentence describing what the class or method
-does. This sentence should start with a third person descriptive verb.</p>
-<p>Examples:</p>
-<pre><code>/** Returns the correctly rounded positive square root of a double value. */
+</pre>
+
+ <p>
+ Every class and nontrivial public method you write <em>must</em> contain
+ a Javadoc comment with at least one sentence describing what the class
+ or method does. This sentence should start with a third person
+ descriptive verb.
+ </p>
+
+ <p><strong>Examples</strong></p>
+
+<pre class="prettyprint">
+/** Returns the correctly rounded positive square root of a double value. */
+
static double sqrt(double a) {
...
}
-</code></pre>
-<p>or</p>
-<pre><code>/**
+</pre>
+
+ <p>or</p>
+
+<pre class="prettyprint">
+/**
* Constructs a new String by converting the specified array of
* bytes using the platform's default character encoding.
*/
public String(byte[] bytes) {
...
}
-</code></pre>
-<p>You do not need to write Javadoc for trivial get and set methods such as
-<code>setFoo()</code> if all your Javadoc would say is "sets Foo". If the method
-does something more complex (such as enforcing a constraint or has an important
-side effect), then you must document it. If it's not obvious what the property
-"Foo" means, you should document it.
-<p>Every method you write, public or otherwise, would benefit from Javadoc.
-Public methods are part of an API and therefore require Javadoc. Android does
-not currently enforce a specific style for writing Javadoc comments, but you
-should follow the instructions <a
-href="http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html">How
-to Write Doc Comments for the Javadoc Tool</a>.</p>
-
-<h3 id="write-short-methods">Write short methods</h3>
-<p>When feasible, keep methods small and focused. We recognize that long methods
-are sometimes appropriate, so no hard limit is placed on method length. If a
-method exceeds 40 lines or so, think about whether it can be broken up without
-harming the structure of the program.</p>
-
-<h3 id="define-fields-in-standard-places">Define fields in standard places</h3>
-<p>Define fields either at the top of the file or immediately before the
-methods that use them.</p>
-
-<h3 id="limit-variable-scope">Limit variable scope</h3>
-<p>Keep the scope of local variables to a minimum. By doing so, you
-increase the readability and maintainability of your code and reduce the
-likelihood of error. Each variable should be declared in the innermost block
-that encloses all uses of the variable.</p>
-<p>Local variables should be declared at the point they are first used. Nearly
-every local variable declaration should contain an initializer. If you don't
-yet have enough information to initialize a variable sensibly, postpone the
-declaration until you do.</p>
-<p>The exception is try-catch statements. If a variable is initialized with the
-return value of a method that throws a checked exception, it must be initialized
-inside a try block. If the value must be used outside of the try block, then it
-must be declared before the try block, where it cannot yet be sensibly
-initialized:</p>
-<pre><code>// Instantiate class cl, which represents some sort of Set
+</pre>
+
+ <p>
+ You do not need to write Javadoc for trivial get and set methods such as
+ <code>setFoo()</code> if all your Javadoc would say is "sets Foo". If
+ the method does something more complex (such as enforcing a constraint
+ or has an important side effect), then you must document it. If it's not
+ obvious what the property "Foo" means, you should document it.
+ </p>
+
+ <p>
+ Every method you write, public or otherwise, would benefit from Javadoc.
+ Public methods are part of an API and therefore require Javadoc. Android
+ does not currently enforce a specific style for writing Javadoc
+ comments, but you should follow the instructions <a
+ href="http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html" class="external">How
+ to Write Doc Comments for the Javadoc Tool</a>.
+ </p>
+
+ <h3 id="write-short-methods">Write short methods</h3>
+
+ <p>
+ When feasible, keep methods small and focused. We recognize that long
+ methods are sometimes appropriate, so no hard limit is placed on method
+ length. If a method exceeds 40 lines or so, think about whether it can
+ be broken up without harming the structure of the program.
+ </p>
+
+ <h3 id="define-fields-in-standard-places">
+ Define fields in standard places
+ </h3>
+
+ <p>
+ Define fields either at the top of the file or immediately before the
+ methods that use them.
+ </p>
+
+ <h3 id="limit-variable-scope">Limit variable scope</h3>
+
+ <p>
+ Keep the scope of local variables to a minimum. By doing so, you
+ increase the readability and maintainability of your code and reduce the
+ likelihood of error. Each variable should be declared in the innermost
+ block that encloses all uses of the variable.
+ </p>
+
+ <p>
+ Local variables should be declared at the point they are first used.
+ Nearly every local variable declaration should contain an initializer.
+ If you don't yet have enough information to initialize a variable
+ sensibly, postpone the declaration until you do.
+ </p>
+
+ <p>
+ The exception is try-catch statements. If a variable is initialized with
+ the return value of a method that throws a checked exception, it must be
+ initialized inside a try block. If the value must be used outside of the
+ try block, then it must be declared before the try block, where it
+ cannot yet be sensibly initialized:
+ </p>
+
+<pre class="prettyprint">
+// Instantiate class cl, which represents some sort of Set
+
Set s = null;
try {
s = (Set) cl.newInstance();
@@ -305,10 +423,15 @@ try {
// Exercise the set
s.addAll(Arrays.asList(args));
-</code></pre>
-<p>However, even this case can be avoided by encapsulating the try-catch block
-in a method:</p>
-<pre><code>Set createSet(Class cl) {
+</pre>
+
+ <p>
+ However, even this case can be avoided by encapsulating the try-catch
+ block in a method:
+ </p>
+
+<pre class="prettyprint">
+Set createSet(Class cl) {
// Instantiate class cl, which represents some sort of Set
try {
return (Set) cl.newInstance();
@@ -324,103 +447,142 @@ in a method:</p>
// Exercise the set
Set s = createSet(cl);
s.addAll(Arrays.asList(args));
-</code></pre>
-<p>Loop variables should be declared in the for statement itself unless there
-is a compelling reason to do otherwise:</p>
-<pre><code>for (int i = 0; i < n; i++) {
+</pre>
+
+ <p>
+ Loop variables should be declared in the for statement itself unless
+ there is a compelling reason to do otherwise:
+ </p>
+
+<pre class="prettyprint">
+for (int i = 0; i < n; i++) {
doSomething(i);
}
-</code></pre>
-<p>and</p>
-<pre><code>for (Iterator i = c.iterator(); i.hasNext(); ) {
+</pre>
+
+ <p>and</p>
+
+<pre class="prettyprint">
+for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomethingElse(i.next());
}
-</code></pre>
-
-<h3 id="order-import-statements">Order import statements</h3>
-<p>The ordering of import statements is:</p>
-<ol>
-<li>
-<p>Android imports</p>
-</li>
-<li>
-<p>Imports from third parties (<code>com</code>, <code>junit</code>,
-<code>net</code>, <code>org</code>)</p>
-</li>
-<li>
-<p><code>java</code> and <code>javax</code></p>
-</li>
-</ol>
-<p>To exactly match the IDE settings, the imports should be:</p>
-<ul>
-<li>
-<p>Alphabetical within each grouping, with capital letters before lower case
-letters (e.g. Z before a).</p>
-</li>
-<li>
-<p>Separated by a blank line between each major grouping (<code>android</code>,
-<code>com</code>, <code>junit</code>, <code>net</code>, <code>org</code>,
-<code>java</code>, <code>javax</code>).</p>
-</li>
-</ul>
-<p>Originally, there was no style requirement on the ordering, meaning IDEs were
-either always changing the ordering or IDE developers had to disable the
-automatic import management features and manually maintain the imports. This was
-deemed bad. When java-style was asked, the preferred styles varied wildly and it
-came down to Android needing to simply "pick an ordering and be consistent." So
-we chose a style, updated the style guide, and made the IDEs obey it. We expect
-that as IDE users work on the code, imports in all packages will match this
-pattern without extra engineering effort.</p>
-<p>This style was chosen such that:</p>
-<ul>
-<li>
-<p>The imports people want to look at first tend to be at the top
-(<code>android</code>).</p>
-</li>
-<li>
-<p>The imports people want to look at least tend to be at the bottom
-(<code>java</code>).</p>
-</li>
-<li>
-<p>Humans can easily follow the style.</p>
-</li>
-<li>
-<p>IDEs can follow the style.</p>
-</li>
-</ul>
-<p>Put static imports above all the other imports ordered the same way as
-regular imports.</p>
-
-<h3 id="use-spaces-for-indentation">Use spaces for indentation</h3>
-<p>We use four (4) space indents for blocks and never tabs. When in doubt, be
-consistent with the surrounding code.</p>
-<p>We use eight (8) space indents for line wraps, including function calls and
-assignments. For example, this is correct:</p>
-<pre><code>Instrument i =
+</pre>
+
+ <h3 id="order-import-statements">Order import statements</h3>
+
+ <p>The ordering of import statements is:</p>
+
+ <ol>
+ <li>
+ Android imports
+ </li>
+ <li>
+ Imports from third parties (<code>com</code>, <code>junit</code>,
+ <code>net</code>, <code>org</code>)
+ </li>
+ <li>
+ <code>java</code> and <code>javax</code>
+ </li>
+ </ol>
+
+ <p>To exactly match the IDE settings, the imports should be:</p>
+
+ <ul>
+ <li>
+ Alphabetical within each grouping, with capital letters before lower
+ case letters (e.g. Z before a).
+ </li>
+ <li>
+ Separated by a blank line between each major grouping
+ (<code>android</code>, <code>com</code>, <code>junit</code>,
+ <code>net</code>, <code>org</code>, <code>java</code>,
+ <code>javax</code>).
+ </li>
+ </ul>
+
+ <p>
+ Originally, there was no style requirement on the ordering, meaning IDEs
+ were either always changing the ordering or IDE developers had to
+ disable the automatic import management features and manually maintain
+ the imports. This was deemed bad. When java-style was asked, the
+ preferred styles varied wildly and it came down to Android needing to
+ simply "pick an ordering and be consistent." So we chose a style,
+ updated the style guide, and made the IDEs obey it. We expect that as
+ IDE users work on the code, imports in all packages will match this
+ pattern without extra engineering effort.
+ </p>
+
+ <p>This style was chosen such that:</p>
+
+ <ul>
+ <li>
+ The imports people want to look at first tend to be at the top
+ (<code>android</code>).
+ </li>
+ <li>
+ The imports people want to look at least tend to be at the bottom
+ (<code>java</code>).
+ </li>
+ <li>
+ Humans can easily follow the style.
+ </li>
+ <li>
+ IDEs can follow the style.
+ </li>
+ </ul>
+
+ <p>
+ Put static imports above all the other imports ordered the same way as
+ regular imports.
+ </p>
+
+ <h3 id="use-spaces-for-indentation">Use spaces for indentation</h3>
+
+ <p>
+ We use four (4) space indents for blocks and never tabs. When in doubt,
+ be consistent with the surrounding code.
+ </p>
+
+ <p>
+ We use eight (8) space indents for line wraps, including function calls
+ and assignments.
+ </p>
+
+ <p><span class="compare-better">Recommended</span></p>
+
+<pre class="prettyprint">
+Instrument i =
someLongExpression(that, wouldNotFit, on, one, line);
-</code></pre>
-<p>and this is not correct:</p>
-<pre><code>Instrument i =
+</pre>
+
+ <p><span class="compare-worse">Not recommended</span></p>
+
+<pre class="prettyprint">
+Instrument i =
someLongExpression(that, wouldNotFit, on, one, line);
-</code></pre>
-
-<h3 id="follow-field-naming-conventions">Follow field naming conventions</h3>
-<ul>
-<li>
-<p>Non-public, non-static field names start with m.</p>
-</li>
-<li>
-<p>Static field names start with s.</p>
-</li>
-<li>
-<p>Other fields start with a lower case letter.</p>
-</li>
-<li>
-<p>Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES.</p>
-</li>
-</ul>
-<p>For example:</p>
-<pre><code>public class MyClass {
+</pre>
+
+ <h3 id="follow-field-naming-conventions">Follow field naming conventions</h3>
+
+ <ul>
+ <li>
+ Non-public, non-static field names start with m.
+ </li>
+ <li>
+ Static field names start with s.
+ </li>
+ <li>
+ Other fields start with a lower case letter.
+ </li>
+ <li>
+ Public static final fields (constants) are ALL_CAPS_WITH_UNDERSCORES.
+ </li>
+ </ul>
+
+ <p>For example:</p>
+
+<pre class="prettyprint">
+public class MyClass {
public static final int SOME_CONSTANT = 42;
public int publicField;
private static MyClass sSingleton;
@@ -428,11 +590,17 @@ assignments. For example, this is correct:</p>
private int mPrivate;
protected int mProtected;
}
-</code></pre>
-<h3 id="use-standard-brace-style">Use standard brace style</h3>
-<p>Braces do not go on their own line; they go on the same line as the code
-before them:</p>
-<pre><code>class MyClass {
+</pre>
+
+ <h3 id="use-standard-brace-style">Use standard brace style</h3>
+
+ <p>
+ Braces do not go on their own line; they go on the same line as the code
+ before them:
+ </p>
+
+<pre class="prettyprint">
+class MyClass {
int func() {
if (something) {
// ...
@@ -443,272 +611,398 @@ before them:</p>
}
}
}
-</code></pre>
-<p>We require braces around the statements for a conditional. Exception: If the
-entire conditional (the condition and the body) fit on one line, you may (but
-are not obligated to) put it all on one line. For example, this is acceptable:</p>
-<pre><code>if (condition) {
+</pre>
+
+ <p>
+ We require braces around the statements for a conditional. Exception: If
+ the entire conditional (the condition and the body) fit on one line, you
+ may (but are not obligated to) put it all on one line. For example, this
+ is acceptable:
+ </p>
+
+<pre class="prettyprint">
+if (condition) {
body();
}
-</code></pre>
-<p>and this is acceptable:</p>
-<pre><code>if (condition) body();
-</code></pre>
-<p>but this is not acceptable:</p>
-<pre><code>if (condition)
+</pre>
+
+ <p>and this is acceptable:</p>
+
+<pre class="prettyprint">if (condition) body();</pre>
+
+ <p>but this is not acceptable:</p>
+
+<pre class="prettyprint">
+if (condition)
body(); // bad!
-</code></pre>
-
-<h3 id="limit-line-length">Limit line length</h3>
-<p>Each line of text in your code should be at most 100 characters long. While
-much discussion has surrounded this rule, the decision remains that 100
-characters is the maximum <em>with the following exceptions</em>:</p>
-<ul>
-<li>If a comment line contains an example command or a literal URL
-longer than 100 characters, that line may be longer than 100 characters for
-ease of cut and paste.</li>
-<li>Import lines can go over the limit because humans rarely see them (this also
-simplifies tool writing).</li>
-</ul>
-
-<h3 id="use-standard-java-annotations">Use standard Java annotations</h3>
-<p>Annotations should precede other modifiers for the same language element.
-Simple marker annotations (e.g. @Override) can be listed on the same line with
-the language element. If there are multiple annotations, or parameterized
-annotations, they should each be listed one-per-line in alphabetical
-order.</p>
-<p>Android standard practices for the three predefined annotations in Java are:</p>
-<ul>
-<li><code>@Deprecated</code>: The @Deprecated annotation must be used whenever
-the use of the annotated element is discouraged. If you use the @Deprecated
-annotation, you must also have a @deprecated Javadoc tag and it should name an
-alternate implementation. In addition, remember that a @Deprecated method is
-<em>still supposed to work</em>. If you see old code that has a @deprecated
-Javadoc tag, please add the @Deprecated annotation.
-</li>
-<li><code>@Override</code>: The @Override annotation must be used whenever a
-method overrides the declaration or implementation from a super-class. For
-example, if you use the @inheritdocs Javadoc tag, and derive from a class (not
-an interface), you must also annotate that the method @Overrides the parent
-class's method.</li>
-<li><code>@SuppressWarnings</code>: The @SuppressWarnings annotation should be
-used only under circumstances where it is impossible to eliminate a warning. If
-a warning passes this "impossible to eliminate" test, the @SuppressWarnings
-annotation <em>must</em> be used, so as to ensure that all warnings reflect
-actual problems in the code.
-<p>When a @SuppressWarnings annotation is necessary, it must be prefixed with
-a TODO comment that explains the "impossible to eliminate" condition. This
-will normally identify an offending class that has an awkward interface. For
-example:</p>
-<pre><code>// TODO: The third-party class com.third.useful.Utility.rotate() needs generics
+</pre>
+
+ <h3 id="limit-line-length">Limit line length</h3>
+
+ <p>
+ Each line of text in your code should be at most 100 characters long.
+ While much discussion has surrounded this rule, the decision remains
+ that 100 characters is the maximum <em>with the following
+ exceptions</em>:
+ </p>
+
+ <ul>
+ <li>
+ If a comment line contains an example command or a literal URL longer
+ than 100 characters, that line may be longer than 100 characters for
+ ease of cut and paste.
+ </li>
+ <li>
+ Import lines can go over the limit because humans rarely see them
+ (this also simplifies tool writing).
+ </li>
+ </ul>
+
+ <h3 id="use-standard-java-annotations">Use standard Java annotations</h3>
+
+ <p>
+ Annotations should precede other modifiers for the same language
+ element. Simple marker annotations (e.g. @Override) can be listed on the
+ same line with the language element. If there are multiple annotations,
+ or parameterized annotations, they should each be listed one-per-line in
+ alphabetical order.
+ </p>
+
+ <p>
+ Android standard practices for the three predefined annotations in Java
+ are:
+ </p>
+
+ <ul>
+ <li>
+ <code>@Deprecated</code>: The @Deprecated annotation must be used
+ whenever the use of the annotated element is discouraged. If you use
+ the @Deprecated annotation, you must also have a @deprecated Javadoc
+ tag and it should name an alternate implementation. In addition,
+ remember that a @Deprecated method is <em>still supposed to work</em>.
+ If you see old code that has a @deprecated Javadoc tag, please add the
+ @Deprecated annotation.
+ </li>
+ <li>
+ <code>@Override</code>: The @Override annotation must be used whenever
+ a method overrides the declaration or implementation from a
+ super-class. For example, if you use the @inheritdocs Javadoc tag, and
+ derive from a class (not an interface), you must also annotate that
+ the method @Overrides the parent class's method.
+ </li>
+ <li>
+ <code>@SuppressWarnings</code>: The @SuppressWarnings annotation
+ should be used only under circumstances where it is impossible to
+ eliminate a warning. If a warning passes this "impossible to
+ eliminate" test, the @SuppressWarnings annotation <em>must</em> be
+ used, so as to ensure that all warnings reflect actual problems in the
+ code.
+
+ <p>
+ When a @SuppressWarnings annotation is necessary, it must be
+ prefixed with a TODO comment that explains the "impossible to
+ eliminate" condition. This will normally identify an offending class
+ that has an awkward interface. For example:
+ </p>
+
+<pre class="prettyprint">
+// TODO: The third-party class com.third.useful.Utility.rotate() needs generics
&#64;SuppressWarnings("generic-cast")
List&lt;String&gt; blix = Utility.rotate(blax);
-</code></pre>
-<p>When a @SuppressWarnings annotation is required, the code should be
-refactored to isolate the software elements where the annotation applies.</p>
-</li>
-</ul>
-
-<h3 id="treat-acronyms-as-words">Treat acronyms as words</h3>
-<p>Treat acronyms and abbreviations as words in naming variables, methods, and
-classes to make names more readable:</p>
-<table>
-<thead>
-<tr>
-<th>Good</th>
-<th>Bad</th>
-</tr>
-</thead>
-<tbody>
-<tr>
-<td>XmlHttpRequest</td>
-<td>XMLHTTPRequest</td>
-</tr>
-<tr>
-<td>getCustomerId</td>
-<td>getCustomerID</td>
-</tr>
-<tr>
-<td>class Html</td>
-<td>class HTML</td>
-</tr>
-<tr>
-<td>String url</td>
-<td>String URL</td>
-</tr>
-<tr>
-<td>long id</td>
-<td>long ID</td>
-</tr>
-</tbody>
-</table>
-<p>As both the JDK and the Android code bases are very inconsistent around
-acronyms, it is virtually impossible to be consistent with the surrounding
-code. Therefore, always treat acronyms as words.</p>
-
-<h3 id="use-todo-comments">Use TODO comments</h3>
-<p>Use TODO comments for code that is temporary, a short-term solution, or
-good-enough but not perfect. TODOs should include the string TODO in all caps,
-followed by a colon:</p>
-<pre><code>// TODO: Remove this code after the UrlTable2 has been checked in.
-</code></pre>
-<p>and</p>
-<pre><code>// TODO: Change this to use a flag instead of a constant.
-</code></pre>
-<p>If your TODO is of the form "At a future date do something" make sure that
-you either include a very specific date ("Fix by November 2005") or a very
-specific event ("Remove this code after all production mixers understand
-protocol V7.").</p>
-
-<h3 id="log-sparingly">Log sparingly</h3>
-<p>While logging is necessary, it has a significantly negative impact on
-performance and quickly loses its usefulness if not kept reasonably
-terse. The logging facilities provides five different levels of logging:</p>
-<ul>
-<li><code>ERROR</code>:
-Use when something fatal has happened, i.e. something will have user-visible
-consequences and won't be recoverable without explicitly deleting some data,
-uninstalling applications, wiping the data partitions or reflashing the entire
-device (or worse). This level is always logged. Issues that justify some logging
-at the ERROR level are typically good candidates to be reported to a
-statistics-gathering server.</li>
-<li><code>WARNING</code>:
-Use when something serious and unexpected happened, i.e. something that will
-have user-visible consequences but is likely to be recoverable without data loss
-by performing some explicit action, ranging from waiting or restarting an app
-all the way to re-downloading a new version of an application or rebooting the
-device. This level is always logged. Issues that justify some logging at the
-WARNING level might also be considered for reporting to a statistics-gathering
-server.</li>
-<li><code>INFORMATIVE:</code>
-Use to note that something interesting to most people happened, i.e. when a
-situation is detected that is likely to have widespread impact, though isn't
-necessarily an error. Such a condition should only be logged by a module that
-reasonably believes that it is the most authoritative in that domain (to avoid
-duplicate logging by non-authoritative components). This level is always logged.
-</li>
-<li><code>DEBUG</code>:
-Use to further note what is happening on the device that could be relevant to
-investigate and debug unexpected behaviors. You should log only what is needed
-to gather enough information about what is going on about your component. If
-your debug logs are dominating the log then you probably should be using verbose
-logging.
-<p>This level will be logged, even on release builds, and is required to be
-surrounded by an <code>if (LOCAL_LOG)</code> or <code>if (LOCAL_LOGD)</code>
-block, where <code>LOCAL_LOG[D]</code> is defined in your class or subcomponent,
-so that there can exist a possibility to disable all such logging. There must
-therefore be no active logic in an <code>if (LOCAL_LOG)</code> block. All the
-string building for the log also needs to be placed inside the <code>if
-(LOCAL_LOG)</code> block. The logging call should not be re-factored out into a
-method call if it is going to cause the string building to take place outside
-of the <code>if (LOCAL_LOG)</code> block.</p>
-<p>There is some code that still says <code>if (localLOGV)</code>. This is
-considered acceptable as well, although the name is nonstandard.</p>
-</li>
-<li><code>VERBOSE</code>:
-Use for everything else. This level will only be logged on debug builds and
-should be surrounded by an <code>if (LOCAL_LOGV)</code> block (or equivalent) so
-it can be compiled out by default. Any string building will be stripped out of
-release builds and needs to appear inside the <code>if (LOCAL_LOGV)</code> block.
-</li>
-</ul>
-<p><em>Notes:</em> </p>
-<ul>
-<li>Within a given module, other than at the VERBOSE level, an
-error should only be reported once if possible. Within a single chain of
-function calls within a module, only the innermost function should return the
-error, and callers in the same module should only add some logging if that
-significantly helps to isolate the issue.</li>
-<li>In a chain of modules, other than at the VERBOSE level, when a
-lower-level module detects invalid data coming from a higher-level module, the
-lower-level module should only log this situation to the DEBUG log, and only
-if logging provides information that is not otherwise available to the caller.
-Specifically, there is no need to log situations where an exception is thrown
-(the exception should contain all the relevant information), or where the only
-information being logged is contained in an error code. This is especially
-important in the interaction between the framework and applications, and
-conditions caused by third-party applications that are properly handled by the
-framework should not trigger logging higher than the DEBUG level. The only
-situations that should trigger logging at the INFORMATIVE level or higher is
-when a module or application detects an error at its own level or coming from
-a lower level.</li>
-<li>When a condition that would normally justify some logging is
-likely to occur many times, it can be a good idea to implement some
-rate-limiting mechanism to prevent overflowing the logs with many duplicate
-copies of the same (or very similar) information.</li>
-<li>Losses of network connectivity are considered common, fully expected, and
-should not be logged gratuitously. A loss of network connectivity
-that has consequences within an app should be logged at the DEBUG or VERBOSE
-level (depending on whether the consequences are serious enough and unexpected
-enough to be logged in a release build).</li>
-<li>Having a full filesystem on a filesystem that is accessible to or on
-behalf of third-party applications should not be logged at a level higher than
-INFORMATIVE.</li>
-<li>Invalid data coming from any untrusted source (including any
-file on shared storage, or data coming through just about any network
-connection) is considered expected and should not trigger any logging at a
-level higher than DEBUG when it's detected to be invalid (and even then
-logging should be as limited as possible).</li>
-<li>Keep in mind that the <code>+</code> operator, when used on Strings,
-implicitly creates a <code>StringBuilder</code> with the default buffer size (16
-characters) and potentially other temporary String objects, i.e.
-that explicitly creating StringBuilders isn't more expensive than relying on
-the default '+' operator (and can be a lot more efficient in fact). Keep
-in mind that code that calls <code>Log.v()</code> is compiled and executed on
-release builds, including building the strings, even if the logs aren't being
-read.</li>
-<li>Any logging that is meant to be read by other people and to be
-available in release builds should be terse without being cryptic, and should
-be reasonably understandable. This includes all logging up to the DEBUG
-level.</li>
-<li>When possible, logging should be kept on a single line if it
-makes sense. Line lengths up to 80 or 100 characters are perfectly acceptable,
-while lengths longer than about 130 or 160 characters (including the length of
-the tag) should be avoided if possible.</li>
-<li>Logging that reports successes should never be used at levels
-higher than VERBOSE.</li>
-<li>Temporary logging used to diagnose an issue that is hard to reproduce should
-be kept at the DEBUG or VERBOSE level and should be enclosed by if blocks that
-allow for disabling it entirely at compile time.</li>
-<li>Be careful about security leaks through the log. Private
-information should be avoided. Information about protected content must
-definitely be avoided. This is especially important when writing framework
-code as it's not easy to know in advance what will and will not be private
-information or protected content.</li>
-<li><code>System.out.println()</code> (or <code>printf()</code> for native code)
-should never be used. System.out and System.err get redirected to /dev/null, so
-your print statements will have no visible effects. However, all the string
-building that happens for these calls still gets executed.</li>
-<li><em>The golden rule of logging is that your logs may not
-unnecessarily push other logs out of the buffer, just as others may not push
-out yours.</em></li>
-</ul>
-
-<h3 id="be-consistent">Be consistent</h3>
-<p>Our parting thought: BE CONSISTENT. If you're editing code, take a few
-minutes to look at the surrounding code and determine its style. If that code
-uses spaces around the if clauses, you should too. If the code comments have
-little boxes of stars around them, make your comments have little boxes of stars
-around them too.</p>
-<p>The point of having style guidelines is to have a common vocabulary of
-coding, so people can concentrate on what you're saying, rather than on how
-you're saying it. We present global style rules here so people know the
-vocabulary, but local style is also important. If the code you add to a file
-looks drastically different from the existing code around it, it throws
-readers out of their rhythm when they go to read it. Try to avoid this.</p>
+</pre>
+
+ <p>
+ When a @SuppressWarnings annotation is required, the code should be
+ refactored to isolate the software elements where the annotation
+ applies.
+ </p>
+ </li>
+ </ul>
+
+ <h3 id="treat-acronyms-as-words">Treat acronyms as words</h3>
+
+ <p>
+ Treat acronyms and abbreviations as words in naming variables, methods,
+ and classes to make names more readable:
+ </p>
+
+ <table>
+ <thead>
+ <tr>
+ <th>Good</th>
+ <th>Bad</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>XmlHttpRequest</td>
+ <td>XMLHTTPRequest</td>
+ </tr>
+ <tr>
+ <td>getCustomerId</td>
+ <td>getCustomerID</td>
+ </tr>
+ <tr>
+ <td>class Html</td>
+ <td>class HTML</td>
+ </tr>
+ <tr>
+ <td>String url</td>
+ <td>String URL</td>
+ </tr>
+ <tr>
+ <td>long id</td>
+ <td>long ID</td>
+ </tr>
+ </tbody>
+ </table>
+
+ <p>
+ As both the JDK and the Android code bases are very inconsistent around
+ acronyms, it is virtually impossible to be consistent with the
+ surrounding code. Therefore, always treat acronyms as words.
+ </p>
+
+ <h3 id="use-todo-comments">Use TODO comments</h3>
+
+ <p>
+ Use TODO comments for code that is temporary, a short-term solution, or
+ good-enough but not perfect. TODOs should include the string TODO in all
+ caps, followed by a colon:
+ </p>
+
+<pre class="prettyprint">
+// TODO: Remove this code after the UrlTable2 has been checked in.
+</pre>
+
+ <p>and</p>
+
+<pre class="prettyprint">
+// TODO: Change this to use a flag instead of a constant.
+</pre>
+
+ <p>
+ If your TODO is of the form "At a future date do something" make sure
+ that you either include a very specific date ("Fix by November 2005") or
+ a very specific event ("Remove this code after all production mixers
+ understand protocol V7.").
+ </p>
+
+ <h3 id="log-sparingly">Log sparingly</h3>
+
+ <p>
+ While logging is necessary, it has a significantly negative impact on
+ performance and quickly loses its usefulness if not kept reasonably
+ terse. The logging facilities provides five different levels of logging:
+ </p>
+
+ <ul>
+ <li>
+ <code>ERROR</code>: Use when something fatal has happened, i.e.
+ something will have user-visible consequences and won't be recoverable
+ without explicitly deleting some data, uninstalling applications,
+ wiping the data partitions or reflashing the entire device (or worse).
+ This level is always logged. Issues that justify some logging at the
+ ERROR level are typically good candidates to be reported to a
+ statistics-gathering server.
+ </li>
+ <li>
+ <code>WARNING</code>: Use when something serious and unexpected
+ happened, i.e. something that will have user-visible consequences but
+ is likely to be recoverable without data loss by performing some
+ explicit action, ranging from waiting or restarting an app all the way
+ to re-downloading a new version of an application or rebooting the
+ device. This level is always logged. Issues that justify some logging
+ at the WARNING level might also be considered for reporting to a
+ statistics-gathering server.
+ </li>
+ <li>
+ <code>INFORMATIVE:</code> Use to note that something interesting to
+ most people happened, i.e. when a situation is detected that is likely
+ to have widespread impact, though isn't necessarily an error. Such a
+ condition should only be logged by a module that reasonably believes
+ that it is the most authoritative in that domain (to avoid duplicate
+ logging by non-authoritative components). This level is always logged.
+ </li>
+ <li>
+ <code>DEBUG</code>: Use to further note what is happening on the
+ device that could be relevant to investigate and debug unexpected
+ behaviors. You should log only what is needed to gather enough
+ information about what is going on about your component. If your debug
+ logs are dominating the log then you probably should be using verbose
+ logging.
+
+ <p>
+ This level will be logged, even on release builds, and is required
+ to be surrounded by an <code>if (LOCAL_LOG)</code> or <code>if
+ LOCAL_LOGD)</code> block, where <code>LOCAL_LOG[D]</code> is defined
+ in your class or subcomponent, so that there can exist a possibility
+ to disable all such logging. There must therefore be no active logic
+ in an <code>if (LOCAL_LOG)</code> block. All the string building for
+ the log also needs to be placed inside the
+ <code>if (LOCAL_LOG)</code> block. The logging call should not be
+ re-factored out into a method call if it is going to cause the
+ string building to take place outside of the
+ <code>if (LOCAL_LOG)</code> block.
+ </p>
+
+ <p>
+ There is some code that still says <code>if (localLOGV)</code>. This
+ is considered acceptable as well, although the name is nonstandard.
+ </p>
+ </li>
+ <li>
+ <code>VERBOSE</code>: Use for everything else. This level will only be
+ logged on debug builds and should be surrounded by an
+ <code>if (LOCAL_LOGV)</code> block (or equivalent) so it can be
+ compiled out by default. Any string building will be stripped out of
+ release builds and needs to appear inside the
+ <code>if (LOCAL_LOGV)</code> block.
+ </li>
+ </ul>
+
+ <h4="log-sparingly-notes">Notes</h4>
+
+ <ul>
+ <li>
+ Within a given module, other than at the VERBOSE level, an error
+ should only be reported once if possible. Within a single chain of
+ function calls within a module, only the innermost function should
+ return the error, and callers in the same module should only add
+ some logging if that significantly helps to isolate the issue.
+ </li>
+ <li>
+ In a chain of modules, other than at the VERBOSE level, when a
+ lower-level module detects invalid data coming from a higher-level
+ module, the lower-level module should only log this situation to the
+ DEBUG log, and only if logging provides information that is not
+ otherwise available to the caller. Specifically, there is no need to
+ log situations where an exception is thrown (the exception should
+ contain all the relevant information), or where the only information
+ being logged is contained in an error code. This is especially
+ important in the interaction between the framework and applications,
+ and conditions caused by third-party applications that are properly
+ handled by the framework should not trigger logging higher than the
+ DEBUG level. The only situations that should trigger logging at the
+ INFORMATIVE level or higher is when a module or application detects
+ an error at its own level or coming from a lower level.
+ </li>
+ <li>
+ When a condition that would normally justify some logging is likely
+ to occur many times, it can be a good idea to implement some
+ rate-limiting mechanism to prevent overflowing the logs with many
+ duplicate copies of the same (or very similar) information.
+ </li>
+ <li>
+ Losses of network connectivity are considered common, fully
+ expected, and should not be logged gratuitously. A loss of network
+ connectivity that has consequences within an app should be logged at
+ the DEBUG or VERBOSE level (depending on whether the consequences
+ are serious enough and unexpected enough to be logged in a release
+ build).
+ </li>
+ <li>
+ Having a full filesystem on a filesystem that is accessible to or on
+ behalf of third-party applications should not be logged at a level
+ higher than INFORMATIVE.
+ </li>
+ <li>
+ Invalid data coming from any untrusted source (including any file on
+ shared storage, or data coming through just about any network
+ connection) is considered expected and should not trigger any
+ logging at a level higher than DEBUG when it's detected to be
+ invalid (and even then logging should be as limited as possible).
+ </li>
+ <li>
+ Keep in mind that the <code>+</code> operator, when used on Strings,
+ implicitly creates a <code>StringBuilder</code> with the default
+ buffer size (16 characters) and potentially other temporary String
+ objects, i.e. that explicitly creating StringBuilders isn't more
+ expensive than relying on the default '+' operator (and can be a lot
+ more efficient in fact). Keep in mind that code that calls
+ <code>Log.v()</code> is compiled and executed on release builds,
+ including building the strings, even if the logs aren't being read.
+ </li>
+ <li>
+ Any logging that is meant to be read by other people and to be
+ available in release builds should be terse without being cryptic,
+ and should be reasonably understandable. This includes all logging
+ up to the DEBUG level.
+ </li>
+ <li>
+ When possible, logging should be kept on a single line if it
+ makes sense. Line lengths up to 80 or 100 characters are perfectly
+ acceptable, while lengths longer than about 130 or 160 characters
+ including the length of the tag) should be avoided if possible.
+ </li>
+ <li>
+ Logging that reports successes should never be used at levels higher
+ than VERBOSE.
+ </li>
+ <li>
+ Temporary logging used to diagnose an issue that is hard to
+ reproduce should be kept at the DEBUG or VERBOSE level and should be
+ enclosed by if blocks that allow for disabling it entirely at
+ compile time.
+ </li>
+ <li>
+ Be careful about security leaks through the log. Private
+ information should be avoided. Information about protected content
+ must definitely be avoided. This is especially important when
+ writing framework code as it's not easy to know in advance what will
+ and will not be private information or protected content.
+ </li>
+ <li>
+ <code>System.out.println()</code> (or <code>printf()</code> for
+ native code) should never be used. System.out and System.err get
+ redirected to /dev/null, so your print statements will have no
+ visible effects. However, all the string building that happens for
+ these calls still gets executed.
+ </li>
+ <li>
+ <em>The golden rule of logging is that your logs may not
+ unnecessarily push other logs out of the buffer, just as others may
+ not push out yours.</em>
+ </li>
+ </ul>
+
+ <h3 id="be-consistent">Be consistent</h3>
+
+ <p>
+ Our parting thought: BE CONSISTENT. If you're editing code, take a few
+ minutes to look at the surrounding code and determine its style. If that
+ code uses spaces around the if clauses, you should too. If the code
+ comments have little boxes of stars around them, make your comments have
+ little boxes of stars around them too.
+ </p>
+
+ <p>
+ The point of having style guidelines is to have a common vocabulary of
+ coding, so people can concentrate on what you're saying, rather than on
+ how you're saying it. We present global style rules here so people know
+ the vocabulary, but local style is also important. If the code you add
+ to a file looks drastically different from the existing code around it,
+ it throws readers out of their rhythm when they go to read it. Try to
+ avoid this.
+ </p>
<h2 id="javatests-style-rules">Javatests style rules</h2>
-<p>Follow test method naming conventions and use an underscore to separate what
-is being tested from the specific case being tested. This style makes it easier
-to see exactly what cases are being tested. For example:</p>
-<pre><code>testMethod_specificCase1 testMethod_specificCase2
+
+ <p>
+ Follow test method naming conventions and use an underscore to separate
+ what is being tested from the specific case being tested. This style makes
+ it easier to see exactly what cases are being tested. For example:
+ </p>
+
+<pre class="prettyprint">
+testMethod_specificCase1 testMethod_specificCase2
void testIsDistinguishable_protanopia() {
ColorMatcher colorMatcher = new ColorMatcher(PROTANOPIA)
assertFalse(colorMatcher.isDistinguishable(Color.RED, Color.BLACK))
assertTrue(colorMatcher.isDistinguishable(Color.X, Color.Y))
}
-</code></pre>
+</pre>
</body>
</html>
diff --git a/en/setup/images/dashboard.png b/en/setup/images/dashboard.png
new file mode 100644
index 00000000..b6fda151
--- /dev/null
+++ b/en/setup/images/dashboard.png
Binary files differ
diff --git a/en/setup/start/build-numbers.html b/en/setup/start/build-numbers.html
index 31f53d26..2b114631 100644
--- a/en/setup/start/build-numbers.html
+++ b/en/setup/start/build-numbers.html
@@ -241,6 +241,30 @@ following table.
</thead>
<tbody>
<tr>
+ <td>PQ1A.181205.006.A1</td>
+ <td>android-9.0.0_r22</td>
+ <td>Pie</td>
+ <td>Pixel 3 XL, Pixel 3</td>
+ </tr>
+ <tr>
+ <td>PQ1A.181205.006</td>
+ <td>android-9.0.0_r21</td>
+ <td>Pie</td>
+ <td>Pixel 3 XL, Pixel 3</td>
+ </tr>
+ <tr>
+ <td>PQ1A.181205.002.A1</td>
+ <td>android-9.0.0_r20</td>
+ <td>Pie</td>
+ <td>Pixel XL, Pixel</td>
+ </tr>
+ <tr>
+ <td>PQ1A.181205.002</td>
+ <td>android-9.0.0_r19</td>
+ <td>Pie</td>
+ <td>Pixel 2 XL, Pixel 2</td>
+ </tr>
+ <tr>
<td>PPR2.181005.003.A1</td>
<td>android-9.0.0_r18</td>
<td>Pie</td>
@@ -339,6 +363,18 @@ following table.
<td>2018-08-05</td>
</tr>
<tr>
+ <td>OPM8.181205.001</td>
+ <td>android-8.1.0_r53</td>
+ <td>Oreo</td>
+ <td>Pixel C</td>
+ </tr>
+ <tr>
+ <td>OPM7.181205.001</td>
+ <td>android-8.1.0_r52</td>
+ <td>Oreo</td>
+ <td>Nexus 5X, Nexus 6P</td>
+ </tr>
+ <tr>
<td>OPM8.181105.002</td>
<td>android-8.1.0_r51</td>
<td>Oreo</td>
diff --git a/en/setup/start/p-release-notes.md b/en/setup/start/p-release-notes.md
index 5e42ed73..86ff573e 100644
--- a/en/setup/start/p-release-notes.md
+++ b/en/setup/start/p-release-notes.md
@@ -271,9 +271,8 @@ provide more Settings functionality and easier implementation.
### Atest
-[Atest](https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md){: .external}
-is a new command line tool that allows users to build, install and run Android
-tests locally.
+[Atest](/compatibility/tests/development/atest) is a new command line tool that
+allows users to build, install and run Android tests locally, greatly speeding test re-runs without requiring knowledge of Trade Federation test harness command line options.
### Compatibility Test Suite (CTS)
@@ -769,7 +768,7 @@ vehicle HAL interface.
When working with new Global Navigation Satellite System (GNSS) HALs (v1.1+),
the Android Framework will monitor Android Settings. Partners can change the
-Settings from Google Play Services or other system updatees. These settings
+Settings from Google Play Services or other system updates. These settings
tell the GNSS HAL if certain GNSS satellites should not be used. This can be
useful in case of persistent GNSS satellite or constellation errors, or to
react more rapidly to GNSS HAL implementation issues that may occur when
diff --git a/ja/security/bulletin/2018-08-01.html b/ja/security/bulletin/2018-08-01.html
index 4368b155..27867764 100644
--- a/ja/security/bulletin/2018-08-01.html
+++ b/ja/security/bulletin/2018-08-01.html
@@ -29,7 +29,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/index.html">Android と Google サービスでのリスク軽減策</a>をご覧ください。
+この新たに報告された問題によって実際のユーザー端末が不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/index.html">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google サービスでのリスク軽減策</a>をご覧ください。
</p>
<p class="note">
<strong>注:</strong> 最新の無線(OTA)アップデートと Google 端末のファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-08-01.html">2018 年 8 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
diff --git a/ja/security/bulletin/2018-11-01.html b/ja/security/bulletin/2018-11-01.html
index 30593279..055a9e7d 100644
--- a/ja/security/bulletin/2018-11-01.html
+++ b/ja/security/bulletin/2018-11-01.html
@@ -19,12 +19,12 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>2018 年 11 月 5 日公開</em></p>
+<p><em>2018 年 11 月 5 日公開 | 2018 年 11 月 5 日更新</em></p>
-<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-11-05 以降では、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-11-05 以降では、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する方法</a>をご覧ください。
</p>
<p>
-Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。下記の問題に対するソースコードのパッチは、これから 48 時間の間に Android オープンソース プロジェクト(AOSP)リポジトリにリリースされます。AOSP リンクが利用できるようになり次第、この公開情報を改訂します。</p>
+Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)リポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
<p>下記の問題のうち最も重大な脆弱性により、近くにいる攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあります。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
</p>
<p>
@@ -33,7 +33,6 @@ Android パートナーには、情報公開の 1 か月前までにすべての
<p class="note">
<strong>注:</strong> 最新の無線(OTA)アップデートと Google 端末のファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-11-01">2018 年 11 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
</p>
-
<h2 id="announcements">お知らせ</h2>
<p>
Libxaac ライブラリでセキュリティに関する問題がいくつか見つかりました(CVE-2018-9528、CVE-2018-9529、CVE-2018-9530、CVE-2018-9531、CVE-2018-9532、CVE-2018-9533、CVE-2018-9534、CVE-2018-9535、CVE-2018-9569、CVE-2018-9570、CVE-2018-9571、CVE-2018-9572、CVE-2018-9573、CVE-2018-9574、CVE-2018-9575、CVE-2018-9576、CVE-2018-9577、CVE-2018-9578 など)。</p>
@@ -69,21 +68,21 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
</tr>
<tr>
<td>CVE-2018-9522</td>
- <td>A-112550251</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/181dc252ddec574464882970d3fab290e8b625b5" class="external">A-112550251</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9524</td>
- <td>A-34170870</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c9bc35a45da1e765eb36af604c0c580bd66644cc" class="external">A-34170870</a></td>
<td>EoP</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
</tr>
<tr>
<td>CVE-2018-9525</td>
- <td>A-111330641</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/6409cf5c94cc1feb72dc078e84e66362fbecd6d5" class="external">A-111330641</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
@@ -108,42 +107,42 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
</tr>
<tr>
<td>CVE-2018-9527</td>
- <td>A-112159345</td>
+ <td><a href="https://android.googlesource.com/platform/external/tremolo/+/cafff8f4535c8bf933c5a2fcb1a0dd66fb75a1c2" class="external">A-112159345</a></td>
<td>RCE</td>
<td>重大</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9531</td>
- <td>A-112661641</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/c2208f2a3098410c5a4c79ad6bd4b6d7e1c0b03f" class="external">A-112661641</a></td>
<td>RCE</td>
<td>重大</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9536</td>
- <td>A-112662184</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/9744e41c40598c6a0b74440f3b5be63f9f3708a5" class="external">A-112662184</a></td>
<td>EoP</td>
<td>重大</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9537</td>
- <td>A-112891564</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/61381bd0f4bc012876ccf4b63eafddd2d60c35c9" class="external">A-112891564</a></td>
<td>EoP</td>
<td>重大</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9521</td>
- <td>A-111874331</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/083263937bfb1623adf6015da7ca3cdc258e0352" class="external">A-111874331</a></td>
<td>RCE</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9539</td>
- <td>A-113027383</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/efe34a570d91b826b009d40e44c2e470dd180ace" class="external">A-113027383</a></td>
<td>EoP</td>
<td>高</td>
<td>8.0、8.1、9</td>
@@ -168,42 +167,42 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
</tr>
<tr>
<td>CVE-2018-9540</td>
- <td>A-111450417</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/99d54d0c7dbab6c80f15bbf886ed203b2a547453" class="external">A-111450417</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9542</td>
- <td>A-111896861</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111896861</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9543</td>
- <td>A-112868088</td>
+ <td><a href="https://android.googlesource.com/platform/external/f2fs-tools/+/71313114a147ee3fc4a411904de02ea8b6bf7f91" class="external">A-112868088</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9544</td>
- <td>A-113037220</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113037220</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9545</td>
- <td>A-113111784</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113111784</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td rowspan="2">CVE-2018-9541</td>
- <td rowspan="2">A-111450531</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111450531</a></td>
<td>ID</td>
<td>中</td>
<td>9</td>
@@ -215,54 +214,6 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
</tr>
</tbody></table>
-<h3 id="update-media-framework">更新: メディア フレームワーク</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>参照</th>
- <th>タイプ</th>
- <th>重大度</th>
- <th>更新対象の AOSP バージョン</th>
- </tr>
- <tr>
- <td>CVE-2018-9347</td>
- <td>A-68664359</td>
- <td>DoS</td>
- <td>中</td>
- <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
-<h3 id="update-system">更新: システム</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>参照</th>
- <th>タイプ</th>
- <th>重大度</th>
- <th>更新対象の AOSP バージョン</th>
- </tr>
- <tr>
- <td>CVE-2018-9457</td>
- <td>A-72872376</td>
- <td>EoP</td>
- <td>中</td>
- <td>8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-11-05-details">セキュリティ パッチレベル 2018-11-05 の脆弱性の詳細</h2>
<p>
パッチレベル 2018-11-05 に該当するセキュリティ脆弱性の各項目について、下記で詳しく説明します。影響を受けるコンポーネントごとに脆弱性を分類し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、コンポーネント(該当する場合)、更新対象の AOSP バージョン(該当する場合)などの詳細を記載しています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に番号を併記して、追加の参照先へのリンクを設定しています。</p>
@@ -285,18 +236,11 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
</tr>
<tr>
<td>CVE-2018-9523</td>
- <td>A-112859604</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/6a947f048a76a5936fd2b693e01f849aef22c907" class="external">A-112859604</a></td>
<td>EoP</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
- <tr>
- <td>CVE-2018-9526</td>
- <td>A-112159033</td>
- <td>ID</td>
- <td>高</td>
- <td>9</td>
- </tr>
</tbody></table>
<h3 id="qualcomm-components">Qualcomm コンポーネント</h3>
@@ -580,6 +524,11 @@ Android 搭載端末の最新のセキュリティ パッチレベルを宣言
<td>2018 年 11 月 5 日</td>
<td>情報公開</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 11 月 5 日</td>
+ <td>公開情報を改訂し AOSP リンクを追加</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/2018-12-01.html b/ja/security/bulletin/2018-12-01.html
new file mode 100644
index 00000000..722d9835
--- /dev/null
+++ b/ja/security/bulletin/2018-12-01.html
@@ -0,0 +1,706 @@
+<html devsite><head>
+ <title>Android のセキュリティに関する公開情報 - 2018 年 12 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>公開日: 2018 年 12 月 3 日</em></p>
+
+<p>
+Android のセキュリティに関する公開情報には、Android 搭載デバイスに影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-12-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+</p>
+<p>下記の問題に対するソースコードのパッチは、これから 48 時間の間に Android オープンソース プロジェクト(AOSP)リポジトリにリリースされます。AOSP リンクが利用できるようになり次第、この公開情報を改訂します。</p>
+<p>
+下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあることです。<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>
+</p>
+<p class="note">
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-12-01">2018 年 12 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
+</p>
+
+<h2 id="mitigations">Android と Google サービスでのリスク軽減策</h2>
+
+<p>
+ここでは、<a href="/security/enhancements/">Android セキュリティ プラットフォーム</a>や <a href="https://www.android.com/play-protect" class="external">Google Play プロテクト</a>のようなサービスでの保護によってリスクを軽減する手段について概説します。こうした機能は、Android でセキュリティの脆弱性が悪用される可能性を減らすものです。
+</p>
+<ul>
+<li>Android 上の多くの問題の悪用は、Android プラットフォームの最新版で機能が強化されるほど困難になります。Google では、すべてのユーザーに対し、できる限り最新バージョンの 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>についてユーザーに警告しています。Google Play プロテクトは、<a href="http://www.android.com/gms" class="external">Google モバイル サービス</a>を搭載したデバイスでデフォルトで有効になっており、Google Play 以外からアプリをインストールするユーザーにとっては特に重要です。</li>
+</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 バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
+
+<h3 id="framework">フレームワーク</h3>
+
+<p>フレームワークの最も重大な脆弱性により、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>更新対象の AOSP バージョン</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9547</td>
+ <td>A-114223584</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9548</td>
+ <td>A-112555574</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+</tbody></table>
+
+<h3 id="media-framework">メディア フレームワーク</h3>
+<p>メディア フレームワークの最も重大な脆弱性により、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>更新対象の AOSP バージョン</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9549</td>
+ <td>A-112160868</td>
+ <td>RCE</td>
+ <td>重大</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9550</td>
+ <td>A-112660981</td>
+ <td>RCE</td>
+ <td>重大</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9551</td>
+ <td>A-112891548</td>
+ <td>RCE</td>
+ <td>重大</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9552</td>
+ <td>A-113260892</td>
+ <td>ID</td>
+ <td>重大</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9553</td>
+ <td>A-116615297</td>
+ <td>RCE</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9538</td>
+ <td>A-112181526</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9554</td>
+ <td>A-114770654</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1</td>
+ </tr>
+</tbody></table>
+
+<h3 id="system">システム</h3>
+<p>システムの最も重大な脆弱性により、リモートの攻撃者が特別に細工した通信を使用して、特権プロセス内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>更新対象の AOSP バージョン</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9555</td>
+ <td>A-112321180</td>
+ <td>RCE</td>
+ <td>重大</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9556</td>
+ <td>A-113118184</td>
+ <td>RCE</td>
+ <td>重大</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9557</td>
+ <td>A-35385357</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9558</td>
+ <td>A-112161557</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9559</td>
+ <td>A-112731440</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9560</td>
+ <td>A-79946737</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9562</td>
+ <td>A-113164621</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9566</td>
+ <td>A-74249842</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+</tbody></table>
+
+<h2 id="2018-12-05-details">セキュリティ パッチレベル 2018-12-05 の脆弱性の詳細</h2>
+
+<p>
+パッチレベル 2018-12-05 に該当するセキュリティ脆弱性の各項目について、下記で詳しく説明します。影響を受けるコンポーネントごとに脆弱性を分類し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、コンポーネント(該当する場合)、更新対象の AOSP バージョン(該当する場合)などの詳細を記載しています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
+
+<h3 id="system-05">システム</h3>
+
+<p>システムの最も重大な脆弱性により、追加の実行権限を必要とすることなく、リモートで情報が漏えいするおそれがあります。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>コンポーネント</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9565</td>
+ <td>A-16680558</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>OMA-DM</td>
+ </tr>
+</tbody></table>
+
+<h3 id="htc-components">HTC コンポーネント</h3>
+
+<p>HTC コンポーネントの最も重大な脆弱性により、ローカルの攻撃者によって、追加権限を取得するためのユーザー操作の要件が回避されるおそれがあります。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>コンポーネント</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9567</td>
+ <td>A-65543936</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ブートローダー</td>
+ </tr>
+</tbody></table>
+
+<h3 id="kernel-components">カーネル コンポーネント</h3>
+
+<p>カーネル コンポーネントの最も重大な脆弱性により、ローカルの攻撃者が特権プロセス内で任意のコードを実行するおそれがあります。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>コンポーネント</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10840</td>
+ <td>A-116406508<br />
+<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 ファイル システム</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9568</td>
+ <td>A-113509306<br />
+<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/core/sock.c?id=9d538fa60bad4f7b23193c89e843797a1cf71ef3">アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ネットワーク</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-components">Qualcomm コンポーネント</h3>
+
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。このような問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>コンポーネント</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11960</td>
+ <td>A-114042002<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=18ce15db603e19cfac9a2f4076f255e879100495">QC-CR#2264832</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>HWEngines</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11961</td>
+ <td>A-114040881<br />
+<a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=c57ee0a5d3261ab20c35b451d1b3ae2b02a21591">QC-CR#2261813</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>GPS_AP_LINUX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11963</td>
+ <td>A-114041685<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c9ac3476a91c384a3f2760fabaecef0ad8698d7b">QC-CR#2220770</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>車載マルチメディア</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-closed-source-components">Qualcomm クローズドソース コンポーネント</h3>
+
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。このような問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>コンポーネント</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-8248</td>
+ <td>A-78135902<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>重大</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11004</td>
+ <td>A-66913713<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>重大</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18141</td>
+ <td>A-67712316<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>重大</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5913</td>
+ <td>A-79419833<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>重大</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11279</td>
+ <td>A-109678200<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>重大</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18319</td>
+ <td>A-78284753<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18321</td>
+ <td>A-78283451<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18322</td>
+ <td>A-78285196<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18323</td>
+ <td>A-78284194<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18324</td>
+ <td>A-78284517<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18327</td>
+ <td>A-78240177<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18331</td>
+ <td>A-78239686<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18332</td>
+ <td>A-78284545<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18160</td>
+ <td>A-109660689<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18326</td>
+ <td>A-78240324<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8276</td>
+ <td>A-68141338<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18328</td>
+ <td>A-78286046<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18329</td>
+ <td>A-73539037<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18330</td>
+ <td>A-73539235<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3595</td>
+ <td>A-71501115<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18320</td>
+ <td>A-33757308<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11999</td>
+ <td>A-74236942<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5867</td>
+ <td>A-77485184<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5868</td>
+ <td>A-77484529<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5869</td>
+ <td>A-33385206<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-79419639<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5915</td>
+ <td>A-79420511<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11267</td>
+ <td>A-109678338<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11922</td>
+ <td>A-112279564<a href="#asterisk">*</a></td>
+ <td>なし</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">一般的な質問と回答</h2>
+
+<p>上記の公開情報に対する一般的な質問についての回答は以下のとおりです。</p>
+<p><strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?</strong></p>
+<p>デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Android のバージョンを確認して更新する</a>をご覧ください。</p>
+<ul>
+<li>セキュリティ パッチレベル 2018-12-01 以降では、セキュリティ パッチレベル 2018-12-01 に関連するすべての問題に対処しています。</li>
+<li>セキュリティ パッチレベル 2018-12-05 以降では、セキュリティ パッチレベル 2018-12-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
+</ul>
+<p>デバイス メーカーは、こうしたアップデートを組み込む場合、パッチレベル文字列を以下のとおり設定する必要があります。</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2018-12-01]</li>
+ <li>[ro.build.version.security_patch]:[2018-12-05]</li>
+</ul>
+<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
+<p>
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+</p>
+<ul>
+<li>2018-12-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2018-12-05 以降のセキュリティ パッチレベルを使用するデバイスには、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
+</ul>
+<p>
+パートナーは、対処する問題すべてについて、修正を 1 つのアップデートにまとめて提供することが推奨されます。
+</p>
+<p id="type">
+<strong>3. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
+</p>
+<p>
+脆弱性の詳細の表で「タイプ<em></em>」列に記載した項目は、セキュリティの脆弱性の分類を示しています。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>略語</th>
+ <th>定義</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>リモートコード実行</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>権限昇格</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>情報開示</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>サービス拒否</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>該当する分類なし</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>4. 「参照<em></em>」列の項目はどういう意味ですか?</strong>
+</p>
+<p>
+脆弱性の詳細の表で「参照<em></em>」列に記載した項目には、その参照番号が属す組織を示す接頭辞が含まれる場合があります。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>接頭辞</th>
+ <th>参照</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android バグ ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm の参照番号</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek の参照番号</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA の参照番号</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom の参照番号</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>5. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
+</p>
+<p>
+公開されていない問題には、「参照」列の Android バグ ID の横に「*」を付けています。<em></em>この問題のアップデートは、<a href="https://developers.google.com/android/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに通常含まれています。
+</p>
+<p>
+<strong>6. セキュリティの脆弱性が、この公開情報と端末やパートナーのセキュリティに関する公開情報(Pixel / Nexus のセキュリティに関する公開情報など)に分けられているのはなぜですか?</strong>
+</p>
+<p>
+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> などの Android 搭載デバイスやチップセットのメーカーは、自社のデバイスに関して他にも修正がある場合、その情報を自社のセキュリティ関連のウェブサイトや <a href="/security/bulletin/pixel/" class="external">Pixel / Nexus</a> のセキュリティに関する公開情報に掲載することが推奨されます。
+</p>
+
+<h2 id="versions">バージョン</h2>
+
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>バージョン</th>
+ <th>日付</th>
+ <th>メモ</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018 年 12 月 3 日</td>
+ <td>情報公開</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/pixel/2018-01-01.html b/ja/security/bulletin/pixel/2018-01-01.html
index d9dd9326..941c2385 100644
--- a/ja/security/bulletin/pixel/2018-01-01.html
+++ b/ja/security/bulletin/pixel/2018-01-01.html
@@ -512,7 +512,8 @@ QC-CR#2072966</a></td>
<td>A-67713104<br />
<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=57377acfed328757da280f4adf1c300f0b032422">
QC-CR#2057144</a>
- [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=e9492b99156137cf533722eea6ba8846d424c800">2</a>]</td>
+ [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=e9492b99156137cf533722eea6ba8846d424c800">
+2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>グラフィックス ドライバ</td>
diff --git a/ja/security/bulletin/pixel/2018-04-01.html b/ja/security/bulletin/pixel/2018-04-01.html
index 70d0f192..2327c111 100644
--- a/ja/security/bulletin/pixel/2018-04-01.html
+++ b/ja/security/bulletin/pixel/2018-04-01.html
@@ -619,7 +619,7 @@ QC-CR#2098332</a></td>
<tr>
<td>A-67774904</td>
<td>接続</td>
- <td>Wi-Fi でのマルチ通話のパフォーマンスを向上</td>
+ <td>Wi-Fi でのマルチ通話のパフォーマンスを改善</td>
<td>Pixel、Pixel XL</td>
</tr>
<tr>
@@ -679,7 +679,7 @@ QC-CR#2098332</a></td>
A-68922470<br />
A-68940490</td>
<td>証明書</td>
- <td>サービスの継続的な提供のために証明書をアップグレード</td>
+ <td>サービスを確実に継続できるよう証明書をアップグレード</td>
<td>Nexus 5X、Pixel、Pixel XL、Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
@@ -766,7 +766,7 @@ QC-CR#2098332</a></td>
<tr>
<td>A-69672417</td>
<td>安定性</td>
- <td>カナダの一部地域における Pixel 2 端末の安定性を向上</td>
+ <td>カナダの一部地域における Pixel 2 端末の安定性を改善</td>
<td>Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
@@ -779,7 +779,7 @@ QC-CR#2098332</a></td>
<tr>
<td>A-69870527</td>
<td>UI</td>
- <td>緊急通報接続のインジケーターを改善</td>
+ <td>緊急通報接続のインジケーターを改良</td>
<td>Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
diff --git a/ja/security/bulletin/pixel/2018-06-01.html b/ja/security/bulletin/pixel/2018-06-01.html
index 11858e02..5b72ca80 100644
--- a/ja/security/bulletin/pixel/2018-06-01.html
+++ b/ja/security/bulletin/pixel/2018-06-01.html
@@ -855,7 +855,7 @@ A-74058011</td>
<strong>5. セキュリティの脆弱性が、この公開情報と「Android のセキュリティに関する公開情報」に分けられているのはなぜですか?</strong>
</p>
<p>
-Android 搭載端末の最新のセキュリティ パッチレベルを宣言するためには、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
+Android 搭載端末の最新のセキュリティ パッチレベルを宣言するにあたっては、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要となります。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
</p>
<h2 id="versions">バージョン</h2>
<table>
diff --git a/ja/security/bulletin/pixel/2018-07-01.html b/ja/security/bulletin/pixel/2018-07-01.html
index 177587e9..b60aa9c7 100644
--- a/ja/security/bulletin/pixel/2018-07-01.html
+++ b/ja/security/bulletin/pixel/2018-07-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>2018 年 7 月 2 日公開 | 2018 年 7 月 3 日更新</em></p>
+<p><em>2018 年 7 月 2 日公開 | 2018 年 11 月 8 日更新</em></p>
<p>
Pixel / Nexus のセキュリティに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">サポート対象の Google Pixel 端末と Nexus 端末</a>(Google 端末)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。Google 端末では、セキュリティ パッチレベル 2018-07-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 7 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認するには、<a href="https://support.google.com/pixelphone/answer/4457705">Android のバージョンを確認して更新する</a>方法の説明をご覧ください。
@@ -221,7 +221,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
</tr>
<tr>
- <td>CVE-2017-1000</td>
+ <td>CVE-2017-1000112</td>
<td>A-68806309<br />
<a href="https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=85f1bd9a7b5a79d5baa8bf44af19658f7bf77bfa">アップストリーム カーネル</a></td>
<td>EoP</td>
@@ -438,7 +438,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<strong>5. セキュリティの脆弱性が、この公開情報と「Android のセキュリティに関する公開情報」に分けられているのはなぜですか?</strong>
</p>
<p>
-Android 搭載端末の最新のセキュリティ パッチレベルを宣言するためには、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
+Android 搭載端末の最新のセキュリティ パッチレベルを宣言するにあたっては、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要となります。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
</p>
<h2 id="versions">バージョン</h2>
<table>
@@ -460,6 +460,11 @@ Android 搭載端末の最新のセキュリティ パッチレベルを宣言
<td>2018 年 7 月 3 日</td>
<td>公開情報を改訂し AOSP リンクを追加</td>
</tr>
+ <tr>
+ <td>1.2</td>
+ <td>2018 年 11 月 8 日</td>
+ <td>公開情報を改訂し CVE-2017-1000112 を修正</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/pixel/2018-08-01.html b/ja/security/bulletin/pixel/2018-08-01.html
index 77e9fb0f..72c1c181 100644
--- a/ja/security/bulletin/pixel/2018-08-01.html
+++ b/ja/security/bulletin/pixel/2018-08-01.html
@@ -493,13 +493,13 @@ QC-CR#2185477</a></td>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照」列の Android バグ ID の横に「*」を付けています。<em></em>この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
</p>
<p>
<strong>5. セキュリティの脆弱性が、この公開情報と「Android のセキュリティに関する公開情報」に分けられているのはなぜですか?</strong>
</p>
<p>
-Android 搭載端末の最新のセキュリティ パッチレベルを宣言するためには、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
+Android 搭載端末の最新のセキュリティ パッチレベルを宣言するにあたっては、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要となります。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
</p>
<h2 id="versions">バージョン</h2>
<table>
diff --git a/ja/security/bulletin/pixel/2018-09-01.html b/ja/security/bulletin/pixel/2018-09-01.html
index ff691e8a..b9c98845 100644
--- a/ja/security/bulletin/pixel/2018-09-01.html
+++ b/ja/security/bulletin/pixel/2018-09-01.html
@@ -312,13 +312,13 @@ QC-CR#2204285</a>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照」列の Android バグ ID の横に「*」を付けています。<em></em>この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
</p>
<p>
<strong>5. セキュリティの脆弱性が、この公開情報と「Android のセキュリティに関する公開情報」に分けられているのはなぜですか?</strong>
</p>
<p>
-Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性については、Android 搭載端末の最新のセキュリティ パッチレベルを公表するにあたって、対処が必須となります。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は、セキュリティ パッチレベルの公表には必要ありません。
+Android 搭載端末の最新のセキュリティ パッチレベルを宣言するためには、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
</p>
<h2 id="versions">バージョン</h2>
<table>
diff --git a/ja/security/bulletin/pixel/2018-11-01.html b/ja/security/bulletin/pixel/2018-11-01.html
index bf2e8420..dce744c6 100644
--- a/ja/security/bulletin/pixel/2018-11-01.html
+++ b/ja/security/bulletin/pixel/2018-11-01.html
@@ -40,7 +40,34 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<h2 id="security-patches">セキュリティ パッチ</h2>
<p>
脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources#severity">重大度</a>、更新対象の AOSP(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。
-該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
+該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に続く番号で、追加の参照先へのリンクを示します。</p>
+
+<h3 id="framework-05">フレームワーク</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>更新対象の AOSP バージョン</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9526</td>
+ <td><a href="https://android.googlesource.com/device/google/marlin/+/fa7f7382e8b39f7ca209824f97788ab25c44f6a3" class="external">A-112159033</a>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/8e81142af3dceb913ca50f67df3ded84233f932a">2</a>]
+ [<a href="https://android.googlesource.com/platform/hardware/qcom/sdm845/gps/+/a5f7c07edd96c69171e8bd758addda7d5c30e3eb">3</a>]
+ </td>
+ <td>ID</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+</tbody></table>
<h3 id="htc-components">HTC コンポーネント</h3>
diff --git a/ja/security/bulletin/pixel/2018-12-01.html b/ja/security/bulletin/pixel/2018-12-01.html
new file mode 100644
index 00000000..49f0cc2c
--- /dev/null
+++ b/ja/security/bulletin/pixel/2018-12-01.html
@@ -0,0 +1,274 @@
+<html devsite><head>
+ <title>Pixel  /  Nexus のセキュリティに関する公開情報 - 2018 年 12 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p><em>公開日: 2018 年 12 月 3 日</em></p>
+
+<p>
+Pixel / Nexus のセキュリティに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">サポート対象の Google Pixel デバイスと Nexus デバイス</a>(Google デバイス)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。Google デバイスでは、セキュリティ パッチレベル 2018-12-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 12 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+</p>
+<p>
+パッチレベル 2018-12-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
+</p>
+<p class="note">
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
+</p>
+
+<h2 id="announcements">お知らせ</h2>
+
+<p><a href="/security/bulletin/2018-12-01">2018 年 12 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Google デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーはデバイスのアップデートにこうしたパッチを組み込むことができます。
+</p>
+
+<h2 id="security-patches">セキュリティ パッチ</h2>
+<p>
+脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources#severity">重大度</a>、更新対象の AOSP(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。
+該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
+
+<h3 id="qualcomm-components">Qualcomm コンポーネント</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参照</th>
+ <th>タイプ</th>
+ <th>重大度</th>
+ <th>コンポーネント</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11987</td>
+ <td>A-70638103<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=5e9ffcfa152ecb2832990c42fcd8a0f2e63c2c04">
+QC-CR#2258691</a></td>
+ <td>EoP</td>
+ <td>中</td>
+ <td>ION</td>
+ </tr>
+</tbody></table>
+
+<h2 id="functional-patches">機能パッチ</h2>
+
+<p>影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記の機能パッチが組み込まれています。下記の表に示すパッチに、関連する参照先、影響を受けるカテゴリ、影響を受けるデバイスを記載しています。</p>
+
+<table>
+<colgroup><col width="15%" />
+<col width="15%" />
+<col width="40%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>参照</th>
+ <th>カテゴリ</th>
+ <th>改善内容</th>
+ <th>デバイス</th>
+ </tr>
+ <tr>
+ <td>A-117522738</td>
+ <td>パフォーマンス</td>
+ <td>特定の状況下でのメモリのパフォーマンスを改善</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-110969183</td>
+ <td>カメラ</td>
+ <td>カメラ撮影のパフォーマンスを改善</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111008450</td>
+ <td>Pixel Stand</td>
+ <td>Pixel Stand 使用時の通知の可視性を改善</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112376366</td>
+ <td>Android Auto</td>
+ <td>Android Auto の互換性を改善</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115666282</td>
+ <td>カメラ</td>
+ <td>オートフォーカスの動作を調整</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115624433</td>
+ <td>Pixel Stand</td>
+ <td>Pixel Stand 使用時の起動ワードのパフォーマンスを改善</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-116758282</td>
+ <td>ディスプレイ</td>
+ <td>「常に表示状態のディスプレイ」機能のトリガーを改善</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111964925</td>
+ <td>オーディオ</td>
+ <td>USB-C オーディオ アクセサリの検出を改善</td>
+ <td>Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111716107</td>
+ <td>Bluetooth</td>
+ <td>Bluetooth の切り替え時のボリュームの動作を調整</td>
+ <td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111159723</td>
+ <td>Android Auto</td>
+ <td>特定の車両での Android Auto 使用時におけるオーディオのパフォーマンスを改善</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112228430</td>
+ <td>メディア</td>
+ <td>特定のメディアアプリでの HDR カラーの輪郭を改善</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-113151604</td>
+ <td>カメラ</td>
+ <td>カメラのシャッターのパフォーマンスを改善</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111277984</td>
+ <td>パフォーマンス</td>
+ <td>Bluetooth 使用時のロック解除のパフォーマンスを改善</td>
+ <td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">一般的な質問と回答</h2>
+<p>
+上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
+</p>
+<p>
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
+</strong>
+</p>
+<p>
+セキュリティ パッチレベル 2018-12-05 以降では、セキュリティ パッチレベル 2018-12-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+</p>
+<p id="type">
+<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
+</p>
+<p>
+脆弱性の詳細の表で「タイプ<em></em>」列に記載した項目は、セキュリティの脆弱性の分類を示しています。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>略語</th>
+ <th>定義</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>リモートコード実行</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>権限昇格</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>情報開示</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>サービス拒否</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>該当する分類なし</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>3. 「参照<em></em>」列の項目はどういう意味ですか?</strong>
+</p>
+<p>
+脆弱性の詳細の表で「参照<em></em>」列に記載した項目には、その参照番号が属す組織を示す接頭辞が含まれる場合があります。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>接頭辞</th>
+ <th>参照</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android バグ ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm の参照番号</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek の参照番号</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA の参照番号</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom の参照番号</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>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 / Nexus 端末用最新バイナリ ドライバに含まれています。
+</p>
+<p>
+<strong>5. セキュリティの脆弱性が、この公開情報と「Android のセキュリティに関する公開情報」に分けられているのはなぜですか?</strong>
+</p>
+<p>
+Android 搭載端末の最新のセキュリティ パッチレベルを宣言するためには、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
+</p>
+<h2 id="versions">バージョン</h2>
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>バージョン</th>
+ <th>日付</th>
+ <th>メモ</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018 年 12 月 3 日</td>
+ <td>情報公開</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/pixel/2018.html b/ja/security/bulletin/pixel/2018.html
index 6818a394..5d025af2 100644
--- a/ja/security/bulletin/pixel/2018.html
+++ b/ja/security/bulletin/pixel/2018.html
@@ -35,15 +35,13 @@
</tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-11-01.html">2018 年 11 月</a></td>
- <td>準備中
- <!--
- <a href="/security/bulletin/pixel/2018-11-01.html">English</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ko">한국어</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
+ <td>
+ <a href="/security/bulletin/pixel/2018-11-01.html">English</a> /
+ <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>
</td>
<td>2018 年 11 月 5 日</td>
<td>2018-11-05</td>
diff --git a/ko/security/bulletin/2018-08-01.html b/ko/security/bulletin/2018-08-01.html
index 0ca2b1cf..af470f9a 100644
--- a/ko/security/bulletin/2018-08-01.html
+++ b/ko/security/bulletin/2018-08-01.html
@@ -626,7 +626,7 @@ Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -719,7 +719,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/2018-09-01.html b/ko/security/bulletin/2018-09-01.html
index 33299ae0..34b39b4c 100644
--- a/ko/security/bulletin/2018-09-01.html
+++ b/ko/security/bulletin/2018-09-01.html
@@ -59,8 +59,8 @@ Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>
<h2 id="mitigations">Android 및 Google 서비스 완화</h2>
<p>
다음은
-<a href="https://www.android.com/play-protect" class="external">Google Play 프로텍트</a>와 같은
-<a href="/security/enhancements/">Android 보안 플랫폼</a> 및 서비스 보호 기능에서
+<a href="/security/enhancements/">Android 보안 플랫폼</a> 및
+<a href="https://www.android.com/play-protect" class="external">Google Play 프로텍트</a>와 같은 서비스 보호 기능에서
제공하는 완화에 관한 요약입니다. 이러한 기능을 통해
Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</p>
@@ -190,9 +190,7 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tbody></table>
<h3 id="media-framework">미디어 프레임워크</h3>
-<p>이 섹션에서 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이 사용자 상호작용 요구사항을
-우회하여 추가적인 권한에 액세스할 수
-있습니다.</p>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이 사용자 상호작용 요구사항을 우회하여 추가적인 권한에 액세스할 수 있습니다.</p>
<table>
<colgroup><col width="21%" />
@@ -225,9 +223,7 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tbody></table>
<h3 id="system">시스템</h3>
-<p>이 섹션에서 가장 심각한 취약성으로 인해 로컬 공격자가 사용자 상호작용 요구사항을 우회하여
-추가적인 권한에 액세스할 수
-있습니다.</p>
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 공격자가 사용자 상호작용 요구사항을 우회하여 추가적인 권한에 액세스할 수 있습니다.</p>
<table>
<colgroup><col width="21%" />
@@ -342,40 +338,6 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
</tbody></table>
-<h3 id="update-media-framework">업데이트: 미디어 프레임워크</h3>
-<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는
-원격 공격자가 권한이 설정된 프로세스의 컨텍스트 내에서 임의의 코드를
-실행할 수 있습니다.</p>
-
-<table>
- <colgroup><col width="21%" />
- <col width="21%" />
- <col width="14%" />
- <col width="14%" />
- <col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>참조</th>
- <th>유형</th>
- <th>심각도</th>
- <th>업데이트된 AOSP 버전</th>
- </tr>
- <tr>
- <td>CVE-2018-9411</td>
- <td><a href="https://android.googlesource.com/platform/system/libhidl/+/93484b9b015d47c0f7e5f4449a214b2fed8bed4f" class="external">A-79376389</a></td>
- <td>RCE</td>
- <td>심각</td>
- <td>8.0, 8.1, 9</td>
- </tr>
- <tr>
- <td>CVE-2018-9427</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/av/+/29d991fac25b261a72ce73f96c9df594ea5b9242" class="external">A-77486542</a></td>
- <td>RCE</td>
- <td>심각</td>
- <td>8.0, 8.1, 9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-09-05-details">2018-09-05 보안 패치 수준 취약성 세부정보</h2>
<p>
다음 섹션에서는 2018-09-05 패치 수준에 적용되는
@@ -390,7 +352,7 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
</p>
<h3 id="framework">프레임워크</h3>
-<p>이 섹션에서 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
다른 애플리케이션으로부터 애플리케이션 데이터를 분리하는
운영체제 보호를 우회할 수 있습니다.</p>
@@ -417,9 +379,8 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
</tbody></table>
<h3 id="kernel-components">커널 구성요소</h3>
-<p>이 섹션의 가장 심각한 취약성으로 인해 원래는 권한을 갖고 있으며 로컬에 설치한
-애플리케이션만 액세스할 수 있는 데이터에 원격 공격자가 액세스하도록
-할 수 있습니다.</p>
+<p>이 섹션의 가장 심각한 취약성으로 인해 보통 권한이 있으며 로컬에 설치된
+애플리케이션만 액세스할 수 있는 데이터에 원격 공격자가 액세스할 수 있습니다.</p>
<table>
<colgroup><col width="21%" />
@@ -448,7 +409,7 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
<p>다음 취약성은 Qualcomm 구성요소에 영향을 주며
해당 Qualcomm AMSS 보안 게시판 또는 보안 알림에
자세히 설명되어 있습니다. Android 파트너는 Createpoint를 통해 기기에
-문제의 적용 여부를 확인할 수 있습니다. 이러한 문제의 심각도 평가는
+문제가 적용되는지 여부를 확인할 수 있습니다. 이러한 문제의 심각도 평가는
Qualcomm에서 직접 제공합니다.</p>
<table>
@@ -527,7 +488,7 @@ QC-CR#2119840<a href="#asterisk">*</a></td>
<p>다음 취약성은 Qualcomm 구성요소에 영향을 주며 해당
Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
있습니다. Android 파트너는 Createpoint를 통해 기기에
-문제의 적용 여부를 확인할 수 있습니다. 이러한 문제의 심각도 평가는
+문제가 적용되는지 여부를 확인할 수 있습니다. 이러한 문제의 심각도 평가는
Qualcomm에서 직접 제공합니다.</p>
<table>
@@ -873,7 +834,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데 필요합니
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/2018-11-01.html b/ko/security/bulletin/2018-11-01.html
index 650d0def..b02e0513 100644
--- a/ko/security/bulletin/2018-11-01.html
+++ b/ko/security/bulletin/2018-11-01.html
@@ -19,7 +19,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>2018년 11월 5일 게시됨</em></p>
+<p><em>2018년 11월 5일 게시됨 | 2018년 11월 5일 업데이트됨</em></p>
<p>
Android 보안 게시판은 Android 기기에 영향을 미치는 보안 취약성
@@ -29,9 +29,9 @@ Android 보안 게시판은 Android 기기에 영향을 미치는 보안 취약
</p>
<p>
Android 파트너에게는 게시되기 최소 한 달 전에 모든 문제 관련 알림이
-전달되었습니다. 이러한 문제의 해결을 위한 소스 코드 패치는 향후 48시간 동안
-Android 오픈소스 프로젝트(AOSP) 저장소에 배포됩니다. 패치를 사용할 수 있게 되면 AOSP 링크와 함께 이 게시판을
-수정하겠습니다.</p>
+전달되었습니다. 이러한 문제를 해결하기 위한 소스 코드 패치는
+Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게시판에도 링크되어 있습니다.
+이 게시판에는 AOSP 외부의 패치 링크도 포함되어 있습니다.</p>
<p>
이 섹션의 가장 심각한 취약성으로 인해 특별히
제작된 파일을 사용하는 근접한 공격자가 권한이 설정된
@@ -54,7 +54,6 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포됩니다. 패치를
<a href="/security/bulletin/pixel/2018-11-01">2018년 11월Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>
을 참조하세요.
</p>
-
<h2 id="announcements">공지사항</h2>
<p>
Libxaac 라이브러리에서 다음을 포함한 몇 가지 보안 문제가 파악되었습니다.
@@ -115,21 +114,21 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
<tr>
<td>CVE-2018-9522</td>
- <td>A-112550251</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/181dc252ddec574464882970d3fab290e8b625b5" class="external">A-112550251</a></td>
<td>EoP</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9524</td>
- <td>A-34170870</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c9bc35a45da1e765eb36af604c0c580bd66644cc" class="external">A-34170870</a></td>
<td>EoP</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
</tr>
<tr>
<td>CVE-2018-9525</td>
- <td>A-111330641</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/6409cf5c94cc1feb72dc078e84e66362fbecd6d5" class="external">A-111330641</a></td>
<td>EoP</td>
<td>높음</td>
<td>9</td>
@@ -156,42 +155,42 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
<tr>
<td>CVE-2018-9527</td>
- <td>A-112159345</td>
+ <td><a href="https://android.googlesource.com/platform/external/tremolo/+/cafff8f4535c8bf933c5a2fcb1a0dd66fb75a1c2" class="external">A-112159345</a></td>
<td>RCE</td>
<td>심각</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
</tr>
<tr>
<td>CVE-2018-9531</td>
- <td>A-112661641</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/c2208f2a3098410c5a4c79ad6bd4b6d7e1c0b03f" class="external">A-112661641</a></td>
<td>RCE</td>
<td>심각</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9536</td>
- <td>A-112662184</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/9744e41c40598c6a0b74440f3b5be63f9f3708a5" class="external">A-112662184</a></td>
<td>EoP</td>
<td>심각</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9537</td>
- <td>A-112891564</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/61381bd0f4bc012876ccf4b63eafddd2d60c35c9" class="external">A-112891564</a></td>
<td>EoP</td>
<td>심각</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9521</td>
- <td>A-111874331</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/083263937bfb1623adf6015da7ca3cdc258e0352" class="external">A-111874331</a></td>
<td>RCE</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9539</td>
- <td>A-113027383</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/efe34a570d91b826b009d40e44c2e470dd180ace" class="external">A-113027383</a></td>
<td>EoP</td>
<td>높음</td>
<td>8.0, 8.1, 9</td>
@@ -218,42 +217,42 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
<tr>
<td>CVE-2018-9540</td>
- <td>A-111450417</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/99d54d0c7dbab6c80f15bbf886ed203b2a547453" class="external">A-111450417</a></td>
<td>ID</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
</tr>
<tr>
<td>CVE-2018-9542</td>
- <td>A-111896861</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111896861</a></td>
<td>ID</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
</tr>
<tr>
<td>CVE-2018-9543</td>
- <td>A-112868088</td>
+ <td><a href="https://android.googlesource.com/platform/external/f2fs-tools/+/71313114a147ee3fc4a411904de02ea8b6bf7f91" class="external">A-112868088</a></td>
<td>ID</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9544</td>
- <td>A-113037220</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113037220</a></td>
<td>ID</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9545</td>
- <td>A-113111784</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113111784</a></td>
<td>ID</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td rowspan="2">CVE-2018-9541</td>
- <td rowspan="2">A-111450531</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111450531</a></td>
<td>ID</td>
<td>보통</td>
<td>9</td>
@@ -265,54 +264,6 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
</tbody></table>
-<h3 id="update-media-framework">업데이트: 미디어 프레임워크</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>참조</th>
- <th>유형</th>
- <th>심각도</th>
- <th>업데이트된 AOSP 버전</th>
- </tr>
- <tr>
- <td>CVE-2018-9347</td>
- <td>A-68664359</td>
- <td>DoS</td>
- <td>보통</td>
- <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
- </tr>
-</tbody></table>
-
-<h3 id="update-system">업데이트: 시스템</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>참조</th>
- <th>유형</th>
- <th>심각도</th>
- <th>업데이트된 AOSP 버전</th>
- </tr>
- <tr>
- <td>CVE-2018-9457</td>
- <td>A-72872376</td>
- <td>EoP</td>
- <td>보통</td>
- <td>8.0, 8.1, 9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-11-05-details">2018-11-01 보안 패치 수준 취약성 세부정보</h2>
<p>
다음 섹션에서는 2018-11-05 패치 수준에 적용되는
@@ -346,18 +297,11 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
</tr>
<tr>
<td>CVE-2018-9523</td>
- <td>A-112859604</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/6a947f048a76a5936fd2b693e01f849aef22c907" class="external">A-112859604</a></td>
<td>EoP</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
</tr>
- <tr>
- <td>CVE-2018-9526</td>
- <td>A-112159033</td>
- <td>ID</td>
- <td>높음</td>
- <td>9</td>
- </tr>
</tbody></table>
<h3 id="qualcomm-components">Qualcomm 구성요소</h3>
@@ -680,6 +624,11 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데 필요합니
<td>2018년 11월 5일</td>
<td>게시판이 게시됨</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018년 11월 5일</td>
+ <td>게시판이 수정되어 AOSP 링크 포함됨</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/2018-12-01.html b/ko/security/bulletin/2018-12-01.html
new file mode 100644
index 00000000..3349aea2
--- /dev/null
+++ b/ko/security/bulletin/2018-12-01.html
@@ -0,0 +1,802 @@
+<html devsite><head>
+ <title>Android 보안 게시판—2018년 12월</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>2018년 12월 3일 게시됨</em></p>
+
+<p>
+Android 보안 게시판은 Android 기기에 영향을 미치는 보안 취약성
+세부정보를 다룹니다. 이러한 문제는 2018-12-05 보안 패치 수준 이상에서
+모두 해결되었습니다. 기기의 보안 패치 수준을 확인하는 방법은
+<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android 버전 확인 및 업데이트</a>를 참조하세요.
+</p>
+<p>이러한 문제의 해결을 위한 소스 코드 패치는 향후 48시간 동안
+Android 오픈소스 프로젝트(AOSP) 저장소에 배포됩니다. 패치를 사용할 수 있게 되면 AOSP 링크와 함께 이 게시판을
+수정하겠습니다.</p>
+<p>
+이러한 문제 중 가장 심각한 것은 미디어 프레임워크의 심각한 보안 취약성으로,
+특별히 제작된 파일을 사용하는 원격 공격자가 권한이 설정된 프로세스의 컨텍스트
+내에서 임의의 코드를 실행할 수 있습니다. <a href="/security/overview/updates-resources.html#severity">심각도
+평가</a>는
+개발 목적으로 플랫폼 및 서비스 완화를 사용할 수 없거나 우회에 성공한 경우 취약성 악용으로 인해
+대상 기기가 받는 영향을
+기준으로 합니다.
+</p>
+<p>
+실제 고객이 새로 보고된 이러한 문제로 인해 악용당했다는 신고는
+접수되지 않았습니다. 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/2018-12-01">2017년 12월
+Pixel&amp;hairsp;/&amp;hairsp;Nexus보안 게시판</a>
+을 참조하세요.
+</p>
+
+<h2 id="mitigations">Android 및 Google 서비스 완화</h2>
+
+<p>
+다음은
+<a href="https://www.android.com/play-protect" class="external">Google Play 프로텍트</a>와 같은
+<a href="/security/enhancements/">Android 보안 플랫폼</a> 및 서비스 보호 기능에서
+제공하는 완화에 관한 요약입니다. 이러한 기능을 통해
+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>에 관해 사용자에게 경고를 보냅니다. Google Play 프로텍트는 <a href="http://www.android.com/gms" class="external">Google 모바일 서비스</a>가 적용된 기기에
+기본적으로
+사용 설정되어 있으며 Google Play 외부에서 가져온 앱을 설치하는 사용자에게
+특히 중요합니다.</li>
+</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 변경사항 목록과 같이 문제를
+해결한 공개 변경사항을 버그 ID에 연결합니다. 하나의
+버그와 관련된 변경사항이 여러 개인 경우 추가 참조가 버그 ID
+다음에 오는 번호에 연결됩니다.
+</p>
+
+<h3 id="framework">프레임워크</h3>
+
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 악성 애플리케이션이
+권한이 설정된 프로세스 내에서 임의의 코드를 실행할 수
+있습니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>업데이트된 AOSP 버전</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9547</td>
+ <td>A-114223584</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9548</td>
+ <td>A-112555574</td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+</tbody></table>
+
+<h3 id="media-framework">미디어 프레임워크</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 파일을 사용하는
+원격 공격자가 권한이 설정된 프로세스의 컨텍스트 내에서 임의의 코드를
+실행할 수 있습니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>업데이트된 AOSP 버전</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9549</td>
+ <td>A-112160868</td>
+ <td>RCE</td>
+ <td>심각</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9550</td>
+ <td>A-112660981</td>
+ <td>RCE</td>
+ <td>심각</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9551</td>
+ <td>A-112891548</td>
+ <td>RCE</td>
+ <td>심각</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9552</td>
+ <td>A-113260892</td>
+ <td>ID</td>
+ <td>심각</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9553</td>
+ <td>A-116615297</td>
+ <td>RCE</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9538</td>
+ <td>A-112181526</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9554</td>
+ <td>A-114770654</td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</tbody></table>
+
+<h3 id="system">시스템</h3>
+<p>이 섹션의 가장 심각한 취약성으로 인해 특별히 제작된 전송을 사용하는
+원격 공격자가 권한이 설정된 프로세스의 컨텍스트 내에서 임의의 코드를
+실행할 수 있습니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>업데이트된 AOSP 버전</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9555</td>
+ <td>A-112321180</td>
+ <td>RCE</td>
+ <td>심각</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9556</td>
+ <td>A-113118184</td>
+ <td>RCE</td>
+ <td>심각</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9557</td>
+ <td>A-35385357</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9558</td>
+ <td>A-112161557</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9559</td>
+ <td>A-112731440</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9560</td>
+ <td>A-79946737</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9562</td>
+ <td>A-113164621</td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9566</td>
+ <td>A-74249842</td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+</tbody></table>
+
+<h2 id="2018-12-05-details">2018-12-05 보안 패치 수준 취약성 세부정보</h2>
+
+<p>
+다음 섹션에서는 2018-12-05 패치 수준에 적용되는
+각 보안 취약성에 관해 자세히 알아볼 수 있습니다. 취약성은
+영향을 받는 구성요소 아래에 분류되어 있으며
+CVE, 관련 참조, <a href="#type">취약성 유형</a>,
+<a href="/security/overview/updates-resources.html#severity">심각도</a>,
+구성요소(해당하는 경우), 업데이트된 AOSP 버전(해당하는 경우)과 같은 세부정보가 포함되어 있습니다. 가능한 경우
+AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을 버그 ID에
+연결합니다. 하나의 버그와 관련된 변경사항이 여러 개인 경우
+추가 참조가 버그 ID 다음에 오는 번호에 연결됩니다.
+</p>
+
+<h3 id="system-05">시스템</h3>
+
+<p>이 섹션의 가장 심각한 취약성으로 인해 추가 실행 권한 없이 원격 정보가 공개될 수 있습니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>구성요소</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9565</td>
+ <td>A-16680558</td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>OMA-DM</td>
+ </tr>
+</tbody></table>
+
+<h3 id="htc-components">HTC 구성요소</h3>
+
+<p>이 섹션에서 가장 심각한 취약성으로 인해 로컬 공격자가 사용자 상호작용 요구사항을 우회하여
+추가적인 권한에 액세스할 수
+있습니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>구성요소</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9567</td>
+ <td>A-65543936</td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>부트로더</td>
+ </tr>
+</tbody></table>
+
+<h3 id="kernel-components">커널 구성요소</h3>
+
+<p>이 섹션의 가장 심각한 취약성으로 인해 로컬 공격자가 권한이
+설정된 프로세스의 컨텍스트 내에서 임의의 코드를 실행할 수
+있습니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>구성요소</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10840</td>
+ <td>A-116406508<br />
+<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">업스트림 커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>ext4 파일 시스템</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9568</td>
+ <td>A-113509306<br />
+<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/core/sock.c?id=9d538fa60bad4f7b23193c89e843797a1cf71ef3">업스트림 커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>네트워크</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-components">Qualcomm 구성요소</h3>
+
+<p>다음 취약성은 Qualcomm 구성요소에 영향을 주며 해당
+Qualcomm 보안 게시판 또는 보안 알림에 자세히 설명되어
+있습니다.
+이러한 문제의 심각도 평가는 Qualcomm에서 직접 제공합니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>구성요소</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11960</td>
+ <td>A-114042002<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=18ce15db603e19cfac9a2f4076f255e879100495">QC-CR#2264832</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>HWEngines</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11961</td>
+ <td>A-114040881<br />
+<a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=c57ee0a5d3261ab20c35b451d1b3ae2b02a21591">QC-CR#2261813</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>GPS_AP_LINUX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11963</td>
+ <td>A-114041685<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c9ac3476a91c384a3f2760fabaecef0ad8698d7b">QC-CR#2220770</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>자동차 멀티미디어</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-closed-source-components">Qualcomm 비공개 소스 구성요소</h3>
+
+<p>다음 취약성은 Qualcomm 구성요소에 영향을 주며 해당
+Qualcomm 보안 게시판 또는 보안 알림에 자세히 설명되어
+있습니다. 이러한 문제의 심각도 평가는 Qualcomm에서 직접
+제공합니다.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>구성요소</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-8248</td>
+ <td>A-78135902<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>심각</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11004</td>
+ <td>A-66913713<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>심각</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18141</td>
+ <td>A-67712316<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>심각</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5913</td>
+ <td>A-79419833<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>심각</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11279</td>
+ <td>A-109678200<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>심각</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18319</td>
+ <td>A-78284753<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18321</td>
+ <td>A-78283451<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18322</td>
+ <td>A-78285196<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18323</td>
+ <td>A-78284194<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18324</td>
+ <td>A-78284517<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18327</td>
+ <td>A-78240177<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18331</td>
+ <td>A-78239686<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18332</td>
+ <td>A-78284545<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18160</td>
+ <td>A-109660689<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18326</td>
+ <td>A-78240324<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8276</td>
+ <td>A-68141338<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18328</td>
+ <td>A-78286046<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18329</td>
+ <td>A-73539037<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18330</td>
+ <td>A-73539235<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3595</td>
+ <td>A-71501115<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18320</td>
+ <td>A-33757308<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11999</td>
+ <td>A-74236942<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5867</td>
+ <td>A-77485184<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5868</td>
+ <td>A-77484529<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5869</td>
+ <td>A-33385206<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-79419639<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5915</td>
+ <td>A-79420511<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11267</td>
+ <td>A-109678338<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11922</td>
+ <td>A-112279564<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
+
+<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+제시합니다.</p>
+<p><strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수
+있나요?</strong></p>
+<p>기기의 보안 패치 수준을 확인하는 방법은
+<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Android 버전 확인 및 업데이트</a>를 참조하세요.</p>
+<ul>
+<li>2018-12-01 보안 패치 수준과 관련된 모든 문제는 2018-12-01
+보안 패치 수준 이상에서 해결됩니다.</li>
+<li>2018-12-05 보안 패치 수준 및 그 이전의 모든 패치 수준과 관련된
+문제는 2018-12-05 보안 패치 수준 이상에서 모두 해결됩니다.</li>
+</ul>
+<p>이 업데이트를 포함하는 기기 제조업체는 패치 문자열 수준을 다음과 같이
+설정해야 합니다.</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2018-12-01]</li>
+ <li>[ro.build.version.security_patch]:[2018-12-05]</li>
+</ul>
+<p><strong>2. 이 게시판에 두 가지 보안 패치 수준이 있는 이유가 무엇인가요?</strong></p>
+<p>
+이 게시판에는 Android 파트너가 모든 Android 기기에서 유사하게 발생하는
+취약성 문제의 일부를 더욱 빠르고 유연하게 해결할 수 있도록 두 가지
+보안 패치 수준이 포함되어 있습니다. Android 파트너는 이 게시판에 언급된 문제를 모두 수정하고
+최신 보안 패치 수준을 사용하는 것이 좋습니다.
+</p>
+<ul>
+<li>2018-12-01 보안 패치 수준을 사용하는 기기는 이 보안 패치
+수준과 관련된 모든 문제와 이전 보안 게시판에 보고된
+모든 문제의 수정사항을 포함해야 합니다.</li>
+<li>2018-12-05 이후의 보안 패치 수준을 사용하는 기기는
+이 보안 게시판과 이전 게시판의 모든 관련 패치를
+포함해야 합니다.</li>
+</ul>
+<p>
+파트너는 해결하는 모든 문제의 수정사항을 단 한 번의 업데이트에서 번들로 묶는 것이
+좋습니다.
+</p>
+<p id="type">
+<strong>3. <em>유형</em> 열의 항목은 무엇을 의미하나요?</strong>
+</p>
+<p>
+취약성 세부정보 표의 <em>유형</em> 열에 있는 항목은
+보안 취약성 분류를 참조합니다.
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>약어</th>
+ <th>정의</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>리모컨 코드 실행</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>권한 승격</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>정보 공개</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>서비스 거부</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>분류 없음</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>4. <em>참조</em> 열의 항목은 무엇을 의미하나요?</strong>
+</p>
+<p>
+취약성 세부정보 표의 <em>참조</em> 열에 있는 항목은
+참조 값이 속한 조직을 나타내는 접두어를 포함할 수
+있습니다.
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>접두어</th>
+ <th>참조</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android 버그 ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm 참조 번호</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek 참조 번호</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA 참조 번호</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom 참조 번호</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>5. <em>참조</em> 열에서 Android 버그 ID 옆에 있는 * 표시는
+무엇을 의미하나요?</strong>
+</p>
+<p>
+공개되지 않은 문제는 <em>참조</em> 열의 Android 버그 ID 옆에 * 표시가
+있습니다. 일반적으로 이러한 문제에 관한 업데이트는
+<a href="https://developers.google.com/android/drivers" class="external">Google 개발자 사이트</a>에서 제공하는
+Pixel&amp;hairsp;/&amp;hairsp;Nexus
+기기용
+최신 바이너리 드라이버에 포함되어 있습니다.
+</p>
+<p>
+<strong>6. 보안 취약성이 이 게시판과 Pixel / Nexus 게시판과 같은
+기기&amp;hairsp;/&amp;hairsp;파트너 보안 게시판에 나뉘어져 있는
+이유가 무엇인가요?</strong>
+</p>
+<p>
+이 보안 게시판에 설명되어 있는 보안 취약성은
+Android 기기의 최신 보안 패치 수준을 선언하는 데 필요합니다. 기기&amp;hairsp;/&amp;hairsp;파트너
+보안 게시판에 설명된 추가 보안 취약성은 보안 패치 수준을 선언하는 데
+필요하지 않습니다. Android 기기 및 칩셋 제조업체는 <a href="https://security.samsungmobile.com/securityUpdate.smsb" class="external">삼성</a>, <a href="https://lgsecurity.lge.com/security_updates.html" class="external">LGE</a> 또는
+<a href="/security/bulletin/pixel/" class="external">Pixel&amp;hairsp;/&amp;hairsp;Nexus</a> 보안 게시판과 같은 자체
+보안 웹사이트를
+통해 기기와 관련된
+다른 수정사항이 있는지
+기록하는 것이 좋습니다.
+</p>
+
+<h2 id="versions">버전</h2>
+
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>버전</th>
+ <th>날짜</th>
+ <th>참고</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018년 12월 3일</td>
+ <td>게시판이 게시됨</td>
+ </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 0260e642..285e511d 100644
--- a/ko/security/bulletin/2018.html
+++ b/ko/security/bulletin/2018.html
@@ -35,15 +35,13 @@
</tr>
<tr>
<td><a href="/security/bulletin/2018-11-01.html">2018년 11월</a></td>
- <td>출시 예정
- <!--
- <a href="/security/bulletin/2018-11-01.html">English</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
+ <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 />
diff --git a/ko/security/bulletin/index.html b/ko/security/bulletin/index.html
index 4a51984e..9d98075d 100644
--- a/ko/security/bulletin/index.html
+++ b/ko/security/bulletin/index.html
@@ -66,15 +66,13 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
</tr>
<tr>
<td><a href="/security/bulletin/2018-11-01.html">2018년 11월</a></td>
- <td>출시 예정
- <!--
- <a href="/security/bulletin/2018-11-01.html">English</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
+ <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 />
@@ -612,7 +610,7 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<a href="/security/bulletin/2015-08-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2015년 8월 13일</td>
- <td>해당 없음</td>
+ <td>N/A</td>
</tr>
</tbody></table>
diff --git a/ko/security/bulletin/pixel/2018-01-01.html b/ko/security/bulletin/pixel/2018-01-01.html
index 99c90747..f5111022 100644
--- a/ko/security/bulletin/pixel/2018-01-01.html
+++ b/ko/security/bulletin/pixel/2018-01-01.html
@@ -704,7 +704,7 @@ QC-CR#2078342</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -787,7 +787,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/pixel/2018-02-01.html b/ko/security/bulletin/pixel/2018-02-01.html
index ea1c9a81..d6cff0ed 100644
--- a/ko/security/bulletin/pixel/2018-02-01.html
+++ b/ko/security/bulletin/pixel/2018-02-01.html
@@ -526,7 +526,7 @@ QC-CR#2003798</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -610,7 +610,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/pixel/2018-03-01.html b/ko/security/bulletin/pixel/2018-03-01.html
index e0ce4c0a..ed42ba58 100644
--- a/ko/security/bulletin/pixel/2018-03-01.html
+++ b/ko/security/bulletin/pixel/2018-03-01.html
@@ -603,7 +603,7 @@ QC-CR#2119401</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -687,7 +687,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/pixel/2018-04-01.html b/ko/security/bulletin/pixel/2018-04-01.html
index 80d105f2..9d83e600 100644
--- a/ko/security/bulletin/pixel/2018-04-01.html
+++ b/ko/security/bulletin/pixel/2018-04-01.html
@@ -930,7 +930,7 @@ QC-CR#2098332</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -1014,7 +1014,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/pixel/2018-06-01.html b/ko/security/bulletin/pixel/2018-06-01.html
index 659d0efd..9b3bf8b4 100644
--- a/ko/security/bulletin/pixel/2018-06-01.html
+++ b/ko/security/bulletin/pixel/2018-06-01.html
@@ -795,7 +795,7 @@ A-74058011</td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -824,7 +824,7 @@ A-74058011</td>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -908,7 +908,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
@@ -918,7 +918,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
<tr>
<td>1.1</td>
<td>2018년 6월 6일</td>
- <td>게시판이 수정되어 AOSP 링크 포함됨</td>
+ <td>게시판이 수정되어 AOSP 링크가 포함됨</td>
</tr>
</tbody></table>
diff --git a/ko/security/bulletin/pixel/2018-07-01.html b/ko/security/bulletin/pixel/2018-07-01.html
index 6eb2a9ea..e73e89a6 100644
--- a/ko/security/bulletin/pixel/2018-07-01.html
+++ b/ko/security/bulletin/pixel/2018-07-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>2018년 7월 2일에 게시됨 | 2018년 7월 3일에 업데이트됨</em></p>
+<p><em>Published July 2, 2018 | Updated November 8, 2018</em></p>
<p>
Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판에서는
@@ -244,7 +244,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된
</tr>
<tr>
- <td>CVE-2017-1000</td>
+ <td>CVE-2017-1000112</td>
<td>A-68806309<br />
<a href="https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=85f1bd9a7b5a79d5baa8bf44af19658f7bf77bfa">업스트림 커널</a></td>
<td>EoP</td>
@@ -406,7 +406,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -490,7 +490,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
@@ -502,6 +502,11 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
<td>2018년 7월 3일</td>
<td>게시판이 수정되어 AOSP 링크 포함됨</td>
</tr>
+ <tr>
+ <td>1.2</td>
+ <td>2018년 11월 8일</td>
+ <td>게시판이 수정되어 CVE-2017-1000112로 수정됨</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/pixel/2018-08-01.html b/ko/security/bulletin/pixel/2018-08-01.html
index e4609222..9a85776b 100644
--- a/ko/security/bulletin/pixel/2018-08-01.html
+++ b/ko/security/bulletin/pixel/2018-08-01.html
@@ -459,7 +459,7 @@ QC-CR#2185477</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -525,7 +525,7 @@ QC-CR#2185477</a></td>
드라이버에 포함되어 있습니다.
</p>
<p>
-<strong>5 보안 취약성이 이 게시판과 Android 보안 게시판에 나뉘어져 있는 이유가
+<strong>5. 보안 취약성이 이 게시판과 Android 보안 게시판에 나뉘어져 있는 이유가
무엇인가요?</strong>
</p>
<p>
@@ -542,7 +542,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/pixel/2018-09-01.html b/ko/security/bulletin/pixel/2018-09-01.html
index 0b577f49..6ec7999f 100644
--- a/ko/security/bulletin/pixel/2018-09-01.html
+++ b/ko/security/bulletin/pixel/2018-09-01.html
@@ -279,7 +279,7 @@ QC-CR#2204285</a>
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -345,7 +345,7 @@ QC-CR#2204285</a>
드라이버에 포함되어 있습니다.
</p>
<p>
-<strong>5 보안 취약성이 이 게시판과 Android 보안 게시판에 나누어져 있는 이유가
+<strong>5. 보안 취약성이 이 게시판과 Android 보안 게시판에 나누어져 있는 이유가
무엇인가요?</strong>
</p>
<p>
@@ -362,7 +362,7 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데
</colgroup><tbody><tr>
<th>버전</th>
<th>날짜</th>
- <th>참고사항</th>
+ <th>참고</th>
</tr>
<tr>
<td>1.0</td>
diff --git a/ko/security/bulletin/pixel/2018-11-01.html b/ko/security/bulletin/pixel/2018-11-01.html
index f8ab56f1..b5b78832 100644
--- a/ko/security/bulletin/pixel/2018-11-01.html
+++ b/ko/security/bulletin/pixel/2018-11-01.html
@@ -61,6 +61,33 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된 패
추가 참조가 버그 ID 다음에 오는 번호에 연결됩니다.
</p>
+<h3 id="framework-05">프레임워크</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>업데이트된 AOSP 버전</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9526</td>
+ <td><a href="https://android.googlesource.com/device/google/marlin/+/fa7f7382e8b39f7ca209824f97788ab25c44f6a3" class="external">A-112159033</a>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/8e81142af3dceb913ca50f67df3ded84233f932a">2</a>]
+ [<a href="https://android.googlesource.com/platform/hardware/qcom/sdm845/gps/+/a5f7c07edd96c69171e8bd758addda7d5c30e3eb">3</a>]
+ </td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>9</td>
+ </tr>
+</tbody></table>
+
<h3 id="htc-components">HTC 구성요소</h3>
<table>
@@ -193,7 +220,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된 패
</tr>
<tr>
<td>RCE</td>
- <td>원격 코드 실행</td>
+ <td>리모컨 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-12-01.html b/ko/security/bulletin/pixel/2018-12-01.html
new file mode 100644
index 00000000..596c9a5f
--- /dev/null
+++ b/ko/security/bulletin/pixel/2018-12-01.html
@@ -0,0 +1,309 @@
+<html devsite><head>
+ <title>Pixel / Nexus 보안 게시판—2018년 12월</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p><em>2018년 12월 3일 게시됨</em></p>
+
+<p>
+Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판에서는 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">지원되는
+Google Pixel 및 Nexus 기기</a>(Google 기기)에 영향을 미치는 보안 취약성 및 기능 개선을 자세히 다룹니다.
+Google 기기의 경우 2018-12-05 보안 패치 수준 이상에서 이 게시판에 언급된 모든 문제와 2018년 12월 Android 보안 게시판의
+모든 문제를
+해결했습니다. 기기의 보안 패치 수준을 확인하는 방법은 <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android 버전 확인 및 업데이트</a>를 참조하세요.
+</p>
+<p>
+지원되는 모든 Google 기기는 2018-12-05 패치 수준으로
+업데이트됩니다. 모든 고객은 기기에서 이 업데이트를 수락하는 것이 좋습니다.
+</p>
+<p class="note">
+<strong>참고:</strong> Google 기기 펌웨어 이미지는 <a href="https://developers.google.com/android/images" class="external">Google
+개발자 사이트</a>
+에 있습니다.
+</p>
+
+<h2 id="announcements">공지사항</h2>
+
+<p><a href="/security/bulletin/2018-12-01">2018년 12월 Android 보안 게시판</a>
+에 설명된 보안 취약성 외에도
+Google 기기에는 아래 설명된 보안 취약성과 관련된 패치도
+포함되어 있습니다. 파트너에게는 적어도 1개월 전에 이러한 문제와 관련해 알림이 전송되었으며
+파트너는 이러한 패치를 기기 업데이트의 일부로 포함하도록 선택할 수
+있습니다.
+</p>
+
+<h2 id="security-patches">보안 패치</h2>
+<p>
+취약성은 영향을 받는 구성요소 아래에 분류되어 있습니다. 여기에는
+문제 설명 및 CVE, 관련 참조,
+<a href="#type">취약성 유형</a>,
+<a href="/security/overview/updates-resources#severity">심각도</a>,
+업데이트된 Android 오픈소스 프로젝트(AOSP) 버전(해당하는 경우)이 포함된 표가 제시됩니다.
+가능한 경우 AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을 버그 ID에
+연결합니다. 하나의 버그와 관련된 변경사항이 여러 개인 경우
+추가 참조가 버그 ID 다음에 오는 번호에 연결됩니다.
+</p>
+
+<h3 id="qualcomm-components">Qualcomm 구성요소</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>참조</th>
+ <th>유형</th>
+ <th>심각도</th>
+ <th>구성요소</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11987</td>
+ <td>A-70638103<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=5e9ffcfa152ecb2832990c42fcd8a0f2e63c2c04">
+QC-CR#2258691</a></td>
+ <td>EoP</td>
+ <td>보통</td>
+ <td>ION</td>
+ </tr>
+</tbody></table>
+
+<h2 id="functional-patches">기능 패치</h2>
+
+<p>기능 패치는 영향을 받은 Pixel 기기에서 Pixel 기기의 보안과 관련되지 않은 기능 문제를 해결하기 위해 포함되었습니다. 아래 테이블에 언급된
+패치에는 관련 참조, 영향을 받은 카테고리, 영향을 받은 기기가
+포함되어 있습니다.</p>
+
+<table>
+<colgroup><col width="15%" />
+<col width="15%" />
+<col width="40%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>참조</th>
+ <th>카테고리</th>
+ <th>개선 사항</th>
+ <th>기기</th>
+ </tr>
+ <tr>
+ <td>A-117522738</td>
+ <td>성능</td>
+ <td>특정 상황에서 메모리 성능 개선</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-110969183</td>
+ <td>카메라</td>
+ <td>카메라 캡처 성능 개선</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111008450</td>
+ <td>Pixel Stand</td>
+ <td>Pixel Stand 사용 시 알림의 가시성 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112376366</td>
+ <td>Android Auto</td>
+ <td>Android Auto 호환성 개선</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115666282</td>
+ <td>카메라</td>
+ <td>자동 초점 동작 조정</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115624433</td>
+ <td>Pixel Stand</td>
+ <td>Pixel Stand 사용 시 핫워드 성능 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-116758282</td>
+ <td>표시</td>
+ <td>항상 켜져 있는 화면 실행 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111964925</td>
+ <td>오디오</td>
+ <td>USB-C 오디오 액세서리 감지 개선</td>
+ <td>Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111716107</td>
+ <td>블루투스</td>
+ <td>블루투스를 전환할 때 볼륨 동작 조정</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111159723</td>
+ <td>Android Auto</td>
+ <td>특정 자동차에서 Android Auto 사용 시 오디오 성능 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112228430</td>
+ <td>미디어</td>
+ <td>특정 모바일 앱에서 HDR 색상 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-113151604</td>
+ <td>카메라</td>
+ <td>카메라 셔터 성능 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111277984</td>
+ <td>성능</td>
+ <td>블루투스 사용 시 잠금 해제 성능 개선</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
+<p>
+이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+제시합니다.
+</p>
+<p>
+<strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수 있나요?
+</strong>
+</p>
+<p>
+2018-12-05 보안 패치 수준 및 그 이전의 모든 패치 수준과 관련된
+문제는 2018-12-05 보안 패치 수준 이상에서 모두 해결됩니다. 기기의
+보안 패치 수준을 확인하는 방법을 알아보려면 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel 및 Nexus 업데이트 일정</a>의 안내를 참조하세요.
+</p>
+<p id="type">
+<strong>2. <em>유형</em> 열의 항목은 무엇을 의미하나요?</strong>
+</p>
+<p>
+취약성 세부정보 표의 <em>유형</em> 열에 있는 항목은
+보안 취약성 분류를 참조합니다.
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>약어</th>
+ <th>정의</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>리모컨 코드 실행</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>권한 승격</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>정보 공개</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>서비스 거부</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>분류 없음</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>3. <em>참조</em> 열의 항목은 무엇을 의미하나요?</strong>
+</p>
+<p>
+취약성 세부정보 표의 <em>참조</em> 열에 있는 항목은
+참조 값이 속한 조직을 나타내는 접두어를 포함할 수
+있습니다.
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>접두어</th>
+ <th>참조</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android 버그 ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm 참조 번호</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek 참조 번호</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA 참조 번호</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom 참조 번호</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>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 / Nexus 기기용 최신 바이너리
+드라이버에 포함되어 있습니다.
+</p>
+<p>
+<strong>5. 보안 취약성이 이 게시판과 Android 보안 게시판에 나누어져 있는 이유가
+무엇인가요?</strong>
+</p>
+<p>
+Android 보안 게시판에 설명되어 있는 보안 취약성은
+Android 기기의 최신 보안 패치 수준을 선언하는 데
+필요합니다. 이 게시판에 설명된 것과 같은 추가적인 보안 취약성은
+보안 패치 수준을 선언하는 데 필요하지 않습니다.
+</p>
+<h2 id="versions">버전</h2>
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>버전</th>
+ <th>날짜</th>
+ <th>참고</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018년 12월 3일</td>
+ <td>게시판이 게시됨</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/2018-08-01.html b/ru/security/bulletin/2018-08-01.html
index 89a22005..cae4b6cc 100644
--- a/ru/security/bulletin/2018-08-01.html
+++ b/ru/security/bulletin/2018-08-01.html
@@ -623,7 +623,7 @@ QC-CR#2204872</a></td>
</tr>
<tr>
<td>1.0</td>
- <td>6 августа 2018 г.</td>
+ <td>6 августа 2018 г.</td>
<td>Бюллетень опубликован.</td>
</tr>
</tbody></table>
diff --git a/ru/security/bulletin/2018-11-01.html b/ru/security/bulletin/2018-11-01.html
index cf7c5639..0243c4f6 100644
--- a/ru/security/bulletin/2018-11-01.html
+++ b/ru/security/bulletin/2018-11-01.html
@@ -19,13 +19,14 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>Опубликовано 5 ноября 2018 г.</em></p>
+<p><em>Опубликовано 5 ноября 2018 г. | Обновлено 5 ноября 2018 г.</em></p>
<p>
В этом бюллетене содержится информация об уязвимостях в защите устройств Android. Все актуальные проблемы, перечисленные здесь, устранены в исправлении от 5 ноября 2018 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Справочном центре</a>.
</p>
<p>
-Мы сообщили партнерам обо всех проблемах по крайней мере за месяц до выхода бюллетеня. Исправления уязвимостей будут добавлены в хранилище Android Open Source Project (AOSP) в течение 48 часов. Ссылки на AOSP появятся в этом бюллетене позже.</p>
+Мы сообщили партнерам обо всех проблемах по крайней мере за месяц до выхода бюллетеня. Исправления уязвимостей доступны в хранилище Android Open Source Project (AOSP).
+В бюллетене также приведены ссылки на исправления вне AOSP.</p>
<p>
Самая серьезная уязвимость позволяет находящемуся поблизости злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла. <a href="/security/overview/updates-resources.html#severity">Уровень серьезности</a> зависит от того, какой ущерб будет нанесен устройству при атаке с использованием уязвимости, если средства защиты будут отключены разработчиком или взломаны.
</p>
@@ -35,7 +36,6 @@
<p class="note">
<strong>Примечание.</strong> Информация о последних автоматических обновлениях (OTA) и образах встроенного ПО для устройств Google содержится в <a href="/security/bulletin/pixel/2018-11-01">бюллетене по безопасности Pixel  и Nexus</a> за ноябрь 2018 года.
</p>
-
<h2 id="announcements">Новости</h2>
<p>
В библиотеке Libxaac было обнаружено несколько уязвимостей, включая CVE-2018-9528, CVE-2018-9529, CVE-2018-9530, CVE-2018-9531, CVE-2018-9532, CVE-2018-9533, CVE-2018-9534, CVE-2018-9535, CVE-2018-9569, CVE-2018-9570, CVE-2018-9571, CVE-2018-9572, CVE-2018-9573, CVE-2018-9574, CVE-2018-9575, CVE-2018-9576, CVE-2018-9577 и CVE-2018-9578.</p>
@@ -72,21 +72,21 @@
</tr>
<tr>
<td>CVE-2018-9522</td>
- <td>A-112550251</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/181dc252ddec574464882970d3fab290e8b625b5" class="external">A-112550251</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9524</td>
- <td>A-34170870</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c9bc35a45da1e765eb36af604c0c580bd66644cc" class="external">A-34170870</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
</tr>
<tr>
<td>CVE-2018-9525</td>
- <td>A-111330641</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/6409cf5c94cc1feb72dc078e84e66362fbecd6d5" class="external">A-111330641</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>9.0</td>
@@ -111,42 +111,42 @@
</tr>
<tr>
<td>CVE-2018-9527</td>
- <td>A-112159345</td>
+ <td><a href="https://android.googlesource.com/platform/external/tremolo/+/cafff8f4535c8bf933c5a2fcb1a0dd66fb75a1c2" class="external">A-112159345</a></td>
<td>УВК</td>
<td>Критический</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
</tr>
<tr>
<td>CVE-2018-9531</td>
- <td>A-112661641</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/c2208f2a3098410c5a4c79ad6bd4b6d7e1c0b03f" class="external">A-112661641</a></td>
<td>УВК</td>
<td>Критический</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9536</td>
- <td>A-112662184</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/9744e41c40598c6a0b74440f3b5be63f9f3708a5" class="external">A-112662184</a></td>
<td>ПП</td>
<td>Критический</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9537</td>
- <td>A-112891564</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/61381bd0f4bc012876ccf4b63eafddd2d60c35c9" class="external">A-112891564</a></td>
<td>ПП</td>
<td>Критический</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9521</td>
- <td>A-111874331</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/083263937bfb1623adf6015da7ca3cdc258e0352" class="external">A-111874331</a></td>
<td>УВК</td>
<td>Высокий</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9539</td>
- <td>A-113027383</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/efe34a570d91b826b009d40e44c2e470dd180ace" class="external">A-113027383</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>8.0, 8.1, 9.0</td>
@@ -171,42 +171,42 @@
</tr>
<tr>
<td>CVE-2018-9540</td>
- <td>A-111450417</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/99d54d0c7dbab6c80f15bbf886ed203b2a547453" class="external">A-111450417</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
</tr>
<tr>
<td>CVE-2018-9542</td>
- <td>A-111896861</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111896861</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
</tr>
<tr>
<td>CVE-2018-9543</td>
- <td>A-112868088</td>
+ <td><a href="https://android.googlesource.com/platform/external/f2fs-tools/+/71313114a147ee3fc4a411904de02ea8b6bf7f91" class="external">A-112868088</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9544</td>
- <td>A-113037220</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113037220</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>9.0</td>
</tr>
<tr>
<td>CVE-2018-9545</td>
- <td>A-113111784</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113111784</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>9.0</td>
</tr>
<tr>
<td rowspan="2">CVE-2018-9541</td>
- <td rowspan="2">A-111450531</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111450531</a></td>
<td>РИ</td>
<td>Средний</td>
<td>9.0</td>
@@ -218,54 +218,6 @@
</tr>
</tbody></table>
-<h3 id="update-media-framework">Обновление: Media Framework</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>Ссылки</th>
- <th>Тип</th>
- <th>Уровень серьезности</th>
- <th>Обновленные версии AOSP</th>
- </tr>
- <tr>
- <td>CVE-2018-9347</td>
- <td>A-68664359</td>
- <td>ОО</td>
- <td>Средний</td>
- <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
- </tr>
-</tbody></table>
-
-<h3 id="update-system">Обновление: система</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>Ссылки</th>
- <th>Тип</th>
- <th>Уровень серьезности</th>
- <th>Обновленные версии AOSP</th>
- </tr>
- <tr>
- <td>CVE-2018-9457</td>
- <td>A-72872376</td>
- <td>ПП</td>
- <td>Средний</td>
- <td>8.0, 8.1, 9.0</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-11-05-details">Описание уязвимостей (обновление системы безопасности 2018-11-05)</h2>
<p>
В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2018-11-05. Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведена таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Дополнительные ссылки перечислены в квадратных скобках.
@@ -289,18 +241,11 @@
</tr>
<tr>
<td>CVE-2018-9523</td>
- <td>A-112859604</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/6a947f048a76a5936fd2b693e01f849aef22c907" class="external">A-112859604</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
</tr>
- <tr>
- <td>CVE-2018-9526</td>
- <td>A-112159033</td>
- <td>РИ</td>
- <td>Высокий</td>
- <td>9.0</td>
- </tr>
</tbody></table>
<h3 id="qualcomm-components">Компоненты Qualcomm</h3>
@@ -584,6 +529,11 @@ QC-CR#2090797</a></td>
<td>5 ноября 2018 г.</td>
<td>Бюллетень опубликован.</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>5 ноября 2018 г.</td>
+ <td>Добавлены ссылки на AOSP.</td>
+ </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
new file mode 100644
index 00000000..8e584dbd
--- /dev/null
+++ b/ru/security/bulletin/2018-12-01.html
@@ -0,0 +1,709 @@
+<html devsite><head>
+ <title>Бюллетень по безопасности Android – декабрь 2018 г.</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>Опубликовано 3 декабря 2018 г.</em></p>
+
+<p>
+В этом бюллетене содержится информация об уязвимостях в защите устройств Android. Все актуальные проблемы, перечисленные здесь, устранены в исправлении от 5 декабря 2018 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Справочном центре</a>.
+</p>
+<p>Исправления уязвимостей будут добавлены в хранилище Android Open Source Project (AOSP) в течение 48 часов. Ссылки на AOSP появятся в этом бюллетене позже.</p>
+<p>
+Самая серьезная из проблем – критическая уязвимость в Media Framework, которая позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла. <a href="/security/overview/updates-resources.html#severity">Уровень серьезности</a> зависит от того, какой ущерб будет нанесен устройству при атаке с использованием уязвимости, если средства защиты будут отключены разработчиком или взломаны.
+</p>
+<p>
+У нас нет информации о том, что обнаруженные уязвимости эксплуатировались. В разделе <a href="#mitigations">Предотвращение атак</a> рассказывается, как <a href="/security/enhancements/">платформа безопасности</a> и Google Play Защита помогают снизить вероятность атак на Android.
+</p>
+<p class="note">
+<strong>Примечание.</strong> Информация о последних автоматических обновлениях (OTA) и образах встроенного ПО для устройств Google содержится в <a href="/security/bulletin/pixel/2018-12-01">бюллетене по безопасности Pixel  и Nexus</a> за декабрь 2018 года.
+</p>
+
+<h2 id="mitigations">Предотвращение атак</h2>
+
+<p>
+Ниже рассказывается, как <a href="/security/enhancements/">платформа безопасности</a> и средства защиты сервисов, например <a href="https://www.android.com/play-protect" class="external">Google Play Защита</a>, позволяют снизить вероятность атак на Android.
+</p>
+<ul>
+<li>В новых версиях 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>. Google Play Защита включена по умолчанию на всех телефонах и планшетах, использующих <a href="http://www.android.com/gms" class="external">сервисы Google для мобильных устройств</a>. Она особенно важна, если устанавливается ПО из сторонних источников.</li>
+</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). Когда несколько изменений относятся к одной ошибке, дополнительные ссылки перечислены в квадратных скобках.
+</p>
+
+<h3 id="framework">Framework</h3>
+
+<p>Самая серьезная уязвимость позволяет локальному вредоносному ПО выполнять произвольный код в контексте привилегированного процесса.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Обновленные версии AOSP</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9547</td>
+ <td>A-114223584</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9548</td>
+ <td>A-112555574</td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+</tbody></table>
+
+<h3 id="media-framework">Media Framework</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Обновленные версии AOSP</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9549</td>
+ <td>A-112160868</td>
+ <td>УВК</td>
+ <td>Критический</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9550</td>
+ <td>A-112660981</td>
+ <td>УВК</td>
+ <td>Критический</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9551</td>
+ <td>A-112891548</td>
+ <td>УВК</td>
+ <td>Критический</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9552</td>
+ <td>A-113260892</td>
+ <td>РИ</td>
+ <td>Критический</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9553</td>
+ <td>A-116615297</td>
+ <td>УВК</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9538</td>
+ <td>A-112181526</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9554</td>
+ <td>A-114770654</td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</tbody></table>
+
+<h3 id="system">Система</h3>
+<p>Самая серьезная уязвимость позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданной передачи.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Обновленные версии AOSP</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9555</td>
+ <td>A-112321180</td>
+ <td>УВК</td>
+ <td>Критический</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9556</td>
+ <td>A-113118184</td>
+ <td>УВК</td>
+ <td>Критический</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9557</td>
+ <td>A-35385357</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9558</td>
+ <td>A-112161557</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9559</td>
+ <td>A-112731440</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9560</td>
+ <td>A-79946737</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9562</td>
+ <td>A-113164621</td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9566</td>
+ <td>A-74249842</td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
+ </tr>
+</tbody></table>
+
+<h2 id="2018-12-05-details">Описание уязвимостей (обновление системы безопасности 2018-12-05)</h2>
+
+<p>
+В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2018-12-05. Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведена таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). и дополнительные ссылки в квадратных скобках.
+</p>
+
+<h3 id="system-05">Система</h3>
+
+<p>Самая серьезная уязвимость позволяет злоумышленнику, не обладающему дополнительными правами на выполнение кода, удаленно раскрывать информацию.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Компонент</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9565</td>
+ <td>A-16680558</td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>Протокол OMA-DM</td>
+ </tr>
+</tbody></table>
+
+<h3 id="htc-components">Компоненты HTC</h3>
+
+<p>Самая серьезная уязвимость позволяет злоумышленнику, в руки которого попало устройство, обходить требования к взаимодействию с пользователем и получать доступ к дополнительным разрешениям.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Компонент</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9567</td>
+ <td>A-65543936</td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Загрузчик</td>
+ </tr>
+</tbody></table>
+
+<h3 id="kernel-components">Компоненты ядра</h3>
+
+<p>Самая серьезная уязвимость позволяет злоумышленнику, в руки которого попало устройство, выполнять произвольный код в контексте привилегированного процесса.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Компонент</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10840</td>
+ <td>A-116406508<br />
+<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Файловая система ext4</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9568</td>
+ <td>A-113509306<br />
+<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/core/sock.c?id=9d538fa60bad4f7b23193c89e843797a1cf71ef3">Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Сеть</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-components">Компоненты Qualcomm</h3>
+
+<p>Эти уязвимости затрагивают компоненты Qualcomm. Они описаны в бюллетенях по безопасности Qualcomm или оповещениях системы безопасности.
+Уровень серьезности этих уязвимостей определяется непосредственно компанией Qualcomm.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Компонент</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11960</td>
+ <td>A-114042002<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=18ce15db603e19cfac9a2f4076f255e879100495">QC-CR#2264832</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>HWEngines</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11961</td>
+ <td>A-114040881<br />
+<a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=c57ee0a5d3261ab20c35b451d1b3ae2b02a21591">QC-CR#2261813</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>GPS_AP_LINUX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11963</td>
+ <td>A-114041685<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c9ac3476a91c384a3f2760fabaecef0ad8698d7b">QC-CR#2220770</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Автомобильная мультимедиасистема</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-closed-source-components">Компоненты Qualcomm с закрытым исходным кодом</h3>
+
+<p>Эти уязвимости затрагивают компоненты Qualcomm. Они описаны в бюллетенях по безопасности Qualcomm или оповещениях системы безопасности. Уровень серьезности этих уязвимостей определяется непосредственно компанией Qualcomm.</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Компонент</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-8248</td>
+ <td>A-78135902<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Критический</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11004</td>
+ <td>A-66913713<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Критический</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18141</td>
+ <td>A-67712316<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Критический</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5913</td>
+ <td>A-79419833<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Критический</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11279</td>
+ <td>A-109678200<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Критический</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18319</td>
+ <td>A-78284753<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18321</td>
+ <td>A-78283451<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18322</td>
+ <td>A-78285196<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18323</td>
+ <td>A-78284194<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18324</td>
+ <td>A-78284517<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18327</td>
+ <td>A-78240177<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18331</td>
+ <td>A-78239686<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18332</td>
+ <td>A-78284545<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18160</td>
+ <td>A-109660689<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18326</td>
+ <td>A-78240324<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8276</td>
+ <td>A-68141338<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18328</td>
+ <td>A-78286046<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18329</td>
+ <td>A-73539037<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18330</td>
+ <td>A-73539235<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3595</td>
+ <td>A-71501115<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18320</td>
+ <td>A-33757308<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11999</td>
+ <td>A-74236942<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5867</td>
+ <td>A-77485184<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5868</td>
+ <td>A-77484529<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5869</td>
+ <td>A-33385206<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-79419639<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5915</td>
+ <td>A-79420511<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11267</td>
+ <td>A-109678338<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11922</td>
+ <td>A-112279564<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">Часто задаваемые вопросы</h2>
+
+<p>В этом разделе мы отвечаем на вопросы, которые могут возникнуть после прочтения бюллетеня.</p>
+<p><strong>1. Как определить, установлено ли на устройство обновление, в котором устранены перечисленные проблемы?</strong></p>
+<p>Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Справочном центре</a>.</p>
+<ul>
+<li>В исправлении от 1 декабря 2018 года или более новом устранены все проблемы, связанные с обновлением 2018-12-01.</li>
+<li>В исправлении от 5 декабря 2018 года или более новом устранены все проблемы, связанные с обновлением 2018-12-05.</li>
+</ul>
+<p>Производители устройств, позволяющие установить эти обновления, должны присвоить им один из этих уровней:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2018-12-01]</li>
+ <li>[ro.build.version.security_patch]:[2018-12-05]</li>
+</ul>
+<p><strong>2. Почему в этом бюллетене говорится о двух обновлениях системы безопасности?</strong></p>
+<p>
+Мы включили в этот бюллетень сведения о двух обновлениях, чтобы помочь нашим партнерам как можно скорее устранить уязвимости, затрагивающие все устройства Android. Рекомендуем партнерам Android исправить все вышеперечисленные проблемы и установить последнее обновление системы безопасности.
+</p>
+<ul>
+<li>На устройствах с установленным обновлением 2018-12-01 должны быть исправлены все проблемы, упомянутые в соответствующем разделе этого бюллетеня, а также в предыдущих выпусках.</li>
+<li>На устройствах с установленным обновлением 2018-12-05 или более поздним должны быть исправлены все проблемы, упомянутые в этом бюллетене и предыдущих выпусках.</li>
+</ul>
+<p>
+Рекомендуем партнерам собрать все исправления проблем в одно обновление.
+</p>
+<p id="type">
+<strong>3. Что означают сокращения в столбце <em>Тип</em>?</strong>
+</p>
+<p>
+В этом столбце указан тип уязвимости по следующей классификации:<em></em>
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>Сокращение</th>
+ <th>Описание</th>
+ </tr>
+ <tr>
+ <td>УВК</td>
+ <td>Удаленное выполнение кода</td>
+ </tr>
+ <tr>
+ <td>ПП</td>
+ <td>Повышение привилегий</td>
+ </tr>
+ <tr>
+ <td>РИ</td>
+ <td>Раскрытие информации</td>
+ </tr>
+ <tr>
+ <td>ОО</td>
+ <td>Отказ в обслуживании</td>
+ </tr>
+ <tr>
+ <td>Н/Д</td>
+ <td>Классификация недоступна</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>4. Что означает информация в столбце <em>Ссылки</em>?</strong>
+</p>
+<p>
+В таблицах с описанием уязвимостей есть столбец <em>Ссылки</em>. Каждая запись в нем может содержать префикс, указывающий на источник ссылки, а именно:
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>Префикс</th>
+ <th>Значение</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Идентификатор ошибки Android</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Ссылочный номер Qualcomm</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>Ссылочный номер MediaTek</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>Ссылочный номер NVIDIA</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Ссылочный номер Broadcom</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>5. Что означает символ * рядом с идентификатором ошибки Android в столбце <em>Ссылки</em>?</strong>
+</p>
+<p>
+Символ * означает, что исправление для уязвимости не опубликовано.<em></em> Необходимое обновление содержится в последних бинарных драйверах для устройств Pixel и Nexus, которые можно скачать на <a href="https://developers.google.com/android/drivers" class="external">сайте Google Developers</a>.
+</p>
+<p>
+<strong>6. Почему теперь одни уязвимости описываются в этих бюллетенях, а другие – в бюллетенях по безопасности Pixel  и Nexus, а также в остальных бюллетенях партнеров?</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  и Nexus</a>.
+</p>
+
+<h2 id="versions">Версии</h2>
+
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>Версия</th>
+ <th>Дата</th>
+ <th>Примечания</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>3 декабря 2018 г.</td>
+ <td>Бюллетень опубликован.</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/pixel/2018-01-01.html b/ru/security/bulletin/pixel/2018-01-01.html
index c658221d..ff943bb7 100644
--- a/ru/security/bulletin/pixel/2018-01-01.html
+++ b/ru/security/bulletin/pixel/2018-01-01.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>Бюллетень по безопасности Pixel и Nexus – январь 2018 г.</title>
+ <title>Бюллетень по безопасности Pixel и Nexus – январь 2018 г.</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -36,7 +36,7 @@
</p>
<h2 id="security-patches">Обновления системы безопасности</h2>
<p>
-Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица с CVE, ссылками, <a href="#type">типом</a>, <a href="/security/overview/updates-resources.html#severity">уровнем серьезности</a>, а также версиями AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
+Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны 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/pixel/2018-02-01.html b/ru/security/bulletin/pixel/2018-02-01.html
index 21a575e2..5da564b5 100644
--- a/ru/security/bulletin/pixel/2018-02-01.html
+++ b/ru/security/bulletin/pixel/2018-02-01.html
@@ -35,7 +35,7 @@
<h2 id="security-patches">Обновления системы безопасности</h2>
<p>
-Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица с CVE, ссылками, <a href="#type">типом</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">уровнем серьезности</a>, а также версиями AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
+Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
</p>
<h3 id="framework">Framework</h3>
diff --git a/ru/security/bulletin/pixel/2018-03-01.html b/ru/security/bulletin/pixel/2018-03-01.html
index bba31988..e14c7e6d 100644
--- a/ru/security/bulletin/pixel/2018-03-01.html
+++ b/ru/security/bulletin/pixel/2018-03-01.html
@@ -36,7 +36,7 @@
<h2 id="security-patches">Обновления системы безопасности</h2>
<p>
-Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица с CVE, ссылками, <a href="#type">типом</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">уровнем серьезности</a>, а также версиями AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
+Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
</p>
<h3 id="framework">Framework</h3>
diff --git a/ru/security/bulletin/pixel/2018-05-01.html b/ru/security/bulletin/pixel/2018-05-01.html
index 7d851afa..56858411 100644
--- a/ru/security/bulletin/pixel/2018-05-01.html
+++ b/ru/security/bulletin/pixel/2018-05-01.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>Бюллетень по безопасности Pixel и Nexus – май 2018 г.</title>
+ <title>Бюллетень по безопасности Pixel и Nexus – май 2018 г.</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -36,7 +36,7 @@
<p>Помимо исправлений уязвимостей, описанных в бюллетене по безопасности Android за май 2018 года, обновления для устройств Pixel и Nexus содержат также исправления проблем, перечисленных ниже. Мы сообщили партнерам об этих проблемах по крайней мере месяц назад. Они могут включить их исправления в свои обновления безопасности.</p>
<h2 id="security-patches">Обновления системы безопасности</h2>
<p>
-Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица с CVE, ссылками, <a href="#type">типом</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">уровнем серьезности</a>, а также версиями AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
+Уязвимости сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="https://source.android.com/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, мы приводим основную ссылку на опубликованное изменение, связанное с идентификатором ошибки (например, список AOSP), Дополнительные ссылки перечислены в квадратных скобках.
</p>
<h3 id="framework">Framework</h3>
diff --git a/ru/security/bulletin/pixel/2018-11-01.html b/ru/security/bulletin/pixel/2018-11-01.html
index 7cfd1922..00942ef5 100644
--- a/ru/security/bulletin/pixel/2018-11-01.html
+++ b/ru/security/bulletin/pixel/2018-11-01.html
@@ -41,9 +41,34 @@
<h2 id="security-patches">Обновления системы безопасности</h2>
<p>
Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources#severity">уровень серьезности</a>, а также версии AOSP (при наличии).
-Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Когда несколько изменений относятся к одной ошибке, дополнительные ссылки перечислены в квадратных скобках.
+Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Если опубликованных изменений несколько, дополнительные ссылки указаны в квадратных скобках.
</p>
+<h3 id="framework-05">Framework</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Обновленные версии AOSP</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9526</td>
+ <td><a href="https://android.googlesource.com/device/google/marlin/+/fa7f7382e8b39f7ca209824f97788ab25c44f6a3" class="external">A-112159033</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/8e81142af3dceb913ca50f67df3ded84233f932a">2</a>] [<a href="https://android.googlesource.com/platform/hardware/qcom/sdm845/gps/+/a5f7c07edd96c69171e8bd758addda7d5c30e3eb">3</a>]
+ </td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>9</td>
+ </tr>
+</tbody></table>
+
<h3 id="htc-components">Компоненты HTC</h3>
<table>
diff --git a/ru/security/bulletin/pixel/2018-12-01.html b/ru/security/bulletin/pixel/2018-12-01.html
new file mode 100644
index 00000000..092e2c35
--- /dev/null
+++ b/ru/security/bulletin/pixel/2018-12-01.html
@@ -0,0 +1,276 @@
+<html devsite><head>
+ <title>Бюллетень по безопасности Pixel и Nexus – декабрь 2018 г.</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p><em>Опубликовано 3 декабря 2018 г.</em></p>
+
+<p>
+В этом бюллетене содержится информация об уязвимостях в защите и улучшениях функциональных возможностей <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">поддерживаемых устройств Pixel и Nexus</a> (устройства Google).
+Все проблемы, перечисленные здесь и в бюллетене по безопасности Android за декабрь 2018 года, устранены в исправлении от 5 декабря 2018 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в статье <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Справочного центра</a>.
+</p>
+<p>
+Обновление системы безопасности 2018-12-05 получат все поддерживаемые устройства Google. Мы настоятельно рекомендуем пользователям установить это обновление.
+</p>
+<p class="note">
+<strong>Примечание.</strong> Образы встроенного ПО для устройств Google можно найти на <a href="https://developers.google.com/android/images" class="external">сайте Google Developers</a>.
+</p>
+
+<h2 id="announcements">Новости</h2>
+
+<p>Помимо исправлений уязвимостей, описанных в <a href="/security/bulletin/2018-12-01">бюллетене по безопасности Android</a> за декабрь 2018 года, обновления для устройств Google содержат также исправления проблем, перечисленных ниже. Мы сообщили партнерам об этих проблемах не менее месяца назад. Они могут включить эти исправления в свои обновления безопасности.
+</p>
+
+<h2 id="security-patches">Обновления системы безопасности</h2>
+<p>
+Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources#severity">уровень серьезности</a>, а также версии AOSP (при наличии).
+Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). и дополнительные ссылки в квадратных скобках.
+</p>
+
+<h3 id="qualcomm-components">Компоненты Qualcomm</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>Ссылки</th>
+ <th>Тип</th>
+ <th>Уровень серьезности</th>
+ <th>Компонент</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11987</td>
+ <td>A-70638103<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=5e9ffcfa152ecb2832990c42fcd8a0f2e63c2c04">
+QC-CR#2258691</a></td>
+ <td>ПП</td>
+ <td>Средний</td>
+ <td>ION</td>
+ </tr>
+</tbody></table>
+
+<h2 id="functional-patches">Обновления функциональных возможностей</h2>
+
+<p>В эти обновления включены исправления проблем, касающихся функциональных возможностей устройств Pixel. Они не связаны с уязвимостями в защите. В таблице ниже приведены ссылки, категория обновления, а также сведения об устройствах, для которых предназначены обновления.</p>
+
+<table>
+<colgroup><col width="15%" />
+<col width="15%" />
+<col width="40%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>Ссылки</th>
+ <th>Категория</th>
+ <th>Описание</th>
+ <th>Устройства</th>
+ </tr>
+ <tr>
+ <td>A-117522738</td>
+ <td>Производительность</td>
+ <td>Повышена производительность памяти в определенных условиях.</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-110969183</td>
+ <td>Камера</td>
+ <td>Улучшен захват камеры.</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111008450</td>
+ <td>Pixel Stand</td>
+ <td>Улучшена видимость уведомлений при использовании Pixel Stand.</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112376366</td>
+ <td>Android Auto</td>
+ <td>Повышена совместимость с Android Auto.</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115666282</td>
+ <td>Камера</td>
+ <td>Отрегулировано поведение автофокуса.</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115624433</td>
+ <td>Pixel Stand</td>
+ <td>Улучшено распознавание голосовых команд при использовании Pixel Stand.</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-116758282</td>
+ <td>Экран</td>
+ <td>Улучшена активация функции "Информация на заблокированном экране".</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111964925</td>
+ <td>Аудио</td>
+ <td>Улучшено распознавание аудиоустройств с USB-C.</td>
+ <td>Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111716107</td>
+ <td>Bluetooth</td>
+ <td>Отрегулировано изменение уровня громкости при включении и выключении Bluetooth.</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111159723</td>
+ <td>Android Auto</td>
+ <td>Улучшено звучание аудио при использовании Android Auto в некоторых автомобилях.</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112228430</td>
+ <td>Мультимедиа</td>
+ <td>Улучшены контуры HDR-изображений в некоторых мультимедийных приложениях.</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-113151604</td>
+ <td>Камера</td>
+ <td>Улучшена работа затвора камеры.</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111277984</td>
+ <td>Производительность</td>
+ <td>Улучшена разблокировка при использовании Bluetooth.</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">Часто задаваемые вопросы</h2>
+<p>
+В этом разделе мы отвечаем на вопросы, которые могут возникнуть после прочтения бюллетеня.
+</p>
+<p>
+<strong>1. Как определить, установлено ли на устройство обновление, в котором устранены перечисленные проблемы?
+</strong>
+</p>
+<p>
+В исправлении от 5 декабря 2018 года или более новом устранены все проблемы, связанные с обновлением 2018-12-05. Информацию о том, как проверить обновления системы безопасности, можно найти в статье <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Справочного центра</a>.
+</p>
+<p id="type">
+<strong>2. Что означают сокращения в столбце <em>Тип</em>?</strong>
+</p>
+<p>
+В этом столбце указан тип уязвимости по следующей классификации:<em></em>
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>Сокращение</th>
+ <th>Описание</th>
+ </tr>
+ <tr>
+ <td>УВК</td>
+ <td>Удаленное выполнение кода</td>
+ </tr>
+ <tr>
+ <td>ПП</td>
+ <td>Повышение привилегий</td>
+ </tr>
+ <tr>
+ <td>РИ</td>
+ <td>Раскрытие информации</td>
+ </tr>
+ <tr>
+ <td>ОО</td>
+ <td>Отказ в обслуживании</td>
+ </tr>
+ <tr>
+ <td>Н/Д</td>
+ <td>Классификация недоступна</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>3. Что означает информация в столбце <em>Ссылки</em>?</strong>
+</p>
+<p>
+В таблицах с описанием уязвимостей есть столбец <em>Ссылки</em>. Каждая запись в нем может содержать префикс, указывающий на источник ссылки, а именно:
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>Префикс</th>
+ <th>Значение</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Идентификатор ошибки Android</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Ссылочный номер Qualcomm</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>Ссылочный номер MediaTek</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>Ссылочный номер NVIDIA</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Ссылочный номер Broadcom</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>4. Что означает символ * рядом с идентификатором ошибки Android в столбце <em>Ссылки</em>?</strong>
+</p>
+<p>
+Символ * означает, что исправление для уязвимости не опубликовано.<em></em> Необходимое обновление содержится в последних бинарных драйверах для устройств Pixel и Nexus, которые можно скачать на <a href="https://developers.google.com/android/drivers" class="external">сайте Google Developers</a>.
+</p>
+<p>
+<strong>5. Почему теперь одни уязвимости описываются в этом бюллетене, а другие – в бюллетенях по безопасности Android?</strong>
+</p>
+<p>
+В бюллетене по безопасности Android описаны уязвимости, которые необходимо устранить в последнем обновлении системы безопасности для устройств Android. Исправление дополнительных проблем, перечисленных здесь, для выпуска этого обновления не требуется.
+</p>
+<h2 id="versions">Версии</h2>
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>Версия</th>
+ <th>Дата</th>
+ <th>Примечания</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>3 декабря 2018 г.</td>
+ <td>Бюллетень опубликован.</td>
+ </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 67792eb5..03ab10d6 100644
--- a/ru/security/bulletin/pixel/2018.html
+++ b/ru/security/bulletin/pixel/2018.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>Бюллетени по безопасности Pixel и Nexus за 2018 г.</title>
+ <title>Бюллетени по безопасности Pixel и Nexus за 2018 г.</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -34,29 +34,27 @@
<th>Обновление системы безопасности</th>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-11-01.html">Ноябрь 2018 г.</a></td>
- <td>Готовится к публикации
- <!--
- <a href="/security/bulletin/pixel/2018-11-01.html">English</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ko">한국어</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
+ <td><a href="/security/bulletin/pixel/2018-11-01.html">Ноябрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-11-01.html">English</a> /
+<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>
</td>
- <td>5 ноября 2018 г.</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">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=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>
</td>
<td>1 октября 2018 г.</td>
<td>2018-10-05</td>
@@ -65,11 +63,11 @@
<td><a href="/security/bulletin/pixel/2018-09-01.html">Сентябрь 2018 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2018-09-01.html">English</a> /
- <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=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>
</td>
<td>4 сентября 2018 г.</td>
<td>2018-09-05</td>
@@ -78,11 +76,11 @@
<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=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>
</td>
<td>6 августа 2018 г.</td>
<td>2018-08-05</td>
@@ -91,11 +89,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2 июля 2018 г.</td>
<td>2018-07-05</td>
@@ -104,11 +102,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>4 июня 2018 г.</td>
<td>2018-06-05</td>
@@ -117,11 +115,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>7 мая 2018 г.</td>
<td>2018-05-05</td>
@@ -130,11 +128,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2 апреля 2018 г.</td>
<td>2018-04-05</td>
@@ -143,11 +141,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>Март 2018 г.</td>
<td>2018-03-05</td>
@@ -156,11 +154,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>Февраль 2018 г.</td>
<td>2018-02-05</td>
@@ -169,11 +167,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>Январь 2018 г.</td>
<td>2018-01-05</td>
diff --git a/ru/security/bulletin/pixel/index.html b/ru/security/bulletin/pixel/index.html
index 4cb2e1ad..f75d3bf7 100644
--- a/ru/security/bulletin/pixel/index.html
+++ b/ru/security/bulletin/pixel/index.html
@@ -43,29 +43,27 @@
<th>Обновление системы безопасности</th>
</tr>
<tr>
- <td><a href="/security/bulletin/pixel/2018-11-01.html">Ноябрь 2018 г.</a></td>
- <td>Готовится к публикации
- <!--
- <a href="/security/bulletin/pixel/2018-11-01.html">English</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ko">한국어</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
+ <td><a href="/security/bulletin/pixel/2018-11-01.html">Ноябрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-11-01.html">English</a> /
+<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>
</td>
- <td>5 ноября 2018 г.</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">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=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>
</td>
<td>1 октября 2018 г.</td>
<td>2018-10-05</td>
@@ -74,11 +72,11 @@
<td><a href="/security/bulletin/pixel/2018-09-01.html">Сентябрь 2018 г.</a></td>
<td>
<a href="/security/bulletin/pixel/2018-09-01.html">English</a> /
- <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=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>
</td>
<td>4 сентября 2018 г.</td>
<td>2018-09-05</td>
@@ -87,11 +85,11 @@
<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=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>
</td>
<td>6 августа 2018 г.</td>
<td>2018-08-05</td>
@@ -100,11 +98,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2 июля 2018 г.</td>
<td>2018-07-05</td>
@@ -113,11 +111,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>4 июня 2018 г.</td>
<td>2018-06-05</td>
@@ -126,11 +124,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>7 мая 2018 г.</td>
<td>2018-05-05</td>
@@ -139,11 +137,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2 апреля 2018 г.</td>
<td>2018-04-05</td>
@@ -152,11 +150,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>5 марта 2018 г.</td>
<td>2018-03-05</td>
@@ -165,11 +163,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>5 февраля 2018 г.</td>
<td>2018-02-05</td>
@@ -178,11 +176,11 @@
<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=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2 января 2018 г.</td>
<td>2018-01-05</td>
@@ -191,11 +189,11 @@
<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=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>4 декабря 2017 г.</td>
<td>2017-12-05</td>
@@ -204,11 +202,11 @@
<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=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>6 ноября 2017 г.</td>
<td>2017-11-05</td>
@@ -217,11 +215,11 @@
<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=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>2 октября 2017 г.</td>
<td>2017-10-05</td>
diff --git a/zh-cn/compatibility/9.0/versions.html b/zh-cn/compatibility/9.0/versions.html
deleted file mode 100644
index a9cd6623..00000000
--- a/zh-cn/compatibility/9.0/versions.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<html devsite><head>
- <title>允许的 Android 9 版本字符串</title>
- <meta name="project_path" value="/_project.yaml"/>
- <meta name="book_path" value="/_book.yaml"/>
- </head>
- <body>
- <!--
- Copyright 2017 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
-<p>如 <a href="android-9-cdd.pdf">Android 9 兼容性定义</a>第 3.2.2 节所述,系统属性 <code>android.os.Build.VERSION.RELEASE</code> 只能使用特定字符串。这是因为应用和网站可能需要该字符串具有可预测的值,以便最终用户能够轻松可靠地识别其设备搭载的 Android 版本。</p>
-<p>由于 Android 软件的后续版本可能会修改该字符串,但不会更改任何 API 行为,因此这些版本可能不会附带新的兼容性定义文档。此页中列出了基于 Android 9 的系统所允许的版本。对于 Android 9,<code>android.os.Build.VERSION.RELEASE</code> 只能使用以下值:</p>
-<ul>
-<li>9.0</li>
-</ul>
-
-</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/9.0/android-9.0-cdd.html b/zh-cn/compatibility/9/android-9-cdd.html
index bb4b20dd..bb4b20dd 100644
--- a/zh-cn/compatibility/9.0/android-9.0-cdd.html
+++ b/zh-cn/compatibility/9/android-9-cdd.html
diff --git a/zh-cn/compatibility/cts/audio-framework.html b/zh-cn/compatibility/cts/audio-framework.html
index e65b0b09..47228e56 100644
--- a/zh-cn/compatibility/cts/audio-framework.html
+++ b/zh-cn/compatibility/cts/audio-framework.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>这套新测试需要人为干预,并会用到一些外部硬件(包括<a href="#loopback_latency">回环插头</a>、<a href="#audio_frequency_speaker_test">USB 参照麦克风</a>和<a href="#audio_frequency_microphone_test">外部扬声器</a>)。对于没有 3.5 毫米 (⅛") 耳机端口的设备,用户将能够跳过测试并将其标记为成功。有关详情,请参阅以下部分。</p>
+<p>这套新测试需要人为干预,并会用到一些外部硬件(包括<a href="#loopback_latency">回环插头</a>、<a href="#audio_frequency_speaker_test">USB 参照麦克风</a>和<a href="#audio_frequency_microphone_test">外部扬声器</a>。对于没有 3.5 毫米 (⅛") 耳机端口的设备,用户将能够跳过测试并将其标记为成功。有关详情,请参阅以下部分。</p>
<h2 id="loopback_latency">回环插头延迟测试</h2>
diff --git a/zh-cn/compatibility/cts/camera-wfov-box-assembly.html b/zh-cn/compatibility/cts/camera-wfov-box-assembly.html
index a3396263..886564f1 100644
--- a/zh-cn/compatibility/cts/camera-wfov-box-assembly.html
+++ b/zh-cn/compatibility/cts/camera-wfov-box-assembly.html
@@ -24,7 +24,7 @@
<p>Android 9 引入了盒装 ITS 修订版 2,它是相机图像测试套件 (ITS) 中的一种自动测试系统,适用于宽视野 (WFoV) 和常规视野 (RFoV) 相机系统。修订版 1 旨在测试 FoV 小于 90 度 (RFoV) 的移动设备相机。修订版 2 还可用于测试 FoV 大于 90 度 (WFoV) 的相机,这样,您便能够使用一个盒装 ITS 系统测试 FoV 各不相同的不同相机。</p>
<p>盒装 ITS 系统由一个根据计算机辅助设计 (CAD) 图纸激光切割而成的塑料盒、一个内部照明系统、一台图表平板电脑和一部被测设备 (DUT) 组成。您可以购买盒装 ITS,也可以自行构建。</p>
-<aside class="note"><strong>注意:</strong><span>要详细了解如何构建盒装 ITS 修订版 1(仅适用于 RFoV 相机),请参阅<a href="/compatibility/cts/camera-its-box-assembly">组装盒装 ITS</a>。</span></aside>
+<aside class="note"><strong>注意</strong>:<span>要详细了解如何构建盒装 ITS 修订版 1(仅适用于 RFoV 相机),请参阅<a href="/compatibility/cts/camera-its-box-assembly">组装盒装 ITS</a>。</span></aside>
<h2 id="purchasing_a_wfov_its-in-a-box">购买 WFoV 盒装 ITS</h2>
<p>建议您通过以下任一合格的供应商购买 WFoV 盒装 ITS。</p>
diff --git a/zh-cn/compatibility/cts/downloads.html b/zh-cn/compatibility/cts/downloads.html
index 9b70e4ee..3bc7c5d1 100644
--- a/zh-cn/compatibility/cts/downloads.html
+++ b/zh-cn/compatibility/cts/downloads.html
@@ -23,50 +23,50 @@
<p>感谢您对 Android 兼容性计划的关注!您可以通过以下链接访问关于该计划的重要文档和信息。随着 CTS 的更新,此网页上会陆续添加新的版本。CTS 版本在链接名称中由 R&lt;数字&gt; 表示。</p>
<h2 id="android-90">Android 9</h2>
-<p>Android 9 是代号为 P 的开发里程碑版本。以下测试(包括针对免安装应用的测试)的源代码可以与开放源代码树中的“android-cts-9.0_r3”标记同步。</p>
+<p>Android 9 是代号为 P 的开发里程碑版本。以下测试(包括针对免安装应用的测试)的源代码可以与开放源代码树中的“'android-cts-9.0_r4”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-9.0_r3-linux_x86-arm.zip">Android 9.0 R3 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-9.0_r3-linux_x86-x86.zip">Android 9.0 R3 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r3-linux_x86-arm.zip">Android 9.0 R3 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r3-linux_x86-x86.zip">Android 9.0 R3 CTS 验证程序 - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r3-linux_x86-arm.zip">Android 9.0 R3 CTS(适用于免安装应用)- ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r3-linux_x86-x86.zip">Android 9.0 R3 CTS(适用于免安装应用)- x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-9.0_r4-linux_x86-arm.zip">Android 9.0 R4 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-9.0_r4-linux_x86-x86.zip">Android 9.0 R4 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r4-linux_x86-arm.zip">Android 9.0 R4 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r4-linux_x86-x86.zip">Android 9.0 R4 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r4-linux_x86-arm.zip">Android 9.0 R4 CTS(适用于免安装应用)- ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r4-linux_x86-x86.zip">Android 9.0 R4 CTS(适用于免安装应用)- x86</a></li>
</ul>
<h2 id="android-81">Android 8.1</h2>
-<p>Android 8.1 是代号为 Oreo-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.1_r10”标记同步。</p>
+<p>Android 8.1 是代号为 Oreo-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.1_r11”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.1_r10-linux_x86-arm.zip">Android 8.1 R10 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.1_r10-linux_x86-x86.zip">Android 8.1 R10 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r10-linux_x86-arm.zip">Android 8.1 R10 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r10-linux_x86-x86.zip">Android 8.1 R10 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.1_r11-linux_x86-arm.zip">Android 8.1 R11 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.1_r11-linux_x86-x86.zip">Android 8.1 R11 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r11-linux_x86-arm.zip">Android 8.1 R11 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r11-linux_x86-x86.zip">Android 8.1 R11 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-80">Android 8.0</h2>
-<p>Android 8.0 是代号为 Oreo 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.0_r14”标记同步。</p>
+<p>Android 8.0 是代号为 Oreo 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.0_r15”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r14-linux_x86-arm.zip">Android 8.0 R14 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r14-linux_x86-x86.zip">Android 8.0 R14 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r14-linux_x86-arm.zip">Android 8.0 R14 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r14-linux_x86-x86.zip">Android 8.0 R14 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r15-linux_x86-arm.zip">Android 8.0 R15 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r15-linux_x86-x86.zip">Android 8.0 R15 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r15-linux_x86-arm.zip">Android 8.0 R15 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r15-linux_x86-x86.zip">Android 8.0 R15 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-71">Android 7.1</h2>
-<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r22”标记同步。</p>
+<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r23”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r22-linux_x86-arm.zip">Android 7.1 R22 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r22-linux_x86-x86.zip">Android 7.1 R22 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r22-linux_x86-arm.zip">Android 7.1 R22 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r22-linux_x86-x86.zip">Android 7.1 R22 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r23-linux_x86-arm.zip">Android 7.1 R23 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r23-linux_x86-x86.zip">Android 7.1 R23 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r23-linux_x86-arm.zip">Android 7.1 R23 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r23-linux_x86-x86.zip">Android 7.1 R23 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-70">Android 7.0</h2>
-<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r26”标记同步。</p>
+<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r27”标记同步。</p>
<ul>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r26-linux_x86-arm.zip">Android 7.0 R26 兼容性测试套件 (CTS) - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r26-linux_x86-x86.zip">Android 7.0 R26 兼容性测试套件 (CTS) - x86</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r26-linux_x86-arm.zip">Android 7.0 R26 CTS 验证程序 - ARM</a></li>
-<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r26-linux_x86-x86.zip">Android 7.0 R26 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r27-linux_x86-arm.zip">Android 7.0 R27 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r27-linux_x86-x86.zip">Android 7.0 R27 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r27-linux_x86-arm.zip">Android 7.0 R27 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r27-linux_x86-x86.zip">Android 7.0 R27 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-60">Android 6.0</h2>
diff --git a/zh-cn/compatibility/cts/run.html b/zh-cn/compatibility/cts/run.html
index e055437d..370327bc 100644
--- a/zh-cn/compatibility/cts/run.html
+++ b/zh-cn/compatibility/cts/run.html
@@ -240,7 +240,7 @@
</tr>
<tr>
<td><code>run retry</code></td>
- <td><p><strong>对于 Android 9</strong>:重新尝试运行在以前的会话中失败或未执行的所有测试。例如,<code>run retry --retry <session id> -s<device serial></device></session></code>,或包含 TF 分片的 <code>run retry --retry <session id> --shard-count</session></code>。</p>
+ <td><p><strong>对于 Android 9</strong>:重新尝试运行在以前的会话中失败或未执行的所有测试。例如,<code>run retry --retry <session id> -s<device serial></device></session></code> 或包含 TF 分片的 <code>run retry --retry <session id> --shard-count</session></code>。</p>
<p>Android 9 不允许使用 <code>run cts --retry</code>。</p></td>
</tr>
<tr>
@@ -258,7 +258,7 @@
</tr>
<tr>
<td><code>-- module/-m &lt;test_module_name&gt; -- test &lt;test_name&gt; </code></td>
- <td>运行指定的模块和测试。例如,<code>run cts -m Gesture --test android.gesture.cts.。GestureTest#testGetStrokes</code> 会运行指定的包、类或测试。</td>
+ <td>运行指定的模块和测试。例如,<code>run cts -m Gesture --test android.gesture.cts.GestureTest#testGetStrokes</code> 会运行指定的包、类或测试。</td>
</tr>
<tr>
<td><code>--retry</code></td>
diff --git a/zh-cn/compatibility/cts/secure-element.html b/zh-cn/compatibility/cts/secure-element.html
index 9875e19a..dabff778 100644
--- a/zh-cn/compatibility/cts/secure-element.html
+++ b/zh-cn/compatibility/cts/secure-element.html
@@ -41,7 +41,7 @@
<li><code>CtsOmapiTestCases.apk</code> 应能够选择具有以下应用标识符 (AIDs) 的小程序:<ol>
<li>0xA000000476416E64726F696443545331
<ol>
- <li>当在 <code>android.se.omapi.Channel.Transmit</code> (Transmit<em></em>) 中收到以下应用协议数据单元 (APDU) 时,该小程序应引发安全异常:<ol>
+ <li>当在 <code>android.se.omapi.Channel.Transmit</code> (Transmit) 中收到以下应用协议数据单元 (APDU) 时,该小程序应引发安全异常:<em></em><ol>
<li>0x00700000</li>
<li>0x00708000</li>
<li>0x00A40404104A535231373754657374657220312E30</li>
@@ -144,7 +144,7 @@
</tr>
<tr>
<td>0x00F30E06</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>否</td>
</tr>
<tr>
@@ -435,12 +435,12 @@
<tr>
<td>0x00C27FFF00</td>
<td>0x9000</td>
- <td>2048</td>
+ <td>32767</td>
</tr>
<tr>
<td>0x00CF080000</td>
<td>0x9000</td>
- <td>32767</td>
+ <td>2048</td>
</tr>
<tr>
<td>0x94C2080000</td>
@@ -450,9 +450,10 @@
</tbody>
</table>
</li>
- <li>对于以下指定的 APDU,该小程序应返回成功状态字词 <code>0x9000</code>:0x00F40000</li>
+ <li>对于以下指定 APDU,该小程序应返回“SELECT(选择)”命令中收到的 P2 的值和成功状态字(即 <code>0x009000</code>):0x00F4000000</li>
</ol>
- </li><li>A000000476416E64726F696443545332<ol>
+ </li><li>A000000476416E64726F696443545332
+ <ol>
<li>选中后,该 AID 应返回一个多于 2 个字节并使用基本编码规则 (BER) 和标记长度值 (TLV) 进行正确格式化的特定响应。</li>
</ol>
</li>
@@ -486,6 +487,8 @@
<li>0xA000000476416E64726F69644354534F</li>
</ul>
+<p>选中后,以上任一 AID 应返回一个多于 2 个字节并使用 BER 和 TLV 进行正确格式化的特定响应。</p>
+
<h3 id="ctssecureelementaccesscontroltestcases1"><code>CtsSecureElementAccessControlTestCases1</code></h3>
<ul>
@@ -748,7 +751,7 @@ uicc.hci.services.connectivity v1.0 - A0000000090005FFFFFFFF8916020200</p>
<p>小程序安装命令</p>
-<p><code>80E60C00300C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>010002C90000</code><br />
+<p><code>80E60C00300C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>01000EEF0AA008810101A5038201C0C9000000</code><br />
<strong>Module_AID</strong>:6F 6D 61 70 69 4A 53 52 31 37 37<br />
<strong>AID</strong>:A000000476416E64726F696443545331</p>
@@ -758,7 +761,7 @@ uicc.hci.services.connectivity v1.0 - A0000000090005FFFFFFFF8916020200</p>
<h5 id="accesscontrol_tests_template_using_pkcs15_structure">AccessControl 测试(使用 PKCS#15 结构的模板)</h5>
-<p><code>80E60C003C0C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>01000EEF0AA008810101A5038201C0C90000</code><br />
+<p><code>80E60C003C0C6F6D617069636172646C65740B<var>module_AID</var>10<var>AID</var>01000EEF0AA008810101A5038201C0C9000000</code><br />
<strong>Module_AID</strong>:6F 6D 61 70 69 4A 53 52 31 37 37</p>
<p><strong>AID:</strong></p>
diff --git a/zh-cn/compatibility/cts/setup.html b/zh-cn/compatibility/cts/setup.html
index 5afd5256..cbba8932 100644
--- a/zh-cn/compatibility/cts/setup.html
+++ b/zh-cn/compatibility/cts/setup.html
@@ -28,7 +28,7 @@
<h3 id="camera">相机</h3>
<p>在运行相机 CTS 时,建议您使用正常光照条件,并且测试图案图表(例如棋盘图案)不要与镜头靠得太近(具体距离取决于设备的最小焦距)。</p>
-<p>如果 DUT 支持外部相机(如 USB 网络摄像头),则在运行 CTS 时必须将外部相机连接到充电器,否则 CTS 测试将失败。</p>
+<p>如果 DUT 支持外部相机(如 USB 网络摄像头),则在运行 CTS 时必须将外部相机接上电源,否则 CTS 测试将失败。</p>
<h3 id="gnss">GPS/GNSS</h3>
<p>如果 DUT 支持全球定位系统 (GPS)/全球导航卫星系统 (GNSS) 功能,则应该以合适的信号电平向 DUT 提供 GPS/GNSS 信号(GPS 部分符合 ICD-GPS-200C 标准),以便其接收到相应信号并计算 GPS 位置。GPS/GNSS 信号源的种类不限(可以是卫星模拟器,也可以是室外 GPS/GNSS 信号中继器),只需将 DUT 放在距离窗口足够近的位置以使其可以直接接收到足够强的 GPS/GNSS 信号即可。</p>
@@ -108,7 +108,8 @@ ro.product.first_api_level=21
<h4 id="android-9-higher">Android 9 及更高版本的初始 API 级别</h4>
- <p>对于搭载 Android 9 或更高版本的设备,请将属性 <code>ro.product.first_api_level</code> 设置为在<a href="/setup/start/build-numbers">代号、标记和细分版本号</a>上找到的有效值。
+ <p>
+对于搭载 Android 9 或更高版本的设备,请将属性 <code>ro.product.first_api_level</code> 设置为在<a href="/setup/start/build-numbers">代号、标记和细分版本号</a>上找到的有效值。
</p>
<h4 id="android-8x-lower">Android 8.x 及更低版本的初始 API 级别</h4>
@@ -165,7 +166,7 @@ ro.product.first_api_level=21
<p class="warning"><strong>警告:</strong>这将清空设备中的所有用户数据。</p>
</li><li>将设备的语言设置为英语(<strong>美国</strong>):<strong>设置 &gt; 语言和输入法 &gt; 语言</strong>
</li><li>如果设备具有 GPS 或 WLAN/移动网络功能,则打开位置信息设置:<strong>设置 &gt; 位置信息 &gt; 开启</strong>
- </li><li>连接到满足以下要求的 WLAN 网络:支持 IPv6,可以将被测设备 (DUT) 视为隔离客户端(请参阅上文的<a href="#physical_environment">物理环境</a>部分),并可连接到互联网。具体操作方法为:<strong>设置 &gt; WLAN</strong><em></em>
+ </li><li>连接到满足以下要求的 WLAN 网络:支持 IPv6、可以将被测设备 (DUT) 视为隔离客户端(请参阅上文的<em>物理环境</em>部分),并可连接到互联网。具体操作方法为:<a href="#physical_environment">设置 &gt; WLAN</a><strong></strong>
</li><li>确保设备上未设置锁定图案或密码:<strong>设置 &gt; 安全 &gt; 屏幕锁定 &gt; 无</strong>
</li><li>在设备上启用 <strong>USB 调试</strong>:<strong>设置 &gt; 开发者选项 &gt; USB 调试</strong>。
<p class="note"><strong>注意:</strong>在 Android 4.2 及更高版本中,默认情况下会隐藏<strong>开发者选项</strong>。要显示这些选项,请依次转到<strong>设置 &gt; 关于手机</strong>,然后点按<strong>版本号</strong>七次。返回上一屏幕以查找<strong>开发者选项</strong>。要查看其他详细信息,请参阅<a href="http://developer.android.com/studio/run/device.html#developer-device-options">启用设备上的开发者选项</a>。</p>
@@ -178,12 +179,13 @@ ro.product.first_api_level=21
</li><li>启动浏览器并关闭任何启动/设置屏幕。
</li><li>使用 USB 数据线连接用于测试设备的台式机<p class="note"><strong>注意:</strong>将运行 Android 4.2.2 或更高版本的设备连接到计算机时,系统会显示一个对话框,询问您是否接受允许通过此计算机进行调试的 RSA 密钥。选择“允许 USB 调试”。<em></em></p>
</li><li>在设备上安装和配置帮助程序应用。
-<p class="note"><strong>注意:</strong>对于 CTS 版本 2.1 R2 至 4.2 R4,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:<br />
+<p class="note"><strong>注意:</strong>对于 CTS 2.1 R2 - 4.2 R4 的版本,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:<br />
<code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br />
在设备上,依次启用:<strong>设置 &gt; 无障碍 &gt; 无障碍 &gt; Delegating Accessibility Service</strong></p>
<p class="note"><strong>注意:</strong>对于 7.0 之前的 CTS 版本,请在声明 <code>android.software.device_admin</code> 的设备上设置您的设备,以使用以下命令执行设备管理测试:<br />
<code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code><br />
-</p><p>依次选择“设置”&gt;“安全”&gt;“选择设备管理器”,然后启用两个 <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> 设备管理器。确保 <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> 和任何其他预加载的设备管理器均保持停用状态。
+</p><p>
+依次选择“设置”&gt;“安全”&gt;“选择设备管理器”,然后启用两个 <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> 设备管理器。确保 <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> 和任何其他预加载的设备管理器均保持停用状态。
</p>
</li><li>将 CTS 媒体文件复制到设备上,如下所示:<p class="note"><strong>注意:</strong>对于 CTS 2.3 R12 及更高版本,如果设备支持视频编解码器,则必须将 CTS 媒体文件复制到设备上。</p>
<ul>
diff --git a/zh-cn/compatibility/cts/usb-audio.html b/zh-cn/compatibility/cts/usb-audio.html
index 9cbb72d8..b69e0e04 100644
--- a/zh-cn/compatibility/cts/usb-audio.html
+++ b/zh-cn/compatibility/cts/usb-audio.html
@@ -89,7 +89,7 @@
</li>
<li>支持 <a href="/devices/accessories/headset/usb-headset-spec">Android USB 耳机配件规范</a>的模拟耳机。这类耳机应连接到 USB 转模拟音频转换器(如,<a href="https://store.google.com/us/product/usb_c_headphone_adapter" class="external">Google 数字 USB-C 型转 3.5 毫米头戴式耳机适配器</a>或 <a href="https://www.htc.com/us/accessories-b/#!pid=htc-u11&amp;acc=usb-c-digital-to-3-5mm-htc-u11" class="external">HTC 数字 USB-C 型转 3.5 毫米音频耳机插孔适配器</a>)。
- <p>例如,已知的兼容模拟耳机外设包括 <a href="https://www.bose.com/en_us/products/headphones/earphones/soundsport-in-ear-headphones-samsung-devices.html" class="external">Bose SoundSport® 入耳式耳机 – Samsung 和 Android™ 设备</a>,以及<a href="https://www.urbanears.com/ue_us_en/reimers#reimers-black-belt" class="external">专为 Android 耳机打造的 UrbanEars Reimers Black Belt</a>。这些模拟耳机必须通过 USB 转音频转换器连接到设备上的 USB 端口。</p>
+ <p>例如,已知的兼容模拟耳机外设示例包括 <a href="https://www.bose.com/en_us/products/headphones/earphones/soundsport-in-ear-headphones-samsung-devices.html" class="external">Bose SoundSport® 入耳式耳机 – Samsung 和 Android™ 设备</a>,以及<a href="https://www.urbanears.com/ue_us_en/reimers#reimers-black-belt" class="external">专为 Android 耳机打造的 UrbanEars Reimers Black Belt</a>。这些模拟耳机必须通过 USB 转音频转换器连接到设备上的 USB 端口。</p>
</li>
</ul>
diff --git a/zh-cn/compatibility/overview.html b/zh-cn/compatibility/overview.html
index 830466e9..f5246625 100644
--- a/zh-cn/compatibility/overview.html
+++ b/zh-cn/compatibility/overview.html
@@ -70,7 +70,7 @@
<p>Android 兼容性计划由三个关键组成部分组成:</p>
<ul>
<li><a href="https://android.googlesource.com/">Android 开放源代码项目</a>源代码</li>
-<li><a href="cdd.html">兼容性定义文档 (CDD)</a><a>,代表兼容性方面的“政策”</a></li><a>
+<li><a href="cdd.html">兼容性定义文档 (CDD)</a><a>,代表兼容性的“政策”方面</a></li><a>
</a><li><a></a><a href="cts/index.html">兼容性测试套件 (CTS)</a>,代表兼容性的“机制”</li>
</ul>
@@ -86,6 +86,6 @@
<p>就像每个版本的 Android 平台存在于源代码树的单独分支中一样,每个版本也具有单独的 CTS 和 CDD。CDD、CTS 和源代码,再加上您的硬件和软件自定义内容,便是打造兼容设备所需的一切。</p>
<h2 id="licensing-gms">申请 Google 移动服务 (GMS) 许可</h2>
-<p>打造与 Android 兼容的设备后,请考虑申请在 Android 上运行的 Google 移动服务(简称 GMS,指 Google 拥有的一系列应用,包括 Google Play、YouTube、Google 地图、Gmail 等)的使用许可。GMS 不是 Android 开放源代码项目的一部分,您只有在获得 Google 许可后才能使用它们。要了解如何申请 GMS 许可,请参阅<a href="/setup/community#for-business-inquiries">联系方式/社群</a>页面。</p>
+<p>打造与 Android 兼容的设备后,请考虑申请在 Android 上运行的 Google 移动服务(简称 GMS,指 Google 拥有的一系列应用,包括 Google Play、YouTube、Google 地图、Gmail 等)的使用许可。GMS 不是 Android 开放源代码项目的一部分,您只有在获得 Google 许可后才能使用它们。要了解如何申请 GMS 许可,请参阅我们的<a href="/setup/community#for-business-inquiries">联系方式/社区</a>页面。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/atest.html b/zh-cn/compatibility/tests/development/atest.html
new file mode 100644
index 00000000..68bd31c6
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/atest.html
@@ -0,0 +1,450 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="atest" class="page-title">Atest</h1>
+
+<p>Atest 是一个命令行工具,用户可以使用这种工具在本地编译、安装并运行 Android 测试。本文介绍了如何使用 Atest 运行 Android 测试。</p>
+
+<p>要了解如何编写测试,请参阅 <a href="https://android.googlesource.com/platform/platform_testing/+/master/docs/index.md" class="external">Android 平台测试</a>。在编写测试的编译脚本文件 (<code>Android.mk</code>) 时,请包含变量 <code>LOCAL_COMPATIBILITY_SUITE</code>。建议使用 <code>device-test</code> 作为默认值。</p>
+
+<p>要详细了解 Atest 的总体结构,请参阅 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/docs/atest_structure.md" class="external">Atest 开发者指南</a>。要了解如何向 Atest 添加功能,请参阅 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/docs/developer_workflow.md" class="external">Atest 开发者工作流程</a>。</p>
+
+<h2 id="setting_up_your_environment">设置您的环境</h2>
+
+<p>要运行 Atest,您必须设置环境。</p>
+
+<h3 id="1_run_envsetupsh">1. 运行 envsetup.sh</h3>
+
+<p>从 Android 源代码检出的根目录处,运行:</p>
+
+<pre>
+<code class="devsite-terminal">source build/envsetup.sh</code>
+</pre>
+
+<h3 id="2_run_lunch">2. 运行 lunch</h3>
+
+<p>运行 <code>$ lunch</code> 命令以显示受支持设备菜单。找到相应设备并运行该命令。</p>
+
+<p>例如,如果您已连接 ARM 设备,请运行以下命令:</p>
+
+<pre>
+<code class="devsite-terminal">lunch aosp_arm64-eng</code>
+</pre>
+
+<p>这会设置运行 Atest 所需的各种环境变量,并将 Atest 命令添加到您的 <code>$PATH</code>。</p>
+
+<h2 id="basic_usage">基本用法</h2>
+
+<p>Atest 命令采用以下形式:</p>
+
+<pre>
+<code class="devsite-terminal">atest [<var>optional-arguments</var>] <var>test-to-run</var></code>
+</pre>
+
+<h3 id="optional_arguments">可选参数</h3>
+
+<p>您可以在 Atest 命令中使用以下可选参数。</p>
+
+<table>
+<thead>
+<tr>
+<th style="text-align: center">选项</th>
+<th style="text-align: left">长选项</th>
+<th>说明</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td style="text-align: center"><code>-b</code></td>
+<td style="text-align: left"><code>--build</code></td>
+<td>构建测试目标。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-i</code>
+</td>
+<td style="text-align: left"><code>--install</code>
+</td>
+<td>在设备上安装测试软件工件 (APK)。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-t</code></td>
+<td style="text-align: left"><code>--test</code></td>
+<td>运行测试。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-s</code>
+</td>
+<td style="text-align: left"><code>--serial</code>
+</td>
+<td>在指定设备上运行测试。一次可以测试一台设备。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-d</code></td>
+<td style="text-align: left"><code>--disable-teardown</code></td>
+<td>停用测试拆解和清理。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c>
+</c></td>
+<td style="text-align: left"><code>--info</code>
+</td>
+<td>显示指定目标的相关信息并退出。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c></c></td>
+<td style="text-align: left"><code>--dry-run</code></td>
+<td>--info 的同义词。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-m</code>
+</td>
+<td style="text-align: left"><code>--rebuild-module-info</code>
+</td>
+<td>强制重建 module-info.json 文件。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-w</code>
+</td>
+<td style="text-align: left"><code>--wait-for-debugger</code>
+</td>
+<td>在执行之前等待调试程序。仅用于插桩测试。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-v</code></td>
+<td style="text-align: left"><code>--verbose</code></td>
+<td>显示 DEBUG 级别日志记录。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c>
+</c></td>
+<td style="text-align: left"><code>--generate-baseline</code>
+</td>
+<td>生成基准指标,默认情况下运行 5 次迭代。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c>
+</c></td>
+<td style="text-align: left"><code>--generate-new-metrics</code>
+</td>
+<td>生成新指标,默认情况下运行 5 次迭代。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c></c></td>
+<td style="text-align: left"><code>--detect-regression</code></td>
+<td>运行回归检测算法。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c>
+</c></td>
+<td style="text-align: left"><code>--[CUSTOM_ARGS]</code>
+</td>
+<td>为测试运行器指定自定义参数。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-a</code>
+</td>
+<td style="text-align: left"><code>--all-abi</code>
+</td>
+<td>针对所有可用的设备架构运行测试。</td>
+</tr>
+<tr>
+<td style="text-align: center"><code>-h</code></td>
+<td style="text-align: left"><code>--help</code></td>
+<td>显示帮助消息并退出。</td>
+</tr>
+<tr>
+<td style="text-align: center"><c>
+
+</c></td>
+<td style="text-align: left"><code>--host</code>
+
+</td>
+<td>在没有设备的情况下在主机上完全运行测试。<br />(注意:使用 --host 运行需要设备的主机测试将失败)。</td>
+</tr>
+</tbody>
+</table>
+
+<p>要详细了解 <code>-b</code>、<code>-i</code> 和 <code>-t</code>,请参阅<a href="#specifying_steps_build_install_or_run">指定步骤:编译、安装或运行</a>。</p>
+
+<h3 id="tests_to_run">要运行的测试</h3>
+
+<p>您可以使用 test-to-run 运行一个或多个测试。<var></var>要运行多个测试,请使用空格将各测试引用分隔开。例如:</p>
+
+<pre>
+<code class="devsite-terminal">atest <var>test-to-run-1</var> <var>test-to-run-2</var></code>
+</pre>
+
+<p>以下是一些示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests</code>
+<code class="devsite-terminal">atest example/reboot</code>
+<code class="devsite-terminal">atest FrameworksServicesTests CtsJankDeviceTestCases</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests</code>
+</pre>
+
+<p>要详细了解如何引用测试,请参阅<a href="#identifying_tests">标识测试</a>。</p>
+
+<h2 id="identifying_tests">标识测试</h2>
+
+<p>您可以使用测试的模块名称、Module:Class、类名称、TF 集成测试、文件路径或软件包名称来指定 test-to-run 参数。<var></var></p>
+
+<h3 id="module_name">模块名称</h3>
+
+<p>要运行整个测试模块,请使用其模块名称。请输入该模块在该测试的 <code>Android.mk</code> 或 <code>Android.bp</code> 文件中的 <code>LOCAL_MODULE</code> 或 <code>LOCAL_PACKAGE_NAME</code> 变量中的显示名称。</p>
+<aside class="note"><strong>注意</strong>:<span>使用 <strong>TF 集成测试</strong>运行直接集成到 TradeFed 中的非模块测试。</span></aside>
+<p>示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests</code>
+<code class="devsite-terminal">atest CtsJankDeviceTestCases</code>
+</pre>
+
+<h3 id="moduleclass">Module:Class</h3>
+
+<p>要运行模块内的单个类,请使用 <strong>Module:Class</strong>。<strong>Module</strong> 如<a href="#module_name">模块名称</a>中所述。<strong>Class</strong> 是 <code>.java</code> 文件中测试类的名称,可以是完全限定的类名,也可以是基本名称。</p>
+
+<p>示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest CtsJankDeviceTestCases:CtsDeviceJankUi</code>
+</pre>
+
+<h3 id="class_name">类名称</h3>
+
+<p>要在不明确声明模块名称的情况下运行单个类,请使用类名称。</p>
+
+<p>示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest CtsDeviceJankUi</code>
+</pre>
+
+<p>建议尽可能使用 <strong>Module:Class</strong> 引用,因为如果没有声明任何模块,Atest 将需要更多时间来搜索完整源代码树以查找可能的匹配项。</p>
+
+<p>示例(从最快到最慢排序):</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:com.android.server.wm.ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests</code>
+<code class="devsite-terminal">atest ScreenDecorWindowTests</code>
+</pre>
+
+<h3 id="tf_integration_test">TF 集成测试</h3>
+
+<p>要运行直接集成到 TradeFed(非模块)中的测试,请输入 <code>tradefed.sh list configs</code> 命令的输出中显示的名称。例如:</p>
+
+<p>要运行 <a href="https://android.googlesource.com/platform/tools/tradefederation/contrib/+/master/res/config/example/reboot.xml" class="external"><code>reboot.xml</code> 测试</a>,请使用以下命令:</p>
+
+<pre>
+<code class="devsite-terminal">atest example/reboot</code>
+</pre>
+
+<p>要运行 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/res/config/native-benchmark.xml" class="external"><code>native-benchmark.xml</code> 测试</a>,请使用以下命令:</p>
+
+<pre>
+<code class="devsite-terminal">atest native-benchmark</code>
+</pre>
+
+<h3 id="file_path">文件路径</h3>
+
+<p>通过输入相应测试文件或目录的路径,您既可以运行基于模块的测试,也可以运行基于集成的测试。您还可以通过指定单个类的 Java 文件的路径来运行该类。同时支持相对路径和绝对路径。</p>
+
+<p>示例:通过路径运行 <code>CtsJankDeviceTestCases</code> 模块的两种方法</p>
+
+<ol>
+<li><p>从 android repo-root 运行模块:<var></var></p>
+
+<pre>
+<code class="devsite-terminal">atest cts/tests/jank</code>
+</pre></li>
+<li><p>从 android <var>repo-root</var>/cts/tests/jank 运行:</p>
+
+<pre>
+<code class="devsite-terminal">atest .</code>
+</pre></li>
+</ol>
+
+<p>示例:通过路径运行 <code>CtsJankDeviceTestCases</code> 模块内的特定类。从 android repo-root 运行:<var></var></p>
+
+<pre>
+<code class="devsite-terminal">atest cts/tests/jank/src/android/jank/cts/ui/CtsDeviceJankUi.java</code>
+</pre>
+
+<p>示例:通过路径运行集成测试。从 android repo-root 运行:<var></var></p>
+
+<pre>
+<code class="devsite-terminal">atest tools/tradefederation/contrib/res/config/example/reboot.xml</code>
+</pre>
+
+<h3 id="package_name">软件包名称</h3>
+
+<p>Atest 支持按软件包名搜索测试。</p>
+
+<p>示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest com.android.server.wm</code>
+<code class="devsite-terminal">atest android.jank.cts</code>
+</pre>
+
+<h2 id="specifying_steps_build_install_or_run">指定步骤:编译、安装或运行</h2>
+
+<p>您可以使用 <code>-b</code>、<code>-i</code> 和 <code>-t</code> 选项指定要运行的步骤。如果未指定选项,则运行所有步骤。</p>
+<aside class="note"><strong>注意</strong>:<span>您可以单独运行 <code>-b</code> 和 <code>-t</code>,但 <code>-i</code> 需要运行 <code>-t</code>。</span></aside>
+<ul>
+<li>仅限编译目标:<code>atest -b <var>test-to-run</var></code></li>
+<li>仅限运行测试:<code>atest -t <var>test-to-run</var></code></li>
+<li>安装 apk 并运行测试:<code>atest -it <var>test-to-run</var></code></li>
+<li>编译并运行,但不安装:<code>atest -bt
+<var>test-to-run</var></code></li>
+</ul>
+
+<p>Atest 可以强制测试跳过清理/拆解步骤。许多测试(例如 CTS)会在运行完测试后清理设备,因此如果没有 <code>--disable-teardown</code> 参数,尝试使用 <code>-t</code> 重新运行测试将失败。请在使用 <code>-t</code> 之前先使用 <code>-d</code> 跳过测试清理步骤以便进行循环测试。</p>
+
+<pre>
+<code class="devsite-terminal">atest -d <var>test-to-run</var></code>
+<code class="devsite-terminal">atest -t <var>test-to-run</var></code>
+</pre>
+<aside class="note"><strong>注意</strong>:<span><code>-t</code> 会同时禁止对设备进行 <strong>setup/install</strong> 和 <strong>teardown/cleanup</strong>,因此您可以使用 <code>atest -t
+<var>test-to-run</var></code> 重新运行测试任意次数。</span></aside>
+<h2 id="running_specific_methods">运行特定方法</h2>
+
+<p>您可以运行测试类中的特定方法。虽然需要构建整个模块,但这么做可以缩短运行测试所需的时间。要运行特定方法,请使用任何受支持的类标识法(Module:Class、文件路径等)来标识类,并附加相应方法的名称。</p>
+
+<pre>
+<code class="devsite-terminal">atest <var>reference-to-class</var>#<var>method1</var></code>
+</pre>
+
+<p>您可以使用逗号指定多个方法。</p>
+
+<pre>
+<code class="devsite-terminal">atest <var>reference-to-class</var>#<var>method1</var>,<var>method2</var>,<var>method3</var></code>
+</pre>
+
+<p>示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest com.android.server.wm.ScreenDecorWindowTests#testMultipleDecors</code>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval</code>
+</pre>
+
+<p>以下两个示例展示了用于运行单个方法 <code>testFlagChange</code> 的首选方式。之所以首选这些示例而不是只使用类名称,是因为指定模块或 Java 文件位置可以让 Atest 更快地找到测试:</p>
+
+<ol>
+<li><p>使用 Module:Class</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange</code>
+</pre></li>
+<li><p>从 android repo-root 运行:<var></var></p>
+
+<pre>
+<code class="devsite-terminal">atest frameworks/base/services/tests/servicestests/src/com/android/server/wm/ScreenDecorWindowTests.java#testFlagChange</code>
+</pre></li>
+</ol>
+
+<p>可以从不同的类和模块运行多个方法:</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests#testFlagChange,testRemoval ScreenDecorWindowTests#testMultipleDecors</code>
+</pre>
+
+<h2 id="running_multiple_classes">运行多个类</h2>
+
+<p>要运行多个类,请使用空格将这些类分隔开,如同运行多个测试。Atest 可有效地构建和运行类,因此指定模块中的一部分类可以提高性能(与运行整个模块相比)。</p>
+
+<p>示例:</p>
+
+<ul>
+<li><p>同一模块中的两个类:</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests FrameworksServicesTests:DimmerTests</code>
+</pre></li>
+<li><p>不同模块中的两个类:</p>
+
+<pre>
+<code class="devsite-terminal">atest FrameworksServicesTests:ScreenDecorWindowTests CtsJankDeviceTestCases:CtsDeviceJankUi</code>
+</pre></li>
+</ul>
+
+<h2 id="running_native_tests">运行原生测试</h2>
+
+<p>Atest 可以运行原生测试。</p>
+
+<p>示例:</p>
+
+<ul>
+<li><p>输入测试:</p>
+
+<pre>
+<code class="devsite-terminal">atest -a libinput_tests inputflinger_tests</code>
+</pre></li>
+</ul>
+
+<p>使用 <code>-a</code> 可针对所有可用的设备架构(在此示例中为 armeabi-v7a(ARM 32 位)和 arm64-v8a(ARM 64 位))运行测试。</p>
+
+<h2 id="detecting_metrics_regression">检测指标回归</h2>
+
+<p>您可以生成打补丁前指标或打补丁后指标,而无需运行回归检测。您可以指定迭代次数,但默认值为 5。</p>
+
+<p>示例:</p>
+
+<pre>
+<code class="devsite-terminal">atest <var>test-to-run</var> --generate-baseline <var>[optional-iteration]</var></code>
+<code class="devsite-terminal">atest <var>test-to-run</var> --generate-new-metrics <var>[optional-iteration]</var></code>
+</pre>
+
+<p>可以通过三种方法运行本地回归检测:</p>
+
+<ol>
+<li><p>生成基准(打补丁前)指标并将其放在文件夹中。Atest 按照指定的迭代次数运行测试,生成打补丁后指标,并将这些指标与现有指标进行比较。</p>
+
+<p>例如:</p>
+
+<pre>
+<code class="devsite-terminal">atest <var>test-to-run</var> --detect-regression <var>/path/to/baseline</var> --generate-new-metrics <var>[optional-iteration]</var></code>
+</pre></li>
+<li><p>使用包含以前生成的打补丁后指标的文件夹,Atest 会运行测试并进行 n 次迭代,生成一组新的打补丁前指标,并将这些指标与所提供的那些指标进行比较。<em></em></p>
+<aside class="note"><strong>注意</strong>:<span>开发者需要将设备/测试还原为打补丁前状态以生成基准指标。</span></aside>
+<p>例如:</p>
+
+<pre>
+<code class="devsite-terminal">atest <var>test-to-run</var> --detect-regression <var>/path/to/new</var> --generate-baseline <var>[optional-iteration]</var></code>
+</pre></li>
+<li><p>使用同时包含打补丁前指标和打补丁后指标的两个文件夹,Atest 会运行回归检测算法而不进行任何测试。</p>
+
+<p>例如:</p>
+
+<pre>
+<code class="devsite-terminal">atest --detect-regression <var>/path/to/baseline</var> <var>/path/to/new</var></code>
+</pre></li>
+</ol>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/blueprints.html b/zh-cn/compatibility/tests/development/blueprints.html
new file mode 100644
index 00000000..5b04446c
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/blueprints.html
@@ -0,0 +1,72 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="soong_and_blueprints" class="page-title">Soong 和 Blueprint</h1>
+
+<p>每个新的测试模块都必须具有配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。</p>
+
+<p><a href="https://android.googlesource.com/platform/build/soong/">Soong 编译系统</a>在 Android 8.0 (Oreo) 中引入,在 Android Q 中实现了对 <code>android_test</code> 的支持,现在可在 Android 开源项目 (AOSP) master 分支中找到它。要查找基于 Make 的系统的相应说明,请参阅 <a href="https://android.googlesource.com/platform/platform_testing/+/master/docs/development/instr-self-e2e.md#Makefile">AOSP 中此页面的原始版本</a>。</p>
+
+<p>对于 Soong,请参阅以下 Blueprint 或 <code>.bp</code> 文件示例,它是以 JSON 格式编写的:<a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/instrumentation/Android.bp">/platform_testing/tests/example/instrumentation/Android.bp</a></p>
+
+<p>为方便起见,下面附上快照:</p>
+<pre class="prettyprint"><code>android_test {
+ name: "HelloWorldTests",
+ srcs: ["src/**/*.java"],
+ sdk_version: "current",
+ static_libs: ["android-support-test"],
+ certificate: "platform",
+ test_suites: ["device-tests"],
+}
+</code></pre>
+<p>请注意,开头的 <code>android_test</code> 声明表示这是一个测试。相反,如果开头为 <code>android_app</code>,则表示这是一个编译软件包。</p>
+
+<p>下面对各项设置进行了解释:</p>
+<pre class="prettyprint"><code> name: "HelloWorldTests",
+</code></pre>
+<p>如果指定了 <code>android_test</code> 模块类型(在代码块的开头),则需要 <code>name</code> 设置。此设置会为模块命名,生成的 APK 将与模块名称相同,不过带有 <code>.apk</code> 后缀。例如,在本例中,生成的测试 apk 将命名为 <code>HelloWorldTests.apk</code>。此外,此设置还可以为模块定义 make 目标名称,以便您可以使用 <code>make [options]
+&lt;HelloWorldTests&gt;</code> 编译测试模块及其所有依赖项。</p>
+<pre class="prettyprint"><code> static_libs: ["android-support-test"],
+</code></pre>
+<p><code>static_libs</code> 设置指示编译系统将已命名模块的内容合并到当前模块生成的 apk 中。这意味着,每个已命名模块都会生成 <code>.jar</code> 文件,其内容将用于在编译期间解析类路径引用,以及合并到生成的 apk 中。</p>
+
+<p>在本例中,可能对测试普遍有用的内容如下:</p>
+
+<p><code>android-support-test</code> 是 Android 测试支持库的预编译项,包括新的测试运行器 <code>AndroidJUnitRunner</code>:它替代了现已弃用的内置 <code>InstrumentationTestRunner</code>,并且支持 JUnit4 测试框架。要了解详情,请参阅 developer.android.com 上的<a href="https://developer.android.com/training/testing/">在 Android 平台上测试应用</a>。</p>
+
+<p>如果要编译一个新的插桩模块,则开始时应始终将 <code>android-support-test</code> 库作为测试运行器。平台源代码树还包括其他有用的测试框架,如 <code>ub-uiautomator</code>、<code>mockito-target</code>、<code>easymock</code> 等等。</p>
+<pre class="prettyprint"><code> certificate: "platform",
+</code></pre>
+<p><code>certificate</code> 设置指示编译系统使用与核心平台相同的证书对 apk 进行签名。如果您的测试使用受签名保护的权限或 API,则需要此设置。请注意,此设置适合平台连续测试,但不应该用于 CTS 测试模块。<em></em>另请注意,本例使用此证书设置只是为了进行说明:示例中的测试代码实际上不需要使用特殊平台证书对测试 apk 进行签名。</p>
+
+<p>如果您要为系统服务器之外的组件(也就是说,它的打包方式多少有些类似于常规应用 apk,只不过它内置到系统映像中并且可能是特权应用)编写插桩,那么插桩可能会以组件的应用软件包(请参阅下面关于清单的部分)为目标。在这种情况下,应用 makefile 可能具有自己的 <code>certificate</code> 设置,并且插桩模块应保留相同的设置。这是因为,要以受测应用上的插桩为目标,必须使用同一证书对测试 apk 和应用 apk 进行签名。</p>
+
+<p>在其他情况下,根本不需要此设置:编译系统将直接使用默认的内置证书(基于编译变体)对其进行签名,并且它通常称为 <code>dev-keys</code>。</p>
+<pre class="prettyprint"><code> test_suites: ["device-tests"],
+</code></pre>
+<p><code>test_suites</code> 设置使 Trade Federation 自动化测试框架很容易发现测试。可以在此处添加其他套件(如 CTS),以便可以共享此测试。</p>
+
+<p><code>${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk</code></p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/index.html b/zh-cn/compatibility/tests/development/index.html
new file mode 100644
index 00000000..924e6612
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/index.html
@@ -0,0 +1,69 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="test_development_workflow" class="page-title">测试开发工作流</h1>
+
+<p>要将测试集成到平台连续测试服务,它们应该符合以下准则。</p>
+
+<h2 id="test_types">测试类型</h2>
+
+<p>支持的测试类型包括:</p>
+
+<ul>
+<li>标准<a href="https://developer.android.com/studio/test/">插桩</a>测试<ul>
+<li>支持功能测试和指标测试</li>
+</ul></li>
+<li>原生测试<ul>
+<li>功能:<a href="https://github.com/google/googletest">gtest</a> 框架</li>
+<li>指标:使用 <a href="https://github.com/google/benchmark">google-benchmark</a> 进行原生基准测试</li>
+</ul></li>
+<li><a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/testtype/AndroidJUnitTest.java">主机 Java (Junit) 测试</a></li>
+</ul>
+
+<p>功能测试对测试用例进行通过或未通过测试的断言,而指标测试通常重复执行操作以收集时间指标。</p>
+
+<p>采用标准化的输入/输出格式后,不再需要对每个测试进行自定义结果解析和后处理,并且通用自动化测试框架可用于符合惯例的所有测试。</p>
+
+<h2 id="test_case_guidelines">测试用例准则</h2>
+
+<p>通过连续测试服务执行的测试用例应该是<strong>封闭</strong>测试:</p>
+
+<ul>
+<li>无 Google 帐号登录</li>
+<li>无连接设置(电话/WLAN/蓝牙/NFC)</li>
+<li>不传入测试参数</li>
+<li>自动化测试框架不对特定的测试用例执行设置或拆解</li>
+</ul>
+
+<h2 id="building_tests">编译测试</h2>
+
+<p>如果您不熟悉添加和执行测试的工作流,请参阅:</p>
+
+<ul>
+<li><a href="/compatibility/tests/development/instrumentation.md">插桩测试</a>(支持功能测试和指标测试)</li>
+<li><a href="/compatibility/tests/development/native.md">原生测试</a></li>
+<li><a href="/compatibility/tests/development/metrics.md">原生指标测试</a></li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/instr-app-e2e.html b/zh-cn/compatibility/tests/development/instr-app-e2e.html
new file mode 100644
index 00000000..161b9402
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/instr-app-e2e.html
@@ -0,0 +1,181 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="instrumentation_targeting_an_application_a_complete_example" class="page-title">针对应用的插桩:完整的示例</h1>
+
+<p>如果您不熟悉 Android 平台开发,那么您可能会发现,这个从头开始添加全新插桩测试的完整示例很有用,可以帮助了解所涉及的典型工作流。</p>
+
+<p>请注意,本指南假定您已掌握平台源代码树工作流的一些相关知识。如果没有,请参阅 https://source.android.com/source/requirements。本文介绍的示例是编写新的插桩测试,其中目标软件包设置为其自己的测试应用软件包。如果您不熟悉相关概念,请仔细阅读<a href="../development/index.md">平台测试简介</a>。</p>
+
+<p>本指南使用以下测试作为示例:</p>
+
+<ul>
+<li>frameworks/base/packages/Shell/tests</li>
+</ul>
+
+<p>建议您先浏览代码以获得粗略的印象,然后再继续。</p>
+
+<h2 id="deciding_on_a_source_location">确定源代码所在的位置</h2>
+
+<p>由于此插桩测试将针对应用,因此惯例是将测试源代码放在平台源代码树中组件源代码根目录下的 <code>tests</code> 目录中。</p>
+
+<p>有关源代码所在位置的更多说明,请参阅<a href="instr-self-e2e.md">自插桩测试的端到端示例</a>。</p>
+
+<h2 id="blueprints">Blueprint</h2>
+
+<p>每个新的测试模块都必须具有 Blueprint Soong 配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。详情请参阅 <a href="blueprints.md">Soong 和 Blueprint</a>。</p>
+
+<h2 id="manifest_file">清单文件</h2>
+
+<p>就像常规应用一样,每个插桩测试模块都需要一个清单文件。如果您将该文件命名为 <code>AndroidManifest.xml</code> 并在 <code>Android.mk</code> 旁边为测试 tmodule 提供该文件,则 <code>BUILD_PACKAGE</code> 核心 makefile 将自动包含该文件。</p>
+
+<p>在继续深入阅读以下内容之前,强烈建议您先查阅<a href="https://developer.android.com/guide/topics/manifest/manifest-intro.html">有关清单文件的外部文档</a>。</p>
+
+<p>此文档概述了清单文件的基本组成部分及其功能。</p>
+
+<p>要获得示例 gerrit 更改的最新版清单文件,请访问:https://android.googlesource.com/platform/frameworks/base/+/master/packages/Shell/tests/AndroidManifest.xml</p>
+
+<p>为方便起见,下面附上快照:</p>
+<pre class="prettyprint lang-xml"><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.shell.tests"&gt;
+
+ &lt;application&gt;
+ &lt;uses-library android:name="android.test.runner" /&gt;
+
+ &lt;activity
+ android:name="com.android.shell.ActionSendMultipleConsumerActivity"
+ android:label="ActionSendMultipleConsumer"
+ android:theme="@android:style/Theme.NoDisplay"
+ android:noHistory="true"
+ android:excludeFromRecents="true"&gt;
+ &lt;intent-filter&gt;
+ &lt;action android:name="android.intent.action.SEND_MULTIPLE" /&gt;
+ &lt;category android:name="android.intent.category.DEFAULT" /&gt;
+ &lt;data android:mimeType="*/*" /&gt;
+ &lt;/intent-filter&gt;
+ &lt;/activity&gt;
+ &lt;/application&gt;
+
+ &lt;instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ android:targetPackage="com.android.shell"
+ android:label="Tests for Shell" /&gt;
+
+&lt;/manifest&gt;
+</code></pre>
+<p>关于清单文件的一些说明:</p>
+<pre class="prettyprint lang-xml"><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.android.shell.tests"&gt;
+</code></pre>
+<p><code>package</code> 属性是应用软件包名称:它是 Android 应用框架用来标识应用(在此上下文中即您的测试应用)的唯一标识符。系统中的每个用户只能安装一个采用该软件包名称的应用。</p>
+
+<p>由于这是一个测试应用软件包,独立于接受测试的应用软件包,因此必须使用不同的软件包名称:一个常见的惯例是添加后缀 <code>.test</code>。</p>
+
+<p>此外,此 <code>package</code> 属性与 <a href="https://developer.android.com/reference/android/content/ComponentName.html#getPackageName()"><code>ComponentName#getPackageName()</code></a> 返回的属性相同,而且也与用来通过 <code>adb shell</code> 与各种 <code>pm</code> 子命令进行交互的属性相同。</p>
+
+<p>另请注意,虽然该软件包名称通常与 Java 软件包名称的样式相同,但是实际上两者之间没有什么关系。换句话说,您的应用(或测试)软件包可能包含具有任何软件包名称的类,但另一方面,您可以选择保持简洁性,使应用或测试中的顶级 Java 软件包名称与应用软件包名称完全相同。</p>
+<pre class="prettyprint lang-xml"><code>&lt;uses-library android:name="android.test.runner" /&gt;
+</code></pre>
+<p>所有插桩测试都必须采用此设置,因为相关的类打包在一个单独的框架 jar 库文件中,因此在应用框架调用测试软件包时,需要额外的类路径条目。</p>
+<pre class="prettyprint lang-xml"><code>android:targetPackage="com.android.shell"
+</code></pre>
+<p>上述代码将插桩的目标软件包设置为 <code>com.android.shell.tests</code>。通过 <code>am instrument</code> 命令调用插桩时,框架将重启 <code>com.android.shell.tests</code> 进程,并将插桩代码注入该进程以执行测试。这也意味着,测试代码可以访问在接受测试的应用中运行的所有类实例,并且或许能够操纵状态,具体取决于公开的测试钩子。</p>
+
+<h2 id="test_configuration_file">测试配置文件</h2>
+
+<p>为了简化测试执行过程,您还需要为 Android 的自动化测试框架 <a href="https://source.android.com/devices/tech/test_infra/tradefed/">Trade Federation</a> 编写测试配置文件。</p>
+
+<p>测试配置可以指定特殊的设备设置选项和默认参数来提供测试类。</p>
+
+<p>要获得示例 gerrit 更改的最新版配置文件,请访问:https://android.googlesource.com/platform/frameworks/base/+/master/packages/Shell/tests/AndroidTest.xml</p>
+
+<p>为方便起见,下面附上快照:</p>
+<pre class="prettyprint lang-xml"><code>&lt;configuration description="Runs Tests for Shell."&gt;
+ &lt;target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"&gt;
+ &lt;option name="test-file-name" value="ShellTests.apk" /&gt;
+ &lt;/target_preparer&gt;
+
+ &lt;option name="test-suite-tag" value="apct" /&gt;
+ &lt;option name="test-tag" value="ShellTests" /&gt;
+ &lt;test class="com.android.tradefed.testtype.AndroidJUnitTest" &gt;
+ &lt;option name="package" value="com.android.shell.tests" /&gt;
+ &lt;option name="runner" value="android.support.test.runner.AndroidJUnitRunner" /&gt;
+ &lt;/test&gt;
+&lt;/configuration&gt;
+</code></pre>
+<p>关于测试配置文件的一些说明:</p>
+<pre class="prettyprint lang-xml"><code>&lt;target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"&gt;
+ &lt;option name="test-file-name" value="ShellTests.apk"/&gt;
+&lt;/target_preparer&gt;
+</code></pre>
+<p>上述代码告知 Trade Federation 使用指定的 target_preparer 将 ShellTests.apk 安装到目标设备上。Trade Federation 中有许多目标准备器可供开发者使用,这些目标准备器可用于确保在测试执行之前正确地设置设备。</p>
+<pre class="prettyprint lang-xml"><code>&lt;test class="com.android.tradefed.testtype.AndroidJUnitTest"&gt;
+ &lt;option name="package" value="com.android.shell.tests"/&gt;
+ &lt;option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/&gt;
+&lt;/test&gt;
+</code></pre>
+<p>上述代码指定要用于执行测试的 Trade Federation 测试类,并传入设备上要执行的软件包,以及测试运行器框架(在本例中为 JUnit)。</p>
+
+<p>有关测试模块配置的更多信息,请参阅<a href="test-config.md">此处</a>。</p>
+
+<h2 id="junit4_features">JUnit4 功能</h2>
+
+<p>通过使用 <code>android-support-test</code> 库作为测试运行器,可以采用新的 JUnit4 样式测试类,并且示例 gerrit 更改包含 JUnit4 功能的一些非常基本的用法。</p>
+
+<p>要获得示例 gerrit 更改的最新源代码,请访问:frameworks/base/packages/Shell/tests/src/com/android/shell/BugreportReceiverTest.javast.java</p>
+
+<p>虽然测试模式通常特定于组件团队,但有一些普遍有用的使用模式。</p>
+<pre class="prettyprint lang-java"><code>@SmallTest
+@RunWith(AndroidJUnit4.class)
+public final class FeatureFactoryImplTest {
+</code></pre>
+<p>JUnit4 的一个显著区别是,不再需要从通用测试基类继承测试,而是在普通 Java 类中编写测试并使用注解来指示某些测试设置和约束。在本例中,我们指示此类应作为 Android JUnit4 测试运行。</p>
+
+<p><code>@SmallTest</code> 注解指定了整个测试类的测试大小:添加到此测试类中的所有测试方法都继承此测试大小注解。测试前类设置、测试后拆解和测试后类拆解:类似于 JUnit4 中的 <code>setUp</code> 和 <code>tearDown</code> 方法。
+<code>Test</code> 注解用于对实际测试进行注解。</p>
+<aside class="special"><strong>重要提示</strong>:<span>测试方法本身带有 <code>@Test</code> 注解;请注意,对于要通过 APCT 执行的测试,它们必须带有测试大小注解。此类注解可以在方法作用域或类作用域内应用。</span></aside><pre class="prettyprint lang-java"><code> @Before
+ public void setup() {
+ ...
+ @Test
+ public void testGetProvider_shouldCacheProvider() {
+ ...
+</code></pre>
+<p>JUnit4 在方法上使用 <code>@Before</code> 注解来执行测试前设置。还有用于执行测试后拆解的 <code>@After</code>,不过在本例中未使用。同样,JUnit4 可以在方法上使用 <code>@BeforeClass</code> 和 <code>@AfterClass</code> 注解,以便在执行测试类中的所有测试之前执行设置,并在执行测试类中的所有测试之后执行拆解。请注意,类作用域的设置和拆解方法必须是静态方法。</p>
+
+<p>对于测试方法,与早期版本的 JUnit 不同,它们不再需要使方法名称以 <code>test</code> 开头,而是每种方法都必须带有 <code>@Test</code> 注解。像往常一样,测试方法必须公开、不声明任何返回值、不接受任何参数,并且可能会抛出异常。</p>
+<pre class="prettyprint lang-java"><code> Context context = InstrumentationRegistry.getTargetContext();
+</code></pre>
+<p>因为 JUnit4 测试不再需要通用基类,所以不再需要采用基类方法通过 <code>getContext()</code> 或 <code>getTargetContext()</code> 来获取 <code>Context</code> 实例,新的测试运行器会通过 <a href="https://developer.android.com/reference/android/support/test/InstrumentationRegistry.html"><code>InstrumentationRegistry</code></a>(用于存储插桩框架创建的上下文和环境设置)管理这些实例。通过此类,您还可以调用:</p>
+
+<ul>
+<li><code>getInstrumentation()</code>:<code>Instrumentation</code> 类的实例</li>
+<li><code>getArguments()</code>:通过 <code>-e &lt;key&gt; &lt;value&gt;</code> 传递给 <code>am instrument</code> 的命令行参数</li>
+</ul>
+
+<h2 id="build_and_test_locally">在本地编译和测试</h2>
+
+<p>对于最常见的用例,请使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a>。</p>
+
+<p>对于更为复杂的用例,如果需要更繁琐的自定义,请遵循<a href="instrumentation.md">插桩说明</a>。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/instr-self-e2e.html b/zh-cn/compatibility/tests/development/instr-self-e2e.html
new file mode 100644
index 00000000..e621cf50
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/instr-self-e2e.html
@@ -0,0 +1,187 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="self-instrumenting_tests_a_complete_example" class="page-title">自插桩测试:完整的示例</h1>
+
+<p>如果您不熟悉 Android 平台开发,那么您可能会发现,这个从头开始添加全新插桩测试的完整示例很有用,可以帮助了解所涉及的典型工作流。</p>
+
+<p>请注意,本指南假定您已掌握平台源代码树工作流的一些相关知识。如果没有,请参阅 https://source.android.com/source/requirements。本文介绍的示例是编写新的插桩测试,其中目标软件包设置为其自己的测试应用软件包。如果您不熟悉相关概念,请仔细阅读<a href="/compatibility/tests/">平台测试概述</a>。</p>
+
+<p>本指南使用以下测试作为示例:</p>
+
+<ul>
+<li><a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/instrumentation/">Hello World 插桩测试</a></li>
+</ul>
+
+<p>建议您先浏览代码以获得粗略的印象,然后再继续。</p>
+
+<h2 id="deciding_on_a_source_location">确定源代码所在的位置</h2>
+
+<p>通常,您的团队已有既定的放置模式,在既定的位置检入代码,并且在既定的位置添加测试。大多数团队拥有单个 git 代码库,或与其他团队共享一个代码库,但有一个包含组件源代码的专用子目录。</p>
+
+<p>假设组件源代码的根位置是在 <code>&lt;component source
+root&gt;</code>,大多数组件在该位置下具有 <code>src</code> 和 <code>tests</code> 文件夹,以及一些其他文件(如 <code>Android.mk</code>,或拆分为额外的 <code>.mk</code> 文件)、清单文件 <code>AndroidManifest.xml</code>,以及测试配置文件“AndroidTest.xml”。</p>
+
+<p>由于您要添加全新的测试,因此或许需要在组件 <code>src</code> 旁边创建 <code>tests</code> 目录,并为其填充内容。</p>
+
+<p>在某些情况下,您的团队可能会在 <code>tests</code> 下设置更深的目录结构,因为需要将不同的测试套件打包到单独的 apk 中。在这种情况下,您需要在 <code>tests</code> 下创建一个新的子目录。</p>
+
+<p>不管是什么样的结构,您最终都需要在 <code>tests</code> 目录或新建子目录中添加文件,并且文件应类似于示例 gerrit 更改中的 <code>instrumentation</code> 目录中的文件。下面几部分将进一步详细说明各个文件。</p>
+
+<h2 id="blueprints">Blueprint</h2>
+
+<p>每个新的测试模块都必须具有 Blueprint Soong 配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。详情请参阅 <a href="blueprints.md">Soong 和 Blueprint</a>。</p>
+
+<h2 id="manifest_file">清单文件</h2>
+
+<p>就像常规应用一样,每个插桩测试模块都需要一个清单文件。如果您将该文件命名为 <code>AndroidManifest.xml</code> 并在 <code>Android.mk</code> 旁边为测试 tmodule 提供该文件,则 <code>BUILD_PACKAGE</code> 核心 makefile 将自动包含该文件。</p>
+
+<p>在继续深入阅读以下内容之前,强烈建议您先查阅<a href="https://developer.android.com/guide/topics/manifest/manifest-intro.html">有关清单文件的外部文档</a>。</p>
+
+<p>此文档概述了清单文件的基本组成部分及其功能。有关示例,请参阅 <a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/instrumentation/AndroidManifest.xml">platform_testing/tests/example/instrumentation/AndroidManifest.xml</a>。</p>
+
+<p>为方便起见,下面附上快照:</p>
+<pre class="prettyprint lang-xml"><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="android.test.example.helloworld"
+
+ &lt;uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" /&gt;
+
+ &lt;application&gt;
+ &lt;uses-library android:name="android.test.runner" /&gt;
+ &lt;/application&gt;
+
+ &lt;instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+ android:targetPackage="android.test.example.helloworld"
+ android:label="Hello World Test"/&gt;
+
+&lt;/manifest&gt;
+</code></pre>
+<p>关于清单文件的一些说明:</p>
+<pre class="prettyprint lang-xml"><code>&lt;manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="android.test.example.helloworld"
+</code></pre>
+<p><code>package</code> 属性是应用软件包名称:它是 Android 应用框架用来标识应用(在此上下文中即您的测试应用)的唯一标识符。系统中的每个用户只能安装一个采用该软件包名称的应用。</p>
+
+<p>此外,此 <code>package</code> 属性与 <a href="https://developer.android.com/reference/android/content/ComponentName.html#getPackageName()"><code>ComponentName#getPackageName()</code></a> 返回的属性相同,而且也与用来通过 <code>adb shell</code> 与各种 <code>pm</code> 子命令进行交互的属性相同。</p>
+
+<p>另请注意,虽然该软件包名称通常与 Java 软件包名称的样式相同,但是实际上两者之间没有什么关系。换句话说,您的应用(或测试)软件包可能包含具有任何软件包名称的类,但另一方面,您可以选择保持简洁性,使应用或测试中的顶级 Java 软件包名称与应用软件包名称完全相同。</p>
+<pre class="prettyprint lang-xml"><code>android:sharedUserId="android.uid.system"
+</code></pre>
+<p>此代码声明在安装时,应该为此 apk 授予与核心平台相同的用户 ID,即运行时身份。请注意,这取决于是否使用与核心平台相同的证书为 apk 签名(请参阅上一部分中的 <code>LOCAL_CERTIFICATE</code>),不过它们是不同的概念:</p>
+
+<ul>
+<li>某些权限或 API 受签名保护,这需要相同的签名证书</li>
+<li>某些权限或 API 需要调用者的 <code>system</code> 用户身份,如果调用软件包与核心平台本身不同,则需要该软件包与 <code>system</code> 共享用户 ID</li>
+</ul>
+<pre class="prettyprint lang-xml"><code>&lt;uses-library android:name="android.test.runner" /&gt;
+</code></pre>
+<p>所有插桩测试都必须采用此设置,因为相关的类打包在一个单独的框架 jar 库文件中,因此在应用框架调用测试软件包时,需要额外的类路径条目。</p>
+<pre class="prettyprint lang-xml"><code>android:targetPackage="android.test.example.helloworld"
+</code></pre>
+<p>您可能已经注意到,上述代码声明的 <code>targetPackage</code> 与此文件的 <code>manifest</code> 标记中声明的 <code>package</code> 属性相同。如<a href="../basics/index.md">测试基础知识</a>中所述,此类插桩测试通常用于测试框架 API,所以除了它们本身之外,拥有特定的目标应用软件包并不是很有意义。</p>
+
+<h2 id="test_configuration_file">测试配置文件</h2>
+<aside class="special"><strong>重要提示</strong>:<span>只有 CTS 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循本部分中的说明。其他所有用例均可通过使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a> 来涵盖。</span></aside>
+<p>对于这些更复杂的用例,您还需要为 Android 的自动化测试框架 <a href="https://source.android.com/devices/tech/test_infra/tradefed/">Trade Federation</a> 编写测试配置文件。</p>
+
+<p>测试配置可以指定特殊的设备设置选项和默认参数来提供测试类。有关示例,请参阅 <a href="/platform_testing/+/master/tests/example/instrumentation/AndroidTest.xml">/platform_testing/tests/example/instrumentation/AndroidTest.xml</a>。</p>
+
+<p>为方便起见,下面附上快照:</p>
+<pre class="prettyprint lang-xml"><code>&lt;configuration description="Runs sample instrumentation test."&gt;
+ &lt;target_preparer class="com.android.tradefed.targetprep.TestFilePushSetup"/&gt;
+ &lt;target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"&gt;
+ &lt;option name="test-file-name" value="HelloWorldTests.apk"/&gt;
+ &lt;/target_preparer&gt;
+ &lt;target_preparer class="com.android.tradefed.targetprep.PushFilePreparer"/&gt;
+ &lt;target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"/&gt;
+ &lt;option name="test-suite-tag" value="apct"/&gt;
+ &lt;option name="test-tag" value="SampleInstrumentationTest"/&gt;
+
+ &lt;test class="com.android.tradefed.testtype.AndroidJUnitTest"&gt;
+ &lt;option name="package" value="android.test.example.helloworld"/&gt;
+ &lt;option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/&gt;
+ &lt;/test&gt;
+&lt;/configuration&gt;
+</code></pre>
+<p>关于测试配置文件的一些说明:</p>
+<pre class="prettyprint lang-xml"><code>&lt;target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup"&gt;
+ &lt;option name="test-file-name" value="HelloWorldTests.apk"/&gt;
+&lt;/target_preparer&gt;
+</code></pre>
+<p>上述代码告知 Trade Federation 使用指定的 target_preparer 将 HelloWorldTests.apk 安装到目标设备上。Trade Federation 中有许多目标准备器可供开发者使用,这些目标准备器可用于确保在测试执行之前正确地设置设备。</p>
+<pre class="prettyprint lang-xml"><code>&lt;test class="com.android.tradefed.testtype.AndroidJUnitTest"&gt;
+ &lt;option name="package" value="android.test.example.helloworld"/&gt;
+ &lt;option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/&gt;
+&lt;/test&gt;
+</code></pre>
+<p>上述代码指定要用于执行测试的 Trade Federation 测试类,并传入设备上要执行的软件包,以及测试运行器框架(在本例中为 JUnit)。</p>
+
+<p>有关测试模块配置的更多信息,请参阅<a href="test-config.md">此处</a>。</p>
+
+<h2 id="junit4_features">JUnit4 功能</h2>
+
+<p>通过使用 <code>android-support-test</code> 库作为测试运行器,可以采用新的 JUnit4 样式测试类,并且示例 gerrit 更改包含 JUnit4 功能的一些非常基本的用法。有关示例,请参阅 <a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/instrumentation/src/android/test/example/helloworld/HelloWorldTest.java">/platform_testing/tests/example/instrumentation/src/android/test/example/helloworld/HelloWorldTest.java</a>。</p>
+
+<p>虽然测试模式通常特定于组件团队,但有一些普遍有用的使用模式。</p>
+<pre class="prettyprint lang-java"><code>@RunWith(JUnit4.class)
+public class HelloWorldTest {
+</code></pre>
+<p>JUnit4 的一个显著区别是,不再需要从通用测试基类继承测试,而是在普通 Java 类中编写测试并使用注解来指示某些测试设置和约束。在本例中,我们指示此类应作为 JUnit4 测试运行。</p>
+<pre class="prettyprint lang-java"><code> @BeforeClass
+ public static void beforeClass() {
+ ...
+ @AfterClass
+ public static void afterClass() {
+ ...
+ @Before
+ public void before() {
+ ...
+ @After
+ public void after() {
+ ...
+ @Test
+ @SmallTest
+ public void testHelloWorld() {
+ ...
+</code></pre>
+<p>JUnit4 在方法上使用 <code>@Before</code> 和 <code>@After</code> 注解来执行测试前设置和测试后拆解。同样,JUnit4 可以在方法上使用 <code>@BeforeClass</code> 和 <code>@AfterClass</code> 注解,以便在执行测试类中的所有测试之前执行设置,并在执行测试类中的所有测试之后执行拆解。请注意,类作用域的设置和拆解方法必须是静态方法。对于测试方法,与早期版本的 JUnit 不同,它们不再需要使方法名称以 <code>test</code> 开头,而是每种方法都必须带有 <code>@Test</code> 注解。像往常一样,测试方法必须公开、不声明任何返回值、不接受任何参数,并且可能会抛出异常。</p>
+
+<p><strong>重要提示</strong>:测试方法本身带有 <code>@Test</code> 注解;请注意,对于要通过 APCT 执行的测试,它们必须带有测试大小注解:在本例中,将 <code>testHelloWorld</code> 方法注解为 <code>@SmallTest</code>。该注解可以在方法作用域或类作用域内应用。</p>
+
+<h2 id="accessing_instrumentation">访问 <code>instrumentation</code></h2>
+
+<p>虽然在基本的 Hello World 示例中未涉及,但是有一种相当普遍的情况是,Android 测试需要访问 <code>Instrumentation</code> 实例:这是核心 API 接口,可提供对应用上下文、Activity 生命周期相关测试 API 等内容的访问权限。</p>
+
+<p>因为 JUnit4 测试不再需要通用基类,所以不再需要通过 <code>InstrumentationTestCase#getInstrumentation()</code> 获取 <code>Instrumentation</code> 实例,新的测试运行器会通过 <a href="https://developer.android.com/reference/android/support/test/InstrumentationRegistry.html"><code>InstrumentationRegistry</code></a>(用于存储插桩框架创建的上下文和环境设置)管理该实例。</p>
+
+<p>要访问 <code>Instrumentation</code> 类的实例,只需在 <code>InstrumentationRegistry</code> 类上调用静态方法 <code>getInstrumentation()</code>:</p>
+<pre class="prettyprint lang-java"><code>Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation()
+</code></pre>
+<h2 id="build_and_test_locally">在本地编译和测试:</h2>
+
+<p>对于最常见的用例,请使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a>。</p>
+
+<p>对于更为复杂的用例,如果需要更繁琐的自定义,请遵循<a href="instrumentation.md">插桩说明</a>。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/instrumentation.html b/zh-cn/compatibility/tests/development/instrumentation.html
new file mode 100644
index 00000000..1164965b
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/instrumentation.html
@@ -0,0 +1,106 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="instrumentation_tests" class="page-title">插桩测试</h1>
+
+<ol>
+<li><p>下面是框架服务封闭测试的常见位置:</p>
+<pre class="prettyprint"><code>frameworks/base/core/tests/coretests
+frameworks/base/services/tests/servicestests
+</code></pre>
+<p>如果要为组件添加全新的插桩模块,请参阅</p>
+
+<ul>
+<li><a href="instr-self-e2e.md">自插桩测试:完整的示例</a></li>
+<li><a href="instr-app-e2e.md">针对应用的插桩:完整的示例</a></li>
+</ul></li>
+<li><p>如果要将测试添加到上述某个位置,请遵循现有惯例。如果要设置一个新的测试模块,请在上述某个位置按照 <code>AndroidManifest.xml</code> 和 <code>Android.mk</code> 的设置进行操作</p></li>
+<li><p>有关示例,请参阅 <a href="https://android.googlesource.com/platform/frameworks/base.git/+/master/core/tests/coretests/">/frameworks/base.git/+/master/core/tests/coretests/</a>。请注意,以下行会安装额外的应用:</p>
+<pre class="prettyprint"><code>&lt;option name="test-file-name" value="FrameworksCoreTests.apk" /&gt;
+&lt;option name="test-file-name" value="BstatsTestApp.apk" /&gt;
+</code></pre></li>
+<li><p>不要忘记将您的测试标记为 <code>@SmallTest</code>、<code>@MediumTest</code> 或 <code>@LargeTest</code></p></li>
+<li><p>使用 make 命令编译测试模块,例如:</p>
+<pre class="prettyprint"><code>make FrameworksCoreTests -j
+</code></pre></li>
+<li><p>运行测试:</p>
+
+<ul>
+<li><p>最简单的解决方案是使用 Atest,如下所示:</p>
+<pre class="prettyprint"><code>atest FrameworksCoreTests
+</code></pre></li>
+<li><p>或者,对于更复杂的测试,请使用 Trade Federation 自动化测试框架:</p></li>
+</ul>
+<pre class="prettyprint"><code>make tradefed-all -j
+tradefed.sh run template/local_min --template:map test=FrameworksCoreTests
+</code></pre></li>
+<li><p>如果使用 Trade Federation,请手动安装并运行测试:</p>
+
+<ol>
+<li>安装生成的 apk:</li>
+</ol>
+<pre class="prettyprint"><code>adb install -r ${OUT}/data/app/FrameworksCoreTests/FrameworksCoreTests.apk
+</code></pre>
+<p>提示:您可以使用 <code>adb shell pm list instrumentation</code> 查找刚刚安装的 apk 内的插桩</p>
+
+<ol>
+<li><p>使用各种选项运行测试:</p>
+
+<ol>
+<li><p>apk 中的所有测试</p>
+<pre class="prettyprint"><code>adb shell am instrument -w com.android.frameworks.coretests\
+ /android.support.test.runner.AndroidJUnitRunner
+</code></pre></li>
+<li><p>特定 Java 软件包下的所有测试</p>
+<pre class="prettyprint"><code>adb shell am instrument -w -e package android.animation \
+ com.android.frameworks.coretests\
+ /android.support.test.runner.AndroidJUnitRunner
+</code></pre></li>
+<li><p>特定类下的所有测试</p>
+<pre class="prettyprint"><code>adb shell am instrument -w -e class \
+ android.animation.AnimatorSetEventsTest \
+ com.android.frameworks.coretests\
+ /android.support.test.runner.AndroidJUnitRunner
+</code></pre></li>
+<li><p>特定的测试方法</p>
+<pre class="prettyprint"><code>adb shell am instrument -w -e class \
+ android.animation.AnimatorSetEventsTest#testCancel \
+ com.android.frameworks.coretests\
+ /android.support.test.runner.AndroidJUnitRunner
+</code></pre></li>
+</ol></li>
+</ol></li>
+</ol>
+
+<p>测试可以使用 <code>JUnit</code> API 对通过或未通过测试进行显式断言;此外,任何未捕获的异常也会导致功能性故障。</p>
+
+<p>要发出性能指标,测试代码可以调用 <a href="http://developer.android.com/reference/android/app/Instrumentation.html#sendStatus(int,%20android.os.Bundle)"><code>Instrumentation#sendStatus</code></a> 来发出键值对列表。请务必注意以下几点:</p>
+
+<ol>
+<li>指标可以是整数或浮点数</li>
+<li>任何非数字值都将被舍弃</li>
+<li>测试 apk 可以是功能测试或指标测试,但目前不支持混合这两种测试</li>
+</ol>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/metrics.html b/zh-cn/compatibility/tests/development/metrics.html
new file mode 100644
index 00000000..35ee36f9
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/metrics.html
@@ -0,0 +1,55 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="native_metric_tests" class="page-title">原生指标测试</h1>
+
+<p>如前所述,原生指标测试通常用于执行 HAL 或直接与较低级别的系统服务交互,要利用连续测试服务,应使用 <a href="https://github.com/google/benchmark">google-benchmark</a> 框架编译原生指标测试。</p>
+
+<p>下面是一些常规说明:</p>
+
+<ol>
+<li>参阅示例原生测试模块设置,位于:<code>bionic/benchmarks/bionic-benchmarks</code></li>
+<li>测试模块 makefile 应使用 <code>BUILD_NATIVE_BENCHMARK</code> 编译规则,以便自动包含 google-benchmark 依赖项</li>
+<li><p>使用 make 命令编译测试模块:</p>
+<pre class="prettyprint lang-shell"><code>make -j40 bionic-benchmarks
+</code></pre></li>
+<li><p>使用 Trade Federation 自动化测试框架自动安装和运行:</p>
+<pre class="prettyprint"><code>make tradefed-all -j
+tradefed.sh run template/local_min --template:map test=bionic-benchmarks
+1. Manually Install and Run:
+1. Push the generated test binary onto device:
+
+ ```shell
+ adb push ${OUT}/data/benchmarktest/bionic-benchmarks/bionic-benchmarks32 \
+ /data/benchmarktest/bionic-benchmarks/bionic-benchmarks32
+ ```
+1. Execute the test by invoking test binary on device:
+
+ ```shell
+ adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks32
+ ```
+</code></pre></li>
+</ol>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/native-func-e2e.html b/zh-cn/compatibility/tests/development/native-func-e2e.html
new file mode 100644
index 00000000..17023aac
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/native-func-e2e.html
@@ -0,0 +1,142 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="adding_a_new_native_test_a_complete_example" class="page-title">添加新的原生测试:完整的示例</h1>
+
+<p>如果您不熟悉 Android 平台开发,那么您可能会发现,这个从头开始添加全新原生测试的完整示例很有用,可以帮助了解所涉及的典型工作流。</p>
+
+<p>请注意,本指南假定您已掌握平台源代码树工作流的一些相关知识。如果没有,请参阅 https://source.android.com/source/requirements。</p>
+
+<p>此外,如果您也不熟悉 C++ 的 gtest 框架,请访问 <a href="https://github.com/google/googletest">gtest 项目网站</a>以查看其他文档。</p>
+
+<p>本指南使用以下测试作为示例:</p>
+
+<ul>
+<li><a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/native/">Hello World 原生测试</a></li>
+</ul>
+
+<p>建议您先浏览代码以获得粗略的印象,然后再继续。</p>
+
+<h2 id="deciding_on_a_source_location">确定源代码所在的位置</h2>
+
+<p>通常,您的团队已有既定的放置模式,在既定的位置检入代码,并且在既定的位置添加测试。大多数团队拥有单个 git 代码库,或与其他团队共享一个代码库,但有一个包含组件源代码的专用子目录。</p>
+
+<p>假设组件源代码的根位置是在 <code>&lt;component source
+root&gt;</code>,大多数组件在该位置下具有 <code>src</code> 和 <code>tests</code> 文件夹,以及一些其他文件,如 <code>Android.mk</code>(或拆分为额外的 <code>.bp</code> 文件)。</p>
+
+<p>由于您要添加全新的测试,因此或许需要在组件 <code>src</code> 旁边创建 <code>tests</code> 目录,并为其填充内容。</p>
+
+<p>在某些情况下,您的团队可能会在 <code>tests</code> 下设置更深的目录结构,因为需要将不同的测试套件打包到单独的二进制文件中。在这种情况下,您需要在 <code>tests</code> 下创建一个新的子目录。</p>
+
+<p>为了进行说明,下面给出了具有单个 <code>tests</code> 文件夹的组件的典型目录大纲:</p>
+<pre class="prettyprint"><code>\
+ &lt;component source root&gt;
+ \-- Android.bp (component makefile)
+ \-- AndroidTest.bp (test config file)
+ \-- src (component source)
+ | \-- foo.cpp
+ | \-- ...
+ \-- tests (test source root)
+ \-- Android.bp (test makefile)
+ \-- src (test source)
+ \-- foo_test.cpp
+ \-- ...
+</code></pre>
+<p>此外,下面还给出了具有多个测试源文件目录的组件的典型目录大纲:</p>
+<pre class="prettyprint"><code>\
+ &lt;component source root&gt;
+ \-- Android.bp (component makefile)
+ \-- AndroidTest.bp (test config file)
+ \-- src (component source)
+ | \-- foo.cpp
+ | \-- ...
+ \-- tests (test source root)
+ \-- Android.bp (test makefile)
+ \-- testFoo (sub test source root)
+ | \-- Android.bp (sub test makefile)
+ | \-- src (sub test source)
+ | \-- test_foo.cpp
+ | \-- ...
+ \-- testBar
+ | \-- Android.bp
+ | \-- src
+ | \-- test_bar.cpp
+ | \-- ...
+ \-- ...
+</code></pre>
+<p>不管是什么样的结构,您最终都需要在 <code>tests</code> 目录或新建子目录中添加文件,并且文件应类似于示例 gerrit 更改中的 <code>native</code> 目录中的文件。下面几部分将进一步详细说明各个文件。</p>
+
+<h2 id="blueprints">Blueprint</h2>
+
+<p>每个新的测试模块都必须具有 Blueprint Soong 配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。详情请参阅 <a href="blueprints.md">Soong 和 Blueprint</a>。</p>
+
+<h2 id="source_code">源代码</h2>
+
+<p>有关示例,请参阅 <a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/native/HelloWorldTest.cpp">Hello World 原生测试</a>。</p>
+
+<p>带注解的源代码如下所示:</p>
+<pre class="prettyprint lang-c++"><code>#include &lt;gtest/gtest.h&gt;
+</code></pre>
+<p>gtest 的头文件。请注意,使用 makefile 中的 <code>BUILD_NATIVE_TEST</code> 会自动解析头文件依赖项</p>
+<pre class="prettyprint lang-c++"><code>#include &lt;stdio.h&gt;
+
+TEST(HelloWorldTest, PrintHelloWorld) {
+ printf("Hello, World!");
+}
+</code></pre>
+<p>gtest 使用 <code>TEST</code> 宏编写而成:第一个参数是测试用例名称,第二个是测试名称;在结果信息中心查看时,它们与测试二进制文件名称一起形成下面的层次结构:</p>
+<pre class="prettyprint"><code>&lt;test binary 1&gt;
+| \-- &lt;test case 1&gt;
+| | \-- &lt;test 1&gt;
+| | \-- &lt;test 2&gt;
+| | \-- ...
+| \-- &lt;test case 2&gt;
+| | \-- &lt;test 1&gt;
+| | \-- ...
+| \-- ...
+&lt;test binary 2&gt;
+|
+...
+</code></pre>
+<p>有关使用 gtest 编写测试的更多信息,请参阅其文档:</p>
+
+<ul>
+<li>https://github.com/google/googletest/blob/master/googletest/docs/Primer.md</li>
+</ul>
+
+<h2 id="test_configuration">测试配置</h2>
+<aside class="special"><strong>重要提示</strong>:<span>只有 CTS 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循本部分中的说明。其他所有用例均可通过使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a> 来涵盖。</span></aside>
+<p>为了简化测试执行过程,您可以编写类似以下映射的测试映射:<a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/native/TEST_MAPPING">/platform/platform_testing/tests/example/native/TEST_MAPPING</a>。</p>
+
+<p>要改用 Trade Federation,请为 Android 的自动化测试框架 <a href="/devices/tech/test_infra/tradefed/">Trade Federation</a> 编写测试配置文件。</p>
+
+<p>测试配置可以指定特殊的设备设置选项和默认参数来提供测试类。</p>
+
+<h2 id="build_and_test_locally">在本地编译和测试</h2>
+
+<p>对于最常见的用例,请使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a>。</p>
+
+<p>对于更为复杂的用例,如果需要更繁琐的自定义,请遵循<a href="instrumentation.md">插桩说明</a>。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/native.html b/zh-cn/compatibility/tests/development/native.html
new file mode 100644
index 00000000..9d9fee67
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/native.html
@@ -0,0 +1,60 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="native_tests" class="page-title">原生测试</h1>
+
+<p>如前所述,原生测试通常用于执行 HAL 或直接与较低级别的系统服务交互,要利用连续测试服务,应使用 <a href="https://github.com/google/googletest">gtest</a> 框架编译原生测试。</p>
+
+<p>下面是一些常规说明:</p>
+
+<ol>
+<li>参阅示例原生测试模块设置,位于:<code>libs/hwui/unit_tests</code></li>
+<li>测试模块 makefile 应使用 <code>BUILD_NATIVE_TEST</code> 编译规则,以便自动包含 gtest 依赖项</li>
+<li>编写<a href="test-config.md">测试配置</a>。</li>
+<li><p>使用 <code>mmm</code> 或 <code>mma</code>(取决于它是增量编译还是完整编译)编译测试模块,例如:</p>
+<pre class="prettyprint lang-shell"><code>make hwui_unit_tests -j
+</code></pre></li>
+<li><p>使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a> 运行测试:</p>
+<pre class="prettyprint"><code>atest hwui_unit_tests
+</code></pre></li>
+<li><p>或者,使用 Trade Federation 自动化测试框架运行:</p>
+<pre class="prettyprint"><code>make tradefed-all -j
+tradefed.sh run template/local_min --template:map test=hwui_unit_tests
+</code></pre></li>
+<li><p>如果使用 Trade Federation,请手动安装并运行:</p>
+
+<ol>
+<li><p>将生成的测试二进制文件推送到设备:</p>
+<pre class="prettyprint lang-shell"><code>adb push ${OUT}/data/nativetest/hwui_unit_tests/hwui_unit_tests \
+ /data/nativetest/hwui_unit_tests/hwui_unit_tests
+</code></pre></li>
+<li><p>通过在设备上调用测试二进制文件执行测试:</p>
+<pre class="prettyprint lang-shell"><code>adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests
+</code></pre></li>
+</ol>
+
+<p>这样将启动原生测试。您还可以将 <code>--help</code> 参数添加到测试二进制文件,以详细了解自定义测试执行的不同方式。最后,请参阅 <a href="https://github.com/google/googletest/blob/master/googletest/docs/advanced.md">gtest 高级指南</a>,以了解更多参数及其用法。</p></li>
+</ol>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/test-config.html b/zh-cn/compatibility/tests/development/test-config.html
new file mode 100644
index 00000000..66d47845
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/test-config.html
@@ -0,0 +1,147 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="test_module_configuration" class="page-title">测试模块配置</h1>
+<aside class="special"><strong>重要提示</strong>:<span>只有 CTS 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循此页面上的说明。其他所有用例均可通过使用 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md">Atest</a> 来涵盖。</span></aside>
+<p>某些测试模块可能需要执行在测试用例本身内无法执行的自定义设置和拆解步骤。典型的示例可能包括:</p>
+
+<ul>
+<li>安装其他 apk(除了测试 apk 之外)</li>
+<li>将某些文件推送到设备</li>
+<li>运行命令(例如 adb shell pm …)</li>
+</ul>
+
+<p>过去,组件团队通常依靠编写主机端测试来执行此类任务,这需要了解 Trade Federation 自动化测试框架,并且通常会提高测试模块的复杂性。</p>
+
+<p>我们引入了测试模块配置的概念(借鉴于 CTS)来支持此类任务,只需几行配置即可完成上面列出的常见任务。为了获得最大的灵活性,您甚至可以实现自己的目标准备器(由 <a href="/reference/com/android/tradefed/targetprep/ITargetPreparer.html">ITargetPreparer</a> 或 <a href="/reference/com/android/tradefed/targetprep/ITargetCleaner.html">ITargetCleaner</a> 定义),并对其进行配置以在您自己的测试模块配置中使用。</p>
+
+<p>测试模块的测试模块配置是添加到顶级模块源文件夹的必需 XML 文件,名为“AndroidTest.xml”。该 XML 文件遵循 Trade Federation 自动化测试框架使用的配置文件的格式。目前,通过测试模块配置处理的主要标记是“target_preparer”和“test”标记。</p>
+
+<h2 id="target_preparers">目标准备器</h2>
+
+<p>顾名思义,“target_preparer”标记会定义目标准备器(请参阅 <a href="/reference/com/android/tradefed/targetprep/ITargetPreparer.html">ITargetPreparer</a>),该目标准备器提供了一种设置方法,在执行测试模块以进行测试之前会调用该方法;如果“target_preparer”标记中引用的类也实现 <a href="/reference/com/android/tradefed/targetprep/ITargetCleaner.html">ITargetCleaner</a>,则在测试模块完成后将调用其拆解方法。</p>
+
+<p>要使用内置的通用模块配置,请在测试模块的顶级文件夹中添加一个新文件“AndroidTest.xml”,并在该文件里填充以下内容:</p>
+<pre class="prettyprint lang-xml"><code>&lt;?xml version="1.0" encoding="utf-8"?&gt;
+&lt;!-- [insert standard AOSP copyright here] --&gt;
+&lt;configuration description="Test module config for Foo"&gt;
+&lt;!-- insert options here --&gt;
+&lt;/configuration&gt;
+</code></pre>
+<p>例如,我们可以添加以下选项标记(在上面的“insert”注释处):</p>
+<pre class="prettyprint lang-xml"><code> &lt;target_preparer class="com.android.tradefed.targetprep.RunCommandTargetPreparer"&gt;
+ &lt;option name="run-command" value="settings put secure accessibility_enabled 1" /&gt;
+ &lt;option name="teardown-command" value="settings put secure accessibility_enabled 0" /&gt;
+ &lt;/target_preparer&gt;
+</code></pre>
+<p>这些选项会将自动化测试框架配置为:</p>
+
+<ol>
+<li>在调用测试模块之前,在设备上执行 shell 命令“settings put secure accessibility_enabled 1”</li>
+<li>在测试模块完成之后,执行 shell 命令“settings put secure accessibility_enabled 0”</li>
+</ol>
+
+<p>在此特定示例中,分别在测试模块执行之前/之后启用/停用可访问性。通过一个简单的示例演示,可以详细介绍如何使用“option”标记。如上所示,该标记可以有两个属性:名称和值。名称属性指示选项的名称,并进一步分解成由冒号分隔的两部分:一部分是准备器的简称,另一部分是准备器提供的实际选项名称。值字段的确切目的取决于准备器如何定义选项:它可以是字符串、数字、布尔值,甚至是文件路径等等。在上面的示例中,名称“run-command:run-command”表示我们正在为由简称为“run-command”的目标准备器定义的选项“run-command”设置值;名称“run-command:teardown-command”表示我们正在为也是由简称为“run-command”的同一目标准备器定义的选项“teardown-command”设置值。下面总结了三个常见的目标准备器:</p>
+
+<ul>
+<li><p>类名:<a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/targetprep/PushFilePreparer.java">PushFilePreparer</a></p>
+
+<ul>
+<li><strong>简称</strong>:push-file</li>
+<li><strong>功能</strong>:将测试用例文件夹下的任意文件推送到设备上的目标</li>
+<li><strong>注意</strong>:<ul>
+<li>此准备器可以从文件夹推送到文件夹,或者从文件推送到文件;也就是说,您无法将文件推送到设备上的文件夹下,您还必须指定该文件夹下的目标文件名</li>
+</ul></li>
+<li><strong>选项</strong>:<ul>
+<li><strong>push</strong>:一种推送规范,格式为“<code>/path/to/srcfile.txt-&gt;/path/to/destfile.txt</code>”或“<code>/path/to/srcfile.txt-&gt;/path/to/destdir/</code>”。可以重复
+此路径可能相对于测试模块目录或输出目录本身。</li>
+<li>**post-push**:尝试完所有推送后在设备上运行的命令(使用 `<code>adb shell
+&lt;your command&gt;</code>`)。典型用例是使用 chmod 命令添加权限</li>
+</ul></li>
+</ul></li>
+<li><p>类名:<a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/targetprep/InstallApkSetup.java">InstallApkSetup</a></p>
+
+<ul>
+<li><strong>简称</strong>:install-apk</li>
+<li><strong>功能</strong>:将任意 apk 文件推送到设备上的目标</li>
+<li><strong>选项:</strong>
+<ul>
+<li><strong>test-file-name</strong>:要安装到设备上的 apk 的名称。</li>
+<li><strong>install-arg</strong>:要传递给 pm install 命令的其他参数,包括前导短划线,例如“-d”。可以重复</li>
+</ul></li>
+</ul></li>
+<li><p>类名:<a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/targetprep/RunCommandTargetPreparer.java">RunCommandTargetPreparer</a></p>
+
+<ul>
+<li><strong>简称</strong>:run-command</li>
+<li><strong>功能</strong>:在测试模块执行之前或之后执行任意 shell 命令</li>
+<li><strong>选项:</strong>
+<ul>
+<li><strong>run-command</strong>:要运行的 adb shell 命令。可以重复</li>
+<li><strong>teardown-command</strong>:要在拆解阶段运行的 adb shell 命令。可以重复</li>
+</ul></li>
+</ul></li>
+</ul>
+
+<h2 id="test_class">测试类</h2>
+
+<p>测试类是用于执行测试的 Trade Federation 类。</p>
+<pre class="prettyprint lang-xml"><code>&lt;test class="com.android.tradefed.testtype.AndroidJUnitTest"&gt;
+ &lt;option name="package" value="android.test.example.helloworld"/&gt;
+ &lt;option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/&gt;
+&lt;/test&gt;
+</code></pre>
+<p>下面是三个常见的测试类:</p>
+
+<ul>
+<li><p>类名:<a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/testtype/GTest.java">GTest</a></p>
+
+<ul>
+<li><strong>简称</strong>:gtest</li>
+<li><strong>功能</strong>:在给定设备上运行原生测试软件包的测试。</li>
+<li><strong>选项:</strong>
+<ul>
+<li><strong>native-test-device-path</strong>:原生测试在设备上所在的路径。</li>
+</ul></li>
+</ul></li>
+<li><p>类名:<a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/testtype/InstrumentationTest.java">InstrumentationTest</a></p>
+
+<ul>
+<li><strong>简称</strong>:instrumentation</li>
+<li><strong>功能</strong>:在给定设备上运行插桩测试软件包的测试</li>
+<li><strong>选项:</strong>
+<ul>
+<li><strong>package</strong>:要运行的 Android 测试应用的清单软件包名称。</li>
+<li><strong>class</strong>:要运行的测试类名称。</li>
+<li><strong>method</strong>:要运行的测试方法名称。</li>
+</ul></li>
+</ul></li>
+<li><p>类名:<a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/src/com/android/tradefed/testtype/AndroidJUnitTest.java">AndroidJUnitTest</a></p>
+
+<ul>
+<li><strong>功能</strong>:使用 android.support.test.runner.AndroidJUnitRunner 在给定设备上运行插桩测试软件包的测试。这是执行插桩测试的主要方法。</li>
+</ul></li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/development/test-mapping.html b/zh-cn/compatibility/tests/development/test-mapping.html
new file mode 100644
index 00000000..e76cdaac
--- /dev/null
+++ b/zh-cn/compatibility/tests/development/test-mapping.html
@@ -0,0 +1,211 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="test_mapping" class="page-title">Test Mapping</h1>
+
+<p>本文简要介绍了 Test Mapping,并说明了如何在 Android 开源项目 (AOSP) 中轻松开始配置测试。</p>
+
+<h2 id="what_is_test_mapping">什么是 Test Mapping?</h2>
+
+<p>Test Mapping 是一种基于 Gerrit 的方法,让开发者能够直接在 Android 源代码树中创建提交前规则和提交后规则,并将要测试的分支和设备的决策留给测试基础架构本身。Test Mapping 定义是名为 TEST_MAPPING 的 JSON 文件,该文件可放置在任何源目录中。</p>
+
+<p><a href="atest">Atest</a> 可以使用 TEST_MAPPING 文件在相关目录中运行提交前测试。借助 Test Mapping,您只需在 Android 源代码树中进行简单的更改,即可将同一组测试添加到提交前检查。</p>
+
+<p>请参阅以下示例:</p>
+
+<p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/dex/TEST_MAPPING">针对 services.core 将提交前测试添加到 TEST_MAPPING</a></p>
+
+<p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/startop/iorap/TEST_MAPPING">针对 startop/iorap 将提交前测试和提交后测试添加到 TEST_MAPPING</a></p>
+
+<h2 id="defining_test_groups">定义测试组</h2>
+
+<p>Test Mapping 组通过<strong>测试组</strong>进行测试。测试组的名称可以是任何字符串。例如,presubmit 可用于在验证更改时运行的测试组。<em></em>postsubmit 测试可在更改合并后用于验证构建。<em></em></p>
+
+<h2 id="packaging_build_script_rules">打包构建脚本规则</h2>
+
+<p>为了让 <a href="/devices/tech/test_infra/tradefed">Trade Federation 自动化测试框架</a>针对指定构建运行 Test Mapping 的测试模块,这些模块必须针对 <a href="blueprints">Soong</a> 将 <strong>test_suite</strong>(或针对 Make 将 <strong>LOCAL_COMPATIBILITY_SUITE</strong>)设为以下两个套件之一:</p>
+
+<ul>
+<li><strong>device-tests</strong> - 针对特定设备 CPU 构建</li>
+<li><strong>general-tests</strong> - 针对任何应用二进制接口 (ABI) 构建</li>
+</ul>
+
+<p>如有疑问,请将 gtest 放入 device-test,并将 APK 测试放入 general-test。<em></em><em></em></p>
+
+<p>示例:</p>
+<pre class="prettyprint"><code>Android.bp: test_suites: ["device-tests"],
+Android.mk: LOCAL_COMPATIBILITY_SUITE := device-tests
+</code></pre>
+<h2 id="creating_test_mapping_files">创建 Test Mapping 文件</h2>
+
+<p>对于需要测试覆盖的目录,只需添加与以下示例类似的 TEST_MAPPING JSON 文件即可。这些规则可以确保当此目录或其子目录中的任何文件被访问时,相应测试会在提交前检查中运行。</p>
+
+<h3 id="following_an_example">举个例子</h3>
+
+<p>以下是一个示例 TEST_MAPPING 文件:</p>
+<pre class="prettyprint"><code>{
+ "presubmit": [
+ {
+ "name": "CtsWindowManagerDeviceTestCases",
+ "options": [
+ {
+ "include-annotation": "android.platform.test.annotations.RequiresDevice"
+ }
+ ]
+ }
+ ],
+ "postsubmit": [
+ {
+ "name": "CtsWindowManagerDeviceTestCases"
+ }
+ ],
+ "imports": [
+ {
+ "path": "frameworks/base/services/core/java/com/android/server/am"
+ }
+ ]
+}
+</code></pre>
+<h3 id="setting_attributes">设置属性</h3>
+
+<p>在上面的示例中,<code>presubmit</code> 和 <code>postsubmit</code> 分别是每个<strong>测试组</strong>的名称。请注意,<code>postsubmit</code> 的测试运行将自动包含 <code>presubmit</code> 组中的所有测试。如需详细了解测试组,请参阅<a href="#defining_test_groups">定义测试组</a>。</p>
+
+<p><strong>测试模块</strong>的<strong>名称</strong>或 <strong>Trade Federation 集成测试名称</strong>(指向测试 XML 文件的资源路径,例如 <a href="https://android.googlesource.com/platform/tools/tradefederation/contrib/+/master/res/config/uiautomator/uiautomator-demo.xml">uiautomator/uiautomator-demo</a>)可在 <code>name</code> 属性的值中设置。请注意,<strong>name</strong> 字段不可使用类 <code>name</code> 或测试方法 <code>name</code>。要缩减所运行的测试,您可以在此处使用 <code>include-filter</code> 等选项请参阅(<a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/dex/TEST_MAPPING#7">include-filter</a> 使用示例)。</p>
+
+<p>借助 <code>imports</code> 属性,您可以包含其他 TEST_MAPPING 文件中的测试,而无需复制相应内容。请注意,导入路径的父目录中的 TEST_MAPPING 文件也将包含在内。</p>
+
+<p><code>options</code> 属性包含其他 TradeFed 命令行选项。在上面的示例中,只有带有注释 <code>Presubmit</code> 的测试才会在提交前测试中运行;所有测试都会在提交后测试中运行。</p>
+
+<p>要获取指定测试可用选项的完整列表,请运行以下命令:</p>
+
+<pre>
+<code class="devsite-terminal">tradefed.sh run commandAndExit [test_module] --help</code>
+</pre>
+
+<p>如需详细了解各选项的工作原理,请参阅 <a href="/devices/tech/test_infra/tradefed/fundamentals/options">TradeFed 选项处理</a>。</p>
+
+<h2 id="running_tests_with_atest">使用 Atest 运行测试</h2>
+
+<p>要在本地执行提交前测试规则,请执行以下操作:</p>
+
+<ol>
+<li>转到包含 TEST_MAPPING 文件的目录。</li>
+<li>运行以下命令:</li>
+</ol>
+
+<pre>
+<code class="devsite-terminal">atest</code>
+</pre>
+
+<p>在当前目录及其父目录的 TEST_MAPPING 文件中配置的所有提交前测试都会运行。Atest 将针对提交前测试找到两个测试(A 和 B)并加以运行。</p>
+
+<p>要运行当前工作目录 (CWD) 和父目录中的 TEST_MAPPING 文件中的提交前测试,这是最简单的方法。Atest 会找到 CWD 及其所有父目录中的 TEST_MAPPING 文件并使用这些文件,除非 TEST_MAPPING 文件将 <code>inherit_parent</code> 设为 false。</p>
+
+<h3 id="structuring_source_code">构建源代码</h3>
+
+<p>以下示例显示了如何在源代码树中配置 TEST_MAPPING 文件。</p>
+<pre class="prettyprint"><code>src
+├── project_1
+│ └── TEST_MAPPING
+├── project_2
+│ └── TEST_MAPPING
+└── TEST_MAPPING
+</code></pre>
+<p><code>src/TEST_MAPPING</code> 的内容:</p>
+<pre class="prettyprint"><code>{
+ "presubmit": [
+ {
+ "name": "A"
+ }
+ ]
+}
+</code></pre>
+<p><code>src/project_1/TEST_MAPPING</code> 的内容:</p>
+<pre class="prettyprint"><code>{
+ "presubmit": [
+ {
+ "name": "B"
+ }
+ ],
+ "postsubmit": [
+ {
+ "name": "C"
+ }
+ ],
+ "other_group": [
+ {
+ "name": "X"
+ }
+ ]}
+</code></pre>
+<p><code>src/project_2/TEST_MAPPING</code> 的内容:</p>
+<pre class="prettyprint"><code>{
+ "presubmit": [
+ {
+ "name": "D"
+ }
+ ],
+ "import": [
+ {
+ "path": "src/project_1"
+ }
+ ]}
+</code></pre>
+<h3 id="specifying_target_directories">指定目标目录</h3>
+
+<p>您可以指定一个目标目录,以便在该目录中运行 TEST_MAPPING 文件中的测试。以下命令可运行两个测试(A、B)。</p>
+
+<pre>
+<code class="devsite-terminal">atest --test-mapping src/project_1</code>
+</pre>
+
+<h3 id="running_postsubmit_test_rules">运行提交后测试规则</h3>
+
+<p>您还可以使用此命令运行在 <code>src_path</code>(默认为 CWD)及其父目录中的 TEST_MAPPING 中定义的提交后测试规则:</p>
+
+<pre>
+<code class="devsite-terminal">atest [--test-mapping] [src_path]:postsubmit</code>
+</pre>
+
+<h3 id="identifying_test_groups">识别测试组</h3>
+
+<p>您可以在 Atest 命令中指定测试组。请注意,提交前测试也是提交后测试的一部分。以下命令可运行与 directory src/project_1 中的文件相关的所有<strong>提交后</strong>测试,即三个测试(A、B、C)。</p>
+
+<p>或者,您也可以使用 <strong>:all</strong> 来运行所有测试(无论测试属于哪个组)。以下命令可运行四个测试(A、B、C、X):</p>
+
+<pre>
+<code class="devsite-terminal">atest --test-mapping src/project_1:all</code>
+</pre>
+
+<h3 id="including_subdirectories">包含子目录</h3>
+
+<p>默认情况下,如果使用 Atest 运行 TEST_MAPPING 中的测试,则系统仅运行在 CWD(或指定目录)及其父目录中的 TEST_MAPPING 文件中配置的提交前测试。如果您想运行子目录中的所有 TEST_MAPPING 文件中的测试,请使用选项 <code>--include-subdir</code> 强制 Atest 将这些测试一并包含在内。</p>
+
+<pre>
+<code class="devsite-terminal">atest --include-subdir</code>
+</pre>
+
+<p>如果未使用 <code>--include-subdir</code> 选项,则 Atest 将仅运行测试 A。如果使用了 <code>--include-subdir</code> 选项,则 Atest 将运行两个测试(A、B)。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/tests/index.html b/zh-cn/compatibility/tests/index.html
new file mode 100644
index 00000000..6844579a
--- /dev/null
+++ b/zh-cn/compatibility/tests/index.html
@@ -0,0 +1,144 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+
+<!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<h1 id="android_platform_testing" class="page-title">Android 平台测试</h1>
+
+<p>本内容面向 Android 平台开发者。在了解如何在 Android 平台上进行测试之前,请参阅 <a href="/devices/architecture">Android 平台架构</a>,大致了解相关的信息。</p>
+
+<h2 id="whats_new">新增内容</h2>
+
+<h3 id="test_development_workflow">测试开发工作流</h3>
+
+<p><a href="/compatibility/tests/development">测试开发工作流</a>小节现在包含介绍性材料,其中包括所有主要测试类型的端到端示例。</p>
+
+<h3 id="blueprints">Blueprint</h3>
+
+<p><a href="https://android.googlesource.com/platform/build/soong/">Soong 编译系统</a>在 Android 8.0 (Oreo) 中引入,在 Android Q 中实现了对 <code>android_test</code> 的支持,现在可在 Android 开源项目 (AOSP) master 分支中找到它。</p>
+
+<h3 id="atest">Atest</h3>
+
+<p><a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/README.md" class="external">Atest</a> 是一个命令行工具,用户可以使用这种工具在本地编译、安装并运行 Android 测试。建议采用此标准对您的功能进行初始测试。</p>
+
+<h2 id="what_and_how_to_test">测试什么以及如何测试</h2>
+
+<p>平台测试通常与一个或多个 Android 系统服务或 HAL 层交互、执行受测对象的功能,并断言测试结果的正确性。</p>
+
+<p>因此,平台测试可以:</p>
+
+<ol>
+<li>通过应用框架执行框架 API;执行的特定 API 可能包括:<ul>
+<li>用于第三方应用的公共 API</li>
+<li>用于特权应用的隐藏 API,也称为系统 API</li>
+<li>私有 API(@hide 或受保护,软件包私有)</li>
+</ul></li>
+<li>直接通过原始 binder/IPC 代理调用 Android 系统服务</li>
+<li>通过低级 API 或 IPC 接口直接与 HAL 交互</li>
+</ol>
+
+<p>上面的类型 1 和 2 通常编写为<strong>插桩测试</strong>,而类型 3 通常使用 gtest 框架编写为<strong>原生测试</strong>。</p>
+
+<h2 id="instrumentation_tests_for_the_platform">平台的插桩测试</h2>
+
+<p>您可能已经阅读 <code>developer.android.com</code> 上的<a href="https://developer.android.com/studio/test/">测试应用</a>一文,不过,在平台测试中使用插桩测试的方式可能仍有一些差异。</p>
+
+<p>简言之,插桩测试提供了一种通过 <code>am instrument</code> 命令启动的特殊测试执行环境,其中目标应用进程会重启并使用基本的应用上下文进行初始化,并在应用进程虚拟机内启动插桩线程。您的测试代码在此插桩线程上开始执行,并附带一个 <code>Instrumentation</code> 实例,该实例可提供对应用上下文和 API 的访问权限,以操纵接受测试的应用进程。</p>
+
+<p>关于插桩的一些关键概念:</p>
+
+<ul>
+<li>插桩必须在应用软件包中声明,并在应用软件包清单的 <code>&lt;manifest&gt;</code> 标记下嵌套 <a href="https://developer.android.com/guide/topics/manifest/instrumentation-element.html"><code>&lt;instrumentation&gt;</code></a> 标记</li>
+<li>应用软件包清单在技术上可能包含多个 <code>&lt;instrumentation&gt;</code> 标记,不过它不常以这种方式使用</li>
+<li>每个 <code>&lt;instrumentation&gt;</code> 必须包含:<ul>
+<li><code>android:name</code> 属性:它应该是测试应用中包含的 <a href="https://developer.android.com/reference/android/app/Instrumentation.html"><code>Instrumentation</code></a> 的子类的名称,通常是正在使用的测试运行器,例如 <code>android.support.test.runner.AndroidJUnitRunner</code></li>
+<li>必须定义 <code>android:targetPackage</code> 属性。其值应该设置为接受测试的应用软件包</li>
+</ul></li>
+</ul>
+
+<p>对于平台测试,通常有两类插桩测试:</p>
+
+<h3 id="instrumentation_tests_targeting_applications">针对应用的插桩测试</h3>
+
+<p>此类插桩测试与针对常规 Android 应用的测试没有什么不同。值得注意的是,包含插桩的测试应用需要与其针对的应用使用相同的证书进行签名。</p>
+
+<p>要了解详情,请参阅我们的<a href="/compatibility/tests/development/instr-app-e2e.md">端到端示例</a>。</p>
+
+<h3 id="instrumentation_tests_targeting_themselves">针对本身的插桩测试</h3>
+
+<p>如前所述,当启动插桩时,会重启其目标软件包,并且会注入和启动插桩代码以执行测试。一种例外情况是,这里的目标软件包不能是 Android 应用框架本身,即软件包 <code>android</code>,因为这样做会导致出现一种矛盾情况:需要重启 Android 框架,而正是该框架支持系统功能,包括插桩本身。</p>
+
+<p>这意味着,插桩测试无法将本身注入到 Android 框架(也称为系统服务器)以执行测试。为了测试 Android 框架,测试代码只能调用公共 API Surface,或者通过平台源代码树中可用的 <a href="https://developer.android.com/guide/components/aidl.html">AIDL</a> 公开的 API Surface。对于此类测试,针对任何特定软件包都没有意义,因此,按照惯例会将此类插桩声明为针对其自己的测试应用软件包,如其自己的 <code>AndroidManifest.xml</code> 中的 <code>&lt;manifest&gt;</code> 标记所定义。</p>
+
+<p>根据要求,此类测试应用软件包还可以:</p>
+
+<ul>
+<li>捆绑测试所需的 Activity。</li>
+<li>与系统共享用户 ID。</li>
+<li>使用平台密钥进行签名。</li>
+<li>根据框架源代码而不是公共 SDK 进行编译。</li>
+</ul>
+
+<p>此类插桩测试有时称为自插桩。下面是采用平台源代码的此类插桩测试的一些示例:</p>
+<pre class="prettyprint"><code>frameworks/base/core/tests/coretests
+frameworks/base/services/tests/servicestests
+</code></pre>
+<p>要了解详情,请参阅我们的<a href="/compatibility/tests/development/instr-self-e2e.md">端到端示例</a>。</p>
+
+<h2 id="native_tests_for_the_platform">平台的原生测试</h2>
+
+<p>平台测试的原生测试通常会访问较低级别的 HAL,或者针对各种系统服务执行原始 IPC,因此测试方法通常与接受测试的服务密切相关,这超出了本文档的范畴。</p>
+
+<p>强烈建议使用 <a href="https://github.com/google/googletest">gtest</a> 框架编译原生测试,这是与持续测试基础架构集成的先决条件。</p>
+
+<p>下面是采用平台源代码的此类原生测试的一些示例:</p>
+<pre class="prettyprint"><code>frameworks/av/camera/tests
+frameworks/native/libs/gui/tests
+</code></pre>
+<p>要了解详情,请参阅我们的<a href="/compatibility/tests/development/native-func-e2e.md">端到端示例</a>。</p>
+
+<p>请熟悉以下工具,因为它们是在 Android 系统中进行测试所固有的工具。</p>
+
+<h2 id="compatibility_test_suite_cts">兼容性测试套件 (CTS)</h2>
+
+<p><a href="/compatibility/cts/">Android 兼容性测试套件</a>是一个包含各种类型的测试的套件,用于确保 Android 框架实现在 OEM 合作伙伴以及平台版本之间保持兼容性。<strong>该套件还包括插桩测试和原生测试(也使用 gtest 框架)。</strong></p>
+
+<p>CTS 与平台测试并不互斥,下面是一些常规准则:</p>
+
+<ul>
+<li>如果测试断言框架 API 函数/行为的正确性,并且应该在 OEM 合作伙伴之间强制执行,那么它应该在 CTS 中</li>
+<li>如果测试的意图是在平台开发周期内捕捉回归,并且可能需要特许权限来执行,还可能依赖于实现细节(如 AOSP 中所发布),那么它只能是平台测试</li>
+</ul>
+
+<h2 id="vendor_test_suite_vts">供应商测试套件 (VTS)</h2>
+
+<p><a href="/compatibility/vts/">供应商测试套件</a> (VTS) 会自动执行 HAL 和操作系统内核测试。要使用 VTS 测试 Android 原生系统实现,请设置一个测试环境,然后使用 VTS 方案来测试相应补丁程序。</p>
+
+<h2 id="trade_federation_testing_infrastructure">Trade Federation 测试基础架构</h2>
+
+<p><a href="/devices/tech/test_infra/tradefed/">Trade Federation</a>(简称 tradefed 或 TF)是一种连续的测试框架,专门用于在 Android 设备上运行测试。TF 可以在本地、在桌面设备上以及在平台检验处运行功能测试。要在 TF 中运行测试,您必须具备两个文件,一个是 Java 测试源文件,另一个是 XML 配置文件。有关示例,请参阅 <a href="https://android.googlesource.com/platform/tools/tradefederation/contrib/+/master/src/com/android/example/RebootTest.java" class="external">RebootTest.java</a> 和 <a href="https://android.googlesource.com/platform/tools/tradefederation/contrib/+/master/res/config/example/reboot.xml" class="external">reboot.xml</a>。</p>
+
+<h2 id="debugging">调试</h2>
+
+<p><a href="/devices/tech/debug/">调试</a>部分总结了开发平台级功能时,可用于调试、跟踪和分析原生 Android 平台代码的实用工具和相关命令。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/vts/codelab-video.html b/zh-cn/compatibility/vts/codelab-video.html
new file mode 100644
index 00000000..a414a6d4
--- /dev/null
+++ b/zh-cn/compatibility/vts/codelab-video.html
@@ -0,0 +1,470 @@
+<html devsite><head>
+ <title>视频和代码实验室教程</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+</head>
+
+<body>
+
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+ <p>供应商测试套件 (VTS) 代码实验室和视频教程提供了有关在 Android {{ androidPVersionNumber }} 及 Android 8.1 上运行和开发 VTS 与 CTS-on-GSI 的详细信息。</p>
+
+ <h2>适用于 Android 9 的视频和代码实验室</h2>
+
+ <table>
+ <tbody><tr>
+ <th>主题</th>
+
+ <th>细目</th>
+
+ <th>视频</th>
+
+ <th>代码实验室/SAC</th>
+ </tr>
+
+ <tr>
+ <th>序言</th>
+
+ <td><strong>概述</strong>
+ </td>
+
+ <td>Android 供应商测试套件(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#0">简介</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">用户手册</th>
+
+ <td><strong>如何运行 VTS 和 CTS-on-GSI</strong>
+ </td>
+
+ <td>如何运行 VTS 和 CTS-on-GSI(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#1">构建并运行 VTS 测试计划</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>如何刷写 GSI</strong>
+ </td>
+
+ <td>如何刷写常规系统映像(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#3">为设备准备 GSI 以执行 CTS-on-GSI 测试计划</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="3">供应商测试框架 (VTF)</th>
+
+ <td><strong>测试框架</strong>
+ </td>
+
+ <td>测试框架变更(即将推出)</td>
+
+ <td><a href="https://source.android.com/compatibility/vts/shell-commands">SAC 测试框架</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>测试时间优化</strong>
+ </td>
+
+ <td>测试时间优化(即将推出)</td>
+
+ <td>--</td>
+ </tr>
+
+ <tr>
+ <td><strong>多设备测试</strong>
+ </td>
+
+ <td>多设备测试(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#12">编写多设备测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">基本测试开发</th>
+
+ <td><strong>VTS 测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=DVanlGPV0wA&amp;index=4&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">VTS 测试</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#2">编写 VTS 测试(入门)</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>测试模板</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=O4LuIBzB2y8&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=8">测试模板</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#3">选择模板并编写自定义 VTS 测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="4">开发和了解 HAL 测试</th>
+
+ <td><strong>条件测试</strong>
+ </td>
+
+ <td>条件测试(即将推出)</td>
+
+ <td>--</td>
+ </tr>
+
+ <tr>
+ <td><strong>服务名称感知型测试</strong>
+ </td>
+
+ <td>服务名称感知型 HAL(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#5">选择模板并编写自定义 VTS 测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>HAL 扩展测试</strong>
+ </td>
+
+ <td>HAL 扩展测试(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#6">编写 VTS HAL 扩展测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>框架向后兼容性</strong>
+ </td>
+
+ <td>Android 框架向后兼容性(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#7">编写 HAL 适配器测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">其他接口测试</th>
+
+ <td><strong>内核测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=qWxNFhMM0Lc&amp;index=5&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">内核测试</a>
+ </td>
+
+ <td>--</td>
+ </tr>
+
+ <tr>
+ <td><strong>VNDK 测试</strong>
+ </td>
+
+ <td>--</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#9">维护 VNDK ABI 测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">非功能测试</th>
+
+ <td><strong>性能分析</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=F41dHKYPoic&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=6">性能测试</a>
+ </td>
+
+ <td>
+ <a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#5">编写 VTS 性能分析测试</a>
+
+ <p><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#4">使用 VTS 测量 VINTF 性能</a>
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>模糊测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=AkQcNb0Mf94&amp;index=10&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">HIDL 和 HAL 接口模糊测试</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#7">编写 VTS HIDL HAL 接口模糊测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="4">供应商测试基础架构 (VTI)</th>
+
+ <td><strong>代码覆盖率</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=tJprsmiTn4g&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=9">VTS 中的覆盖率插桩和收集</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#6">使用 VTS 测量原生代码覆盖率</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>录制和重放测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=pwbFCKaldNU&amp;index=11&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">录制和重放测试</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#8">编写录制和重放测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>端到端自动化</strong>
+ </td>
+
+ <td>自动测量基础架构(即将推出)</td>
+
+ <td>--</td>
+ </tr>
+
+ <tr>
+ <td><strong>信息中心</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=3VwSCYUv2Eo&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=3">持续集成信息中心</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#10">构建 VTS 信息中心和通知服务</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">结语</th>
+
+ <td><strong>合作伙伴工程</strong>
+ </td>
+
+ <td>Treble 支持情况(即将推出)</td>
+
+ <td>--</td>
+ </tr>
+
+ <tr>
+ <td><strong>总结</strong>
+ </td>
+
+ <td>呼吁贡献(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#14">报告问题</a>
+ </td>
+ </tr>
+ </tbody></table>
+
+ <h2>适用于 Android 8.1 的视频和代码实验室</h2>
+
+ <table>
+ <tbody><tr>
+ <th>主题</th>
+
+ <th>细目</th>
+
+ <th>视频</th>
+
+ <th>代码实验室/SAC</th>
+ </tr>
+
+ <tr>
+ <th>序言</th>
+
+ <td><strong>概述</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=7BX7oSHc7nk&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">Android 供应商测试套件 (VTS) 产品</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#0">简介</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">用户手册</th>
+
+ <td><strong>如何运行 VTS 和 CTS-on-GSI</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=BOAxwX8khlg&amp;index=2&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">如何运行 VTS</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#1">构建并运行 VTS 测试计划</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>如何刷写 GSI</strong>
+ </td>
+
+ <td>如何刷写常规系统映像(即将推出)</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts/#3">为设备准备 GSI 以执行 CTS-on-GSI 测试计划</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th>供应商测试框架 (VTF)</th>
+
+ <td><strong>测试框架</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=H6sgKtvyprA&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=7">VTS 测试框架</a>
+ </td>
+
+ <td><a href="https://source.android.com/compatibility/vts/shell-commands">SAC 测试框架</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">基本测试开发</th>
+
+ <td><strong>VTS 测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=DVanlGPV0wA&amp;index=4&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">VTS 测试</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#2">编写 VTS 测试(入门)</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>测试模板</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=O4LuIBzB2y8&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=8">测试模板</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#3">选择模板并编写自定义 VTS 测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">其他接口测试</th>
+
+ <td><strong>内核测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=qWxNFhMM0Lc&amp;index=5&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">内核测试</a>
+ </td>
+
+ <td>--</td>
+ </tr>
+
+ <tr>
+ <td><strong>VNDK 测试</strong>
+ </td>
+
+ <td>--</td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#9">维护 VNDK ABI 测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="2">非功能测试</th>
+
+ <td><strong>性能分析</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=F41dHKYPoic&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=6">性能测试</a>
+ </td>
+
+ <td>
+ <a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#5">编写 VTS 性能分析测试</a>
+
+ <p><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#4">使用 VTS 测量 VINTF 性能</a>
+ </p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>模糊测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=AkQcNb0Mf94&amp;index=10&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">HIDL 和 HAL 接口模糊测试</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#7">编写 VTS HIDL HAL 接口模糊测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th rowspan="3">供应商测试基础架构 (VTI)</th>
+
+ <td><strong>代码覆盖率</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=tJprsmiTn4g&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=9">VTS 中的覆盖率插桩和收集</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#6">使用 VTS 测量原生代码覆盖率</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>录制和重放测试</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=pwbFCKaldNU&amp;index=11&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">录制和重放测试</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#8">编写录制和重放测试</a>
+ </td>
+ </tr>
+
+ <tr>
+ <td><strong>信息中心</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=3VwSCYUv2Eo&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=3">持续集成信息中心</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#10">构建 VTS 信息中心和通知服务</a>
+ </td>
+ </tr>
+
+ <tr>
+ <th>结语</th>
+ <td><strong>总结</strong>
+ </td>
+
+ <td><a href="https://www.youtube.com/watch?v=-ydHIqD8-o4&amp;index=12&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva">未来计划</a>
+ </td>
+
+ <td><a href="https://codelabs.developers.google.com/codelabs/android-vts-8/#11">报告问题</a>
+ </td>
+ </tr>
+ </tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/vts/hal-testability.html b/zh-cn/compatibility/vts/hal-testability.html
index 3534caa9..8b0ee413 100644
--- a/zh-cn/compatibility/vts/hal-testability.html
+++ b/zh-cn/compatibility/vts/hal-testability.html
@@ -134,7 +134,7 @@ android.hardware.nfc@1.0::I*/* (/vendor/lib64/hw/)
<h2 id="vts-testability-checker">VTS 可测试性检查工具</h2>
<p><code><a href="https://android.googlesource.com/platform/test/vts/+/master/utils/native/testability_checker/?q=vts_testability&amp;g=0" class="external">
- vts_testibility_checker</a></code> 是与 VTS 打包在一起的二进制程序,VTS 测试框架会在运行时使用该工具确定指定的 HAL 测试是否可测试。该工具基于 <code><a href="https://android.googlesource.com/platform/system/libvintf/+/master" class="external">libvintf</a></code> 来加载和解析供应商清单文件,并实现上一部分中所述的决策流程。
+ vts_testibility_checker</a></code> 是与 VTS 打包在一起的二进制程序,VTS 测试框架会在运行时使用该工具确定指定的 HAL 测试是否可行。该工具基于 <code><a href="https://android.googlesource.com/platform/system/libvintf/+/master" class="external">libvintf</a></code> 来加载和解析供应商清单文件,并实现上一部分中所述的决策流程。
</p>
<p>要使用 <code>vts_testability_check</code>,请运行以下命令:</p>
@@ -159,7 +159,7 @@ vts_testability_check -b &lt;bitness&gt; &lt;hal@version&gt;
<h2 id="determining-accessed-hals">确定会访问哪些 HAL</h2>
<p>
-要确定 VTS 测试会访问哪些 HAL,请确保每个 HAL 测试都使用 <code><a href="https://android.googlesource.com/platform/test/vts/+/master/runners/target/vts_hal_hidl_target/VtsHalHidlTargetTestEnvBase.h" class="external">VtsHalHidlTargetTestEnvBase</a></code> 模板注册要在测试中访问的 HAL。接下来,VTS 测试框架会在预处理测试时提取已注册的 HAL。</p>
+要确定 VTS 测试会访问哪些 HAL,请确保每个 HAL 测试都使用 <code><a href="https://android.googlesource.com/platform/test/vts/+/master/runners/target/vts_hal_hidl_target/VtsHalHidlTargetTestEnvBase.h" class="external">VtsHalHidlTargetTestEnvBase</a></code> 模板注册在测试中访问的 HAL。接下来,VTS 测试框架会在预处理测试时提取已注册的 HAL。</p>
<p>对于合规性测试,您还可以检查 <code>/system/etc/vintf/manifest.xml</code>。如果此文件中定义了 HAL,则 VTS 应测试该 HAL(对于系统提供的 HAL 服务(例如 <code>graphics.composer/vr</code>),HAL 在 <code>/system/manifest.xml</code> 中声明)。
</p>
diff --git a/zh-cn/compatibility/vts/index.html b/zh-cn/compatibility/vts/index.html
index 06e46c1d..33b02932 100644
--- a/zh-cn/compatibility/vts/index.html
+++ b/zh-cn/compatibility/vts/index.html
@@ -26,6 +26,7 @@ Android 供应商测试套件 (VTS) 提供了大量用于进行 Android 测试
</p>
<ul>
+ <li><a href="/compatibility/vts/codelab-video">Codelab 和视频教程</a>:介绍了有关在 Android {{ androidPVersionNumber }} 和 Android 8.1 上运行和开发 VTS 与 CTS-on-GSI 的视频和 Codelab。</li>
<li><a href="/compatibility/vts/systems">使用 VTS 进行系统测试</a>:介绍了如何使用 VTS 测试 Android 原生系统实现,如何设置测试环境,然后如何使用 VTS 方案测试补丁程序。</li>
<li><strong>测试框架</strong>:详细介绍了如何使用 VTS 测试框架,包括:<ul>
<li><a href="/compatibility/vts/shell-commands">设备 shell 命令</a>:介绍了如何使用设备 shell 命令执行目标端测试二进制文件,如何获取/设置属性、环境变量和系统信息,以及如何启动/停止 Android 框架。</li>
@@ -42,7 +43,7 @@ Android 供应商测试套件 (VTS) 提供了大量用于进行 Android 测试
<li><a href="/compatibility/vts/ui.html">界面</a>:一个统一的界面,利用 Material Design 有效显示与测试结果、分析和覆盖率相关的信息。</li>
</ul>
</li>
- <li><strong>实验室基础架构</strong>:介绍了在搭载 AOSP <a href="/setup/build/gsi">常规系统映像 (GSI)</a> 的合作伙伴设备上运行 VTS、CTS 或其他测试的<a href="/compatibility/vts/automated-test-infra">自动化测试基础架构</a>所采用的架构。需要<a href="/compatibility/vts/host-controller">主机控制器</a>。
+ <li><strong>实验室基础架构</strong>:介绍了在搭载 AOSP <a href="/compatibility/vts/automated-test-infra">常规系统映像 (GSI)</a> 的合作伙伴设备上运行 VTS、CTS 或其他测试的<a href="/setup/build/gsi">自动化测试基础架构</a>所采用的架构。需要<a href="/compatibility/vts/host-controller">主机控制器</a>。
</li>
<li><a href="/compatibility/vts/performance.html">binder 和 hwbinder 性能测试</a>:用于衡量吞吐量和延迟的工具。</li>
</ul>
diff --git a/zh-cn/devices/accessories/headset/usb-headset-spec.html b/zh-cn/devices/accessories/headset/usb-headset-spec.html
index b53e2df0..caf294f2 100644
--- a/zh-cn/devices/accessories/headset/usb-headset-spec.html
+++ b/zh-cn/devices/accessories/headset/usb-headset-spec.html
@@ -36,6 +36,16 @@ USB 耳机可以实现多种基本功能和高级功能。本规范只涵盖必
<li>用于控制音量、播放和通话的功能按钮</li>
</ul>
+<h2 id="terminal-types">USB 音频类终端类型</h2>
+<p>
+头戴式耳机和耳机必须报告这些 USB 音频类 (UAC) 终端类型:
+</p>
+
+<ul>
+ <li><strong>头戴式耳机</strong>。低阻抗换能器,&lt; 100 欧,无麦克风:0x0302</li>
+ <li><strong>耳机</strong>。带麦克风的低阻抗换能器:0x0402</li>
+</ul>
+
<h2 id="control-function">控制功能</h2>
<p>耳机可以带有不同数量的按钮以控制特定功能(例如音量和播放/暂停)。</p><p>
<table>
diff --git a/zh-cn/devices/architecture/dto/optimize.html b/zh-cn/devices/architecture/dto/optimize.html
index e6dbbf0b..0ae1fe52 100644
--- a/zh-cn/devices/architecture/dto/optimize.html
+++ b/zh-cn/devices/architecture/dto/optimize.html
@@ -81,8 +81,8 @@
<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”),从而改善两个 <code>.dtb</code> 文件(从 O(N2) 到 O(N),其中 N 是树中的节点数)的合并效果。<em></em>
+ 虽然最新的 <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>
diff --git a/zh-cn/devices/architecture/kernel/modular-kernels.html b/zh-cn/devices/architecture/kernel/modular-kernels.html
index 46550038..88264815 100644
--- a/zh-cn/devices/architecture/kernel/modular-kernels.html
+++ b/zh-cn/devices/architecture/kernel/modular-kernels.html
@@ -47,7 +47,7 @@ CONFIG_MODVERSIONS=y
<p>内核模块应尽可能支持卸载和重新加载。</p>
-<aside class="note"><strong>注意</strong>:<code>CONFIG_MODULE_SRCVERSION_ALL</code> 是可选项,不会进行测试。</aside>
+<aside class="note"><strong>注意</strong>:<code>CONFIG_MODULE_SRCVERSION_ALL</code> 是可选项,不会对其进行测试。</aside>
<h3 id="module-signing">模块签名</h3>
<p>(可选)ODM 可以启用以下内核配置选项,以在其自己的内核配置中启用模块签名:</p>
@@ -196,12 +196,9 @@ on early-init
<h3 id="early-mounting-partitions-vboot-1-0">提前装载分区 (VBoot 1.0)</h3>
<p>使用 VBoot 1.0 提前装载分区的要求包括:</p>
<ol>
-<li>设备节点路径必须在 <code>fstab</code> 和设备树条目中使用其 by-name 符号链接。<em></em>例如,确保对分区进行命名且设备节点为 <code>/dev/block/…./by-name/{system,vendor,odm}</code>,而不是使用 <code>/dev/block/mmcblk0pX</code> 指定分区。
+<li>设备节点路径必须在 <em>fstab</em> 和设备树条目中使用其 by-name 符号链接。<code>fstab</code>例如,确保对分区进行命名且设备节点为 <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>
-
-Ruby例如:
-<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
diff --git a/zh-cn/devices/architecture/vintf/match-rules.html b/zh-cn/devices/architecture/vintf/match-rules.html
index 3f944f8e..22259b65 100644
--- a/zh-cn/devices/architecture/vintf/match-rules.html
+++ b/zh-cn/devices/architecture/vintf/match-rules.html
@@ -32,8 +32,8 @@
<p>HAL 匹配规则可以识别清单文件中被视为受相应兼容性矩阵的所有者支持的 <code>hal</code> 元素的版本。</p>
<ul>
<li>多个 <code>&lt;hal&gt;</code> 元素具有 <strong>AND</strong> 关系。</li>
-<li>同一 <code>&lt;hal&gt;</code> 中的多个 <code>&lt;version&gt;</code> 元素具有 <strong>OR</strong> 关系。如果指定了两个或两个以上版本,则只需要实现其中一个版本(请参见下面的 DRM 示例)。</li>
-<li>同一 <code>&lt;hal&gt;</code> 中的多个 <code>&lt;instance&gt;</code> 和 <code>&lt;regex-instance&gt;</code> 元素具有 <strong>AND</strong> 关系(请参见下面的 DRM 示例)。</li>
+<li>同一个 <code>&lt;version&gt;</code> 中的多个 <code>&lt;hal&gt;</code> 元素具有 <strong>OR</strong> 关系。如果指定了两个或两个以上版本,则只需要实现其中一个版本(请参见下面的 DRM 示例)。</li>
+<li>同一个 <code>&lt;instance&gt;</code> 中的多个 <code>&lt;regex-instance&gt;</code> 和 <code>&lt;hal&gt;</code> 元素具有 <strong>AND</strong> 关系(请参见下面的 DRM 示例)。</li>
</ul>
<h4><strong>示例</strong>:相机模块的成功 HAL 匹配</h4>
diff --git a/zh-cn/devices/architecture/vndk/linker-namespace.html b/zh-cn/devices/architecture/vndk/linker-namespace.html
index 3306c289..41d4585b 100644
--- a/zh-cn/devices/architecture/vndk/linker-namespace.html
+++ b/zh-cn/devices/architecture/vndk/linker-namespace.html
@@ -32,7 +32,7 @@
<p>另一方面,链接器命名空间机制可提供相应的灵活性,从而将由一个链接器命名空间导出的某些共享库用于另一个链接器命名空间。这些导出的共享库可能会成为对其他程序公开的应用编程接口,同时在其链接器命名空间中隐藏实现细节。</p>
-<p>例如,<code>/system/lib[64]/libcutils.so</code> 和 <code>/system/lib[64]/vndk-sp-${VER}/libutils.so</code> 是两个共享库。这两个库可能有不同的符号。它们将加载到不同的链接器命名空间中,以便框架模块可以依赖于 <code>/system/lib[64]/libcutils.so</code>,而 SP-HAL 共享库则可以依赖于 <code>/system/lib[64]/vndk-sp-${VER}/libcutils.so</code>。</p>
+<p>例如,<code>/system/lib[64]/libcutils.so</code> 和 <code>/system/lib[64]/vndk-sp-${VER}/libcutils.so</code> 是两个共享库。这两个库可能有不同的符号。它们将加载到不同的链接器命名空间中,以便框架模块可以依赖于 <code>/system/lib[64]/libcutils.so</code>,而 SP-HAL 共享库则可以依赖于 <code>/system/lib[64]/vndk-sp-${VER}/libcutils.so</code>。</p>
<p>另一方面,<code>/system/lib[64]/libc.so</code> 是由一个链接器命名空间导出而后又被导入到许多链接器命名空间中的公共库。<code>/system/lib[64]/libc.so</code> 的依赖项(例如 <code>libnetd_client.so</code>)将被加载到 <code>/system/lib[64]/libc.so</code> 所在的命名空间中。其他命名空间将无法访问这些依赖项。这种机制会在提供公共接口的同时封装实现细节。</p>
diff --git a/zh-cn/devices/bluetooth/asha.html b/zh-cn/devices/bluetooth/asha.html
index 8f22800c..9a157f52 100644
--- a/zh-cn/devices/bluetooth/asha.html
+++ b/zh-cn/devices/bluetooth/asha.html
@@ -65,7 +65,7 @@
<ul>
<li>
- 跟踪最近配对的左右外围设备。这两个外围设备应被视为音频接收器。
+ 跟踪最近配对的左右外围设备。
</li>
<li>
如果存在有效配对,则假设这些外围设备正在使用中。当连接中断时,中央设备应尝试与已配对的设备建立连接或重新建立连接。
@@ -86,22 +86,26 @@
<ul>
<li>
- 实现兼容的 BT 4.2 或更高版本的控制器</li>
+ 实现兼容的 BT 4.2 或更高版本的控制器。
+ </li>
+ <li>
+ 让中央设备支持至少 2 个同步 LE 链路(包含<a href="#audio-packet-format-and-timing">音频数据包格式和时间设置</a>中所述的参数)。
+ </li>
<li>
- 支持至少 2 个同步 LE 链路(包含<a href="#audio-packet-format-and-timing">音频数据包格式和时间设置</a>中所述的参数)。
+ 让外围设备支持至少 1 个 LE 链路(包含<a href="#audio-packet-format-and-timing">音频数据包格式和时间设置</a>中所述的参数)。
</li>
<li>
拥有基于 LE 信用的流控制 [BT 第 3 卷,A 部分,第 10.1 节]。
- 设备应该在 CoC 上支持至少 240 个字节的 MTU 和 MPS 大小,并且最多能够缓冲 8 个数据包。
+ 设备应该在 CoC 上支持至少 241 个字节的 MTU 和 MPS 大小,并且最多能够缓冲 8 个数据包。
</li>
<li>
- 具有 LE 数据长度扩展 [BT 第 6 卷,B 部分,第 5.1.9 节],负载至少为 87 个字节。建议数据长度至少为 250 个字节。
+ 具有 LE 数据长度扩展 [BT 第 6 卷,B 部分,第 5.1.9 节],负载至少为 167 个字节。对于支持编解码器 G.722 @ 24 kHz 的外围设备,此长度至少为 247 个字节。
</li>
<li>
让中央设备支持 HCI LE 连接更新命令,并遵循非零 minimum_CE_Length 参数。
</li>
<li>
- 使用<a href="#audio-packet-format-and-timing">音频数据包格式和时间设置</a>中的连接时间间隔和负载大小,保持与两个不同外围设备之间的两个 LE CoC 连接的数据吞吐量。
+ 让中央设备使用<a href="#audio-packet-format-and-timing">音频数据包格式和时间设置</a>中的连接时间间隔和负载大小,保持与两个不同外围设备之间的两个 LE CoC 连接的数据吞吐量。
</li>
<li>
让外围设备将 <code>LL_LENGTH_REQ</code> 或 <code>LL_LENGTH_RSP</code> 帧中的 <code>MaxRxOctets</code> 和 <code>MaxRxTime</code> 参数设置为这些规范所需的最小必需值。这样,中央设备可以在计算接收帧所需的时间长度时优化其时间调度程序。
@@ -109,7 +113,7 @@
</ul>
<p>
- 外围设备和中央设备可以实现 BT 5 中指定的 2 Mbit PHY。中央设备应该同时在 1 Mbit 和 2 Mbit PHY 上支持高达 64 kbit/s 的音频链路,但可以选择将对需要高于 64 kbit/s 的链路的支持限制为 2 Mbit PHY,以便改善与其他 2.4 GHz 设备的共存性。请勿使用 BLE 远程 PHY。
+ 外围设备和中央设备可以实现 BT 5 中指定的 2M PHY。中央设备应该同时在 1M 和 2M PHY 上支持高达 64 kbit/s 的音频链路,但可以选择将对需要高于 64 kbit/s 的链路的支持限制为 2M PHY,以便改善与其他 2.4 GHz 设备的共存性。请勿使用 BLE 远程 PHY。
</p>
<p>
@@ -160,7 +164,7 @@
</td>
</tr>
<tr>
- <td>LE_PSM</td>
+ <td>LE_PSM_OUT</td>
<td>读取</td>
<td>
要用于连接声道的 PSM。将从动态范围中挑选 [BT 第 3 卷,A 部分,第 4.22 节]
@@ -194,7 +198,7 @@
<td><code>{00e4ca9e-ab14-41e4-8823-f9e70c7e91df}</code></td>
</tr>
<tr>
- <td>LE_PSM</td>
+ <td>LE_PSM_OUT</td>
<td><code>{2d410339-82b6-42aa-b34e-e2e01df8cc1a}</code></td>
</tr>
</tbody></table>
@@ -280,8 +284,7 @@
</tr>
<tr>
<td>0-1</td>
- <td>制造商的 ID。</td>
- </tr>
+ <td>制造商的 ID。这是 BTSIG 分配的<a href="https://www.bluetooth.com/specifications/assigned-numbers/company-identifiers">公司标识</a>。</td></tr>
<tr>
<td>2-7</td>
<td>
@@ -299,7 +302,7 @@
</tr>
<tr>
<td>0</td>
- <td>是否支持 LE CoC 音频流式传输(是/否)。</td>
+ <td>是否支持 LE CoC 音频输出流式传输(是/否)。</td>
</tr>
<tr>
<td>1-7</td>
@@ -388,7 +391,7 @@
<td>2 <code>«Stop»</code></td>
<td>无</td>
<td>
- 指示外围设备设备停止呈现音频。若要再次呈现音频,应在这次停止后启动新的音频设置序列。外围设备可以根据此命令请求连接更新。
+ 指示外围设备设备停止呈现音频。若要再次呈现音频,应在这次停止后启动新的音频设置序列。
</td>
</tr>
</tbody></table>
@@ -482,8 +485,7 @@
<ul>
<li>
- 音频帧应一律与连接时间间隔相匹配。
- 例如,如果连接时间间隔为 15 毫秒且采样率为 1 kHz,则音频帧应包含 240 个样本。
+ 音频帧应一律与连接时间间隔相匹配。例如,如果连接时间间隔为 10 毫秒且采样率为 16 kHz,则音频帧应包含 160 个样本。
</li>
<li>
无论帧时间或连接时间间隔为何,系统中的采样率都限制为 8kHz 的倍数,以便帧中包含的样本个数始终为整数。
@@ -513,7 +515,7 @@
<th>编解码器</th>
<th>比特率</th>
<th>连接时间间隔</th>
- <th>CE 长度 (1/2 Mbit)</th>
+ <th>CE 长度 (1M/2M PHY)</th>
<th>音频负载大小</th>
</tr>
<tr>
@@ -555,15 +557,16 @@
</aside>
<p>
- 在启动音频流之前,中央设备会查询外围设备,并确立最高质量标准的编解码器。接下来,音频流设置会按顺序进行以下操作:</p>
+ 在启动音频流之前,中央设备会查询外围设备,并确立通用的编解码器。接下来,音频流设置会按顺序进行以下操作:</p>
<ol>
- <li>读取 PSM 和 PreparationDelay(可选)。</li>
+ <li>读取 PSM 以及 PreparationDelay 和 RenderDelay(可选)。这些值可以由中央设备缓存。
+ </li>
<li>
打开 CoC L2CAP 通道 - 外围设备最初应授予 8 个 Credit。
</li>
<li>
- 发出连接更新命令以将链接切换到所选编解码器需要的参数。
+ 发出连接更新命令以将链接切换到所选编解码器需要的参数。中央设备可以在上一步骤中的 CoCo 连接之前进行此连接更新。
</li>
<li>
中央设备和外围设备主机等待更新完成事件。
diff --git a/zh-cn/devices/bootloader/flashing-updating.html b/zh-cn/devices/bootloader/flashing-updating.html
index e1519a89..61aa0493 100644
--- a/zh-cn/devices/bootloader/flashing-updating.html
+++ b/zh-cn/devices/bootloader/flashing-updating.html
@@ -37,8 +37,8 @@
<li>引导加载程序命令行:由引导加载程序确定的一组静态和动态参数</li>
<li>设备树:从 chosen/bootargs 节点</li>
<li><code>defconfig</code>:从 CONFIG_CMDLINE</li>
-<li><code>boot.img</code>:从命令行(有关偏移和大小,请参见 <a href="https://android.googlesource.com/platform/system/core/+/master/mkbootimg/include/bootimg/bootimg.h" class="external"><code>system/core/mkbootimg/bootimg.h</code></a>)</li>
-<li>通过 PMIC(电源管理集成电路)确定的遵循 <a href="/compatibility/cdd">Android 兼容性定义文档</a>的规范重新启动或关闭原因、其他硬件资源和重新启动魔数参数 (<code>LINUX_REBOOT_CMD_RESTART2</code>) 消息传递,记录为:<code>androidboot.bootreason=&lt;reason&gt;</code></li>
+<li><code>boot.img</code>:从命令行(关于偏移和大小,请参见 <a href="https://android.googlesource.com/platform/system/core/+/master/mkbootimg/include/bootimg/bootimg.h" class="external"><code>system/core/mkbootimg/bootimg.h</code></a>)</li>
+<li>通过 PMIC(电源管理集成电路)、其他硬件资源和重新启动魔数参数 (<code>LINUX_REBOOT_CMD_RESTART2</code>) 消息传递确定且遵从 <a href="/compatibility/cdd">Android 兼容性定义文档</a>的规范性重新启动或关闭原因,会记录为:<code>androidboot.bootreason=&lt;reason&gt;</code></li>
</ul>
<h2 id="booting-device-tree">启动:设备树/设备树叠加层</h2>
@@ -63,7 +63,7 @@
如果使用标准 AOSP 恢复映像,那么在启动过程中,引导加载程序应该读取 misc 分区上的前 32 个字节,如果相应的数据匹配,它将启动到恢复映像:“启动-恢复”。这样一来,可以继续执行任何待处理的恢复工作(例如,应用 OTA、执行数据移除等),直到成功完成为止。
</p>
<p>
-要详细了解刷写过程中恢复进程与引导加载程序进行通信时用到的块内容,请参见 <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/bootloader_message/include/bootloader_message/bootloader_message.h#64" class="external"><code>bootable/recovery/bootloader_message/bootloader_message.h</code></a>。
+要详细了解刷写过程中恢复进程与引导加载程序进行通信时用到的块中的内容,请参见 <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/bootloader_message/include/bootloader_message/bootloader_message.h#64" class="external"><code>bootable/recovery/bootloader_message/bootloader_message.h</code></a>。
</p>
<h3 id="a-b-updates">A/B 更新</h3>
<p>
@@ -71,7 +71,9 @@
<ul>
<li>所有通过 OTA 更新的分区都应可以在主系统启动时更新,而不是通过恢复来更新。
</li><li>对于 A/B 更新,更新程序将查询<a href="/reference/hidl/android/hardware/boot/1.0/IBootControl">启动控件 HAL</a>,更新当前未使用的启动槽位,通过 HAL 更改活动槽位,并重新启动到更新后的操作系统。请参见<a href="/devices/tech/ota/ab/ab_implement#bootcontrol" class="external">实现启动控件 HAL</a>
-</li><li>所有支持 A/B 的分区都会在其名称后面附加一个后缀。此后缀可区分属于引导加载程序中特定槽位的分区。对于每个这样的分区,都有一个相应的变量 <code>has-slot:<partition base name></partition></code>,其值为“yes”</li><li>槽位按字母顺序命名为 a、b、c 等,与后缀为 _a、_b、_c 等的分区相对应。</li><li>引导加载程序应通过以下某种方式通知操作系统启动了哪个槽位:<ul>
+</li><li>所有支持 A/B 的分区都会在其名称后面附加一个后缀。此后缀可区分属于引导加载程序中特定插槽的分区。对于每个这样的分区,都有一个相应的变量 <code>has-slot:<partition base name></partition></code>,其值为“yes”
+</li><li>插槽按字母顺序命名为 a、b、c 等,与后缀为 _a、_b、_c 等的分区相对应。
+</li><li>引导加载程序应通过以下某种方式通知操作系统启动了哪个槽位:<ul>
<li>DT 属性:<code>/firmware/android/slot_suffix</code>
或:
</li><li>命令行属性:<code>androidboot.slot_suffix</code>
diff --git a/zh-cn/devices/bootloader/partitions-images.html b/zh-cn/devices/bootloader/partitions-images.html
index 8b33252c..895768dd 100644
--- a/zh-cn/devices/bootloader/partitions-images.html
+++ b/zh-cn/devices/bootloader/partitions-images.html
@@ -31,7 +31,7 @@ Android 设备包含若干个分区,这些分区在启动过程中发挥不同
</li><li><strong>system</strong>:<code>system</code> 分区主要包含 Android 框架。
</li><li><strong>recovery</strong>:<code>recovery</code> 分区会存储在 OTA 过程中启动的恢复映像。如果设备支持 <a href="/devices/tech/ota/ab/">A/B 更新</a>,则恢复映像可以是启动映像中包含的 RAM 磁盘,而不是单独的映像。
</li><li><strong>cache</strong>:<code>cache</code> 分区会存储临时数据,如果设备使用 A/B 更新,则该分区是可选的。cache 分区不需要可从引导加载程序写入,而只需要可清空。大小取决于设备类型和 userdata 分区的可用空间。目前,50MB 至 100MB 应该没问题。
-</li><li><strong>misc</strong>:<code>misc</code> 分区由恢复映像使用,大小为 4KB 或更大。
+</li><li><strong>misc</strong>:<code>misc</code> 分区由恢复映像使用,存储空间为 4KB 或更大。
</li><li><strong>userdata</strong>:<code>userdata</code> 分区包含用户安装的应用和数据,包括自定义数据。
</li><li><strong>metadata</strong>:当设备已加密且存储空间为 16MB 或更大时,便会使用 <code>metadata</code> 分区。
</li><li><strong>vendor</strong>:<code>vendor</code> 分区包含所有不可分发给 Android 开源项目 (AOSP) 的二进制文件。如果没有专有信息,则可以省略此分区。
diff --git a/zh-cn/devices/bootloader/product-partitions.html b/zh-cn/devices/bootloader/product-partitions.html
index bb6d433b..09063df9 100644
--- a/zh-cn/devices/bootloader/product-partitions.html
+++ b/zh-cn/devices/bootloader/product-partitions.html
@@ -31,7 +31,7 @@
许多原始设备制造商 (OEM) 会自定义 AOSP 系统映像,以实施自己的功能并满足运营商的要求。不过,如果进行这类自定义,则无法针对多个软件 SKU 使用单个系统映像,因为映像必须各不相同,才能支持不同的语言区域、运营商等;如果使用单独的 <code>/product</code> 分区来包含自定义项,则可以无法针对多个软件 SKU 使用单个系统映像(<code>/system</code> 分区会托管可在众多软件 SKU 之间共享的通用代码)。<code>/vendor</code> 分区会继续托管 SoC 专用板级 (BSP) 代码,这类代码可以基于指定 SoC 在多台设备之间共享。</p>
<p>
-使用单独的分区存在一些弊端,例如,难以管理磁盘空间(应该预留一定的空间满足未来增长的空间需求),以及难以在各分区之间<a href="/devices/architecture/vndk/abi-stability">维护稳定的应用二进制接口 (ABI)</a>。在决定使用 <code>/product</code> 分区之前,请花些时间考虑一下您独特的 AOSP 实现和可行的缓解策略(例如,在<a href="/devices/tech/ota/">无线下载 (OTA) 更新</a>期间对设备进行重新分区,这不是由 Google 完成的,而是由某些原始设备制造商(OEM) 完成的)。
+使用单独的分区存在一些弊端,例如,难以管理磁盘空间(应该预留一定的空间满足未来增长的空间需求),以及难以在各分区之间<a href="/devices/architecture/vndk/abi-stability">维护稳定的应用二进制接口 (ABI)</a>。在决定使用 <code>/product</code> 分区之前,请花些时间考虑一下您独特的 AOSP 实现和可行的缓解策略(例如,在<a href="/devices/tech/ota/">无线下载 (OTA) 更新</a>期间对设备进行重新分区,这不是由 Google 完成的,而是由某些原始设备制造商 (OEM) 完成的)。
</p>
<h3 id="legacy-oem">旧式 /oem 与 /product</h3>
diff --git a/zh-cn/devices/bootloader/system-as-root.html b/zh-cn/devices/bootloader/system-as-root.html
index 20dd250d..6729e1da 100644
--- a/zh-cn/devices/bootloader/system-as-root.html
+++ b/zh-cn/devices/bootloader/system-as-root.html
@@ -94,7 +94,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 设备必须使 <code>/recovery</code> 分区单独存在,因为它们没有后备插槽分区</strong>(例如,从 <code>boot_a</code> → <code>boot_b</code>)。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,对于非 A/B 设备来说,<code>/recovery</code> 分区<strong>必须</strong>作为单独的分区存在(不同于非 A/B 设备的 <code>/boot</code>),这意味着恢复映像将继续延迟更新(即如同 <a href="/devices/tech/ota/nonab/#life-ota-update">pre-9</a> 设备中那样)。</p>
+ <p>与将 <code>/boot</code> 改编为 <a href="/devices/tech/ota/ab_implement#recovery">recovery</a> 分区的 A/B 设备不同,<strong>非 A/B 设备必须使 <code>/recovery</code> 分区单独存在,因为它们没有后备插槽分区</strong>(例如,从 <code>boot_a</code> → <code>boot_b</code>)。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,对于非 A/B 设备来说,<code>/recovery</code> 分区<strong>必须</strong>作为单独的分区存在(不同于非 A/B 设备的 <code>/boot</code>),这意味着恢复映像将继续延迟更新(即如同 <a href="/devices/tech/ota/nonab/#life-ota-update">Android 9 之前</a>的设备中那样)。</p>
<p>非 A/B 设备在使用 Android 9 前后的分区布局差异:</p>
@@ -212,7 +212,7 @@ system.img
<li><a href="https://android-review.googlesource.com/#/c/kernel/common/+/158491/" class="external">https://android-review.googlesource.com/#/c/kernel/common/+/158491/</a>
</li>
- <li><a href="https://android-review.googlesource.com/q/hashtag:avb-kernel-patch-4.4" class="external">内核 4.4 补丁程序</a>、<a href="https://android-review.googlesource.com/q/hashtag:avb-kernel-patch-4.9" class="external">内核 4.9 补丁程序</a>等<aside class="note"><strong>注意</strong>:您也可以在 <a href="https://android.googlesource.com/platform/external/avb/+/master/contrib/linux/" class="external">external/avb/contrib/linux/</a>{4.4,4.9,etc.}/* 上找到上述 AVB 专用内核补丁程序文件。
+ <li><a href="https://android-review.googlesource.com/q/hashtag:avb-kernel-patch-4.4" class="external">内核 4.4 补丁程序</a>、<a href="https://android-review.googlesource.com/q/hashtag:avb-kernel-patch-4.9" class="external">内核 4.9 补丁程序</a>等<aside class="note"><strong>注意</strong>:您也可以在 <a href="https://android.googlesource.com/platform/external/avb/+/master/contrib/linux/" class="external">external/avb/contrib/linux/</a> {4.4,4.9,etc.}/* 上找到上述 AVB 专用内核补丁程序文件。
</aside>
</li>
</ul>
diff --git a/zh-cn/devices/graphics/build-tests.html b/zh-cn/devices/graphics/build-tests.html
index 6c6a016f..936eaeca 100644
--- a/zh-cn/devices/graphics/build-tests.html
+++ b/zh-cn/devices/graphics/build-tests.html
@@ -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/run-tests.html b/zh-cn/devices/graphics/run-tests.html
index dd75284b..9bd0a29d 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/graphics/tracing-win-transitions.html b/zh-cn/devices/graphics/tracing-win-transitions.html
new file mode 100644
index 00000000..9ebf8ee3
--- /dev/null
+++ b/zh-cn/devices/graphics/tracing-win-transitions.html
@@ -0,0 +1,120 @@
+<html devsite><head>
+ <title>跟踪窗口转换</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+ <p>WinScope 可帮助您跟踪窗口转换,并提供了用于在转换期间和转换后记录和分析窗口管理器状态和 Surface Flinger 状态的基础架构和工具。WinScope 将所有相关的系统服务状态记录在一个跟踪文件中,您可以使用该文件重现并逐步查看转换。
+
+ </p>
+
+ <h2 id="capture_trace">记录跟踪情况</h2>
+ <p>您可以在运行 userdebug 或 eng 版本的设备上通过快捷设置或 ADB 记录跟踪情况。
+ </p>
+
+ <h3 id="capture_trace_quick_settings">通过快捷设置</h3>
+ <ol>
+ <li><a href="https://developer.android.com/studio/debug/dev-options#enable" class="external">启用开发者选项</a></li>
+ <li>依次转到<b>开发者选项</b> -&gt; <b>快捷设置开发者图块</b></li>
+ <li>启用 Winscope 跟踪</li>
+ <li>打开快捷设置</li>
+ <li>点按 <b>Winscope 跟踪</b>以启用跟踪</li>
+ <li>在设备上执行窗口转换</li>
+ <li>窗口转换完成后,请打开快捷设置,然后点按 <b>Winscope 跟踪</b>以停用跟踪
+ </li>
+ </ol>
+ <p>跟踪记录会被写入 <code>/data/misc/wmtrace/wm_trace.pb</code> 和 <code>/data/misc/wmtrace/layers_trace.pb</code>,同时还会包含在所有错误报告中。
+ </p>
+
+ <h3 id="capture_trace_quick_adb">通过 ADB</h3>
+ <h4 id="capture_trace_quick_adb_wm">窗口管理器跟踪记录</h4>
+ <ol>
+ <li>启用跟踪
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell cmd window tracing start</pre>
+ </li>
+ <li>停用跟踪
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell cmd window tracing stop</pre>
+ </li>
+ <li>抓取跟踪文件
+ <pre class="devsite-terminal devsite-click-to-copy">adb pull /data/misc/wmtrace/wm_trace.pb wm_trace.pb</pre>
+ </li>
+ </ol>
+ <h4 id="capture_trace_quick_adb_sf">Surface Flinger 跟踪记录</h4>
+ <ol>
+ <li>启用跟踪
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell su root service call SurfaceFlinger 1025 i32 1</pre>
+ </li>
+ <li>停用跟踪
+ <pre class="devsite-terminal devsite-click-to-copy">adb shell su root service call SurfaceFlinger 1025 i32 0</pre>
+ </li>
+ <li>抓取跟踪文件
+ <pre class="devsite-terminal devsite-click-to-copy">adb pull /data/misc/wmtrace/layers_trace.pb layers_trace.pb</pre>
+ </li>
+ </ol>
+
+ <h3 id="capture_trace_gen_state">生成状态转储文件</h3>
+ <p></p><p>WinScope 可以从错误报告读取窗口管理器和 Surface Flinger 当前状态的快照。错误报告将状态信息以单独的 Proto 文件的形式存储在 <code>proto</code> 文件夹中。要使用 ADB 生成状态转储文件,请运行以下命令。</p>
+ <h4 id="window_manager_dump">窗口管理器</h4>
+ <pre class="devsite-terminal devsite-click-to-copy">adb exec-out dumpsys window --proto &gt; window_dump.pb</pre>
+ <h4 id="surface_flinger_dump">Surface Flinger</h4>
+ <pre class="devsite-terminal devsite-click-to-copy">adb exec-out dumpsys SurfaceFlinger --proto &gt; sf_dump.pb</pre>
+ <p></p>
+
+ <h2 id="analyze_traces">分析跟踪记录</h2>
+ <p>要分析跟踪文件,请使用 WinScope 网络应用。您可以在源代码的基础上编译此应用,也可以从预编译目录中打开此应用。
+ </p>
+ <ol>
+ <li>从 Android 源代码代码库中下载预编译的软件工件
+ <pre class="devsite-terminal devsite-click-to-copy">curl 'https://android.googlesource.com/platform/prebuilts/misc/+/master/common/winscope/winscope.html?format=TEXT' | base64 -d &gt; winscope.html</pre>
+ </li>
+ <li>在网络浏览器打开已下载的软件工件</li>
+ <li>打开 WinScope 后,点击<b>打开文件</b>以加载跟踪文件</li>
+ </ol>
+
+ <h3 id="using_winscope">使用 WinScope</h3>
+ <p>在 WinScope 中打开跟踪文件后,您便可以通过多种方式对该文件进行分析。</p>
+ <img src="images/winscope_screenshot.png" alt="WinScope 屏幕截图"/>
+ <p><em>时间轴</em></p>
+ <p>您可以使用箭头键或点击各个条目以浏览时间轴。</p>
+ <p><em>屏幕</em></p>
+ <p>您可以在屏幕上直观地查看每个可见窗口。点击屏幕上的某个窗口即可选择层次结构中相应的源窗口。</p>
+ <p><em>层次结构</em></p>
+ <p>您可以通过层次结构查看系统已知的每个窗口。有些窗口不包含缓冲区,它们存在的目的在于为其子项设置政策。可见窗口均标有 <code>V</code> 图标。
+ </p>
+ <p><em>属性</em></p>
+ <p>您可以在属性中查看在层次结构中所选条目的状态信息。</p>
+
+ <h2 id="winscope_dev">开发 WinScope</h2>
+ <p>
+ 您启用跟踪后,窗口管理器和 Surface Flinger 会记录每个兴趣点的当前状态,并将状态信息保存在文件中。<code>frameworks/base/core/proto/android/server/windowmanagertrace.proto</code> 和 <code>frameworks/native/services/surfaceflinger/layerproto/layerstrace.proto</code> 包含其内部状态的 Proto 定义。
+ </p>
+ <h3 id="winscope_dev_checkout">检查代码和设置环境</h3>
+ <ol>
+ <li>安装 <a href="https://yarnpkg.com" class="external">Yarn</a>(一个 JS 软件包管理器)</li>
+ <li><a href="/setup/build/downloading.html">下载 Android 源代码</a></li>
+ <li>前往 <code>development/tools/winscope</code></li>
+ <li>运行<pre class="devsite-terminal devsite-click-to-copy">yarn install</pre></li>
+ </ol>
+ <h3 id="winscope_dev_build">编译和测试更改</h3>
+ <ol>
+ <li>前往 <code>development/tools/winscope</code></li>
+ <li>运行<pre class="devsite-terminal devsite-click-to-copy">yarn run dev</pre></li>
+ </ol>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/media/oem.html b/zh-cn/devices/media/oem.html
index 6038f5ad..108f13cb 100644
--- a/zh-cn/devices/media/oem.html
+++ b/zh-cn/devices/media/oem.html
@@ -98,7 +98,7 @@ following codecs' concurrent instances limit in /etc/media_codecs.xml:
<li>首先使用 cts-tradefed 运行测试。鉴于 Android 性能的波动性,建议多次运行测试以获得更准确的最小值和最大值。
</li><li>使用提供的 <a href="https://android.googlesource.com/platform/cts/+/master/tools/cts-media/get_achievable_rates.py">get_achievable_rates.py</a> 脚本生成 XML 文件。
</li><li>将 XML 文件放置在以下位置:<code>/etc/media_codecs_performance.xml</code><br />
-<em></em><em></em>为了完成此过程,您通常需要将 XML 文件放置在设备项目 (device/&lt;vendor&gt;/&lt;product&gt;) 中,并将 <code>PRODUCT_COPY_FILES</code> 行添加到 <code>device.mk</code> 中,如下所示:
+<em></em><em></em>为了完成此过程,您通常需要将 XML 文件放置在设备项目(device/&lt;供应商&gt;/&lt;产品&gt;)中,并将 <code>PRODUCT_COPY_FILES</code> 行添加到 <code>device.mk</code> 中,如下所示:
<pre class="devsite-click-to-copy">
PRODUCT_COPY_FILES += \
...
diff --git a/zh-cn/devices/sensors/batching.html b/zh-cn/devices/sensors/batching.html
index b5a3a6c5..c9915ced 100644
--- a/zh-cn/devices/sensors/batching.html
+++ b/zh-cn/devices/sensors/batching.html
@@ -68,7 +68,7 @@
在挂起模式下,<code>max_report_latency</code> 对非唤醒 FIFO 没有影响。</p>
<p>当唤醒 FIFO 存满时,或者当其中一个唤醒传感器的 <code>max_report_latency</code> 已过时,硬件必须唤醒 SoC 并报告数据。</p>
<p>在这两种情况下(唤醒和非唤醒),只要 SoC 退出挂起模式,即使一些传感器的 <code>max_report_latency</code> 未过,也会产生一个包含所有 FIFO 内容的批处理。这样可最大限度地降低 SoC 再次挂起而必须重新将其唤醒的风险。这进而可以最大限度地降低功耗。</p>
-<p>*不允许驱动程序持有唤醒锁定的一个明显例外情况是,在 <code>max_report_latency</code> 小于 1 秒的情况下启用带<a href="report-modes.html#continuous">连续报告模式</a>的唤醒传感器。在此情况下,驱动程序可以持有唤醒锁,这是因为 SoC 在进入挂起模式前会被唤醒事件唤醒,因此没有机会进入挂起模式。</p>
+<p>*不允许驱动程序将唤醒锁定暂停的一个明显例外情况是,在 <code>max_report_latency</code> 小于 1 秒的情况下启用处于<a href="report-modes.html#continuous">连续报告模式</a>的唤醒传感器。在此情况下,驱动程序可以持有唤醒锁,这是因为 SoC 在进入挂起模式前会被唤醒事件唤醒,因此没有机会进入挂起模式。</p>
<h2 id="precautions_to_take_when_batching_wake-up_sensors">批处理唤醒传感器时的注意事项</h2>
<p>根据设备不同,SoC 可能需要几毫秒才能完全退出挂起模式并开始刷新 FIFO。因此必须在 FIFO 中分配足够的头空间,才能让设备完全退出挂起状态,而不造成唤醒 FIFO 溢出。不得丢失任何事件,并且必须遵照 <code>max_report_latency</code>。</p>
<h2 id="precautions_to_take_when_batching_non-wake-up_on-change_sensors">批处理采用 On-change 触发方式的非唤醒传感器时的注意事项</h2>
@@ -123,6 +123,6 @@
<h3 id="medium-low_value_continuous_full-sensors_collection">中低值:连续全传感器采集</h3>
<p>目标批处理时间:1 到 10 分钟</p>
<p>待批处理的传感器:所有唤醒传感器(在高频下运行)</p>
-<p>允许在 SoC 处于挂起模式的情况下,完整收集传感器数据。只需考虑 FIFO 空间是否构成问题。</p>
+<p>允许在 SoC 处于挂起模式的情况下,完整收集传感器数据。仅当 FIFO 空间不构成问题时,才会考虑这种方式。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/sensors/power-use.html b/zh-cn/devices/sensors/power-use.html
index a4e97dc5..e7b8a022 100644
--- a/zh-cn/devices/sensors/power-use.html
+++ b/zh-cn/devices/sensors/power-use.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/sensors/sensor-stack.html b/zh-cn/devices/sensors/sensor-stack.html
index a20448fc..9acbac27 100644
--- a/zh-cn/devices/sensors/sensor-stack.html
+++ b/zh-cn/devices/sensors/sensor-stack.html
@@ -25,7 +25,7 @@
<p class="img-caption"><strong>图 1. </strong> Android 传感器堆栈层级以及各自的所有者</p>
<h2 id="sdk">SDK</h2>
-<p>应用通过 <a href="http://developer.android.com/reference/android/hardware/SensorManager.html">Sensors SDK(软件开发套件)API</a> 访问传感器。SDK 包含用以列示可用传感器和注册到传感器的函数。</p>
+<p>应用通过 <a href="http://developer.android.com/reference/android/hardware/SensorManager.html">Sensors SDK(软件开发套件)API</a> 访问传感器。SDK 包含用以列出可用传感器和注册到传感器的函数。</p>
<p>在注册到传感器时,应用可指定自己的首选采样率和延迟要求。</p>
<ul>
<li>例如,应用可注册到默认加速度计,以 100Hz 的频率请求事件,并允许事件报告有 1 秒延迟。</li>
@@ -33,25 +33,25 @@
</ul>
<p>请参阅<a href="index.html#targeted_at_developers">开发者文档</a>,详细了解 SDK。</p>
<h2 id="framework">框架</h2>
-<p>框架负责将多个应用关联到 <a href="hal-interface.html">HAL</a>。HAL 本身是单一客户端。如果框架级别没有发生这种多路复用,则在任何指定时间内只有一个应用可以访问各个传感器。</p>
+<p>框架负责将多个应用关联到 <a href="hal-interface.html">HAL</a>。HAL 本身是单一客户端。如果框架级别没有发生这种多路复用,则在任何指定时间内每个传感器都只能被一个应用访问。</p>
<ul>
<li>当第一个应用注册到传感器时,框架会向 HAL 发送请求以激活传感器。</li>
<li>当其他应用注册到相同的传感器时,框架会考虑每个应用的要求,并将更新的已请求参数发送到 HAL。<ul>
<li><a href="hal-interface.html#sampling_period_ns">采样率</a>将是请求的采样率的最大值,这意味着一些应用接收事件的频率会高于所请求的频率。</li>
- <li><a href="hal-interface.html#max_report_latency_ns">最大报告延迟</a>将是请求的延迟的最小值。如果某个应用以 0 为最大报告延迟请求传感器,则所有应用将以连续模式从该传感器接收事件,即使某些应用以非零值的最大报告延迟请求传感器也是如此。有关详情,请参阅<a href="batching.html">批处理</a>。</li>
+ <li><a href="hal-interface.html#max_report_latency_ns">最大报告延迟</a>将是请求的延迟的最小值。如果某个应用的最大报告延迟是 0,若它请求传感器,则所有应用将以连续模式从该传感器接收事件,即使某些应用请求传感器时的最大报告延迟不是 0 也是如此。有关详情,请参阅<a href="batching.html">批处理</a>。</li>
</ul>
</li>
<li>当注册到某个传感器的最后一个应用取消注册之后,框架会向 HAL 发送请求以停用该传感器,从而避免不必要的功耗。</li>
</ul>
<h3 id="impact_of_multiplexing">多路复用的影响</h3>
-<p>在框架中实现多路复用层的这一需求解释了一些设计决策。</p>
+<p>在框架中实现多路复用层的这一需求说明了一些设计决策的原因。</p>
<ul>
- <li>当应用请求特定采样率时,不能保证事件不会以更快的频率到达。如果另一个应用以更快的频率请求同一传感器,则第一个应用也将以较快频率接收事件。</li>
+ <li>当应用请求特定采样率时,不能保证事件不会以更快的频率到达。如果另一个应用以更快的频率请求同一传感器,则第一个应用也将以那个快的频率来接收事件。</li>
<li>请求的最大报告延迟同样无法得到保证:应用可能以比请求的延迟短的多的延迟接收事件。</li>
<li>除了采样率和最大报告延迟之外,应用还无法配置传感器参数。
<ul>
<li>例如,假设某个物理传感器可同时在“高精确度”和“低电耗”模式下运行。</li>
- <li>这两种模式中只有一种可以在 Android 设备上使用,因为否则一个应用可能请求高精确度模式,而另一个可能请求低电耗模式;框架根本无法同时满足这两个应用的要求。框架必须始终能够满足所有客户端的需要,因此同时使用两种模式是不可行的。</li>
+ <li>这两种模式中只有一种可以在 Android 设备上使用,因为若非如此,一个应用可能请求高精确度模式,而另一个可能请求低电耗模式,而框架根本无法同时满足这两个应用的要求。框架必须始终能够满足所有客户端的需要,因此同时使用两种模式是不可行的。</li>
</ul>
</li>
<li>没有将数据从应用向下发送至传感器或其驱动程序的机制。这样可以确保某个应用无法修改传感器的行为,从而不会对其他应用造成破坏。</li>
@@ -73,7 +73,7 @@
<p>接口由 Android 和 AOSP 贡献者定义,并由设备制造商提供实现。</p>
<p>传感器 HAL 接口位于 <code>hardware/libhardware/include/hardware</code> 中。有关详情,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a>。</p>
<h3 id="release_cycle">版本周期</h3>
-<p>HAL 实现通过设置 <code>your_poll_device.common.version</code> 指定实现的 HAL 接口版本。现有 HAL 接口版本在 sensors.h 中定义,相应功能与这些版本绑定在一起。</p>
+<p>HAL 实现通过设置 <code>your_poll_device.common.version</code> 指定实现的 HAL 接口版本。现有的 HAL 接口版本在 sensors.h 中有所定义,相应功能与这些版本绑定在一起。</p>
<p>Android 框架目前支持版本 1.0 和 1.3,不过版本 1.0 很快将不再受支持。本文档介绍了版本 1.3(所有设备均应升级到该版本)的行为。要详细了解如何升级到版本 1.3,请参阅 <a href="versioning.html">HAL 版本弃用</a>。</p>
<h2 id="kernel_driver">内核驱动程序</h2>
<p>传感器驱动程序可与物理设备进行交互。在某些情况下,HAL 实现和驱动程序是同一软件实体。在其他情况下,硬件集成者会要求传感器芯片制造商提供相应驱动程序,但是它们是用于编写 HAL 实现的驱动程序。</p>
diff --git a/zh-cn/devices/sensors/versioning.html b/zh-cn/devices/sensors/versioning.html
index 65fb903f..261259fa 100644
--- a/zh-cn/devices/sensors/versioning.html
+++ b/zh-cn/devices/sensors/versioning.html
@@ -109,7 +109,7 @@ SENSOR_FLAG_CONTINUOUS_MODE,
<p><code>SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ONE_SHOT_MODE</code> - <a href="/devices/sensors/report-modes.html#one-shot">单次模式</a>传感器</p>
-<p><code>SENSOR_FLAG_CONTINUOUS_MODE</code> - <a href="/devices/sensors/report-modes.html#continuous">连续模式</a>传感器;<code>SENSOR_FLAG_ON_CHANGE_MODE</code> - <a href="/devices/sensors/report-modes.html#on-change">变化模式</a>传感器(<a href="#proximity">近程</a>传感器除外);<code>SENSOR_FLAG_SPECIAL_REPORTING_MODE</code> - <a href="/devices/sensors/report-modes.html#special">特殊</a>报告模式传感器(<a href="/devices/sensors/sensor-types.html#tilt_detector">倾斜探测器</a>传感器除外)。</p>
+<p><code>SENSOR_FLAG_CONTINUOUS_MODE</code> - <a href="/devices/sensors/report-modes.html#continuous">连续模式</a>传感器;<code>SENSOR_FLAG_ON_CHANGE_MODE</code> - <a href="/devices/sensors/report-modes.html#on-change">变化模式</a>传感器(<a href="#proximity">近程</a>传感器除外);<code>SENSOR_FLAG_SPECIAL_REPORTING_MODE</code> - <a href="/devices/sensors/report-modes.html#special">特殊</a>报告模式传感器(<a href="/devices/sensors/sensor-types.html#tilt_detector">倾斜探测器</a>除外)。</p>
<p><code>SENSOR_FLAG_WAKE_UP | SENSOR_FLAG_ON_CHANGE_MODE</code> - <a href="/devices/sensors/sensor-types.html#proximity">近程</a>传感器和 Android 官方<a href="/devices/sensors/sensor-types.html#tilt_detector">倾斜探测器</a>传感器。</p>
diff --git a/zh-cn/devices/tech/config/filesystem.html b/zh-cn/devices/tech/config/filesystem.html
index f53bf504..cd7bc8be 100644
--- a/zh-cn/devices/tech/config/filesystem.html
+++ b/zh-cn/devices/tech/config/filesystem.html
@@ -292,8 +292,7 @@ caps: SYS_ADMIN | SYS_NICE
TARGET_FS_CONFIG_GEN += device/x/y/config.fs
</pre>
-<p>
- 当执行服务 <code><strong>vendor_</strong>foo</code> 时,它会先使用权能 <code>CAP_SYS_ADMIN</code> 和 <code>CAP_SYS_NICE</code>,而不使用 <code>setuid</code> 和 <code>setgid</code> 调用。此外,<code><strong>vendor_</strong>foo</code> 服务的 SELinux 策略也不再需要 <code>setuid</code> 和 <code>setgid</code> 权能,因此可以删除这些权能。
+<p>当执行服务 <code><strong>vendor_</strong>foo</code> 时,它会先使用权能 <code>CAP_SYS_ADMIN</code> 和 <code>CAP_SYS_NICE</code>,而不使用 <code>setuid</code> 和 <code>setgid</code> 调用。此外,<code><strong>vendor_</strong>foo</code> 服务的 SELinux 策略也不再需要 <code>setuid</code> 和 <code>setgid</code> 权能,因此可以删除这些权能。
</p>
<h2 id="older">配置替换(Android 6.x 到 7.x 版本)</h2>
diff --git a/zh-cn/devices/tech/config/update.html b/zh-cn/devices/tech/config/update.html
index 8a954ffe..b6ce2748 100644
--- a/zh-cn/devices/tech/config/update.html
+++ b/zh-cn/devices/tech/config/update.html
@@ -26,14 +26,8 @@
<p>要更新 APN 信息或 CarrierConfig,您需要使用与有效的公司电子邮件地址相关联的 Google 帐号提交请求(例如,来自 Acme Company 公司的 APN 更新请求应来自于 foobar@acme.com <em></em>之类的电子邮件地址)。</p>
<p>如果您没有与公司电子邮件地址相关联的 Google 帐号,请从浏览器中退出登录所有 Gmail 帐号(建议您使用无痕式窗口等无痕浏览功能,以免与其他帐号混淆),然后<a href="https://accounts.google.com/SignUpWithoutGmail?hl=zh-cn">使用您的公司电子邮件地址创建 Google 帐号</a>。</p>
-<!--<ol>-->
- <!--<li>Sign out of all gmail accounts from your browser. (We recommend you use a private browsing
- feature such as an incognito window to avoid confusion with your other accounts.)</li>-->
- <!--<li>Create a Google account with your corporate email address using:
- <a href="https://accounts.google.com/SignUpWithoutGmail?hl=zh-cn">
- https://accounts.google.com/SignUpWithoutGmail?hl=en</a></li>-->
-<!--</ol>-->
-<aside class="note"><strong>注意</strong>:请勿将任何 Gmail 帐号与这一新建的帐号相关联。</aside>
+
+<aside class="caution"><strong>注意</strong>:请勿将任何 Gmail 帐号与这一新建的帐号相关联。</aside>
<h2 id="local-environment">准备本地开发环境</h2>
@@ -71,7 +65,7 @@
<h2 id="submit-changes">提交更改</h2>
-<p>当您准备好进行更改时,请按以下步骤操作:</p>
+<p>要进行更改,请执行以下步骤:</p>
<ol>
<li>确定要更改的文件。</li>
<li>对相应的文件进行更改。</li>
diff --git a/zh-cn/devices/tech/connect/block-numbers.html b/zh-cn/devices/tech/connect/block-numbers.html
index 8fd38391..a9886c21 100644
--- a/zh-cn/devices/tech/connect/block-numbers.html
+++ b/zh-cn/devices/tech/connect/block-numbers.html
@@ -112,7 +112,7 @@ getContentResolver().delete(uri, null, null);
</p>
<p>
-如果设备在之前出厂时就具备了呼叫/短信限制功能,请调整相应功能,<em></em>以便所有严格匹配的被屏蔽电话号码都存储在 <code>BlockedNumberProvider,</code> 中,并且围绕该提供程序发生的行为也能满足 Android 兼容性定义文档 (CDD) 中针对此功能列出的要求。
+如果设备在之前出厂时就具备了呼叫/短信限制功能,请调整相应功能,<em></em>以便所有严格匹配的被屏蔽电话号码都存储在 <code>BlockedNumberProvider,</code> 中,并且围绕该提供程序发生的行为都满足 Android 兼容性定义文档 (CDD) 中针对此功能列出的要求。
</p>
<p>
@@ -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/carrier-wifi.html b/zh-cn/devices/tech/connect/carrier-wifi.html
index 52f4eddf..b1b94e40 100644
--- a/zh-cn/devices/tech/connect/carrier-wifi.html
+++ b/zh-cn/devices/tech/connect/carrier-wifi.html
@@ -22,7 +22,7 @@
limitations under the License.
-->
-<h1 id="carrier_wi_fi" class="page-title">运营商 WLAN</h1>
+<h1 id="carrier_wi-fi" class="page-title">运营商 WLAN</h1>
<p>运营商 WLAN 是 Android 9 中引入的一项功能,该功能可让设备自动连接到运营商实现的 WLAN 网络。在高度拥塞或信号覆盖范围较小的区域(如体育场或地铁站),运营商 WLAN 可用于改善用户的连接体验和分载流量。</p>
@@ -35,9 +35,27 @@
<p>在运营商配置管理器中,为每个运营商配置以下参数:</p>
<ul>
-<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1542">KEY_CARRIER_WIFI_STRING_ARRAY</a>:以 Base64 编码的 WLAN SSID。</li>
-<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1746">IMSI_KEY_AVAILABILITY_INT</a>:标识用于 IMSI 加密的密钥适用于 WLAN 还是 EPDG,或两者都适用。</li>
-<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1739">IMSI_KEY_DOWNLOAD_URL_STRING</a>:从中下载 proto(包含用于 IMSI 加密的运营商公钥)的网址。</li>
+<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1606" class="external"><code>KEY_CARRIER_WIFI_STRING_ARRAY</code></a>:一个字符串数组,其中各字符串条目是以 Base64 编码的 WLAN SSID 和 EAP 类型(中间由逗号隔开,EAP 类型是一个整数)(请参阅 <a href="https://www.iana.org/assignments/eap-numbers/eap-numbers.xhtml" class="external">https://www.iana.org/assignments/eap-numbers/eap-numbers.xhtml</a>)。例如,以下配置针对使用 <strong>EAP-AKA</strong> 的 SOME_SSID_NAME 和使用 <strong>EAP-SIM</strong> 的 Some_Other_SSID:<em></em><em></em></p>
+<pre class="prettyprint"><code>config {
+ key: "carrier_wifi_string_array"
+ text_array {
+ item: "U09NRV9TU0lEX05BTUUK,23"
+ item: "U29tZV9PdGhlcl9TU0lECg==,18"
+ }
+}
+</code></pre></li>
+<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1837" class="external"><code>IMSI_KEY_AVAILABILITY_INT</code></a>:标识用于 IMSI 加密的密钥是适用于 WLAN(设置位 1)还是 EPDG(设置位 0),或两者都适用(同时设置位 0 和位 1)。例如,以下配置指示 IMSI 加密适用于 WLAN,但不适用于 EPDG:</p>
+<pre class="prettyprint"><code>config {
+ key: "imsi_key_availability_int"
+ int_value: 2
+}
+</code></pre></li>
+<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#1830" class="external"><code>IMSI_KEY_DOWNLOAD_URL_STRING</code></a>:从中下载 proto(包含用于 IMSI 加密的运营商公钥)的网址。例如,以下配置提供了特定的网址:</p>
+<pre class="prettyprint"><code>config {
+ key: "imsi_key_download_url_string"
+ text_value: "https://www.some_company_name.com:5555/some_directory_name/"
+}
+</code></pre></li>
</ul>
<h3 id="carriers">运营商</h3>
diff --git a/zh-cn/devices/tech/connect/connect_tests.html b/zh-cn/devices/tech/connect/connect_tests.html
index 6a6c2803..aca43af2 100644
--- a/zh-cn/devices/tech/connect/connect_tests.html
+++ b/zh-cn/devices/tech/connect/connect_tests.html
@@ -42,11 +42,11 @@
<h3 id="script-native">原生脚本层</h3>
-<p><code><a href="https://android.googlesource.com/platform/packages/apps/Test/connectivity/"><platform>/packages/apps/Test/connectivity</platform></a></code> 中的<a href="https://android.googlesource.com/platform/packages/apps/Test/connectivity/+/master/sl4n/README.md">原生脚本层</a>是全新的内部发展型 RPC 服务器,用于公开 Android 的原生 API,并且所用方式与 Android 脚本层公开 Java API 的方式相同。该工具目前用于测试 Brillo,我们预计该项目将迅速扩展,以满足越来越重要的原生无线 API 的测试需求。</p>
+<p><code><a href="https://android.googlesource.com/platform/packages/apps/Test/connectivity/"><platform>/packages/apps/Test/connectivity</platform></a></code> 中的<a href="https://android.googlesource.com/platform/packages/apps/Test/connectivity/+/master/sl4n/README.md">原生脚本层</a>是全新的内部发展型 RPC 服务器,用于公开 Android 的原生 API,并且公开方式与 Android 脚本层公开 Java API 的方式相同。该工具目前用于测试 Brillo,我们预计该项目将迅速扩大,以满足越来越重要的原生无线 API 的测试需求。</p>
<h3 id="script-android">Android 通讯测试套件</h3>
-<p><code><a href="https://android.googlesource.com/platform/tools/test/connectivity/"><platform>/tools/test/connectivity</platform></a></code> 中的 <a href="https://android.googlesource.com/platform/tools/test/connectivity/+/master/acts/README.md">Android 通讯测试套件</a>是基于 Python 的轻量级自动化工具集,用于针对当前和即将推出的 Android 设备执行自动化测试。它提供了简洁的执行界面、一组用于访问衰减器等设备和 Android 设备的可插拔库,以及一些可进一步简化测试开发的实用函数。我们认为它是一种非常适合无线堆栈开发者或集成人员的桌面工具,无论他们是创建新的代码路径、执行基本的完整性测试,还是运行扩展的回归测试套件都没问题。</p>
+<p><code><a href="https://android.googlesource.com/platform/tools/test/connectivity/"><platform>/tools/test/connectivity</platform></a></code> 中的 <a href="https://android.googlesource.com/platform/tools/test/connectivity/+/master/acts/README.md">Android 通讯测试套件</a>是基于 Python 的轻量级自动化工具集,用于对当前的和即将推出的 Android 设备执行自动测试。它提供了简洁的执行界面、一组用于访问衰减器等设备和 Android 设备的可插拔库,以及一些可进一步简化测试开发的实用函数。我们认为它是一种非常适合无线堆栈开发者或集成人员的桌面工具,无论他们是创建新的代码路径、执行基本的完整性测试,还是运行扩展的回归测试套件都没问题。</p>
<p>本测试套件还包括一系列测试,很多测试在一台或两台具有 WLAN、移动网络或蓝牙连接的 Android 设备上即可运行,其中包括:</p>
@@ -61,6 +61,6 @@
<p>ACTS 测试并非认证套件,严格意义上来说,发布 Android 设备无需通过这些测试,但是,测试失败可能说明用户体验不佳。也就是说,如果测试失败,也无需感到失望。一些测试有意让您很难通过,其目的是帮助开发者推出高性能设备。</p>
-<p>ACTS 是一项相对较新的举措,并且来自开发社区的参与至关重要。如需添加测试、报告问题或提出问题,请在 <a href="https://code.google.com/p/android/issues/entry">Android 问题跟踪器</a>上使用连接性测试模板新开一个 Bug,以发起相关交流。</p>
+<p>ACTS 是一项相对较新的举措,并且来自开发社区的参与至关重要。如需添加测试、报告问题或提出问题,请在 <a href="https://code.google.com/p/android/issues/entry">Android 问题跟踪器</a>上使用连接测试模板打开一个 Bug,以发起相关交流。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/connect/data-plans.html b/zh-cn/devices/tech/connect/data-plans.html
index 09a065a8..04229c4c 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"><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 =
@@ -45,24 +45,24 @@ sm.setSubscriptionPlans(subId, Lists.newArrayList(
<p>只有当应用符合以下某项条件时,设备才允许其配置流量套餐:</p>
<ul>
-<li>SIM 卡已明确指定可对其进行管理的应用(如 <a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#canManageSubscription(android.telephony.SubscriptionInfo)"><code>SubscriptionManager.canManageSubscription()</code></a> 中所定义)。</li>
-<li>运营商已通过 <code>CarrierConfigManager</code> 推送 <a href="https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING"><code>KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING</code></a> 值,以指明可管理其流量套餐的应用。</li>
+<li>SIM 卡已明确指定可对其进行管理的应用(如 <a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#canManageSubscription(android.telephony.SubscriptionInfo)" class="external"><code>SubscriptionManager.canManageSubscription()</code></a> 中所定义)。</li>
+<li>运营商已通过 <code>CarrierConfigManager</code> 推送 <a href="https://developer.android.com/reference/android/telephony/CarrierConfigManager#KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING" class="external"><code>KEY_CONFIG_PLANS_PACKAGE_OVERRIDE_STRING</code></a> 值,以指明可管理其流量套餐的应用。</li>
<li>设备在系统映像中内置了一个具有 <code>MANAGE_SUBSCRIPTION_PLANS</code> 权限的应用。</li>
</ul>
<p>若符合前两个条件,则运营商应用可由用户直接安装,而无需在出厂前预安装在系统映像中。操作系统强制要求(且 CDD 要求)所有已配置的流量套餐详情一律受到保护,且仅供最初向操作系统提供相应详情的运营商应用使用。</p>
-<p>针对运营商应用的一项建议是,使用空闲维护服务以便每天更新流量套餐详情,但运营商可以自由选择使用各种机制(例如通过运营商内部短信来接收流量套餐详情)。建议通过使用 <a href="https://developer.android.com/reference/android/app/job/JobInfo.Builder#setRequiresDeviceIdle(boolean)"><code>setRequiresDeviceIdle()</code></a> 和 <a href="https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiresCharging(boolean)"><code>setRequiresCharging()</code></a> 的 <code>JobScheduler</code> 作业来实现空闲维护服务。</p>
+<p>针对运营商应用的一项建议是,使用空闲维护服务以便每天更新流量套餐详情,但运营商可以自由选择使用各种机制(例如通过运营商内部短信来接收流量套餐详情)。建议通过某项使用 <a href="https://developer.android.com/reference/android/app/job/JobInfo.Builder#setRequiresDeviceIdle(boolean)" class="external"><code>setRequiresDeviceIdle()</code></a> 和 <a href="https://developer.android.com/reference/android/app/job/JobInfo.Builder.html#setRequiresCharging(boolean)" class="external"><code>setRequiresCharging()</code></a> 的 <code>JobScheduler</code> 作业来实现空闲维护服务。</p>
<h2 id="usage_by_os">操作系统使用情况</h2>
<p>操作系统通过以下方式使用由 SubscriptionPlan API 提供的流量套餐详情:</p>
<ul>
-<li>通过“设置”应用来显示套餐详情,以向用户显示准确的流量用量数据,并提供<a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#ACTION_MANAGE_SUBSCRIPTION_PLANS">指向运营商应用的直接深层链接</a>以获得升级/追加销售的机会。</li>
+<li>通过“设置”应用来显示套餐详情,以向用户显示准确的流量用量数据,并提供<a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#ACTION_MANAGE_SUBSCRIPTION_PLANS" class="external">指向运营商应用的直接深层链接</a>以获得升级/追加销售的机会。</li>
<li>系统会根据套餐详情自动配置流量用量警告和上限通知阈值;用量达到上限的 90% 时便会发出警告提醒。</li>
-<li>如果运营商暂时提示网络<a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#setSubscriptionOverrideCongested(int, boolean, long)">“拥挤”</a>,操作系统将延迟可进行时移的 JobScheduler 作业,从而减少运营商网络的负载。</li>
-<li>如果运营商暂时提示网络<a href="https://developer.android.com/reference/android/telephony/SubscriptionManager#setSubscriptionOverrideUnmetered(int, boolean, long)">“不按流量计费”</a>,操作系统会将移动网络连接报告为“不按流量计费”,直到运营商清除替换内容或达到超时值(如果提供)。</li>
+<li>如果运营商暂时提示网络<a href="https://developer.android.com/reference/android/telephony/SubscriptionManager.html#setSubscriptionOverrideCongested(int,%20boolean,%20long)" class="external">“拥挤”</a>,操作系统将延迟可进行时移的 JobScheduler 作业,从而减少运营商网络的负载。</li>
+<li>如果运营商暂时提示网络<a href="https://developer.android.com/reference/android/telephony/SubscriptionManager#setSubscriptionOverrideUnmetered(int,%20boolean,%20long)" class="external">“不按流量计费”</a>,操作系统会将移动网络连接报告为“不按流量计费”,直到运营商清除替换内容或达到超时值(如果提供)。</li>
<li>通过将用户当前的流量用量与总体流量上限进行比较,操作系统会估算用户在结算周期结束时的正常流量用量,并适当分配 10% 的剩余流量以改善用户体验,例如让应用使用来自多个途径的流量。</li>
</ul>
diff --git a/zh-cn/devices/tech/connect/esim-euicc-api.html b/zh-cn/devices/tech/connect/esim-euicc-api.html
index 98c87a4f..60f3b370 100644
--- a/zh-cn/devices/tech/connect/esim-euicc-api.html
+++ b/zh-cn/devices/tech/connect/esim-euicc-api.html
@@ -28,7 +28,7 @@
<h2 id="about_euicc">eUICC 简介</h2>
-<p>运营商可以构建使用 EuiccManager 管理配置文件的运营商应用(如图 1 所示)。运营商应用不需要是系统应用,但需要拥有 eUICC 配置文件授予的运营商权限。<a href="/devices/tech/connect/esim-overview#making-an-lpa-app">LPA 应用</a>(LUI 和 LPA 后端)需要是系统应用(即包含在系统映像中)才能调用 @SystemApi。</p>
+<p>运营商可以构建使用 EuiccManager 管理配置文件的运营商应用(如图 1 所示)。运营商应用不需要是系统应用,但需要拥有 eUICC 配置文件授予的运营商权限。<a href="/devices/tech/connect/esim-overview#making_an_lpa_app">LPA 应用</a>(LUI 和 LPA 后端)需要是系统应用(即包含在系统映像中)才能调用 @SystemApi。</p>
<p><img src="/devices/tech/connect/images/carrier-oem-lpa.png" alt="安装了运营商应用和 OEM LPA 的 Android 手机"/></p>
@@ -56,12 +56,12 @@
<h3 id="apis">API</h3>
-<p>您可以在 <a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager"><code>EuiccManager</code> 参考文档</a>和 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccManager.java"><code>EuiccManager.java</code></a> 中找到以下 API。</p>
+<p>您可以在 <a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager" class="external"><code>EuiccManager</code> 参考文档</a>和 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccManager.java" class="external"><code>EuiccManager.java</code></a> 中找到以下 API。</p>
<h4 id="get_instance_public">获取实例(公共)</h4>
<p>通过 <code>Context#getSystemService</code> 获取 <code>EuiccManager</code> 的实例。</p>
-<pre class="prettyprint"><code>EuiccManager mgr = context.getSystemService(Context.EUICC_SERVICE);
+<pre class="prettyprint"><code>EuiccManager mgr = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
</code></pre>
<h4 id="check_enabled_public">检查启用情况(公共)</h4>
@@ -183,6 +183,6 @@ mgr.startResolutionActivity(getActivity(), 0 /* requestCode */, resultIntent, ca
</code></pre>
<h3 id="constants">常量</h3>
-<p>要查看 <code>EuiccManager</code> 中的 <code>public</code> 常量列表,请参阅<a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager#constants">常量</a>。</p>
+<p>要查看 <code>EuiccManager</code> 中的 <code>public</code> 常量列表,请参阅<a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager#constants" class="external">常量</a>。</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 2736f489..4ebdb08a 100644
--- a/zh-cn/devices/tech/connect/esim-modem-requirements.html
+++ b/zh-cn/devices/tech/connect/esim-modem-requirements.html
@@ -39,15 +39,15 @@
<h3 id="implement_setsimpower_api_in_radio_hal_v11">在 Radio HAL v1.1 中实现 setSimPower API</h3>
-<p>调制解调器应该支持 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.1/IRadio#setsimcardpower_1_1">setSimPower</a> API。</p>
+<p>调制解调器应该支持 <a href="/reference/hidl/android/hardware/radio/1.1/IRadio#setsimcardpower_1_1">setSimPower</a> API。</p>
<h3 id="implement_getsimslotsstatus_api_in_iradioconfig_hal_v10">在 IRadioConfig HAL v1.0 中实现 getSimSlotsStatus API</h3>
-<p>调制解调器应该支持 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/config/1.0/IRadioConfig.hal#51">getSimSlotsStatus</a> API,此 API 会指出插槽中是否有 eSIM 卡。</p>
+<p>调制解调器应该支持 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/config/1.0/IRadioConfig.hal#51" class="external">getSimSlotsStatus</a> API,此 API 会指出插槽中是否有 eSIM 卡。</p>
<h3 id="implement_geticccardstatus_api_in_iradio_hal_v12">在 IRadio HAL v1.2 中实现 getIccCardStatus API</h3>
-<p>调制解调器应提供在 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.0/IRadio#getIccCardStatus">getIccCardStatus</a> API 中指定的 ATR 和卡状态的插槽 ID。v1.0 中首次引入了此 API(名为 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/1.2/types.hal#341">CardStatus</a>),v1.2 中对此 API 进行了更改以包含 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/1.2/types.hal#351">ATR</a>。</p>
+<p>调制解调器应提供在 <a href="/reference/hidl/android/hardware/radio/1.0/IRadio#getIccCardStatus">getIccCardStatus</a> API 中指定的 ATR 和卡状态的插槽 ID。v1.0 中首次引入了此 API(名为 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/1.2/types.hal#341" class="external">CardStatus</a>),v1.2 中对此 API 进行了更改以包含 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/1.2/types.hal#351" class="external">ATR</a>。</p>
<h3 id="optional_support_esim_os_ota">(可选)支持 eSIM 卡操作系统 OTA</h3>
@@ -65,7 +65,7 @@
<p>日志记录应该支持捕获调试日志和协议层信息,包括协议层状态、无线装置功率测量、网络单元信息、数据包 TX/RX 统计信息、层间消息传递、处理器间通信、SIM 卡功能和 APDU 日志记录,以及 RIL 日志记录。</p>
-<h3 id="on_device_logging">设备上的日志记录</h3>
+<h3 id="on-device_logging">设备上的日志记录</h3>
<p>设备软件应该支持设备上的调制解调器日志捕获机制。</p>
diff --git a/zh-cn/devices/tech/connect/esim-overview.html b/zh-cn/devices/tech/connect/esim-overview.html
index d754bc6e..63914f74 100644
--- a/zh-cn/devices/tech/connect/esim-overview.html
+++ b/zh-cn/devices/tech/connect/esim-overview.html
@@ -32,11 +32,11 @@
<p><strong>图 1.</strong> 简化的远程 SIM 配置 (RSP) 架构</p>
-<p>有兴趣开发运营商应用的移动网络运营商可以参阅 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccManager.java">EuiccManager</a> 中的 API,其中介绍了高级配置文件管理操作(例如 <code>downloadSubscription()</code>、<code>switchToSubscription()</code> 和 <code>deleteSubscription()</code>)。<em></em></p>
+<p><em></em>有兴趣开发运营商应用的移动网络运营商可以参阅 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccManager.java" class="external">EuiccManager</a> 中的 API,其中介绍了高级配置文件管理操作(例如 <code>downloadSubscription()</code>、<code>switchToSubscription()</code> 和 <code>deleteSubscription()</code>)。</p>
-<p>如果您是有兴趣自行开发 LPA 系统应用的原始设备制造商 (OEM),那么您必须为 Android 框架扩展 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java">EuiccService</a> 以连接到您的 LPA 服务。此外,您还应使用 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccCardManager.java">EuiccCardManager</a> 中的 API,这些 API 提供了基于 GSMA 远程 SIM 配置 (RSP) v2.0 的 ES10x 函数。此类函数用于向 eUICC 芯片发出命令(例如 <code>prepareDownload()</code>、<code>loadBoundProfilePackage()</code>、<code>retrieveNotificationList()</code> 和 <code>resetMemory()</code>)。</p>
+<p>如果您是有兴趣自行开发 LPA 系统应用的原始设备制造商 (OEM),那么您必须为 Android 框架扩展 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java" class="external">EuiccService</a> 以连接到您的 LPA 服务。此外,您还应使用 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccCardManager.java" class="external">EuiccCardManager</a> 中的 API,这些 API 提供了基于 GSMA 远程 SIM 配置 (RSP) v2.0 的 ES10x 函数。此类函数用于向 eUICC 芯片发出命令(例如 <code>prepareDownload()</code>、<code>loadBoundProfilePackage()</code>、<code>retrieveNotificationList()</code> 和 <code>resetMemory()</code>)。</p>
-<p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccManager.java">EuiccManager</a> 中的 API 需要一个正确实现的 LPA 应用才能正常运行,且 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccCardManager.java">EuiccCardManager</a> API 的调用程序必须是 LPA。这是 Android 框架的强制要求。</p>
+<p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccManager.java" class="external">EuiccManager</a> 中的 API 需要一个正确实现的 LPA 应用才能正常运行,且 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/euicc/EuiccCardManager.java" class="external">EuiccCardManager</a> API 的调用程序必须是 LPA。这是 Android 框架的强制要求。</p>
<h2 id="making_a_carrier_app">开发运营商应用</h2>
@@ -47,7 +47,7 @@
<p><code>EuiccManager</code> 是应用与 LPA 交互的主入口点。这包括可下载、删除及切换到运营商所拥有的订阅的运营商应用。此外,这还包括 LUI 系统应用,该应用可提供用于管理所有嵌入式订阅的中心位置/界面,且可以是与提供 <code>EuiccService</code> 的应用不同的应用。<em></em></p>
<p>要使用公共 API,运营商应用必须先通过 <code>Context#getSystemService</code> 获取 <code>EuiccManager</code> 的实例:</p>
-<pre class="prettyprint"><code>EuiccManager mgr = context.getSystemService(Context.EUICC_SERVICE);
+<pre class="prettyprint"><code>EuiccManager mgr = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
</code></pre>
<p>在执行任何 eSIM 操作之前,您应检查设备是否支持 eSIM。如果系统已指定 android.hardware.telephony.euicc 功能且存在 LPA 软件包,<code>EuiccManager#isEnabled()</code> 通常会返回 true。</p>
<pre class="prettyprint"><code>boolean isEnabled = mgr.isEnabled();
@@ -132,9 +132,9 @@ mgr.switchToSubscription(1 /* subscriptionId */, callbackIntent);
<p>有时,系统无法完成 eSIM 操作,但用户可以直接解决由此导致的错误。例如,如果配置文件元数据提示需要运营商确认码,则 <code>downloadSubscription</code> 可能会失败。<em></em>或者,如果运营商应用具备目标配置文件的运营商权限(即运营商拥有该配置文件),但它不具备当前所启用配置文件的运营商权限(因此需要征得用户的同意),<code>switchToSubscription</code> 可能也会失败。</p>
-<p>在这些情况下,调用程序使用 <code>EuiccManager#EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR</code> 进行回调。回调 <code>Intent</code> 将包含内部 extra,以便在调用程序将其传递给 <a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager.html#startResolutionActivity(android.app.Activity, int, android.content.Intent, android.app.PendingIntent)"><code>EuiccManager#startResolutionActivity</code></a> 时,可以通过 LUI 请求解决问题。再次以确认码为例,<a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager.html#startResolutionActivity(android.app.Activity, int, android.content.Intent, android.app.PendingIntent)"><code>EuiccManager#startResolutionActivity</code></a> 会触发屏幕显示 LUI 来让用户输入确认码,输入完成后,下载操作即会恢复。这种方法使得运营商应用能够完全控制在何时显示该界面,同时也为 LPA/LUI 提供了一种扩展方法,用于在将来添加处理“用户可恢复问题”的新方法(无需客户端应用做出更改)。</p>
+<p>在这些情况下,调用程序使用 <code>EuiccManager#EMBEDDED_SUBSCRIPTION_RESULT_RESOLVABLE_ERROR</code> 进行回调。回调 <code>Intent</code> 将包含内部 extra,以便在调用程序将其传递给 <a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager.html#startResolutionActivity(android.app.Activity,%20int,%20android.content.Intent,%20android.app.PendingIntent)" class="external"><code>EuiccManager#startResolutionActivity</code></a> 时,可以通过 LUI 请求解决问题。再次以确认码为例,<a href="https://developer.android.com/reference/android/telephony/euicc/EuiccManager.html#startResolutionActivity(android.app.Activity,%20int,%20android.content.Intent,%20android.app.PendingIntent)" class="external"><code>EuiccManager#startResolutionActivity</code></a> 会触发屏幕显示 LUI 来让用户输入确认码,输入完成后,下载操作即会恢复。这种方法使得运营商应用能够完全控制在何时显示该界面,同时也为 LPA/LUI 提供了一种扩展方法,用于在将来添加处理“用户可恢复问题”的新方法(无需客户端应用做出更改)。</p>
-<p>Android 9 在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java"><code>EuiccService</code></a> 中定义了 LUI 应处理的上述可修正的错误:</p>
+<p>Android 9 在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java" class="external"><code>EuiccService</code></a> 中定义了 LUI 应处理的上述可修正的错误:</p>
<pre class="prettyprint"><code>/**
* Alert the user that this action will result in an active SIM being
* deactivated. To implement the LUI triggered by the system, you need to define
@@ -160,7 +160,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
<p>为确保某个配置文件仅供其所有者访问,Android 采用了一种机制向配置文件所有者的应用(即运营商应用)授予特殊权限。Android 平台会加载存储在配置文件的访问规则文件 (ARF) 中的证书,并向由这些证书签名的应用授予权限,以允许其调用 <code>EuiccManager</code> API。详细流程如下所述:</p>
<ol>
-<li>运营商签署运营商应用 APK;<a href="https://developer.android.com/studio/command-line/apksigner">apksigner</a> 工具将公钥证书附加到 APK。</li>
+<li>运营商签署运营商应用 APK;<a href="https://developer.android.com/studio/command-line/apksigner" class="external">apksigner</a> 工具将公钥证书附加到 APK。</li>
<li><p>运营商/SM-DP+ 准备配置文件及其元数据,其中的 ARF 包含以下内容:</p>
<ol>
@@ -185,7 +185,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
}
}
</code></pre>
-<p>要详细了解应用签名,请参阅<a href="https://developer.android.com/studio/publish/app-signing">为您的应用签名</a>。要详细了解运营商权限,请参阅 <a href="/devices/tech/config/uicc">UICC 运营商权限</a>。</p>
+<p>要详细了解应用签名,请参阅<a href="https://developer.android.com/studio/publish/app-signing" class="external">为您的应用签名</a>。要详细了解运营商权限,请参阅 <a href="/devices/tech/config/uicc">UICC 运营商权限</a>。</p>
<h2 id="making_an_lpa_app">开发 LPA 应用</h2>
@@ -193,7 +193,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
<h3 id="hardwaremodem_requirements">硬件/调制解调器要求</h3>
-<p>eUICC 芯片上的 LPA 和 eSIM 操作系统必须支持最低 2.0 或 2.2 版的 GSMA RSP(远程 SIM 配置)。您还应当安排使用具有与之匹配的 RSP 版本的 SM-DP+ 和 SM-DS 服务器。要详细了解 RSP 架构,请参阅 <a href="https://www.gsma.com/newsroom/all-documents/sgp-21-rsp-architecture-v2-2/">GSMA SGP.21 RSP 架构规范</a>。</p>
+<p>eUICC 芯片上的 LPA 和 eSIM 操作系统必须支持最低 2.0 或 2.2 版的 GSMA RSP(远程 SIM 配置)。您还应当安排使用具有与之匹配的 RSP 版本的 SM-DP+ 和 SM-DS 服务器。要详细了解 RSP 架构,请参阅 <a href="https://www.gsma.com/newsroom/all-documents/sgp-21-rsp-architecture-v2-2/" class="external">GSMA SGP.21 RSP 架构规范</a>。</p>
<p>此外,要与 Android 9 中的 eUICC API 集成,设备调制解调器应发送支持已编码的 eUICC 功能的终端功能(本地配置文件管理和配置文件下载)。它还需要实现以下 API:</p>
@@ -205,13 +205,13 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
<p>调制解调器应将已启用默认启动配置文件的 eSIM 卡识别为有效 SIM 卡,并使该 SIM 卡保持正常使用状态。</p>
-<p>有关调制解调器要求的完整列表,请参阅 <a href="/devices/tech/connect/esim-modem-reqs">eSIM 支持的调制解调器要求</a>。</p>
+<p>有关调制解调器要求的完整列表,请参阅 <a href="/devices/tech/connect/esim-modem-requirements">eSIM 支持的调制解调器要求</a>。</p>
<h3 id="euiccservice">EuiccService</h3>
<p>LPA 由两个独立的组件组成(可在同一 APK 中实现):LPA 后端和 LPA 界面或 LUI。</p>
-<p>要实现 LPA 后端,您必须扩展 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java"><code>EuiccService</code></a> 并在清单文件中声明此服务。该服务必须请求获得 <code>android.permission.BIND_EUICC_SERVICE</code> 系统权限,以确保只有该系统才能与之绑定。该服务还必须包含具有 <code>android.service.euicc.EuiccService</code> 操作的 intent 过滤器。如果设备上存在多个实现,则应将 intent 过滤器的优先级设置为非零值。例如:</p>
+<p>要实现 LPA 后端,您必须扩展 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java" class="external"><code>EuiccService</code></a> 并在清单文件中声明此服务。该服务必须请求获得 <code>android.permission.BIND_EUICC_SERVICE</code> 系统权限,以确保只有该系统才能与之绑定。该服务还必须包含具有 <code>android.service.euicc.EuiccService</code> 操作的 intent 过滤器。如果设备上存在多个实现,则应将 intent 过滤器的优先级设置为非零值。例如:</p>
<pre class="prettyprint"><code>&lt;service
android:name=".EuiccServiceImpl"
android:permission="android.permission.BIND_EUICC_SERVICE"&gt;
@@ -220,7 +220,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
&lt;/intent-filter&gt;
&lt;/service&gt;
</code></pre>
-<p>Android 框架从内部确定处于活跃状态的 LPA,并视需要与其交互以支持 Android eUICC API。系统会针对具有 <code>android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS</code> 权限的所有应用查询 <code>PackageManager</code>,而该权限为 <code>android.service.euicc.EuiccService</code> 操作指定了一项服务。系统将选择优先级最高的服务,如果未找到任何服务,则会停用 LPA 支持。</p>
+<p>Android 框架从内部确定处于活跃状态的 LPA,并视需要与其交互以支持 Android eUICC API。系统会查询 <code>PackageManager</code>(针对具有 <code>android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS</code> 权限的所有应用),而该权限为 <code>android.service.euicc.EuiccService</code> 操作指定了一项服务。系统将选择优先级最高的服务,如果未找到任何服务,则会停用 LPA 支持。</p>
<p>要实现 LUI,您必须为以下操作提供操作组件:</p>
@@ -229,7 +229,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
<li><code>android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION</code></li>
</ul>
-<p>与服务一样,每个操作组件都必须获得 <code>android.permission.BIND_EUICC_SERVICE</code> 系统权限,而且都应当包含具有适当操作的 intent 过滤器、<code>android.service.euicc.category.EUICC_UI</code> 类别以及非零优先级。选择这些操作组件的实现与选择 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java"><code>EuiccService</code></a> 实现所使用的逻辑是类似的。例如:</p>
+<p>与服务一样,每个操作组件都必须获得 <code>android.permission.BIND_EUICC_SERVICE</code> 系统权限,而且都应当包含具有适当操作的 intent 过滤器、<code>android.service.euicc.category.EUICC_UI</code> 类别以及非零优先级。选择这些操作组件的实现与选择 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java" class="external"><code>EuiccService</code></a> 实现所使用的逻辑是类似的。例如:</p>
<pre class="prettyprint"><code>&lt;activity android:name=".MyLuiActivity"
android:exported="true"
android:permission="android.permission.BIND_EUICC_SERVICE"&gt;
@@ -243,7 +243,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
&lt;/intent-filter&gt;
&lt;/activity&gt;
</code></pre>
-<p>这意味着,实现这些屏幕的界面的 APK 可以与实现 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java"><code>EuiccService</code></a> 的 APK 不同。使用单个 APK 还是多个 APK(例如一个用于实现 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java"><code>EuiccService</code></a>,另一个用于提供 LUI 操作组件)取决于设计时的选择。</p>
+<p>这意味着,实现这些屏幕的界面的 APK 可以与实现 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java" class="external"><code>EuiccService</code></a> 的 APK 不同。使用单个 APK 还是多个 APK(例如一个用于实现 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/service/euicc/EuiccService.java" class="external"><code>EuiccService</code></a>,另一个用于提供 LUI 操作组件)取决于设计时的选择。</p>
<h3 id="euicccardmanager">EuiccCardManager</h3>
@@ -257,7 +257,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
<p>通过 <code>EuiccCardManager</code> 实现的配置文件操作 API 要求调用程序是 LPA。这是 Android 框架的强制要求。这意味着调用程序必须扩展 <code>EuiccService</code> 并在清单文件中得以声明(如前几部分所述)。</p>
<p>与 <code>EuiccManager</code> 类似,要使用 <code>EuiccCardManager</code> API,您的 LPA 必须先通过 <code>Context#getSystemService</code> 获取 <code>EuiccCardManager</code> 的实例:</p>
-<pre class="prettyprint"><code>EuiccCardManager cardMgr = context.getSystemService(Context.EUICC_CARD_SERVICE);
+<pre class="prettyprint"><code>EuiccCardManager cardMgr = (EuiccCardManager) context.getSystemService(Context.EUICC_CARD_SERVICE);
</code></pre>
<p>接下来,要获取 eUICC 上的所有配置文件,请执行以下命令:</p>
<pre class="prettyprint"><code>ResultCallback&lt;EuiccProfileInfo[]&gt; callback =
@@ -275,7 +275,7 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
cardMgr.requestAllProfiles(eid, AsyncTask.THREAD_POOL_EXECUTOR, callback);
</code></pre>
-<p>在内部,<code>EuiccCardManager</code> 会通过 AIDL 接口绑定到 <code>EuiccCardController</code>(在电话进程中运行),而且每个 <code>EuiccCardManager</code> 方法均可以通过不同的专用 AIDL 接口从电话进程接收回调。使用 <code>EuiccCardManager</code> API 时,调用程序 (LPA) 必须通过所调用的回调提供 <a href="https://developer.android.com/reference/java/util/concurrent/Executor"><code>Executor</code></a>。该 <code>Executor</code> 可以在单个线程上运行,也可以在线程池上运行,具体取决于您的选择。</p>
+<p>在内部,<code>EuiccCardManager</code> 会通过 AIDL 接口绑定到 <code>EuiccCardController</code>(在电话进程中运行),而且每个 <code>EuiccCardManager</code> 方法均可以通过不同的专用 AIDL 接口从电话进程接收回调。使用 <code>EuiccCardManager</code> API 时,调用程序 (LPA) 必须通过所调用的回调提供 <a href="https://developer.android.com/reference/java/util/concurrent/Executor" class="external"><code>Executor</code></a>。该 <code>Executor</code> 可以在单个线程上运行,也可以在线程池上运行,具体取决于您的选择。</p>
<p>大多数 <code>EuiccCardManager</code> API 都具有相同的使用模式。例如,要将绑定的配置文件包加载到 eUICC,请执行以下命令:</p>
<pre class="prettyprint"><code>...
@@ -305,10 +305,10 @@ cardMgr.listNotifications(eid,
<p>您应该确保版本通过以下 CTS 测试用例(针对公共 API):</p>
-<p><a href="https://android.googlesource.com/platform/cts/+/master/tests/tests/telephony/src/android/telephony/">https://android.googlesource.com/platform/cts/+/master/tests/tests/telephony/src/android/telephony/</a></p>
+<p><a href="https://android.googlesource.com/platform/cts/+/master/tests/tests/telephony/src/android/telephony/euicc/cts" class="external">https://android.googlesource.com/platform/cts/+/master/tests/tests/telephony/src/android/telephony/</a> </p>
<p>实现运营商应用的运营商应该执行其常规的内部质量保证周期测试,以确保所有实现的功能都能正常运行。运营商应用至少应能够列出同一运营商拥有的所有订阅配置文件,下载并安装配置文件,激活配置文件上的服务,在配置文件之间切换以及删除配置文件。</p>
-<p>如果您目前正在开发自己的 LPA,则应进行更严格的测试。您应与调制解调器供应商、eUICC 芯片或 eSIM 操作系统供应商、SM-DP+ 供应商以及运营商进行合作,以解决相关问题并确保 LPA 在 RSP 架构中的互操作性。进行大量的手动测试是必不可少的。为获得最佳测试覆盖率,您应遵循 <a href="https://www.gsma.com/newsroom/all-documents/sgp-23-v1-2-rsp-test-specification/">GSMA SGP.23 RSP 测试计划</a>。</p>
+<p>如果您目前正在开发自己的 LPA,则应进行更严格的测试。您应与调制解调器供应商、eUICC 芯片或 eSIM 操作系统供应商、SM-DP+ 供应商以及运营商进行合作,以解决相关问题并确保 LPA 在 RSP 架构中的互操作性。进行大量的手动测试是必不可少的。为获得最佳测试覆盖率,您应遵循 <a href="https://www.gsma.com/newsroom/all-documents/sgp-23-v1-2-rsp-test-specification/" class="external">GSMA SGP.23 RSP 测试计划</a>。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/connect/ims.html b/zh-cn/devices/tech/connect/ims.html
index b1087a6c..b7fc3791 100644
--- a/zh-cn/devices/tech/connect/ims.html
+++ b/zh-cn/devices/tech/connect/ims.html
@@ -24,7 +24,7 @@
<h1 id="implementing_ims" class="page-title">实现 IMS</h1>
-<p>Android 9 引入了一个名为 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/ims/">ImsService</a> 的新 SystemApi 接口,可帮助您实现 IP 多媒体子系统 (IMS)。ImsService API 是 Android 平台与供应商(即运营商提供的 IMS 实现)之间明确定义的接口。</p>
+<p>Android 9 引入了一个名为 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/ims/" class="external">ImsService</a> 的新 SystemApi 接口,可帮助您实现 IP 多媒体子系统 (IMS)。ImsService API 是 Android 平台与供应商(即运营商提供的 IMS 实现)之间明确定义的接口。</p>
<p><img src="/devices/tech/connect/images/imsservice.png" alt="ImsService 概览" width/></p>
@@ -34,9 +34,9 @@
<h2 id="examples_and_source">示例和来源</h2>
-<p>为了便于进行测试和开发,Android 在 AOSP 中提供了一个应用,它可以实现 ImsService API 的某些部分。您可以在以下位置找到该应用:<a href="https://android.googlesource.com/platform/packages/services/Telephony/+/master/testapps/ImsTestService/">/testapps/ImsTestService</a>。</p>
+<p>为了便于进行测试和开发,Android 在 AOSP 中提供了一个应用,它可以实现 ImsService API 的某些部分。您可以在以下位置找到该应用:<a href="https://android.googlesource.com/platform/packages/services/Telephony/+/master/testapps/ImsTestService/" class="external">/testapps/ImsTestService</a>。</p>
-<p>您可以在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/ims/ImsService.java">ImsService</a> 和该 API 的其他类中找到关于 ImsService API 的文档。</p>
+<p>您可以在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/ims/ImsService.java" class="external">ImsService</a> 和该 API 的其他类中找到关于 ImsService API 的文档。</p>
<h2 id="implementation">实现</h2>
@@ -90,7 +90,7 @@
<h4 id="feature_mmtel">FEATURE_MMTEL</h4>
-<p><code>ImsService</code> 可实现 IMS MMTEL 功能,该功能包含对所有 IMS 媒体(IR.92 和 IR.94 规范)的支持(紧急连接到 IMS PDN 以进行紧急呼叫的情况除外)。任何希望支持 MMTEL 功能的 <code>ImsService</code> 实现都应该扩展 <code>android.telephony.ims.MmTelFeature</code> 基类,并在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/ims/ImsService.java#335"><code>ImsService#createMmTelFeature</code></a> 中返回自定义 <code>MmTelFeature</code> 实现。</p>
+<p><code>ImsService</code> 可实现 IMS MMTEL 功能,该功能包含对所有 IMS 媒体(IR.92 和 IR.94 规范)的支持(紧急连接到 IMS PDN 以进行紧急呼叫的情况除外)。任何希望支持 MMTEL 功能的 <code>ImsService</code> 实现都应该扩展 <code>android.telephony.ims.MmTelFeature</code> 基类,并在 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/ims/ImsService.java#335" class="external"><code>ImsService#createMmTelFeature</code></a> 中返回自定义 <code>MmTelFeature</code> 实现。</p>
<h4 id="feature_emergency_mmtel">FEATURE_EMERGENCY_MMTEL</h4>
@@ -113,8 +113,8 @@
<p>在 AndroidManifest.xml 中对 ImsService 进行正确定义后,必须将平台配置为适时(安全地)绑定到 ImsService。框架可绑定到以下两种 ImsService:</p>
<ol>
-<li>运营商“替换”ImsService:这类 ImsService 会预先加载到设备上,但与一个或多个手机运营商相关联,并且只有在插入匹配的 SIM 卡时才会绑定。该类型是使用 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#301"><code>key_config_ims_package_override</code></a> CarrierConfig 密钥配置的。</li>
-<li>设备“默认”ImsService:该类型是由原始设备制造商 (OEM) 加载到设备上的默认 ImsService。当运营商 ImsService 不可用时,它应该能够在任何情况下提供 IMS 服务。在设备没有插入 SIM 卡或插入的 SIM 卡没有安装运营商 ImsService 的情况下,这种 ImsService 非常有用。该类型是在设备叠加层 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml#2517"><code>config_ims_package</code></a> 密钥中进行定义的。</li>
+<li>运营商“替换”ImsService:这类 ImsService 会预先加载到设备上,但与一个或多个手机运营商相关联,并且只有在插入匹配的 SIM 卡时才会绑定。该类型是使用 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/CarrierConfigManager.java#309" class="external"><code>key_config_ims_package_override</code></a> CarrierConfig 密钥配置的。</li>
+<li>设备“默认”ImsService:该类型是由原始设备制造商 (OEM) 加载到设备上的默认 ImsService。当运营商 ImsService 不可用时,它应该能够在任何情况下提供 IMS 服务。在设备没有插入 SIM 卡或插入的 SIM 卡没有安装运营商 ImsService 的情况下,这种 ImsService 非常有用。该类型是在设备叠加层 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml#2705" class="external"><code>config_ims_package</code></a> 密钥中进行定义的。</li>
</ol>
<p>这两种类型的 ImsService 实现必须是系统应用,或必须驻留在 /system/priv-app/ 文件夹中,以授予相应的由用户授予的权限(即电话、麦克风、位置、相机和通讯录权限)。通过验证 IMS 实现的软件包名称是否与上文定义的 CarrierConfig 或设备叠加层值匹配,仅绑定受信任的应用。</p>
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 8db627bc..5871d7c1 100644
--- a/zh-cn/devices/tech/connect/third-party-call-apps.html
+++ b/zh-cn/devices/tech/connect/third-party-call-apps.html
@@ -22,17 +22,17 @@
limitations under the License.
-->
-<h1 id="supporting_third_party_calling_apps" class="page-title">支持第三方通话应用</h1>
+<h1 id="supporting_third-party_calling_apps" class="page-title">支持第三方通话应用</h1>
<p>Android 9 提供的 API 可更好地支持第三方通话应用。第三方通话应用通常借助电话 API(例如 <code>PHONE_STATE</code> 广播)与运营商通话共存。因此,第三方通话应用必须礼让运营商通话,而且通常会默默拒绝应用中的来电,或者终止正在进行的通话,以便为运营商通话“让路”。</p>
<p>Android 9 中的 API 支持在运行第三方应用的同时进行运营商通话。这使得在运营商通话过程中接听第三方来电成为可能。该框架要负责确保,在用户进行第三方应用通话时使运营商通话处于呼叫保持状态。</p>
-<p>在 Android 9 中,建议您使用第三方通话应用来实现自行管理的 <code>ConnectionService</code> API。要详细了解如何使用此 API 构建通话应用,请参阅<a href="https://developer.android.com/guide/topics/connectivity/telecom/selfManaged">构建通话应用</a>。</p>
+<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"><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"><code>CAPABILITY_SUPPORT_HOLD</code></a> 和 <a href="https://developer.android.com/reference/android/telecom/Connection.html#CAPABILITY_HOLD"><code>CAPABILITY_HOLD</code></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>
<h2 id="scenarios">场景</h2>
@@ -51,11 +51,11 @@
<figcaption><strong>图 1.</strong> 导致正在进行的第三方通话中断的来电</figcaption>
</figure>
-<p>您的拨号器应用可通过检查<a href="https://developer.android.com/reference/android/telecom/Call.Details.html#getExtras()">通话 extra</a> 来判断某个来电是否会导致其他通话中断。请务必将 <a href="https://developer.android.com/reference/android/telecom/Connection.html#EXTRA_ANSWERING_DROPS_FG_CALL"><code>EXTRA_ANSWERING_DROPS_FG_CALL</code></a> 设置为 <code>TRUE</code>,并将 <a href="https://developer.android.com/reference/android/telecom/Connection.html#EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME"><code>EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME</code></a> 设置为接听移动网络来电时其通话会被中断的应用的名称。</p>
+<p>您的拨号器应用可通过检查<a href="https://developer.android.com/reference/android/telecom/Call.Details.html#getExtras()" class="external">通话 extra</a> 来判断某个来电是否会导致其他通话中断。请务必将 <a href="https://developer.android.com/reference/android/telecom/Connection.html#EXTRA_ANSWERING_DROPS_FG_CALL" class="external"><code>EXTRA_ANSWERING_DROPS_FG_CALL</code></a> 设置为 <code>TRUE</code>,并将 <a href="https://developer.android.com/reference/android/telecom/Connection.html#EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME" class="external"><code>EXTRA_ANSWERING_DROPS_FG_CALL_APP_NAME</code></a> 设置为接听移动网络来电时其通话会被中断的应用的名称。</p>
<h3 id="call_log_entries_from_3p_calling_apps">源自第三方通话应用的通话记录条目</h3>
-<p>第三方通话应用的开发者可以选择让其应用中的通话记录显示在系统的通话记录中(请参阅 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount#EXTRA_LOG_SELF_MANAGED_CALLS"><code>EXTRA_LOG_SELF_MANAGED_CALLS</code></a>)。这意味着通话记录中可以包含有关非移动网络通话的条目。</p>
+<p>第三方通话应用的开发者可以选择使其应用中的通话记录显示在系统的通话记录中(请参阅 <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>)。这意味着通话记录中可以包含有关非移动网络通话的条目。</p>
<p>当 AOSP 拨号器应用显示与第三方通话应用相关的通话记录条目时,发生通话的应用的名称将显示在通话记录中,如下图所示:</p>
@@ -64,13 +64,14 @@
<figcaption><strong>图 2.</strong> 拨号器应用上显示的通话记录条目(包含第三方通话应用的名称)</figcaption>
</figure>
-<p>要确定与通话记录条目相关联的应用的名称,请使用通话记录提供程序中的 <a href="https://developer.android.com/reference/android/provider/CallLog.Calls.html#PHONE_ACCOUNT_COMPONENT_NAME"><code>PHONE_ACCOUNT_COMPONENT_NAME</code></a> 和 <a href="https://developer.android.com/reference/android/provider/CallLog.Calls.html#PHONE_ACCOUNT_ID"><code>PHONE_ACCOUNT_ID</code></a> 列创建一个 <a href="https://developer.android.com/reference/android/telecom/PhoneAccountHandle.html#PhoneAccountHandle(android.content.ComponentName, java.lang.String)"><code>PhoneAccountHandle</code></a> 实例,以用于识别通话记录条目的来源。查询 <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#getPhoneAccount(android.telecom.PhoneAccountHandle)"><code>TelecomManager</code></a> 以获取相应 PhoneAccount 的详细信息。<br />要确定某条通话记录条目是否源自第三方通话应用,请检查 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#getCapabilities()"><code>PhoneAccount</code> 功能</a>,查看是否已设置 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#CAPABILITY_SELF_MANAGED"><code>CAPABILITY_SELF_MANAGED</code></a>。</p>
+<p>要确定与通话记录条目相关联的应用的名称,请使用通话记录提供程序中的 <a href="https://developer.android.com/reference/android/provider/CallLog.Calls.html#PHONE_ACCOUNT_COMPONENT_NAME" class="external"><code>PHONE_ACCOUNT_COMPONENT_NAME</code></a> 和 <a href="https://developer.android.com/reference/android/provider/CallLog.Calls.html#PHONE_ACCOUNT_ID" class="external"><code>PHONE_ACCOUNT_ID</code></a> 列创建一个 <a href="https://developer.android.com/reference/android/telecom/PhoneAccountHandle.html#PhoneAccountHandle(android.content.ComponentName,%20java.lang.String)" class="external"><code>PhoneAccountHandle</code></a> 实例,以用于识别通话记录条目的来源。查询 <a href="https://developer.android.com/reference/android/telecom/TelecomManager.html#getPhoneAccount(android.telecom.PhoneAccountHandle)" class="external"><code>TelecomManager</code></a> 以获取相应 PhoneAccount 的详细信息。<br />
+要确定某条通话记录条目是否源自第三方通话应用,请检查 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#getCapabilities()" class="external"><code>PhoneAccount</code> 功能</a>,查看是否已设置 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#CAPABILITY_SELF_MANAGED" class="external"><code>CAPABILITY_SELF_MANAGED</code></a>。</p>
-<p>返回的 <code>PhoneAccount</code> 的 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#getLabel()"><code>getLabel</code></a> 方法将返回与相关通话记录条目(源自第三方通话应用)相关联的应用的名称。</p>
+<p>返回的 <code>PhoneAccount</code> 的 <a href="https://developer.android.com/reference/android/telecom/PhoneAccount.html#getLabel()" class="external"><code>getLabel</code></a> 方法将返回与相关通话记录条目(源自第三方通话应用)相关联的应用的名称。</p>
<h2 id="validation">验证</h2>
-<p>要测试您的设备是否支持第三方通话应用,请使用 Telecomm 测试应用,该应用可实现自行管理的 ConnectionService API。该应用位于 <a href="https://android.googlesource.com/platform/packages/services/Telecomm/+/master/testapps/"><code>/packages/services/Telecomm/testapps/</code></a> 中。</p>
+<p>要测试您的设备是否支持第三方通话应用,请使用 Telecomm 测试应用,该应用可实现自行管理的 ConnectionService API。该应用位于 <a href="https://android.googlesource.com/platform/packages/services/Telecomm/+/master/testapps/" class="external"><code>/packages/services/Telecomm/testapps/</code></a> 中。</p>
<ol>
<li><p>使用以下命令从 Android 源代码代码库的根目录构建测试应用:</p>
diff --git a/zh-cn/devices/tech/connect/wifi-aware.html b/zh-cn/devices/tech/connect/wifi-aware.html
index 8e6ca80f..4dcfe581 100644
--- a/zh-cn/devices/tech/connect/wifi-aware.html
+++ b/zh-cn/devices/tech/connect/wifi-aware.html
@@ -22,17 +22,17 @@
limitations under the License.
-->
-<h1 id="wi_fi_aware" class="page-title">WLAN 感知</h1>
+<h1 id="wi-fi_aware" class="page-title">WLAN 感知</h1>
-<p>通过 Android 8.0 中新增的 <a href="https://developer.android.com/guide/topics/connectivity/wifi-aware.html">WLAN 感知</a>功能,支持设备可以直接使用 WLAN 感知协议发现其他设备、与其他设备进行互连,以及将覆盖范围扩展到其他设备(Android 9 中新增的功能),而无需连接到互联网或移动网络。此功能是基于 <a href="https://www.wi-fi.org/">WLAN 联盟</a> (WFA) <a href="https://www.wi-fi.org/discover-wi-fi/wi-fi-aware">WLAN 感知规范</a>(2.0 版)构建的,它支持在断开网络的情况下,在可信设备与应用之间轻松共享高吞吐量数据。</p>
+<p>通过 Android 8.0 中新增的 <a href="https://developer.android.com/guide/topics/connectivity/wifi-aware.html" class="external">WLAN 感知</a>功能,支持设备可以直接使用 WLAN 感知协议发现其他设备、与其他设备进行互连,以及将覆盖范围扩展到其他设备(Android 9 中新增的功能),而无需连接到互联网或移动网络。此功能是基于 <a href="https://www.wi-fi.org/" class="external">WLAN 联盟</a> (WFA) <a href="https://www.wi-fi.org/discover-wi-fi/wi-fi-aware" class="external">WLAN 感知规范</a>(2.0 版)构建的,它支持在断开网络的情况下,在可信设备与应用之间轻松共享高吞吐量数据。</p>
<h2 id="examples_and_source">示例和来源</h2>
<p>要使用此功能,设备制造商应采用在 Android 开源项目 (AOSP) 中提供的 WLAN <a href="/devices/architecture/hidl">硬件接口设计语言 (HIDL)</a>。HIDL 取代了之前使用的<a href="/devices/architecture/hal">硬件抽象层 (HAL)</a> 结构,以便通过指定收集到接口和软件包的类型和方法调用来简化实现流程。</p>
-<p>借助 WLAN HIDL 使用 WLAN 感知功能:hardware/interfaces/wifi/1.2。WLAN 感知 HAL 表面非常大;<a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/wifi/">hardware/interfaces/wifi/1.2/README-NAN.md</a> 文件描述了框架当前使用的子集。</p>
+<p>借助 WLAN HIDL 使用 WLAN 感知功能:hardware/interfaces/wifi/1.2。WLAN 感知 HAL 表面非常大;<a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/wifi/1.2/README-NAN.md" class="external">hardware/interfaces/wifi/1.2/README-NAN.md</a> 文件描述了框架当前使用的子集。</p>
-<p>您可以参考旧版 WLAN HAL 来了解它与新 HIDL 接口之间的关系:<a href="https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_nan.h">hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_nan.h</a>。</p>
+<p>您可以参考旧版 WLAN HAL 来了解它与新 HIDL 接口之间的关系:<a href="https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_nan.h" class="external">hardware/libhardware_legacy/+/master/include/hardware_legacy/wifi_nan.h</a>。</p>
<h2 id="implementation">实现</h2>
diff --git a/zh-cn/devices/tech/connect/wifi-debug.html b/zh-cn/devices/tech/connect/wifi-debug.html
index af7d2c31..1cae3751 100644
--- a/zh-cn/devices/tech/connect/wifi-debug.html
+++ b/zh-cn/devices/tech/connect/wifi-debug.html
@@ -68,7 +68,7 @@
<h3 id="implementation">实现</h3>
-<p>有关参考实现,请参阅供应商 HAL 中的<a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/wifi/">默认实现</a>。</p>
+<p>有关参考实现,请参阅供应商 HAL 中的<a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/wifi/1.2/default/wifi_chip.cpp#1388" class="external">默认实现</a>。</p>
<p>您可以通过将资源 <code>config_wifi_enable_wifi_firmware_debugging</code> 设置为 false 来停用固件日志记录。</p>
@@ -80,12 +80,12 @@
<h3 id="manual_test">手动测试</h3>
-<p>运行以下手动测试,以验证 <a href="https://source.android.com/devices/tech/debug/#debuggerd">tombstone 目录</a>中的旧文件是否已被删除。</p>
+<p>运行以下手动测试,以验证 <a href="/devices/tech/debug/#debuggerd">tombstone 目录</a>中的旧文件是否已被删除。</p>
<ol>
<li>开启 WLAN。</li>
<li>连接到网络。</li>
-<li>生成<a href="setup/contribute/read-bug-reports">错误报告</a>。</li>
+<li>生成<a href="/setup/contribute/read-bug-reports">错误报告</a>。</li>
<li>检查 bugreport zip 文件并验证 <code>/lshal-debug/android.hardware.wifi@1.2__IWifi_default.txt</code> 中是否包含已归档的固件日志。</li>
</ol>
diff --git a/zh-cn/devices/tech/connect/wifi-hal.html b/zh-cn/devices/tech/connect/wifi-hal.html
index be4be71d..a8f31f2a 100644
--- a/zh-cn/devices/tech/connect/wifi-hal.html
+++ b/zh-cn/devices/tech/connect/wifi-hal.html
@@ -21,7 +21,7 @@
limitations under the License.
-->
-<h1 id="wi_fi_hal" class="page-title">WLAN HAL</h1>
+<h1 id="wi-fi_hal" class="page-title">WLAN HAL</h1>
<p>WLAN 框架具有三个 WLAN HAL 表面,分别由三个不同的 HIDL 软件包表示:</p>
@@ -33,7 +33,7 @@
<h2 id="vendor_hal">供应商 HAL</h2>
-<p>供应商 HAL 提供 Android 专用命令。供应商 HAL 对于基础架构 Station (STA) 和 Soft AP (SAP) 模式的正常运行而言是可选的(不是必需的)。不过,对于 <a href="/devices/tech/connect/wifi-aware">WLAN 感知</a>和 <a href="/devices/tech/connect/wifi-rtt">WLAN RTT</a> 服务而言,供应商 HAL 是必需的。</p>
+<p>供应商 HAL 提供 Android 专用命令。供应商 HAL 对于基础架构 Station (STA) 和 Soft AP (SAP) 模式的正常运行而言是可选的(不是必需的)。不过,对于 <a href="/devices/tech/connect/wifi-aware">WLAN 感知</a>和 <a href="/devices/tech/connect/wifi-rtt">WLAN RTT</a> 服务而言,供应商 HAL 是必要 HAL。</p>
<p>在 HIDL 之前(即 Android 8.0 版本之前),Android 使用的是现在称为“旧版 HAL”的 HAL 机制。<em></em>Android 源代码目前使用在旧版 HAL 之上运行的 shim 来提供 HIDL 默认实现。</p>
@@ -51,9 +51,9 @@
<p>hostapd 源代码位于 <code>external/wpa_supplicant_8/hostapd</code> 中。提供 HIDL 接口的 hostapd 代码位于 <code>hidl</code> 子目录中。</p>
-<h2 id="wi_fi_multi_interface_concurrency">WLAN 多接口并发</h2>
+<h2 id="wi-fi_multi-interface_concurrency">WLAN 多接口并发</h2>
-<p>不同的 Android 设备可以并行支持不同的 WLAN 接口组合。受支持的组合在 HAL 中定义,并提供给框架。规范格式在 <code>android/hardware/interfaces/wifi/1.0/IWifiChip.hal</code> 中定义。例如,一台设备可以支持一个 STA 和一个 NAN(<a href="https://developer.android.com/guide/topics/connectivity/wifi-aware">WLAN 感知</a>)类型或点对点(<a href="https://developer.android.com/guide/topics/connectivity/wifip2p">WLAN 直连</a>)类型的接口(但不能同时支持这两种接口)。这可以表示为:</p>
+<p>不同的 Android 设备可以并行支持不同的 WLAN 接口组合。受支持的组合在 HAL 中定义,并提供给框架。规范格式在 <code>android/hardware/interfaces/wifi/1.0/IWifiChip.hal</code> 中定义。例如,一台设备可以支持一个 STA 和一个 NAN(<a href="https://developer.android.com/guide/topics/connectivity/wifi-aware" class="external">WLAN 感知</a>)类型或点对点(<a href="https://developer.android.com/guide/topics/connectivity/wifip2p" class="external">WLAN 直连</a>)类型的接口(但不能同时支持这两种接口)。这可以表示为:</p>
<p><code>[{STA} &lt;= 1, {NAN,P2P} &lt;= 1]</code></p>
diff --git a/zh-cn/devices/tech/connect/wifi-overview.html b/zh-cn/devices/tech/connect/wifi-overview.html
index b2ea569a..d5b3aed8 100644
--- a/zh-cn/devices/tech/connect/wifi-overview.html
+++ b/zh-cn/devices/tech/connect/wifi-overview.html
@@ -42,9 +42,9 @@
<h2 id="application_framework">应用框架</h2>
-<p>应用代码位于应用框架级别,它使用各种 <a href="https://developer.android.com/reference/android/net/wifi/package-summary">android.net.wifi</a> API 与 WLAN 框架和硬件进行交互。此代码在内部通过 Binder IPC 机制调用 WLAN 进程。</p>
+<p>应用代码位于应用框架级别,它使用各种 <a href="https://developer.android.com/reference/android/net/wifi/package-summary" class="external">android.net.wifi</a> API 与 WLAN 框架和硬件进行交互。此代码在内部通过 Binder IPC 机制调用 WLAN 进程。</p>
-<h2 id="wi_fi_services">WLAN 服务</h2>
+<h2 id="wi-fi_services">WLAN 服务</h2>
<p>WLAN 服务在系统服务中运行,这类服务位于 <code>frameworks/opt/net/wifi</code> 中。WLAN 服务通过 HIDL 与 WLAN HAL 进行通信。</p>
@@ -59,7 +59,7 @@
<p>此外,WLAN 框架还包括一个独立的进程 <strong>wificond</strong>,此进程位于 <code>system/connectivity/wificond</code> 中。<strong>wificond</strong> 进程通过标准 <code>nl80211</code> 命令与 WLAN 驱动程序进行通信。</p>
-<h2 id="wi_fi_hals">WLAN HAL</h2>
+<h2 id="wi-fi_hals">WLAN HAL</h2>
<p>WLAN 框架具有三个 WLAN HAL 表面,分别由三个不同的 HIDL 软件包表示:供应商 HAL、客户端 HAL 和 Hostapd HAL。</p>
diff --git a/zh-cn/devices/tech/connect/wifi-rtt.html b/zh-cn/devices/tech/connect/wifi-rtt.html
index 504d9d6d..fe62da2e 100644
--- a/zh-cn/devices/tech/connect/wifi-rtt.html
+++ b/zh-cn/devices/tech/connect/wifi-rtt.html
@@ -22,9 +22,9 @@
limitations under the License.
-->
-<h1 id="wi_fi_rtt_ieee_80211mc" class="page-title">WLAN RTT (IEEE 802.11mc)</h1>
+<h1 id="wi-fi_rtt_ieee_80211mc" class="page-title">WLAN RTT (IEEE 802.11mc)</h1>
-<p>Android 9 中的 <a href="https://developer.android.com/reference/android/net/wifi/rtt/package-summary">WLAN 往返时间 (RTT)</a> 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 WLAN 感知对等设备(如果设备支持 <a href="/devices/tech/connect/wifi-aware">WLAN 感知</a>)。此功能基于 IEEE 802.11mc 协议,使应用能够使用准确性更高的定位功能和增强的感知功能。</p>
+<p>Android 9 中的 <a href="https://developer.android.com/guide/topics/connectivity/wifi-rtt" class="external">WLAN 往返时间 (RTT)</a> 功能允许设备测量与其他支持设备的距离:无论它们是接入点 (AP) 还是 WLAN 感知对等设备(如果设备支持 <a href="/devices/tech/connect/wifi-aware">WLAN 感知</a>)。此功能基于 IEEE 802.11mc 协议,使应用能够使用准确性更高的定位功能和增强的感知功能。</p>
<h2 id="examples_and_source">示例和来源</h2>
@@ -32,7 +32,7 @@
<p>借助 WLAN HIDL 使用 WLAN RTT 功能:<code>hardware/interfaces/wifi/1.0</code> 或更高版本。</p>
-<p>您可以参考旧版 WLAN HAL 来了解它与新 HIDL 接口之间的关系:<a href="https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master/include/hardware_legacy/rtt.h">hardware/libhardware_legacy/+/master/include/hardware_legacy/rtt.h</a>。</p>
+<p>您可以参考旧版 WLAN HAL 来了解它与新 HIDL 接口之间的关系:<a href="https://android.googlesource.com/platform/hardware/libhardware_legacy/+/master/include/hardware_legacy/rtt.h" class="external">hardware/libhardware_legacy/+/master/include/hardware_legacy/rtt.h</a>。</p>
<h2 id="implementation">实现</h2>
@@ -64,7 +64,7 @@
<h2 id="validation">验证</h2>
-<p>这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测何时启用了这项功能,并会自动包含相关测试。您也可以使用<a href="/devices/tech/test_infra/tradefed/fundamentals/vts">供应商测试套件 (VTS)</a> 和 <a href="https://android.googlesource.com/platform/tools/test/connectivity/+/master/acts/tests/google/wifi/">acts/sl4a</a>(用于执行扩展程序集成测试的测试套件)来测试此功能。</p>
+<p>这项功能有适用的 Android 兼容性测试套件 (CTS) 测试。CTS 会检测何时启用了这项功能,并会自动包含相关测试。您也可以使用<a href="/devices/tech/test_infra/tradefed/fundamentals/vts">供应商测试套件 (VTS)</a> 和 <a href="https://android.googlesource.com/platform/tools/test/connectivity/+/master/acts/tests/google/wifi/" class="external">acts/sl4a</a>(用于执行扩展程序集成测试的测试套件)来测试此功能。</p>
<h3 id="unit_tests">单元测试</h3>
diff --git a/zh-cn/devices/tech/connect/wifi-sta-ap-concurrency.html b/zh-cn/devices/tech/connect/wifi-sta-ap-concurrency.html
index 0b28ca5f..a46201c6 100644
--- a/zh-cn/devices/tech/connect/wifi-sta-ap-concurrency.html
+++ b/zh-cn/devices/tech/connect/wifi-sta-ap-concurrency.html
@@ -22,7 +22,7 @@
limitations under the License.
-->
-<h1 id="wi_fi_staap_concurrency" class="page-title">WLAN STA/AP 并发</h1>
+<h1 id="wi-fi_staap_concurrency" class="page-title">WLAN STA/AP 并发</h1>
<p>Android 9 引入了可让设备同时在 STA 和 AP 模式下运行的功能。对于支持双频并发 (DBS) 的设备,此功能让一些新功能得以实现,例如在用户想要启用热点 (softAP) 时不会中断 STA WLAN。</p>
diff --git a/zh-cn/devices/tech/dalvik/improvements.html b/zh-cn/devices/tech/dalvik/improvements.html
index 141027de..9a7e8f22 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>bang JNI 注解。</em>注解对非原生方法没有任何影响,并且仅适用于 <code>bootclasspath</code> 上的平台 Java 语言代码(无 Play 商店更新)。
</p>
<p>
diff --git a/zh-cn/devices/tech/debug/gdb.html b/zh-cn/devices/tech/debug/gdb.html
index 7ef38676..67e0e5ac 100644
--- a/zh-cn/devices/tech/debug/gdb.html
+++ b/zh-cn/devices/tech/debug/gdb.html
@@ -32,19 +32,25 @@ 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 及更低版本中,该脚本是一个名为 <code>gdbclient</code> 的 Shell 脚本,而不是名为 <code>gdbclient.py</code> 的 Python 脚本。</aside>
<h2 id="starts">调试本机进程启动</h2>
-<p>要在进程启动时对其进行调试,请使用 <code>gdbserver</code> 或 <code>gdbserver64</code>(适用于 64 位进程)。例如:</p>
+<p>要在进程启动时对其进行调试,请使用 <code>gdbserver</code> 或 <code>gdbserver64</code>。对于 64 位可执行文件:</p>
<pre class="devsite-terminal devsite-click-to-copy">
-adb shell gdbserver :5039 /system/bin/<var>MY_TEST_APP</var>
+adb shell gdbserver64 :5039 /system/bin/<var>MY_TEST_64_BIT_APP</var>
+</pre>
+
+<p>对于 32 位可执行文件:</p>
+
+<pre class="devsite-terminal devsite-click-to-copy">
+adb shell gdbserver :5039 /system/bin/<var>MY_TEST_32_BIT_APP</var>
</pre>
<p>输出示例:</p>
<pre class="devsite-click-to-copy">
-Process <var>MY_TEST_APP</var> created; pid = 3460
+Process <var>MY_TEST_64_BIT_APP</var> created; pid = 3460
Listening on port 5039
</pre>
@@ -102,7 +108,7 @@ gdbclient.py -p <var>PID</var>
<h2 id="symbols">无符号调试</h2>
-<p>对于 32 位 ARM,如果您的指令中没有符号,<code>gdb</code> 就不清楚自己正在反汇编哪个指令集(ARM 或 Thumb)。要指定缺少符号信息时选为默认指令集的指令集,请设置以下属性:</p>
+<p>对于 32 位 ARM,如果您的指令中没有符号,<code>gdb</code> 就不清楚自己正在反汇编哪个指令集(ARM 或 Thumb)。要指定缺少符号信息时选用的默认指令集,请设置以下属性:</p>
<pre class="devsite-terminal devsite-click-to-copy">
set arm fallback-mode arm # or thumb
diff --git a/zh-cn/devices/tech/debug/index.html b/zh-cn/devices/tech/debug/index.html
index 19584ac4..2fd55911 100644
--- a/zh-cn/devices/tech/debug/index.html
+++ b/zh-cn/devices/tech/debug/index.html
@@ -22,9 +22,9 @@
<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">内存</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>
+<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">内存</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>
<h2 id="debuggerd">崩溃转储</h2>
diff --git a/zh-cn/devices/tech/debug/sanitizers.html b/zh-cn/devices/tech/debug/sanitizers.html
index da390a94..6568f93c 100644
--- a/zh-cn/devices/tech/debug/sanitizers.html
+++ b/zh-cn/devices/tech/debug/sanitizers.html
@@ -37,7 +37,7 @@ Android 编译版本最好在启用排错程序(如 AddressSanitizer 和 Undef
<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>。
+Android 允许在完整编译级别和在<a href="/devices/tech/debug/asan#addresssanitizer_in_the_apps">应用级别</a>通过 asanwrapper 进行 <a href="/devices/tech/debug/asan">ASan 插桩</a>。
</p>
<p>
AddressSanitizer 对所有与内存相关的函数调用(包括 alloca、malloc 和 free)进行插桩,并使用被读取或写入时会触发 ASan 回调的内存填充所有变量和已分配的内存区域。
diff --git a/zh-cn/devices/tech/display/display-cutouts.html b/zh-cn/devices/tech/display/display-cutouts.html
index 3dfe0fc6..3f2f7960 100644
--- a/zh-cn/devices/tech/display/display-cutouts.html
+++ b/zh-cn/devices/tech/display/display-cutouts.html
@@ -41,7 +41,7 @@
<h2 id="examples_and_source">示例和来源</h2>
-<p>以下窗口管理器代码 (<a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/policy/PhoneWindowManager.java">frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java</a>) 显示了如何在未设置 <code>LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS</code> 的情况下将显示屏框架嵌入安全区域。</p>
+<p>以下窗口管理器代码 (<a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/policy/PhoneWindowManager.java" class="external">PhoneWindowManager.java</a>) 显示了如何在未设置 <code>LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS</code> 的情况下将显示屏框架嵌入安全区域。</p>
<pre class="prettyprint lang-java"><code>// Ensure that windows with a DEFAULT or NEVER display cutout mode are laid out in
// the cutout safe zone.
if (cutoutMode != LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS) {
@@ -90,7 +90,7 @@ if (cutoutMode != LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS) {
}
</code></pre>
<p>SystemUI 在刘海屏区域呈现,且需要确定可以绘制的位置。
-<a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java">frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java</a> 提供了一个视图示例,它确定了刘海屏的位置、刘海屏大小,以及从导航栏嵌入是否可以避开刘海屏区域。</p>
+<a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java" class="external">PhoneStatusBarView.java</a> 提供了一个视图示例,它确定了刘海屏的位置、刘海屏大小,以及从导航栏嵌入是否可以避开刘海屏区域。</p>
<p>通过覆盖 <code>onApplyWindowInsets()</code>,视图可以确定刘海屏的位置,并相应地更新其布局。</p>
<pre class="prettyprint lang-java"><code>@Override
@@ -115,7 +115,7 @@ if (cutoutMode != LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS) {
<p>您的设备最多可以在每个短边处(顶部和底部)各设一个刘海屏。</p>
-<p>有关详情,请参阅 <a href="/compatibility/android-cdd">CDD</a>。</p>
+<p>有关详情,请参阅 <a href="/compatibility/android-cdd#3_8_15_display_cutout">CDD</a>。</p>
<aside class="note"><strong>注意</strong>:<span>对于面向 Android 8.0 或更低版本的应用,您可以为用户提供一个可使全屏或横屏应用延伸至刘海屏区域的选项(例如导航栏中的切换开关)。由于这样做可能会导致内容被切断,因此 <code>layoutInDisplayCutoutMode</code> 活动主题属性已反向移植到 Android 8.1,以允许应用选择停用该选项。如果您设置了该属性,则可能无法显示特殊的模式切换开关。</span></aside>
<h2 id="implementation">实现</h2>
@@ -184,8 +184,8 @@ config_fillMainBuiltinDisplayCutout
<p>有关默认定义,请参阅以下 <code>dimens</code> 文件:</p>
<ul>
-<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values-land/dimens.xml"><code>core/res/res/values-land/dimens.xml</code></a></li>
-<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/dimens.xml"><code>core/res/res/values/dimens.xml</code></a></li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values-land/dimens.xml" class="external"><code>core/res/res/values-land/dimens.xml</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/dimens.xml" class="external"><code>core/res/res/values/dimens.xml</code></a> </li>
</ul>
<p>模拟刘海屏的示例叠加层:</p>
@@ -232,6 +232,6 @@ config_fillMainBuiltinDisplayCutout
</code></pre>
<h2 id="validation">验证</h2>
-<p>要验证刘海屏的实现,请在以下位置运行 CTS 测试:<a href="https://android.googlesource.com/platform/cts/+/master/tests/">tests/framework/base/windowmanager/src/android/server/wm</a>。</p>
+<p>要验证刘海屏的实现,请在以下位置运行 CTS 测试:<a href="https://android.googlesource.com/platform/cts/+/master/tests/framework/base/windowmanager/src/android/server/wm" class="external">tests/framework/base/windowmanager/src/android/server/wm</a>。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/display/synched-app-transitions.html b/zh-cn/devices/tech/display/synched-app-transitions.html
index 2f0ef2af..0c9b12e0 100644
--- a/zh-cn/devices/tech/display/synched-app-transitions.html
+++ b/zh-cn/devices/tech/display/synched-app-transitions.html
@@ -33,13 +33,13 @@
<p>请参阅以下参考来了解这项功能。</p>
<ul>
-<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ActivityOptions.java"><code>ActivityOptions.makeRemoteAnimation</code></a></p></li>
-<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/"><code>RemoteAnimationAdapter</code></a></p></li>
-<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/"><code>RemoteAnimationRunner</code></a></p></li>
-<li><p><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/Activity.java#7869"><code>Activity.registerRemoteAnimations</code></a></p></li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/ActivityOptions.java#844" class="external"><code>ActivityOptions.makeRemoteAnimation</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/RemoteAnimationAdapter.java" class="external"><code>RemoteAnimationAdapter</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/IRemoteAnimationRunner.aidl" class="external"><code>RemoteAnimationRunner</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/app/Activity.java#7869" class="external"><code>Activity.registerRemoteAnimations</code></a> </li>
</ul>
-<p>有关通知启动动画的参考实现,请参阅 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/statusbar/notification/"><code>ActivityLaunchAnimator.java</code></a>。</p>
+<p>有关通知启动动画的参考实现,请参阅 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/src/com/android/systemui/statusbar/notification/ActivityLaunchAnimator.java" class="external"><code>ActivityLaunchAnimator.java</code></a>。</p>
<h2 id="implementation">实现</h2>
@@ -47,6 +47,6 @@
<aside class="note"><strong>注意</strong>:<span>这项功能会增加 GPU 和 CPU 在动画期间的负载。</span></aside>
<h2 id="validation">验证</h2>
-<p>要验证动画效果,请衡量控制应用(即 SystemUI 或启动器)在动画期间的性能(如<a href="https://developer.android.com/training/testing/performance">测试界面性能</a>中所述)。</p>
+<p>要验证动画效果,请衡量控制应用(即 SystemUI 或启动器)在动画期间的性能(如<a href="https://developer.android.com/training/testing/performance" class="external">测试界面性能</a>中所述)。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/health/deprecation.html b/zh-cn/devices/tech/health/deprecation.html
index 45c85d62..adb5fc12 100644
--- a/zh-cn/devices/tech/health/deprecation.html
+++ b/zh-cn/devices/tech/health/deprecation.html
@@ -21,7 +21,7 @@
<h1 id="deprecating_health10" class="page-title">弃用 health@1.0</h1>
-<p>在根据标准 <a href="/devices/architecture/vintf/fcm#hal-version-deprecation">HAL 弃用时间表</a>彻底弃用 health@1.0 之前,框架将继续支持 health@1.0。弃用 health@1.0(即从<a href="https://source.android.com/devices/architecture/vintf/comp-matrices">框架兼容性矩阵</a>中移除相关条目)后,也必须从系统中移除 <code>healthd</code> 和 <code>libbatterymonitor</code>,以免 healthd 出现未知行为。由于 health@1.0 是可选 HAL,且 health@1.0 的所有 <code>healthd</code> 依赖项都受 NULL 检查的保护,因此弃用不得被任何事项打断。</p>
+<p>在根据标准 <a href="/devices/architecture/vintf/fcm#hal-version-deprecation">HAL 弃用时间表</a>彻底弃用 health@1.0 之前,框架将继续支持 health@1.0。弃用 health@1.0(即从<a href="/devices/architecture/vintf/comp-matrices">框架兼容性矩阵</a>中移除相关条目)后,也必须从系统中移除 <code>healthd</code> 和 <code>libbatterymonitor</code>,以免 healthd 出现未知行为。由于 health@1.0 是可选 HAL,且 health@1.0 的所有 <code>healthd</code> 依赖项都受 NULL 检查的保护,因此弃用不得被任何事项打断。</p>
<p>根据弃用时间表,当 Android 移除旧版代码路径(healthd、health@1.0)时,Health@1.0 HAL 便会被弃用。此外,Android 还会移除以下内容:</p>
@@ -40,21 +40,16 @@
<ol>
<li><p>从系统映像中移除 <code>healthd</code> 和 <code>healthd.rc</code>,方法是在 Soong 中向特定于设备的实现中添加以下行:</p>
-<pre class="prettyprint"><code>```
-cc_binary {
+<pre class="prettyprint"><code>cc_binary {
name: "android.hardware.health@2.0-service.device_name"
overrides: ["healthd"],
// ...
}
-```
-
-Or, if the module is in Make:
-
-```yaml
-LOCAL_MODULE_NAME := \
+</code></pre>
+<p>或者,如果模块在 Make 中:</p>
+<pre class="prettyprint lang-yaml"><code>LOCAL_MODULE_NAME := \
android.hardware.health@2.0-service.device_name
LOCAL_OVERRIDES_MODULES := healthd
-```
</code></pre>
<p>如果已安装默认实现 <code>android.hardware.health@2.0-service</code>,则改为实现特定于设备的 <code>android.hardware.health@2.0-service.device_name</code>。有关详情,请参阅<a href="/devices/tech/health/implementation">实现 Health</a>。</p></li>
<li><p>将以下行添加到 <code>BoardConfig.mk</code>,以从框架清单中移除备份实例。这样可以确保框架清单正确反映设备上的 HAL,并让相关 VTS 测试可以顺利通过。</p>
diff --git a/zh-cn/devices/tech/health/implementation.html b/zh-cn/devices/tech/health/implementation.html
index 5e05a341..083a3479 100644
--- a/zh-cn/devices/tech/health/implementation.html
+++ b/zh-cn/devices/tech/health/implementation.html
@@ -36,7 +36,7 @@
<li>在广泛推出 IHealth/default 实例且弃用 Android 8.1 供应商映像后,就可以弃用 IHealth/backup 实例和 <code>healthd</code> 了。如需了解详情,请参阅<a href="/devices/tech/health/deprecation">弃用 health@1.0</a>。</li>
</ol>
-<h2 id="board_specific_build_variables_for_healthd">针对 healthd 的板级编译变量</h2>
+<h2 id="board-specific_build_variables_for_healthd">针对 healthd 的板级编译变量</h2>
<p><code>BOARD_PERIODIC_CHORES_INTERVAL_*</code> 是用于编译 <code>healthd</code> 的板级变量。板级值用于分隔系统编译部分和供应商编译部分,<strong>无法</strong>针对系统模块定义进行定义。在 health@2.0 中,供应商可以在 <code>healthd_mode_ops-&gt;init</code> 中覆盖这两个值(方法是弃用 <code>health@2.0-service.&lt;device&gt;</code> 中的 <code>libhealthservice</code> 依赖项并重新实现此函数)。</p>
@@ -82,7 +82,7 @@ int main() { return health_service_main(); }
<li><p>更新必要的 SELinux 权限。</p></li>
</ul>
-<p>如需了解详情,请参阅 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/health/2.0/README">hardware/interfaces/health/2.0/README</a>。</p>
+<p>如需了解详情,请参阅 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/health/2.0/README.md" class="external">hardware/interfaces/health/2.0/README.md</a>。</p>
<h2 id="health_clients">Health 客户端</h2>
diff --git a/zh-cn/devices/tech/health/index.html b/zh-cn/devices/tech/health/index.html
index fea95b90..6bd66008 100644
--- a/zh-cn/devices/tech/health/index.html
+++ b/zh-cn/devices/tech/health/index.html
@@ -93,9 +93,9 @@
<h2 id="hal_interface">HAL 接口</h2>
-<p>health@2.0 HAL 为框架提供了与旧版 healthd 守护进程相同的功能。此外,它还提供了与 healthd 以前作为 Binder 服务提供的 API 类似的 API(即 <a href="https://android.googlesource.com/platform/frameworks/base/+/2392cbd888212f61a242058f749bcc39d495bf4b/core/java/android/os/IBatteryPropertiesRegistrar.aidl">IBatteryPropertiesRegistrar</a>)。</p>
+<p>health@2.0 HAL 为框架提供了与旧版 healthd 守护进程相同的功能。此外,它还提供了与 healthd 以前作为 Binder 服务提供的 API 类似的 API(即 <a href="https://android.googlesource.com/platform/frameworks/base/+/2392cbd888212f61a242058f749bcc39d495bf4b/core/java/android/os/IBatteryPropertiesRegistrar.aidl" class="external">IBatteryPropertiesRegistrar</a>)。</p>
-<p>主界面 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/de542acbbf46812cfb53d231ecb50048baf8780e/health/2.0/IHealth.hal">IHealth</a> 提供以下函数:</p>
+<p>主界面 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/de542acbbf46812cfb53d231ecb50048baf8780e/health/2.0/IHealth.hal" class="external">IHealth</a> 提供以下函数:</p>
<ul>
<li><code>registerCallback</code>,用于替换 <code>IBatteryPropertiesRegistrar.registerListener</code></li>
diff --git a/zh-cn/devices/tech/ota/ab/ab_implement.html b/zh-cn/devices/tech/ota/ab/ab_implement.html
index 3250dc18..bb96e487 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>
@@ -42,7 +42,7 @@
<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>&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>:
@@ -122,7 +122,7 @@ A/B 化的所有分区都应按以下方法命名(插槽始终被命名为 <co
<h3 id="fstab">Fstab</h3>
-<p><code>slotselect</code> 参数<strong>必须</strong>位于进行 A/B 更新的分区对应的行中。例如:</p>
+<p><code>slotselect</code> 参数<strong>必须</strong>位于已进行 A/B 更新的分区对应的行中。例如:</p>
<pre class="devsite-click-to-copy">
&lt;path-to-block-device&gt;/vendor /vendor ext4 ro
@@ -135,23 +135,23 @@ wait,verify=&lt;path-to-block-device&gt;/metadata,slotselect
<p>应通过特定的设备树 (DT) 节点 (<code>/firmware/android/slot_suffix</code>) 或 <code>androidboot.slot_suffix</code> 命令行参数传递当前插槽后缀。</p>
-<p>默认情况下,fastboot 只会闪存 A/B 设备上的插槽 <code>a</code>,并将当前插槽设置为 <code>a</code>。如果更新软件包还包含插槽 <code>b</code> 的映像,则 fastboot 也会闪存这些映像。可用选项包括:</p>
+<p>默认情况下,fastboot 会刷写 A/B 设备上的当前插槽。如果更新软件包还包含其他非当前插槽的映像,则 fastboot 也会刷写这些映像。可用选项包括:</p>
<ul>
-<li><code>--slot</code>。提示 fastboot 使用插槽 <code>b</code>,而非插槽 <code>a</code>。</li>
-<li><code>--set-active</code>。将插槽设置为活动插槽。</li>
-<li><code>fastboot --help</code>。获取有关命令的详细信息。</li>
+ <li><code>--slot <var>SLOT</var></code>:替换默认行为,并提示 fastboot 刷写以参数形式传入的插槽。</li>
+ <li><code>--set-active [<var>SLOT</var>]</code>:将指定插槽设为活动插槽。如果未指定可选参数,则将当前插槽设为活动插槽。</li>
+<li><code>fastboot --help</code>:获取有关命令的详细信息。</li>
</ul>
<p>如果引导加载程序实现 fastboot,则应该支持命令 <code>set_active &lt;slot&gt;</code>,该命令将当前活动插槽设置为指定插槽(此外,还必须清除该插槽的不可启动标记,并将重试计数重置为默认值)。引导加载程序还应支持以下变量:</p>
<ul>
-<li><code>has-slot:&lt;partition-base-name-without-suffix&gt;</code>。如果指定分区支持插槽,则返回“yes”,否则返回“no”。</li>
-<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-retry-count<slot suffix></slot></code>。启动指定插槽的剩余重试次数。</li>
+<li><code>has-slot:&lt;partition-base-name-without-suffix&gt;</code>:如果指定分区支持插槽,则返回“yes”,否则返回“no”。</li>
+<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-retry-count<slot suffix></slot></code>:启动指定插槽的剩余重试次数。</li>
</ul>
<p>要查看所有变量,请运行 <code class="devsite-terminal devsite-click-to-copy">fastboot getvar all</code>。
diff --git a/zh-cn/devices/tech/ota/nonab/device_code.html b/zh-cn/devices/tech/ota/nonab/device_code.html
index 390690c4..ec2d49e8 100644
--- a/zh-cn/devices/tech/ota/nonab/device_code.html
+++ b/zh-cn/devices/tech/ota/nonab/device_code.html
@@ -106,7 +106,7 @@ static const char* ITEMS[] = {"reboot system now",
<p class="note"><strong>注意</strong>:过长的行会被截断(而非换行),因此请留意您设备的屏幕宽度。</p>
<h3 id="customize-checkkey">自定义 CheckKey</h3>
-<p>接下来,请定义您设备的 RecoveryUI 实现。本示例假设 <b>tardis</b> 设备配有屏幕,因此您可以沿用内置的 ScreenRecoveryUIimplementation(另请参阅<a href="#devices-without-screens">无屏幕设备</a>说明)。可通过 ScreenRecoveryUI 自定义的唯一函数是 <code>CheckKey()</code>,该函数会执行初始异步键处理操作:</p>
+<p>接下来,请定义您设备的 RecoveryUI 实现。本示例假设 <b>tardis</b> 设备配有屏幕,因此您可以沿用内置的 ScreenRecoveryUIimplementation(请参阅针对<a href="#devices-without-screens">无屏幕设备</a>的说明)。可通过 ScreenRecoveryUI 自定义的唯一函数是 <code>CheckKey()</code>,该函数会执行初始异步键处理操作:</p>
<pre class="prettyprint">
class TardisUI : public ScreenRecoveryUI {
@@ -164,7 +164,7 @@ class TardisUI : public ScreenRecoveryUI {
<h3 id="screenrecoveryui">ScreenRecoveryUI</h3>
<p>如果您在 ScreenRecoveryUI 中使用自己的图片(错误图标、安装动画、进度条),则可以设置变量 <code>animation_fps</code> 来控制动画的速度(以每秒帧数 (FPS) 为单位)。</p>
-<p class="note"><strong>注意</strong>:当前的 <code>interlace-frames.py</code> 脚本允许您将 <code>animation_fps</code> 信息存储到图片本身中。在早期版本的 Android 中,您必须自行设置 <code>animation_fps</code>。</p>
+<p class="note"><strong>注意</strong>:当前的 <code>interlace-frames.py</code> 脚本允许您将 <code>animation_fps</code> 信息存储到图片本身。在早期版本的 Android 中,您必须自行设置 <code>animation_fps</code>。</p>
<p>要设置变量 <code>animation_fps</code>,请替换子类中的 <code>ScreenRecoveryUI::Init()</code> 函数。设置值,然后调用 <code>parent Init() </code>函数以完成初始化。默认值 (20 FPS) 对应默认恢复图片;您在使用这些图片时无需提供 <code>Init()</code> 函数。
有关图片的详细信息,请参阅<a href="#recovery-ui-images">恢复界面图片</a>。</p>
@@ -227,7 +227,7 @@ const char* const* GetMenuItems() { return ITEMS; }
<li><b>kNoAction</b>:不因此次按键执行任何操作</li>
</ul>
-<p>您可以根据 visible 参数而猜到,即使在菜单不可见时,系统也会调用 <code>HandleMenuKey()</code>。与 <code>CheckKey()</code> 不同的是,当恢复系统执行清除数据或安装软件包等操作时,系统不会调用该函数,只有恢复系统处于闲置状态并等待输入时才会调用该函数。<i></i></p>
+<p>您可以根据 visible 参数而猜到,即使在菜单不可见时,系统也会调用 <code>HandleMenuKey()</code>。与 <code>CheckKey()</code> 不同的是,当恢复系统执行清除数据或安装软件包等操作时,系统不会调用该函数,仅当恢复系统处于闲置状态并等待输入时,系统才会调用该函数。<i></i></p>
<h4 id="trackball-mechanism">轨迹球机制</h4>
<p>如果您的设备采用类似于轨迹球的输入机制(生成类型为 EV_REL、代码为 REL_Y 的输入事件),那么,只要类似于轨迹球的输入设备报告 Y 轴的动作,恢复系统就会合成 KEY_UP 和 KEY_DOWN 按键。您只需将 KEY_UP 和 KEY_DOWN 事件映射到相应的菜单操作即可。<i></i>由于无法针对 <code>CheckKey()</code> 实现此映射,因此您不能将轨迹球运动用作重新启动或切换显示状态的触发器。</p>
@@ -245,7 +245,7 @@ const char* const* GetMenuItems() { return ITEMS; }
}
</pre>
-<p class="note"><strong>注意</strong>:如果 <b>visible</b> 为 false,则返回操作菜单(移动突出显示项、调用突出显示项)的特殊值将毫无意义,因为用户看不到突出显示项。不过,您可以视需要返回相应的值。</p>
+<p class="note"><strong>注意</strong>:如果 <b>visible</b> 为 false,则返回用于操控菜单(移动突出显示亮标、调用突出显示项)的特殊值将毫无意义,因为用户看不到突出显示亮标。不过,您可以视需要返回相应的值。</p>
<h4 id="invokemenuitem">InvokeMenuItem</h4>
<p>接下来,提供 <code>InvokeMenuItem()</code> 方法,将由 <code>GetMenuItems()</code> 返回的项数组中的整数位置映射到相应的操作。对于 tardis 示例中的项数组,请使用:</p>
@@ -393,7 +393,7 @@ TARGET_RECOVERY_UI_LIB := librecovery_ui_tardis
<p>后续帧通过只绘制下一张已位于顶部的叠加图片显示;基本图片不会重新绘制。<i></i></p>
-<p>动画中的帧数、所需速度以及叠加图片相对于基本图片的 x 轴和 y 轴偏移量均通过 ScreenRecoveryUI 类的成员变量来设置。如果您使用的是自定义图片而不是默认图片,请通过替换您子类中的 <code>Init()</code> 方法来更改自定义图片的这些值(如需了解详情,请参阅 <a href="#screenrecoveryui">ScreenRecoveryUI</a>)。<code>bootable/recovery/make-overlay.py
+<p>动画中的帧数、所需速度以及叠加图片相对于基本图片的 x 轴和 y 轴偏移量均通过 ScreenRecoveryUI 类的成员变量来设置。如果您使用的是自定义图片而不是默认图片,请替换子类中的 <code>Init()</code> 方法,以便更改自定义图片的这些值(如需了解详情,请参阅 <a href="#screenrecoveryui">ScreenRecoveryUI</a>)。<code>bootable/recovery/make-overlay.py
</code> 脚本可协助将一组图片帧转为 recovery 所需的“基本图片 + 叠加图片”,其中包括计算所需的偏移量。</p>
<p>默认图片位于 <code>bootable/recovery/res/images</code> 中。要在安装过程中使用静态图片,您只需提供 icon_installing.png 图片,并将动画中的帧数设置为 0(错误图标不是动画;该图片一律为静态图片)即可。</p>
@@ -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>
@@ -543,7 +543,7 @@ ReadValueVarArgs()</code> 便捷函数对数量不定的参数进行求值(它
}
</pre>
-<p>便捷函数 <code>StringValue()</code> 会将字符串封装到新的 Value 对象中。使用此函数可以简化上述代码的编写流程:</p>
+<p>便捷函数 <code>StringValue()</code> 会将字符串封装到新的 Value 对象中。使用此函数可以更精简地编写上述代码:</p>
<pre class="prettyprint">
FreeValue(key);
@@ -553,7 +553,7 @@ ReadValueVarArgs()</code> 便捷函数对数量不定的参数进行求值(它
}
</pre>
-<p>要将函数挂接到 edify 解释器中,请提供函数 <code>Register_<i>foo</i></code>(其中 foo 是包含该代码的静态库的名称)。<i></i>调用 <code>RegisterFunction()</code> 即可注册各个扩展函数。按照惯例,您需要对设备专属函数 <code><i>device</i>.<i>whatever</i></code> 进行命名,以免与将来添加的内置函数发生冲突。</p>
+<p>要将函数挂接到 edify 解释器中,请提供函数 <code>Register_<i>foo</i></code>(其中 foo 是该代码所在的静态库的名称)。<i></i>调用 <code>RegisterFunction()</code> 即可注册各个扩展函数。按照惯例,您需要对设备专属函数 <code><i>device</i>.<i>whatever</i></code> 进行命名,以免与将来添加的内置函数发生冲突。</p>
<pre class="prettyprint">
void Register_librecovery_updater_tardis() {
@@ -561,7 +561,7 @@ void Register_librecovery_updater_tardis() {
}
</pre>
-<p>现在,您可以配置 makefile,以使用您的代码编译静态库(此 makefile 即是用于自定义之前区段中的恢复界面的 makefile;您设备的两个静态库可能都是在此定义的)。</p>
+<p>现在,您可以配置 makefile,以使用您的代码编译静态库(此 makefile 即是在之前的部分中自定义恢复界面时使用的 makefile;您设备的两个静态库可能都是在此处定义的)。</p>
<pre class="devsite-click-to-copy">
device/yoyodyne/tardis/recovery/Android.mk
@@ -580,7 +580,7 @@ LOCAL_MODULE := librecovery_updater_tardis
include $(BUILD_STATIC_LIBRARY)
</pre>
-<p>最后,配置 recovery 的编译版本以拉入您的库。将您的库添加到 TARGET_RECOVERY_UPDATER_LIBS(它可能包含多个库;所有库均已注册)。如果您的代码依赖于本身不是 edify 扩展程序的其他静态库(即它们没有 <code>Register_<i>libname</i></code> 函数),您可以将这些库列于 TARGET_RECOVERY_UPDATER_EXTRA_LIBS 中,以将其关联到更新程序,而无需调用其(不存在的)注册函数。例如,如果您的设备专属代码需要使用 zlib 解压缩数据,您可以在此处包含 libz。</p>
+<p>最后,配置 recovery 的编译版本以拉入您的库。将您的库添加到 TARGET_RECOVERY_UPDATER_LIBS(它可能包含多个库;所有库均已注册)。如果您的代码依赖于本身不是 edify 扩展的其他静态库(即它们没有 <code>Register_<i>libname</i></code> 函数),您可以将这些库列入 TARGET_RECOVERY_UPDATER_EXTRA_LIBS 中,以便将其关联到更新程序,而无需调用其(不存在的)注册函数。例如,如果您的设备专属代码需要使用 zlib 来解压缩数据,您可以在此处包含 libz。</p>
<pre class="devsite-click-to-copy">
device/yoyodyne/tardis/BoardConfig.mk
@@ -693,12 +693,12 @@ def IncrementalOTA_InstallEnd(info):
<p>将函数传递到包含各种实用项的单个 info 对象:
</p>
<ul>
-<li><b>info.input_zip</b>:(仅限完整 OTA)输入 target-files .zip 的 <code>zipfile.ZipFile</code> 对象。</li>
-<li><b>info.source_zip</b>:(仅限增量 OTA)源 target-files .zip 的 <code>zipfile.ZipFile
-</code> 对象(安装增量包时编译版本已在设备上)。</li>
-<li><b>info.target_zip</b>:(仅限增量 OTA)目标 target-files .zip 的 <code>zipfile.ZipFile
-</code> 对象(增量包置于设备上的编译版本)。</li>
-<li><b>info.output_zip</b>:正在创建的更新包;为进行写入而打开的 <code>zipfile.ZipFile
+<li><b>info.input_zip</b>:(仅限完整 OTA)输入项 target-files .zip 的 <code>zipfile.ZipFile</code> 对象。</li>
+<li><b>info.source_zip</b>:(仅限版本递增 OTA)源 target-files .zip 的 <code>zipfile. ZipFile
+</code> 对象(安装版本递增包时编译版本已在设备上)。</li>
+<li><b>info.target_zip</b>:(仅限版本递增 OTA)目标 target-files .zip 的 <code>zipfile.ZipFile
+</code> 对象(版本递增包置于设备上的编译版本)。</li>
+<li><b>info.output_zip</b>:正在创建的更新包;为进行写入操作而打开的 <code>zipfile.ZipFile
</code> 对象。使用 common.ZipWriteStr(info.output_zip、filename、data)将文件添加到更新包。<i></i><i></i></li>
<li><b>info.script</b>:可以附加命令的目标脚本对象。调用 <code>info.script.AppendExtra(<i>script_text</i>)</code> 以将文本输出到脚本中。请确保输出文本以英文分号结尾,这样就不会遇到随后发出 (emit) 的命令。</li>
</ul>
@@ -745,11 +745,11 @@ build/tools/releasetools/ota_from_target_files</code> 中的 <code>ota_from_targ
Device::InvokeMenuItem()</code> 方法可以返回以下 BuiltinAction 值:</p>
<ul>
-<li><b>APPLY_EXT</b>:从外部存储设备(<code>
+<li><b>APPLY_EXT</b>:从外部存储空间(<code>
/sdcard</code> 目录)旁加载更新包。您的 recovery.fstab 必须定义 <code>/sdcard
</code> 装载点。此方法在通过符号链接到 <code>/data</code> 来模拟 SD 卡(或其他类似机制)的设备上不可用。<code>/data
</code> 通常不可用于恢复系统,因为它可能会被加密。恢复界面会显示 <code>/sdcard</code> 中的 .zip 文件菜单,以便用户进行选择。</li>
-<li><b>APPLY_CACHE</b>:类似于从 <code>/sdcard</code> 加载更新包,不过使用的是 <code>/cache</code> 目录(始终可用于恢复)。<i></i>在常规系统中,<code>/cache
+<li><b>APPLY_CACHE</b>:类似于从 <code>/sdcard</code> 加载更新包,不过使用的是 <code>/cache</code> 目录(始终可供恢复系统使用)。<i></i>在常规系统中,<code>/cache
</code> 只能由特权用户写入;如果设备不可启动,则完全无法写入 <code>/cache</code> 目录(这样一来,该机制的效用就会有所限制)。</li>
<li><b>APPLY_ADB_SIDELOAD</b>:允许用户通过 USB 数据线和 adb 开发工具将更新包发送到设备。调用此机制时,恢复系统将启动自身的迷你版 adbd 守护进程,以便已连接的主机上的 adb 与其进行对话。该迷你版守护进程仅支持一个命令:<code>adb sideload <i>filename</i></code>。已命名的文件会从主机发送到设备,然后接受验证并进行安装(如同文件在本地存储区中一样)。</li>
</ul>
@@ -758,7 +758,7 @@ Device::InvokeMenuItem()</code> 方法可以返回以下 BuiltinAction 值:</p
<ul>
<li>仅支持 USB 传输。</li>
<li>如果您的恢复系统可以正常运行 adbd(对于 userdebug 和 eng 版本来说通常是这样),则会在设备处于 adb 旁加载模式时关闭,并将在 adb 旁加载完成接收更新包后重新启动。在 adb 旁加载模式下,只有 <code>sideload</code> 命令可以发挥作用(<code>logcat</code>、<code>reboot</code>、<code>push</code>、<code>pull</code>、<code>shell</code> 等都不起作用)。</li>
-<li>您无法在设备上退出 adb 旁加载模式。要终止,您可以将 <code>/dev/null</code>(或有效更新包以外的其他任何文件)作为更新包进行发送,然后设备将无法对其进行验证,并会停止安装过程。RecoveryUI 实现的 <code>CheckKey()</code> 方法将继续为按键所调用,因此,您可以提供可重新启动设备并在 adb 旁加载模式下运行的按键序列。</li>
+<li>您无法在设备上退出 adb 旁加载模式。要终止,您可以将 <code>/dev/null</code>(或有效更新包以外的其他任何文件)作为更新包进行发送,然后设备将无法对其进行验证,并会停止安装过程。对于按键事件,系统会继续调用 RecoveryUI 实现的 <code>CheckKey()</code> 方法,因此,您可以提供可重新启动设备并在 adb 旁加载模式下运行的按键序列。</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/ota/sign_builds.html b/zh-cn/devices/tech/ota/sign_builds.html
index 95f77634..c76fc016 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/perf/compatibility-wal.html b/zh-cn/devices/tech/perf/compatibility-wal.html
index 672c54d3..a8cd2970 100644
--- a/zh-cn/devices/tech/perf/compatibility-wal.html
+++ b/zh-cn/devices/tech/perf/compatibility-wal.html
@@ -22,7 +22,7 @@
limitations under the License.
-->
-<h1 id="compatibility_wal_write_ahead_logging_for_apps" class="page-title">应用的兼容性 WAL(预写日志记录)</h1>
+<h1 id="compatibility_wal_write-ahead_logging_for_apps" class="page-title">应用的兼容性 WAL(预写日志记录)</h1>
<p>Android 9 引入了 <a href="https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html" class="external">SQLiteDatabase</a> 的一种特殊模式,称为“兼容性 WAL(预写日志记录)”,它允许数据库使用 <code>journal_mode=WAL</code>,同时保留每个数据库最多创建一个连接的行为。</p>
@@ -39,7 +39,7 @@
<aside class="note"><strong>注意</strong>:<span>对于使用 <a href="https://developer.android.com/topic/libraries/architecture/room">Room</a> 的应用,系统会默认启用完全预写日志记录模式(而非兼容性 WAL)。这适用于运行 API 16 或更高版本且未被归为<a href="https://developer.android.com/reference/android/app/ActivityManager.html#isLowRamDevice()">低内存设备</a>的设备。要了解详情,请参阅 <a href="https://developer.android.com/reference/androidx/room/RoomDatabase.JournalMode#AUTOMATIC"><code>RoomDatabase.JournalMode AUTOMATIC</code></a>。</span></aside>
<h2 id="disabling_compatibility_wal">停用兼容性 WAL</h2>
-<p>要停用兼容性 WAL 模式,请覆盖 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml" class="external"><code>db_compatibility_wal_supported</code></a> 配置资源。</p>
+<p>要停用兼容性 WAL 模式,请覆盖 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml#1844" class="external"><code>db_compatibility_wal_supported</code></a> 配置资源。</p>
<p>例如:</p>
<pre class="prettyprint"><code>&lt;bool name="db_compatibility_wal_supported"&gt;false&lt;/bool&gt;
diff --git a/zh-cn/devices/tech/power/batteryless.html b/zh-cn/devices/tech/power/batteryless.html
index 88b9cfd6..a7bce71e 100644
--- a/zh-cn/devices/tech/power/batteryless.html
+++ b/zh-cn/devices/tech/power/batteryless.html
@@ -94,7 +94,7 @@ return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
<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>如果您的产品没有电池,且会始终连接到电源,那么,您最好针对交流电源或 USB 电源(其在线 <em></em><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 类<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/tech/power/component.html b/zh-cn/devices/tech/power/component.html
index f9c382ab..3b9eccf8 100644
--- a/zh-cn/devices/tech/power/component.html
+++ b/zh-cn/devices/tech/power/component.html
@@ -146,7 +146,7 @@ adb shell cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
<p><code>wifi.on</code> 值测量 Wi-Fi 在启用但未主动发送或接收数据的状态下的功耗。该值通常是测量系统挂起(休眠)状态下启用/禁用 Wi-Fi 之间产生的电流增量。</p>
-<p><code>wifi.scan</code> 值可用于测量 WLAN 接入点扫描过程中的功耗。应用可以使用 WifiManager 类<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html"> <code>startScan()</code>API</a> 来触发 WLAN 扫描。您也可以依次打开“设置”&gt;“WLAN”,这样 WLAN 每隔几秒钟就会执行一次接入点扫描,而且扫描过程中功耗会明显上升,但您必须从这些测量值中减去屏幕功耗。</p>
+<p><code>wifi.scan</code> 值可用于测量 WLAN 接入点扫描过程中的功耗。应用可以使用 WifiManager 类<a href="http://developer.android.com/reference/android/net/wifi/WifiManager.html"> <code>startScan()</code>API</a> 来触发 WLAN 扫描。您也可以依次打开“设置”&gt;“WLAN”,这样会每隔几秒钟执行一次接入点扫描,而且扫描过程中功耗会明显上升,但您必须从这些测量值中减去屏幕功耗。</p>
<p class="note">
<strong>注意</strong>:请使用受控设置(如 <a href="http://en.wikipedia.org/wiki/Iperf">iperf</a>)生成网络收发流量。</p>
diff --git a/zh-cn/devices/tech/power/platform_mgmt.html b/zh-cn/devices/tech/power/platform_mgmt.html
index 238dd558..ed3f077e 100644
--- a/zh-cn/devices/tech/power/platform_mgmt.html
+++ b/zh-cn/devices/tech/power/platform_mgmt.html
@@ -151,7 +151,7 @@
<li>确认预加载的应用和服务满足以下要求:<ul>
<li>遵循<a href="https://developer.android.com/training/monitoring-device-state/doze-standby.html" class="external">节电优化指南</a>。有关详情,请参阅<a href="#test-apps">测试和优化应用</a>。
<p><strong>或</strong></p>
-</li><li>获得豁免,不会进入低电耗模式和应用待机模式。有关详情,请参阅<a href="#exempt-apps">豁免应用</a>。</li>
+</li><li>获得豁免,不会进入低电耗模式和应用待机模式。有关详情,请参阅<a href="/devices/tech/power/mgmt#exempt-apps">豁免应用</a>。</li>
</ul>
</li>
<li>确认必要的服务已获得豁免,不会进入低电耗模式。</li>
diff --git a/zh-cn/devices/tv/reference-tv-app.html b/zh-cn/devices/tv/reference-tv-app.html
index ca7f7d04..a92a2e05 100644
--- a/zh-cn/devices/tv/reference-tv-app.html
+++ b/zh-cn/devices/tv/reference-tv-app.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>参考 TV 应用</title>
+ <title>参考电视应用</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -92,7 +92,7 @@ adb push $OUT/system/priv-app/LiveTv/LiveTv.apk /system/priv-app/LiveTv/
<h2 id="test">测试</h2>
-<p>在设备上安装 Live TV 后,您需要测试该应用是否已正确集成。除了对 TV 应用运行<a href="/compatibility/cts/index.html">兼容性测试套件</a>和 <a href="/compatibility/cts/verifier.html">CTS 验证程序测试</a>外,您还可以使用以下这些测试:</p>
+<p>在设备上安装 Live TV 后,您需要测试该应用是否已正确集成。除了对该电视应用运行<a href="/compatibility/cts/index.html">兼容性测试套件</a>和 <a href="/compatibility/cts/verifier.html">CTS 验证程序测试</a>外,您还可以使用以下这些测试:</p>
<h3 id="unit_tests">单元测试</h3>
@@ -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/advisory/index.html b/zh-cn/security/advisory/index.html
index 1c617e69..c2cd0b1d 100644
--- a/zh-cn/security/advisory/index.html
+++ b/zh-cn/security/advisory/index.html
@@ -33,14 +33,14 @@
<th>发布日期</th>
</tr>
<tr>
- <td><a href="2016-03-18.html">2016-03-18</a></td>
+ <td><a href="/security/advisory/2016-03-18.html">2016-03-18</a></td>
<td>
<a href="/security/advisory/2016-03-18.html">English</a> /
<a href="/security/advisory/2016-03-18.html?hl=ja">日本語</a> /
<a href="/security/advisory/2016-03-18.html?hl=ko">한국어</a> /
<a href="/security/advisory/2016-03-18.html?hl=ru">ру́сский</a> /
- <a href="/security/advisory/2016-03-18.html?hl=zh-cn">中文(中国)</a>/
- <a href="/security/advisory/2016-03-18.html?hl=zh-tw">中文(台灣)</a>
+ <a href="/security/advisory/2016-03-18.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/advisory/2016-03-18.html?hl=zh-tw">中文 (台灣)</a>
</td>
<td>2016 年 3 月 18 日</td>
</tr>
diff --git a/zh-cn/security/bulletin/2018-07-01.html b/zh-cn/security/bulletin/2018-07-01.html
index 5e6bf3b6..30d9f190 100644
--- a/zh-cn/security/bulletin/2018-07-01.html
+++ b/zh-cn/security/bulletin/2018-07-01.html
@@ -31,7 +31,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/index.html">Android 安全平台防护功能</a>和 Google Play 保护机制。
+我们尚未收到用户关于这些新报告的问题被利用或滥用的举报。请参阅 <a href="#mitigations">Android 和 Google Play 保护机制提供的缓解措施</a>部分,详细了解有助于提高 Android 平台安全性的 <a href="/security/enhancements/index.html">Android 安全平台防护功能</a>和 Google Play 保护机制。
</p>
<p class="note">
<strong>注意</strong>:如需了解适用于 Google 设备的最新无线下载更新 (OTA) 和固件映像,请参阅 <a href="/security/bulletin/pixel/2018-07-01.html">2018 年 7 月的 Pixel/Nexus 安全公告</a>。
@@ -43,7 +43,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</p>
<ul>
<li>较高版本的 Android 平台中提供的增强功能让攻击者更加难以利用 Android 上存在的许多问题。我们建议所有用户都尽可能更新到最新版 Android。</li>
-<li>Android 安全团队会积极利用 <a href="https://www.android.com/play-protect">Google Play 保护机制</a>监控滥用行为,并会在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">可能有害的应用</a>时向用户发出警告。在安装有 <a href="http://www.android.com/gms">Google 移动服务</a>的设备上,Google Play 保护机制会默认处于启用状态,对于从 Google Play 以外的来源安装应用的用户来说,该功能尤为重要。</li>
+<li>Android 安全团队会积极利用 <a href="https://www.android.com/play-protect">Google Play 保护机制</a>监控滥用行为,并会在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">潜在有害应用</a>时向用户发出警告。在安装有 <a href="http://www.android.com/gms">Google 移动服务</a>的设备上,Google Play 保护机制会默认处于启用状态,对于从 Google Play 以外的来源安装应用的用户来说,该功能尤为重要。</li>
</ul>
<h2 id="2018-07-01-details">2018-07-01 安全补丁程序级别漏洞详情</h2>
<p>
@@ -83,7 +83,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="media-framework">媒体框架</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用特制的文件通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -471,7 +471,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</ul>
<p><strong>2. 为何本公告有 2 个安全补丁程序级别?</strong></p>
<p>
-本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一部分漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
</p>
<ul>
<li>如果设备使用的是 2018-07-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
diff --git a/zh-cn/security/bulletin/2018-09-01.html b/zh-cn/security/bulletin/2018-09-01.html
index c6f5d74c..95faa0d8 100644
--- a/zh-cn/security/bulletin/2018-09-01.html
+++ b/zh-cn/security/bulletin/2018-09-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 保护机制。
+我们尚未收到用户关于这些新报告的问题被利用或滥用的举报。请参阅 <a href="#mitigations">Android 和 Google Play 保护机制提供的缓解措施</a>部分,详细了解有助于提高 Android 平台安全性的 <a href="/security/enhancements/">Android 安全平台防护功能</a>和 Google Play 保护机制。
</p>
<p class="note">
<strong>注意</strong>:如需了解适用于 Google 设备的最新无线下载更新 (OTA) 和固件映像,请参阅 <a href="/security/bulletin/pixel/2018-09-01">2018 年 9 月的 Pixel/Nexus 安全公告</a>。
@@ -42,11 +42,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="2018-09-01-details">2018-09-01 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2018-09-01 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2018-09-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="android-runtime">Android 运行时</h3>
@@ -60,7 +60,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -92,7 +92,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -131,7 +131,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -156,7 +156,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -188,7 +188,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -293,41 +293,9 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
</tbody></table>
-<h3 id="update-media-framework">更新:媒体框架</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。</p>
-
-<table>
- <colgroup><col width="21%" />
- <col width="21%" />
- <col width="14%" />
- <col width="14%" />
- <col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>参考内容</th>
- <th>类型</th>
- <th>严重程度</th>
- <th>已更新的 AOSP 版本</th>
- </tr>
- <tr>
- <td>CVE-2018-9411</td>
- <td><a href="https://android.googlesource.com/platform/system/libhidl/+/93484b9b015d47c0f7e5f4449a214b2fed8bed4f" class="external">A-79376389</a></td>
- <td>RCE</td>
- <td>严重</td>
- <td>8.0、8.1、9</td>
- </tr>
- <tr>
- <td>CVE-2018-9427</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/av/+/29d991fac25b261a72ce73f96c9df594ea5b9242" class="external">A-77486542</a></td>
- <td>RCE</td>
- <td>严重</td>
- <td>8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-09-05-details">2018-09-05 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2018-09-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2018-09-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="framework">框架</h3>
@@ -341,7 +309,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -366,7 +334,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -391,7 +359,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -463,7 +431,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -711,17 +679,17 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
</tbody></table>
<p>
-<strong>4.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<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>
@@ -745,16 +713,16 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
</tbody></table>
<p id="asterisk">
-<strong>5. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>5. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
</p>
<p>
<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel/Nexus 公告)中?</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&amp;hairsp;/&amp;hairsp;Nexus</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/Nexus</a> 安全公告)记录其设备上存在的其他修复程序。
</p>
<h2 id="versions">版本</h2>
diff --git a/zh-cn/security/bulletin/2018-11-01.html b/zh-cn/security/bulletin/2018-11-01.html
index c1b7bf56..876f5043 100644
--- a/zh-cn/security/bulletin/2018-11-01.html
+++ b/zh-cn/security/bulletin/2018-11-01.html
@@ -19,13 +19,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>发布时间:2018 年 11 月 5 日</em></p>
+<p><em>发布时间:2018 年 11 月 5 日 | 更新时间:2018 年 11 月 5 日</em></p>
<p>
本 Android 安全公告详细介绍了会影响 Android 设备的安全漏洞。安全补丁程序级别为 2018-11-05 或更新的 Android 系统都已解决本公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
</p>
<p>
-Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们会在接下来的 48 小时内将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中。届时,我们将会修订本公告,将相关 AOSP 链接增补到本文中。</p>
+Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中,并在本公告中提供了相应链接。本公告中还提供了指向 AOSP 之外的补丁程序的链接。</p>
<p>
这一部分中最严重的漏洞可让邻近区域内的攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
</p>
@@ -35,7 +35,6 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<p class="note">
<strong>注意</strong>:如需了解适用于 Google 设备的最新无线下载更新 (OTA) 和固件映像,请参阅 <a href="/security/bulletin/pixel/2018-11-01">2018 年 11 月的 Pixel / Nexus 安全公告</a>。
</p>
-
<h2 id="announcements">通告</h2>
<p>
我们在 Libxaac 库中发现了多个安全问题,包括 CVE-2018-9528、CVE-2018-9529、CVE-2018-9530、CVE-2018-9531、CVE-2018-9532、CVE-2018-9533、CVE-2018-9534、CVE-2018-9535、CVE-2018-9569、CVE-2018-9570、CVE-2018-9571、CVE-2018-9572、CVE-2018-9573、CVE-2018-9574、CVE-2018-9575、CVE-2018-9576、CVE-2018-9577 和 CVE-2018-9578。</p>
@@ -72,21 +71,21 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9522</td>
- <td>A-112550251</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/181dc252ddec574464882970d3fab290e8b625b5" class="external">A-112550251</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9524</td>
- <td>A-34170870</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c9bc35a45da1e765eb36af604c0c580bd66644cc" class="external">A-34170870</a></td>
<td>EoP</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
</tr>
<tr>
<td>CVE-2018-9525</td>
- <td>A-111330641</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/6409cf5c94cc1feb72dc078e84e66362fbecd6d5" class="external">A-111330641</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
@@ -111,42 +110,42 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9527</td>
- <td>A-112159345</td>
+ <td><a href="https://android.googlesource.com/platform/external/tremolo/+/cafff8f4535c8bf933c5a2fcb1a0dd66fb75a1c2" class="external">A-112159345</a></td>
<td>RCE</td>
<td>严重</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9531</td>
- <td>A-112661641</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/c2208f2a3098410c5a4c79ad6bd4b6d7e1c0b03f" class="external">A-112661641</a></td>
<td>RCE</td>
<td>严重</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9536</td>
- <td>A-112662184</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/9744e41c40598c6a0b74440f3b5be63f9f3708a5" class="external">A-112662184</a></td>
<td>EoP</td>
<td>严重</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9537</td>
- <td>A-112891564</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/61381bd0f4bc012876ccf4b63eafddd2d60c35c9" class="external">A-112891564</a></td>
<td>EoP</td>
<td>严重</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9521</td>
- <td>A-111874331</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/083263937bfb1623adf6015da7ca3cdc258e0352" class="external">A-111874331</a></td>
<td>RCE</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9539</td>
- <td>A-113027383</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/efe34a570d91b826b009d40e44c2e470dd180ace" class="external">A-113027383</a></td>
<td>EoP</td>
<td>高</td>
<td>8.0、8.1、9</td>
@@ -171,42 +170,42 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9540</td>
- <td>A-111450417</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/99d54d0c7dbab6c80f15bbf886ed203b2a547453" class="external">A-111450417</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9542</td>
- <td>A-111896861</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111896861</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9543</td>
- <td>A-112868088</td>
+ <td><a href="https://android.googlesource.com/platform/external/f2fs-tools/+/71313114a147ee3fc4a411904de02ea8b6bf7f91" class="external">A-112868088</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9544</td>
- <td>A-113037220</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113037220</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9545</td>
- <td>A-113111784</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113111784</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td rowspan="2">CVE-2018-9541</td>
- <td rowspan="2">A-111450531</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111450531</a></td>
<td>ID</td>
<td>中</td>
<td>9</td>
@@ -218,54 +217,6 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
</tbody></table>
-<h3 id="update-media-framework">更新:媒体框架</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>参考编号</th>
- <th>类型</th>
- <th>严重程度</th>
- <th>已更新的 AOSP 版本</th>
- </tr>
- <tr>
- <td>CVE-2018-9347</td>
- <td>A-68664359</td>
- <td>DoS</td>
- <td>中</td>
- <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
-<h3 id="update-system">更新:系统</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>参考编号</th>
- <th>类型</th>
- <th>严重程度</th>
- <th>已更新的 AOSP 版本</th>
- </tr>
- <tr>
- <td>CVE-2018-9457</td>
- <td>A-72872376</td>
- <td>EoP</td>
- <td>中</td>
- <td>8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-11-05-details">2018-11-05 安全补丁程序级别漏洞详情</h2>
<p>
我们在下面提供了 2018-11-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
@@ -289,18 +240,11 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9523</td>
- <td>A-112859604</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/6a947f048a76a5936fd2b693e01f849aef22c907" class="external">A-112859604</a></td>
<td>EoP</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
- <tr>
- <td>CVE-2018-9526</td>
- <td>A-112159033</td>
- <td>ID</td>
- <td>高</td>
- <td>9</td>
- </tr>
</tbody></table>
<h3 id="qualcomm-components">Qualcomm 组件</h3>
@@ -557,7 +501,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<strong>5. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
</p>
<p>
<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel/Nexus 公告)中?</strong>
@@ -581,6 +525,11 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<td>2018 年 11 月 5 日</td>
<td>发布了本公告。</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 11 月 5 日</td>
+ <td>在本公告中添加了 AOSP 链接。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2018-12-01.html b/zh-cn/security/bulletin/2018-12-01.html
new file mode 100644
index 00000000..8fccebbc
--- /dev/null
+++ b/zh-cn/security/bulletin/2018-12-01.html
@@ -0,0 +1,708 @@
+<html devsite><head>
+ <title>Android 安全公告 - 2018 年 12 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>发布时间:2018 年 12 月 3 日</em></p>
+
+<p>
+本 Android 安全公告详细介绍了会影响 Android 设备的安全漏洞。安全补丁程序级别为 2018-12-05 或更新的 Android 系统都已解决本公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
+</p>
+<p>我们会在接下来的 48 小时内将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中。届时,我们将会修订本公告,将相关 AOSP 链接增补到本文中。</p>
+<p>
+这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者使用特制文件通过特许进程执行任意代码。<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 保护机制。
+</p>
+<p class="note">
+<strong>注意</strong>:如需了解适用于 Google 设备的最新无线下载更新 (OTA) 和固件映像,请参阅 <a href="/security/bulletin/pixel/2018-12-01">2018 年 12 月的 Pixel / Nexus 安全公告</a>。
+</p>
+
+<h2 id="mitigations">Android 和 Google 服务缓解措施</h2>
+
+<p>
+这一部分总结了 <a href="/security/enhancements/">Android 安全平台</a>和服务防护功能(如 <a href="https://www.android.com/play-protect" class="external">Google Play 保护机制</a>)提供的缓解措施。这些功能有助于降低 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>
+</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 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+</p>
+
+<h3 id="framework">框架</h3>
+
+<p>这一部分中最严重的漏洞可让本地恶意应用在特权进程环境中执行任意代码。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>已更新的 AOSP 版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9547</td>
+ <td>A-114223584</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9548</td>
+ <td>A-112555574</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+</tbody></table>
+
+<h3 id="media-framework">媒体框架</h3>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>已更新的 AOSP 版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9549</td>
+ <td>A-112160868</td>
+ <td>RCE</td>
+ <td>严重</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9550</td>
+ <td>A-112660981</td>
+ <td>RCE</td>
+ <td>严重</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9551</td>
+ <td>A-112891548</td>
+ <td>RCE</td>
+ <td>严重</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9552</td>
+ <td>A-113260892</td>
+ <td>ID</td>
+ <td>严重</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9553</td>
+ <td>A-116615297</td>
+ <td>RCE</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9538</td>
+ <td>A-112181526</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9554</td>
+ <td>A-114770654</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1</td>
+ </tr>
+</tbody></table>
+
+<h3 id="system">系统</h3>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的传输在特权进程环境中执行任意代码。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>已更新的 AOSP 版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9555</td>
+ <td>A-112321180</td>
+ <td>RCE</td>
+ <td>严重</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9556</td>
+ <td>A-113118184</td>
+ <td>RCE</td>
+ <td>严重</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9557</td>
+ <td>A-35385357</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9558</td>
+ <td>A-112161557</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9559</td>
+ <td>A-112731440</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9560</td>
+ <td>A-79946737</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9562</td>
+ <td>A-113164621</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9566</td>
+ <td>A-74249842</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+</tbody></table>
+
+<h2 id="2018-12-05-details">2018-12-05 安全补丁程序级别漏洞详情</h2>
+
+<p>
+我们在下面提供了 2018-12-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="system-05">系统</h3>
+
+<p>这一部分中最严重的漏洞可导致远程信息泄露,而无需额外的执行权限。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>组件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9565</td>
+ <td>A-16680558</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>OMA-DM</td>
+ </tr>
+</tbody></table>
+
+<h3 id="htc-components">HTC 组件</h3>
+
+<p>这一部分中最严重的漏洞可让本地攻击者绕过用户互动要求来获得额外的权限。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>组件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9567</td>
+ <td>A-65543936</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>引导加载程序</td>
+ </tr>
+</tbody></table>
+
+<h3 id="kernel-components">内核组件</h3>
+
+<p>这一部分中最严重的漏洞可让本地攻击者在特权进程环境中执行任意代码。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>组件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10840</td>
+ <td>A-116406508<br />
+<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 文件系统</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9568</td>
+ <td>A-113509306<br />
+<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/core/sock.c?id=9d538fa60bad4f7b23193c89e843797a1cf71ef3">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>网络</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-components">Qualcomm 组件</h3>
+
+<p>以下漏洞会影响 Qualcomm 组件,相应的 Qualcomm 安全公告或安全提醒中对这些漏洞进行了详细说明。这些漏洞的严重程度评估是由 Qualcomm 直接提供的。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>组件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11960</td>
+ <td>A-114042002<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=18ce15db603e19cfac9a2f4076f255e879100495">QC-CR#2264832</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>HWEngines</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11961</td>
+ <td>A-114040881<br />
+<a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=c57ee0a5d3261ab20c35b451d1b3ae2b02a21591">QC-CR#2261813</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>GPS_AP_LINUX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11963</td>
+ <td>A-114041685<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c9ac3476a91c384a3f2760fabaecef0ad8698d7b">QC-CR#2220770</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>汽车多媒体</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-closed-source-components">Qualcomm 闭源组件</h3>
+
+<p>以下漏洞会影响 Qualcomm 组件,相应的 Qualcomm 安全公告或安全提醒中对这些漏洞进行了详细说明。这些漏洞的严重程度评估是由 Qualcomm 直接提供的。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>组件</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-8248</td>
+ <td>A-78135902<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>严重</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11004</td>
+ <td>A-66913713<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>严重</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18141</td>
+ <td>A-67712316<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>严重</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5913</td>
+ <td>A-79419833<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>严重</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11279</td>
+ <td>A-109678200<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>严重</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18319</td>
+ <td>A-78284753<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18321</td>
+ <td>A-78283451<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18322</td>
+ <td>A-78285196<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18323</td>
+ <td>A-78284194<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18324 </td>
+ <td>A-78284517<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18327</td>
+ <td>A-78240177<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18331</td>
+ <td>A-78239686<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18332</td>
+ <td>A-78284545<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18160</td>
+ <td>A-109660689<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18326</td>
+ <td>A-78240324<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8276</td>
+ <td>A-68141338<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18328</td>
+ <td>A-78286046<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18329</td>
+ <td>A-73539037<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18330</td>
+ <td>A-73539235<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3595</td>
+ <td>A-71501115<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18320</td>
+ <td>A-33757308<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11999</td>
+ <td>A-74236942<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5867</td>
+ <td>A-77485184<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5868</td>
+ <td>A-77484529<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5869</td>
+ <td>A-33385206<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-79419639<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5915</td>
+ <td>A-79420511<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11267</td>
+ <td>A-109678338<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11922</td>
+ <td>A-112279564<a href="#asterisk">*</a></td>
+ <td>无</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">常见问题和解答</h2>
+
+<p>这一部分解答了用户在阅读本公告后可能会提出的常见问题。</p>
+<p><strong>1. 如何确定我的设备是否已通过更新解决这些问题?</strong></p>
+<p>要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">查看并更新 Android 版本</a>。</p>
+<ul>
+<li>如果安全补丁程序级别是 2018-12-01 或更新,则意味着已解决 2018-12-01 安全补丁程序级别涵盖的所有问题。</li>
+<li>如果安全补丁程序级别是 2018-12-05 或更新,则意味着已解决 2018-12-05 以及之前的所有安全补丁程序级别涵盖的所有问题。</li>
+</ul>
+<p>预装这些更新的设备制造商应将补丁程序字符串级别设为:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2018-12-01]</li>
+ <li>[ro.build.version.security_patch]:[2018-12-05]</li>
+</ul>
+<p><strong>2.为何本公告有 2 个安全补丁程序级别?</strong></p>
+<p>
+本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+</p>
+<ul>
+<li>如果设备使用的是 2018-12-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
+<li>如果设备使用的是 2018-12-05 或更新的安全补丁程序级别,则必须包含本安全公告(以及之前的安全公告)中的所有适用补丁程序。</li>
+</ul>
+<p>
+我们建议合作伙伴将要解决的全部问题的修复方案打包到一个更新中。
+</p>
+<p id="type">
+<strong>3.“类型”列中的条目表示什么意思?<em></em></strong>
+</p>
+<p>
+在漏洞详情表内,“类型”列中的条目是安全漏洞的分类。<em></em>
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>缩写词</th>
+ <th>定义</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>远程代码执行</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>提权</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>信息披露</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>拒绝服务</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>没有分类</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>4.“参考编号”列中的条目表示什么意思?<em></em></strong>
+</p>
+<p>
+在漏洞详情表内,“参考编号”列中的条目可能包含用于标识参考值所属组织的前缀。<em></em>
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>前缀</th>
+ <th>参考编号</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android Bug ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm 参考编号</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek 参考编号</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA 参考编号</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom 参考编号</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>5. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+</p>
+<p>
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+</p>
+<p>
+<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel/Nexus 公告)中?</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/Nexus</a> 安全公告)记录其设备上存在的其他修复程序。
+</p>
+
+<h2 id="versions">版本</h2>
+
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>版本</th>
+ <th>日期</th>
+ <th>备注</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018 年 12 月 3 日</td>
+ <td>发布了本公告</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/2018-01-01.html b/zh-cn/security/bulletin/pixel/2018-01-01.html
index e4436c36..c9950317 100644
--- a/zh-cn/security/bulletin/pixel/2018-01-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-01-01.html
@@ -22,7 +22,7 @@
<p><em>发布时间:2018 年 1 月 2 日 | 更新时间:2018 年 1 月 29 日</em></p>
<p>
-本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-01-05 或更新,则意味着已解决本公告以及 <a href="/security/bulletin/2018-01-01">2018 年 1 月的 Android 安全公告</a>中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。
+本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-01-05 或更新,则意味着已解决本公告以及 <a href="/security/bulletin/2018-01-01">2018 年 1 月的 Android 安全公告</a>中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看和更新 Android 版本</a>。
</p>
<p>
所有受支持的 Google 设备都将会收到 2018-01-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
@@ -30,13 +30,13 @@
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/nexus/images">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
-<h2 id="announcements">通告</h2>
+<h2 id="announcements">公告</h2>
<p>
除了 <a href="/security/bulletin/2018-01-01">2018 年 1 月的 Android 安全公告</a>中所述的安全漏洞外,Pixel 和 Nexus 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。
</p>
<h2 id="security-patches">安全补丁程序</h2>
<p>
-漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="framework">框架</h3>
@@ -49,7 +49,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -74,7 +74,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -263,7 +263,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -287,7 +287,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -311,7 +311,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -335,7 +335,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -404,7 +404,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -426,7 +426,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -450,7 +450,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -601,11 +601,11 @@
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)以及改进。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)以及改进。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
</tr>
@@ -667,17 +667,17 @@
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -701,10 +701,10 @@
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
diff --git a/zh-cn/security/bulletin/pixel/2018-02-01.html b/zh-cn/security/bulletin/pixel/2018-02-01.html
index 7071ae92..db890aba 100644
--- a/zh-cn/security/bulletin/pixel/2018-02-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-02-01.html
@@ -30,13 +30,13 @@
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/nexus/images">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
-<h2 id="announcements">通告</h2>
+<h2 id="announcements">公告</h2>
<p>
除了 <a href="/security/bulletin/2018-02-01">2018 年 2 月的 Android 安全公告</a>中所述的安全漏洞外,Pixel 和 Nexus 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。</p>
<h2 id="security-patches">安全补丁程序</h2>
<p>
-漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="https://source.android.com/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="https://source.android.com/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="framework">框架</h3>
@@ -49,7 +49,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -81,7 +81,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -130,15 +130,14 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
</tr>
<tr>
<td>CVE-2017-13242</td>
- <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/26e2b2456a444777de114f728c4dc2af88c2fb03">A-62672248</a> [<a href="https://android.googlesource.com/platform/packages/apps/Settings/+/7ed7d00e6028234088b58bf6d6d9362a5effece1">2</a>]
- </td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/26e2b2456a444777de114f728c4dc2af88c2fb03">A-62672248</a> [<a href="https://android.googlesource.com/platform/packages/apps/Settings/+/7ed7d00e6028234088b58bf6d6d9362a5effece1">2</a>]</td>
<td>ID</td>
<td>中</td>
<td>6.0、6.0.1、7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -162,7 +161,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -208,7 +207,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -366,12 +365,12 @@
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -484,17 +483,17 @@
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -518,10 +517,10 @@
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
@@ -552,12 +551,12 @@
<tr>
<td>1.3</td>
<td>2018 年 4 月 2 日</td>
- <td>将 CVE-2017-15817 从 2 月的 Android 公告移动到 2 月的 Pixel 公告中。</td>
+ <td>将 CVE-2017-15817 从 2 月份的 Android 公告移到了 2 月份的 Pixel 公告中。</td>
</tr>
<tr>
<td>1.4</td>
<td>2018 年 4 月 30 日</td>
- <td>更新了 CVE-2017-15852,从 CR 2046770 更新为 CR 2028702。</td>
+ <td>将 CVE-2017-15852 从 CR 2046770 更新为 CR 2028702。</td>
</tr>
</tbody></table>
diff --git a/zh-cn/security/bulletin/pixel/2018-03-01.html b/zh-cn/security/bulletin/pixel/2018-03-01.html
index 32d22589..90eb3e02 100644
--- a/zh-cn/security/bulletin/pixel/2018-03-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-03-01.html
@@ -23,7 +23,7 @@
<p><em>发布时间:2018 年 3 月 5 日 | 更新时间:2018 年 3 月 7 日</em></p>
<p>
-本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-03-05 或更新,则意味着已解决本公告以及 <a href="/security/bulletin/2018-03-01">2018 年 3 月的 Android 安全公告</a>中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。</p>
+本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-03-05 或更新,则意味着已解决本公告以及 <a href="/security/bulletin/2018-03-01">2018 年 3 月的 Android 安全公告</a>中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看和更新 Android 版本</a>。</p>
<p>
所有受支持的 Google 设备都将会收到 2018-03-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
</p>
@@ -31,13 +31,13 @@
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/nexus/images">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
-<h2 id="announcements">通告</h2>
+<h2 id="announcements">公告</h2>
<p>
除了 <a href="/security/bulletin/2018-03-01">2018 年 3 月的 Android 安全公告</a>中所述的安全漏洞外,Google 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。</p>
<h2 id="security-patches">安全补丁程序</h2>
<p>
-漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="https://source.android.com/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="https://source.android.com/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="framework">框架</h3>
@@ -50,15 +50,14 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
</tr>
<tr>
<td>CVE-2017-13263</td>
- <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/c38c7404fd89ae43716dddba89e5c8ac3e8bfcba">A-69383160</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/6f89a3e373271be0f93740b96d5792649962439f">2</a>]
- </td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/c38c7404fd89ae43716dddba89e5c8ac3e8bfcba">A-69383160</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/6f89a3e373271be0f93740b96d5792649962439f">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>8.0、8.1</td>
@@ -75,7 +74,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -116,15 +115,14 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
</tr>
<tr>
<td>CVE-2017-13265</td>
- <td><a href="https://android.googlesource.com/platform/build/+/9de91d94e8224314f856d0d3c884142ef5d71f44">A-36232423</a> [<a href="https://android.googlesource.com/platform/system/update_engine/+/8c3c80cbc706137fa1a3dc8784fd8108c0841b30">2</a>] [<a href="https://android.googlesource.com/platform/system/update_engine/+/55b7e08bf5dda75be4b3468b55bd9dda94f67e64">3</a>]
- </td>
+ <td><a href="https://android.googlesource.com/platform/build/+/9de91d94e8224314f856d0d3c884142ef5d71f44">A-36232423</a> [<a href="https://android.googlesource.com/platform/system/update_engine/+/8c3c80cbc706137fa1a3dc8784fd8108c0841b30">2</a>] [<a href="https://android.googlesource.com/platform/system/update_engine/+/55b7e08bf5dda75be4b3468b55bd9dda94f67e64">3</a>]</td>
<td>EoP</td>
<td>中</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -157,7 +155,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -219,7 +217,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -257,7 +255,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -477,12 +475,12 @@
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -553,17 +551,17 @@
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -587,10 +585,10 @@
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
diff --git a/zh-cn/security/bulletin/pixel/2018-06-01.html b/zh-cn/security/bulletin/pixel/2018-06-01.html
index 20e31392..cdad74c2 100644
--- a/zh-cn/security/bulletin/pixel/2018-06-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-06-01.html
@@ -31,11 +31,11 @@
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
-<h2 id="announcements">通告</h2>
+<h2 id="announcements">公告</h2>
<p>除了 2018 年 6 月的 Android 安全公告中所述的安全漏洞外,Pixel 和 Nexus 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。</p>
<h2 id="security-patches">安全补丁程序</h2>
<p>
-漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="https://source.android.com/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="https://source.android.com/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="framework">框架</h3>
@@ -48,7 +48,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -86,7 +86,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -189,7 +189,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -227,7 +227,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -311,7 +311,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -468,7 +468,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -649,7 +649,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -672,12 +672,12 @@
<h2 id="functional-patches">功能补丁程序</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -768,17 +768,17 @@ A-74058011</td>
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -802,10 +802,10 @@ A-74058011</td>
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers">Google Developers 网站</a>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
diff --git a/zh-cn/security/bulletin/pixel/2018-07-01.html b/zh-cn/security/bulletin/pixel/2018-07-01.html
index 1cdd45d2..81c84549 100644
--- a/zh-cn/security/bulletin/pixel/2018-07-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-07-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>发布时间:2018 年 7 月 2 日 | 更新时间:2018 年 7 月 3 日</em></p>
+<p><em>发布时间:2018 年 7 月 2 日 | 更新时间:2018 年 11 月 8 日</em></p>
<p>
本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-07-05 或更新,则意味着已解决本公告以及 2018 年 7 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。
@@ -221,7 +221,7 @@
</tr>
<tr>
- <td>CVE-2017-1000</td>
+ <td>CVE-2017-1000112</td>
<td>A-68806309<br />
<a href="https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=85f1bd9a7b5a79d5baa8bf44af19658f7bf77bfa">上游内核</a></td>
<td>EoP</td>
@@ -454,6 +454,11 @@
<td>2018 年 7 月 3 日</td>
<td>在本公告中添加了 AOSP 链接。</td>
</tr>
+ <tr>
+ <td>1.2</td>
+ <td>2018 年 11 月 8 日</td>
+ <td>修订了本公告,对 CVE-2017-1000112 进行了更正。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/2018-09-01.html b/zh-cn/security/bulletin/pixel/2018-09-01.html
index 5b742fb8..c0b86523 100644
--- a/zh-cn/security/bulletin/pixel/2018-09-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-09-01.html
@@ -37,7 +37,7 @@
<h2 id="security-patches">安全补丁程序</h2>
<p>
-漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="kernel-components">内核组件</h3>
@@ -50,7 +50,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -98,7 +98,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -195,12 +195,12 @@
<h2 id="functional-patches">功能补丁程序</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -271,17 +271,17 @@
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -305,7 +305,7 @@
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
diff --git a/zh-cn/security/bulletin/pixel/2018-10-01.html b/zh-cn/security/bulletin/pixel/2018-10-01.html
index a9412a79..cebc1593 100644
--- a/zh-cn/security/bulletin/pixel/2018-10-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-10-01.html
@@ -29,7 +29,7 @@
所有受支持的 Google 设备都将会收到 2018-10-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
-<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developers 网站</a>上找到 Google 设备固件映像。
+<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developer 网站</a>上找到 Google 设备固件映像。
</p>
<h2 id="announcements">通告</h2>
@@ -39,12 +39,12 @@
<h2 id="functional-patches">功能补丁程序</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -121,17 +121,17 @@
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -155,7 +155,7 @@
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
diff --git a/zh-cn/security/bulletin/pixel/2018-11-01.html b/zh-cn/security/bulletin/pixel/2018-11-01.html
index b1623f8c..bd6cfaf7 100644
--- a/zh-cn/security/bulletin/pixel/2018-11-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-11-01.html
@@ -39,9 +39,33 @@
<h2 id="security-patches">安全补丁程序</h2>
<p>
-漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
+<h3 id="framework-05">框架</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>已更新的 AOSP 版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9526</td>
+ <td><a href="https://android.googlesource.com/device/google/marlin/+/fa7f7382e8b39f7ca209824f97788ab25c44f6a3" class="external">A-112159033</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/8e81142af3dceb913ca50f67df3ded84233f932a">2</a>] [<a href="https://android.googlesource.com/platform/hardware/qcom/sdm845/gps/+/a5f7c07edd96c69171e8bd758addda7d5c30e3eb">3</a>]</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+</tbody></table>
+
<h3 id="htc-components">HTC 组件</h3>
<table>
@@ -52,7 +76,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -76,7 +100,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -107,7 +131,7 @@
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -184,17 +208,17 @@
</tr>
</tbody></table>
<p>
-<strong>3.“参考内容”列中的条目表示什么意思?<em></em></strong>
+<strong>3.“参考编号”列中的条目表示什么意思?<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>
@@ -218,10 +242,10 @@
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 在“参考内容”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
</p>
<p>
-如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 网站</a>上针对 Pixel/ Nexus 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
diff --git a/zh-cn/security/bulletin/pixel/2018-12-01.html b/zh-cn/security/bulletin/pixel/2018-12-01.html
new file mode 100644
index 00000000..22f14669
--- /dev/null
+++ b/zh-cn/security/bulletin/pixel/2018-12-01.html
@@ -0,0 +1,275 @@
+<html devsite><head>
+ <title>Pixel /Nexus 安全公告 - 2018 年 12 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p><em>发布时间:2018 年 12 月 3 日</em></p>
+
+<p>
+本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-12-05 或更新,则意味着已解决本公告以及 2018 年 12 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
+</p>
+<p>
+所有受支持的 Google 设备都将会收到 2018-12-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
+</p>
+<p class="note">
+<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developers 网站</a>上找到 Google 设备固件映像。
+</p>
+
+<h2 id="announcements">通知</h2>
+
+<p>除了 <a href="/security/bulletin/2018-12-01">2018 年 12 月的 Android 安全公告</a>中所述的安全漏洞外,Google 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。
+</p>
+
+<h2 id="security-patches">安全补丁程序</h2>
+<p>
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources#severity">严重程度</a>和已更新的 Android 开源项目 (AOSP) 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的更改记录,我们还将通过 Bug ID 后面的数字链接到更多参考信息。
+</p>
+
+<h3 id="qualcomm-components">Qualcomm 组件</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>参考编号</th>
+ <th>类型</th>
+ <th>严重程度</th>
+ <th>组件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11987</td>
+ <td>A-70638103<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=5e9ffcfa152ecb2832990c42fcd8a0f2e63c2c04">
+QC-CR#2258691</a></td>
+ <td>EoP</td>
+ <td>中</td>
+ <td>ION</td>
+ </tr>
+</tbody></table>
+
+<h2 id="functional-patches">功能补丁程序</h2>
+
+<p>
+我们针对受影响的 Pixel 设备纳入了以下功能补丁程序,以解决与 Pixel 设备安全性无关的功能问题。下表中列出的补丁程序包含相关参考编号、受影响的类别和受影响的设备。</p>
+
+<table>
+<colgroup><col width="15%" />
+<col width="15%" />
+<col width="40%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>参考编号</th>
+ <th>类别</th>
+ <th>改进</th>
+ <th>设备</th>
+ </tr>
+ <tr>
+ <td>A-117522738</td>
+ <td>性能</td>
+ <td>改进了在某些情形下的内存性能</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-110969183</td>
+ <td>相机</td>
+ <td>改进了相机捕获性能</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111008450</td>
+ <td>Pixel Stand</td>
+ <td>改进了使用 Pixel Stand 时的通知可见性</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112376366</td>
+ <td>Android Auto</td>
+ <td>改进了 Android Auto 的兼容性</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115666282</td>
+ <td>相机</td>
+ <td>调整了自动对焦行为</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115624433</td>
+ <td>Pixel Stand</td>
+ <td>改进了使用 Pixel Stand 时的启动指令性能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-116758282</td>
+ <td>显示</td>
+ <td>改进了“显示屏始终保持开启状态”的触发性能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111964925</td>
+ <td>音频</td>
+ <td>改进了 USB-C 音频配件检测</td>
+ <td>Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111716107</td>
+ <td>蓝牙</td>
+ <td>调整了切换蓝牙时的音量行为</td>
+ <td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111159723</td>
+ <td>Android Auto</td>
+ <td>改进了在某些车辆中使用 Android Auto 时的音频性能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112228430</td>
+ <td>媒体</td>
+ <td>改进了某些媒体应用上的 HDR 颜色轮廓</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-113151604</td>
+ <td>相机</td>
+ <td>改进了相机快门性能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111277984</td>
+ <td>性能</td>
+ <td>改进使用蓝牙时的解锁性能</td>
+ <td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">常见问题和解答</h2>
+<p>
+这一部分解答了用户在阅读本公告后可能会提出的常见问题。
+</p>
+<p>
+<strong>1. 如何确定我的设备是否已通过更新解决这些问题?
+</strong>
+</p>
+<p>
+如果安全补丁程序级别是 2018-12-05 或更新,则意味着已解决 2018-12-05 以及之前的所有安全补丁程序级别涵盖的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel 和 Nexus 更新时间表</a>中的说明。
+</p>
+<p id="type">
+<strong>2.“类型”列中的条目表示什么意思?<em></em></strong>
+</p>
+<p>
+在漏洞详情表内,“类型”列中的条目是安全漏洞的分类。<em></em>
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>缩写词</th>
+ <th>定义</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>远程代码执行</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>提权</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>信息披露</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>拒绝服务</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>没有分类</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>3.“参考编号”列中的条目表示什么意思?<em></em></strong>
+</p>
+<p>
+在漏洞详情表内,“参考编号”列中的条目可能包含用于标识参考值所属组织的前缀。<em></em>
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>前缀</th>
+ <th>参考编号</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android Bug ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm 参考编号</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek 参考编号</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA 参考编号</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom 参考编号</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>4. 在“参考编号”列中,Android Bug ID 旁边的 * 表示什么意思?<em></em></strong>
+</p>
+<p>
+如果问题尚未公开发布,则在“参考内容”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+</p>
+<p>
+<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
+</p>
+<p>
+要在 Android 设备上声明最新的安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
+</p>
+<h2 id="versions">版本</h2>
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>版本</th>
+ <th>日期</th>
+ <th>备注</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018 年 12 月 3 日</td>
+ <td>发布了本公告。</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/encryption/file-based.html b/zh-cn/security/encryption/file-based.html
index 2622f3fe..8186f380 100644
--- a/zh-cn/security/encryption/file-based.html
+++ b/zh-cn/security/encryption/file-based.html
@@ -28,7 +28,7 @@ Android 7.0 及更高版本支持文件级加密 (FBE)。采用文件级加密
</p>
<aside class="caution">
- <p><strong>注意</strong>:在运行 Android 7.0 - 8.1 的设备上,文件级加密无法用于<a href="/devices/storage/adoptable.html">可合并的存储设备</a>。在使用 FBE 的设备上,必须将新添加的存储媒介(例如 SD 卡)用作<a href="/devices/storage/traditional.html">传统存储设备</a>。</p>
+ <p><strong>注意</strong>:在运行 Android 7.0-8.1 的设备上,文件级加密无法用于<a href="/devices/storage/adoptable.html">可合并的存储设备</a>。在使用 FBE 的设备上,必须将新添加的存储媒介(例如 SD 卡)用作<a href="/devices/storage/traditional.html">传统存储设备</a>。</p>
<p>运行 Android 9 及更高版本的设备可以使用可合并的存储设备和 FBE。</p>
</aside>
@@ -53,7 +53,7 @@ Android 7.0 及更高版本支持文件级加密 (FBE)。采用文件级加密
Direct Boot API 允许加密感知型应用访问上述任何一个存储空间。应用生命周期会发生一些变化,以便系统在用户的 CE 存储空间因用户在锁定屏幕上首次输入凭据而解锁<em></em>时,或者在工作资料提供<a href="https://developer.android.com/about/versions/nougat/android-7.0.html#android_for_work">工作资料安全验证</a>时,通知应用。无论是否实现了 FBE,运行 Android 7.0 的设备都必须要支持这些新的 API 和生命周期。不过,如果没有启用 FBE,DE 和 CE 存储空间将始终处于解锁状态。
</p>
<p>
-Android 开源项目 (AOSP) 中提供了 EXT4 文件系统中的文件级加密的完整实现。在满足相关要求的设备上,只需启用该实现即可使用该功能。选择使用 FBE 的制造商可能想要了解基于所用系统芯片 (SoC) 优化该功能的方法。
+Android 开源项目 (AOSP) 中提供了 Ext4 和 F2FS 文件系统中的文件级加密的完整实现。在满足相关要求的设备上,只需启用该实现即可使用该功能。选择使用 FBE 的制造商可能想要了解基于所用系统芯片 (SoC) 优化该功能的方法。
</p>
<p>
AOSP 中的所有必要程序包均已更新为直接启动感知型程序包。不过,如果设备制造商使用的是这些应用的定制版本,则需要确保至少存在能够提供以下服务的直接启动感知型程序包:</p>
@@ -64,12 +64,13 @@ AOSP 中的所有必要程序包均已更新为直接启动感知型程序包。
<h2 id="examples-and-source">示例和源代码</h2>
<p>
-Android 提供了文件级加密的参考实现,其中 vold (<a href="https://android.googlesource.com/platform/system/vold/">system/vold</a>) 负责提供用于管理 Android 上的存储设备和存储卷的功能。添加 FBE 会为 vold 提供一些新命令,以便支持对多位用户的 CE 密钥和 DE 密钥进行密钥管理。除了为使用内核中的 <a href="#kernel-support">EXT4 加密</a>功能而进行的核心更改外,许多系统程序包(包括锁定屏幕和 SystemUI)也经过了修改,以支持 FBE 和“直接启动”功能。其中包括:</p>
+Android 提供了文件级加密的参考实现,其中 vold (<a href="https://android.googlesource.com/platform/system/vold/">system/vold</a>) 负责提供用于管理 Android 上的存储设备和存储卷的功能。添加 FBE 会为 vold 提供一些新命令,以便支持对多位用户的 CE 密钥和 DE 密钥进行密钥管理。除了为使用内核中的<a href="#kernel-support">文件级加密</a>功能而进行的核心更改外,许多系统程序包(包括锁定屏幕和 SystemUI)也经过了修改,以支持 FBE 和“直接启动”功能。这些选项包括:
+</p>
<ul>
<li>AOSP 拨号器 (packages/apps/Dialer)</li><li>桌面时钟 (packages/apps/DeskClock)</li><li>LatinIME (packages/inputmethods/LatinIME)*</li><li>“设置”应用 (packages/apps/Settings)*</li><li>SystemUI (frameworks/base/packages/SystemUI)*</li></ul>
<p>
-<em>*使用 <code><a href="#supporting-direct-boot-in-system-applications">defaultToDeviceProtectedStorage</a></code> 清单属性的系统应用</em>
+<em>* 使用 <code><a href="#supporting-direct-boot-in-system-applications">defaultToDeviceProtectedStorage</a></code> 清单属性的系统应用</em>
</p>
<p>
通过在 AOSP 源代码树的框架或程序包目录中运行 <code>mangrep directBootAware</code> 命令,可以找到更多加密感知型应用和服务的示例。
@@ -79,7 +80,8 @@ Android 提供了文件级加密的参考实现,其中 vold (<a href="https://
要安全地使用 AOSP 提供的 FBE 实现,设备需要满足以下依赖关系:</p>
<ul>
-<li>对 EXT4 加密的<strong>内核支持</strong>(内核配置选项:EXT4_FS_ENCRYPTION)</li><li>基于 1.0 或 2.0 版 HAL 的 <strong><a href="/security/keystore/index.html">Keymaster 支持</a></strong>。不支持 Keymaster 0.3,因为它既不提供必要的功能,也不能保证为加密密钥提供充分保护。
+<li>对 Ext4 加密或 F2FS 加密的<strong>内核支持</strong>(内核配置选项:<code>EXT4_FS_ENCRYPTION</code> 或 <code>F2FS_FS_ENCRYPTION</code>)
+</li><li>基于 1.0 或 2.0 版 HAL 的 <strong><a href="/security/keystore/index.html">Keymaster 支持</a></strong>。不支持 Keymaster 0.3,因为它既不提供必要的功能,也不能保证为加密密钥提供充分保护。
</li><li>必须在<a href="/security/trusty/index.html">可信执行环境</a> (TEE) 中实现 <strong>Keymaster/<a href="/security/keystore/index.html">Keystore</a> 和 Gatekeeper</strong>,以便为 DE 密钥提供保护,从而使未经授权的操作系统(刷写到设备上的定制操作系统)无法直接请求 DE 密钥。
</li><li>内核<strong>加密性能</strong>必须要在使用 AES XTS 时至少达到 50MB/s,以确保良好的用户体验。
</li><li><strong>硬件信任根</strong>和<strong>验证启动</strong>需要绑定到 Keymaster 初始化进程,以确保未经授权的操作系统无法获取设备加密凭据。</li>
@@ -95,41 +97,10 @@ Android 提供了文件级加密的参考实现,其中 vold (<a href="https://
</p>
<h3 id="kernel-support">内核支持</h3>
<p>
-AOSP 提供的文件级加密实现会用到 Linux 4.4 内核中的 EXT4 加密功能。推荐的解决方案是使用基于 4.4 或更高版本的内核。EXT4 加密还反向移植到了 Android 公共代码库内的 3.10 内核以及受支持的 Nexus 内核。
-</p>
-<p>
-对于希望将该功能引入到其设备内核的设备制造商来说,AOSP 内核/公共 Git 代码库中的 android-3.10.y 分支可作为一个很好的着手点。不过,务必要在最新的稳定版 Linux 内核(目前是 <a href="https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?id=refs/tags/v4.6">linux-4.6</a>)中应用 EXT4 和 JBD2 项目提供的最新补丁程序。Nexus 设备内核已经包含其中很多补丁程序。
-</p>
-<table>
- <tbody><tr>
- <th>设备</th>
- <th>内核</th>
- </tr>
- <tr>
- <td>Android Common</td>
- <td><strong>kernel/common</strong> android-3.10.y (<a href="https://android.googlesource.com/kernel/common/+/android-3.10.y">git</a>)
- </td>
- </tr>
- <tr>
- <td>Nexus 5X (bullhead)</td>
- <td><strong>kernel/msm</strong> android-msm-bullhead-3.10-n-preview-2 (<a href="https://android.googlesource.com/kernel/msm/+/android-msm-bullhead-3.10-n-preview-2">git</a>)
- </td>
- </tr>
- <tr>
- <td>Nexus 6P (angler)</td>
- <td><strong>kernel/msm</strong> android-msm-angler-3.10-n-preview-2 (<a href="https://android.googlesource.com/kernel/msm/+/android-msm-angler-3.10-n-preview-2">git</a>)
- </td>
- </tr>
-</tbody></table>
-<p>
-请注意,以上每个内核都使用了到 3.10 的反向移植。Linux 3.18 中的 EXT4 和 JBD2 驱动程序已移植到基于 3.10 的现有内核中。由于内核各个部分之间存在依赖关系,因此这种反向移植会导致系统停止支持 Nexus 设备不使用的一些功能。其中包括:</p>
-
-<ul>
-<li>EXT3 驱动程序,不过 EXT4 仍可以装载并使用 EXT3 文件系统</li><li>全局文件系统 (GFS) 支持</li><li>EXT4 中的 ACL 支持</li>
-</ul>
-
+Android 通用内核 3.18 版或更高版本中提供了对 Ext4 和 F2FS 加密的内核支持。
+</p>
<p>
-除了对 EXT4 加密提供功能支持外,设备制造商还可以考虑实现加密加速功能,以便加快文件级加密的速度并改善用户体验。
+除了对 Ext4 或 F2FS 加密提供功能支持外,设备制造商还可以考虑实现加密加速功能,以便加快文件级加密的速度并改善用户体验。
</p>
<h3 id="enabling-file-based-encryption">启用文件级加密</h3>
<p>
@@ -153,11 +124,15 @@ AOSP 提供的文件级加密实现会用到 Linux 4.4 内核中的 EXT4 加密
<h3 id="encryption-policy">加密政策</h3>
<p>
-EXT4 加密在目录级应用加密政策。首次创建设备的 <code>userdata</code> 分区时,会由 <code>init</code> 脚本应用基本结构和政策。这些脚本将触发创建首位用户(用户 0)的 CE 密钥和 DE 密钥,并定义要使用这些密钥加密哪些目录。创建其他用户和资料时,会生成必要的其他密钥并将其存储在密钥代码库中;接下来会为密钥创建凭据和设备存储位置,并且加密政策会将这些密钥关联到相应目录。
+文件级加密在目录级应用加密政策。首次创建设备的 <code>userdata</code> 分区时,会由 <code>init</code> 脚本应用基本结构和政策。这些脚本将触发创建首位用户(用户 0)的 CE 密钥和 DE 密钥,并定义要使用这些密钥加密哪些目录。创建其他用户和资料时,会生成必要的其他密钥并将其存储在密钥代码库中;接下来会为密钥创建凭据和设备存储位置,并且加密政策会将这些密钥关联到相应目录。
</p>
<p>
在 AOSP 当前提供的文件级加密实现中,加密政策被硬编码到了以下位置:
</p>
+<pre class="devsite-click-to-copy">/system/extras/libfscrypt/fscrypt_init_extensions.cpp</pre>
+<p>
+在 Android P 及更早版本中,该位置为:
+</p>
<pre class="devsite-click-to-copy">/system/extras/ext4_utils/ext4_crypt_init_extensions.cpp</pre>
<p>
可以在该文件中添加例外情况,以彻底防止特定目录被加密,具体方法是将相应目录添加到 <code>directories_to_exclude</code> 列表中。如果进行了此类修改,设备制造商应添加 <a href="/security/selinux/device-policy.html">SELinux 政策</a>,以便仅向需要使用未加密目录的应用授予访问权限(应排除所有不可信的应用)。
@@ -225,13 +200,18 @@ EXT4 加密在目录级应用加密政策。首次创建设备的 <code>userdata
为了确保实现的 FBE 功能版本能够按预期工作,需要部署多种 <a href="https://android.googlesource.com/platform/cts/+/master/hostsidetests/appsecurity/src/android/appsecurity/cts/DirectBootHostTest.java">CTS 加密测试</a>。
</p>
<p>
-可以顺利为您的主板编译内核后,还需要为 x86 编译内核并在 QEMU 下运行该内核,以便使用以下命令通过 <a hre="https://git.kernel.org/cgit/fs/ext2/xfstests-bld.git/plain/quick-start?h=META">xfstest</a> 进行测试:
+可以顺利为您的主板编译内核后,您还应该为 x86 编译内核并在 QEMU 下运行该内核,以便通过 <a hre="https://git.kernel.org/cgit/fs/ext2/xfstests-bld.git/plain/quick-start?h=META">kvm-xfstests</a> 进行测试。对于 Ext4,请使用:
</p>
<pre class="devsite-terminal devsite-click-to-copy">
-kvm-xfstests -c encrypt -g auto
+kvm-xfstests -c ext4/encrypt -g auto
</pre>
<p>
-此外,设备制造商可以执行这些手动测试。在启用了 FBE 的设备上进行以下手动测试:</p>
+对于 F2FS,请使用:
+</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+kvm-xfstests -c f2fs/encrypt -g auto
+</pre>
+<p>此外,设备制造商可以在启用了 FBE 的设备上进行以下手动测试:</p>
<ul>
<li>检查 <code>ro.crypto.state</code> 是否存在<ul>
diff --git a/zh-cn/security/enhancements/enhancements42.html b/zh-cn/security/enhancements/enhancements42.html
index 9c6383b8..c0444910 100644
--- a/zh-cn/security/enhancements/enhancements42.html
+++ b/zh-cn/security/enhancements/enhancements42.html
@@ -33,13 +33,13 @@ 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>FORTIFY_SOURCE</strong> - Android 现在实现了 <code>FORTIFY_SOURCE</code>,以供系统库和应用用于防范内存损坏。</li>
-<li><strong>ContentProvider 默认配置</strong> - 采用 API 17 级的应用会针对每个<a href="https://developer.android.com/reference/android/content/ContentProvider.html">内容提供程序</a>默认将“export”设为“false”,从而减小应用的默认受攻击面。</li>
+<li><strong>ContentProvider 默认配置</strong> - 采用 API 17 级的应用会针对每个<a href="https://developer.android.com/reference/android/content/ContentProvider.html">内容提供程序</a>默认将“export”设为“false”,从而缩小应用的默认受攻击面。</li>
<li><strong>加密</strong> - 修改了 SecureRandom 和 Cipher.RSA 的默认实现,以便使用 OpenSSL。为使用 OpenSSL 1.0.1 的 TLSv1.1 和 TLSv1.2 添加了安全套接字支持</li>
diff --git a/zh-cn/security/index.html b/zh-cn/security/index.html
index 18573db5..5d699c58 100644
--- a/zh-cn/security/index.html
+++ b/zh-cn/security/index.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/security/keystore/tags.html b/zh-cn/security/keystore/tags.html
index 1e847c89..2a9dcec4 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>
@@ -213,7 +213,7 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于向 <a href="/security/keystore/authentication/#authentication_token_format">begin</a>、<a href="/security/keystore/implementer-ref#begin">update</a> 或 <a href="/security/keystore/implementer-ref#update">finish</a> 提供<a href="/security/keystore/implementer-ref#finish">身份验证令牌</a>,以便向要求用户通过身份验证的密钥操作(密钥带有 <a href="#user_secure_id">Tag::USER_SECURE_ID</a>)证明相应用户已通过身份验证。</p>
+<p>用于向 <a href="/security/keystore/implementer-ref#begin">begin</a>、<a href="/security/keystore/implementer-ref#update">update</a> 或 <a href="/security/keystore/implementer-ref#finish">finish</a> 提供<a href="/security/keystore/authentication/#authentication_token_format">身份验证令牌</a>,以便向要求用户通过身份验证的密钥操作(密钥带有 <a href="#user_secure_id">Tag::USER_SECURE_ID</a>)证明相应用户已通过身份验证。</p>
<p>此标记的值是一个包含 <code>hw_auth_token_t</code> 结构的 Blob。</p>
@@ -286,7 +286,8 @@ typedef enum {
</p>
<p>在每次启动期间,引导加载程序都必须将启动映像的补丁程序级别提供给安全环境(相应机制是由实现定义的)。
</p>
-<p>必须由硬件强制执行。
+<p>
+必须由硬件强制执行。
</p>
<h2 id="bootloader_only">Tag::BOOTLOADER_ONLY</h2>
@@ -714,7 +715,8 @@ typedef enum {
<p>该标记的值是形式为 YYYYMMDD 的整数,其中 YYYY 表示上次更新时间的四位数年份,MM 表示上次更新时间的两位数月份,DD 表示上次更新时间的两位数日期。例如,对于上次更新时间为 2018 年 6 月 5 日的 Android 设备上生成的密钥,其值将表示为 20180605。</p>
<p>IKeymasterDevice HAL 必须从系统属性 <code>ro.vendor.build.security_patch</code> 读取当前供应商补丁程序级别,并在 HAL 首次加载时将其传递给安全环境(相应机制是由实现定义的)。在下次启动完成前,安全环境不得接受其他补丁程序级别。
</p>
-<p>必须由硬件强制执行。
+<p>
+必须由硬件强制执行。
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/overview/acknowledgements.html b/zh-cn/security/overview/acknowledgements.html
index 28b1e22b..a9694d39 100644
--- a/zh-cn/security/overview/acknowledgements.html
+++ b/zh-cn/security/overview/acknowledgements.html
@@ -20,11 +20,56 @@
limitations under the License.
-->
-<p>Android 安全团队衷心感谢以下个人和团队帮助提高 Android 安全性。他们或发现安全漏洞,并负责地通过 AOSP 错误跟踪工具<a href="https://www.google.com/appserve/security-bugs/m2/new">安全错误报告</a>模板向我们报告,或提交对 Android 安全性具有积极影响的代码(包括符合<a href="https://www.google.com/about/appsecurity/patch-rewards/">补丁程序奖励</a>计划条件的代码),帮助提高了 Android 安全性。</p>
+<p>Android 安全团队衷心感谢以下个人和团队帮助提高 Android 安全性。他们有的发现了安全漏洞,并负责地通过 AOSP 错误跟踪工具<a href="https://www.google.com/appserve/security-bugs/m2/new">安全错误报告</a>模板向我们报告,有的提交了对 Android 安全性具有积极影响的代码(包括符合<a href="https://www.google.com/about/appsecurity/patch-rewards/">补丁程序奖励</a>计划条件的代码),帮助提高了 Android 安全性。</p>
<h2 id="2018">2018 年</h2>
<p>2018 年的安全致谢信息将按月列出。过去几年的致谢信息是列在一起的。</p>
+<h4 id="nov-2018">11 月</h4>
+
+<table>
+ <tbody><tr>
+ <th>研究人员</th>
+ <th>CVE</th>
+ </tr>
+ <tr>
+ <td><a href="https://labs.mwrinfosecurity.com/" class="external">MWR 实验室</a>的 <a href="https://twitter.com/amarekano" class="external">Amar Menezes</a></td>
+ <td>CVE-2018-9524</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有限公司 Alpha 团队的 Elphet 和龚广</td>
+ <td>CVE-2018-9569、CVE-2018-9570、CVE-2018-9573、CVE-2018-9576、CVE-2018-9577</td>
+ </tr>
+ <tr>
+ <td>MS509Team (<a href="http://www.ms509.com" class="external">www.ms509.com</a>) 的 En He (<a href="https://twitter.com/@heeeeen4x" class="external">@heeeeen4x</a>) 和 Bo Liu</td>
+ <td>CVE-2018-9457</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>
+ <tr>
+ <td>Niky1235 (<a href="https://twitter.com/jiych_guru" class="external">@jiych_guru</a>)</td>
+ <td>CVE-2018-9347</td>
+ </tr>
+ <tr>
+ <td>Zimperium zLabs 团队的 Tamir Zahavi-Brunner (<a href="https://twitter.com/tamir_zb" class="external">@tamir_zb</a>)</td>
+ <td>CVE-2018-9539</td>
+ </tr>
+ <tr>
+ <td>IIE 的项晓波;奇虎 360 科技有限公司 Alpha 团队的龚广</td>
+ <td>CVE-2018-9571、CVE-2018-9572、CVE-2018-9574、CVE-2018-9575</td>
+ </tr>
+ <tr>
+ <td><a href="https://xlab.tencent.com/en/" class="external">腾讯安全玄武实验室</a>的王永科 (<a href="https://twitter.com/rudykewang" class="external">@Rudykewang</a>) 和 Xiangqian Zhang (<a href="https://twitter.com/h3rb0x" class="external">@h3rb0x</a>)</td>
+ <td>CVE-2018-9540、CVE-2018-9541</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有限公司成都安全响应中心的韩子诺 (<a href="http://weibo.com/ele7enxxh" class="external">weibo.com/ele7enxxh</a>)</td>
+ <td>CVE-2018-9527、CVE-2018-9544、CVE-2018-9545、CVE-2018-9578</td>
+ </tr>
+</tbody></table>
+
<h4 id="oct-2018">10 月</h4>
<table>
@@ -262,7 +307,7 @@
<td>CVE-2018-9418、CVE-2018-9419、CVE-2018-9413、CVE-2018-9365</td>
</tr>
<tr>
- <td>奇虎 360 IceSword 实验室的 Jianqiang Zhao (<a href="https://twitter.com/jianqiangzhao" class="external">@jianqiangzhao</a>) 和 pjf (<a href="http://weibo.com/jfpan">weibo.com/jfpan</a>)</td>
+ <td>奇虎 360 冰刃实验室的赵建强 (<a href="https://twitter.com/jianqiangzhao" class="external">@jianqiangzhao</a>) 和潘剑锋 (<a href="http://weibo.com/jfpan">weibo.com/jfpan</a>)</td>
<td>CVE-2018-9417</td>
</tr>
<tr>
@@ -410,7 +455,7 @@
<td>CVE-2017-6293、CVE-2018-6246</td>
</tr>
<tr>
- <td>奇虎 360 科技有限公司 IceSword 实验室的陈耿佳 (<a href="https://twitter.com/chengjia4574">@chengjia4574</a>) 和 <a href="http://weibo.com/jfpan">pjf</a></td>
+ <td>奇虎 360 科技有限公司冰刃实验室的陈耿佳 (<a href="https://twitter.com/chengjia4574">@chengjia4574</a>) 和<a href="http://weibo.com/jfpan">潘剑锋</a></td>
<td>CVE-2017-18153</td>
</tr>
<tr>
@@ -449,8 +494,7 @@
<th>CVE</th>
</tr>
<tr>
- <td>Google 的 Billy Lau
- </td>
+ <td>Google 的 Billy Lau</td>
<td>CVE-2017-13305</td>
</tr>
<tr>
@@ -462,7 +506,7 @@
<td>CVE-2017-13289、CVE-2017-13286</td>
</tr>
<tr>
- <td>Huawei L.O. 团队的 Cusas</td>
+ <td>华为公司 L.O. 团队的 Cusas</td>
<td>CVE-2017-13279</td>
</tr>
<tr>
@@ -478,8 +522,7 @@
<td>CVE-2017-13276</td>
</tr>
<tr>
- <td><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) 和 Bo Liu
- </td>
+ <td><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) 和 Bo Liu</td>
<td>CVE-2017-13294</td>
</tr>
<tr>
@@ -491,66 +534,47 @@
<td>CVE-2018-3596</td>
</tr>
<tr>
- <td>Haosheng Wang (<a href="https://twitter.com/gnehsoah">@gnehsoah</a>)</td>
- <td>CVE-2017-13280
- </td>
+ <td>王浩生 (<a href="https://twitter.com/gnehsoah">@gnehsoah</a>)</td>
+ <td>CVE-2017-13280</td>
</tr>
<tr>
- <td>Jean-Baptiste Cayrou (<a href="https://twitter.com/jbcayrou">@jbcayrou</a>)
- </td>
- <td>CVE-2017-13284
- </td>
+ <td>Jean-Baptiste Cayrou (<a href="https://twitter.com/jbcayrou">@jbcayrou</a>)</td>
+ <td>CVE-2017-13284</td>
</tr>
<tr>
- <td>奇虎 360 科技有限公司 Alpha 团队的戴建军 (<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) 和龚广
- </td>
- <td>CVE-2017-13291、CVE-2017-13283、CVE-2017-13282、CVE-2017-13281、CVE-2017-13267
- </td>
+ <td>奇虎 360 科技有限公司 Alpha 团队的戴建军 (<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) 和龚广</td>
+ <td>CVE-2017-13291、CVE-2017-13283、CVE-2017-13282、CVE-2017-13281、CVE-2017-13267</td>
</tr>
<tr>
- <td>Orange Labs 的 Patrick Delvenne (<a href="https://twitter.com/wintzx">@wintzx</a>)
- </td>
- <td>CVE-2018-3584
- </td>
+ <td>Orange Labs 的 Patrick Delvenne (<a href="https://twitter.com/wintzx">@wintzx</a>)</td>
+ <td>CVE-2018-3584</td>
</tr>
<tr>
- <td>百度安全实验室的丁鹏飞、包沉浮和韦韬
- </td>
- <td>CVE-2017-13306、CVE-2017-13290、CVE-2017-15837
- </td>
+ <td>百度安全实验室的丁鹏飞、包沉浮和韦韬</td>
+ <td>CVE-2017-13306、CVE-2017-13290、CVE-2017-15837</td>
</tr>
<tr>
- <td>Tencent Blade 团队
- </td>
- <td>CVE-2017-15853
- </td>
+ <td>Tencent Blade 团队</td>
+ <td>CVE-2017-15853</td>
</tr>
<tr>
- <td>Vasily Vasiliev
- </td>
- <td>CVE-2017-13297
- </td>
+ <td>Vasily Vasiliev</td>
+ <td>CVE-2017-13297</td>
</tr>
<tr>
- <td>阿里巴巴的 Weichao Sun (<a href="https://twitter.com/sunblate">@sunblate</a>)
- </td>
- <td>CVE-2017-13277
- </td>
+ <td>阿里巴巴的 Weichao Sun (<a href="https://twitter.com/sunblate">@sunblate</a>)</td>
+ <td>CVE-2017-13277</td>
</tr>
<tr>
<td>奇虎 360 科技有限公司 Vulpecker 团队的<a href="mailto:huahuaisadog@gmail.com">戴阳</a>和<a href="http://weibo.com/panyu6325">潘宇</a></td>
- <td>CVE-2017-13304
- </td>
+ <td>CVE-2017-13304</td>
</tr>
<tr>
- <td>奇虎 360 科技有限公司 IceSword 实验室的郭永刚 (<a href="https://twitter.com/guoygang">@guoygang</a>)
- </td>
- <td>CVE-2017-8269、CVE-2017-13307、CVE-2018-5826
- </td>
+ <td>奇虎 360 科技有限公司冰刃实验室的郭永刚 (<a href="https://twitter.com/guoygang">@guoygang</a>)</td>
+ <td>CVE-2017-8269、CVE-2017-13307、CVE-2018-5826</td>
</tr>
<tr>
- <td>Huawei L.O. 团队的 Zhongwen 和 Chao Dai
- </td>
+ <td>华为公司 L.O. 团队的 Zhongwen 和 Chao Dai</td>
<td>CVE-2017-13274</td>
</tr>
<tr>
@@ -625,7 +649,7 @@
<td>CVE-2017-13249、CVE-2017-13248、CVE-2017-13264</td>
</tr>
<tr>
- <td>蚂蚁金服巴斯光年安全实验室的<a href="http://www.weibo.com/wishlinux">吴潍浠</a> (<a href=" https://twitter.com/wish_wu">@wish_wu</a>)</td>
+ <td>蚂蚁金服巴斯光年安全实验室的<a href=" https://twitter.com/wish_wu">吴潍浠</a> (<a href="http://www.weibo.com/wishlinux">@wish_wu</a>)</td>
<td>CVE-2017-13259、CVE-2017-13272</td>
</tr>
<tr>
@@ -664,92 +688,64 @@
<td>CVE-2017-13235</td>
</tr>
<tr>
- <td>奇虎 360 科技有限公司 Alpha 团队的 Elphet 和龚广
- </td>
- <td>CVE-2017-13229
- </td>
+ <td>奇虎 360 科技有限公司 Alpha 团队的 Elphet 和龚广</td>
+ <td>CVE-2017-13229</td>
</tr>
<tr>
- <td><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) 和 Bo Liu
- </td>
- <td>CVE-2017-13242
- </td>
+ <td><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) 和 Bo Liu</td>
+ <td>CVE-2017-13242</td>
</tr>
<tr>
- <td>Google 的 Gal Beniamini
- </td>
- <td>CVE-2017-13236
- </td>
+ <td>Google 的 Gal Beniamini</td>
+ <td>CVE-2017-13236</td>
</tr>
<tr>
<td>奇虎 360 科技有限公司 Alpha 团队的陈豪和龚广</td>
- <td>CVE-2017-13245
- </td>
+ <td>CVE-2017-13245</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org">C0RE 团队</a>的 Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>)、<a href="mailto:shaodacheng2016@gmail.com">Dacheng Shao</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)
- </td>
- <td>CVE-2017-6258
- </td>
+ <td><a href="http://c0reteam.org">C0RE 团队</a>的 Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>)、<a href="mailto:shaodacheng2016@gmail.com">Dacheng Shao</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
+ <td>CVE-2017-6258</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org">C0RE 团队</a>的 Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>)、周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)
- </td>
- <td>CVE-2017-17767、CVE-2017-6279
- </td>
+ <td><a href="http://c0reteam.org">C0RE 团队</a>的 Hongli Han (<a href="https://twitter.com/HexB1n">@HexB1n</a>)、周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
+ <td>CVE-2017-17767、CVE-2017-6279</td>
</tr>
<tr>
- <td><a href="http://c0reteam.org">C0RE 团队</a>的周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)
- </td>
- <td>CVE-2017-13241、CVE-2017-13231
- </td>
+ <td><a href="http://c0reteam.org">C0RE 团队</a>的周明建 (<a href="https://twitter.com/Mingjian_Zhou">@Mingjian_Zhou</a>)</td>
+ <td>CVE-2017-13241、CVE-2017-13231</td>
</tr>
<tr>
- <td>Nightwatch Cybersecurity Research
- </td>
- <td>CVE-2017-13243
- </td>
+ <td>Nightwatch Cybersecurity Research</td>
+ <td>CVE-2017-13243</td>
</tr>
<tr>
<td><a href="mailto:jiych.guru&#64;gmail.com">Niky1235</a> (<a href="https://twitter.com/jiych_guru">@jiych_guru</a>)</td>
- <td>CVE-2017-13230、CVE-2017-13234
- </td>
+ <td>CVE-2017-13230、CVE-2017-13234</td>
</tr>
<tr>
- <td>Outware
- </td>
- <td>CVE-2017-13239
- </td>
+ <td>Outware</td>
+ <td>CVE-2017-13239</td>
</tr>
<tr>
- <td>PDD 安全团队的何淇丹 (<a href="https://twitter.com/flanker_hqd?lang=en">@flanker_hqd</a>)
- </td>
- <td>CVE-2017-13246
- </td>
+ <td>PDD 安全团队的何淇丹 (<a href="https://twitter.com/flanker_hqd?lang=en">@flanker_hqd</a>)</td>
+ <td>CVE-2017-13246</td>
</tr>
<tr>
- <td>腾讯安全平台部门的 Xiling Gong
- </td>
- <td>CVE-2017-15852
- </td>
+ <td>腾讯安全平台部门的 Xiling Gong</td>
+ <td>CVE-2017-15852</td>
</tr>
<tr>
- <td>奇虎 360 科技有限公司 IceSword 实验室的郭永刚 (<a href="https://twitter.com/guoygang">@guoygang</a>)
- </td>
- <td>CVE-2017-13273
- </td>
+ <td>奇虎 360 科技有限公司冰刃实验室的郭永刚 (<a href="https://twitter.com/guoygang">@guoygang</a>)</td>
+ <td>CVE-2017-13273</td>
</tr>
<tr>
- <td>腾讯安全平台部门的张博
- </td>
- <td>CVE-2015-9016
- </td>
+ <td>腾讯安全平台部门的张博</td>
+ <td>CVE-2015-9016</td>
</tr>
<tr>
- <td>奇虎 360 科技有限公司成都安全响应中心的<a href="http://weibo.com/ele7enxxh">韩子诺</a>
- </td>
- <td>CVE-2017-13232
- </td>
+ <td>奇虎 360 科技有限公司成都安全响应中心的<a href="http://weibo.com/ele7enxxh">韩子诺</a></td>
+ <td>CVE-2017-13232</td>
</tr>
</tbody></table>
@@ -1503,7 +1499,7 @@
<td>CVE-2017-0758、CVE-2017-0760</td>
</tr>
<tr>
- <td><a href="http://www.nsfocus.com/">NSFocus</a> 的 <a href="mailto:zhouzhenster@gmail.com">Zhen Zhou</a> (<a href="https://twitter.com/henices">@henices</a>)</td>
+ <td><a href="http://www.nsfocus.com/">绿盟科技</a>的<a href="mailto:zhouzhenster@gmail.com">周振</a> (<a href="https://twitter.com/henices">@henices</a>)</td>
<td>CVE-2017-0406</td>
</tr>
<tr>
@@ -1511,7 +1507,7 @@
<td>CVE-2017-0752</td>
</tr>
<tr>
- <td><a href="http://www.nsfocus.com/">NSFocus</a> 的 <a href="mailto:sundaywind2004@gmail.com">Zhixin Li</a></td>
+ <td><a href="http://www.nsfocus.com/">绿盟科技</a>的<a href="mailto:sundaywind2004@gmail.com">李志昕</a></td>
<td>CVE-2017-0406</td>
</tr>
<tr>
@@ -1815,7 +1811,7 @@
<p>阿里巴巴的 Weichao Sun (<a href="https://twitter.com/sunblate">@sunblate</a>)</p>
-<p>腾讯科恩实验室 (<a href="https://twitter.com/keen_lab">@keen_lab</a>) 的 Wen Niu (<a href="https://twitter.com/NWMonster">@NWMonster</a>)</p>
+<p>腾讯科恩实验室 (<a href="https://twitter.com/keen_lab">@keen_lab</a>) 的钮文 (<a href="https://twitter.com/NWMonster">@NWMonster</a>)</p>
<p><a href="http://c0reteam.org">C0RE 团队</a>的 <a href="mailto:vancouverdou@gmail.com">Wenke Dou</a></p>
@@ -1835,7 +1831,7 @@
<p>北京大学的 <a href="mailto:hanxinhui@pku.edu.cn">Xinhui Han</a></p>
-<p><a href="http://www.360safe.com/">奇虎 360</a><a href="http://c0reteam.org">C0RE 团队</a>的 Xuxian Jiang</p>
+<p><a href="http://www.360safe.com/">奇虎 360</a> <a href="http://c0reteam.org">C0RE 团队</a>的 Xuxian Jiang</p>
<p>Android Bionic 团队的 Yabin Cui</p>
@@ -2048,7 +2044,8 @@
<p><a href="http://www.sonymobile.com">索尼移动</a></p>
-<p><a href="https://www.sit.fraunhofer.de/">Fraunhofer SIT</a> 移动安全测试实验室的 Stephan Huber (<a href="mailto:Stephan.Huber@sit.fraunhofer.de">Stephan.Huber@sit.fraunhofer.de</a>)</p>
+<p><a href="https://www.sit.fraunhofer.de/">Fraunhofer SIT</a> 移动安全测试实验室的 Stephan Huber (<a href="mailto:Stephan.Huber@sit.fraunhofer.de">Stephan.Huber@sit.fraunhofer.de</a>)
+</p>
<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Stephen Smalley
<a href="https://android-review.googlesource.com/#/q/owner:%22Stephen+Smalley+%253Csds%2540tycho.nsa.gov%253E%22+status:merged">
diff --git a/zh-cn/security/overview/app-security.html b/zh-cn/security/overview/app-security.html
index 1bfa5288..a0393120 100644
--- a/zh-cn/security/overview/app-security.html
+++ b/zh-cn/security/overview/app-security.html
@@ -28,13 +28,13 @@
<p><strong>AndroidManifest.xml</strong>:<a href="https://developer.android.com/guide/topics/manifest/manifest-intro.html">AndroidManifest.xml</a> 文件是一个控制文件,用于告诉系统如何处理应用中的所有顶层组件(具体来说就是下面介绍的 Activity、服务、广播接收器和内容提供程序)。该文件还用于指定需要哪些权限。</p>
</li>
<li>
- <p><strong>Activity</strong>:<a href="https://developer.android.com/guide/topics/fundamentals/activities.html">Activity</a> 通常是指面向用户的单个任务的代码,通常包括向用户显示界面,但并不一定会这样,有些 Activity 就从不显示界面。通常情况下,应用的入口点是应用的其中一项活动。</p>
+ <p><strong>Activity</strong>:<a href="https://developer.android.com/guide/topics/fundamentals/activities.html">Activity</a> 通常是指面向用户的单个任务的代码,通常包括向用户显示界面,但也并不一定这样,有些 Activity 就从不显示界面。通常情况下,应用的入口点是应用的其中一项活动。</p>
</li>
<li>
<p><strong>服务</strong>:<a href="https://developer.android.com/guide/topics/fundamentals/services.html">服务</a>是指在后台运行的一段代码。服务可以在自己的进程中运行,也可以在其他应用的进程中运行。其他组件会“绑定”到某项服务,并通过远程过程调用来调用该服务的方法。比如媒体播放器就是一项服务:即使用户退出媒体选择界面,也可能仍然希望音乐继续播放。即使界面已关闭,服务也可使音乐继续播放。</p>
</li>
<li>
- <p><strong>广播接收器</strong>:<a href="https://developer.android.com/reference/android/content/BroadcastReceiver.html">广播接收器</a>是一种对象,在操作系统或其他应用发出称为 <a href="https://developer.android.com/reference/android/content/Intent.html">Intent</a> 的 IPC 机制时进行实例化。例如,应用可以注册一个接收器来接收电量不足的消息,并可以根据该信息改变自己的行为。</p>
+ <p><strong>广播接收器</strong>:<a href="https://developer.android.com/reference/android/content/BroadcastReceiver.html">广播接收器</a>是一种对象,该对象会在操作系统或其他应用发出称为 <a href="https://developer.android.com/reference/android/content/Intent.html">Intent</a> 的 IPC 机制时实例化。例如,应用可以注册一个接收器来接收电量不足的消息,并可以根据该信息改变自己的行为。</p>
</li>
</ul>
<h2 id="the-android-permission-model-accessing-protected-apis">Android 权限模式:访问受保护的 API</h2>
@@ -60,8 +60,8 @@
<h2 id="how-users-understand-third-party-applications">用户如何了解第三方应用</h2>
<p>当用户与第三方应用互动时,Android 会尽力让用户清楚这一情况,并让用户知道这些应用具备的功能。在安装任何应用之前,系统都会向用户显示一条明晰的消息,让用户知道要安装的应用请求获得的各项权限。安装完毕后,系统不会再次提示用户确认任何权限。</p>
<p>在安装前一刻显示权限的原因有很多。这时用户正在主动查看应用、开发者和功能方面的信息,以确定其是否符合自己的需求和期望。同样非常重要的一点是,他们尚未对要安装的应用做出心理或财务方面的承诺,并且可以轻松地将要安装的应用与其他替代应用进行比较。</p>
-<p>有些其他平台会使用不同的方式通知用户,即在每个会话开始时或用户正在使用应用时请求权限。Android 的愿景是让用户能够随意在应用之间无缝切换。每次都让用户确认会拖慢用户的操作速度,而且会导致 Android 无法提供良好的用户体验。如果让用户在安装应用时查看权限,用户便可以在不愿意授予相应权限时选择不进行安装。</p>
-<p>此外,许多界面研究表明,过度提示用户会导致用户开始在看到任何对话框时都选择“确定”。Android 的安全目标之一是向用户有效地传达重要的安全信息,而使用让用户习惯性忽略的对话框则无法做到这一点。如果只向用户提供一次重要信息并且仅在重要时刻提供,用户更有可能慎重思考他们要同意的是什么。</p>
+<p>有些其他平台会使用不同的方式通知用户,即在每个会话开始时或用户正在使用应用时请求权限。Android 的愿景是让用户能够随意在应用之间无缝切换。每次都要求用户确认会拖慢用户的操作速度,而且会导致 Android 无法提供良好的用户体验。如果让用户在安装应用时查看权限,用户便可以在不愿意授予权限时选择不予安装。</p>
+<p>此外,许多界面研究表明,过度提示用户会导致用户在看到任何对话框时都选择“确定”。Android 的安全目标之一是向用户有效地传达重要的安全信息,而使用让用户习惯性忽略的对话框则无法做到这一点。如果只向用户提供一次重要信息并且仅在重要时刻提供,用户更有可能慎重思考他们要同意的是什么。</p>
<p>有些平台会选择完全不显示与应用功能有关的任何信息。这种方式会导致用户无法轻松了解和讨论应用功能。尽管无法使所有用户都是在充分了解相关信息的情况下做出决定,但 Android 权限模式可让众多用户轻松获取与应用相关的信息。例如,如果遇到意外的权限请求,经验更丰富的用户可能会询问有关应用功能的关键问题,并在 <a href="htts://play.google.com">Google Play</a> 等所有用户都可以看到的位置分享他们的疑问。</p>
<table>
<tbody><tr>
@@ -114,10 +114,10 @@
<p>默认情况下,收集个人信息的所有应用都会仅限特定应用访问这些数据。如果某个应用选择通过 IPC 将数据提供给其他应用,那么这个授予访问权限的应用便可以限制由操作系统强制执行的 IPC 机制的权限。</p>
<h2 id="sensitive-data-input-devices">敏感数据输入设备</h2>
<p>Android 设备经常会提供可让应用与周围环境进行互动的敏感数据输入设备(例如,摄像头、麦克风或 GPS)。对于要使用这些设备的第三方应用,必须先由用户通过使用 Android 操作系统权限向其明确提供使用权限。安装应用时,安装程序会以提供名称的方式请求用户授予使用相应传感器的权限。</p>
-<p>如果某个应用想要知道用户所在的位置,则需要获得获取用户位置信息的权限。安装应用时,安装程序会询问用户是否允许相应应用获取用户的位置信息。如果用户不希望任何应用获取其位置信息,可以随时运行“设置”应用,转到“位置和安全”,然后取消选中“使用无线网络”和“启用 GPS 卫星”。这将针对用户设备上的所有应用停用需要使用位置信息的服务。</p>
+<p>如果某个应用想要知道用户所在的位置,则需要获得获取用户位置信息的权限。安装应用时,安装程序会询问用户是否允许该应用获取用户的位置信息。如果用户不希望任何应用获取其位置信息,可以随时运行“设置”应用,转到“位置和安全”,然后取消选中“使用无线网络”和“启用 GPS 卫星”。这将针对用户设备上的所有应用停用需要使用位置信息的服务。</p>
<h2 id="device-metadata">设备元数据</h2>
-<p>Android 还会尽力限制访问本身并不属于敏感数据,但可能会间接透露用户特征、用户偏好以及用户使用设备的方式的数据。</p>
-<p>默认情况下,应用无权访问操作系统日志、浏览器历史记录、电话号码以及硬件/网络标识信息。如果应用在安装时请求获得访问此类信息的权限,安装程序会询问用户是否允许相应应用访问此类信息。如果用户没有授予该权限,系统将不会安装相应应用。</p>
+<p>Android 还会尽力限制访问本身并不属于敏感数据,但可能会间接透露用户特征、用户偏好以及设备使用方式的数据。</p>
+<p>默认情况下,应用无权访问操作系统日志、浏览器历史记录、电话号码以及硬件/网络标识信息。如果应用在安装时请求获得访问此类信息的权限,安装程序会询问用户是否允许该应用访问此类信息。如果用户没有授予该权限,系统将不会安装应用。</p>
<h2 id="certificate-authorities">证书授权中心</h2>
<p>Android 中收录了一组已安装的系统证书授权中心,这些授权中心在整个系统范围内均可信。在 Android 7.0 之前的版本中,设备制造商可以修改其设备上搭载的 CA 组。不过,运行 7.0 及更高版本的设备将具有一组统一的系统 CA,并且不再允许设备制造商对其进行修改。
</p>
diff --git a/zh-cn/security/overview/reports.html b/zh-cn/security/overview/reports.html
index a9c1ccce..16eb3b73 100644
--- a/zh-cn/security/overview/reports.html
+++ b/zh-cn/security/overview/reports.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>
@@ -19,40 +19,56 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p>Android 安全团队有时会发布报告或白皮书。以下是一些最新发布的内容。</p>
+<p>Android 安全团队有时会发布安全报告或白皮书。以下是一些最新发布的内容。</p>
+
+<h2 id="enterprise-2018">Android Enterprise 安全性白皮书</h2>
+
+<p>这份安全性白皮书概述了 Android 为企业客户提供移动安全服务时采用的方法,并详细介绍了 Android 平台的优势、可用于实施控制的管理 API 范围,以及 Google Play 保护机制在检测威胁方面发挥的作用。</p>
+<p>
+<a href="/security/reports/Google_Android_Enterprise_Security_Whitepaper_2018.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="Enterprise" data-action="download">下载此白皮书</a></p>
+
+<a href="/security/reports/Google_Android_Enterprise_Security_Whitepaper_2018.pdf" class="gc-analytics-event" data-category="AOSP" data-label="Enterprise"><img src="/security/images/enterprise-whitepaper-cover.png" class="screenshot"/></a>
+
<h2 id="yir-2017">2017 年度回顾</h2>
<p>此报告介绍了 Google 在 2017 年为 Android 安全所做的一切。</p>
<p>
-<a href="/security/reports/Google_Android_Security_2017_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2017" data-action="download">下载该报告</a></p>
+<a href="/security/reports/Google_Android_Security_2017_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2017" data-action="download">下载此报告</a></p>
<a href="/security/reports/Google_Android_Security_2017_Report_Final.pdf" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2017"><img src="/security/images/yir-2017.png" class="screenshot"/></a>
<h2 id="yir-2016">2016 年度回顾</h2>
<p>此报告介绍了 Google 在 2016 年为 Android 安全所做的一切。</p>
-<p><a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2016" data-action="download">下载该报告</a></p>
+<p><a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2016" data-action="download">下载此报告</a></p>
<a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2016"><img src="/security/images/yir-2016.png" class="screenshot"/></a>
<h2 id="yir-2015">2015 年度回顾</h2>
<p>此报告介绍了 Google 在 2015 年为 Android 安全所做的一切。</p>
-<p><a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2015" data-action="download">下载该报告</a></p>
+<p><a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2015" data-action="download">下载此报告</a></p>
<a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2015"><img src="/security/images/yir-2015.png" class="screenshot"/></a>
<h2 id="yir-2014">2014 年度回顾</h2>
<p>此报告介绍了 Google 在 2014 年为 Android 安全所做的一切。</p>
-<p><a href="/security/reports/Google_Android_Security_2014_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2014" data-action="download">下载该报告</a></p>
+<p><a href="/security/reports/Google_Android_Security_2014_Report_Final.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2014" data-action="download">下载此报告</a></p>
<a href="/security/reports/Google_Android_Security_2014_Report_Final.pdf" class="gc-analytics-event" data-category="AOSP" data-label="YIR-2014"><img src="/security/images/yir-2014.png" class="screenshot"/></a>
+<h2 id="keeping-harmful-apps-out-of-play">确保有害应用无法在 Google Play 上架</h2>
+
+<p>此白皮书介绍了 Android 安全团队在审核和检测可能会给用户或其数据带来安全风险的应用时所采用的一些方法。</p>
+<p><a href="/security/reports/Android_WhitePaper_Final_02092016.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="GPP" data-action="download">下载此白皮书</a></p>
+
+<a href="/security/reports/Android_WhitePaper_Final_02092016.pdf" class="gc-analytics-event" data-category="AOSP" data-label="GPP"><img src="/security/images/gpp.png" class="screenshot"/></a>
+
<h2 id="PHA-classifications">潜在有害应用分类</h2>
<p>此报告介绍了 Android 安全团队所采用的应用分类法,可让您了解我们如何对可能会给用户或其数据带来安全风险的应用进行分类。</p>
-<p><a href="/security/reports/Google_Android_Security_PHA_classifications.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="PHA-classifications" data-action="download">下载该报告</a></p>
+<p><a href="/security/reports/Google_Android_Security_PHA_classifications.pdf" class="button" class="gc-analytics-event" data-category="AOSP" data-label="PHA-classifications" data-action="download">下载此报告</a></p>
<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf" class="gc-analytics-event" data-category="AOSP" data-label="PHA-classifications"><img src="/security/images/PHA-classification.png" class="screenshot"/></a>
diff --git a/zh-cn/security/selinux/compatibility.html b/zh-cn/security/selinux/compatibility.html
index 98a66e16..227d14e0 100644
--- a/zh-cn/security/selinux/compatibility.html
+++ b/zh-cn/security/selinux/compatibility.html
@@ -140,9 +140,7 @@ AOSP SELinux 政策已经为平台与之交互的 <code>vendor</code> 分区部
</tr>
</tbody></table>
<aside class="note">
- <strong>*</strong> 有关更多示例,请参阅
-<a href="https://android.googlesource.com/platform/system/sepolicy/+/master/private/file_contexts" class="external">
- <code>system/sepolicy/private/file_contexts</code></a>。</aside>
+ <strong>*</strong>有关更多示例,请参阅 <a href="https://android.googlesource.com/platform/system/sepolicy/+/master/private/file_contexts" class="external"><code>system/sepolicy/private/file_contexts</code></a>。</aside>
<p>
因此,您在 <code>vendor</code> 分区中标记额外的文件时,必须遵循特定规则(通过 <code>neverallows</code> 强制执行):
@@ -243,7 +241,7 @@ Vendor: allow v_domain sysfs:class perm;</pre>
<h3 id="policy-writability">政策可写性</h3>
<p>
-为了实现无需了解具体版本变化即可制定政策的目标,Android 8.0 包含平台公共政策类型与其属性之间的映射。类型 <code>foo</code> 映射到属性 <code>foo_v<em>N</em></code>,其中 <code><em>N</em></code> 是目标版本。<code>vN</code> 对应于 <code>PLATFORM_SEPOLICY_VERSION</code> 编译变量,格式为 <code>MM.NN</code>(其中 <code>MM</code> 对应于平台 SDK 编号,<code>NN</code> 是平台 sepolicy 特定版本)。
+为了实现无需了解具体版本变化即可制定政策的目标,Android 8.0 包含平台公共政策类型与其属性之间的映射。类型 <code>foo</code> 映射到属性 <code>foo_v<em>N</em></code>,其中 <code><em>N</em></code> 是目标版本 ,<code>vN</code> 对应于 <code>PLATFORM_SEPOLICY_VERSION</code> 编译变量,格式为 <code>MM.NN</code>(其中 <code>MM</code> 对应于平台 SDK 编号,<code>NN</code> 是平台 sepolicy 特定版本)。
</p>
<p>
公共政策中的属性未进行版本化,而是以 API 形式存在(可以据此构建平台和供应商政策,以使两个分区之间的接口保持稳定)。平台和供应商政策写入程序都可以像当前那样继续写入政策。
@@ -259,7 +257,7 @@ perm</em>;</code> 形式导出的平台公共政策包含在供应商政策中
<h3 id="policy-diffs">政策差异</h3>
<p>
-如果不在各版本差异中将属性映射到类型,那么通过向每种类型的末尾添加 <code>_v<em>N</em></code> 来自动创建属性不起任何作用。Android 维护着属性版本之间的映射以及类型到这些属性的映射。这是在前面提到的包含语句的映射文件(例如 (CIL))中完成的:
+如果不在各版本差异中将属性映射到类型,那么通过在每种类型的末尾添加 <code>_v<em>N</em></code> 来自动创建属性不起任何作用。Android 维护着属性版本之间的映射以及类型到这些属性的映射。这是在前面提到的包含语句的映射文件(例如 (CIL))中完成的:
</p>
<pre class="prettyprint">(typeattributeset foo_vN (foo))</pre>
diff --git a/zh-cn/security/selinux/customize.html b/zh-cn/security/selinux/customize.html
index 58b17172..fa4414f2 100644
--- a/zh-cn/security/selinux/customize.html
+++ b/zh-cn/security/selinux/customize.html
@@ -54,7 +54,7 @@
<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> 文件(SELinux 政策源代码文件的扩展)中,然后使用 <code>BOARD_SEPOLICY</code> 变量将其纳入到您的细分版本。</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>
@@ -227,7 +227,7 @@ audit_control setfcap</pre>
<h2 id="neverallow">neverallow 规则</h2>
-<p>SELinux <code>neverallow</code> 规则用于禁止在任何情况下都不应该发生的行为。通过<a href="/compatibility/cts/">兼容性</a>测试,现在会在各种设备上强制执行 SELinux <code>neverallow</code> 规则。</p>
+<p>SELinux <code>neverallow</code> 规则用于禁止在任何情况下都不应该发生的行为。通过执行<a href="/compatibility/cts/">兼容性</a>测试,现在各种设备上都会强制执行 SELinux <code>neverallow</code> 规则。</p>
<p>以下准则旨在协助制造商在自定义过程中避免出现与 <code>neverallow</code> 规则相关的错误。此处使用的规则编号与 Android 5.1 中使用的编号一致,并且会因版本而异。</p>
@@ -251,7 +251,7 @@ audit_control setfcap</pre>
<li><strong>system/sepolicy/public</strong>。其中包括所导出的用于供应商特定政策的政策。所有内容都会纳入 Android 8.0 <a href="/security/selinux/compatibility">兼容性基础架构</a>。公共政策会保留在不同版本上,因此您可以在自定义政策的 <code>/public</code> 中添加任何内容。正因如此,可存放在 <code>/public</code> 中的政策类型的限制性更强。将此目录视为相应平台的已导出政策 API:处理 <code>/system</code> 与 <code>/vendor</code> 之间的接口的所有内容都位于这里。</li>
<li><strong>system/sepolicy/private</strong>。包括系统映像正常运行所必需(但供应商映像政策应该不知道)的政策。</li>
<li><strong>system/sepolicy/vendor</strong>。包括位于 <code>/vendor</code> 但存在于核心平台树(非设备特定目录)中的组件的相关政策。这是编译系统区分设备和全局组件的软件工件;从概念上讲,这是下述设备专用政策的一部分。</li>
- <li><strong>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</strong>。包含设备专用政策,以及对政策进行的设备自定义(在 Android 8.0 及更高版本中,该政策对应于供应商映像组件的相关政策)。</li>
+ <li>device/manufacturer/device-name/sepolicy<strong></strong><var></var><var></var>。包含设备专用政策,以及对政策进行的设备自定义(在 Android 8.0 及更高版本中,该政策对应于供应商映像组件的相关政策)。</li>
</ul>
<h3 id="supported-policy-scenarios">支持的政策场景</h3>
<p>
@@ -301,7 +301,7 @@ audit_control setfcap</pre>
<strong>示例</strong>:添加新的非 AOSP HAL 以供无需 AOSP 模拟的客户端进程使用(因此,该进程需要自己的域)。
</p>
<p>
-与 <a href="#vendor-image-extensions-that-serve-extended-aosp-components">AOSP 扩展示例</a>类似,系统与供应商之间的互动政策必须位于供应商分区上的 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 目录中(以确保系统政策不知道与特定供应商有关的详细信息)。您可以在 <code>system/sepolicy/public</code> 中添加新的用于扩展该政策的公共类型;只能在现有 AOSP 政策的基础上进行添加,即不要移除 AOSP 公共政策。新添加的公共类型随后可用于 <code>system/sepolicy/private</code> 和 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中的政策。
+与 <a href="#vendor-image-extensions-that-serve-extended-aosp-components">AOSP 扩展示例</a>类似,系统与供应商之间的互动政策必须位于供应商分区上的 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 目录中(以确保系统政策不知道与特定供应商相关的详细信息)。您可以在 <code>system/sepolicy/public</code> 中添加新的用于扩展该政策的公共类型;只能在现有 AOSP 政策的基础上进行添加,即不要移除 AOSP 公共政策。新添加的公共类型随后可用于 <code>system/sepolicy/private</code> 和 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中的政策。
</p>
<p>
请注意,每次向 <code>system/sepolicy/public</code> 添加内容都会增加复杂程度,因为这会增加必须在映射文件中跟踪的新兼容性保证(会受到其他限制)。只有新类型和相关项允许在 <code>system/sepolicy/public</code> 中添加规则;属性和其他政策声明不受支持。此外,新的公共类型不能用于直接为 <code>/vendor</code> 政策中的对象添加标签。
@@ -321,6 +321,6 @@ audit_control setfcap</pre>
<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 eaf1f492..f154945b 100644
--- a/zh-cn/security/selinux/validate.html
+++ b/zh-cn/security/selinux/validate.html
@@ -24,7 +24,7 @@
<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>
@@ -60,8 +60,8 @@ tcontext=u:object_r:kmem_device:s0 tclass=chr_file
<p>以下是此拒绝事件的关键元素:</p>
<ul>
- <li>操作 - 试图进行的操作会使用括号突出显示:<code>read write</code> 或 <code>setenforce</code>。<em></em>
- </li><li>操作方 - <code>scontext</code>(来源环境)条目表示操作方;在此例中为<code> rmt_storage</code> 守护进程。<em></em>
+ <li><em></em>操作 - 试图进行的操作会使用括号突出显示:<code>read write</code> 或 <code>setenforce</code>。
+ </li><li><em></em>操作方 - <code>scontext</code>(来源环境)条目表示操作方;在此例中为<code> rmt_storage</code> 守护进程。
</li><li>对象 - <code>tcontext</code>(目标环境)条目表示是对哪个对象执行操作;在此例中为 kmem。<em></em>
</li><li>结果 - <code>tclass</code>(目标类别)条目表示操作对象的类型;在此例中为 <code>chr_file</code>(字符设备)。<em></em>
</li></ul>
diff --git a/zh-cn/setup/build/building-kernels.html b/zh-cn/setup/build/building-kernels.html
index ef657e32..ba49ca14 100644
--- a/zh-cn/setup/build/building-kernels.html
+++ b/zh-cn/setup/build/building-kernels.html
@@ -35,6 +35,18 @@
<th>编译配置</th>
</tr>
<tr>
+ <td>blueline</td>
+ <td>device/google/crosshatch-kernel</td>
+ <td><a href="#building-b1c1">说明</a></td>
+ <td>b1c1_defconfig</td>
+ </tr>
+ <tr>
+ <td>crosshatch</td>
+ <td>device/google/crosshatch-kernel</td>
+ <td><a href="#building-b1c1">说明</a></td>
+ <td>b1c1_defconfig</td>
+ </tr>
+ <tr>
<td>taimen</td>
<td>device/google/wahoo-kernel</td>
<td>kernel/msm</td>
@@ -241,7 +253,7 @@ git clone https://android.googlesource.com/kernel/common
<p><code>x86_64</code> 项目包含适用于 Nexus Player 的内核源代码,可用作在 Intel x86_64 芯片组上开展相关工作的着手点。</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/x86_64</pre>
-<h2 id="building">编译内核</h2>
+<h2 id="building">手动编译内核</h2>
<p>当您了解了内核的最后一条提交消息并已成功下载内核源代码和预编译的 gcc 后,就可以编译内核了。以下编译命令使用了 hikey 内核:</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">export ARCH=arm64</code>
@@ -264,4 +276,15 @@ export TARGET_PREBUILT_KERNEL=$your_kernel_path/arch/arm/boot/zImage-dtb
<p class="note"><strong>注意</strong>:内核名称因设备而异。要找到内核的正确文件名,请参阅内核源代码中的 <code>device/<var>VENDOR</var>/<var>NAME</var></code>。</p>
+<h2 id="building-b1c1">编译 Pixel 3 (blueline) 内核和 Pixel 3 XL (crosshatch) 内核</h2>
+
+<p>Pixel 3 和 Pixel 3 XL 的内核源代码已分为多个项目。使用 <a href="/setup/develop/repo#init">repo</a> 下载相应分支的内核源代码(在撰写本文时,<code><var>VERSION</var></code> 应为 <code>4.9-pie-qpr1</code>):</p>
+
+<pre class="devsite-terminal devsite-click-to-copy">repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-bluecross-$<var>VERSION</var></pre>
+<pre class="devsite-terminal devsite-click-to-copy">repo sync</pre>
+
+<p>然后使用以下内容编译内核:</p>
+
+<pre class="devsite-terminal devsite-click-to-copy">sh build/build.sh</pre>
+
</body></html> \ No newline at end of file
diff --git a/zh-cn/setup/build/jack.html b/zh-cn/setup/build/jack.html
index 5871e50b..50696dce 100644
--- a/zh-cn/setup/build/jack.html
+++ b/zh-cn/setup/build/jack.html
@@ -21,7 +21,7 @@
-->
<aside class="warning">
- <strong>警告</strong>:在 <a href="https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html" class="external">2017 年 3 月 14 日公告</a>发布之后,Jack 工具链已被弃用。Jack 是 Android 6.0 - 8.1 的默认 Android 编译工具链。
+ <strong>警告</strong>:自 <a href="https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html" class="external">2017 年 3 月 14 日的这份公告</a>发布之后,Jack 工具链便被弃用了。Jack 是 Android 6.0 - 8.1 的默认 Android 编译工具链。
</aside>
<p>Jack 是一种 Android 工具链,用于将 Java 源代码编译成 Android dex 字节码。要使用 Jack,您只需使用标准的 Makefile 命令来编译源代码树或您的项目即可,无需进行任何其他操作。Android 8.1 是使用 Jack 的最后一个版本。</p>
diff --git a/zh-cn/setup/build/running.html b/zh-cn/setup/build/running.html
index 827d73a7..06dc2f6e 100644
--- a/zh-cn/setup/build/running.html
+++ b/zh-cn/setup/build/running.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>运行版本</title>
+ <title>运行编译系统</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -40,6 +40,26 @@
</thead>
<tbody>
<tr>
+<td>Pixel 3 XL</td>
+<td>crosshatch</td>
+<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
+</tr>
+<tr>
+<td>Pixel 3</td>
+<td>blueline</td>
+<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
+</tr>
+<tr>
+<td>Pixel 2 XL</td>
+<td>taimen</td>
+<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
+</tr>
+<tr>
+<td>Pixel 2</td>
+<td>walleye</td>
+<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
+</tr>
+<tr>
<td>Pixel XL</td>
<td>marlin</td>
<td>按住音量调低键,然后按住电源键。<em></em><em></em></td>
@@ -248,6 +268,26 @@
</thead>
<tbody>
<tr>
+<td>Pixel 3 XL</td>
+<td>crosshatch</td>
+<td>aosp_crosshatch-userdebug</td>
+</tr>
+<tr>
+<td>Pixel 3</td>
+<td>blueline</td>
+<td>aosp_blueline-userdebug</td>
+</tr>
+<tr>
+<td>Pixel 2 XL</td>
+<td>taimen</td>
+<td>aosp_taimen-userdebug</td>
+</tr>
+<tr>
+<td>Pixel 2</td>
+<td>walleye</td>
+<td>aosp_walleye-userdebug</td>
+</tr>
+<tr>
<td>Pixel XL</td>
<td>marlin</td>
<td>aosp_marlin-userdebug</td>
@@ -370,7 +410,7 @@ unlock</code> 类似,刷写设备也会清空所有用户数据。</p>
<code>-w</code> 选项会清除设备上的 <code>/data</code> 分区;该选项在您第一次刷写特定设备时非常有用,但在其他情况下则没必要使用。</li>
</ol>
-<aside class="note"><strong>注意</strong>:在 Motorola Xoom 上通过 <code>fastboot</code> 创建的文件系统无法发挥最佳作用。建议您使用 <code>$ adb reboot
+<aside class="note"><strong>注意</strong>:在 Motorola Xoom 上通过 <code>fastboot</code> 创建的文件系统无法达到最佳工作状态。建议您使用 <code>$ adb reboot
recovery</code> 命令通过恢复功能来重新创建文件系统。在执行恢复操作时,打开菜单(同时按电源键和音量调高键),擦除缓存分区,然后擦除数据。</aside>
<h2 id="restoring-devices-to-factory-state">将设备恢复到出厂状态</h2>
diff --git a/zh-cn/setup/community.html b/zh-cn/setup/community.html
index cebc8a93..0bb9f7fc 100644
--- a/zh-cn/setup/community.html
+++ b/zh-cn/setup/community.html
@@ -248,6 +248,6 @@
<h2 id="for-business-inquiries">关于 Google 移动服务许可方面的问题</h2>
<p>请通过 <a href="https://www.android.com/gms/contact/">GMS 联系</a>表单咨询关于 <a href="https://www.android.com/gms/">Google 移动服务</a>许可的问题。其他非 GMS 合作伙伴关系问询可发送至 <a href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>。</p>
-<p>我们会阅读收到的每封邮件,但无法一一进行回复。如果我们能够提供相关帮助,一定会与您联系!</p>
+<p>我们会阅读收到的每封邮件,但无法一一进行回复。如果我们能够提供帮助,一定会与您联系!</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/setup/contribute/read-bug-reports.html b/zh-cn/setup/contribute/read-bug-reports.html
index ecca4dbb..e8ebb997 100644
--- a/zh-cn/setup/contribute/read-bug-reports.html
+++ b/zh-cn/setup/contribute/read-bug-reports.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>无论是任何类型的开发工作,出错都在所难免,而错误报告对于找出和解决问题至关重要。Android 的所有版本都支持通过 <a href="http://developer.android.com/tools/help/adb.html">Android 调试桥 (adb)</a> 获取错误报告;Android 4.2 及更高版本提供了一个<a href="http://developer.android.com/tools/device.html#developer-device-options">开发者选项</a>,供用户获取错误报告以及通过电子邮件、云端硬盘等分享报告。</p>
+<p>无论是任何类型的开发工作,出错都在所难免,而错误报告对于找出和解决问题至关重要。Android 的所有版本都支持通过 <a href="http://developer.android.com/tools/help/adb.html">Android 调试桥 (adb)</a> 获取错误报告;Android 4.2 及更高版本提供了一个<a href="http://developer.android.com/tools/device.html#developer-device-options">开发者选项</a>,供开发者获取错误报告以及通过电子邮件、云端硬盘等分享报告。</p>
<p>Android 错误报告中包含文本 (.txt) 格式的 <code>dumpsys</code>、<code>dumpstate</code> 和 <code>logcat</code> 数据,以便您轻松搜索特定内容。以下各部分详细说明了错误报告的组成部分、介绍了常见问题,并提供了关于查找与这些错误相关的日志的实用提示和 <code>grep</code> 命令。大多数部分中还包括 <code>grep</code> 命令及输出和/或 <code>dumpsys</code> 输出方面的示例。</p>
@@ -682,7 +682,7 @@ ACTIVITY MANAGER BROADCAST STATE (dumpsys activity broadcasts)
</section>
<p></p>
-<p>错误报告中还包含关于唤醒锁定的统计信息,唤醒锁定是应用开发者采用的一种机制,用于表明其应用需要设备保持开启状态。(要详细了解唤醒锁定,请参阅 <a href="https://developer.android.com/reference/android/os/PowerManager.WakeLock.html">PowerManager.WakeLock</a> 和<a href="https://developer.android.com/training/scheduling/wakelock.html#cpu">使 CPU 保持运行状态</a>)。
+<p>错误报告中还包含关于唤醒锁定的统计信息,唤醒锁定是应用开发者采用的一种机制,用于表明其应用需要设备保持开启状态。(要详细了解唤醒锁定,请参阅 <a href="https://developer.android.com/reference/android/os/PowerManager.WakeLock.html">PowerManager.WakeLock</a> 和<a href="https://developer.android.com/training/scheduling/wakelock.html#cpu">使 CPU 保持运行状态</a>。)
</p><p>唤醒锁定总时长统计信息<strong>仅</strong>跟踪唤醒锁定实际负责使设备保持唤醒状态的时间,<strong>不</strong>包括屏幕处于开启状态的时间。此外,如果同时持有多个唤醒锁定,系统会在它们之间分配唤醒锁定时长。</p>
diff --git a/zh-cn/setup/develop/64-bit-builds.html b/zh-cn/setup/develop/64-bit-builds.html
index 2c6e904d..0c967e11 100644
--- a/zh-cn/setup/develop/64-bit-builds.html
+++ b/zh-cn/setup/develop/64-bit-builds.html
@@ -28,7 +28,7 @@
<p>对于可执行文件和应用,编译系统默认仅编译 64 位版本,但您可以使用一个全局 <code>BoardConfig.mk</code> 变量或针对特定模块的变量来替换此设置。</p>
-<p class="caution"><strong>注意</strong>:如果某个应用提供了一个可供其他应用(32 位或 64 位)使用的 API,那么在该应用的清单中,<code>android:multiarch</code> 属性的值必须设为 <code>true</code> 以避免可能出现的错误。</p>
+<p class="caution"><strong>注意</strong>:如果某个应用提供了一个可供其他应用(32 位或 64 位)使用的 API,那么在该应用的清单中,<code>android:multiarch</code> 属性的值必须设为 <code>true</code>,以避免可能出现的错误。</p>
<h2 id="product_configuration">产品配置</h2>
diff --git a/zh-cn/setup/start/brands.html b/zh-cn/setup/start/brands.html
index 6fa3917d..1366b4ed 100644
--- a/zh-cn/setup/start/brands.html
+++ b/zh-cn/setup/start/brands.html
@@ -106,6 +106,6 @@
</p><h2 id="Questions">问题</h2>
-<p>如需了解更多品牌使用信息,请通过提交<a href="https://support.google.com/contact/partner_brand_approval">合作伙伴品牌咨询表单</a>与 Android 合作伙伴营销团队联系。</p>
+<p>如需了解更多品牌使用信息,请提交<a href="https://support.google.com/contact/partner_brand_approval">合作伙伴品牌咨询表单</a>,与 Android 合作伙伴营销团队联系。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/setup/start/p-release-notes.html b/zh-cn/setup/start/p-release-notes.html
index 12835d7a..8a7cab6e 100644
--- a/zh-cn/setup/start/p-release-notes.html
+++ b/zh-cn/setup/start/p-release-notes.html
@@ -58,7 +58,7 @@
<h4 id="dto_image_header_versioning">DTO 映像标头版本控制</h4>
-<p>此版本在 DTBO 映像标头中引入了<a href="/devices/architecture/dto/partitions">新的版本字段</a>。</p>
+<p>此版本在 DTBO 映像标头中引入了一个<a href="/devices/architecture/dto/partitions">新的版本字段</a>。</p>
<h4 id="dtbo_verification">DTBO 验证</h4>
@@ -130,7 +130,7 @@
<h4 id="system_as_root">系统作为 Root</h4>
-<p>搭载此版本的所有设备均必须使用 <a href="/devices/bootloader/system-as-root">system-as-root</a>,它会将 <code>ramdisk.img</code> 合并到 <code>system.img</code>(亦称为 no-ramdisk),而后者又会作为 <code>rootfs</code> 装载。</p>
+<p>搭载此版本的所有设备均必须使用 <a href="/devices/bootloader/system-as-root">system-as-root</a>,以便将 <code>ramdisk.img</code> 合并到 <code>system.img</code>(亦称为 no-ramdisk),而后者会作为 <code>rootfs</code> 进行装载。</p>
<h4 id="boot_image_header_versioning">启动映像标头版本控制</h4>
@@ -173,7 +173,7 @@
<h3 id="android_compatibility_definition_document_cdd">Android 兼容性定义文档 (CDD)</h3>
-<p><a href="/compatibility/android-cdd">Android 9 兼容性定义文档</a>基于<a href="/compatibility/cdd">之前版本</a>进行了迭代更新,包括有关新功能的更新以及针对之前所发布功能的要求做出的的更改。</p>
+<p><a href="/compatibility/android-cdd">Android 9 兼容性定义文档</a>是在<a href="/compatibility/cdd">之前版本</a>的基础上编写的,并进行了一些更新,以涵盖新功能,以及对之前已发布功能的要求进行的更改。</p>
<h2 id="settings">设置</h2>
@@ -296,7 +296,7 @@
<h4 id="file-based_encryption">文件级加密</h4>
-<p><a href="/security/encryption/file-based">文件级加密</a>已更新,可用于<a href="/devices/storage/adoptable">可合并的存储设备</a>。对于新设备,我们建议使用文件级加密而不是全盘加密。</p>
+<p><a href="/security/encryption/file-based">文件级加密</a>进行了更新,以支持<a href="/devices/storage/adoptable">可合并的存储设备</a>。对于新设备,我们建议使用文件级加密而不是全盘加密。</p>
<h4 id="metadata_encryption">元数据加密</h4>
@@ -328,11 +328,11 @@
<h4 id="version_binding">版本绑定</h4>
-<p>为了支持 Treble 的模块化结构并终止 <code>system.img</code> 到 <code>boot.img</code> 的绑定,Keymaster 4 将<a href="/security/keystore/version-binding">密钥版本绑定</a>模式更改为每个分区都具有单独的补丁程序级别。这允许每个分区独立更新,同时仍提供回滚保护。</p>
+<p>为了支持 Treble 的模块化结构并取消 <code>system.img</code> 到 <code>boot.img</code> 的绑定,Keymaster 4 对<a href="/security/keystore/version-binding">密钥版本绑定</a>模式进行了更改,使每个分区都有单独的补丁程序级别。这允许每个分区独立更新,同时仍提供回滚保护。</p>
<h4 id="android_protected_confirmation">Android 受保护的确认</h4>
-<p>搭载 Android 9 的受支持设备使开发者能够使用 <a href="https://developer.android.com/preview/features/security#android-protected-confirmation" class="external">Android Protected Confirmation API</a>。通过使用这个新 API,应用可以使用 <code><a href="https://developer.android.com/reference/android/security/ConfirmationPrompt.html">ConfirmationPrompt</a></code> 实例向用户显示提示,要求他们批准一条简短声明。此声明允许应用重新确认用户希望完成敏感交易,例如进行付款。</p>
+<p>在搭载 Android 9 的受支持设备上,开发者可以使用 <a href="https://developer.android.com/preview/features/security#android-protected-confirmation" class="external">Android Protected Confirmation API</a>。通过使用这个新 API,应用可以利用 <code><a href="https://developer.android.com/reference/android/security/ConfirmationPrompt.html">ConfirmationPrompt</a></code> 实例向用户显示提示,以提醒他们批准一条简短声明。此声明允许应用重新确认用户希望完成敏感交易,例如进行付款。</p>
<h3 id="selinux">SELinux</h3>
@@ -346,15 +346,15 @@
<h4 id="vendor_init">Vendor_init</h4>
-<p><a href="/security/selinux/vendor-init">供应商初始化</a>描述了以下更新:通过使用单独的 SELinux 域,利用供应商特定的权限运行 <code>/vendor</code> 命令,从而关闭 Treble 系统/供应商拆分中的 init 进程访问孔。</p>
+<p><a href="/security/selinux/vendor-init">供应商初始化</a>中介绍了相关更新,这些更新旨在弥补通过使用单独的 SELinux 域拆分的 Treble system/vendor 分区(以便利用供应商专属权限运行 <code>/vendor</code> 命令)中存在的 init 进程访问漏洞。</p>
<h4 id="system_properties">系统属性</h4>
-<p>Android 9 通过对<a href="/security/selinux/compatibility#system-property-and-process-labeling-ownership">系统属性</a>共享进行限制,阻止在不必要的情况下在 <code>system</code> 和 <code>vendor</code> 分区之间共享系统属性,同时提供了一种确保在共享系统属性之间保持一致性的方法。</p>
+<p>Android 9 禁止在非必要时在 <code>system</code> 和 <code>vendor</code> 分区之间共享<a href="/security/selinux/compatibility#system-property-and-process-labeling-ownership">系统属性</a>,并提供了一种用于确保在共享系统属性之间保持一致性的方法。</p>
<h5 id="selinux_attribute_tests">SELinux 属性测试</h5>
-<p>Android 9 包含新的<a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tests/sepolicy_tests.py" class="external">编译时测试</a>,可确保特定位置的所有文件都具有<a href="/security/selinux/compatibility#compatibility-attributes">适当的属性</a>。例如,<code>sysfs</code> 中的所有文件都具有所需的 <code>sysfs_type</code> 属性。</p>
+<p>Android 9 包含一些新的<a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tests/sepolicy_tests.py" class="external">编译时测试</a>,旨在确保特定位置的所有文件都具有<a href="/security/selinux/compatibility#compatibility-attributes">适当的属性</a>。例如,<code>sysfs</code> 中的所有文件都具有所需的 <code>sysfs_type</code> 属性。</p>
<h2 id="audio">音频</h2>
@@ -390,7 +390,7 @@
<h4 id="implementing_data_plans">实现流量套餐</h4>
-<p>此版本改善了对使用 <code>SubcriptionPlan</code> API <a href="/devices/tech/connect/data-plans">实现流量套餐</a>的运营商的支持。</p>
+<p>此版本可以更好地为使用 <code>SubcriptionPlan</code> API <a href="/devices/tech/connect/data-plans">实现流量套餐</a>的运营商提供支持。</p>
<h4 id="third-party_calling_apps">第三方通话应用</h4>
@@ -418,7 +418,7 @@
<h4 id="sim_state_broadcasts">SIM 状态广播</h4>
-<p>在此版本中,<code>Intent.ACTION_SIM_STATE_CHANGED</code> 已弃用,并添加了两个用于卡状态和卡应用状态的单独广播:<code>TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED</code> 和 <code>TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED</code>。</p>
+<p>此版本弃用了 <code>Intent.ACTION_SIM_STATE_CHANGED</code>,并针对卡状态和卡应用状态添加了两个单独的广播:<code>TelephonyManager.ACTION_SIM_CARD_STATE_CHANGED</code> 和 <code>TelephonyManager.ACTION_SIM_APPLICATION_STATE_CHANGED</code>。</p>
<p>通过此项变更,仅需要知道卡是否存在的接收器不再需要监听应用状态改变,并且仅需要知道卡应用是否准备好的接收器不需要监听卡状态改变。</p>
@@ -456,7 +456,7 @@
<li><code>config_wifi_framework_wifi_score_bad_rssi_threshold_24GHz</code></li>
<li><code>config_wifi_framework_wifi_score_entry_rssi_threshold_24GHz</code></li>
</ul>
-<aside class="note"><strong>注意</strong><span>:Android 8.1 中引入了“进入”值,并且选择了默认值以匹配“差”阈值的默认值,从而实现兼容性。理想情况下,进入阈值应比相应的退出(“差”)阈值高 3 分贝或更多。</span></aside>
+<aside class="note"><strong>注意</strong><span>:Android 8.1 中引入了“entry”值,并且会根据“bad”阈值的默认值来为其选择默认值,以实现兼容性。理想情况下,进入阈值应比相应的退出(“差”)阈值高 3 分贝或更多。</span></aside>
<h4 id="wi-fi_staap_concurrency">WLAN STA/AP 并发</h4>
<p><a href="/devices/tech/connect/wifi-sta-ap-concurrency">WLAN STA/AP 并发</a>可以让设备同时在电台 (STA) 和接入点 (AP) 模式下运行。对于支持同步双频段 (DBS) 的设备,此功能开启了新功能,例如,当用户想要启用热点 (softAP) 时不会中断 STA WLAN。</p>
@@ -532,7 +532,7 @@
<h3 id="gnss_hardware_model">GNSS 硬件型号</h3>
-<p>在 Android 9 中,GNSS HAL 1.1 或更高版本可以将有关硬件 API 的信息传递给平台。平台需要实现 <code>IGnssCallback</code> 接口并将句柄传递给 HAL。GNSS HAL 通过 <a href="https://developer.android.com/reference/android/location/LocationManager#getGnssHardwareModelName()" class="external"><code>LocationManager#getGnssHardwareModelName()</code></a> API 传递硬件型号信息。设备制造商应与其 GNSS HAL 提供商合作,尽可能提供此信息。</p>
+<p>在 Android 9 中,GNSS HAL 1.1 或更高版本可以将有关硬件 API 的信息传递给平台。平台需要实现 <code>IGnssCallback</code> 接口并向 HAL 传递一个句柄。GNSS HAL 通过 <a href="https://developer.android.com/reference/android/location/LocationManager#getGnssHardwareModelName()" class="external"><code>LocationManager#getGnssHardwareModelName()</code></a> API 传递硬件型号信息。设备制造商应与其 GNSS HAL 提供商合作,以尽可能提供此信息。</p>
<h2 id="permissions">权限</h2>
@@ -550,9 +550,9 @@
<p>Android 9 改进了对带宽估测的支持。如果 Android 应用知道可用的数据带宽,则可以更好地决定用于视频通话和视频串流的分辨率。</p>
-<p>在运行 Android 6.0 及更高版本的设备上,想对移动网络进行带宽估算的调用者会调用 <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#requestBandwidthUpdate(android.net.Network)" class="external"><code>ConnectivityManager.requestBandwidthUpdate()</code></a>,而且框架可以提供下行链路带宽估算值。<em></em></p>
+<p>在运行 Android 6.0 及更高版本的设备上,想获得移动网络带宽估算值的调用程序会调用 <a href="https://developer.android.com/reference/android/net/ConnectivityManager.html#requestBandwidthUpdate(android.net.Network)" class="external"><code>ConnectivityManager.requestBandwidthUpdate()</code></a>,而且框架可以提供下行链路带宽估算值。<em></em></p>
-<p>但是,在运行 Android 9 或更高版本的设备上,当估算的带宽发生显著变化时,<a href="https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback.html#onCapabilitiesChanged(android.net.Network,%20android.net.NetworkCapabilities)" class="external"><code>onNetworkCapabilitiesChanged()</code></a> callback 会自动触发,并且调用 <code>requestBandwidthUpdate()</code> 是空操作;相关的 <a href="https://developer.android.com/reference/android/net/NetworkCapabilities#getlinkdownstreambandwidthkbps" class="external"><code>getLinkDownstreamBandwidthKbps()</code></a> 和 <a href="https://developer.android.com/reference/android/net/NetworkCapabilities#getlinkupstreambandwidthkbps" class="external"><code>getLinkUpstreamBandwidthKbps()</code></a> 会填充由物理层提供的更新信息。</p>
+<p>但是,在运行 Android 9 或更高版本的设备上,当带宽估算值发生显著变化时,<a href="https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback.html#onCapabilitiesChanged(android.net.Network,%20android.net.NetworkCapabilities)" class="external"><code>onNetworkCapabilitiesChanged()</code></a> callback 会自动触发,并且调用 <code>requestBandwidthUpdate()</code> 是空操作;系统会为关联的 <a href="https://developer.android.com/reference/android/net/NetworkCapabilities#getlinkdownstreambandwidthkbps" class="external"><code>getLinkDownstreamBandwidthKbps()</code></a> 和 <a href="https://developer.android.com/reference/android/net/NetworkCapabilities#getlinkupstreambandwidthkbps" class="external"><code>getLinkUpstreamBandwidthKbps()</code></a> 填入由物理层提供的已更新信息。</p>
<p>此外,设备可以通过 <a href="https://developer.android.com/reference/android/telephony/ServiceState#getcellbandwidths" class="external"><code>ServiceState.getCellBandwidths()</code></a> 检查 LTE 单元带宽。这使应用可以确切地知道给定单元上可用的带宽(频率)有多少。通过隐藏菜单可以获得单元带宽信息,以便现场测试人员可以检查最新信息。</p>
@@ -568,16 +568,16 @@
<p>建议您使用验证程序检查给定备份数据是否存在无效值,并仅恢复有效数据(如 <code>core/java/android/provider/SettingsValidators.java</code>)。</p>
-<p>此功能在默认情况下处于启用状态。可以通过 <code>Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION</code> 停用 SettingsBackupAgent 对从未来版本进行恢复的支持。除非设备制造商扩展 ROM 中包含的某个备份代理(或添加一个自定义代理),否则无需进行任何额外的实现。</p>
+<p>此功能在默认情况下处于启用状态。可以通过 <code>Settings.Global.OVERRIDE_SETTINGS_PROVIDER_RESTORE_ANY_VERSION</code> 停止支持 SettingsBackupAgent(用于从未来版本进行恢复)。除非设备制造商扩展了 ROM 中包含的某个备份代理(或添加了自定义代理),否则无需进行任何额外的实现。</p>
<p>此功能允许系统从平台的未来版本进行恢复;不过,恢复后的数据可能会不完整,这一点是可以理解的。以下说明适用于下述备份代理:</p>
<ul>
<li><p><strong>PackageManagerBackupAgent</strong>:通过格式版本控制为未来版本的备份数据提供支持;此处的扩展程序必须与当前的恢复代码兼容,或遵循类中的指令(包括递增适当的常量)。</p></li>
<li><p><strong>SystemBackupAgent</strong>:在此版本及更高版本的 Android 中,<code>restoreAnyVersion = false</code>。不支持从更高版本的 API 进行恢复。</p></li>
-<li><p><strong>SettingsBackupAgent</strong>:从此版本开始,<code>restoreAnyVersion = true</code>
+<li><p><strong>SettingsBackupAgent</strong>:从此版本开始,<code>restoreAnyVersion = true</code>。
通过验证程序提供部分支持。如果目标操作系统中存在某项设置的验证程序,则可以从更高版本的 API 恢复该设置。添加任何设置都应附带该设置的验证程序。请查看相关类以了解详情。</p></li>
-<li><p>ROM 中包含的任何<strong>自定义备份代理</strong>都应在备份数据格式发生不兼容的更改时递增其版本号,并在其代理尚未准备好根据未来版本的代码处理备份数据时确保 <code>restoreAnyVersion = false</code>(默认值)。</p></li>
+<li><p>ROM 中包含的任何<strong>自定义备份代理</strong>都应做到以下两点:当备份数据格式发生不兼容的更改时,递增其版本号;如果其代理未做好准备,无法根据未来版本的代码处理备份数据,则应确保 <code>restoreAnyVersion = false</code>(默认值)。</p></li>
</ul>
<h2 id="enterprise">企业</h2>
@@ -626,6 +626,6 @@
<h3 id="batteryless_devices">无电池设备</h3>
-<p>Android 9 能够比以前的版本更得体地处理<a href="/devices/tech/power/batteryless">无电池设备</a>。Android 9 删除了一些以前的无电池设备代码,这些代码在默认情况下假装电池存在,充电率为 100%,并且运行状况良好(热敏电阻的温度读数正常)。</p>
+<p>Android 9 能够比以前的版本更得体地处理<a href="/devices/tech/power/batteryless">无电池设备</a>。Android 9 移除了以前的一些针对无电池设备的代码,这些代码在默认情况下会假装电池存在、已充满电且运行状况良好(其热敏电阻的温度读数正常)。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/setup/start/site-updates.html b/zh-cn/setup/start/site-updates.html
index be357501..6a5ede13 100644
--- a/zh-cn/setup/start/site-updates.html
+++ b/zh-cn/setup/start/site-updates.html
@@ -28,7 +28,7 @@
<p>欢迎访问修订后的 Android 开源项目 (AOSP) 网站。随着我们网站发展规模越来越大,我们重新改善了平台文档导航功能,以便更好地配合新信息和更新信息使用。</p>
-<p>有关重大更改的指南,请参阅以下各小节。有关功能摘要、更新和新增内容,请查看<a href="/setup/start/p-release-notes">版本说明</a>。您可以通过在 <a href="https://g.co/androidsourceissue" class="external">g.co/androidsourceissue</a> 中归档的错误,或通过点击该网站上每个网页页脚中的<a href="https://issuetracker.google.com/issues/new?component=191476">网站反馈</a>链接,向我们发送您的反馈。</p>
+<p>有关重大更改的指南,请参阅以下各小节。有关功能摘要、更新和新增内容,请查看<a href="/setup/start/p-release-notes">版本说明</a>。您可以通过以下方式向我们提交反馈:在 <a href="https://g.co/androidsourceissue" class="external">g.co/androidsourceissue</a> 上报告错误,或点击该网站上的<a href="https://issuetracker.google.com/issues/new?component=191476">网站反馈</a>链接(您可以在每个网页的页脚中找到该链接)。</p>
<h3 id="second-menu">另一个横向菜单</h3>
@@ -38,23 +38,23 @@
<h3 id="set-up">“设置”(Setup) 更名为“设置”(Set up)</h3>
-<p>主“设置”(Setup) 标签略微做了一些改动(更名为<strong>设置</strong> (Set up)),以便与用于后续主要标签的动词保持一致。<em></em>
-<strong>下载</strong>和<strong>编译</strong>内容已拆分为不同的子标签,以便于访问其中包含的页面。<em></em>“开发”子部分已重命名为<strong>创建</strong>子标签,以避免与新的同名顶级<strong>开发</strong>标签混淆。</p>
+<p>主“设置”(Setup) 标签的名称略微做了一点改动,改成了<strong>设置</strong> (Set up),以便与用于后续主要标签的动词保持一致。<em></em>
+<strong>下载</strong>和<strong>编译</strong>内容已拆分为不同的子标签,以便于访问其中包含的页面。“开发”子部分已更名为<strong>创建</strong>子标签,以避免与新增的顶级同名<strong>开发</strong>标签混淆。<em></em></p>
-<p><em></em>之前在“兼容性”&gt;“与我们联系”页面上提供的信息现已合并到<strong>设置 &gt; 通讯录(社区)</strong>主列表中。
+<p>之前在“兼容性”&gt;“与我们联系”页面上提供的信息现已合并到主<strong>设置 &gt; 联系方式(社区)</strong>列表中。<em></em>
</p>
<h3 id="design">“兼容性”更名为“设计”</h3>
-<p>以前在<em></em>“兼容性”顶级标签上提供的信息现位于<strong>设计</strong>下。要大致了解该计划以及指向新的 Android 兼容性定义文档 (CDD) 的链接,请参阅<strong>兼容性</strong>子标签。<em></em></p>
+<p>以前在“兼容性”顶级标签中提供的信息现位于<strong>设计</strong>下。<em></em>要大致了解该计划以及指向新的《Android 兼容性定义文档》(CDD) 的链接,请参阅<strong>兼容性</strong>子标签。<em></em></p>
-<p><em></em>在相关更改中,Android 兼容性测试套件 (CTS) 的说明和常规调试信息已移至新的<strong>测试</strong>子标签。<strong>显示</strong>和<strong>设置</strong>菜单指南已转移到专用子标签。</p>
+<p>在相关更改中,关于《Android 兼容性测试套件》(CTS) 的说明以及常规的调试信息已移至新的<strong>测试</strong>子标签。<em></em><strong>显示</strong>和<strong>设置</strong>菜单指南已转移到专用子标签。</p>
<h3 id="develop">“移植”更名为“开发”</h3>
-<p><em></em>“移植”标签已更名为<strong>开发</strong>,以更好地传达此标签包含的说明。本文档主要侧重于实现各个接口,可帮助您编写将设备连接到 Android 操作系统所需的驱动程序。</p>
+<p>“移植”标签已更名为<strong>开发</strong>,以更好地体现此标签中包含的说明。<em></em>本文档主要侧重于实现各个接口,可帮助您编写将设备连接到 Android 操作系统所需的驱动程序。</p>
-<p>因此,描述总体 HIDL 格式的<strong>架构</strong>部分已移至<em></em><strong>设计</strong>标签,以便在开发周期早期的规划阶段予以考虑。<strong>引导加载程序</strong>内容现在位于<strong>设计 &gt; 架构</strong>下,同时引入了<strong>互动</strong>子标签以包含输入、传感器和相关信息。<em></em><em></em></p>
+<p>因此,描述总体 HIDL 格式的<strong>架构</strong>部分已移至<strong>设计</strong>标签,以便在开发周期早期的规划阶段予以考虑。<em></em><strong>引导加载程序</strong>内容现在位于<strong>设计 &gt; 架构</strong>下,同时引入了<strong>交互性</strong>子标签,以包含输入、传感器和相关信息。<em></em><em></em></p>
<p><strong>连接</strong>部分已经过重新整理,包含<strong>蓝牙和 NFC</strong>、<strong>通话和短信</strong>、<strong>运营商</strong>和 <strong>WLAN</strong> 子部分。此外,WLAN 部分还包含以下新文章:</p>
@@ -68,7 +68,7 @@
<h3 id="configure">“微调”更名为“配置”</h3>
-<p><em></em>“微调”标签已更名为<strong>配置</strong>,以封装多个自定义和优化步骤。<em></em>现在,您可以在<strong>企业</strong>下找到以前的“设备管理”子部分。<em></em>“ART 和 Dalvik”内容位于 <strong>ART</strong> 下方,“无线下载 (OTA) 更新”<em></em>信息位于<strong>更新</strong>下方。</p>
+<p>“微调”标签已更名为<strong>配置</strong>,因为除了自定义和优化步骤之外,还会包含其他信息。<em></em>现在,您可以在<strong>企业</strong>下方找到以前的“设备管理”子部分。<em></em>ART 和 Dalvik 内容位于 <strong>ART</strong> 下方,无线下载 (OTA) 更新信息位于<strong>更新</strong>下方。<em></em><em></em></p>
<h2 id="Dec-2017">2017 年 12 月</h2>
<p>
@@ -128,7 +128,7 @@ Android 8.1 中的 WLAN 感知功能支持多个设备直接通过 WLAN 进行
<h2 id="Nov-2017">2017 年 11 月</h2>
<p>
-<em></em>“源代码”部分已更名为<a href="/setup"><em>设置</em></a>。我们设置了重定向,以确保旧网址仍可正常运行。
+“源代码”部分已更名为<a href="/setup"><em>设置</em></a>。<em></em>我们设置了重定向,以确保旧网址仍可正常运行。
</p>
<h2 id="Sept-2017">2017 年 9 月</h2>
@@ -173,7 +173,9 @@ SquashFS 是一个面向 Linux 且经过压缩的只读文件系统,适合在
<h4>模糊测试</h4>
<p>
-AOSP 提供了用于测试 <a href="/devices/tech/dalvik/">Android Runtime (ART)</a> 基础架构的全新模糊测试套件。全新的工具包 JFuzz 以及经过改进的 DexFuzz 现在可以直接在 AOSP 中获得,并且随附了相关文档。请参阅:<a href="https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md">https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md</a> <a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README">https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README</a>
+AOSP 提供了用于测试 <a href="/devices/tech/dalvik/">Android Runtime (ART)</a> 基础架构的全新模糊测试套件。全新的工具包 JFuzz 以及经过改进的 DexFuzz 现在可以直接在 AOSP 中获得,并且随附了相关文档。请参阅:
+ <a href="https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md">https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md</a>
+ <a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README">https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README</a>
</p>
<p>
无需执行任何操作,即可实现或使用这些新工具。必要时您可以对这些工具进行更改,就像您可以更改运行时/编译器一样。
@@ -440,7 +442,7 @@ cts-tradefed run cts -m CtsLibcoreOkHttpTestCases</pre>
<a href="https://developer.android.com/reference/android/printservice/PrintService.html" class="external">打印服务</a>是一款应用,可用于发现打印机并将其呈现给设备的打印框架。在较低的 Android 版本中,用户必须搜索并安装第三方打印服务才能进行打印。
</p>
<p>
-Android 8.0 在 <code><a href="https://android.googlesource.com/platform/packages/services/BuiltInPrintService/" class="external">platform/packages/services/BuiltInPrintService/</a></code> 中纳入了一项默认打印服务,该服务可让用户在现代打印机上进行打印,而无需安装额外的应用。此实现支持符合以下条件的打印机:使用互联网打印协议 (IPP) 进行通信,并使用 PCLm、PWG-Raster 或 PDF 发送可打印的内容。对于较旧的打印机,用户应安装 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/PrintRecommendationService/" class="external">PrintRecommendationService</a> 推荐的应用(如<a href="https://youtu.be/M_JGeGLpOKs?t=16m20s" class="external">此 I/O 演示</a>中所示)。
+Android 8.0 在 <code><a href="https://android.googlesource.com/platform/packages/services/BuiltInPrintService/" class="external">platform/packages/services/BuiltInPrintService/</a></code> 中纳入了一项默认打印服务,以便用户在新型打印机上进行打印,而无需安装额外的应用。此实现支持符合以下条件的打印机:使用互联网打印协议 (IPP) 进行通信,并使用 PCLm、PWG-Raster 或 PDF 发送可打印的内容。要使用旧式打印机,用户应安装 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/PrintRecommendationService/" class="external">PrintRecommendationService</a> 推荐的应用(如<a href="https://youtu.be/M_JGeGLpOKs?t=16m20s" class="external">此 I/O 演示</a>中所示)。
</p><h3 id="reference">参考资料更新</h3>
<p>
@@ -495,17 +497,17 @@ Android 8.0 利用 EXT4 文件系统的“配额”支持,近乎即时地提
<h3 id="top-tabs">新的顶级标签</h3>
<p>
-<em></em>之前的“设备”标签已更名为<a href="/devices/">移植</a>,同时之前的“核心技术”子标签已更名为<em></em><a href="/devices/tech/">微调</a>并移到了网站顶部,以便更好地显示给用户。
+<em></em>之前的“设备”标签已更名为<a href="/devices/">移植</a>,同时之前的“核心技术”子标签已更名为<em></em><a href="/devices/tech/">微调</a>,并移到了网站顶部,以便更好地显示给用户。
</p>
<h3 id="security-forefront">“安全性”标签排在了前列</h3>
<p>
-随着人们越来越关注 Android 的安全性,我们将<a href="/security/">安全性</a>标签向前移到了<a href="/setup/">源代码</a>旁边,以体现其重要性。
+鉴于人们越来越关注 Android 的安全性,我们将<a href="/security/">安全性</a>标签向前移到了<a href="/setup/">源代码</a>旁边,以体现其重要性。
</p>
<h3 id="reference-materials">更好的参考资料</h3>
<p>
- 您可以直接从顶层的<a href="/reference/">参考资料</a>标签获得<a href="/reference/hal/">硬件抽象层</a>和 <a href="/reference/tradefed/packages">Trade Federation</a> 参考资料。
+ 您可以直接从顶层的<a href="/reference/">参考资料</a>标签中找到<a href="/reference/hal/">硬件抽象层</a>和 <a href="/reference/tradefed/packages">Trade Federation</a> 参考资料。
</p>
<h3 id="code-links">每页都有的代码链接</h3>
diff --git a/zh-tw/security/bulletin/2018-07-01.html b/zh-tw/security/bulletin/2018-07-01.html
index 392363d7..5c4b2e86 100644
--- a/zh-tw/security/bulletin/2018-07-01.html
+++ b/zh-tw/security/bulletin/2018-07-01.html
@@ -31,7 +31,7 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
在這些問題中,最嚴重的就是媒體架構中嚴重程度「最高」的安全性漏洞。遠端攻擊者可利用這類漏洞,在獲得授權的程序環境內透過特製檔案執行任何程式碼。<a href="/security/overview/updates-resources.html#severity">嚴重程度評定標準</a>是假設平台與服務的因應防護措施基於開發作業的需求而被關閉,或是遭到有心人士破解,然後推算當有人惡意運用漏洞時,使用者的裝置會受到多大的影響,據此評定漏洞的嚴重程度。
</p>
<p>
-針對這些新發現的漏洞,我們目前尚未收到任何客戶回報相關的漏洞濫用案例。如果想進一步瞭解 <a href="#mitigations">Android 安全性平台防護措施</a>和 Google Play 安全防護機制如何加強 Android 平台的安全性,請參閱 <a href="/security/enhancements/index.html">Android 和 Google Play 安全防護機制所提供的因應措施</a>。
+針對這些新發現的漏洞,我們目前尚未收到任何客戶回報相關的漏洞濫用案例。如果想進一步瞭解 <a href="/security/enhancements/index.html">Android 安全性平台防護措施</a>和 Google Play 安全防護機制如何加強 Android 平台的安全性,請參閱 <a href="#mitigations">Android 和 Google Play 安全防護機制所提供的因應措施</a>。
</p>
<p class="note">
<strong>注意:</strong>在 <a href="/security/bulletin/pixel/2018-07-01.html">2018 年 7 月 Pixel/Nexus 安全性公告</a>中,我們提供了 Google 裝置適用的最新無線下載更新 (OTA) 和韌體映像檔的相關資訊。
diff --git a/zh-tw/security/bulletin/2018-08-01.html b/zh-tw/security/bulletin/2018-08-01.html
index fa5f0c18..9be6ebf5 100644
--- a/zh-tw/security/bulletin/2018-08-01.html
+++ b/zh-tw/security/bulletin/2018-08-01.html
@@ -337,8 +337,7 @@ QC-CR#2204872</a></td>
</tbody></table>
<h3 id="qualcomm-closed-source-components">Qualcomm 封閉原始碼元件</h3>
-<p>
-以下列出會影響 Qualcomm 元件的安全性漏洞,詳情請參考適用的 Qualcomm AMSS 安全性公告或安全性警示。這些問題的嚴重程度是由 Qualcomm 直接評定。</p>
+<p>以下列出會影響 Qualcomm 元件的安全性漏洞,詳情請參考適用的 Qualcomm AMSS 安全性公告或安全性警示。這些問題的嚴重程度是由 Qualcomm 直接評定。</p>
<table>
<colgroup><col width="21%" />
diff --git a/zh-tw/security/bulletin/2018-09-01.html b/zh-tw/security/bulletin/2018-09-01.html
index 0daf32cb..37449f75 100644
--- a/zh-tw/security/bulletin/2018-09-01.html
+++ b/zh-tw/security/bulletin/2018-09-01.html
@@ -293,38 +293,6 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
</tr>
</tbody></table>
-<h3 id="update-media-framework">更新項目:媒體架構</h3>
-<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製檔案在獲得授權的程序環境內執行任何程式碼。</p>
-
-<table>
- <colgroup><col width="21%" />
- <col width="21%" />
- <col width="14%" />
- <col width="14%" />
- <col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>參考資料</th>
- <th>類型</th>
- <th>嚴重程度</th>
- <th>更新的 Android 開放原始碼計劃版本</th>
- </tr>
- <tr>
- <td>CVE-2018-9411</td>
- <td><a href="https://android.googlesource.com/platform/system/libhidl/+/93484b9b015d47c0f7e5f4449a214b2fed8bed4f" class="external">A-79376389</a></td>
- <td>RCE</td>
- <td>最高</td>
- <td>8.0、8.1、9</td>
- </tr>
- <tr>
- <td>CVE-2018-9427</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/av/+/29d991fac25b261a72ce73f96c9df594ea5b9242" class="external">A-77486542</a></td>
- <td>RCE</td>
- <td>最高</td>
- <td>8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-09-05-details">2018-09-05 安全性修補程式等級 - 資安漏洞詳情</h2>
<p>
下列各節針對 2018-09-05 安全性修補程式等級適用的各項安全性漏洞提供了詳細資訊,我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了一些詳細資料,例如 CVE、相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>、元件 (在適用情況下),和更新的 Android 開放原始碼計劃版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
diff --git a/zh-tw/security/bulletin/2018-11-01.html b/zh-tw/security/bulletin/2018-11-01.html
index 762f9e9c..8b36c8e7 100644
--- a/zh-tw/security/bulletin/2018-11-01.html
+++ b/zh-tw/security/bulletin/2018-11-01.html
@@ -19,13 +19,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>發佈日期:2018 年 11 月 5 日</em></p>
+<p><em>發佈日期:2018 年 11 月 5 日 | 更新日期:2018 年 11 月 5 日</em></p>
<p>
-Android 安全性公告列舉會對 Android 裝置造成影響的安全性漏洞,並說明各項相關細節。2018-11-05 之後的安全性修補程式等級已解決了這些問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
+Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,並說明各項相關細節。2018-11-05 之後的安全性修補程式等級已解決了這些問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
</p>
<p>
-Android 的合作夥伴至少會提前一個月收到公告中所有問題的相關通知。這些問題的原始碼修補程式將於接下來 48 小時內發佈到 Android 開放原始碼計劃 (AOSP) 存放區,等到相關 Android 開放原始碼計劃連結建立完成後,我們就會修訂這則公告。</p>
+Android 的合作夥伴至少會提前一個月收到公告中所有問題的相關通知。這些問題的原始碼修補程式已發佈到 Android 開放原始碼計劃 (AOSP) 存放區中,且公告中亦提供相關連結。此外,本公告也提供 Android 開放原始碼計劃以外的修補程式連結。</p>
<p>
本節中最嚴重的漏洞可能會讓鄰近的攻擊者得以利用特製檔案在獲得授權的程序環境內執行任何程式碼。<a href="/security/overview/updates-resources.html#severity">嚴重程度評定標準</a>是假設平台與服務的因應防護措施基於開發作業的需求而被關閉,或是遭到有心人士破解,然後推算當有人惡意運用漏洞時,使用者的裝置可能會受到多大的影響,據此評定漏洞的嚴重程度。
</p>
@@ -35,7 +35,6 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
<p class="note">
<strong>注意:</strong>在 <a href="/security/bulletin/pixel/2018-11-01">2018 年 11 月 Pixel/Nexus 安全性公告</a>中,我們提供了 Google 裝置適用的最新無線下載更新 (OTA) 和韌體映像檔的相關資訊。
</p>
-
<h2 id="announcements">公告事項</h2>
<p>
我們在 Libxaac 程式庫中發現多個安全性問題,包括:CVE-2018-9528、CVE-2018-9529、CVE-2018-9530、CVE-2018-9531、CVE-2018-9532、CVE-2018-9533、CVE-2018-9534、CVE-2018-9535、CVE-2018-9569、CVE-2018-9570、CVE-2018-9571、CVE-2018-9572、CVE-2018-9573、CVE-2018-9574、CVE-2018-9575、CVE-2018-9576、CVE-2018-9577 和 CVE-2018-9578。</p>
@@ -71,21 +70,21 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
</tr>
<tr>
<td>CVE-2018-9522</td>
- <td>A-112550251</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/181dc252ddec574464882970d3fab290e8b625b5" class="external">A-112550251</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9524</td>
- <td>A-34170870</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c9bc35a45da1e765eb36af604c0c580bd66644cc" class="external">A-34170870</a></td>
<td>EoP</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
</tr>
<tr>
<td>CVE-2018-9525</td>
- <td>A-111330641</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Settings/+/6409cf5c94cc1feb72dc078e84e66362fbecd6d5" class="external">A-111330641</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
@@ -110,42 +109,42 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
</tr>
<tr>
<td>CVE-2018-9527</td>
- <td>A-112159345</td>
+ <td><a href="https://android.googlesource.com/platform/external/tremolo/+/cafff8f4535c8bf933c5a2fcb1a0dd66fb75a1c2" class="external">A-112159345</a></td>
<td>RCE</td>
<td>最高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9531</td>
- <td>A-112661641</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/c2208f2a3098410c5a4c79ad6bd4b6d7e1c0b03f" class="external">A-112661641</a></td>
<td>RCE</td>
<td>最高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9536</td>
- <td>A-112662184</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/9744e41c40598c6a0b74440f3b5be63f9f3708a5" class="external">A-112662184</a></td>
<td>EoP</td>
<td>最高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9537</td>
- <td>A-112891564</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/61381bd0f4bc012876ccf4b63eafddd2d60c35c9" class="external">A-112891564</a></td>
<td>EoP</td>
<td>最高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9521</td>
- <td>A-111874331</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/083263937bfb1623adf6015da7ca3cdc258e0352" class="external">A-111874331</a></td>
<td>RCE</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9539</td>
- <td>A-113027383</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/efe34a570d91b826b009d40e44c2e470dd180ace" class="external">A-113027383</a></td>
<td>EoP</td>
<td>高</td>
<td>8.0、8.1、9</td>
@@ -170,42 +169,42 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
</tr>
<tr>
<td>CVE-2018-9540</td>
- <td>A-111450417</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/99d54d0c7dbab6c80f15bbf886ed203b2a547453" class="external">A-111450417</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9542</td>
- <td>A-111896861</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111896861</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9543</td>
- <td>A-112868088</td>
+ <td><a href="https://android.googlesource.com/platform/external/f2fs-tools/+/71313114a147ee3fc4a411904de02ea8b6bf7f91" class="external">A-112868088</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9544</td>
- <td>A-113037220</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113037220</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9545</td>
- <td>A-113111784</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e3fbbdeb251dc59890e469c627fce322614944c0" class="external">A-113111784</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td rowspan="2">CVE-2018-9541</td>
- <td rowspan="2">A-111450531</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/system/bt/+/cc364611362cc5bc896b400bdc471a617d1ac628" class="external">A-111450531</a></td>
<td>ID</td>
<td>中</td>
<td>9</td>
@@ -217,54 +216,6 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
</tr>
</tbody></table>
-<h3 id="update-media-framework">更新項目:媒體架構</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>參考資料</th>
- <th>類型</th>
- <th>嚴重程度</th>
- <th>更新的 Android 開放原始碼計劃版本</th>
- </tr>
- <tr>
- <td>CVE-2018-9347</td>
- <td>A-68664359</td>
- <td>DoS</td>
- <td>中</td>
- <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
-<h3 id="update-system">更新項目:系統</h3>
-
-<table>
-<colgroup><col width="21%" />
-<col width="21%" />
-<col width="14%" />
-<col width="14%" />
-<col width="30%" />
- </colgroup><tbody><tr>
- <th>CVE</th>
- <th>參考資料</th>
- <th>類型</th>
- <th>嚴重程度</th>
- <th>更新的 Android 開放原始碼計劃版本</th>
- </tr>
- <tr>
- <td>CVE-2018-9457</td>
- <td>A-72872376</td>
- <td>EoP</td>
- <td>中</td>
- <td>8.0、8.1、9</td>
- </tr>
-</tbody></table>
-
<h2 id="2018-11-05-details">2018-11-05 安全性修補程式等級 - 資安漏洞詳情</h2>
<p>
下列各節針對 2018-11-05 安全性修補程式等級適用的各項安全性漏洞提供了詳細資訊。我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了一些詳細資料,例如 CVE、相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>、元件 (在適用情況下),和更新的 Android 開放原始碼計劃版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
@@ -287,18 +238,11 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
</tr>
<tr>
<td>CVE-2018-9523</td>
- <td>A-112859604</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/6a947f048a76a5936fd2b693e01f849aef22c907" class="external">A-112859604</a></td>
<td>EoP</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
</tr>
- <tr>
- <td>CVE-2018-9526</td>
- <td>A-112159033</td>
- <td>ID</td>
- <td>高</td>
- <td>9</td>
- </tr>
</tbody></table>
<h3 id="qualcomm-components">Qualcomm 元件</h3>
@@ -582,6 +526,11 @@ QC-CR#2090797</a></td>
<td>2018 年 11 月 5 日</td>
<td>發佈公告。</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 11 月 5 日</td>
+ <td>修訂公告內容 (加入 Android 開放原始碼計劃連結)。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/2018-12-01.html b/zh-tw/security/bulletin/2018-12-01.html
new file mode 100644
index 00000000..ccf5c113
--- /dev/null
+++ b/zh-tw/security/bulletin/2018-12-01.html
@@ -0,0 +1,706 @@
+<html devsite><head>
+ <title>Android 安全性公告 - 2018 年 12 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>發佈日期:2018 年 12 月 3 日</em></p>
+
+<p>
+Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,並說明各項相關細節。2018-12-05 之後的安全性修補程式等級已解決了這些問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
+</p>
+<p>這些問題的原始碼修補程式將於接下來 48 小時內發佈到 Android 開放原始碼計劃 (AOSP) 存放區,等到相關 Android 開放原始碼計劃連結建立完成後,我們就會修訂這則公告。</p>
+<p>
+在這些問題中,最嚴重的就是媒體架構中嚴重程度「最高」的安全性漏洞。遠端攻擊者可利用這類漏洞,在獲得授權的程序環境內透過特製檔案執行任何程式碼。<a href="/security/overview/updates-resources.html#severity">嚴重程度評定標準</a>是假設平台與服務的因應防護措施基於開發作業的需求而被關閉,或是遭到有心人士破解,然後推算當有人惡意運用漏洞時,使用者的裝置會受到多大的影響,據此評定漏洞的嚴重程度。
+</p>
+<p>
+針對這些新發現的漏洞,我們目前尚未收到任何客戶回報相關的漏洞濫用案例。如果想進一步瞭解 <a href="/security/enhancements/">Android 安全性平台防護措施</a>和 Google Play 安全防護機制如何加強 Android 平台的安全性,請參閱 <a href="#mitigations">Android 和 Google Play 安全防護機制所提供的因應措施</a>。
+</p>
+<p class="note">
+<strong>注意:</strong><a href="/security/bulletin/pixel/2018-12-01">2018 年 12 月 Pixel/Nexus 安全性公告</a>提供了和 Google 裝置的最新無線下載更新 (OTA) 與韌體映像檔有關的資訊。
+</p>
+
+<h2 id="mitigations">Android 和 Google 服務問題因應措施</h2>
+
+<p>
+本節概述 <a href="/security/enhancements/">Android 安全性平台</a>和 <a href="https://www.android.com/play-protect" class="external">Google Play 安全防護</a>等服務防護方案所提供的因應措施。這些措施可有效防範有心人士在 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>
+</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>,以及更新的 Android 開放原始碼計劃版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+
+<h3 id="framework">架構</h3>
+
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式在獲得授權的程序環境內執行任何程式碼。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>更新的 Android 開放原始碼計劃版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9547</td>
+ <td>A-114223584</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9548</td>
+ <td>A-112555574</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+</tbody></table>
+
+<h3 id="media-framework">媒體架構</h3>
+<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製檔案在獲得授權的程序環境內執行任何程式碼。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>更新的 Android 開放原始碼計劃版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9549</td>
+ <td>A-112160868</td>
+ <td>RCE</td>
+ <td>最高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9550</td>
+ <td>A-112660981</td>
+ <td>RCE</td>
+ <td>最高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9551</td>
+ <td>A-112891548</td>
+ <td>RCE</td>
+ <td>最高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9552</td>
+ <td>A-113260892</td>
+ <td>ID</td>
+ <td>最高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9553</td>
+ <td>A-116615297</td>
+ <td>RCE</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9538</td>
+ <td>A-112181526</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9554</td>
+ <td>A-114770654</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1</td>
+ </tr>
+</tbody></table>
+
+<h3 id="system">系統</h3>
+<p>本節中最嚴重的漏洞可能會讓遠端攻擊者得以利用特製傳輸檔案在獲得授權的程序環境內執行任何程式碼。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>更新的 Android 開放原始碼計劃版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9555</td>
+ <td>A-112321180</td>
+ <td>RCE</td>
+ <td>最高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9556</td>
+ <td>A-113118184</td>
+ <td>RCE</td>
+ <td>最高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9557</td>
+ <td>A-35385357</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9558</td>
+ <td>A-112161557</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9559</td>
+ <td>A-112731440</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9560</td>
+ <td>A-79946737</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9562</td>
+ <td>A-113164621</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9566</td>
+ <td>A-74249842</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
+ </tr>
+</tbody></table>
+
+<h2 id="2018-12-05-details">2018-12-05 安全性修補程式等級 - 資安漏洞詳情</h2>
+
+<p>
+下列各節針對 2018-12-05 安全性修補程式等級適用的各項安全性漏洞提供了詳細資訊,我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了一些詳細資料,例如 CVE、相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>、元件 (在適用情況下),和更新的 Android 開放原始碼計劃版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+
+<h3 id="system-05">系統</h3>
+
+<p>本節中最嚴重的漏洞就是攻擊者可在不具備任何額外執行權限的情況下,造成遠端資訊外洩的問題。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>元件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9565</td>
+ <td>A-16680558</td>
+ <td>ID</td>
+ <td>高</td>
+ <td>OMA-DM</td>
+ </tr>
+</tbody></table>
+
+<h3 id="htc-components">HTC 元件</h3>
+
+<p>本節中最嚴重的漏洞可能會讓本機攻擊者得以規避使用者互動要求,藉此取得其他權限。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>元件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9567</td>
+ <td>A-65543936</td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>系統啟動載入程式</td>
+ </tr>
+</tbody></table>
+
+<h3 id="kernel-components">核心元件</h3>
+
+<p>本節中最嚴重的漏洞可能會讓本機攻擊者在獲得授權的程序環境內執行任何程式碼。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>元件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10840</td>
+ <td>A-116406508<br />
+<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9568</td>
+ <td>A-113509306<br />
+<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/net/core/sock.c?id=9d538fa60bad4f7b23193c89e843797a1cf71ef3">上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>網路</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-components">Qualcomm 元件</h3>
+
+<p>以下列出會影響 Qualcomm 元件的安全性漏洞,詳情請參考適用的 Qualcomm 安全性公告或安全性警示。這些問題的嚴重程度是由 Qualcomm 直接評定。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>元件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11960</td>
+ <td>A-114042002<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=18ce15db603e19cfac9a2f4076f255e879100495">QC-CR#2264832</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>HWEngines</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11961</td>
+ <td>A-114040881<br />
+<a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=c57ee0a5d3261ab20c35b451d1b3ae2b02a21591">QC-CR#2261813</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>GPS_AP_LINUX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11963</td>
+ <td>A-114041685<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c9ac3476a91c384a3f2760fabaecef0ad8698d7b">QC-CR#2220770</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>汽車多媒體</td>
+ </tr>
+</tbody></table>
+
+<h3 id="qualcomm-closed-source-components">Qualcomm 封閉原始碼元件</h3>
+
+<p>以下列出會影響 Qualcomm 元件的安全性漏洞,詳情請參考適用的 Qualcomm 安全性公告或安全性警示。這些問題的嚴重程度是由 Qualcomm 直接評定。</p>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>元件</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-8248</td>
+ <td>A-78135902<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>最高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11004</td>
+ <td>A-66913713<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>最高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18141</td>
+ <td>A-67712316<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>最高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5913</td>
+ <td>A-79419833<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>最高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11279</td>
+ <td>A-109678200<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>最高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18319</td>
+ <td>A-78284753<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18321</td>
+ <td>A-78283451<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18322</td>
+ <td>A-78285196<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18323</td>
+ <td>A-78284194<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18324</td>
+ <td>A-78284517<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18327</td>
+ <td>A-78240177<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18331</td>
+ <td>A-78239686<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18332</td>
+ <td>A-78284545<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18160</td>
+ <td>A-109660689<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18326</td>
+ <td>A-78240324<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8276</td>
+ <td>A-68141338<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18328</td>
+ <td>A-78286046<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18329</td>
+ <td>A-73539037<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18330</td>
+ <td>A-73539235<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3595</td>
+ <td>A-71501115<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18320</td>
+ <td>A-33757308<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11999</td>
+ <td>A-74236942<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5867</td>
+ <td>A-77485184<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5868</td>
+ <td>A-77484529<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5869</td>
+ <td>A-33385206<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-79419639<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5915</td>
+ <td>A-79420511<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11267</td>
+ <td>A-109678338<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11922</td>
+ <td>A-112279564<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">常見問題與解答</h2>
+
+<p>如果您在閱讀這篇公告後有任何疑問,可參考本節的常見問答。</p>
+<p><strong>1. 如何判斷我目前的裝置軟體版本是否已修正這些問題?</strong></p>
+<p>請參閱<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。</p>
+<ul>
+<li>2018-12-01 後的安全性修補程式等級已解決了所有與 2018-12-01 安全性修補程式等級相關的問題。</li>
+<li>2018-12-05 之後的安全性修補程式等級完全解決了與 2018-12-05 安全性修補程式等級及所有先前修補程式等級相關的問題。</li>
+</ul>
+<p>提供這些更新的裝置製造商應將修補程式字串等級設定為:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2018-12-01]</li>
+ <li>[ro.build.version.security_patch]:[2018-12-05]</li>
+</ul>
+<p><strong>2. 為什麼這篇公告有兩種安全性修補程式等級?</strong></p>
+<p>
+本公告有兩種安全性修補程式等級,讓 Android 合作夥伴能夠靈活運用,以快速修正某些發生在所有 Android 裝置上的類似漏洞。我們建議 Android 合作夥伴修正本公告所列的所有問題,並使用最新的安全性修補程式等級。
+</p>
+<ul>
+<li>安全性修補程式等級為 2018-12-01 的裝置必須納入所有與該安全性修補程式等級相關的問題,以及在之前安全性公告中回報的所有問題適用的修正程式。</li>
+<li>如果裝置的安全性修補程式等級在 2018-12-05 之後,就必須加入本安全性公告 (以及之前公告) 中的所有適用修補程式。</li>
+</ul>
+<p>
+我們建議合作夥伴將所有問題適用的修補程式都彙整在單一更新中。
+</p>
+<p id="type">
+<strong>3.「類型」<em></em>欄中的項目代表什麼意義?</strong>
+</p>
+<p>
+在資安漏洞詳情表格中,「類型」<em></em>欄中的項目代表的是安全性漏洞的類別。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>縮寫</th>
+ <th>定義</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>遠端程式碼執行</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>權限升級</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>資訊外洩</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>阻斷服務</td>
+ </tr>
+ <tr>
+ <td>無</td>
+ <td>未分類</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>4.「參考資料」<em></em>欄底下列出的識別碼代表什麼意義?</strong>
+</p>
+<p>
+資安漏洞詳情表格中「參考資料」<em></em>欄底下的項目可能會包含一個前置字串,用以表示該參考資料值所屬的機構或公司。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>前置字串</th>
+ <th>參考資料</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android 錯誤 ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm 參考編號</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek 參考編號</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA 參考編號</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom 參考編號</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>5.「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong>
+</p>
+<p>
+在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+</p>
+<p>
+<strong>6. 為什麼安全性漏洞會區分為本安全性公告以及裝置合作夥伴的安全性公告,例如 Pixel/Nexus 公告?</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/Nexus</a> 安全性公告。
+</p>
+
+<h2 id="versions">版本</h2>
+
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>版本</th>
+ <th>日期</th>
+ <th>附註</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018 年 12 月 3 日</td>
+ <td>發佈公告</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/pixel/2018-07-01.html b/zh-tw/security/bulletin/pixel/2018-07-01.html
index 162900bc..43219b8f 100644
--- a/zh-tw/security/bulletin/pixel/2018-07-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-07-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>發佈日期:2018 年 7 月 2 日 | 更新日期:2018 年 7 月 3 日</em></p>
+<p><em>發佈日期:2018 年 7 月 2 日 | 更新日期:2018 年 11 月 8 日</em></p>
<p>
Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">支援的 Google Pixel 和 Nexus 裝置</a> (Google 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-07-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 2018 年 7 月 Android 安全性公告列出的所有問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
@@ -221,7 +221,7 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
</tr>
<tr>
- <td>CVE-2017-1000</td>
+ <td>CVE-2017-1000112</td>
<td>A-68806309<br />
<a href="https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=85f1bd9a7b5a79d5baa8bf44af19658f7bf77bfa">上游程式庫核心</a></td>
<td>EoP</td>
@@ -460,6 +460,11 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
<td>2018 年 7 月 3 日</td>
<td>修訂公告內容 (加入 Android 開放原始碼計劃連結)。</td>
</tr>
+ <tr>
+ <td>1.2</td>
+ <td>2018 年 11 月 8 日</td>
+ <td>修訂公告內容 (更正 CVE-2017-1000112)。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/pixel/2018-11-01.html b/zh-tw/security/bulletin/pixel/2018-11-01.html
index ca88bb31..52706984 100644
--- a/zh-tw/security/bulletin/pixel/2018-11-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-11-01.html
@@ -42,6 +42,33 @@ Pixel/Nexus 安全性公告列舉會對<a href="https://support.google.com/pixel
<p>
我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了問題說明和一份 CVE 資訊表,其中包括了相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources#severity">嚴重程度</a>,以及更新的 Android 開放原始碼計劃 (AOSP) 版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+<h3 id="framework-05">架構</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>更新的 Android 開放原始碼計劃版本</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9526</td>
+ <td><a href="https://android.googlesource.com/device/google/marlin/+/fa7f7382e8b39f7ca209824f97788ab25c44f6a3" class="external">A-112159033</a>
+ [<a href="https://android.googlesource.com/platform/frameworks/base/+/8e81142af3dceb913ca50f67df3ded84233f932a">2</a>]
+ [<a href="https://android.googlesource.com/platform/hardware/qcom/sdm845/gps/+/a5f7c07edd96c69171e8bd758addda7d5c30e3eb">3</a>]
+ </td>
+ <td>ID</td>
+ <td>高</td>
+ <td>9</td>
+ </tr>
+</tbody></table>
+
<h3 id="htc-components">HTC 元件</h3>
<table>
diff --git a/zh-tw/security/bulletin/pixel/2018-12-01.html b/zh-tw/security/bulletin/pixel/2018-12-01.html
new file mode 100644
index 00000000..c82c8ecc
--- /dev/null
+++ b/zh-tw/security/bulletin/pixel/2018-12-01.html
@@ -0,0 +1,273 @@
+<html devsite><head>
+ <title>Pixel/Nexus 安全性公告 - 2018 年 12 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p><em>發佈日期:2018 年 12 月 3 日</em></p>
+
+<p>
+Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">支援的 Google Pixel 和 Nexus 裝置</a> (Google 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-12-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 2018 年 12 月 Android 安全性公告列出的所有問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
+</p>
+<p>
+所有支援的 Google 裝置都會收到 2018-12-05 修補程式等級更新。我們建議所有客戶接受這些裝置更新。
+</p>
+<p class="note">
+<strong>注意:</strong>您可以前往 <a href="https://developers.google.com/android/images" class="external">Google Developers 網站</a>取得 Google 裝置韌體映像檔。
+</p>
+
+<h2 id="announcements">公告事項</h2>
+
+<p>我們除了修補 <a href="/security/bulletin/2018-12-01">2018 年 12 月 Android 安全性公告</a>中所列出的安全性漏洞外,也針對下文列出的 Google 裝置的安全性漏洞提供修補程式。我們的合作夥伴至少會提前一個月收到這些問題的相關通知,方便他們將相關內容納入其裝置更新中。
+</p>
+
+<h2 id="security-patches">安全性修補程式</h2>
+<p>
+我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了問題說明和一份 CVE 資訊表,其中包括了相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources#severity">嚴重程度</a>,以及更新的 Android 開放原始碼計劃 (AOSP) 版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+
+<h3 id="qualcomm-components">Qualcomm 元件</h3>
+
+<table>
+<colgroup><col width="21%" />
+<col width="21%" />
+<col width="14%" />
+<col width="14%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>CVE</th>
+ <th>參考資料</th>
+ <th>類型</th>
+ <th>嚴重程度</th>
+ <th>元件</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-11987</td>
+ <td>A-70638103<br />
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=5e9ffcfa152ecb2832990c42fcd8a0f2e63c2c04">
+QC-CR#2258691</a></td>
+ <td>EoP</td>
+ <td>中</td>
+ <td>ION</td>
+ </tr>
+</tbody></table>
+
+<h2 id="functional-patches">功能修補程式</h2>
+
+<p>這些功能修補程式的目的在於解決受影響 Pixel 裝置的功能問題,與 Pixel 裝置的安全性無關。下表列出的修補程式內容包括相關的參考資料、受影響類別,以及受影響的裝置。</p>
+
+<table>
+<colgroup><col width="15%" />
+<col width="15%" />
+<col width="40%" />
+<col width="30%" />
+ </colgroup><tbody><tr>
+ <th>參考資料</th>
+ <th>類別</th>
+ <th>改善項目</th>
+ <th>裝置</th>
+ </tr>
+ <tr>
+ <td>A-117522738</td>
+ <td>效能</td>
+ <td>改善特定情況下的記憶體效能</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-110969183</td>
+ <td>相機</td>
+ <td>改善相機的拍照效能</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111008450</td>
+ <td>Pixel Stand</td>
+ <td>提高裝置在使用 Pixel Stand 時的通知可見度</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112376366</td>
+ <td>Android Auto</td>
+ <td>改善 Android Auto 相容性</td>
+ <td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115666282</td>
+ <td>相機</td>
+ <td>調整自動對焦行為</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-115624433</td>
+ <td>Pixel Stand</td>
+ <td>改善使用 Pixel Stand 時的啟動字詞效能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-116758282</td>
+ <td>螢幕</td>
+ <td>改善持續待機螢幕的觸發條件</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111964925</td>
+ <td>音訊</td>
+ <td>改善 USB-C 音訊配件偵測效能</td>
+ <td>Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111716107</td>
+ <td>藍牙</td>
+ <td>調整切換藍牙時的音量行為</td>
+ <td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111159723</td>
+ <td>Android Auto</td>
+ <td>改善在特定車輛上使用 Android Auto 時的音訊效能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-112228430</td>
+ <td>媒體</td>
+ <td>改善特定媒體應用程式的 HDR 色彩輪廓</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-113151604</td>
+ <td>相機</td>
+ <td>改善相機快門效能</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+ <tr>
+ <td>A-111277984</td>
+ <td>效能</td>
+ <td>改善使用藍牙時的解鎖效能</td>
+ <td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">常見問題與解答</h2>
+<p>
+如果您在閱讀這篇公告後有任何疑問,可參考本節的常見問答。
+</p>
+<p>
+<strong>1. 如何判斷我目前的裝置軟體版本是否已修正這些問題?
+</strong>
+</p>
+<p>
+2018-12-05 之後的安全性修補程式等級完全解決了與 2018-12-05 安全性修補程式等級及所有先前修補程式等級相關的問題。請參閱 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel 與 Nexus 更新時間表</a>中的操作說明,瞭解如何查看裝置的安全性修補程式等級。
+</p>
+<p id="type">
+<strong>2.「類型」<em></em>欄中的項目代表什麼意義?</strong>
+</p>
+<p>
+在資安漏洞詳情表格中,「類型」<em></em>欄中的項目代表的是安全性漏洞的類別。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>縮寫</th>
+ <th>定義</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>遠端程式碼執行</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>權限升級</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>資訊外洩</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>阻斷服務</td>
+ </tr>
+ <tr>
+ <td>無</td>
+ <td>未分類</td>
+ </tr>
+</tbody></table>
+<p>
+<strong>3.「參考資料」<em></em>欄底下列出的識別碼代表什麼意義?</strong>
+</p>
+<p>
+資安漏洞詳情表格中「參考資料」<em></em>欄底下的項目可能會包含一個前置字串,用以表示該參考資料值所屬的機構或公司。
+</p>
+<table>
+ <colgroup><col width="25%" />
+ <col width="75%" />
+ </colgroup><tbody><tr>
+ <th>前置字串</th>
+ <th>參考資料</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android 錯誤 ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm 參考編號</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek 參考編號</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA 參考編號</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom 參考編號</td>
+ </tr>
+</tbody></table>
+<p id="asterisk">
+<strong>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>下載這些驅動程式。
+</p>
+<p>
+<strong>5. 為什麼安全性漏洞會分別刊載在這份安全性公告和 Android 安全性公告?</strong>
+</p>
+<p>
+為了宣告 Android 裝置最新的安全性修補程式等級,我們必須先在 Android 安全性公告中刊載相關的安全性漏洞。其他安全性漏洞 (例如本安全性公告所刊載的安全性漏洞) 並未強制規定宣告安全性修補程式等級。
+</p>
+<h2 id="versions">版本</h2>
+<table>
+ <colgroup><col width="25%" />
+ <col width="25%" />
+ <col width="50%" />
+ </colgroup><tbody><tr>
+ <th>版本</th>
+ <th>日期</th>
+ <th>附註</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>2018 年 12 月 3 日</td>
+ <td>發佈公告。</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file