aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Partner Docs <noreply@android.com>2019-01-25 14:26:34 -0800
committerMark Hecomovich <mheco@google.com>2019-01-25 14:56:27 -0800
commit964c5956c98fb20ab44ead57e59b5c0ed9f0ab11 (patch)
tree94e1ae7edb82c95a5da83468b6ea104d651850f3
parentd8c39787c5a4061686695502e62c0477b939c633 (diff)
downloadsource.android.com-964c5956c98fb20ab44ead57e59b5c0ed9f0ab11.tar.gz
Docs: Changes to source.android.com
- 230969164 Add details about supported deviceless tests by Android Partner Docs <noreply@android.com> - 230954177 Devsite localized content from translation request 1089952. by Android Partner Docs <noreply@android.com> - 230924636 Devsite localized content from translation request 1092604. by Android Partner Docs <noreply@android.com> - 230924621 Devsite localized content from translation request 1091268. by Android Partner Docs <noreply@android.com> - 230811847 Please review this new content for "Automotive Power Mana... by Janet Davies <janetd@google.com> - 230794111 Add HWASan to the docs ready for bootcamp. by Android Partner Docs <noreply@android.com> - 230779068 Link to NDK docs on DAC from first reference to Make by Android Partner Docs <noreply@android.com> - 230744983 Devsite localized content from translation request 1092191. by Android Partner Docs <noreply@android.com> - 230744981 Devsite localized content from translation request 1093422. by Android Partner Docs <noreply@android.com> - 230744964 Devsite localized content from translation request 1094193. by Android Partner Docs <noreply@android.com> - 230742820 Moving Marshmallow 6.0 to No Release Planned as CTS 6.0 w... by Android Partner Docs <noreply@android.com> - 230614628 Fixed broken links (they were relative and not absolute f... by Christina Nguyen <cqn@google.com> - 230384953 Remove rogue parenthesis by Danielle Roberts <daroberts@google.com> - 230375898 Fix broken links to subpages with absolute paths by Android Partner Docs <noreply@android.com> - 230364707 Devsite localized content from translation request 1093572. by Android Partner Docs <noreply@android.com> - 230364690 Devsite localized content from translation request 1093439. by Android Partner Docs <noreply@android.com> - 230364619 Devsite localized content from translation request 1089936. by Android Partner Docs <noreply@android.com> - 230364605 Devsite localized content from translation request 1086836. by Android Partner Docs <noreply@android.com> - 230364588 Devsite localized content from translation request 1093713. by Android Partner Docs <noreply@android.com> - 230364494 Devsite localized content from translation request 1093448. by Android Partner Docs <noreply@android.com> - 230364465 Devsite localized content from translation request 1091295. by Android Partner Docs <noreply@android.com> - 230364454 Devsite localized content from translation request 1092609. by Android Partner Docs <noreply@android.com> - 230364368 Devsite localized content from translation request 1048174. by Android Partner Docs <noreply@android.com> - 230364354 Devsite localized content from translation request 1047598. by Android Partner Docs <noreply@android.com> - 230364346 Devsite localized content from translation request 1089969. by Android Partner Docs <noreply@android.com> - 230020584 Update the guide for using vendor provided bcc by Android Partner Docs <noreply@android.com> - 229999258 Fix a typo in gsi.html by Android Partner Docs <noreply@android.com> - 229997798 Add file_patterns attribute documentation by Android Partner Docs <noreply@android.com> - 229991256 Update the characters for zh-cn and zh-tw in the Security... by Danielle Roberts <daroberts@google.com> - 229977174 Moving time zones to Updates (from Permissions); also upd... by Heidi von Markham <hvm@google.com> - 229831729 Devsite localized content from translation request 1090171. by Android Partner Docs <noreply@android.com> - 229831714 Devsite localized content from translation request 1090622. by Android Partner Docs <noreply@android.com> - 229831667 Devsite localized content from translation request 1015775. by Android Partner Docs <noreply@android.com> - 229831656 Devsite localized content from translation request 1088392. by Android Partner Docs <noreply@android.com> - 229831644 Devsite localized content from translation request 1090166. by Android Partner Docs <noreply@android.com> - 229581198 Devsite localized content from translation request 1086821. by Android Partner Docs <noreply@android.com> - 229425689 Fixing typos for Shutdown (to shutdown) by Heidi von Markham <hvm@google.com> - 229416134 Update a paragraph in the permission model section of the... by Luke Haviland <lhaviland@google.com> - 229402835 Devsite localized content from translation request 553155. by Android Partner Docs <noreply@android.com> - 229305053 Devsite localized content from translation request 1091266. by Android Partner Docs <noreply@android.com> - 229305046 Devsite localized content from translation request 1091273. by Android Partner Docs <noreply@android.com> - 229245843 Devsite localized content from translation request 1015221. by Android Partner Docs <noreply@android.com> - 228916961 Fix typo by Kenneth Lau <kennethlau@google.com> - 228796242 Change "Optional" to "Required" by Kenneth Lau <kennethlau@google.com> - 228720589 Devsite localized content from translation request 1090636. by Android Partner Docs <noreply@android.com> - 228612958 Added Joshua Laney's information to November security ack... by Luke Haviland <lhaviland@google.com> - 228585561 Update versions file by Kenneth Lau <kennethlau@google.com> - 228557861 Devsite localized content from translation request 1089965. by Android Partner Docs <noreply@android.com> - 228541590 Fix HTML. by Android Partner Docs <noreply@android.com> - 228525372 Replace unresolved variable reference in localized files. by Android Partner Docs <noreply@android.com> - 228439111 Add missing < by Android Partner Docs <noreply@android.com> - 228436522 Adding the January Android bulletin acknowledgements by Luke Haviland <lhaviland@google.com> - 228407590 Correct the naming of EGL extension, and point the link t... by Android Partner Docs <noreply@android.com> - 228395277 Rename Test Config to Build Config to better reflect Soon... by Android Partner Docs <noreply@android.com> - 228340013 Devsite localized content from translation request 1044284. by Android Partner Docs <noreply@android.com> - 228340002 Devsite localized content from translation request 1048178. by Android Partner Docs <noreply@android.com> - 228339974 Devsite localized content from translation request 1089289. by Android Partner Docs <noreply@android.com> - 228339806 Devsite localized content from translation request 999875. by Android Partner Docs <noreply@android.com> - 228339785 Devsite localized content from translation request 1046259. by Android Partner Docs <noreply@android.com> - 228339757 Devsite localized content from translation request 1049718. by Android Partner Docs <noreply@android.com> - 228267452 Add information on gdbclient.py by Kenneth Lau <kennethlau@google.com> - 228261450 Adding the Android AOSP links to the Android January secu... by Luke Haviland <lhaviland@google.com> - 228247613 Fill in security levels for December 2018 builds. by Android Partner Docs <noreply@android.com> - 228241115 Add January 2019 builds. by Android Partner Docs <noreply@android.com> - 228208289 Remove _toc-*.yaml files that are no longer used due to r... by Christina Nguyen <cqn@google.com> - 228205865 Devsite localized content from translation request 1048626. by Android Partner Docs <noreply@android.com> - 228205856 Devsite localized content from translation request 1048155. by Android Partner Docs <noreply@android.com> - 228205845 Devsite localized content from translation request 1047886. by Android Partner Docs <noreply@android.com> - 228186179 Adding the January 2019 security Android/Pixel bulletins. by Luke Haviland <lhaviland@google.com> - 228183717 Add BCC native stack dump documentation by Android Partner Docs <noreply@android.com> - 228181974 Devsite localized content from translation request 1089935. by Android Partner Docs <noreply@android.com> - 227911224 Add more information on cts-dev and also --skip-precondit... by Android Partner Docs <noreply@android.com> - 227772142 Update image path by Danielle Roberts <daroberts@google.com> - 227719040 Fix broken links by Kenneth Lau <kennethlau@google.com> - 227715850 Devsite localized content from translation request 1045494. by Android Partner Docs <noreply@android.com> - 227715841 Devsite localized content from translation request 1044265. by Android Partner Docs <noreply@android.com> - 227715826 Devsite localized content from translation request 1087340. by Android Partner Docs <noreply@android.com> - 227709199 Fix path on images by Danielle Roberts <daroberts@google.com> - 227620512 Devsite localized content from translation request 1032286. by Android Partner Docs <noreply@android.com> - 227620508 Devsite localized content from translation request 1087344. by Android Partner Docs <noreply@android.com> - 227620485 Devsite localized content from translation request 1087104. by Android Partner Docs <noreply@android.com> - 227620481 Devsite localized content from translation request 1046261. by Android Partner Docs <noreply@android.com> - 227620479 Devsite localized content from translation request 1087239. by Android Partner Docs <noreply@android.com> - 227617540 Devsite localized content from translation request 1007762. by Android Partner Docs <noreply@android.com> - 227617535 Devsite localized content from translation request 1089145. by Android Partner Docs <noreply@android.com> - 227617491 Devsite localized content from translation request 1087109. by Android Partner Docs <noreply@android.com> - 227617482 Devsite localized content from translation request 1047584. by Android Partner Docs <noreply@android.com> - 227617480 Devsite localized content from translation request 1089449. by Android Partner Docs <noreply@android.com> - 227617378 Devsite localized content from translation request 1087099. by Android Partner Docs <noreply@android.com> - 227610447 Add variable tag to CTS downloads page by Danielle Roberts <daroberts@google.com> - 227595909 Add link to camera section on CTS setup page by Kenneth Lau <kennethlau@google.com> - 227595777 Change title to title case by Kenneth Lau <kennethlau@google.com> - 227546776 Newline between function and param descriptions. by Android Partner Docs <noreply@android.com> - 227546753 Small edits to system best practices by Danielle Roberts <daroberts@google.com> - 227033873 Document "run cts-dev" command, present CTS V2 first by Android Partner Docs <noreply@android.com> - 226772000 Devsite localized content from translation request 1041964. by Android Partner Docs <noreply@android.com> - 226552899 Announce Adiantum on SAC home page by Danielle Roberts <daroberts@google.com> - 226550934 Add Adiantum docs to encryption section by Danielle Roberts <daroberts@google.com> - 226530870 Devsite localized content from translation request 1046265. by Android Partner Docs <noreply@android.com> - 226497667 Devsite localized content from translation request 1047878. by Android Partner Docs <noreply@android.com> (And 26 more changes) PiperOrigin-RevId: 230969164 Change-Id: I2bf51b3793304247e04b953816961605fe1ba4bf
-rw-r--r--en/_book.yaml3
-rw-r--r--en/_dac_versions.html34
-rw-r--r--en/_index.yaml34
-rw-r--r--en/_translation.yaml17
-rw-r--r--en/_versions.html19
-rw-r--r--en/compatibility/_toc-tests.yaml24
-rw-r--r--en/compatibility/_translation.yaml30
-rw-r--r--en/compatibility/cts/camera-hal.html167
-rw-r--r--en/compatibility/cts/camera-its-box-assembly.html4
-rw-r--r--en/compatibility/cts/camera-its-box.html77
-rw-r--r--en/compatibility/cts/camera-wfov-box-assembly.md2
-rw-r--r--en/compatibility/cts/development.html9
-rw-r--r--en/compatibility/cts/downloads.html100
-rw-r--r--en/compatibility/cts/run.html315
-rw-r--r--en/compatibility/cts/setup.html57
-rw-r--r--en/compatibility/tests/development/blueprints.md7
-rw-r--r--en/compatibility/tests/development/index.md8
-rw-r--r--en/compatibility/tests/development/test-mapping.md35
-rw-r--r--en/compatibility/vts/codelab-video.html61
-rw-r--r--en/compatibility/vts/index.html4
-rw-r--r--en/devices/_toc-frameworks.yaml429
-rw-r--r--en/devices/_toc-interaction.yaml2
-rw-r--r--en/devices/_toc-permissions.yaml30
-rw-r--r--en/devices/_toc-systems.yaml429
-rw-r--r--en/devices/_toc-tech.yaml269
-rw-r--r--en/devices/_toc-update.yaml2
-rw-r--r--en/devices/_translation.yaml10
-rw-r--r--en/devices/architecture/hidl/code-style.html7
-rw-r--r--en/devices/architecture/vndk/renderscript.html8
-rw-r--r--en/devices/automotive/images/automotive_power_class_diagram.pngbin0 -> 206642 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_deep_sleep.pngbin0 -> 129342 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_deep_sleep_exit.pngbin0 -> 106899 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_object_state.pngbin0 -> 64709 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_reference_diagram.pngbin0 -> 42141 bytes
-rw-r--r--en/devices/automotive/images/automotive_power_states.pngbin0 -> 58397 bytes
-rw-r--r--en/devices/automotive/power.html753
-rw-r--r--en/devices/bootloader/boot-reason.html4
-rw-r--r--en/devices/camera/camera3_requests_hal.html2
-rw-r--r--en/devices/camera/external-usb-cameras.md3
-rw-r--r--en/devices/sensors/index.html186
-rw-r--r--en/devices/tech/admin/index.html73
-rw-r--r--en/devices/tech/connect/call-notification.html2
-rw-r--r--en/devices/tech/connect/wifi-passpoint.md2
-rw-r--r--en/devices/tech/debug/asan.html98
-rw-r--r--en/devices/tech/debug/gdb.html24
-rw-r--r--en/devices/tech/debug/native_stack_dump.md179
-rw-r--r--en/devices/tech/display/color-mgmt.html2
-rw-r--r--en/devices/tech/ota/index.html71
-rw-r--r--en/security/_toc-best-practices.yaml15
-rw-r--r--en/security/_toc-bulletins.yaml12
-rw-r--r--en/security/_toc-features.yaml4
-rw-r--r--en/security/_toc-fuzz.yaml2
-rw-r--r--en/security/_translation.yaml13
-rw-r--r--en/security/best-practices/app.html234
-rw-r--r--en/security/best-practices/hardware.html62
-rw-r--r--en/security/best-practices/index.html52
-rw-r--r--en/security/best-practices/network.html75
-rw-r--r--en/security/best-practices/ops.html166
-rw-r--r--en/security/best-practices/privacy.html96
-rw-r--r--en/security/best-practices/system.html332
-rw-r--r--en/security/bulletin/2015.html20
-rw-r--r--en/security/bulletin/2016.html48
-rw-r--r--en/security/bulletin/2017.html48
-rw-r--r--en/security/bulletin/2018.html48
-rw-r--r--en/security/bulletin/2019-01-01.html650
-rw-r--r--en/security/bulletin/2019.html215
-rw-r--r--en/security/bulletin/_translation.yaml59
-rw-r--r--en/security/bulletin/index.html199
-rw-r--r--en/security/bulletin/pixel/2017.html12
-rw-r--r--en/security/bulletin/pixel/2018.html48
-rw-r--r--en/security/bulletin/pixel/2019-01-01.html258
-rw-r--r--en/security/bulletin/pixel/2019.html203
-rw-r--r--en/security/bulletin/pixel/index.html117
-rw-r--r--en/security/encryption/adiantum.html260
-rw-r--r--en/security/images/trustyApps_900w.pngbin0 -> 8244 bytes
-rw-r--r--en/security/images/trustyOverview_900w.pngbin0 -> 23703 bytes
-rw-r--r--en/security/overview/acknowledgements.html77
-rw-r--r--en/security/overview/app-security.html15
-rw-r--r--en/security/trusty/download-and-build.html70
-rw-r--r--en/security/trusty/index.html252
-rw-r--r--en/security/trusty/trusty-ref.html419
-rw-r--r--en/setup/_translation.yaml10
-rw-r--r--en/setup/build/dashboard.html5
-rw-r--r--en/setup/build/gsi.html2
-rw-r--r--en/setup/index.html9
-rw-r--r--en/setup/start/build-numbers.html20
-rw-r--r--en/setup/start/licenses.html2
-rw-r--r--en/whitelist/_book.yaml129
-rw-r--r--en/whitelist/_whitelist.yaml4
-rw-r--r--en/whitelist/index.md6
-rw-r--r--ja/security/bulletin/2018-07-01.html28
-rw-r--r--ja/security/bulletin/2018-08-01.html30
-rw-r--r--ja/security/bulletin/2018-09-01.html72
-rw-r--r--ja/security/bulletin/2018-10-01.html28
-rw-r--r--ja/security/bulletin/2018-11-01.html62
-rw-r--r--ja/security/bulletin/2018-12-01.html71
-rw-r--r--ja/security/bulletin/2018.html28
-rw-r--r--ja/security/bulletin/2019-01-01.html502
-rw-r--r--ja/security/bulletin/2019.html211
-rw-r--r--ja/security/bulletin/index.html39
-rw-r--r--ja/security/bulletin/pixel/2018-01-01.html18
-rw-r--r--ja/security/bulletin/pixel/2018-02-01.html4
-rw-r--r--ja/security/bulletin/pixel/2018-03-01.html12
-rw-r--r--ja/security/bulletin/pixel/2018-04-01.html29
-rw-r--r--ja/security/bulletin/pixel/2018-05-01.html22
-rw-r--r--ja/security/bulletin/pixel/2018-06-01.html24
-rw-r--r--ja/security/bulletin/pixel/2018-07-01.html20
-rw-r--r--ja/security/bulletin/pixel/2018-08-01.html25
-rw-r--r--ja/security/bulletin/pixel/2018-09-01.html25
-rw-r--r--ja/security/bulletin/pixel/2018-10-01.html22
-rw-r--r--ja/security/bulletin/pixel/2018-11-01.html27
-rw-r--r--ja/security/bulletin/pixel/2018-12-01.html19
-rw-r--r--ja/security/bulletin/pixel/2018.html17
-rw-r--r--ja/security/bulletin/pixel/2019-01-01.html211
-rw-r--r--ja/security/bulletin/pixel/2019.html198
-rw-r--r--ja/security/bulletin/pixel/index.html35
-rw-r--r--ko/security/bulletin/2018-07-01.html4
-rw-r--r--ko/security/bulletin/2018-08-01.html20
-rw-r--r--ko/security/bulletin/2018-09-01.html13
-rw-r--r--ko/security/bulletin/2018-10-01.html15
-rw-r--r--ko/security/bulletin/2018-11-01.html26
-rw-r--r--ko/security/bulletin/2018-12-01.html65
-rw-r--r--ko/security/bulletin/2018.html14
-rw-r--r--ko/security/bulletin/2019-01-01.html607
-rw-r--r--ko/security/bulletin/2019.html213
-rw-r--r--ko/security/bulletin/index.html106
-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-05-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-06-01.html8
-rw-r--r--ko/security/bulletin/pixel/2018-07-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-08-01.html14
-rw-r--r--ko/security/bulletin/pixel/2018-09-01.html4
-rw-r--r--ko/security/bulletin/pixel/2018-10-01.html6
-rw-r--r--ko/security/bulletin/pixel/2018-11-01.html12
-rw-r--r--ko/security/bulletin/pixel/2018-12-01.html10
-rw-r--r--ko/security/bulletin/pixel/2018.html26
-rw-r--r--ko/security/bulletin/pixel/2019-01-01.html249
-rw-r--r--ko/security/bulletin/pixel/2019.html201
-rw-r--r--ko/security/bulletin/pixel/index.html26
-rw-r--r--ru/security/bulletin/2018-09-01.html36
-rw-r--r--ru/security/bulletin/2018-10-01.html2
-rw-r--r--ru/security/bulletin/2018-12-01.html48
-rw-r--r--ru/security/bulletin/2018.html30
-rw-r--r--ru/security/bulletin/2019-01-01.html509
-rw-r--r--ru/security/bulletin/2019.html210
-rw-r--r--ru/security/bulletin/index.html33
-rw-r--r--ru/security/bulletin/pixel/2018-01-01.html2
-rw-r--r--ru/security/bulletin/pixel/2018-03-01.html2
-rw-r--r--ru/security/bulletin/pixel/2018-04-01.html72
-rw-r--r--ru/security/bulletin/pixel/2018-05-01.html6
-rw-r--r--ru/security/bulletin/pixel/2018-06-01.html17
-rw-r--r--ru/security/bulletin/pixel/2018-07-01.html9
-rw-r--r--ru/security/bulletin/pixel/2018-09-01.html2
-rw-r--r--ru/security/bulletin/pixel/2018-10-01.html2
-rw-r--r--ru/security/bulletin/pixel/2018-11-01.html4
-rw-r--r--ru/security/bulletin/pixel/2018-12-01.html6
-rw-r--r--ru/security/bulletin/pixel/2018.html15
-rw-r--r--ru/security/bulletin/pixel/2019-01-01.html213
-rw-r--r--ru/security/bulletin/pixel/2019.html197
-rw-r--r--ru/security/bulletin/pixel/index.html17
-rw-r--r--zh-cn/_book.yaml196
-rw-r--r--zh-cn/_index.yaml39
-rw-r--r--zh-cn/compatibility/cts/camera-hal.html15
-rw-r--r--zh-cn/compatibility/cts/camera-its-box.html65
-rw-r--r--zh-cn/compatibility/cts/camera-wfov-box-assembly.html4
-rw-r--r--zh-cn/compatibility/cts/downloads.html56
-rw-r--r--zh-cn/compatibility/cts/secure-element.html10
-rw-r--r--zh-cn/compatibility/cts/setup.html6
-rw-r--r--zh-cn/compatibility/index.html2
-rw-r--r--zh-cn/compatibility/tests/development/atest.html14
-rw-r--r--zh-cn/compatibility/tests/development/blueprints.html20
-rw-r--r--zh-cn/compatibility/tests/development/index.html42
-rw-r--r--zh-cn/compatibility/tests/development/instr-app-e2e.html20
-rw-r--r--zh-cn/compatibility/tests/development/instr-self-e2e.html44
-rw-r--r--zh-cn/compatibility/tests/development/instrumentation.html21
-rw-r--r--zh-cn/compatibility/tests/development/metrics.html34
-rw-r--r--zh-cn/compatibility/tests/development/native-func-e2e.html26
-rw-r--r--zh-cn/compatibility/tests/development/native.html27
-rw-r--r--zh-cn/compatibility/tests/development/test-config.html12
-rw-r--r--zh-cn/compatibility/tests/development/test-mapping.html2
-rw-r--r--zh-cn/compatibility/tests/index.html72
-rw-r--r--zh-cn/compatibility/vts/codelab-video.html4
-rw-r--r--zh-cn/compatibility/vts/index.html6
-rw-r--r--zh-cn/devices/accessories/index.html10
-rw-r--r--zh-cn/devices/architecture/dto/optimize.html7
-rw-r--r--zh-cn/devices/architecture/hidl-cpp/functions.html2
-rw-r--r--zh-cn/devices/architecture/hidl-cpp/index.html2
-rw-r--r--zh-cn/devices/architecture/hidl-cpp/types.html2
-rw-r--r--zh-cn/devices/architecture/hidl/code-style.html16
-rw-r--r--zh-cn/devices/architecture/hidl/types.html2
-rw-r--r--zh-cn/devices/architecture/hidl/versioning.html6
-rw-r--r--zh-cn/devices/architecture/kernel/modular-kernels.html6
-rw-r--r--zh-cn/devices/architecture/vintf/dm.html4
-rw-r--r--zh-cn/devices/architecture/vintf/match-rules.html6
-rw-r--r--zh-cn/devices/architecture/vintf/objects.html39
-rw-r--r--zh-cn/devices/architecture/vndk/abi-stability.html4
-rw-r--r--zh-cn/devices/architecture/vndk/build-system.html386
-rw-r--r--zh-cn/devices/architecture/vndk/index.html31
-rw-r--r--zh-cn/devices/architecture/vndk/linker-namespace.html299
-rw-r--r--zh-cn/devices/audio/terminology.html24
-rw-r--r--zh-cn/devices/automotive/audio/index.html6
-rw-r--r--zh-cn/devices/bootloader/flashing-updating.html4
-rw-r--r--zh-cn/devices/bootloader/partitions-images.html27
-rw-r--r--zh-cn/devices/bootloader/product-partitions.html12
-rw-r--r--zh-cn/devices/bootloader/system-as-root.html12
-rw-r--r--zh-cn/devices/bootloader/unlock-trusty.html2
-rw-r--r--zh-cn/devices/camera/external-usb-cameras.html12
-rw-r--r--zh-cn/devices/camera/motion-tracking.html18
-rw-r--r--zh-cn/devices/camera/session-parameters.html14
-rw-r--r--zh-cn/devices/camera/singleprod-multiconsum.html12
-rw-r--r--zh-cn/devices/camera/versioning.html16
-rw-r--r--zh-cn/devices/graphics/arch-vulkan.html8
-rw-r--r--zh-cn/devices/graphics/build-tests.html12
-rw-r--r--zh-cn/devices/graphics/implement-vulkan.html2
-rw-r--r--zh-cn/devices/graphics/run-tests.html2
-rw-r--r--zh-cn/devices/input/validate-keymaps.html2
-rw-r--r--zh-cn/devices/media/oem.html2
-rw-r--r--zh-cn/devices/sensors/batching.html14
-rw-r--r--zh-cn/devices/sensors/hal-interface.html18
-rw-r--r--zh-cn/devices/sensors/power-use.html8
-rw-r--r--zh-cn/devices/sensors/sensor-stack.html2
-rw-r--r--zh-cn/devices/sensors/sensor-types.html16
-rw-r--r--zh-cn/devices/sensors/versioning.html2
-rw-r--r--zh-cn/devices/tech/admin/enterprise-telephony.html4
-rw-r--r--zh-cn/devices/tech/admin/managed-profiles.html12
-rw-r--r--zh-cn/devices/tech/admin/ota-updates.html2
-rw-r--r--zh-cn/devices/tech/admin/provision.html4
-rw-r--r--zh-cn/devices/tech/admin/testing-provision.html37
-rw-r--r--zh-cn/devices/tech/config/carrier.html2
-rw-r--r--zh-cn/devices/tech/config/filesystem.html36
-rw-r--r--zh-cn/devices/tech/config/namespaces_libraries.html26
-rw-r--r--zh-cn/devices/tech/config/uicc.html2
-rw-r--r--zh-cn/devices/tech/connect/block-numbers.html5
-rw-r--r--zh-cn/devices/tech/connect/call-notification.html2
-rw-r--r--zh-cn/devices/tech/connect/connect_tests.html2
-rw-r--r--zh-cn/devices/tech/connect/esim-modem-requirements.html34
-rw-r--r--zh-cn/devices/tech/connect/esim-overview.html14
-rw-r--r--zh-cn/devices/tech/connect/rtt.html10
-rw-r--r--zh-cn/devices/tech/connect/wifi-debug.html33
-rw-r--r--zh-cn/devices/tech/connect/wifi-mac-randomization.html7
-rw-r--r--zh-cn/devices/tech/connect/wifi-passpoint.html73
-rw-r--r--zh-cn/devices/tech/dalvik/gc-debug.html7
-rw-r--r--zh-cn/devices/tech/dalvik/improvements.html2
-rw-r--r--zh-cn/devices/tech/datausage/ebpf-traffic-monitor.html18
-rw-r--r--zh-cn/devices/tech/datausage/kernel-overview.html2
-rw-r--r--zh-cn/devices/tech/datausage/tags-explained.html2
-rw-r--r--zh-cn/devices/tech/debug/gdb.html19
-rw-r--r--zh-cn/devices/tech/debug/index.html2
-rw-r--r--zh-cn/devices/tech/debug/intsan.html16
-rw-r--r--zh-cn/devices/tech/debug/native_stack_dump.html164
-rw-r--r--zh-cn/devices/tech/debug/sanitizers.html2
-rw-r--r--zh-cn/devices/tech/display/adaptive-icons.html4
-rw-r--r--zh-cn/devices/tech/display/color-mgmt.html9
-rw-r--r--zh-cn/devices/tech/display/night-light.html3
-rw-r--r--zh-cn/devices/tech/display/pip.html16
-rw-r--r--zh-cn/devices/tech/display/rotate-suggestions.html8
-rw-r--r--zh-cn/devices/tech/ota/ab/ab_implement.html2
-rw-r--r--zh-cn/devices/tech/ota/index.html17
-rw-r--r--zh-cn/devices/tech/ota/nonab/device_code.html6
-rw-r--r--zh-cn/devices/tech/ota/nonab/inside_packages.html6
-rw-r--r--zh-cn/devices/tech/ota/sign_builds.html5
-rw-r--r--zh-cn/devices/tech/power/component.html2
-rw-r--r--zh-cn/devices/tech/settings/info-architecture.html4
-rw-r--r--zh-cn/devices/tech/settings/patterns-components.html2
-rw-r--r--zh-cn/devices/tech/settings/universal-search.html2
-rw-r--r--zh-cn/devices/tv/reference-tv-app.html4
-rw-r--r--zh-cn/legal.html2
-rw-r--r--zh-cn/license.html11
-rw-r--r--zh-cn/security/advisory/index.html4
-rw-r--r--zh-cn/security/apksigning/index.html16
-rw-r--r--zh-cn/security/best-practices/app.html137
-rw-r--r--zh-cn/security/best-practices/hardware.html41
-rw-r--r--zh-cn/security/best-practices/index.html37
-rw-r--r--zh-cn/security/best-practices/network.html52
-rw-r--r--zh-cn/security/best-practices/ops.html120
-rw-r--r--zh-cn/security/best-practices/privacy.html74
-rw-r--r--zh-cn/security/best-practices/system.html198
-rw-r--r--zh-cn/security/bulletin/2018-07-01.html14
-rw-r--r--zh-cn/security/bulletin/2018-08-01.html65
-rw-r--r--zh-cn/security/bulletin/2018-09-01.html12
-rw-r--r--zh-cn/security/bulletin/2018-10-01.html54
-rw-r--r--zh-cn/security/bulletin/2018-11-01.html6
-rw-r--r--zh-cn/security/bulletin/2018-12-01.html133
-rw-r--r--zh-cn/security/bulletin/2018.html26
-rw-r--r--zh-cn/security/bulletin/2019-01-01.html501
-rw-r--r--zh-cn/security/bulletin/2019.html210
-rw-r--r--zh-cn/security/bulletin/index.html31
-rw-r--r--zh-cn/security/bulletin/pixel/2018-01-01.html11
-rw-r--r--zh-cn/security/bulletin/pixel/2018-02-01.html12
-rw-r--r--zh-cn/security/bulletin/pixel/2018-03-01.html13
-rw-r--r--zh-cn/security/bulletin/pixel/2018-04-01.html81
-rw-r--r--zh-cn/security/bulletin/pixel/2018-05-01.html56
-rw-r--r--zh-cn/security/bulletin/pixel/2018-06-01.html14
-rw-r--r--zh-cn/security/bulletin/pixel/2018-07-01.html4
-rw-r--r--zh-cn/security/bulletin/pixel/2018-08-01.html69
-rw-r--r--zh-cn/security/bulletin/pixel/2018-09-01.html4
-rw-r--r--zh-cn/security/bulletin/pixel/2018-10-01.html8
-rw-r--r--zh-cn/security/bulletin/pixel/2018-11-01.html2
-rw-r--r--zh-cn/security/bulletin/pixel/2018-12-01.html24
-rw-r--r--zh-cn/security/bulletin/pixel/2018.html26
-rw-r--r--zh-cn/security/bulletin/pixel/2019-01-01.html209
-rw-r--r--zh-cn/security/bulletin/pixel/2019.html197
-rw-r--r--zh-cn/security/bulletin/pixel/index.html26
-rw-r--r--zh-cn/security/encryption/adiantum.html188
-rw-r--r--zh-cn/security/encryption/file-based.html9
-rw-r--r--zh-cn/security/encryption/index.html2
-rw-r--r--zh-cn/security/enhancements/enhancements42.html6
-rw-r--r--zh-cn/security/index.html4
-rw-r--r--zh-cn/security/keystore/attestation.html15
-rw-r--r--zh-cn/security/keystore/implementer-ref.html51
-rw-r--r--zh-cn/security/keystore/index.html3
-rw-r--r--zh-cn/security/keystore/tags.html26
-rw-r--r--zh-cn/security/overview/acknowledgements.html163
-rw-r--r--zh-cn/security/overview/app-security.html50
-rw-r--r--zh-cn/security/overview/reports.html2
-rw-r--r--zh-cn/security/selinux/compatibility.html18
-rw-r--r--zh-cn/security/selinux/concepts.html2
-rw-r--r--zh-cn/security/selinux/customize.html18
-rw-r--r--zh-cn/security/selinux/validate.html8
-rw-r--r--zh-cn/security/trusty/download-and-build.html59
-rw-r--r--zh-cn/security/trusty/index.html88
-rw-r--r--zh-cn/security/trusty/trusty-ref.html277
-rw-r--r--zh-cn/setup/build/building-kernels.html4
-rw-r--r--zh-cn/setup/build/building.html4
-rw-r--r--zh-cn/setup/build/dashboard.html43
-rw-r--r--zh-cn/setup/build/gsi.html53
-rw-r--r--zh-cn/setup/build/jack.html6
-rw-r--r--zh-cn/setup/build/running.html4
-rw-r--r--zh-cn/setup/community.html26
-rw-r--r--zh-cn/setup/contribute/code-style.html774
-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/build-numbers.html26
-rw-r--r--zh-cn/setup/start/p-release-notes.html10
-rw-r--r--zh-cn/setup/start/site-updates.html39
-rw-r--r--zh-tw/security/bulletin/2018-08-01.html6
-rw-r--r--zh-tw/security/bulletin/2018-09-01.html2
-rw-r--r--zh-tw/security/bulletin/2018-10-01.html6
-rw-r--r--zh-tw/security/bulletin/2018-11-01.html2
-rw-r--r--zh-tw/security/bulletin/2018-12-01.html52
-rw-r--r--zh-tw/security/bulletin/2018.html28
-rw-r--r--zh-tw/security/bulletin/2019-01-01.html502
-rw-r--r--zh-tw/security/bulletin/2019.html211
-rw-r--r--zh-tw/security/bulletin/index.html31
-rw-r--r--zh-tw/security/bulletin/pixel/2018-01-01.html9
-rw-r--r--zh-tw/security/bulletin/pixel/2018-02-01.html6
-rw-r--r--zh-tw/security/bulletin/pixel/2018-03-01.html6
-rw-r--r--zh-tw/security/bulletin/pixel/2018-04-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2018-07-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2018-08-01.html4
-rw-r--r--zh-tw/security/bulletin/pixel/2018-11-01.html2
-rw-r--r--zh-tw/security/bulletin/pixel/2018-12-01.html6
-rw-r--r--zh-tw/security/bulletin/pixel/2018.html26
-rw-r--r--zh-tw/security/bulletin/pixel/2019-01-01.html210
-rw-r--r--zh-tw/security/bulletin/pixel/2019.html198
-rw-r--r--zh-tw/security/bulletin/pixel/index.html26
360 files changed, 15818 insertions, 5174 deletions
diff --git a/en/_book.yaml b/en/_book.yaml
index ada73e7a..cc429ff4 100644
--- a/en/_book.yaml
+++ b/en/_book.yaml
@@ -61,6 +61,9 @@ upper_tabs:
- name: Testing
contents:
- include: /security/_toc-fuzz.yaml
+ - name: Best Practices
+ contents:
+ - include: /security/_toc-best-practices.yaml
- name: Develop
lower_tabs:
other:
diff --git a/en/_dac_versions.html b/en/_dac_versions.html
deleted file mode 100644
index bc8c244c..00000000
--- a/en/_dac_versions.html
+++ /dev/null
@@ -1,34 +0,0 @@
-{% comment %}
-
-Add this file to your doc by adding this line at the top of the body:
-{% include "_shared/_versions.html" %}
-
-Then add an inline variable like this:
-{{ gradlePluginVersion }}
-
-{% endcomment %}
-
-{# TOOLS #}
-{% setvar buildToolsVersion %}27.0.3{% endsetvar %}
-{% setvar gradlePluginVersion %}3.1.0{% endsetvar %}
-{% setvar gradleVersion %}4.4{% endsetvar %}
-{% setvar intellijVersion %}2017.3{% endsetvar %}
-
-{# SDK VERSIONS #}
-{% setvar minSdkVersion %}15{% endsetvar %}
-{% setvar compileSdkVersion %}26{% endsetvar %}
-{% setvar targetSdkVersion %}{{ compileSdkVersion }}{% endsetvar %}
-{% setvar supportLibMinSdkVersion %}14{% endsetvar %}
-{% setvar supportLibMinSdkName %}4.0{% endsetvar %}
-
-{# LIBRARY VERSIONS #}
-{% setvar supportLibVersion %}27.1.1{% endsetvar %}
-{% setvar espressoLibVersion %}3.0.2{% endsetvar %}
-{% setvar gmsLibVersion %}9.8.0{% endsetvar %}
-{% setvar wearableLibVersion %}9.8.0{% endsetvar %}
-{% setvar multidexLibVersion %}1.0.3{% endsetvar %}
-{% setvar playCoreLibVersion %}1.3.0{% endsetvar %}
-
-{# PLATFORM VERSIONS #}
-{% setvar androidPVersionNumber %}9{% endsetvar %}
-{% setvar androidPApiLevel %}P{% endsetvar %}
diff --git a/en/_index.yaml b/en/_index.yaml
index e5e42f7b..6b2cc556 100644
--- a/en/_index.yaml
+++ b/en/_index.yaml
@@ -77,29 +77,29 @@ landing_page:
image_path: /images/android_stack.png
- heading: News
items:
- - heading: Continuous Integration Dashboard
+ - heading: January Security Bulletins
description: >
- The Android Open Source Project (AOSP) has published its continuous integration
- dashboard.
+ The January 2019 Android and Pixel Bulletins have been published
+ along with links to associated fixes and new build numbers to support the
+ January security release.
buttons:
- - label: December 14th, 2018
- path: /setup/build/dashboard
- - heading: December Security Bulletins
+ - label: January 7th, 2019
+ path: /security/bulletin/2019-01-01
+ - heading: Enabling Adiantum
description: >
- 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.
+ New page for enabling Adiantum, an encryption method designed for
+ devices running Android 9 and higher whose CPUs lack AES instructions.
buttons:
- - label: December 5th, 2018
- path: /security/bulletin/2018-12-01
- - heading: Test Mapping Made Easy
+ - label: December 21th, 2018
+ path: /security/encryption/adiantum
+ - heading: Security Best Practices
description: >
- 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.
+ New section containing security best practices for device
+ manufacturers, including tips for system, app, network,
+ hardware, and organizational and operational security.
buttons:
- - label: December 4th, 2018
- path: /compatibility/tests/development/test-mapping
+ - label: December 18th, 2018
+ path: /security/best-practices
- classname: devsite-landing-row-100 tf-row-centered
items:
- buttons:
diff --git a/en/_translation.yaml b/en/_translation.yaml
deleted file mode 100644
index cf10a2a2..00000000
--- a/en/_translation.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-ignore_paths:
-- /compatibility/...
-- /devices/...
-- /images/...
-- /reference/...
-- /security/...
-- /setup/...
-enable_continuous_translation: true
-title: Android Open Source Project
-description: Translations for source.android.com
-language:
-- zh-CN
-cc:
-- sac-doc-leads+translation@google.com
-reviewer:
-- daroberts
-product: Android
diff --git a/en/_versions.html b/en/_versions.html
deleted file mode 100644
index ef50a838..00000000
--- a/en/_versions.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{% comment %}
-
-To use this versions file, add this file to your doc by adding this line at the
-top of the body:
-{% include "_versions.html" %}
-
-Then add an inline variable like this:
-{{ androidPVersionNumber }}
-
-For completeness and consistency, this versions file includes the version
-definitions used for developers.android.com. Please add any SAC specific
-version variables below.
-
-{% endcomment %}
-
-{% include "_dac_versions.html" %}
-
-{# SAC SPECIFIC VERSIONS #}
-{% setvar putVersionNameHere %}X.x{% endsetvar %}
diff --git a/en/compatibility/_toc-tests.yaml b/en/compatibility/_toc-tests.yaml
index 6d9d575f..8002d3c2 100644
--- a/en/compatibility/_toc-tests.yaml
+++ b/en/compatibility/_toc-tests.yaml
@@ -56,15 +56,19 @@ toc:
- title: Camera HAL Testing
path: /compatibility/cts/camera-hal
- title: Camera ITS-in-a-Box
- path: /compatibility/cts/camera-its-box
- - title: Wide Field of View ITS-in-a-Box Assembly
- path: /compatibility/cts/camera-wfov-box-assembly
- - title: Regular Field of View ITS-in-a-Box Assembly
- path: /compatibility/cts/camera-its-box-assembly
- - title: Sensor Fusion Box Quick Start
- path: /compatibility/cts/sensor-fusion-quick-start
- - title: Sensor Fusion Box Details
- path: /compatibility/cts/sensor-fusion-box-assembly
+ section:
+ - title: Overview
+ path: /compatibility/cts/camera-its-box
+ - title: Regular Field of View Box
+ path: /compatibility/cts/camera-its-box-assembly
+ - title: Wide Field of View Box
+ path: /compatibility/cts/camera-wfov-box-assembly
+ - title: Sensor Fusion Box
+ section:
+ - title: Sensor Fusion Box Quick Start
+ path: /compatibility/cts/sensor-fusion-quick-start
+ - title: Sensor Fusion Box Details
+ path: /compatibility/cts/sensor-fusion-box-assembly
- title: Secure Element
path: /compatibility/cts/secure-element
- title: Interpret Results
@@ -147,6 +151,8 @@ toc:
path: /devices/tech/debug/jank_jitter
- title: Using GDB
path: /devices/tech/debug/gdb
+ - title: Dumping User & Kernel Stacks
+ path: /devices/tech/debug/native_stack_dump
- title: Native Memory Use
path: /devices/tech/debug/native-memory
- title: Network Connectivity Tests
diff --git a/en/compatibility/_translation.yaml b/en/compatibility/_translation.yaml
deleted file mode 100644
index 320f9ed7..00000000
--- a/en/compatibility/_translation.yaml
+++ /dev/null
@@ -1,30 +0,0 @@
-ignore_paths:
-- /compatibility/1.6/...
-- /compatibility/2.1/...
-- /compatibility/2.2/...
-- /compatibility/2.3/...
-- /compatibility/4.0/...
-- /compatibility/4.1/...
-- /compatibility/4.2/...
-- /compatibility/4.3/...
-- /compatibility/4.4/...
-- /compatibility/5.0/...
-- /compatibility/5.1/...
-- /compatibility/6.0/...
-- /compatibility/7.0/...
-- /compatibility/7.1/...
-- /compatibility/8.0/...
-- /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
-language:
-- zh-CN
-cc:
-- sac-doc-leads+translation@google.com
-reviewer:
-- gdimino@google.com
-product: Android
diff --git a/en/compatibility/cts/camera-hal.html b/en/compatibility/cts/camera-hal.html
index f6db85a9..72da83db 100644
--- a/en/compatibility/cts/camera-hal.html
+++ b/en/compatibility/cts/camera-hal.html
@@ -24,40 +24,49 @@
<p>This document lists all tests available for evaluating the Android camera
-hardware abstraction layer (HAL). It is intended for OEMs and application
+hardware abstraction layer (HAL). It is intended for original equipment
+manufacturers (OEMs) and application
processor (AP) vendors so they may ensure proper implementation of the camera
HAL with minimum defects. Although this is a voluntary addition to the Android
Compatibility Test Suite (CTS), it greatly increases camera test coverage and
will certainly identify potential bugs.</p>
-<p>By passing these tests, original equipment manufacturers (OEM) validate
-whether they have properly integrated the latest Android camera hardware
-abstraction layer (HAL) 3.2 interfaces. When conforming with all items in the
+<p>By passing these tests, OEMs validate
+whether they have properly integrated the Android
+camera hardware
+abstraction layer (HAL) 3 interfaces. When conforming with all items in the
checklist, a device implementation may be considered <em>full</em> with respect
-to the new Android Camera HAL interfaces. This will in turn enable a device to
-properly support the new <code>android.hardware.camera2</code> package that
+to the Android Camera HAL interfaces. This will in turn enable a device to
+properly support the
+<a href="https://developer.android.com/reference/android/hardware/camera2/package-summary" class="external">
+ <code>android.hardware.camera2</code></a> package that
camera apps build upon.</p>
-<h2 id=camera_hal_3_2_specification>Camera HAL 3.2 specification</h2>
+<h2 id=camera_hal_3_2_specification>Camera HAL3 specification</h2>
-<p>The Android Camera HAL 3.2 specification is the authoritative source of
-information on what devices must satisfy; the document here provides a summary
+<p>The <a href="/devices/camera/camera3">Android Camera HAL3</a> specification
+is the authoritative source of
+information on what devices must satisfy; this page provides a summary
of all tests that can be used as a checklist. Camera HAL implementers (e.g. AP
-vendors) should go through the HAL 3.2 specification line-by-line and ensure
+vendors) should go through the Camera HAL3 specification line-by-line and ensure
their devices conform to it.</p>
-<p>The current HAL 3.2 specification is defined in these files within the L
-generic Android Platform Development Kit (PDK):</p>
+<p>The current HAL specification is defined in these files within the Android
+5.0 and later generic Android Platform Development Kit (PDK):</p>
<ul>
<li><em>Camera HAL 3.x interface and spec</em>: <code><a
-href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h">hardware/libhardware/include/hardware/camera3.h</a></code>,
+href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera3.h"
+class="external">hardware/libhardware/include/hardware/camera3.h</a></code>,
<code><a
-href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h">hardware/libhardware/include/hardware/camera_common.h</a></code>
+href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/camera_common.h"
+class="external">hardware/libhardware/include/hardware/camera_common.h</a></code>
<li><em>Camera HAL 3.x metadata spec</em>: <code><a
-href="https://android.googlesource.com/platform/system/media/+/master/camera/docs/docs.html">system/media/camera/docs/docs.html</a></code>
+href="https://android.googlesource.com/platform/system/media/+/master/camera/docs/docs.html"
+class="external">system/media/camera/docs/docs.html</a></code>
<li><em>HAL pixel format interface and spec</em>: <code><a
-href="https://android.googlesource.com/platform/system/core/+/master/include/system/graphics.h">system/core/include/system/graphics.h</a></code>
+href="https://android.googlesource.com/platform/system/core/+/master/libsystem/include/system/graphics.h"
+class="external">system/core/libsystem/include/system/graphics.h</a></code>
</ul>
<h2 id=camera_test_types>Camera test types</h2>
@@ -103,14 +112,17 @@ HIDL interface level. For more information on using VTS, see
<h2 id=cts_tests>Compatibility Test Suite (CTS) tests</h2>
<p>Camera Android Compatibility Test Suite (CTS) tests focus upon device
-compatibility. They do not require a specific test environment (the field of
-view or FOV CTS Verifier test being the lone exception). </p>
+compatibility. For more information on the recommended test environment for camera CTS, see <a href="/compatibility/cts/setup#camera">Set up CTS</a>.</p>
<p>The starting path for Camera CTS tests is: <code>platform/cts</code>.</p>
<p>When running Camera CTS for devices that support external cameras (such as
USB webcams), you must have a device plugged in when running CTS or the tests
-will automatically fail.</p>
+will automatically fail. Examples of external cameras include: <a
+href="https://www.logitech.com/en-us/product/hd-pro-webcam-c920"
+class="external">Logitech HD Pro Webcam C920</a> and the <a
+href="https://www.microsoft.com/accessories/en-us/products/webcams/lifecam-hd-3000/t3h-00011"
+class="external">Microsoft LifeCam HD-3000</a>.</p>
<p>See the <a href="/compatibility/cts/index.html">CTS
introduction</a> and its subpages for general instructions on running CTS.</p>
@@ -144,66 +156,95 @@ the <code>android.hardware.camera2</code> API</h3>
<h2 id=its_tests>Image Test Suite (ITS) tests</h2>
-<p>The CameraITS tests focus upon image correctness. These Python scripts are
-manually run on a workstation with the Android device connected over USB. The
-workstation can run any operating system as long as it has the requisite Python
-2.7 environment.</p>
+<aside class="Note"><strong>Note:</strong>
+<a href="/devices/camera/camera3">Camera HAL3</a> is required for all devices
+running Android 9 or higher (except for Android Go devices).</aside>
-<p class="note">Since ITS is a CTS Verifier subtest, start CTS Verifier and the
-ITS subtest before running the python scripts so they have processes with which
-to communicate.</p>
+<p>The Camera Image Test Suite (ITS) tests focus on image correctness.
+ To perform the tests, run the Python scripts on a workstation with the
+ Android device connected over USB.</p>
-<p>The CameraITS infrastructure and tests are located under:
-<code>cts/apps/CameraITS</code></p>
+<p>The Camera ITS infrastructure and tests are located in the
+<a href="https://android.googlesource.com/platform/cts/+/master/apps/CameraITS"
+class="external">
+ <code>cts/apps/CameraITS</code></a> directory. Each test resides in a
+ <code>tests/scene<var>#</var></code> subdirectory.</p>
-<p>See the latest <code>README</code> file in this top-level folder for
-instructions on how to set up and run the tests. For setup: <code>make
-cts</code></p>
+To set up the test environment, run:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">extract root/out/host/linux-x86/cts-verfier/android-cts-verifier.zip</code>
<code class="devsite-terminal">cd android-cts-verifier</code>
<code class="devsite-terminal">adb install -r CtsVerifier.apk</code>
<code class="devsite-terminal">cd CameraITS</code>
+<code class="devsite-terminal">source build/envsetup.sh</code>
</pre>
-<p>See <code>tutorial.py</code> in the <code>tests</code> subdirectory for a
-walkthrough of the script's use. Each test resides in a corresponding
-<code>tests/scene<#></code> subdirectory. See the <code>README</code> file in
-each subdirectory for specific test instructions.</p>
-
-<p>To follow the recommended way of setting up and running the Camera Image Test
-Suite, see <a href="/compatibility/cts/camera-its-box">Camera
-ITS-in-a-Box</a>.</p>
-
-<p>To run ITS manually, you will need a simple physical environment with a
+<aside class="note"><strong>Note:</strong> Because ITS is a CTS Verifier subtest,
+start CTS Verifier and the ITS subtest before running the Python scripts so they
+have processes with which to communicate.</aside>
+
+<p>For more information on how to set up and run the tests, see the
+<code>CameraITS</code> PDF file in <code>cts/apps/CameraITS</code>. See
+<a href="https://android.googlesource.com/platform/cts/+/master/apps/CameraITS/tests/tutorial.py"
+ class="external">
+ <code>tutorial.py</code></a> in the <code>tests</code> subdirectory for a
+guide on how to use the scripts.</p>
+
+<p>The ITS static tests (scenes 0-5) can run with any operating
+system with the required Python 2.7 environment. However, the
+<code>sensor_fusion</code>
+test with the <a href="/compatibility/cts/sensor-fusion-quick-start">Sensor
+Fusion Box</a> must be run with the
+Linux operating system.
+</p>
+
+<p>The recommended setup for scenes 0-4
+is described in <a
+href="/compatibility/cts/camera-its-box">Camera ITS-in-a-box</a>. The
+recommended setup for the sensor_fusion scene is described in <a
+href="/compatibility/cts/sensor-fusion-quick-start">Sensor Fusion Box Quick
+ Start Guide</a>.</p>
+
+<p>To run ITS manually, prepare a simple physical environment with a
specific, reusable target
-such as a white wall, grey card, and desk lamp. The Android device is mounted
-on a tripod and its camera functions are exercised by the scripts. Most tests
-are pass or fail but some offer metrics, as well.</p>
+such as a white wall, a grey card, and a desk lamp. Mount the Android device on
+ a tripod and run the scripts to test the camera functions. Most tests
+are pass or fail but some offer metrics.</p>
+
+<p>These scripts test scenarios that are not tested in CTS and are an important
+ component of the HAL 3.2 test plan.</p>
-<p>These tests are works-in-progress and are not yet comprehensive enough for
-full automated pass/fail validation of the camera HAL. However, these scripts
-do test scenarios that are not tested in CTS and are an important component of
-the overall HAL 3.2 test plan.</p>
+<p>ITS tests either pass or fail. All mandated
+tests in each scene folder must pass. Tests that are not mandated can
+fail and still count as a pass in
+<code>CtsVerifier</code>.</p>
-<h3 id=its_tests_on_scene_0_plain>ITS tests on scene 0 (plain)</h3>
+<h3 id="scene0_to_scene4_tests">Scene 0 to scene 4 tests</h3>
-<p>This test requires no specific setup. Pass all of the tests in the
-<code>tests/scene0</code> folder, for all cameras (back + front + any
-others).</p>
+<p>These scenes represent a large part of ITS testing and are included as PDF
+files in the <code>scene</code> folder. To automate these tests, use the <a
+href="/compatibility/cts/camera-its-box">Camera ITS-in-a-box</a> system.</p>
-<h3 id=its_tests_on_scene_1_grey_card>ITS tests on scene 1 (grey card)</h3>
+<ul>
+ <li>Scene 0: Requires no setup.</li>
+ <li>Scene 1: Requires a grey card.</li>
+ <li>Scene 2: Requires a face scene.</li>
+ <li>Scene 3: ISO12233 chart.</li>
+ <li>Scene 4: Custom scene with a circle inside a square.</li>
+</ul>
-<p>Pass all of the tests in the <code>tests/scene1</code> folder, for all
-cameras (back + front + any others). The <code>tests/scene1/README</code> file
-describes the scene setup.</p>
+<h3 id="scene5_tests">Scene 5 tests</h3>
+<p>Scene 5 tests require a diffuser to be placed on top of the camera.</p>
-<h3 id=its_tests_on_scene_2_camera_lab>ITS tests on scene 2 (camera lab)</h3>
+<h3 id="sensor_fusion_tests">Sensor fusion tests</h3>
-<p>Pass all of the tests in the <code>tests/scene2</code> folder, for all
-cameras (back + front + any others). The <code>tests/scene2/README</code> file
-describes the scene setup.</p>
+<p>Sensor fusion tests require specific camera motion to test the timestamp
+difference between the camera and the gyroscope for AR and VR applications. This
+test is skipped if no gyroscope is included or if the <code>REALTIME</code>
+parameter is not enabled. The <code>sensor_fusion</code> test can be automated
+with the <a
+href="/compatibility/cts/sensor-fusion-quick-start">Sensor Fusion Box</a>.</p>
<h2 id=media_framework_tests>Media Framework tests</h2>
@@ -222,11 +263,11 @@ to install the resulting .apk. Example commands are included below.</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">make mediaframeworktest</code>
-<code class="devsite-terminal">adb install out/target/product/<em>&lt;name></em>/data/app/mediaframeworktest.apk</code>
+<code class="devsite-terminal">adb install out/target/product/<var>name</var>/data/app/mediaframeworktest.apk</code>
</pre>
-<p>Where the <em><code><name></code></em> variable represents the directory
-containing the vendor's product.</p>
+ <p>Where the <var>name</var> variable represents the
+ directory containing the vendor's product.</p>
<p>Find all of the tests in the following directory or its subdirectories:</p>
diff --git a/en/compatibility/cts/camera-its-box-assembly.html b/en/compatibility/cts/camera-its-box-assembly.html
index f6336f10..45d2f868 100644
--- a/en/compatibility/cts/camera-its-box-assembly.html
+++ b/en/compatibility/cts/camera-its-box-assembly.html
@@ -1,6 +1,6 @@
<html devsite>
<head>
- <title>Regular Field of View (RFoV) ITS-in-a-Box Assembly</title>
+ <title>Regular Field of View (RFoV) Box</title>
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
@@ -41,6 +41,8 @@ qualified vendors.</p>
95050<br>fred@acuspecinc.com</li>
<li><em>MYWAY, Inc</em><br>4F., No. 163, Fu
Ying Rd., New Taipei City, Taiwan<br>sales@myway.tw</li>
+<li><em>West-Mark, Inc</em><br>2704 Railroad Ave, Ceres, CA
+95307<br>dgoodman@west-mark.com</li>
</ul>
<h2 id=building-box>Building an RFoV ITS-in-a-box</h2>
diff --git a/en/compatibility/cts/camera-its-box.html b/en/compatibility/cts/camera-its-box.html
index 8bdc3bb3..5027656e 100644
--- a/en/compatibility/cts/camera-its-box.html
+++ b/en/compatibility/cts/camera-its-box.html
@@ -62,8 +62,11 @@ software.</li>
</ol>
<h2 id=configure-tablet>Configuring the tablet</h2>
-<p>This section provides step-by-step instructions for setting up a Pixel C
-tablet for use with the CameraITS software.</p>
+<p>This section provides step-by-step instructions for setting up a
+tablet for use with the CameraITS software. These instructions use a Pixel C as
+ an example tablet. For information on tablet
+requirements and recommendations, see <a href="#tablet-requirements">Tablet
+requirements</a>.</p>
<p class="note"><strong>Note:</strong> The CameraITS python scripts
automatically set the following options on the tablet for you:
@@ -74,10 +77,10 @@ automatically set the following options on the tablet for you:
<ol>
<li>Charge the tablet and power it on. If prompted to set up an account, skip it
(CameraITS does not require any account paired with the tablet).</li>
-<li>Update the tablet to Android 7.0 or later (Android 6.x and earlier versions
-do not support CameraITS).</li>
-<li>Enable developer mode by going to <em>Settings > About tablet</em> and
-tapping <strong>Build number</strong> five times.</li>
+<li>Update the tablet to Android 7.0 or higher. Android 6.x and lower versions
+do not support CameraITS.</li>
+<li>Enable <a href="https://developer.android.com/studio/debug/dev-options#enable"
+ class="external">developer mode</a>.</li>
<li>Return to <em>Settings</em> and select <strong>Developer options</strong>.
<table>
@@ -247,5 +250,67 @@ adb -s FA6BM0305016 pull /sdcard/verifierReports
</ol>
</li>
</ul>
+
+<h2 id=tablet-requirements>Tablet requirements</h2>
+
+<p>Tablets must have a display size of around 10 inches with a screen resolution
+ greater than 2000 x 1500 pixels. The <code>DISPLAY_LEVEL</code> value must be
+ set in
+<code>CameraITS/tools/wake_up_screen.py</code> according to the tablet model.
+The table below lists the values for recommended tablets.</p>
+
+<p>Recommended tablets for ITS testing are shown below:</p>
+
+<table>
+ <tr>
+ <th>Device</th>
+ <th>Display size<br>(inches)</th>
+ <th>Display size<br>(pixels)</th>
+ <th>Tablet dimensions<br>(inches)</th>
+ <th>DISPLAY_LEVEL</th>
+ <th>OS</th>
+ </tr>
+ <tr>
+ <td>Asus Zen Pad 3</td>
+ <td>9.7</td>
+ <td>2048 x 1536</td>
+ <td>9.47 x 6.44 x 0.28</td>
+ <td>192</td>
+ <td>Android 6.0</td>
+ </tr>
+ <tr>
+ <td>Huawei Mediapad m5</td>
+ <td>10.8</td>
+ <td>2560 x 1600</td>
+ <td>10.18 x 6.76 x 0.29</td>
+ <td>192</td>
+ <td>Android 8.0</td>
+ </tr>
+ <tr>
+ <td>Pixel C</td>
+ <td>10.2</td>
+ <td>2560 x 1800</td>
+ <td>9.53 x 7.05 x 0.28</td>
+ <td>96</td>
+ <td>Android 8.0</td>
+ </tr>
+ <tr>
+ <td>Samsung S3</td>
+ <td>9.7</td>
+ <td>2048 x 1536</td>
+ <td>10.76 x 6.65 x 0.24</td>
+ <td>192</td>
+ <td>Android 7.0</td>
+ </tr>
+ <tr>
+ <td>Sony Xperia Z4</td>
+ <td>10.1</td>
+ <td>2560 x 1600</td>
+ <td>10 x 6.57 x 0.24</td>
+ <td>192</td>
+ <td>Android 7.0</td>
+ </tr>
+</table>
+
</body>
</html>
diff --git a/en/compatibility/cts/camera-wfov-box-assembly.md b/en/compatibility/cts/camera-wfov-box-assembly.md
index cadc0b42..64b8373c 100644
--- a/en/compatibility/cts/camera-wfov-box-assembly.md
+++ b/en/compatibility/cts/camera-wfov-box-assembly.md
@@ -16,7 +16,7 @@ Book: /_book.yaml
limitations under the License.
-->
-# Wide Field of View (WFoV) ITS-in-a-Box Assembly
+# Wide Field of View (WFoV) Box
Android {{ androidPVersionNumber }} introduces ITS-in-a-box revision 2, an
automated test system for both wide field of view (WFoV) and regular field of
diff --git a/en/compatibility/cts/development.html b/en/compatibility/cts/development.html
index 3741c35e..99069374 100644
--- a/en/compatibility/cts/development.html
+++ b/en/compatibility/cts/development.html
@@ -277,13 +277,9 @@ updated from time to time as CTS for the given Android version matures.</p>
<td>nougat-cts-dev</td>
<td>Monthly</td>
</tr>
+
<tr>
- <td>6.0</td>
- <td>marshmallow-cts-dev</td>
- <td>Monthly</td>
-</tr>
-<tr>
- <td colspan="3">No releases are planned for 5.1, 5.0, 4.4, 4.3 and 4.2.</td>
+ <td colspan="3">No releases are planned for 6.0, 5.1, 5.0, 4.4, 4.3 and 4.2.</td>
</tr>
</table>
@@ -303,7 +299,6 @@ Open Source Project (AOSP).
<p>CTS development branches have been set up so that changes submitted to each
branch will automatically merge as below:<br>
-marshmallow-cts-dev ->
nougat-cts-dev -> nougat-mr1-cts-dev -> oreo-cts-dev -> oreo-mr1-cts-dev -> pie-cts-dev -> &lt;private-development-branch for Android Q&gt;</p>
<p>If a changelist (CL) fails to merge correctly, the author of the CL will get
diff --git a/en/compatibility/cts/downloads.html b/en/compatibility/cts/downloads.html
index 6f3811d0..bbc6c108 100644
--- a/en/compatibility/cts/downloads.html
+++ b/en/compatibility/cts/downloads.html
@@ -26,107 +26,107 @@
<p>Thank you for your interest in Android Compatibility! The links below give
you access to key documents and information about the program. As CTS is
updated, new versions are added to this page. CTS versions are denoted by
-R&lt;number&gt; in the link name.</p>
+R<var>number</var> in the link name.</p>
<h2 id="android-90">Android 9</h2>
<p>Android 9 is the release of the development milestone code-named P.
The source code for the following tests, including tests for instant apps, can be synced with the
-'android-cts-9.0_r4' tag in the open-source tree.</p>
+'android-cts-9.0_r5' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-9.0_r4-linux_x86-arm.zip">Android
-9.0 R4 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-9.0_r5-linux_x86-arm.zip">Android
+9.0 R5 Compatibility Test Suite (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 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-9.0_r5-linux_x86-x86.zip">Android
+9.0 R5 Compatibility Test Suite (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 Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r5-linux_x86-arm.zip">Android
+9.0 R5 CTS Verifier - 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 Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r5-linux_x86-x86.zip">Android
+9.0 R5 CTS Verifier - 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 for Instant Apps - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r5-linux_x86-arm.zip">Android
+9.0 R5 CTS for Instant Apps - 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 for Instant Apps - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r5-linux_x86-x86.zip">Android
+9.0 R5 CTS for Instant Apps - x86</a></li>
</ul>
<h2 id="android-81">Android 8.1</h2>
<p>Android 8.1 is the release of the development milestone code-named Oreo-MR1.
The source code for the following tests can be synced with the
-'android-cts-8.1_r11' tag in the open-source tree.</p>
+'android-cts-8.1_r12' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.1_r11-linux_x86-arm.zip">Android
-8.1 R11 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.1_r12-linux_x86-arm.zip">Android
+8.1 R12 Compatibility Test Suite (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 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.1_r12-linux_x86-x86.zip">Android
+8.1 R12 Compatibility Test Suite (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 Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r12-linux_x86-arm.zip">Android
+8.1 R12 CTS Verifier - 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 Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r12-linux_x86-x86.zip">Android
+8.1 R12 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-80">Android 8.0</h2>
<p>Android 8.0 is the release of the development milestone code-named Oreo.
The source code for the following tests can be synced with the
-'android-cts-8.0_r15' tag in the open-source tree.</p>
+'android-cts-8.0_r16' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.0_r15-linux_x86-arm.zip">Android
-8.0 R15 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.0_r16-linux_x86-arm.zip">Android
+8.0 R16 Compatibility Test Suite (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 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.0_r16-linux_x86-x86.zip">Android
+8.0 R16 Compatibility Test Suite (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 Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r16-linux_x86-arm.zip">Android
+8.0 R16 CTS Verifier - 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 Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r16-linux_x86-x86.zip">Android
+8.0 R16 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-71">Android 7.1</h2>
<p>Android 7.1 is the release of the development milestone code-named Nougat-MR1.
The source code for the following tests can be synced with the
-'android-cts-7.1_r23' tag in the open-source tree.</p>
+'android-cts-7.1_r24' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-7.1_r23-linux_x86-arm.zip">Android
-7.1 R23 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.1_r24-linux_x86-arm.zip">Android
+7.1 R24 Compatibility Test Suite (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 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.1_r24-linux_x86-x86.zip">Android
+7.1 R24 Compatibility Test Suite (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 Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r24-linux_x86-arm.zip">Android
+7.1 R24 CTS Verifier - 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 Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r24-linux_x86-x86.zip">Android
+7.1 R24 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-70">Android 7.0</h2>
<p>Android 7.0 is the release of the development milestone code-named Nougat.
The source code for the following tests can be synced with the
-'android-cts-7.0_r27' tag in the open-source tree.</p>
+'android-cts-7.0_r28' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-7.0_r27-linux_x86-arm.zip">Android
-7.0 R27 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.0_r28-linux_x86-arm.zip">Android
+7.0 R28 Compatibility Test Suite (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 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.0_r28-linux_x86-x86.zip">Android
+7.0 R28 Compatibility Test Suite (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 Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r28-linux_x86-arm.zip">Android
+7.0 R28 CTS Verifier - 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 Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r28-linux_x86-x86.zip">Android
+7.0 R28 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-60">Android 6.0</h2>
diff --git a/en/compatibility/cts/run.html b/en/compatibility/cts/run.html
index 0bd66d90..0caf4c7e 100644
--- a/en/compatibility/cts/run.html
+++ b/en/compatibility/cts/run.html
@@ -45,156 +45,27 @@ short) continuous test framework.</p>
<li>Start the default test plan (contains all test packages) by appending: <code>run
cts --plan CTS</code> . This kicks off all CTS tests required for compatibility.
<ul>
+ <li>For CTS v2 (Android 7.0 and later), enter <code>list modules</code> to
+ see a list of test modules.
<li>For CTS v1 (Android 6.0 and earlier), enter <code>list plans</code> to view a list of
test plans in the repository or <code>list package</code>s to view a list of
test packages in the repository.
- <li>For CTS v2 (Android 7.0 and later), enter <code>list modules</code> to
- see a list of test modules.
</ul>
</li>
<li>Alternately, run the CTS plan of your choosing from the command line
using: <code>cts-tradefed run cts --plan
<plan_name>
</code>
-<p class="note"><strong>Note:</strong> When running Android 6.0 (Marshmallow)
-CTS only, we recommend you use the <code>--skip-preconditions</code> option to
-skip the experimental pre-conditions feature that may cause issues for when
-executing CTS tests.</p>
+<p class="note"><strong>Note:</strong> You may save run time in Android 7.0 (Nougat) and higher, by
+ using the <code>run cts-dev</code> command instead of <code>run cts</code>. This command skips
+ preconditions, device-information collection, and all system status checkers. It also runs the
+ tests on only a single ABI. For device validation, avoid this optimization and
+include all preconditions and checks.</p>
<li>View test progress and results reported on the console.
<li>If your device is Android 5.0 or later and declares support for an ARM and a
x86 ABI, you should run both the ARM and x86 CTS packages.
</ol>
-<h2 id=using-cts-v1>Using the CTS v1 console</h2>
-
-<p>For Android 6.0 or earlier, you'll use CTS v1.</p>
-<h3 id=selecting_cts_plans>Selecting plans</h3>
-<p>The following test plans are available:</p>
-<ul>
- <li><em>CTS</em>—all tests required for compatibility. </li>
- <li><em>Signature</em>—the signature verification of all public APIs </li>
- <li><em>Android</em>—tests for the Android APIs </li>
- <li><em>Java</em>—tests for the Java core library </li>
- <li><em>VM</em>—tests for ART or Dalvik </li>
- <li><em>Performance</em>—performance tests for your implementation </li>
-</ul>
-<p>These can be executed with the <code>run cts</code> command.</p>
-<h3 id=cts_reference>CTS v1 console command reference</h3>
-
-<p class="table-caption" id="console-commands">
- <strong>Table 1.</strong> This table summarizes the CTS v1 console commands for
-various uses.</p>
-<table>
- <tbody>
- <tr>
- <th>Host</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>help</code></td>
- <td>Display a summary of the most commonly used commands</td>
- </tr>
- <tr>
- <td><code>help all</code></td>
- <td>Display the complete list of available commands</td>
- </tr>
- <tr>
- <td><code>exit</code></td>
- <td>Gracefully exit the CTS console. Console will close when all currently running tests are finished</td>
- </tr>
- <tr>
- <th>Run</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>run cts</code></td>
- <td>Run the specified tests and displays progress information. One of
-<code>--plan</code>, <code>--package</code>, <code>--class</code> or
-<code>--continue-session</code> needs to be specified
- <p>The CTS console can accept other commands while tests are in progress </p>
- <p>If no devices are connected, the CTS desktop machine (or host) will wait for a device to be connected before starting tests </p>
- <p>If more than one device is connected, the CTS host will choose a device automatically</p></td>
- </tr>
- <tr>
- <td><code>--plan &lt;test_plan_name&gt;</code></td>
- <td>Run the specified test plan</td>
- </tr>
- <tr>
- <td><code>--package/-p &lt;test_package_name&gt;  [--package/-p &lt;test_package2&gt;...]</code></td>
- <td>Run the specified test packages</td>
- </tr>
- <tr>
- <td><code>--class/-c &lt;class_name&gt; [--method/-m &lt;test_method_name&gt;</code></td>
- <td>Run the specified test class and/or method</td>
- </tr>
- <tr>
- <td><code>--continue-session</code></td>
- <td>Run all not executed tests from previous CTS session; the sessions testResult.xml will be updated with the new results</td>
- </tr>
- <tr>
- <td><code>--shards &lt;number_of_shards&gt;</code></td>
- <td>Shard a CTS run into given number of independent chunks, to run on multiple devices in parallel</td>
- </tr>
- <tr>
- <td><code>--serial/-s &lt;deviceID&gt;</code></td>
- <td>Run CTS on the specific device</td>
- </tr>
- <tr>
- <td><code>-t &lt;class_name&gt;#&lt;test_method_name&gt;</code></td>
- <td>Run a specific test method</td>
- </tr>
- <tr>
- <td><code>--force-abi 32|64</code></td>
- <td>On 64-bit devices, run the test against only the 32-bit or 64-bit ABI</td>
- </tr>
- <tr>
- <th>List</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>list packages</code></td>
- <td>List all available test packages in the repository</td>
- </tr>
- <tr>
- <td><code>list plans</code></td>
- <td>List all available test plans in the repository</td>
- </tr>
- <tr>
- <td><code>list invocations</code></td>
- <td>List 'run' commands currently being executed on devices</td>
- </tr>
- <tr>
- <td><code>list commands</code></td>
- <td>List all 'run' commands currently in the queue waiting to be assigned to devices</td>
- </tr>
- <tr>
- <td><code>list results</code></td>
- <td>List CTS results currently stored in repository</td>
- </tr>
- <tr>
- <td><code>list devices</code></td>
- <td>List currently connected devices and their state
- <p> </p>
- <p>'Available' devices are functioning, idle devices, available for running tests</p>
- <p> </p>
- <p>'Unavailable' devices are devices visible via adb, but are not responding to adb commands and won't be allocated for tests</p>
- <p> </p>
- <p>'Allocated' devices are devices currently running tests</td>
- </tr>
- <tr>
- <th>Add</th>
- <th>Description</th>
- </tr>
- <tr>
- <td><code>add derivedplan --plan &lt;plan_name&gt;<br>
- --result/-r<br>
- [pass | fail | timeout | notExecuted]<br>
- [--session/-s &lt;session_id&gt;]</code></td>
- <td>Create a plan derived from given result session; use this option to rerun reports and validate test issues</td>
- </tr>
- </tbody>
-</table>
-
<h2 id=using-cts-v2>Using the CTS v2 console</h2>
<p>For Android 7.0 or later, you'll use CTS v2.</p>
@@ -261,11 +132,32 @@ various uses.</p>
</tr>
<tr>
<td><code>run cts</code></td>
- <td><p>Run the default CTS plan (that is, the full CTS invocation).</p>
- <p>The CTS console can accept other commands while tests are in progress.</p>
+ <td><p>Run the default CTS plan (that is, the full CTS invocation). Use this
+ comprehensive option (including preconditions) for device validation.
+ See <a
+ href="https://android.googlesource.com/platform/test/suite_harness/+/master/tools/cts-tradefed/res/config/cts.xml">/test/suite_harness/tools/cts-tradefed/res/config/cts.xml</a>
+ for inclusions.</p>
+ <p>The CTS console can accept other commands while tests are in progress.</p>
+ <p>If no devices are connected, the CTS desktop machine (or host) will wait
+ for a device to be connected before starting tests. If more than one
+ device is connected, the CTS host will choose a device
+ automatically.</p>
+ </tr>
+ <td><code>run cts-dev</code></td>
+ <td><p>Run the default CTS plan (that is, the full CTS invocation) but
+ skip preconditions to save run time for iterative development of a new
+ test. This bypasses verification and setup of the device's
+ configuration, such as pushing media files or checking for Wi-Fi
+ connection, as is done when the <code>--skip-preconditions</code> option is used. This
+ command also skips device-information collection, and all system status checkers. It also
+ runs the tests on only a single ABI. For device validation, avoid this optimization and
+ include all preconditions and checks.
+ See <a href="https://android.googlesource.com/platform/test/suite_harness/+/master/tools/cts-tradefed/res/config/cts-dev.xml">/test/suite_harness/tools/cts-tradefed/res/config/cts-dev.xml</a> for exclusions.</p>
+ <p>The CTS console can accept other commands while tests are in progress.</p>
<p>If no devices are connected, the CTS desktop machine (or host) will wait
- for a device to be connected before starting tests.</p>
- <p>If more than one device is connected, the CTS host will choose a device automatically.</p></td>
+ for a device to be connected before starting tests. If more than one
+ device is connected, the CTS host will choose a device
+ automatically.</p></td>
</tr>
<tr>
<td><code>run retry</code></td>
@@ -347,7 +239,10 @@ various uses.</p>
</tr>
<tr>
<td><code>--skip-preconditions</code></td>
- <td>Bypasses verification and setup of the device's configuration, such as pushing media files or checking for Wi-Fi connection.</td>
+ <td>Skip preconditions to save run time for iterative development of a
+ new test. This bypasses verification and setup of the device's
+ configuration, such as pushing media files or checking for Wi-Fi
+ connection.</td>
</tr>
<tr>
<th>List</th>
@@ -416,5 +311,143 @@ various uses.</p>
</tbody>
</table>
+<h2 id=using-cts-v1>Using the CTS v1 console</h2>
+
+<p>For Android 6.0 or earlier, you'll use CTS v1.</p>
+<h3 id=selecting_cts_plans>Selecting plans</h3>
+<p>The following test plans are available:</p>
+<ul>
+ <li><em>CTS</em>—all tests required for compatibility. </li>
+ <li><em>Signature</em>—the signature verification of all public APIs </li>
+ <li><em>Android</em>—tests for the Android APIs </li>
+ <li><em>Java</em>—tests for the Java core library </li>
+ <li><em>VM</em>—tests for ART or Dalvik </li>
+ <li><em>Performance</em>—performance tests for your implementation </li>
+</ul>
+<p>These can be executed with the <code>run cts</code> command.</p>
+
+<h3 id=cts_reference>CTS v1 console command reference</h3>
+
+<p class="table-caption" id="console-commands">
+ <strong>Table 1.</strong> This table summarizes the CTS v1 console commands for
+various uses.</p>
+<table>
+ <tbody>
+ <tr>
+ <th>Host</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>help</code></td>
+ <td>Display a summary of the most commonly used commands</td>
+ </tr>
+ <tr>
+ <td><code>help all</code></td>
+ <td>Display the complete list of available commands</td>
+ </tr>
+ <tr>
+ <td><code>exit</code></td>
+ <td>Gracefully exit the CTS console. Console will close when all currently running tests are finished</td>
+ </tr>
+ <tr>
+ <th>Run</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>run cts</code></td>
+ <td>Run the specified tests and displays progress information. One of
+<code>--plan</code>, <code>--package</code>, <code>--class</code> or
+<code>--continue-session</code> needs to be specified
+ <p>The CTS console can accept other commands while tests are in progress </p>
+ <p>If no devices are connected, the CTS desktop machine (or host) will wait for a device to be connected before starting tests </p>
+ <p>If more than one device is connected, the CTS host will choose a device automatically</p></td>
+ </tr>
+ <tr>
+ <td><code>--plan &lt;test_plan_name&gt;</code></td>
+ <td>Run the specified test plan</td>
+ </tr>
+ <tr>
+ <td><code>--package/-p &lt;test_package_name&gt;  [--package/-p &lt;test_package2&gt;...]</code></td>
+ <td>Run the specified test packages</td>
+ </tr>
+ <tr>
+ <td><code>--class/-c &lt;class_name&gt; [--method/-m &lt;test_method_name&gt;</code></td>
+ <td>Run the specified test class and/or method</td>
+ </tr>
+ <tr>
+ <td><code>--continue-session</code></td>
+ <td>Run all not executed tests from previous CTS session; the sessions testResult.xml will be updated with the new results</td>
+ </tr>
+ <tr>
+ <td><code>--shards &lt;number_of_shards&gt;</code></td>
+ <td>Shard a CTS run into given number of independent chunks, to run on multiple devices in parallel</td>
+ </tr>
+ <tr>
+ <td><code>--serial/-s &lt;deviceID&gt;</code></td>
+ <td>Run CTS on the specific device</td>
+ </tr>
+ <tr>
+ <td><code>-t &lt;class_name&gt;#&lt;test_method_name&gt;</code></td>
+ <td>Run a specific test method</td>
+ </tr>
+ <tr>
+ <td><code>--force-abi 32|64</code></td>
+ <td>On 64-bit devices, run the test against only the 32-bit or 64-bit ABI</td>
+ </tr>
+ <tr>
+ <td><code>--skip-preconditions</code></td>
+ <td>Skip preconditions to save run time for iterative development of a
+ new test. This bypasses verification and setup of the device's
+ configuration, such as pushing media files or checking for Wi-Fi
+ connection.</td>
+ </tr>
+ <tr>
+ <th>List</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>list packages</code></td>
+ <td>List all available test packages in the repository</td>
+ </tr>
+ <tr>
+ <td><code>list plans</code></td>
+ <td>List all available test plans in the repository</td>
+ </tr>
+ <tr>
+ <td><code>list invocations</code></td>
+ <td>List 'run' commands currently being executed on devices</td>
+ </tr>
+ <tr>
+ <td><code>list commands</code></td>
+ <td>List all 'run' commands currently in the queue waiting to be assigned to devices</td>
+ </tr>
+ <tr>
+ <td><code>list results</code></td>
+ <td>List CTS results currently stored in repository</td>
+ </tr>
+ <tr>
+ <td><code>list devices</code></td>
+ <td>List currently connected devices and their state
+ <p> </p>
+ <p>'Available' devices are functioning, idle devices, available for running tests</p>
+ <p> </p>
+ <p>'Unavailable' devices are devices visible via adb, but are not responding to adb commands and won't be allocated for tests</p>
+ <p> </p>
+ <p>'Allocated' devices are devices currently running tests</td>
+ </tr>
+ <tr>
+ <th>Add</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td><code>add derivedplan --plan &lt;plan_name&gt;<br>
+ --result/-r<br>
+ [pass | fail | timeout | notExecuted]<br>
+ [--session/-s &lt;session_id&gt;]</code></td>
+ <td>Create a plan derived from given result session; use this option to rerun reports and validate test issues</td>
+ </tr>
+ </tbody>
+</table>
+
</body>
</html>
diff --git a/en/compatibility/cts/setup.html b/en/compatibility/cts/setup.html
index 7961778a..f7600b4d 100644
--- a/en/compatibility/cts/setup.html
+++ b/en/compatibility/cts/setup.html
@@ -26,11 +26,11 @@
<h2 id=physical_environment>Physical environment</h2>
<h3 id=ble_beacons>Bluetooth LE beacons</h3>
-<p>If the DUT supports the Bluetooth LE feature, then at least three
-Bluetooth LE beacons should be placed within five meters of the DUT for Bluetooth
-LE scan testing. Those beacons can be any kind, do not need to be
-configured or emit anything specific, and can include iBeacon,
-Eddystone, or even devices simulating BLE beacons.</p>
+<p>If the device-under-test (DUT) supports the Bluetooth LE feature, then at
+least three Bluetooth LE beacons should be placed within five meters of the DUT
+for Bluetooth LE scan testing. Those beacons can be any kind, do not need to be
+configured or emit anything specific, and can include iBeacon, Eddystone, or
+even devices simulating BLE beacons.</p>
<h3 id=camera>Cameras</h3>
<p>When running camera CTS, you are recommended to use normal lighting
@@ -39,7 +39,7 @@ not too close to the lens (the distance depends on the device's minimum focus
distance).</p>
<p>If the DUT supports external cameras, such as USB
-webcams, then an external camera must be plugged in when running CTS.
+webcams, an external camera must be plugged in when running CTS.
Otherwise, the CTS tests will fail.</p>
<h3 id="gnss">GPS/GNSS</h3>
@@ -73,15 +73,16 @@ href="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">list of IPv6
tunnel brokers</a>.</p>
<h3 id="rtt">Wi-Fi RTT (Round Trip Time)</h3>
-<p>Android 9 adds an API for a <a ref="/devices/tech/connect/wifi-rtt">Wi-Fi RTT</a> capability, which
-allows devices to measure their distance to access points with an accuracy of 1 to 2 meters,
-thus increasing indoor location accuracy significantly. Here are two recommended devices
-supporting Wi-Fi RTT: <a href="https://store.google.com/product/google_wifi">Google Wifi</a>
-and <a href="https://fit-iot.com/web/products/fitlet2/">Compulab's Filet2 Access Point</a> (set to 40MHz bandwidth at 5GHz).</p>
+<p>Android 9 adds an API for a <a ref="/devices/tech/connect/wifi-rtt">Wi-Fi RTT</a> capability,
+which allows devices to measure their distance to access points with an accuracy of 1 to 2 meters,
+thus increasing indoor location accuracy significantly. Here are two recommended devices
+supporting Wi-Fi RTT: <a href="https://store.google.com/product/google_wifi">Google Wifi</a>
+and <a href="https://fit-iot.com/web/products/fitlet2/">Compulab's Filet2 Access Point</a>
+(set to 40MHz bandwidth at 5GHz).</p>
-<p>The access points should be powered up, but not required to be connected to any network.
-Access points do not need to be next to the testing device; however, they are recommended to be within a distance of 40 ft from the DUT.
-One access point is typically sufficient.</p>
+<p>The access points should be powered up, but not required to be connected to any network.
+Access points do not need to be next to the testing device; however, they are recommended to be
+within a distance of 40 ft from the DUT. One access point is typically sufficient.</p>
<h2 id=desktop_setup>Desktop machine setup</h2>
@@ -219,15 +220,25 @@ source</a>) which do not contain any code except for the manifest: </p>
preload the apps into the appropriate directories on the system image without
re-signing them.</p>
- <h3 id=sample-applet>Sample Applet</h3>
- <p>Android 9 introduced Open Mobile API Test cases, which are used to check if the
-underlying implementation of Secure Elements are implemented as per standard. These test
-cases would require the installation of a special applet which can be used by the
-CTS application to communicate with. One can use the <a href="https://android-review.googlesource.com/c/platform/cts/+/700517">sample applet</a> as provided.</p>
- <p>This is applicable to devices, which have eSE(embedded Secure Element), SIM or SDs. See <a href="/compatibility/cts/secure-element">CTS Test for Secure Element</a> for more detailed information on Open Mobile
-API Test cases and Access Control Test cases.</p>
-
-<h3 id=storage_requirements>Storage requirements</h3>
+ <h3 id="sample-applet">Sample Applet</h3>
+ <p>
+ Android 9 introduced Open Mobile APIs. For devices that plan to report
+ more than one secure element, CTS adds test cases to validate the
+ behavior of the Open Mobile APIs. These test cases require the one-time
+ installation of a sample applet into the embedded Secure Element (eSE)
+ of the Device Under Test (DUT) or into the SIM card used by the DUT. The
+ <a
+ href="https://android.googlesource.com/platform/cts/+/master/tests/tests/secure_element/sample_applet/Google-eSE-test.cap" class="external">eSE
+ sample applet</a> and the <a
+ href="https://android.googlesource.com/platform/cts/+/master/tests/tests/secure_element/sample_applet/uicc/google-cardlet.cap" class="external">SIM
+ sample applet</a> can be found in the AOSP repository.
+ </p>
+
+ <p>
+ See <a href="/compatibility/cts/secure-element">CTS Test for Secure Element</a> for more
+ detailed information on Open Mobile API Test cases and Access Control Test cases.</p>
+
+<h3 id="storage_requirements">Storage requirements</h3>
<p>The CTS media stress tests require video clips to be on external storage
(<code>/sdcard</code>). Most of the clips are from <a
href="https://peach.blender.org/">Big Buck Bunny</a> which is copyrighted by
diff --git a/en/compatibility/tests/development/blueprints.md b/en/compatibility/tests/development/blueprints.md
index 96054162..9b8a4cfb 100644
--- a/en/compatibility/tests/development/blueprints.md
+++ b/en/compatibility/tests/development/blueprints.md
@@ -19,7 +19,7 @@ Book: /_book.yaml
limitations under the License.
-->
-# Simple Test Configuration
+# Simple Build Configuration
Each new test module must have a configuration file to direct the build system
with module metadata, compile-time dependencies and packaging instructions.
@@ -31,8 +31,9 @@ branch.
Soong uses Blueprint or `.bp` files, which are JSON-like simple declarative
descriptions of modules to build. This format replaces the
-Make-based system used in previous releases. To accommodate custom testing or
-use the Android [Compatibility Test Suite](compatibility/cts) (CTS), follow the
+[Make-based system](https://developer.android.com/ndk/guides/android_mk){:
+.external} used in previous releases. To accommodate custom testing or use the
+Android [Compatibility Test Suite](compatibility/cts) (CTS), follow the
[Complex Test Configuration](/compatibility/tests/development/test-config)
instead.
diff --git a/en/compatibility/tests/development/index.md b/en/compatibility/tests/development/index.md
index 6fc66d6c..b08005b7 100644
--- a/en/compatibility/tests/development/index.md
+++ b/en/compatibility/tests/development/index.md
@@ -25,10 +25,10 @@ To integrate tests into a platform continuous testing service, they should meet
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).
+ for [Simple Test Configuration](/compatibility/tests/development/blueprints).
+1. Employ [Test Mapping](/compatibility/tests/development/test-mapping) to
+ easily create pre- and post-submit test rules directly in the Android source tree.
+1. Run tests locally using [Atest](/compatibility/tests/development/atest).
## Test types
diff --git a/en/compatibility/tests/development/test-mapping.md b/en/compatibility/tests/development/test-mapping.md
index 5f843199..1c113219 100644
--- a/en/compatibility/tests/development/test-mapping.md
+++ b/en/compatibility/tests/development/test-mapping.md
@@ -88,7 +88,12 @@ Here is a sample TEST_MAPPING file:
{
"include-annotation": "android.platform.test.annotations.RequiresDevice"
}
- ]
+ ],
+ "file_patterns": ["(/|^)Window[^/]*\\.java", "(/|^)Activity[^/]*\\.java"]
+ },
+ {
+ "name" : "net_test_avrcp",
+ "host" : true
}
],
"postsubmit": [
@@ -120,11 +125,24 @@ 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
+The **host** setting of a test indicates whether the test is a deviceless test
+running on host or not. The default value is **false**, meaning the test
+requires a device to run. The supported test types are
+[HostGTest](/compatibility/tests/development/native) for native tests and
+[HostTest](/compatibility/tests/development/jar) for JUnit tests.
+
+The **file_patterns** attribute allows you to set a list of regex strings for
+matching the relative path of any source code file (relative to the directory
+containing the TEST_MAPPING file). In above example, test `CtsWindowManagerDeviceTestCases`
+will run in presubmit only when any java file starts with Window or Activity,
+which exists in the same directory of the TEST_MAPPING file or any of its sub
+directories, is changed. Note that `\` needs to escaped as it's in a JSON file.
+
+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 **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.
@@ -240,6 +258,17 @@ and its parent directories:
<code class="devsite-terminal">atest [--test-mapping] [src_path]:postsubmit</code>
</pre>
+### Running only tests that require no device
+
+You can use option **--host** for Atest to only run tests configured against the
+host that require no device. Without this option, Atest will run both tests, the
+ones requiring device and the ones running on host and require no device. The
+tests will be run in two seperate suites.
+
+<pre>
+<code class="devsite-terminal">atest [--test-mapping] --host</code>
+</pre>
+
### Identifying test groups
You can specify test groups in the Atest command. Note that presubmit tests are
diff --git a/en/compatibility/vts/codelab-video.html b/en/compatibility/vts/codelab-video.html
index 0144a45e..059d7667 100644
--- a/en/compatibility/vts/codelab-video.html
+++ b/en/compatibility/vts/codelab-video.html
@@ -24,8 +24,8 @@
<p>The Vendor Test Suite (VTS) codelabs and video tutorials provide details
- on running and developing VTS and CTS-on-GSI on Android {{
- androidPVersionNumber }} and Android 8.1.</p>
+ on running and developing VTS and CTS-on-GSI on Android {{ androidPVersionNumber }} and Android
+ 8.1.</p>
<h2> Videos and Codelabs for Android 9</h2>
@@ -46,7 +46,9 @@
<td><strong>Overview</strong>
</td>
- <td>Android Vendor Test Suite (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=m6ALQGf3Yt4&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=2&t=0s">
+ Android Vendor Test Suite</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#0">Introduction</a>
@@ -60,7 +62,9 @@
<td><strong>How to Run VTS and CTS-on-GSI</strong>
</td>
- <td>How to Run VTS and CTS-on-GSI (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=fbYx_g6bbCA&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=8">
+ How to Run VTS and CTS-on-GSI</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts-8/#1">Build
@@ -73,7 +77,9 @@
<td><strong>How to Flash GSI</strong>
</td>
- <td>How to Flash General System Image (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=rRgFCEZyA7Q&index=7&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H">
+ How to Flash General System Image</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#3">Prepare
@@ -88,7 +94,9 @@
<td><strong>Test Framework</strong>
</td>
- <td>Test Framework Changes (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=SUG82_-V88o&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=9">
+ Test Framework Changes</a></td>
<td><a href=
"https://source.android.com/compatibility/vts/shell-commands">Test
@@ -101,7 +109,9 @@
<td><strong>Test Time Optimization</strong>
</td>
- <td>Test Time Optimization (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=i5TKp7Wygn0&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=10">
+ Test Time Optimization</a></td>
<td>--</td>
</tr>
@@ -111,7 +121,9 @@
<td><strong>Multi-Device Testing</strong>
</td>
- <td>Multi-Device Tests (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=NIx5IDaNovg&index=6&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H">
+ Multi-Device Tests</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#12">Write a
@@ -160,7 +172,9 @@
<td><strong>Conditional Tests</strong>
</td>
- <td>Conditional Tests (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=CyxNqWmcCD4&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=2">
+ Conditional Tests</a></td>
<td>--</td>
</tr>
@@ -170,7 +184,9 @@
<td><strong>Service Name Aware Testing</strong>
</td>
- <td>Service name aware HAL (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=kbX98ur-hlE&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=5">
+ Service Name Aware HAL Testing</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#5">Choose a
@@ -183,7 +199,9 @@
<td><strong>HAL Extension Tests</strong>
</td>
- <td>HAL Extension Test (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=B55Rkcqpncc&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=3">
+ HAL Extension Test</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#6">Write a
@@ -196,7 +214,9 @@
<td><strong>Framework Backward Compatibility</strong>
</td>
- <td>Android Framework Backward Compatibility (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=JXqVlkJYbTE&index=4&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H">
+ Android Framework Backward Compatibility</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#7">Write a
@@ -241,7 +261,7 @@
<td><a href=
"https://www.youtube.com/watch?v=F41dHKYPoic&amp;list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva&amp;index=6">
- Performance Testing</a>
+ VTS Support for Performance Testing</a>
</td>
<td>
@@ -311,7 +331,9 @@
<td><strong>End-to-End Automation</strong>
</td>
- <td>Automatic Measurement Infrastructure (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=3Ay8SpoAcPw&index=11&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H">
+ Automatic Measurement Infrastructure</a></td>
<td>--</td>
</tr>
@@ -339,7 +361,9 @@
<td><strong>Partner Engineering</strong>
</td>
- <td>Treble Readiness (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=vB4WOe3CmO4&index=12&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H">
+ Treble Readiness</a></td>
<td>--</td>
</tr>
@@ -349,7 +373,9 @@
<td><strong>Conclusion</strong>
</td>
- <td>Call for Contributions (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=YzM2lGGJs70&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=13">
+ Call for Contributions</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#14">Report
@@ -411,7 +437,8 @@
<td><strong>How to Flash GSI</strong>
</td>
- <td>How to Flash General System Image (Coming Soon)</td>
+ <td><a href=
+ "https://www.youtube.com/watch?v=rRgFCEZyA7Q&list=PLWz5rJ2EKKc_b3YitO08nBPJamBBmCL_H&index=7">How to Flash General System Image</a></td>
<td><a href=
"https://codelabs.developers.google.com/codelabs/android-vts/#3">Prepare
diff --git a/en/compatibility/vts/index.html b/en/compatibility/vts/index.html
index 982dbed9..70235877 100644
--- a/en/compatibility/vts/index.html
+++ b/en/compatibility/vts/index.html
@@ -32,8 +32,8 @@
<ul>
<li><a href="/compatibility/vts/codelab-video">Codelab and Video Tutorials</a>.
- Describes the videos and codelabs on running and developing VTS and CTS-on-GSI on Android {{
- androidPVersionNumber }} and Android 8.1.</li>
+ Describes the videos and codelabs on running and developing VTS and CTS-on-GSI on Android
+ {{ androidPVersionNumber }} and Android 8.1.</li>
<li><a href="/compatibility/vts/systems">Systems Testing with VTS</a>.
Describes how to use VTS to test an Android native system implementation, set
up a testing environment, then test a patch using a VTS plan.</li>
diff --git a/en/devices/_toc-frameworks.yaml b/en/devices/_toc-frameworks.yaml
deleted file mode 100644
index 5f91e99d..00000000
--- a/en/devices/_toc-frameworks.yaml
+++ /dev/null
@@ -1,429 +0,0 @@
-toc:
-- title: Overview
- path: /devices/
-- title: Architecture
- section:
- - title: Overview
- path: /devices/architecture/
- - title: Hardware Abstraction Layer (HAL)
- path: /devices/architecture/hal
- - title: HAL Types
- path: /devices/architecture/hal-types
- - title: Treble
- path: /devices/architecture/treble
- - title: Kernel
- section:
- - title: Overview
- path: /devices/architecture/kernel/
- - title: Stable Releases & Updates
- path: /devices/architecture/kernel/releases
- - title: Android Common Kernels
- path: /devices/architecture/kernel/android-common
- - title: Modular Kernel Requirements
- path: /devices/architecture/kernel/modular-kernels
- - title: Interface Requirements
- path: /devices/architecture/kernel/reqs-interfaces
- - title: Configuration
- path: /devices/architecture/kernel/config
- - title: Kernel Hardening
- path: /devices/architecture/kernel/hardening
- - title: SquashFS
- path: /devices/architecture/kernel/squashfs
- - title: LLDB Debugging
- path: /devices/architecture/kernel/lldb-debug
- - title: Network Tests
- path: /devices/architecture/kernel/network_tests
- - title: HIDL (General)
- section:
- - title: Overview
- path: /devices/architecture/hidl/
- - title: Interfaces & Packages
- path: /devices/architecture/hidl/interfaces
- - title: Interface Hashing
- path: /devices/architecture/hidl/hashing
- - title: Services & Data Transfer
- path: /devices/architecture/hidl/services
- - title: Fast Message Queue
- path: /devices/architecture/hidl/fmq
- - title: Using Binder IPC
- path: /devices/architecture/hidl/binder-ipc
- - title: Network Stack Configuration Tools
- path: /devices/architecture/hidl/network-stack
- - title: Threading Models
- path: /devices/architecture/hidl/threading
- - title: Converting Modules
- path: /devices/architecture/hidl/converting
- - title: Data Types
- path: /devices/architecture/hidl/types
- - title: Versioning
- path: /devices/architecture/hidl/versioning
- - title: Code Style Guide
- path: /devices/architecture/hidl/code-style
- - title: HIDL (C++)
- section:
- - title: Overview
- path: /devices/architecture/hidl-cpp/
- - title: Packages
- path: /devices/architecture/hidl-cpp/packages
- - title: Interfaces
- path: /devices/architecture/hidl-cpp/interfaces
- - title: Data Types
- path: /devices/architecture/hidl-cpp/types
- - title: Functions
- path: /devices/architecture/hidl-cpp/functions
- - title: HIDL (Java)
- section:
- - title: Overview
- path: /devices/architecture/hidl-java/
- - title: Data Types
- path: /devices/architecture/hidl-java/types
- - title: Interface Errors & Methods
- path: /devices/architecture/hidl-java/interfaces
- - title: Exporting Constants
- path: /devices/architecture/hidl-java/constants
- - title: ConfigStore HAL
- section:
- - title: Overview
- path: /devices/architecture/configstore/
- - title: Creating the HAL Interface
- path: /devices/architecture/configstore/interface
- - title: Implementing the Service
- path: /devices/architecture/configstore/service
- - title: Client-Side Usage
- path: /devices/architecture/configstore/client
- - title: Adding Classes & Items
- path: /devices/architecture/configstore/add-class-item
- - title: Device Tree Overlays
- section:
- - title: Overview
- path: /devices/architecture/dto/
- - title: Implementing DTO
- path: /devices/architecture/dto/implement
- - title: DTO Syntax
- path: /devices/architecture/dto/syntax
- - title: Compiling & Verifying
- path: /devices/architecture/dto/compile
- - title: Using Multiple DTs
- path: /devices/architecture/dto/multiple
- - title: DTB/DTBO Partition Format
- path: /devices/architecture/dto/partitions
- - title: Optimizing DTO
- path: /devices/architecture/dto/optimize
- - title: Vendor NDK
- section:
- - title: Overview
- path: /devices/architecture/vndk/
- - title: Enabling the VNDK
- path: /devices/architecture/vndk/enabling
- - title: VNDK Build System Support
- path: /devices/architecture/vndk/build-system
- - title: VNDK Extensions
- path: /devices/architecture/vndk/extensions
- - title: VNDK Definition Tool
- path: /devices/architecture/vndk/deftool
- - title: Linker Namespace
- path: /devices/architecture/vndk/linker-namespace
- - title: Directories, Rules, and sepolicy
- path: /devices/architecture/vndk/dir-rules-sepolicy
- - title: Renderscript
- path: /devices/architecture/vndk/renderscript
- - title: Vendor Interface Object
- section:
- - title: Overview
- path: /devices/architecture/vintf/
- - title: VINTF Object Data
- path: /devices/architecture/vintf/objects
- - title: Compatibility Matrices
- path: /devices/architecture/vintf/comp-matrices
- - title: Matching Rules
- path: /devices/architecture/vintf/match-rules
- - title: Resources
- path: /devices/architecture/vintf/resources
-- title: Audio
- section:
- - title: Overview
- path: /devices/audio/
- - title: Terminology
- path: /devices/audio/terminology
- - title: Implementation
- section:
- - title: Overview
- path: /devices/audio/implement
- - title: Policy Configuration
- path: /devices/audio/implement-policy
- - title: Shared Library
- path: /devices/audio/implement-shared-library
- - title: Pre-processing Effects
- path: /devices/audio/implement-pre-processing
- - title: Data Formats
- path: /devices/audio/data_formats
- - title: Attributes
- path: /devices/audio/attributes
- - title: AAudio and MMAP
- path: /devices/audio/aaudio
- - title: Warmup
- path: /devices/audio/warmup
- - title: Latency
- section:
- - title: Overview
- path: /devices/audio/latency
- - title: Contributors
- path: /devices/audio/latency_contrib
- - title: Design
- path: /devices/audio/latency_design
- - title: Measure
- path: /devices/audio/latency_measure
- - title: Light Testing Circuit
- path: /devices/audio/testing_circuit
- - title: Audio Loopback Dongle
- path: /devices/audio/loopback
- - title: Measurements
- path: /devices/audio/latency_measurements
- - title: Applications
- path: /devices/audio/latency_app
- - title: Priority Inversion
- path: /devices/audio/avoiding_pi
- - title: Sample Rate Conversion
- path: /devices/audio/src
- - title: Debugging
- path: /devices/audio/debugging
- - title: MIDI
- section:
- - title: Overview
- path: /devices/audio/midi
- - title: MIDI Architecture
- path: /devices/audio/midi_arch
- - title: MIDI Test Procedure
- path: /devices/audio/midi_test
- - title: USB Digital Audio
- path: /devices/audio/usb
- - title: TV Audio
- path: /devices/audio/tv
-- title: Automotive
- section:
- - title: Overview
- path: /devices/automotive/
- - title: Vehicle Properties
- path: /devices/automotive/properties
- - title: Camera HAL
- path: /devices/automotive/camera-hal
- - title: IVI Connectivity
- path: /devices/automotive/ivi_connectivity
-- title: Bluetooth
- section:
- - title: Overview
- path: /devices/bluetooth
- - title: Services
- path: /devices/bluetooth/services
- - title: Bluetooth Low Energy
- path: /devices/bluetooth/ble
- - title: BLE Advertising
- path: /devices/bluetooth/ble_advertising
- - title: Verifying and Debugging
- path: /devices/bluetooth/verifying_debugging
- - title: HCI Requirements
- path: /devices/bluetooth/hci_requirements
-- title: Bootloader
- section:
- - title: Overview
- path: /devices/bootloader
- - title: Partitions and Images
- path: /devices/bootloader/partitions-images
- - title: Flashing and Updating
- path: /devices/bootloader/flashing-updating
- - title: Unlocking and Trusty
- path: /devices/bootloader/unlock-trusty
-- title: Camera
- section:
- - title: Overview
- path: /devices/camera/
- - title: Camera3
- path: /devices/camera/camera3
- - title: HAL Subsystem
- path: /devices/camera/camera3_requests_hal
- - title: Metadata and Controls
- path: /devices/camera/camera3_metadata
- - title: 3A Modes and State
- path: /devices/camera/camera3_3Amodes
- - title: Output and Cropping
- path: /devices/camera/camera3_crop_reprocess
- - title: Errors and Streams
- path: /devices/camera/camera3_error_stream
- - title: Request Creation
- path: /devices/camera/camera3_requests_methods
- - title: Version Support
- path: /devices/camera/versioning
-- title: DRM
- path: /devices/drm
-- title: Graphics
- section:
- - title: Overview
- path: /devices/graphics/
- - title: Architecture
- section:
- - title: Overview
- path: /devices/graphics/architecture
- - title: BufferQueue
- path: /devices/graphics/arch-bq-gralloc
- - title: SurfaceFlinger and HWC
- path: /devices/graphics/arch-sf-hwc
- - title: Surface and SurfaceHolder
- path: /devices/graphics/arch-sh
- - title: OpenGL ES
- path: /devices/graphics/arch-egl-opengl
- - title: OpenGLRenderer Configuration
- path: /devices/graphics/renderer
- - title: Vulkan
- path: /devices/graphics/arch-vulkan
- - title: SurfaceView
- path: /devices/graphics/arch-sv-glsv
- - title: SurfaceTexture
- path: /devices/graphics/arch-st
- - title: TextureView
- path: /devices/graphics/arch-tv
- - title: Game Loops
- path: /devices/graphics/arch-gameloops
- - title: Implementation
- section:
- - title: Overview
- path: /devices/graphics/implement
- - title: Hardware Composer HAL
- path: /devices/graphics/implement-hwc
- - title: VSYNC
- path: /devices/graphics/implement-vsync
- - title: Vulkan
- path: /devices/graphics/implement-vulkan
- - title: Virtual Displays
- path: /devices/graphics/implement-vdisplays
- - title: OpenGL ES Testing
- section:
- - title: Overview
- path: /devices/graphics/testing
- - title: Building Test Programs
- path: /devices/graphics/build-tests
- - title: Porting the Test Framework
- path: /devices/graphics/port-tests
- - title: Running the Tests
- path: /devices/graphics/run-tests
- - title: Automating the Tests
- path: /devices/graphics/automate-tests
- - title: Using Special Test Groups
- path: /devices/graphics/test-groups
- - title: Integrating with Android CTS
- path: /devices/graphics/cts-integration
-- title: Input
- section:
- - title: Overview
- path: /devices/input/
- - title: Key Layout Files
- path: /devices/input/key-layout-files
- - title: Key Character Map Files
- path: /devices/input/key-character-map-files
- - title: Input Device Configuration Files
- path: /devices/input/input-device-configuration-files
- - title: Migration Guide
- path: /devices/input/migration-guide
- - title: Keyboard Devices
- path: /devices/input/keyboard-devices
- - title: Touch Devices
- path: /devices/input/touch-devices
- - title: Getevent
- path: /devices/input/getevent
- - title: Validate Keymaps
- path: /devices/input/validate-keymaps
-- title: Media
- section:
- - title: Overview
- path: /devices/media/
- - title: Framework Hardening
- path: /devices/media/framework-hardening
- - title: SoC Dependencies
- path: /devices/media/soc
- - title: OEM Dependencies
- path: /devices/media/oem
-- title: Peripherals
- path: /devices/accessories
- section:
- - title: Audio Accessories
- section:
- - title: Overview
- path: /devices/accessories/audio
- - title: 3.5 mm Headset
- section:
- - title: Headset Spec
- path: /devices/accessories/headset/plug-headset-spec
- - title: Device Spec
- path: /devices/accessories/headset/jack-headset-spec
- - title: USB Headset
- section:
- - title: Headset Spec
- path: /devices/accessories/headset/usb-headset-spec
- - title: Adapter Spec
- path: /devices/accessories/headset/usb-adapter
- - title: Device Spec
- path: /devices/accessories/headset/usb-device
- - title: Expected Behavior
- path: /devices/accessories/headset/expected-behavior
- - title: Testing
- path: /devices/accessories/headset/testing
- - title: Custom Accessories
- section:
- - title: Overview
- path: /devices/accessories/custom
- - title: AOA
- section:
- - title: Overview
- path: /devices/accessories/protocol
- - title: AOA 2.0
- path: /devices/accessories/aoa2
- - title: AOA 1.0
- path: /devices/accessories/aoa
- - title: Stylus
- path: /devices/accessories/stylus
-- title: Sensors
- section:
- - title: Overview
- path: /devices/sensors/
- - title: Sensor Stack
- path: /devices/sensors/sensor-stack
- - title: Reporting Modes
- path: /devices/sensors/report-modes
- - title: Suspend Mode
- path: /devices/sensors/suspend-mode
- - title: Power Consumption
- path: /devices/sensors/power-use
- - title: Interaction
- path: /devices/sensors/interaction
- - title: HAL Interface
- path: /devices/sensors/hal-interface
- - title: Batching
- path: /devices/sensors/batching
- - title: Sensor Types
- path: /devices/sensors/sensor-types
- - title: Version Deprecation
- path: /devices/sensors/versioning
-- title: Storage
- section:
- - title: Overview
- path: /devices/storage/
- - title: Traditional Storage
- path: /devices/storage/traditional
- - title: Adoptable Storage
- path: /devices/storage/adoptable
- - title: Device Configuration
- path: /devices/storage/config
- - title: Configuration Examples
- path: /devices/storage/config-example
- - title: Faster Statistics
- path: /devices/storage/faster-stats
-- title: TV
- section:
- - title: Overview
- path: /devices/tv
- - title: HDMI-CEC Control Service
- path: /devices/tv/hdmi-cec
- - title: Reference TV App
- path: /devices/tv/reference-tv-app
- - title: Customize the TV App
- path: /devices/tv/customize-tv-app
-
diff --git a/en/devices/_toc-interaction.yaml b/en/devices/_toc-interaction.yaml
index 252a7a3b..20c440c7 100644
--- a/en/devices/_toc-interaction.yaml
+++ b/en/devices/_toc-interaction.yaml
@@ -41,6 +41,8 @@ toc:
path: /devices/automotive/ivi_connectivity
- title: Vehicle Properties
path: /devices/automotive/properties
+ - title: Power Management
+ path: /devices/automotive/power
- title: Flash Wear Management
path: /devices/tech/perf/flash-wear
- title: Neural Networks
diff --git a/en/devices/_toc-permissions.yaml b/en/devices/_toc-permissions.yaml
index 5857602e..51bb9585 100644
--- a/en/devices/_toc-permissions.yaml
+++ b/en/devices/_toc-permissions.yaml
@@ -1,17 +1,15 @@
toc:
- - title: Privileged Permission Whitelist
- path: /devices/tech/config/perms-whitelist
- - title: Runtime Permissions
- path: /devices/tech/config/runtime_perms
- - title: Time Zone Rules
- path: /devices/tech/config/timezone-rules
- - title: Ambient Capabilities
- path: /devices/tech/config/ambient
- - title: Discretionary Access Control
- path: /devices/tech/config/filesystem
- - title: Library Namespaces
- path: /devices/tech/config/namespaces_libraries
- - title: USB HAL
- path: /devices/tech/config/usb-hal
- - title: Visual Voicemail
- path: /devices/tech/config/voicemail
+- title: Privileged Permission Whitelist
+ path: /devices/tech/config/perms-whitelist
+- title: Runtime Permissions
+ path: /devices/tech/config/runtime_perms
+- title: Ambient Capabilities
+ path: /devices/tech/config/ambient
+- title: Discretionary Access Control
+ path: /devices/tech/config/filesystem
+- title: Library Namespaces
+ path: /devices/tech/config/namespaces_libraries
+- title: USB HAL
+ path: /devices/tech/config/usb-hal
+- title: Visual Voicemail
+ path: /devices/tech/config/voicemail
diff --git a/en/devices/_toc-systems.yaml b/en/devices/_toc-systems.yaml
deleted file mode 100644
index 5f91e99d..00000000
--- a/en/devices/_toc-systems.yaml
+++ /dev/null
@@ -1,429 +0,0 @@
-toc:
-- title: Overview
- path: /devices/
-- title: Architecture
- section:
- - title: Overview
- path: /devices/architecture/
- - title: Hardware Abstraction Layer (HAL)
- path: /devices/architecture/hal
- - title: HAL Types
- path: /devices/architecture/hal-types
- - title: Treble
- path: /devices/architecture/treble
- - title: Kernel
- section:
- - title: Overview
- path: /devices/architecture/kernel/
- - title: Stable Releases & Updates
- path: /devices/architecture/kernel/releases
- - title: Android Common Kernels
- path: /devices/architecture/kernel/android-common
- - title: Modular Kernel Requirements
- path: /devices/architecture/kernel/modular-kernels
- - title: Interface Requirements
- path: /devices/architecture/kernel/reqs-interfaces
- - title: Configuration
- path: /devices/architecture/kernel/config
- - title: Kernel Hardening
- path: /devices/architecture/kernel/hardening
- - title: SquashFS
- path: /devices/architecture/kernel/squashfs
- - title: LLDB Debugging
- path: /devices/architecture/kernel/lldb-debug
- - title: Network Tests
- path: /devices/architecture/kernel/network_tests
- - title: HIDL (General)
- section:
- - title: Overview
- path: /devices/architecture/hidl/
- - title: Interfaces & Packages
- path: /devices/architecture/hidl/interfaces
- - title: Interface Hashing
- path: /devices/architecture/hidl/hashing
- - title: Services & Data Transfer
- path: /devices/architecture/hidl/services
- - title: Fast Message Queue
- path: /devices/architecture/hidl/fmq
- - title: Using Binder IPC
- path: /devices/architecture/hidl/binder-ipc
- - title: Network Stack Configuration Tools
- path: /devices/architecture/hidl/network-stack
- - title: Threading Models
- path: /devices/architecture/hidl/threading
- - title: Converting Modules
- path: /devices/architecture/hidl/converting
- - title: Data Types
- path: /devices/architecture/hidl/types
- - title: Versioning
- path: /devices/architecture/hidl/versioning
- - title: Code Style Guide
- path: /devices/architecture/hidl/code-style
- - title: HIDL (C++)
- section:
- - title: Overview
- path: /devices/architecture/hidl-cpp/
- - title: Packages
- path: /devices/architecture/hidl-cpp/packages
- - title: Interfaces
- path: /devices/architecture/hidl-cpp/interfaces
- - title: Data Types
- path: /devices/architecture/hidl-cpp/types
- - title: Functions
- path: /devices/architecture/hidl-cpp/functions
- - title: HIDL (Java)
- section:
- - title: Overview
- path: /devices/architecture/hidl-java/
- - title: Data Types
- path: /devices/architecture/hidl-java/types
- - title: Interface Errors & Methods
- path: /devices/architecture/hidl-java/interfaces
- - title: Exporting Constants
- path: /devices/architecture/hidl-java/constants
- - title: ConfigStore HAL
- section:
- - title: Overview
- path: /devices/architecture/configstore/
- - title: Creating the HAL Interface
- path: /devices/architecture/configstore/interface
- - title: Implementing the Service
- path: /devices/architecture/configstore/service
- - title: Client-Side Usage
- path: /devices/architecture/configstore/client
- - title: Adding Classes & Items
- path: /devices/architecture/configstore/add-class-item
- - title: Device Tree Overlays
- section:
- - title: Overview
- path: /devices/architecture/dto/
- - title: Implementing DTO
- path: /devices/architecture/dto/implement
- - title: DTO Syntax
- path: /devices/architecture/dto/syntax
- - title: Compiling & Verifying
- path: /devices/architecture/dto/compile
- - title: Using Multiple DTs
- path: /devices/architecture/dto/multiple
- - title: DTB/DTBO Partition Format
- path: /devices/architecture/dto/partitions
- - title: Optimizing DTO
- path: /devices/architecture/dto/optimize
- - title: Vendor NDK
- section:
- - title: Overview
- path: /devices/architecture/vndk/
- - title: Enabling the VNDK
- path: /devices/architecture/vndk/enabling
- - title: VNDK Build System Support
- path: /devices/architecture/vndk/build-system
- - title: VNDK Extensions
- path: /devices/architecture/vndk/extensions
- - title: VNDK Definition Tool
- path: /devices/architecture/vndk/deftool
- - title: Linker Namespace
- path: /devices/architecture/vndk/linker-namespace
- - title: Directories, Rules, and sepolicy
- path: /devices/architecture/vndk/dir-rules-sepolicy
- - title: Renderscript
- path: /devices/architecture/vndk/renderscript
- - title: Vendor Interface Object
- section:
- - title: Overview
- path: /devices/architecture/vintf/
- - title: VINTF Object Data
- path: /devices/architecture/vintf/objects
- - title: Compatibility Matrices
- path: /devices/architecture/vintf/comp-matrices
- - title: Matching Rules
- path: /devices/architecture/vintf/match-rules
- - title: Resources
- path: /devices/architecture/vintf/resources
-- title: Audio
- section:
- - title: Overview
- path: /devices/audio/
- - title: Terminology
- path: /devices/audio/terminology
- - title: Implementation
- section:
- - title: Overview
- path: /devices/audio/implement
- - title: Policy Configuration
- path: /devices/audio/implement-policy
- - title: Shared Library
- path: /devices/audio/implement-shared-library
- - title: Pre-processing Effects
- path: /devices/audio/implement-pre-processing
- - title: Data Formats
- path: /devices/audio/data_formats
- - title: Attributes
- path: /devices/audio/attributes
- - title: AAudio and MMAP
- path: /devices/audio/aaudio
- - title: Warmup
- path: /devices/audio/warmup
- - title: Latency
- section:
- - title: Overview
- path: /devices/audio/latency
- - title: Contributors
- path: /devices/audio/latency_contrib
- - title: Design
- path: /devices/audio/latency_design
- - title: Measure
- path: /devices/audio/latency_measure
- - title: Light Testing Circuit
- path: /devices/audio/testing_circuit
- - title: Audio Loopback Dongle
- path: /devices/audio/loopback
- - title: Measurements
- path: /devices/audio/latency_measurements
- - title: Applications
- path: /devices/audio/latency_app
- - title: Priority Inversion
- path: /devices/audio/avoiding_pi
- - title: Sample Rate Conversion
- path: /devices/audio/src
- - title: Debugging
- path: /devices/audio/debugging
- - title: MIDI
- section:
- - title: Overview
- path: /devices/audio/midi
- - title: MIDI Architecture
- path: /devices/audio/midi_arch
- - title: MIDI Test Procedure
- path: /devices/audio/midi_test
- - title: USB Digital Audio
- path: /devices/audio/usb
- - title: TV Audio
- path: /devices/audio/tv
-- title: Automotive
- section:
- - title: Overview
- path: /devices/automotive/
- - title: Vehicle Properties
- path: /devices/automotive/properties
- - title: Camera HAL
- path: /devices/automotive/camera-hal
- - title: IVI Connectivity
- path: /devices/automotive/ivi_connectivity
-- title: Bluetooth
- section:
- - title: Overview
- path: /devices/bluetooth
- - title: Services
- path: /devices/bluetooth/services
- - title: Bluetooth Low Energy
- path: /devices/bluetooth/ble
- - title: BLE Advertising
- path: /devices/bluetooth/ble_advertising
- - title: Verifying and Debugging
- path: /devices/bluetooth/verifying_debugging
- - title: HCI Requirements
- path: /devices/bluetooth/hci_requirements
-- title: Bootloader
- section:
- - title: Overview
- path: /devices/bootloader
- - title: Partitions and Images
- path: /devices/bootloader/partitions-images
- - title: Flashing and Updating
- path: /devices/bootloader/flashing-updating
- - title: Unlocking and Trusty
- path: /devices/bootloader/unlock-trusty
-- title: Camera
- section:
- - title: Overview
- path: /devices/camera/
- - title: Camera3
- path: /devices/camera/camera3
- - title: HAL Subsystem
- path: /devices/camera/camera3_requests_hal
- - title: Metadata and Controls
- path: /devices/camera/camera3_metadata
- - title: 3A Modes and State
- path: /devices/camera/camera3_3Amodes
- - title: Output and Cropping
- path: /devices/camera/camera3_crop_reprocess
- - title: Errors and Streams
- path: /devices/camera/camera3_error_stream
- - title: Request Creation
- path: /devices/camera/camera3_requests_methods
- - title: Version Support
- path: /devices/camera/versioning
-- title: DRM
- path: /devices/drm
-- title: Graphics
- section:
- - title: Overview
- path: /devices/graphics/
- - title: Architecture
- section:
- - title: Overview
- path: /devices/graphics/architecture
- - title: BufferQueue
- path: /devices/graphics/arch-bq-gralloc
- - title: SurfaceFlinger and HWC
- path: /devices/graphics/arch-sf-hwc
- - title: Surface and SurfaceHolder
- path: /devices/graphics/arch-sh
- - title: OpenGL ES
- path: /devices/graphics/arch-egl-opengl
- - title: OpenGLRenderer Configuration
- path: /devices/graphics/renderer
- - title: Vulkan
- path: /devices/graphics/arch-vulkan
- - title: SurfaceView
- path: /devices/graphics/arch-sv-glsv
- - title: SurfaceTexture
- path: /devices/graphics/arch-st
- - title: TextureView
- path: /devices/graphics/arch-tv
- - title: Game Loops
- path: /devices/graphics/arch-gameloops
- - title: Implementation
- section:
- - title: Overview
- path: /devices/graphics/implement
- - title: Hardware Composer HAL
- path: /devices/graphics/implement-hwc
- - title: VSYNC
- path: /devices/graphics/implement-vsync
- - title: Vulkan
- path: /devices/graphics/implement-vulkan
- - title: Virtual Displays
- path: /devices/graphics/implement-vdisplays
- - title: OpenGL ES Testing
- section:
- - title: Overview
- path: /devices/graphics/testing
- - title: Building Test Programs
- path: /devices/graphics/build-tests
- - title: Porting the Test Framework
- path: /devices/graphics/port-tests
- - title: Running the Tests
- path: /devices/graphics/run-tests
- - title: Automating the Tests
- path: /devices/graphics/automate-tests
- - title: Using Special Test Groups
- path: /devices/graphics/test-groups
- - title: Integrating with Android CTS
- path: /devices/graphics/cts-integration
-- title: Input
- section:
- - title: Overview
- path: /devices/input/
- - title: Key Layout Files
- path: /devices/input/key-layout-files
- - title: Key Character Map Files
- path: /devices/input/key-character-map-files
- - title: Input Device Configuration Files
- path: /devices/input/input-device-configuration-files
- - title: Migration Guide
- path: /devices/input/migration-guide
- - title: Keyboard Devices
- path: /devices/input/keyboard-devices
- - title: Touch Devices
- path: /devices/input/touch-devices
- - title: Getevent
- path: /devices/input/getevent
- - title: Validate Keymaps
- path: /devices/input/validate-keymaps
-- title: Media
- section:
- - title: Overview
- path: /devices/media/
- - title: Framework Hardening
- path: /devices/media/framework-hardening
- - title: SoC Dependencies
- path: /devices/media/soc
- - title: OEM Dependencies
- path: /devices/media/oem
-- title: Peripherals
- path: /devices/accessories
- section:
- - title: Audio Accessories
- section:
- - title: Overview
- path: /devices/accessories/audio
- - title: 3.5 mm Headset
- section:
- - title: Headset Spec
- path: /devices/accessories/headset/plug-headset-spec
- - title: Device Spec
- path: /devices/accessories/headset/jack-headset-spec
- - title: USB Headset
- section:
- - title: Headset Spec
- path: /devices/accessories/headset/usb-headset-spec
- - title: Adapter Spec
- path: /devices/accessories/headset/usb-adapter
- - title: Device Spec
- path: /devices/accessories/headset/usb-device
- - title: Expected Behavior
- path: /devices/accessories/headset/expected-behavior
- - title: Testing
- path: /devices/accessories/headset/testing
- - title: Custom Accessories
- section:
- - title: Overview
- path: /devices/accessories/custom
- - title: AOA
- section:
- - title: Overview
- path: /devices/accessories/protocol
- - title: AOA 2.0
- path: /devices/accessories/aoa2
- - title: AOA 1.0
- path: /devices/accessories/aoa
- - title: Stylus
- path: /devices/accessories/stylus
-- title: Sensors
- section:
- - title: Overview
- path: /devices/sensors/
- - title: Sensor Stack
- path: /devices/sensors/sensor-stack
- - title: Reporting Modes
- path: /devices/sensors/report-modes
- - title: Suspend Mode
- path: /devices/sensors/suspend-mode
- - title: Power Consumption
- path: /devices/sensors/power-use
- - title: Interaction
- path: /devices/sensors/interaction
- - title: HAL Interface
- path: /devices/sensors/hal-interface
- - title: Batching
- path: /devices/sensors/batching
- - title: Sensor Types
- path: /devices/sensors/sensor-types
- - title: Version Deprecation
- path: /devices/sensors/versioning
-- title: Storage
- section:
- - title: Overview
- path: /devices/storage/
- - title: Traditional Storage
- path: /devices/storage/traditional
- - title: Adoptable Storage
- path: /devices/storage/adoptable
- - title: Device Configuration
- path: /devices/storage/config
- - title: Configuration Examples
- path: /devices/storage/config-example
- - title: Faster Statistics
- path: /devices/storage/faster-stats
-- title: TV
- section:
- - title: Overview
- path: /devices/tv
- - title: HDMI-CEC Control Service
- path: /devices/tv/hdmi-cec
- - title: Reference TV App
- path: /devices/tv/reference-tv-app
- - title: Customize the TV App
- path: /devices/tv/customize-tv-app
-
diff --git a/en/devices/_toc-tech.yaml b/en/devices/_toc-tech.yaml
deleted file mode 100644
index 211a990e..00000000
--- a/en/devices/_toc-tech.yaml
+++ /dev/null
@@ -1,269 +0,0 @@
-toc:
-- title: Overview
- path: /devices/tech/
-- title: ART and Dalvik
- section:
- - title: Overview
- path: /devices/tech/dalvik
- - title: Improvements
- path: /devices/tech/dalvik/improvements
- - title: Bytecode Format
- path: /devices/tech/dalvik/dalvik-bytecode
- - title: Dex Format
- path: /devices/tech/dalvik/dex-format
- - title: Instruction Formats
- path: /devices/tech/dalvik/instruction-formats
- - title: Constraints
- path: /devices/tech/dalvik/constraints
- - title: Configuration
- path: /devices/tech/dalvik/configure
- - title: Garbage Collection
- path: /devices/tech/dalvik/gc-debug
- - title: JIT Compilation
- path: /devices/tech/dalvik/jit-compiler
-- title: Configuration
- section:
- - title: Overview
- path: /devices/tech/config/
- - title: Ambient Capabilities
- path: /devices/tech/config/ambient
- - title: Carrier Customization
- section:
- - title: Carrier Configuration
- path: /devices/tech/config/carrier
- - title: APN and CarrierConfig
- path: /devices/tech/config/update
- - title: UICC
- path: /devices/tech/config/uicc
- - title: File DAC Configuration
- path: /devices/tech/config/filesystem
- - title: Namespaces for Libraries
- path: /devices/tech/config/namespaces_libraries
- - title: Privileged Permission Whitelist
- path: /devices/tech/config/perms-whitelist
- - title: Runtime Permissions
- path: /devices/tech/config/runtime_perms
- - title: Time Zone Rules
- path: /devices/tech/config/timezone-rules
- - title: USB HAL
- path: /devices/tech/config/usb-hal
- - title: Visual Voicemail
- path: /devices/tech/config/voicemail
-- title: Connectivity
- section:
- - title: Overview
- path: /devices/tech/connect/
- - title: Block Phone Numbers
- path: /devices/tech/connect/block-numbers
- - title: Call Notifications
- path: /devices/tech/connect/call-notification
- - title: Data Saver Mode
- path: /devices/tech/connect/data-saver
- - title: Emergency Affordance
- path: /devices/tech/connect/emergency-affordance
- - title: Host Card Emulation of FeliCa
- path: /devices/tech/connect/felica
- - title: Out-of-Balance Users
- path: /devices/tech/connect/oob-users
- - title: Network Connectivity Tests
- path: /devices/tech/connect/connect_tests
- - title: Radio Interface Layer (RIL)
- path: /devices/tech/connect/ril
- - title: Wi-Fi Aware
- path: /devices/tech/connect/wifi-aware
-- title: Data Usage
- section:
- - title: Overview
- path: /devices/tech/datausage/
- - title: Network Interface Statistics Overview
- path: /devices/tech/datausage/iface-overview
- - title: Excluding Network Types from Data Usage
- path: /devices/tech/datausage/excluding-network-types
- - title: Tethering Data
- path: /devices/tech/datausage/tethering-data
- - title: Usage Cycle Reset Dates
- path: /devices/tech/datausage/usage-cycle-resets-dates
- - title: Kernel Overview
- path: /devices/tech/datausage/kernel-overview
- - title: Data Usage Tags Explained
- path: /devices/tech/datausage/tags-explained
- - title: Kernel Changes
- path: /devices/tech/datausage/kernel-changes
-- title: Debugging
- section:
- - title: Overview
- path: /devices/tech/debug/
- - title: Diagnosing Native Crashes
- path: /devices/tech/debug/native-crash
- - title: Evaluating Performance
- section:
- - title: Overview
- path: /devices/tech/debug/eval_perf
- - title: Understanding systrace
- path: /devices/tech/debug/systrace
- - title: Using ftrace
- path: /devices/tech/debug/ftrace
- - title: Identifying Capacity Jank
- path: /devices/tech/debug/jank_capacity
- - title: Identifying Jitter Jank
- path: /devices/tech/debug/jank_jitter
- - title: Fuzzing and Sanitizing
- section:
- - title: Overview
- path: /devices/tech/debug/fuzz-sanitize
- - title: AddressSanitizer
- path: /devices/tech/debug/asan
- - title: LLVM Sanitizers
- path: /devices/tech/debug/sanitizers
- - title: Build kernel with KASAN+KCOV
- path: /devices/tech/debug/kasan-kcov
- - title: Fuzzing with libFuzzer
- path: /devices/tech/debug/libfuzzer
- - title: Using GDB
- path: /devices/tech/debug/gdb
- - title: Native Memory Use
- path: /devices/tech/debug/native-memory
- - title: Rescue Party
- path: /devices/tech/debug/rescue-party
- - title: Storaged
- path: /devices/tech/debug/storaged
- - title: Strace
- path: /devices/tech/debug/strace
- - title: Valgrind
- path: /devices/tech/debug/valgrind
-- title: Device Administration
- section:
- - title: Overview
- path: /devices/tech/admin/
- - title: Implementation
- path: /devices/tech/admin/implement
- - title: Multiple Users
- path: /devices/tech/admin/multi-user
- - title: Managed Profiles
- path: /devices/tech/admin/managed-profiles
- - title: Provisioning
- path: /devices/tech/admin/provision
- - title: Multiuser Apps
- path: /devices/tech/admin/multiuser-apps
- - title: Enterprise Telephony
- path: /devices/tech/admin/enterprise-telephony
- - title: Testing Device Provisioning
- path: /devices/tech/admin/testing-provision
- - title: Testing Device Administration
- path: /devices/tech/admin/testing-setup
-- title: Display
- section:
- - title: Overview
- path: /devices/tech/display/
- - title: Adaptive Icons
- path: /devices/tech/display/adaptive-icons
- - title: App Shortcuts
- path: /devices/tech/display/app-shortcuts
- - title: Circular Icons
- path: /devices/tech/display/circular-icons
- - title: Color Management
- path: /devices/tech/display/color-mgmt
- - title: Do Not Disturb
- path: /devices/tech/display/dnd
- - title: HDR Video
- path: /devices/tech/display/hdr
- - title: Multi-Window
- path: /devices/tech/display/multi-window
- - title: Night Light
- path: /devices/tech/display/night-light
- - title: Picture-in-picture
- path: /devices/tech/display/pip
- - title: Retail Demo Mode
- path: /devices/tech/display/retail-mode
- - title: Split-Screen Interactions
- path: /devices/tech/display/split-screen
- - title: TEXTCLASSIFIER
- path: /devices/tech/display/textclassifier
- - title: Widgets & Shortcuts
- path: /devices/tech/display/widgets-shortcuts
-- title: OTA Updates
- section:
- - title: Overview
- path: /devices/tech/ota/
- - title: OTA Tools
- path: /devices/tech/ota/tools
- - title: Signing Builds for Release
- path: /devices/tech/ota/sign_builds
- - title: Reducing OTA Size
- path: /devices/tech/ota/reduce_size
- - title: A/B System Updates
- section:
- - title: Overview
- path: /devices/tech/ota/ab/
- - title: Implementing A/B Updates
- path: /devices/tech/ota/ab/ab_implement
- - title: Frequently Asked Questions
- path: /devices/tech/ota/ab/ab_faqs
- - title: Non-A/B System Updates
- section:
- - title: Overview
- path: /devices/tech/ota/nonab/
- - title: Block-Based OTA
- path: /devices/tech/ota/nonab/block
- - title: Inside OTA Packages
- path: /devices/tech/ota/nonab/inside_packages
- - title: Device-Specific Code
- path: /devices/tech/ota/nonab/device_code
-- title: Performance
- section:
- - title: Overview
- path: /devices/tech/perf/
- - title: Boot Times
- path: /devices/tech/perf/boot-times
- - title: Flash Wear Management
- path: /devices/tech/perf/flash-wear
- - title: Low RAM
- path: /devices/tech/perf/low-ram
- - title: Task Snapshots
- path: /devices/tech/perf/task-snapshots
-- title: Power
- section:
- - title: Overview
- path: /devices/tech/power/
- - title: Power Management
- path: /devices/tech/power/mgmt
- - title: Performance Management
- path: /devices/tech/power/performance
- - title: Component Power
- path: /devices/tech/power/component
- - title: Device Power
- path: /devices/tech/power/device
- - title: Power Values
- path: /devices/tech/power/values
-- title: Settings Menu
- section:
- - title: Overview
- path: /devices/tech/settings/
- - title: Patterns and Components
- path: /devices/tech/settings/patterns-components
- - title: Information Architecture
- path: /devices/tech/settings/info-architecture
- - title: Personalized Settings
- path: /devices/tech/settings/personalized
- - title: Universal Search
- path: /devices/tech/settings/universal-search
- - title: Design Guidelines
- path: /devices/tech/settings/settings-guidelines
-- title: Testing Infrastructure
- section:
- - title: Overview
- path: /devices/tech/test_infra/tradefed/
- - title: Start Here
- path: /devices/tech/test_infra/tradefed/fundamentals
- - title: Machine Setup
- path: /devices/tech/test_infra/tradefed/fundamentals/machine_setup
- - title: Working with Devices
- path: /devices/tech/test_infra/tradefed/fundamentals/devices
- - title: Test Lifecycle
- path: /devices/tech/test_infra/tradefed/fundamentals/lifecycle
- - title: Option Handling
- path: /devices/tech/test_infra/tradefed/fundamentals/options
- - title: An End-to-End Example
- path: /devices/tech/test_infra/tradefed/full_example
- - title: Package Index
- path: /reference/tradefed/
diff --git a/en/devices/_toc-update.yaml b/en/devices/_toc-update.yaml
index e3b86dde..5158be28 100644
--- a/en/devices/_toc-update.yaml
+++ b/en/devices/_toc-update.yaml
@@ -25,3 +25,5 @@ toc:
path: /devices/tech/ota/nonab/inside_packages
- title: Device-Specific Code
path: /devices/tech/ota/nonab/device_code
+- title: Time Zone Rules
+ path: /devices/tech/config/timezone-rules
diff --git a/en/devices/_translation.yaml b/en/devices/_translation.yaml
deleted file mode 100644
index 32d1e74b..00000000
--- a/en/devices/_translation.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-enable_continuous_translation: true
-title: Android Open Source Project Devices tab
-description: Translations for SAC devices tab
-language:
-- zh-CN
-cc:
-- sac-doc-leads+translation@google.com
-reviewer:
-- daroberts
-product: Android
diff --git a/en/devices/architecture/hidl/code-style.html b/en/devices/architecture/hidl/code-style.html
index 5f787d71..5f451851 100644
--- a/en/devices/architecture/hidl/code-style.html
+++ b/en/devices/architecture/hidl/code-style.html
@@ -52,12 +52,14 @@ interface <a href="#interface-names">IFoo</a> {
/**
* This is a <a href="#comments">multiline docstring</a>.
+ *
* <a href="#return">@return</a> result 0 if successful, nonzero otherwise.
*/
<a href="#function-declarations">foo() generates (FooStatus result);</a>
/**
* Restart controller by power cycle.
+ *
* <a href="#param">@param</a> bar callback interface that&#8230;
* @return result 0 if successful, nonzero otherwise.
*/
@@ -69,6 +71,7 @@ interface <a href="#interface-names">IFoo</a> {
/**
* The bar function.
+ *
* <a href="#param">@param</a> <a href="#functions">clientCallback</a> callback after function is called
* @param baz related baz object
* @param data input data blob
@@ -107,7 +110,7 @@ package android.hardware.foo@1.0;
<h2 id=naming>Naming conventions</h2>
<p>Function names, variable names, and filenames should be descriptive; avoid
over-abbreviation. Treat acronyms as words (e.g., use <code>INfc</code> instead
-of <code>INFC</code>.</p>
+of <code>INFC</code>).</p>
<h3 id=dir-structure>Directory structure and file naming</h3>
<p>The directory structure should appear as follows:</p>
@@ -455,6 +458,7 @@ the package directory).</p>
interface IFooController {
/**
* Opens the controller.
+ *
* @return status HAL_FOO_OK if successful.
*/
open() generates (FooStatus status);
@@ -478,6 +482,7 @@ should be followed by the name of the return value then the docstring.</li>
<pre class="prettyprint">
/**
* Explain what foo does.
+ *
* @param arg1 explain what arg1 is
* @param arg2 explain what arg2 is
* @return ret1 explain what ret1 is
diff --git a/en/devices/architecture/vndk/renderscript.html b/en/devices/architecture/vndk/renderscript.html
index a2b5a8bd..873b24a2 100644
--- a/en/devices/architecture/vndk/renderscript.html
+++ b/en/devices/architecture/vndk/renderscript.html
@@ -533,14 +533,8 @@ namespace.sphal.link.rs.shared_libs = libRS_internal.so
</p>
<pre class="prettyprint">
-device/vendor_foo/device_bar/sepolicy/file.te:
-type renderscript_exec, exec_type, file_type;
-
-device/vendor_foo/device_bar/sepolicy/app.te:
-allow appdomain renderscript_exec:file { read open getattr execute execute_no_trans };
-
device/vendor_foo/device_bar/sepolicy/file_contexts:
-/vendor/bin/bcc u:object_r:renderscript_exec:s0
+/vendor/bin/bcc u:object_r:same_process_hal_file:s0
</pre>
<h3 id="legacy-devices">Legacy devices</h3>
diff --git a/en/devices/automotive/images/automotive_power_class_diagram.png b/en/devices/automotive/images/automotive_power_class_diagram.png
new file mode 100644
index 00000000..736dadb8
--- /dev/null
+++ b/en/devices/automotive/images/automotive_power_class_diagram.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_deep_sleep.png b/en/devices/automotive/images/automotive_power_deep_sleep.png
new file mode 100644
index 00000000..2ccfda75
--- /dev/null
+++ b/en/devices/automotive/images/automotive_power_deep_sleep.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_deep_sleep_exit.png b/en/devices/automotive/images/automotive_power_deep_sleep_exit.png
new file mode 100644
index 00000000..b920eb20
--- /dev/null
+++ b/en/devices/automotive/images/automotive_power_deep_sleep_exit.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_object_state.png b/en/devices/automotive/images/automotive_power_object_state.png
new file mode 100644
index 00000000..0e0aba62
--- /dev/null
+++ b/en/devices/automotive/images/automotive_power_object_state.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_reference_diagram.png b/en/devices/automotive/images/automotive_power_reference_diagram.png
new file mode 100644
index 00000000..625450f1
--- /dev/null
+++ b/en/devices/automotive/images/automotive_power_reference_diagram.png
Binary files differ
diff --git a/en/devices/automotive/images/automotive_power_states.png b/en/devices/automotive/images/automotive_power_states.png
new file mode 100644
index 00000000..d0c5cab6
--- /dev/null
+++ b/en/devices/automotive/images/automotive_power_states.png
Binary files differ
diff --git a/en/devices/automotive/power.html b/en/devices/automotive/power.html
new file mode 100644
index 00000000..f126825d
--- /dev/null
+++ b/en/devices/automotive/power.html
@@ -0,0 +1,753 @@
+<html devsite>
+ <head>
+ <title>Power Management</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>Android Automotive (AAE) P introduces a new state – <em>deep sleep</em> – into the AAE P power
+management state machine. To implement this state, AAE P provides a new power management service
+and interface: <code>CarPowerManagementService</code> and <code>CarPowerManager</code>.</p>
+
+<p>State transitions are triggered by the Vehicle MCU (VMCU). To enable AAE to communicate with the
+VMCU, integrators must implement several components. Integrators are responsible for integrating
+with the VHAL and the kernel implementation. Integrators are also responsible for disabling wake
+sources and ensuring that shutdowns are not postponed indefinitely.</p>
+
+<h2>Terminology</h2>
+
+<p>These terms are used throughout this document:</p>
+
+<table>
+<thead>
+<tr>
+<th>Term</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>Application Processor (AP)</td>
+<td>Part of the System on Chip (SoC).</td>
+</tr>
+<tr>
+<td>Board Support Processor (BSP)</td>
+<td>All of the chip and hardware specific code
+necessary for the product to work. Typically provided by the SoC vendor and hardware
+manufacturer. This covers items such as device drivers, the PMIC sequencing code, and SoC
+bringup.</td>
+</tr>
+<tr>
+<td>CarPowerManager (CPM)</td>
+<td>Exposes an API for applications to register for power state changes.</td>
+</tr>
+<tr>
+<td>CarPowerManagementService (CPMS)</td>
+<td>Implements the car power state machine, interfaces with VHAL, and performs the final calls to <code>suspend()</code> and <code>shutdown()</code>.</td>
+</tr>
+<tr>
+<td>CarServiceHelperService</strong> (<strong>CSHS</strong>)</td>
+<td>Provides a hook into SystemServer for OK, provided that is the Car Service.</td>
+</tr>
+<tr>
+<td>General Purpose Input / Output (GPIO)</td>
+<td>A digital signal pin for general purpose use.</td>
+</tr>
+<tr>
+<td>Hibernate</td>
+<td>AKA <em>Suspend to Disk</em> (S2D/S4). The SoC is placed into S4 power mode (hibernate) and RAM
+content is written to non-volatile media (such as flash or disk) and the entire system is powered
+off. Android does <strong><em>not</em></strong> currently implement hibernate.</td>
+</tr>
+<tr>
+<td>Media Processor (MP)</td>
+<td>See System on Chip (SoC).</td>
+</tr>
+<tr>
+<td>Power Management Integrated Circuit (PMIC)</td>
+<td>Chip used to manage power requirements for the host system.</td>
+</tr>
+<tr>
+<td>System on a Chip (SoC)</td>
+<td>Main processor that runs Android, typically supplied by manufacturers such as Intel, Mediatek,
+Nvidia, Qualcomm, Renesas, and Texas Instruments. </td>
+</tr>
+<tr>
+<td>Suspend</td>
+<td>AKA <em>Suspend to RAM</em> (S2R or STR). The SoC is placed into S3 power mode and the CPU is
+powered off while RAM remains powered on.</td>
+</tr>
+<tr>
+<td>Vehicle HAL (VHAL)</td>
+<td>The Android API used to interface with the vehicle network. The Tier 1 partner or OEM is
+responsible for writing this module. The vehicle network can use any physical layer (such as CAN,
+LIN, MOST, and Ethernet). The VHAL abstracts this vehicle network to enable Android to interact with
+the vehicle.</td>
+</tr>
+<tr>
+<td>Vehicle Interface Processor (VIP)</td>
+<td>See Vehicle MCU.</td>
+</tr>
+<tr>
+<td>Vehicle MCU (VMCU)</td>
+<td>The microcontroller that provides the interface between the vehicle network and the SoC. The SoC
+communicates with the VMCU via USB, UART, SPI, and GPIO signals. </td>
+</tr>
+</tbody>
+</table>
+
+<h2>System design</h2>
+
+<p>This section describes how AAE represents the application processor's power state and which
+modules implement the power management system. This material also describes how these modules work
+together and how state transitions typically occur.</p>
+
+<h3>Car power state machine</h3>
+
+<p>AAE uses a <em>state machine</em> to represent the power state of the AP. This state machine
+provides these five states, as illustrated below:
+
+<p><img src="/devices/automotive/images/automotive_power_states.png"></p>
+
+<p><b>Figure 1</b>. Car power state machine</p>
+
+<p>The initial state of this state machine is OFF. This state can transition into two states,
+ON:DISP OFF and ON: FULL. Both states indicate the AP is on. The difference lies in the
+display's power state. ON: DISP OFF means that the AP is running and displays are turned off.
+When display turns on, the ON: DISP OFF state transitions into ON:FULL (and vice versa).</p>
+
+<p>The AP is turned off in two cases. In both cases, the state machine first changes state to
+SHUTDOWN PREPARE and then transitions to OFF or DEEP SLEEP:</p>
+
+<ul>
+<li>Power off</li>
+<li>Suspended to RAM</li>
+</ul>
+
+<p>When this power management state machine enters the DEEP SLEEP state, the AP runs Suspend to
+RAM. For example, the AP suspends its state (such as register stored value) in RAM. When the AP
+wakes up, all states are restored.</p>
+
+<h3>Power management modules</h3>
+
+<p>These five modules comprise the power management system:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Module name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>CarPowerManager</td>
+<td>Java/C++ API</td>
+</tr>
+<tr>
+<td>CarPowerManagementService</td>
+<td>Responsible for coordinating the sleep/suspend power state</td>
+</tr>
+<tr>
+<td>Vehicle HAL</td>
+<td>Interface to VMCU</td>
+</tr>
+<tr>
+<td>libsuspend</td>
+<td>Native library to place the device into suspend</td>
+</tr>
+<tr>
+<td>Kernel</td>
+<td>Suspend to RAM implementation</td>
+</tr>
+</tbody>
+</table>
+
+<p>The deep sleep feature (suspending Android to RAM) is implemented in the kernel. This feature is
+exposed to the user space as a special file located at <code>/sys/power/state</code>. AAE is
+suspended by writing <code>mem</code> to this file. </p>
+
+<p><code>libsuspend</code> is a native library that implements <code>forcesuspend()</code>. This
+function uses <code>/sys/power/state</code> to suspend AAE. <code>forcesuspend()</code> can be
+called from system services, including CPMS.</p>
+
+<p>The CPMS coordinates the power state with other services and HALs. The CPMS implements the state
+machine described above and sends notifications to every observer when a power state transition
+occurs. This service also uses <code>libsuspend</code> and the VHAL to send messages to the
+hardware. </p>
+
+<p>Some properties are defined in the VHAL. To communicate with the VMCU, the CPMS reads and writes
+these properties. Applications can use the interface defined in the CPM to monitor power state
+changes. This interface also enables applications to acquire the boot reason and to send shutdown
+requests. This API can be called from Java and C++ and are annotated with @hide / @System API, which
+means it is available to privileged applications <em>only</em>. The relationship between these five
+modules, applications, and services is illustrated below:</p>
+
+<p><img src="/devices/automotive/images/automotive_power_reference_diagram.png"></p>
+
+<p><b>Figure 2</b>. Power components reference diagram</p>
+
+<h3>Typical message sequence</h3>
+
+<p>The previous section described the modules that comprise the power management system. This
+section uses the following two examples to explain how the modules and applications communicate:</p>
+
+<ul>
+<li>Enter deep sleep</li>
+<li>Exit deep sleep</li>
+</ul>
+
+<h4>Enter deep sleep</h4>
+
+<p>Only the VMCU can initiate deep sleep. Once deep sleep is initiated, the VMCU sends a
+notification to the CPMS via the VHAL. The CPMS changes the state to SHUTDOWN PREPARE and
+broadcasts this state transition to all observers (the applications and services that monitor
+CPMS) by calling the <code>onStateChanged()</code> method with a new state ID provided by the
+CPM.</p>
+
+The CPM mediates between the applications/services and the CPMS. The <code>onStateChanged()</code>
+method for the applications/services is synchronously invoked in the CPM's
+<code>onStateChanged()</code> method. After which, the finished method of the CPMS is invoked to
+notify the CPMS that the target application or service is ready to suspend. The CPM's
+<code>onStateChanged()</code> method runs asynchronously. Therefore, some delay occurs between the
+calling of the <code>onStateChanged()</code> method to all CPM objects and the receiving of the
+finished message from all these objects. During this time, the CPMS continues to send shutdown
+postpone requests to the VHAL.</p>
+
+<p>Once the CPMS receives the finished message from all CPM objects, the CPMS sends
+<code>AP_POWER_STATE_REPORT</code> to the VHAL, which then notifies the VMCU that the AP is ready to
+suspend. The CPMS also calls its suspend method, which suspends the kernel with a feature provided
+by <code>libsuspend</code>.</p>
+
+<p>The entire sequence described above is illustrated in the following sequence diagram:
+
+<p><img src="/devices/automotive/images/automotive_power_deep_sleep.png"></p>
+
+<p><b>Figure 3</b>. Enter deep sleep sequence diagram</p>
+
+<h4>Exit deep sleep</h4>
+
+<p>The sequence to exit suspend is also initiated by the VMCU. The VMCU turns on the AP and the AP
+restores the suspended Android from RAM. The CPMS uses <code>onStateChanged</code>method to send a
+<code>SUSPEND_EXIT</code> message to applications and services when it wakes up. </p>
+
+To access the reason, applications and services can call the <code>getBootReason()</code> method
+provided by the CPM. This method returns these values, as notified from the VMCU to the VHAL:</p>
+
+<ul>
+<li>BOOT_REASON_USER_POWER_ON</li>
+<li>BOOT_REASON_DOOR_UNLOCK</li>
+<li>BOOT_REASON_TIMER</li>
+<li>BOOT_REASON_DOOR_OPEN</li>
+<li>BOOT_REASON_REMOTE_START</li>
+</ul>
+
+<p><img src="/devices/automotive/images/automotive_power_deep_sleep_exit.png"></p>
+
+<p><b>Figure 4</b>. Exit deep sleep sequence diagram</p>
+
+<h2>Programming interfaces provided by CPM</h2>
+
+<p>This section describes the Java and C++ API provided by the CPM for system applications and
+services. The process to call the CPM in C++ is identical to that used by the Java API. This API
+enables the system software to:</p>
+
+<ul>
+<li>Monitor the AP's power state changes</li>
+<li>Acquire boot reasons from the CPMS</li>
+<li>Request the VMCU to shut down the AP on the next suspend instruction</li>
+</ul>
+
+<p><code>PowerTestFragment.java</code> in <code>com.google.android.car.kitchensink.power</code>
+illustrates how to use these APIs in Java. Use these steps to call the APIs provided by the CPM:</p>
+
+<ol>
+<li>To acquire the CPM instance, call the Car API.</li>
+<li>Call the appropriate method on the object created in Step 1.</li>
+</ol>
+
+<h3>Creating a CarPowerManager object</h3>
+
+<p>To create a CPM object, call the Car object's <code>getCarManager()</code> method. This method is
+a facade used to create CM objects. Specify <code>android.car.Car.POWER_SERVICE</code> as an
+argument to create a CPM object.</p>
+
+<div>
+<pre class="prettyprint">
+Car car = Car.createCar(this, carCallbacks);
+car.connect();
+CarPowerManager powerManager =
+ (CarPowerManager)car.getCarManager(android.car.Car.POWER_SERVICE);
+</pre>
+</div>
+
+<h2>CarPowerStateListener and registration</h2>
+
+<p>System applications and services can receive power state change notifications by implementing
+<code>CarPowerManager.CarPowerStateListener</code>. This interface defines one method
+<code>onStateChanged()</code>, which is a callback function invoked when the power state of CPMS
+is changed. The following example defines a new anonymous class that implements the interface:</p>
+
+<div>
+<pre class="prettyprint">
+private final CarPowerManager.CarPowerStateListener listener =
+ new CarPowerManager.CarPowerStateListener () {
+ @Override
+ public void onStateChanged(int state) {
+ Log.i(TAG, "onStateChanged() state = " + state);
+ }
+};
+</pre>
+</div>
+
+<p>To instruct this listener object to monitor a power state transition, create a new execution
+thread and register the listener and this thread to the PM object: </p>
+
+<div>
+<pre class="prettyprint">
+executer = new ThreadPerTaskExecuter();
+powerManager.setListener(powerListener, executer);
+</pre>
+</div>
+
+<p>When the power state is changed, the <code>onStateChanged()</code> method of the listener object
+is invoked with a value to represent the new power state. The association between actual value and
+power state is defined in <code>CarPowerManager.CarPowerStateListene</code>r and is shown in the
+following table:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>SHUTDOWN_CANCELED</td>
+<td>Shutdown is canceled and power state is returned to the normal state.</td>
+</tr>
+<tr>
+<td>SHUTDOWN_ENTER</td>
+<td>Enter the shutdown state. Applications are expected to clean up and be ready to shutdown.</td>
+</tr>
+<tr>
+<td>SUSPEND_ENTER</td>
+<td>Enter the suspend state. Applications are expected to clean up and be ready to suspend.</td>
+</tr>
+<tr>
+<td>SUSPEND_EXIT</td>
+<td>Wake up from suspend or resume from a cancelled suspend.</td>
+</tr>
+</tbody>
+</table>
+
+<h3>CarPowerStateListener unregistration</h3>
+
+<p>To unregister all listener objects registered to CPM, call the <code>clearListener</code> method:</p>
+
+<p><pre class="prettyprint">
+powerManager.clearListener();
+</pre>
+</div>
+
+<h3>Boot reason acquisition</h3>
+
+<p>To acquire the boot reason, call the <code>getBootReason</code> method, which communicates with
+the CPMS and returns one of the following five boot reasons:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>BOOT_REASON_USER_POWER_ON</td>
+<td>A user presses the power key or rotates the ignition switch to boot the device.</td>
+</tr>
+<tr>
+<td>BOOT_REASON_DOOR_UNLOCK</td>
+<td>Door unlocks, which causes the device to boot.</td>
+</tr>
+<tr>
+<td>BOOT_REASON_TIMER</td>
+<td>Timer expires and vehicle wakes up the AP.</td>
+</tr>
+<tr>
+<td>BOOT_REASON_DOOR_OPEN</td>
+<td>Door opens, which causes the device to boot.</td>
+</tr>
+<tr>
+<td>BOOT_REASON_REMOTE_START</td>
+<td>User activates remote start.</td>
+</tr>
+</tbody>
+</table>
+
+<p>These boot reasons are defined in the CPM. The following sample code demonstrates boot reason
+acquisition:</p>
+
+<div>
+<pre class="prettyprint">
+try{
+ int bootReason = carPowerManager.getBootReason();
+ if (bootReason == CarPowerManager.BOOT_REASON_TIMER){
+ doSomething;
+ }else{
+ doSomethingElse();
+ }
+}catch(CarNotConnectedException e){
+ Log.e("Failed to getBootReason()" + e);
+}
+</pre>
+</div>
+
+<p>This method throws a <code>CarNotConnectedException</code> when it fails to communicate with the
+CPMS.</p>
+
+<h3>Shutdown request on next suspend</h3>
+
+<p>The <code>requestShutdownOnNextSuspend()</code>method instructs CPMS to shut down instead of deep
+sleep at the next opportunity.</p>
+
+<h2>System integration on your Android implementation</h2>
+
+<p>Integrators are responsible for implementing the following items:</p>
+
+<ul>
+<li>Kernel interface to suspend Android</li>
+<li>The VHAL to:<ul type="circle">
+<li>Propagate the initiation of suspend or shutdown from the car to Android</li>
+<li>Send the shutdown ready message from Android to the car</li>
+<li>Initiate shutdown or suspend of Android via the Linux kernel interface</li>
+<li>Propagate the wake reason from the car to Android upon resume from suspend</li>
+</ul>
+<li>Wakesources to be disabled when the device is in suspend</li>
+<li>Applications to shut down quickly enough so as not to indefinitely postpone the shutdown
+process</li>
+</ul>
+
+<h3>Kernel interface: /sys/power/state</h3>
+
+<p>First, implement the Linux suspend power state. Android places a device into suspend mode when
+an application or service writes <code>mem</code> into a file located at
+<code>/sys/power/state.</code> This function may include the sending of a GPIO to the VMCU to notify
+the VMCU that the device has shut down completely. The Integrator is also responsible for removing
+any race conditions between VHAL sending the final message to the VMCU and the system going into
+suspend or shutdown mode.</p>
+
+<h3>VHAL responsibility</h3>
+
+<p>The VHAL provides an interface between the vehicle network and Android. The VHAL:</p>
+
+<ul>
+<li>Propagates the initiation of suspend or shutdown from the car to Android</li>
+<li>Sends the shutdown ready message from Android to the car</li>
+<li>Initiates the shutdown or suspend of Android via the Linux kernel interface</li>
+<li>Propagates the wake reason from the car to Android upon resume from suspend</li>
+</ul>
+
+<p>When the CPMS informs the VHAL that it is ready to shut down, the VHAL sends the shutdown ready
+message to the VMCU. Typically, on-chip peripherals such as UART, SPI, and USB transmit the
+message. Once the message has been sent, the VHAL calls the kernel command to suspend or shutdown
+the device. Before doing so, in the case of a shutdown, the VHAL or BSP may toggle a GPIO to
+instruct the VMCU that it is safe to remove power from the device.</p>
+
+<p>The VHAL must support the following properties, which control power management via the VHAL:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>AP_POWER_STATE_REPORT</td>
+<td>Android reports state transitions to the VMCU with this property, using VehicleApPowerStateSet enum values.</td>
+</tr>
+<tr>
+<td>AP_POWER_STATE_REQ</td>
+<td>The VMCU uses this property to instruct Android to transition to different power states, using VehicleApPowerStateReq enum values.</td>
+</tr>
+<tr>
+<td>AP_POWER_BOOTUP_REASON</td>
+<td>The VMCU reports the wake reason to Android, using the VehicleApPowerBootupReason enum values.</td>
+</tr>
+</tbody>
+</table>
+
+<h4>AP_POWER_STATE_REPORT</h4>
+
+<p>Use this property to report Android's current power management state.This property contains two
+integers:</p>
+
+<ul>
+<li><code>int32Values[0]</code>: <code>VehicleApPowerStateReport</code> enum of current state </li>
+<li><code>int32Values[1]</code>: Time in milliseconds to postpone or sleep/shutdown. This value
+depends on the first value.</li>
+</ul>
+
+<p>The first value can take one of the following values. <code>Types.hal</code> contains more
+specific descriptions, which are stored in the
+<code>hardware/interfaces/automotive/vehicle/2.0.</code></p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Value name</strong></th>
+<th><strong>Description</strong></th>
+<th><strong>Second value</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>BOOT_COMPLETE</td>
+<td>AP has completed boot up and can start shutdown.</td>
+<td></td>
+</tr>
+<tr>
+<td>DEEP_SLEEP_ENTRY</td>
+<td>AP is entering the deep sleep state.</td>
+<td>Must be set</td>
+</tr>
+<tr>
+<td>DEEP_SLEEP_EXIT</td>
+<td>AP is exiting the deep sleep state.</td>
+<td></td>
+</tr>
+<tr>
+<td>SHUTDOWN_POSTPONE</td>
+<td>Android is requesting to postpone shutdown .</td>
+<td>Must be set</td>
+</tr>
+<tr>
+<td>SHUTDOWN_START</td>
+<td>AP is starting shutdown. The VMCU can turn on AP after the time specified in the second
+value.</td>
+<td>Must be set</td>
+</tr>
+<tr>
+<td>DISPLAY_OFF</td>
+<td>User has requested to turn off the display of the head unit.</td>
+<td></td>
+</tr>
+<tr>
+<td>DISPLAY_ON</td>
+<td>User has requested to turn on the display of the head unit.</td>
+<td></td>
+</tr>
+</tbody>
+</table>
+
+<p>The state can be set asynchronously (in the case of <code>BOOT_COMPLETE</code>) or in response to
+a request via the VMCU. When the state is set to <code>SHUTDOWN_START</code>,
+<code>DEEP_SLEEP_ENTRY,</code> or <code>SHUTDOWN_POSTPONE</code>, an integer value in
+milliseconds is sent to notify the VMCU for how long the AP must postpone shutdown or sleep.</p>
+
+<h4>AP_POWER_STATE_REQ</h4>
+
+<p>This property is sent by the VMCU to transition Android into a different power state and contains
+two integers:</p>
+
+<ul>
+<li><code>int32Values[0]</code>: <code>VehicleApPowerStateReq</code> enum value, which represents
+the new state into which to transition</li>
+<li><code>int32Values[1]</code>: <code>VehicleApPowerStateShutdownParam</code> enum value. This is
+sent only for a <code>SHUTDOWN_PREPARE</code> message and conveys to Android what options it
+contains.</li>
+</ul>
+
+<p>The first integer value represents the new state into which Android is to transit. The semantics
+are defined in <code>types.hal</code> and provided in the following table:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Value name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>OFF</td>
+<td>AP is turned off.</td>
+</tr>
+<tr>
+<td>DEEP_SLEEP</td>
+<td>AP is in deep sleep.</td>
+</tr>
+<tr>
+<td>ON_DISP_OFF</td>
+<td>AP is on, but display is off.</td>
+</tr>
+<tr>
+<td>N_FULL</td>
+<td>AP and display are on.</td>
+</tr>
+<tr>
+<td>SHUTDOWN_START</td>
+<td>AP is starting shutdown. The VMCU can turn on the AP after the time specified in the second
+value.</td>
+</tr>
+<tr>
+<td>SHUTDOWN_PREPARE</td>
+<td>The VMCU has requested the AP to shut down. The AP can either enter sleep state or start a full
+shutdown.</td>
+</tr>
+</tbody>
+</table>
+
+<p><code>VehicleApPowerStateShutdownParam</code> is also defined in <code>types.hal</code>. This
+enum has three elements, as described below:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Value name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>SHUTDOWN_IMMEDIATELY</td>
+<td>The AP must shut down immediately. Postpone is not allowed.</td>
+</tr>
+<tr>
+<td>CAN_SLEEP</td>
+<td>The AP can enter deep sleep instead of shutting down completely.</td>
+</tr>
+<tr>
+<td>SHUTDOWN_ONLY</td>
+<td>The AP can only shut down when postponing is allowed.</td>
+</tr>
+</tbody>
+</table>
+
+<h4>AP_POWER_BOOTUP_REASON</h4>
+
+<p>This property is set by the VMCU whenever Android is booted up or resumed from suspend. This
+property instructs Android which event triggered the wakeup. This value must remain static until
+Android is rebooted or completes a suspend/wake cycle. This property can take a
+<code>VehicleApPowerBootupReason</code> value, which is defined in <code>types.hal</code> as
+follows:</p>
+
+<table>
+<thead>
+<tr>
+<th><strong>Value name</strong></th>
+<th><strong>Description</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>USER_POWER_ON</td>
+<td>Power on because the user pressed the power key or rotated the ignition switch.</td>
+</tr>
+<tr>
+<td>USER_UNLOCK</td>
+<td>Automatic power on triggered by a user unlocking a door (or any other type of automatic user
+detection).</td>
+</tr>
+<tr>
+<td>TIMER</td>
+<td>Automatic power on triggered by a timer. This occurs only when the AP has requested wakeup after
+a specific duration, as specified in <code>VehicleApPowerSetState</code>#SHUTDOWN_START.</td>
+</tr>
+</tbody>
+</table>
+
+<h3>Wake sources</h3>
+
+<p>Use Integrator to disable the appropriate wake sources when the device is in suspend mode.
+Common wake sources include heartbeats, modem, wifi, and Bluetooth. The only valid wake source must
+be an interrupt from the VMCU to wake up the SoC. This assumes that the VMCU can listen to the modem
+for remote wakeup events (such as remote engine start). If this functionality is pushed to the AP,
+then another wake source to service the modem must be added. In the current design, the Integrator
+supplies a file with a list of wake sources to be turned off. The CPMS iterates through this file
+and manages the turning off and on of the wake sources at suspend time.</p>
+
+<h3>Applications</h3>
+
+<p>OEMs must be careful to write applications so that they can be shut down quickly and not postpone
+the process indefinitely. </p>
+
+<h2>Appendix</h2>
+
+<h3>Directories in the source code tree</h3>
+
+<table>
+<thead>
+<tr>
+<th><strong>Content</strong></th>
+<th><strong>Directory</strong></th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>CarPowerManager-related code.</td>
+<td><code>packages/services/Car/car-lib/src/android/car/hardware/power</code></td>
+</tr>
+<tr>
+<td>CarPowerManagementService and so on.</td>
+<td><code>packages/services/Car/service/src/com/android/car</code></td>
+</tr>
+<tr>
+<td>Services dealing with the VHAL, such as <code>VehicleHal</code> and <code>HAlClient</code>.</td>
+<td><code>packages/services/Car/service/src/com/android/car/hal</code></td>
+</tr>
+<tr>
+<td>VHAL interface and property definitions.</td>
+<td><code>hardware/interfaces/automotive/vehicle/2.0</code></td>
+</tr>
+<tr>
+<td>Sample app to provide some idea about the <code>CarPowerManager</code>.</td>
+<td><code>packages/services/Car/tests/EmbeddedKitchenSinkApp/src/com/google/android/car/kitchensink</code></td>
+</tr>
+<tr>
+<td>libsuspend resides in this directory.</td>
+<td><code>system/core/libsuspend</code></td>
+</tr>
+</tbody>
+</table>
+
+<h3>Class diagram</h3>
+
+<p>This class diagram displays the Java classes and interfaces in the power management system:</p>
+
+<p><img src="/devices/automotive/images/automotive_power_class_diagram.png"></p>
+
+<p><b>Figure 5</b>. Power class diagram</p>
+
+<h3>Object relationship </h3>
+
+<p>The following graph illustrates which objects have references to other objects. An edge
+means that the source object holds a reference to the target object. For example, VehicleHAL has a
+reference to a PropertyHalService object.</p>
+
+<p><img src="/devices/automotive/images/automotive_power_object_state.png"></p>
+
+<p><b>Figure 6</b>. Object reference diagram</p>
+
+ </body>
+</html>
diff --git a/en/devices/bootloader/boot-reason.html b/en/devices/bootloader/boot-reason.html
index 4071e32b..b7a1ffc4 100644
--- a/en/devices/bootloader/boot-reason.html
+++ b/en/devices/bootloader/boot-reason.html
@@ -232,9 +232,9 @@
<ul>
<li><code>"reboot,userrequested"</code></li>
<li><code>"shutdown,userrequested"</code></li>
- <li><code>"Shutdown,thermal"</code> (from <code>thermald</code>)</li>
+ <li><code>"shutdown,thermal"</code> (from <code>thermald</code>)</li>
<li><code>"shutdown,battery"</code></li>
- <li><code>"Shutdown,battery,thermal"</code> (from
+ <li><code>"shutdown,battery,thermal"</code> (from
<code>BatteryStatsService</code>)</li>
<li><code>"reboot,adb"</code></li>
<li><code>"reboot,shell"</code></li>
diff --git a/en/devices/camera/camera3_requests_hal.html b/en/devices/camera/camera3_requests_hal.html
index 314082a2..ca7c74ea 100644
--- a/en/devices/camera/camera3_requests_hal.html
+++ b/en/devices/camera/camera3_requests_hal.html
@@ -1,6 +1,6 @@
<html devsite>
<head>
- <title>HAL subsystem</title>
+ <title>HAL Subsystem</title>
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
diff --git a/en/devices/camera/external-usb-cameras.md b/en/devices/camera/external-usb-cameras.md
index d39d849d..dd554f50 100644
--- a/en/devices/camera/external-usb-cameras.md
+++ b/en/devices/camera/external-usb-cameras.md
@@ -189,7 +189,8 @@ implementation
## Validation
-Devices with external camera support must pass camera CTS. The external USB
+Devices with external camera support must pass
+[camera CTS](/compatibility/cts/camera-hal#cts_tests). The external USB
webcam must remain plugged in the specific device during the entire test run,
otherwise some test cases will fail.
diff --git a/en/devices/sensors/index.html b/en/devices/sensors/index.html
index 1613131a..962ba868 100644
--- a/en/devices/sensors/index.html
+++ b/en/devices/sensors/index.html
@@ -24,124 +24,150 @@
<img style="float: right; margin: 0px 15px 15px 15px;" src="images/ape_fwk_hal_sensors.png" alt="Android Sensors HAL icon"/>
-<p>Android sensors give applications access to a mobile device's underlying physical sensors. They are data-providing virtual devices defined by <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a>, the sensor Hardware Abstraction Layer (HAL).</p>
+<p>Android sensors give applications access to a mobile device's underlying
+physical sensors. They are data-providing virtual devices defined by <a
+href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h"
+class="external">sensors.h</a>, the sensor Hardware Abstraction Layer (HAL).</p>
-<h2 id="what_are_“android_sensors”">What are Android sensors?</h2>
-<p>Android sensors are virtual devices that provide data coming from a set of physical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity, pressure, light, proximity and heart rate sensors.</p>
-<p>Not included in the list of physical devices providing data are camera, fingerprint sensor, microphone, and touch screen. These devices have their own reporting mechanism; the separation is arbitrary, but in general, Android sensors provide lower bandwidth data. For example, “100hz x 3 channels” for an accelerometer versus “25hz x 8 MP x 3 channels” for a camera or “44kHz x 1 channel” for a microphone.</p>
- <p>Android does not define how the different physical sensors are connected to the system on chip (SoC).</p>
+<h2 id="what_are_android_sensors">What are Android sensors?</h2>
+<p>Android sensors are virtual devices that provide data coming from a set of
+physical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity,
+pressure, light, proximity and heart rate sensors.</p>
+<p>Not included in the list of physical devices providing data are camera,
+fingerprint sensor, microphone, and touch screen. These devices have their own
+reporting mechanism; the separation is arbitrary, but in general, Android sensors
+provide lower bandwidth data. For example, “100hz x 3 channels” for an
+accelerometer versus “25hz x 8 MP x 3 channels” for a camera or “44kHz x 1
+channel” for a microphone.</p>
+ <p>Android does not define how the different physical sensors are connected
+ to the system on chip (SoC).</p>
<ul>
- <li> Often, sensor chips are connected to the SoC through a <a href="sensor-stack.html#sensor_hub">sensor hub</a>, allowing some low-power monitoring and processing of the data. </li>
- <li> Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface
- (SPI) is used as the transport mechanism. </li>
- <li> To reduce power consumption, some architectures are hierarchical, with some
- minimal processing being done in the application-specific integrated
- circuit (ASIC - like motion detection on the accelerometer chip), and
- more is done in a microcontroller (like step detection
- in a sensor hub). </li>
- <li> It is up to the device manufacturer to choose an architecture based on
- accuracy, power, price and package-size characteristics. See <a
- href="sensor-stack.html">Sensor stack</a> for more information. </li>
- <li> Batching capabilities are an important consideration for power optimization.
- See <a href="batching.html">Batching</a> for more information. </li>
- </ul>
- <p>Each Android sensor has a “type” representing how the sensor behaves and what
- data it provides.</p>
+ <li>Often, sensor chips are connected to the SoC through a <a
+ href="/devices/sensors/sensor-stack#sensor_hub">sensor hub</a>, allowing
+ some low-power monitoring and processing of the data.</li>
+ <li>Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface
+ (SPI) is used as the transport mechanism.</li>
+ <li>To reduce power consumption, some architectures are hierarchical, with
+ some minimal processing being done in the application-specific integrated
+ circuit (ASIC - like motion detection on the accelerometer chip), and more
+ is done in a microcontroller (like step detection in a sensor hub).</li>
+ <li>It is up to the device manufacturer to choose an architecture based on
+ accuracy, power, price and package-size characteristics. See <a
+ href="/devices/sensors/sensor-stack">Sensor stack</a> for more
+ information. </li>
+ <li>Batching capabilities are an important consideration for power
+ optimization. See <a href="/devices/sensors/batching">Batching</a> for
+ more information.</li> </ul>
+ <p>Each Android sensor has a “type” representing how the sensor behaves and
+ what data it provides.</p>
<ul>
- <li> The official Android <a href="sensor-types.html">Sensor types</a> are defined in <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> under the names SENSOR_TYPE_…
+ <li>The official Android <a href="/devices/sensors/sensor-types">Sensor
+ types</a> are defined in <a
+ href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h"
+ class="external">sensors.h</a> under the names SENSOR_TYPE_…
<ul>
- <li> The vast majority of sensors have an official sensor type. </li>
- <li> Those types are documented in the Android SDK. </li>
- <li> Behavior of sensors with those types are tested in the Android
- Compatibility Test Suite (CTS). </li>
+ <li>The vast majority of sensors have an official sensor type.</li>
+ <li>Those types are documented in the Android SDK.</li>
+ <li>Behavior of sensors with those types are tested in the Android
+ Compatibility Test Suite (CTS).</li>
</ul>
</li>
- <li> If a manufacturer integrates a new kind of sensor on an Android device, the
- manufacturer can define its own temporary type to refer to it.
+ <li>If a manufacturer integrates a new kind of sensor on an Android
+ device, the manufacturer can define its own temporary type to refer to
+ it.
<ul>
- <li> Those types are undocumented, so application developers are unlikely to use
- them, either because they don’t know about them, or know that they are rarely
- present (only on some devices from this specific manufacturer). </li>
- <li> They are not tested by CTS. </li>
- <li> Once Android defines an official sensor type for this kind of
- sensor, manufacturers must stop using their own temporary type
- and use the official type instead. This way, the sensor will be
- used by more application developers. </li>
+ <li>Those types are undocumented, so application developers are
+ unlikely to use them, either because they don’t know about them, or
+ know that they are rarely present (only on some devices from this
+ specific manufacturer).</li>
+ <li>They are not tested by CTS.</li>
+ <li>Once Android defines an official sensor type for this kind of sensor,
+ manufacturers must stop using their own temporary type and use the
+ official type instead. This way, the sensor will be used by more
+ application developers.</li>
</ul>
- </li>
- <li> The list of all sensors present on the device is reported by the HAL
+ </li>
+ <li>The list of all sensors present on the device is reported by the HAL
implementation.
<ul>
- <li> There can be several sensors of the same type. For example, two proximity
- sensors or two accelerometers. </li>
- <li> The vast majority of applications request only a single sensor of a given type.
- For example, an application requesting the default accelerometer will get the
- first accelerometer in the list. </li>
- <li> Sensors are often defined by <a href="suspend-mode.html#wake-up_sensors">wake-up</a> and <a href="suspend-mode.html#non-wake-up_sensors">non-wake-up</a> pairs, both sensors sharing the same type, but differing by their wake-up
- characteristic. </li>
+ <li>There can be several sensors of the same type. For example, two
+ proximity sensors or two accelerometers.</li>
+ <li>The vast majority of applications request only a single sensor of
+ a given type. For example, an application requesting the default
+ accelerometer will get the first accelerometer in the list.</li>
+ <li>Sensors are often defined by <a
+ href="/devices/sensors/suspend-mode#wake-up_sensors">wake-up</a> and
+ <a
+ href="/devices/sensors/suspend-mode#non-wake-up_sensors">non-wake-up</a>
+ pairs, both sensors sharing the same type, but differing by their
+ wake-up characteristic.</li>
</ul>
- </li>
+ </li>
</ul>
<p>Android sensors provide data as a series of sensor events.</p>
- <p> Each <a href="hal-interface.html#sensors_event_t">event</a> contains:</p>
+ <p> Each <a href="/devices/sensors/hal-interface#sensors_event_t">event</a>
+ contains:</p>
<ul>
- <li> a handle to the sensor that generated it </li>
- <li> the timestamp at which the event was detected or measured </li>
- <li> and some data </li>
+ <li>a handle to the sensor that generated it</li>
+ <li>the timestamp at which the event was detected or measured</li>
+ <li>and some data</li>
</ul>
- <p>The interpretation of the reported data depends on the sensor type.
- See the <a href="sensor-types.html">sensor type</a> definitions for details on
- what data is reported for each sensor type.</p>
+ <p>The interpretation of the reported data depends on the sensor type. See
+ the <a href="/devices/sensors/sensor-types">sensor type</a>
+ definitions for details on what data is reported for each sensor type.</p>
<h2 id="existing_documentation2">Existing documentation</h2>
<h3 id="targeted_at_developers">Targeted at developers</h3>
<ul>
- <li> Overview
+ <li>Overview
<ul>
- <li><a href="https://developer.android.com/guide/topics/sensors/sensors_overview.html"> https://developer.android.com/guide/topics/sensors/sensors_overview.html </a></li>
+ <li><a href="https://developer.android.com/guide/topics/sensors/sensors_overview.html" class="external">https://developer.android.com/guide/topics/sensors/sensors_overview.html</a></li>
</ul>
</li>
- <li> SDK reference
+ <li>SDK reference
<ul>
- <li> <a href="https://developer.android.com/reference/android/hardware/SensorManager.html">https://developer.android.com/reference/android/hardware/SensorManager.html</a></li>
- <li><a href="https://developer.android.com/reference/android/hardware/SensorEventListener.html"> https://developer.android.com/reference/android/hardware/SensorEventListener.html</a></li>
- <li> <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">https://developer.android.com/reference/android/hardware/SensorEvent.html</a></li>
- <li><a href="https://developer.android.com/reference/android/hardware/Sensor.html"> https://developer.android.com/reference/android/hardware/Sensor.html</a></li>
+ <li><a href="https://developer.android.com/reference/android/hardware/SensorManager" class="external">https://developer.android.com/reference/android/hardware/SensorManager</a></li>
+ <li><a href="https://developer.android.com/reference/android/hardware/SensorEventListener" class="external">https://developer.android.com/reference/android/hardware/SensorEventListener</a></li>
+ <li><a href="https://developer.android.com/reference/android/hardware/SensorEvent" class="external">https://developer.android.com/reference/android/hardware/SensorEvent</a></li>
+ <li><a href="https://developer.android.com/reference/android/hardware/Sensor" class="external"> https://developer.android.com/reference/android/hardware/Sensor</a></li>
</ul>
</li>
- <li> StackOverflow and tutorial websites
+ <li>Stack Overflow and tutorial websites
<ul>
- <li> Because sensors documentation was sometimes lacking, developers resorted to Q&amp;A
- websites like StackOverflow to find answers. </li>
- <li> Some tutorial websites exist as well, but do not cover the latest features like
- batching, significant motion and game rotation vectors. </li>
- <li> The answers over there are not always right, and show where more documentation
- is needed. </li>
+ <li>Because sensors documentation was sometimes lacking, developers
+ resorted to Q&amp;A websites like Stack Overflow to find answers.
+ </li>
+ <li>Some tutorial websites exist as well, but do not cover the latest
+ features like batching, significant motion and game rotation vectors.
+ </li>
+ <li>The answers over there are not always right, and show where more
+ documentation is needed.</li>
</ul>
</li>
</ul>
<h3 id="targeted_at_manufacturers_public">Targeted at manufacturers</h3>
<ul>
- <li> Overview
+ <li>Overview
<ul>
- <li>This <a href="/devices/sensors/index.html">Sensors</a>
+ <li>This <a href="/devices/sensors/">Sensors</a>
page and its sub-pages. </li>
</ul>
- </li>
- <li> Hardware abstraction layer (HAL)
+ </li>
+ <li>Hardware abstraction layer (HAL)
<ul>
- <li> <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h</a></li>
- <li> Also known as “sensors.h” </li>
- <li> The source of truth. First document to be updated when new features are
- developed. </li>
+ <li><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h" class="external">/platform/hardware/libhardware/+/master/include/hardware/sensors.h</a></li>
+ <li>Also known as “sensors.h”</li>
+ <li>The source of truth. First document to be updated when new
+ features are developed.</li>
</ul>
</li>
- <li> Android CDD (Compatibility Definition Document)
+ <li>Android CDD (Compatibility Definition Document)
<ul>
- <li><a href="/compatibility/android-cdd.pdf">https://source.android.com/compatibility/android-cdd.pdf</a></li>
- <li> See sections relative to sensors. </li>
- <li> The CDD is lenient, so satisfying the CDD requirements is not enough to ensure
- high quality sensors. </li>
+ <li><a
+ href="/compatibility/9/android-9-cdd">https://source.android.com/compatibility/9/android-9-cdd</a></li>
+ <li>See sections relative to sensors.</li>
+ <li>The CDD is lenient, so satisfying the CDD requirements is not
+ enough to ensure high quality sensors.</li>
</ul>
</li>
</ul>
diff --git a/en/devices/tech/admin/index.html b/en/devices/tech/admin/index.html
index 39ba66e6..fcceee57 100644
--- a/en/devices/tech/admin/index.html
+++ b/en/devices/tech/admin/index.html
@@ -23,42 +23,57 @@
-<p>Devices running Android 5.0 and later with the managed_users feature
-declared can be used in a <a href="http://www.android.com/work/">corporate
-environment</a> under the auspices of each company’s information technology (IT)
-department. This is possible with the introduction of <a href="multi-user.html">multiple
-users</a>, <a href="managed-profiles.html">managed profiles</a>, and enterprise
-mobility management (EMM) applications, as well as enhancements to default
-<a
-href="/security/encryption/index.html">encryption</a>,
-<a
-href="/security/verifiedboot/index.html">verified
-boot</a>, and <a
-href="/security/selinux/index.html">SELinux</a>.</p>
+<p>
+ Devices running Android 5.0 and later with the <code>managed_users</code> feature
+ declared can be used in a <a href="http://www.android.com/work/"
+ class="external">corporate environment</a> under the auspices of each company’s
+ information technology (IT) department. This is possible with the introduction of
+ <a href="/devices/tech/admin/multi-user">multiple users</a>,
+ <a href="/devices/tech/admin/managed-profiles">managed profiles</a>, and
+ enterprise mobility management (EMM) applications, as well as enhancements to default
+ <a href="/security/encryption/index">encryption</a>,
+ <a href="/security/verifiedboot/index">verified boot</a>, and
+ <a href="/security/selinux/index">SELinux</a>.
+</p>
-<p>With these enhancements, either users or their IT departments may create
-managed profiles that separate corporate employer data from personal user
-information. Follow the documents within this section of the site to properly
-implement corporate device administration.</p>
+<p>
+ With these enhancements, either users or their IT departments may create
+ managed profiles that separate corporate employer data from personal user
+ information. Follow the documents within this section of the site to properly
+ implement corporate device administration.
+</p>
-<h2 id=summary>Summary</h2>
+<h2 id="summary">Summary</h2>
-<p>Follow this flow to employ device administration:</p>
+ <p>Follow this flow to employ device administration:</p>
-<ol>
- <li>Gain an understanding of key concepts, such as <a
-href="multi-user.html">multiple users</a> and <a
-href="managed-profiles.html">managed profiles</a>.
- <li><a href="implement.html">Implement device administration</a> via custom
-overlay files.
- <li><a href="testing-setup.html">Test</a> and validate your devices with EMM providers and applications.
-</ol>
+ <ol>
+ <li>
+ Gain an understanding of key concepts, such as
+ <a href="/devices/tech/admin/multi-user">multiple users</a> and
+ <a href="/devices/tech/admin/managed-profiles">managed profiles</a>.
+ </li>
+ <li>
+ <a href="/devices/tech/admin/implement">Implement device
+ administration</a> via custom overlay files.
+ </li>
+ <li>
+ <a href="/devices/tech/admin/testing-setup">Test</a> and validate
+ your devices with EMM providers and applications.
+ </li>
+ </ol>
-<h2 id=supporting_documentation>Supporting documentation</h2>
+<h2 id="supporting_documentation">Supporting documentation</h2>
-<p><a href="http://developer.android.com/guide/topics/admin/device-admin.html">Device Administration API</a></p>
+ <p>
+ <a href="http://developer.android.com/guide/topics/admin/device-admin.html"
+ class="external">Device Administration API</a>
+ </p>
-<p><a href="https://developer.android.com/training/enterprise/index.html">Building Apps for Work</a></p>
+ <p>
+ <a href="https://developer.android.com/training/enterprise/index.html"
+ class="external">Building Apps for Work</a>
+ </p>
</body>
</html>
diff --git a/en/devices/tech/connect/call-notification.html b/en/devices/tech/connect/call-notification.html
index a8f5c2c6..a7a6c9a9 100644
--- a/en/devices/tech/connect/call-notification.html
+++ b/en/devices/tech/connect/call-notification.html
@@ -114,7 +114,7 @@ functionality. For details, refer to the following documentation:</p>
<h2 id=implement>Implementation</h2>
<p>Device implementers may need to update Telecom/Telephony components that
-expose APIs available for use by by the default Dialer.</p>
+expose APIs available for use by the default Dialer.</p>
</body>
</html>
diff --git a/en/devices/tech/connect/wifi-passpoint.md b/en/devices/tech/connect/wifi-passpoint.md
index 4ee96591..9f540339 100644
--- a/en/devices/tech/connect/wifi-passpoint.md
+++ b/en/devices/tech/connect/wifi-passpoint.md
@@ -91,7 +91,7 @@ application/x-x509-ca-cert
</code>
</td>
-<td>Optional for EAP-TLS and EAP-TTLS</td>
+<td>Required for EAP-TLS and EAP-TTLS</td>
<td>A single X.509v3 base64-encoded certificate payload.</td>
</tr>
<tr>
diff --git a/en/devices/tech/debug/asan.html b/en/devices/tech/debug/asan.html
index 1c12ad62..9ea32939 100644
--- a/en/devices/tech/debug/asan.html
+++ b/en/devices/tech/debug/asan.html
@@ -21,55 +21,81 @@
limitations under the License.
-->
-
-
<p>AddressSanitizer (ASan) is a fast compiler-based tool for detecting memory bugs
-in native code. It is comparable to Valgrind (Memcheck tool), but, unlike it,
-ASan:</p>
+in native code. Android supports both regular ASan and hardware-accelerated ASan (HWASan).
+HWAsan is based on memory tagging and is only available on AArch64 because it relies on
+the Top-Byte-Ignore feature.</p>
+<p>These tools detect:</p>
<ul>
- <li> + detects overflows on stack and global objects
- <li> - does not detect uninitialized reads and memory leaks
- <li> + is much faster (two-three times slowdown compared to Valgrind’s 20-100x)
- <li> + has less memory overhead
+<li>Stack and heap buffer overflow/underflow.
+<li>Heap use after free.
+<li>Stack use outside scope.
+<li>Stack use after return (HWAsan only on Android).
+<li>Double free/wild free.
</ul>
-<p>This document describes how to build and run parts of the Android platform with
-AddressSanitizer. If you are looking to build a standalone (i.e. SDK/NDK)
-application with AddressSanitizer, see the <a
-href="https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroid">AddressSanitizerOnAndroid</a>
-public project site instead.</p>
+<p>ASan runs on both 32-bit and 64-bit ARM, plus x86 and x86-64. ASan's CPU overhead
+is roughly 2x, code size overhead is between 50% and 2x, and a large memory overhead
+(dependent on your allocation patterns, but on the order of 2x).</p>
-<p>AddressSanitizer consists of a compiler (<code>external/clang</code>) and a runtime library
-(<code>external/compiler-rt/lib/asan</code>).</p>
+<p>HWASan has similar CPU and code size overheads, but a much smaller RAM overhead (15%).
+HWASan is non-deterministic. There are only 256 possible tag values, so there is a flat 0.4%
+probability of missing any bug. HWAsan does not have ASan's limited-size redzones for
+detecting overflows and limited-capacity quarantine for detecting use-after-free,
+so it does not matter to HWAsan how large the overflow is or how long ago the memory
+was deallocated. This makes HWASan better than ASan.</p>
-<p class="note"><strong>Note</strong>: Use the current master
-branch to gain access to the <a href="#sanitize_target">SANITIZE_TARGET</a>
-feature and the ability to build the entire Android platform with
-AddressSanitizer at once. Otherwise, you are limited to using
-<code>LOCAL_SANITIZE</code>.</p>
+<p>Valgrind's Memcheck tool is similar, but ASan also detects stack/global overflows
+in addition to heap overflows, and is much faster with less memory overhead. Conversely,
+Valgrind detects uninitialized reads and memory leaks that ASan does not.
+Valgrind may be useful for debugging apps but is not practical for the entire OS,
+which is why the Android team uses ASan instead.</p>
-<h2 id=building_with_clang>Building with Clang</h2>
+<p>This document describes how to build and run parts/all of the Android OS itself with
+AddressSanitizer. If you are building an SDK/NDK application with AddressSanitizer, see
+<a href="https://github.com/google/sanitizers/wiki/AddressSanitizerOnAndroid" class="external">AddressSanitizerOnAndroid</a>
+instead.</p>
-<p>As a first step to building an ASan-instrumented binary, make sure that your
-code builds with Clang. This is done by default on the master branch, so there should be nothing
-you need to do. If you believe that the module you'd like to test is being built with GCC,
-you can switch to Clang by adding <code>LOCAL_CLANG:=true</code>
-to the build rules. Clang may find bugs in your code that GCC missed.</p>
-<h2 id=building_executables_with_addresssanitizer>Building executables with AddressSanitizer</h2>
+<h2 id="using-hwasan">Using HWAsan</h2>
-<p>Add <code>LOCAL_SANITIZE:=address</code> to the build rule of the
-executable.</p>
+<p>As of December 2018 only Pixel 2 and Pixel 2 XL are supported. Supporting another device
+requires backporting several kernel patches. The Android team is working on getting those into
+the common kernel.
+You may also need to remove some optional extras to make room on your system partition for the
+larger libraries. See the <code>walleye_hwasan</code> target for an example.</p>
-<pre class="devsite-click-to-copy">
-LOCAL_SANITIZE:=address
+<p>Use the following commands to build the entire platform using HWASan:</p>
+
+<pre class="prettyprint">
+<code class="devsite-terminal">lunch walleye_hwasan-userdebug</code>
+<code class="devsite-terminal">make SANITIZE_TARGET=hwaddress</code>
</pre>
+<p>Unlike ASan, with HWASan there's no need to build twice, incremental builds just work,
+there are no special flashing instructions or wiping, static executables are supported,
+and it's okay to skip sanitization of any library other than <code>libc</code>.
+There's also no requirement that if a library is sanitized, any executable that links
+to it must also be sanitized.
+
+<p>To skip sanitization of a module, use <code>LOCAL_NOSANITIZE := hwaddress</code> or
+<code>sanitize: { hwaddress: false }</code>.</p>
+
+<aside class="note">
+<strong>Note:</strong> Currently there is no support for sanitizing individual modules with HWASan. Use ASan to sanitize individual modules.
+</aside>
+
+<h2 id="sanitizing_individual_executables_with_asan">Sanitizing individual executables with ASan</h2>
+
+<p>Add <code>LOCAL_SANITIZE:=address</code> or <code>sanitize: { address: true } }</code> to
+the build rule for the executable. You can search the code for existing examples or to find
+the other available sanitizers.</p>
+
<p>When a bug is detected, ASan prints a verbose report both to the standard
output and to <code>logcat</code> and then crashes the process.</p>
-<h2 id=building_shared_libraries_with_addresssanitizer>Building shared libraries with AddressSanitizer</h2>
+<h2 id="sanitizing_shared_libraries_with_asan">Sanitizing shared libraries with ASan</h2>
<p>Due to the way ASan works, a library built with ASan cannot be used by an
executable that's built without ASan.</p>
@@ -151,7 +177,7 @@ script.
<p>The second approach can provide more data (i.e. file:line locations) because of
the availability of symbolized libraries on the host.</p>
-<h2 id=addresssanitizer_in_the_apps>AddressSanitizer in the apps</h2>
+<h2 id=addresssanitizer_in_the_apps>AddressSanitizer in apps</h2>
<p>AddressSanitizer cannot see into Java code, but it can detect bugs in the JNI
libraries. For that, you'll need to build the executable with ASan, which in
@@ -204,8 +230,8 @@ the log.</p>
<h2 id=sanitize_target>SANITIZE_TARGET</h2>
-<p>The master branch has support for building the entire Android platform with
-AddressSanitizer at once.</p>
+<p>Since Android 7.0 Nougat, there is support for building the entire Android platform with
+ASan at once. (If you're building a release newer than Android 9.0 Pie, HWASan is a better choice.)</p>
<p>Run the following commands in the same build tree.</p>
@@ -221,8 +247,6 @@ flashed to the device as well. Use the following command line:</p>
fastboot flash userdata && fastboot flashall
</pre>
-<p>At the moment of this writing, modern Nexus and Pixel devices boot to the UI in this mode.</p>
-
<p>This works by building two sets of shared libraries: normal in
<code>/system/lib</code> (the first make invocation), ASan-instrumented in
<code>/data/asan/lib</code> (the second make invocation). Executables from the
diff --git a/en/devices/tech/debug/gdb.html b/en/devices/tech/debug/gdb.html
index e43ca3c3..49d62aa3 100644
--- a/en/devices/tech/debug/gdb.html
+++ b/en/devices/tech/debug/gdb.html
@@ -25,7 +25,21 @@
<p>The GNU Project debugger (GDB) is a commonly used Unix debugger. This page
details using <code>gdb</code> to debug Android apps and processes for platform
developers. For third-party app development, see
-<a href="https://developer.android.com/studio/debug/index.html">Debug Your App</a>.</p>
+<a class="external"
+href="https://developer.android.com/studio/debug/index.html">Debug Your
+App</a>.</p>
+
+<h2 id="prerequisites">Prerequisites</h2>
+
+<p>To use GDB for debugging apps and processes:</p>
+
+ <ul>
+ <li>Set up environment with <code>envsetup.sh</code>
+ <li>Run the <code>lunch</code> command</li>
+ </ul>
+
+<p>For more help with setting up your environment, see
+ <a href="/setup/build/building#initialize">Preparing to Build</a>.</p>
<h2 id=running>Debugging running apps or processes</h2>
@@ -42,8 +56,9 @@ gdbclient.py -p 1234
the host, configures <code>gdb</code> to find symbols, and connects
<code>gdb</code> to the remote <code>gdbserver</code>.</p>
-<aside class="note"><strong>Note:</strong> in Android 6 and earlier the script was a shell script
-called <code>gdbclient</code> instead of a Python script called <code>gdbclient.py</code>.</aside>
+<aside class="note"><strong>Note:</strong> In Android 6 and lower the script was
+a shell script called <code>gdbclient</code> instead of a Python script called
+<code>gdbclient.py</code>.</aside>
<h2 id=starts>Debugging native process startup</h2>
@@ -99,7 +114,7 @@ your app from the list, then press <strong>Wait for debugger</strong>.</li>
<li>Start the app, either from the launcher or by using the command line to run:
<pre class="devsite-terminal devsite-click-to-copy">
-am start -a android.intent.action.MAIN -n <var>APP_NAME</var>/.<var>APP_ACTIVITY</var>
+adb shell am start -a android.intent.action.MAIN -n <var>APP_NAME</var>/.<var>APP_ACTIVITY</var>
</pre></li>
<li>Wait for the app to load and a dialog to appear telling you the app is
@@ -136,7 +151,6 @@ instructions on how to connect <code>gdb</code> using the command:
gdbclient.py -p <var>PID</var>
</pre>
-
<h2 id=symbols>Debugging without symbols</h2>
<p>For 32-bit ARM, if you don’t have symbols, <code>gdb</code> can get confused
diff --git a/en/devices/tech/debug/native_stack_dump.md b/en/devices/tech/debug/native_stack_dump.md
new file mode 100644
index 00000000..6a964478
--- /dev/null
+++ b/en/devices/tech/debug/native_stack_dump.md
@@ -0,0 +1,179 @@
+Project: /_project.yaml
+Book: /_book.yaml
+
+{% include "_versions.html" %}
+
+<!--
+ Copyright 2019 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.
+-->
+
+# Dumping User and Kernel Stacks on Kernel Events
+
+Dumping the native kernel and userspace stack when a certain code path in the
+kernel is executed can help with understanding the code flow when you are debugging
+a certain behavior, such as an error you found in the logs. One such case is when
+you notice SELinux denial messages in logs but want to know which path triggered
+it to better understand why it happened.
+
+In this article we will show you how to use kernel instrumentation and BPF Compiler Collection (BCC) to
+dump both the user and kernel stack when a kernel event occurs in an Android
+system. BCC is a toolkit for creating efficient kernel tracing.
+
+## Installing adeb
+
+The [adeb](https://android.googlesource.com/platform/external/adeb)
+project installs a chroot environment on your Android device. We will use adeb in later
+steps in the articles.
+
+Install adeb using the instructions in the [adeb README](https://android.googlesource.com/platform/external/adeb/+/master/README.md).
+
+Run the following command to install adeb on your target Android device:
+<pre class="devsite-terminal devsite-click-to-copy">
+adeb prepare --full
+</pre>
+adeb comes prepackaged with BCC, so the previous step also installs BCC's `trace` utility
+we need for later steps.
+
+## Example: Understanding which path triggered an SELinux denial
+
+### Adding a tracepoint to the kernel
+The diff below adds a tracepoint at the point where an SELinux denial is logged
+in the kernel, we will need it in later parts of this article to use with BCC.
+You can apply the diff to your kernel sources to add an SELinux denial tracepoint.
+If the diff does not apply cleanly, patch it in manually using the diff as a reference.
+
+<pre class="prettyprint">
+diff --git a/include/trace/events/selinux.h b/include/trace/events/selinux.h
+new file mode 100644
+index 000000000000..dac185062634
+--- /dev/null
++++ b/include/trace/events/selinux.h
+@@ -0,0 +1,34 @@
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM selinux
++
++#if !defined(_TRACE_SELINUX_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_SELINUX_H
++
++#include &lt;linux/ktime.h&gt;
++#include &lt;linux/tracepoint.h&gt;
++
++TRACE_EVENT(selinux_denied,
++
++ TP_PROTO(int cls, int av),
++
++ TP_ARGS(cls, av),
++
++ TP_STRUCT__entry(
++ __field( int, cls )
++ __field( int, av )
++ ),
++
++ TP_fast_assign(
++ __entry->cls = cls;
++ __entry->av = av;
++ ),
++
++ TP_printk("denied %d %d",
++ __entry->cls,
++ __entry->av)
++);
++
++#endif /* _TRACE_SELINUX_H */
++
++/* This part ust be outside protection */
++#include &lt;trace/define_trace.&gt;
+diff --git a/security/selinux/avc.c b/security/selinux/avc.c
+index 84d9a2e2bbaf..ab04b7c2dd01 100644
+--- a/security/selinux/avc.c
++++ b/security/selinux/avc.c
+@@ -34,6 +34,9 @@
+ #include "avc_ss.h"
+ #include "classmap.h"
+
++#define CREATE_TRACE_POINTS
++#include &lt;trace/events/selinux.h&gt;
++
+ #define AVC_CACHE_SLOTS 512
+ #define AVC_DEF_CACHE_THRESHOLD 512
+ #define AVC_CACHE_RECLAIM 16
+@@ -713,6 +716,12 @@ static void avc_audit_pre_callback(struct audit_buffer *ab, void *a)
+ struct common_audit_data *ad = a;
+ audit_log_format(ab, "avc: %s ",
+ ad->selinux_audit_data->denied ? "denied" : "granted");
++
++ if (ad->selinux_audit_data->denied) {
++ trace_selinux_denied(ad->selinux_audit_data->tclass,
++ ad->selinux_audit_data->audited);
++ }
++
+ avc_dump_av(ab, ad->selinux_audit_data->tclass,
+ ad->selinux_audit_data->audited);
+ audit_log_format(ab, " for ");
+</pre>
+
+### Tracing the user and kernel stacks
+To trace stacks when the SELinux denial tracepoint is hit, run the following command:
+<pre class="prettyprint">
+<code class="devsite-terminal">adeb shell</code>
+<code class="devsite-terminal">trace -K -U 't:selinux:selinux_denial'</code>
+</pre>
+
+You should see something like this when denials are triggered:
+<pre class="prettyprint">
+2286 2434 Binder:2286_4 selinux_denied
+ avc_audit_pre_callback+0xd8 [kernel]
+ avc_audit_pre_callback+0xd8 [kernel]
+ common_lsm_audit+0x64 [kernel]
+ slow_avc_audit+0x74 [kernel]
+ avc_has_perm+0xb8 [kernel]
+ selinux_binder_transfer_file+0x158 [kernel]
+ security_binder_transfer_file+0x50 [kernel]
+ binder_translate_fd+0xcc [kernel]
+ binder_transaction+0x1b64 [kernel]
+ binder_ioctl+0xadc [kernel]
+ do_vfs_ioctl+0x5c8 [kernel]
+ sys_ioctl+0x88 [kernel]
+ __sys_trace_return+0x0 [kernel]
+ __ioctl+0x8 [libc.so]
+ android::IPCThreadState::talkWithDriver(bool)+0x104 [libbinder.so]
+ android::IPCThreadState::waitForResponse(android::Parcel*, int*)+0x40
+ [libbinder.so]
+ android::IPCThreadState::executeCommand(int)+0x460 [libbinder.so]
+ android::IPCThreadState::getAndExecuteCommand()+0xa0 [libbinder.so]
+ android::IPCThreadState::joinThreadPool(bool)+0x40 [libbinder.so]
+ [unknown] [libbinder.so]
+ android::Thread::_threadLoop(void*)+0x12c [libutils.so]
+ android::AndroidRuntime::javaThreadShell(void*)+0x90 [libandroid_runtime.so]
+ __pthread_start(void*)+0x28 [libc.so]
+ __start_thread+0x48 [libc.so]
+</pre>
+
+The call chain above is a unified kernel and user native call chain giving you
+a better view of the code flow starting from userspace all the way down to the kernel where
+the denial happens. In the example call chain above, a binder transaction
+initiated from userspace involved passing a file descriptor. Since the file
+descriptor did not have the needed SELinux policy settings, SELinux denied it and
+the binder transaction failed.
+
+The same tracing technique can be used for dumping the stack on system calls, kernel
+function entry, and more by changing the arguments passed to the `trace` command
+in most cases.
+
+## Additional references
+
+For more information on `trace`, see the [BCC trace tool documentation](https://android.googlesource.com/platform/external/bcc/+/master/tools/trace_example.txt).
+For more information about running BCC on Android devices, see the
+[adeb project's BCC howto](https://android.googlesource.com/platform/external/adeb/+/master/BCC.md).
diff --git a/en/devices/tech/display/color-mgmt.html b/en/devices/tech/display/color-mgmt.html
index d73f091d..a61c9b76 100644
--- a/en/devices/tech/display/color-mgmt.html
+++ b/en/devices/tech/display/color-mgmt.html
@@ -89,7 +89,7 @@ display referred space with the same white point and color primaries as sRGB
support and can be implemented in the Android EGL wrapper. To be useful, this
extension requires support for 16-bit floating point (FP16).</li>
<li>
-<a href="https://github.com/KhronosGroup/EGL-Registry/pull/10/files" class="external">EGL_KHR_gl_colorspace_display_p3
+<a href="https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt" class="external">EGL_EXT_gl_colorspace_display_p3
and EGL_EXT_gl_colorspace_display_p3_linear</a>. For applications that want
to use Display-P3 format default framebuffers to more easily achieve sRGB
rendering to display devices, this extension allows creating EGLSurfaces that
diff --git a/en/devices/tech/ota/index.html b/en/devices/tech/ota/index.html
index 946a6f4c..6c0431c8 100644
--- a/en/devices/tech/ota/index.html
+++ b/en/devices/tech/ota/index.html
@@ -25,50 +25,53 @@
<p>
Android devices in the field can receive and install over-the-air (OTA)
- updates to the system and application software. This section describes
- the structure of the update packages and the tools provided to build
- them. It is intended for developers who want to make the OTA update
- system work on new Android devices and those who are building update
- packages for use with released devices. OTA updates are designed to
- upgrade the underlying operating system and the read-only apps installed
- on the system partition; these updates do <em>not</em> affect
- applications installed by the user from Google Play.
+ updates to the system, application software, and time zone rules. This
+ section describes the structure of update packages and the tools provided
+ to build them. It is intended for developers who want to make OTA updates
+ work on new Android devices and those who want to build update packages
+ for released devices.
</p>
+ <p>OTA updates are designed to upgrade the underlying operating system, the
+ read-only apps installed on the system partition, and/or time zone rules;
+ these updates do <em>not</em> affect applications installed by the user
+ from Google Play.
+ </p>
+
+ <h2 id="ab_updates">A/B (Seamless) system updates</h2>
<p>
- The Android Open Source Project (AOSP) includes a
+ Modern Android devices have two copies of each partition (A and B) and can
+ apply an update to the currently unused partition while the system is
+ running but idle. A/B devices do not need space to download the update
+ package because they can apply the update as they read it from the
+ network; this is known as <em>streaming A/B</em>. For more information
+ about OTA updates for A/B devices, see
+ <a href="/devices/tech/ota/ab/index.html">A/B (Seamless) System
+ Updates</a>. For a sample app that provides examples on using Android
+ system update APIs (i.e., <code>update_engine</code>) to install A/B
+ updates, refer to
<a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/"
- class="external">SystemUpdaterSample</a> app that gives examples on
- how to use Android system update APIs to install OTA updates. The sample
- app is an example on how to use <code>update_engine</code> for A/B
- updates.
- For more information, see <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/README.md"
- class="external"><code>updater_sample/README.md</code></a>.
+ class="external">SystemUpdaterSample</a> (app details available in
+ <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/README.md"
+ class="external"><code>updater_sample/README.md</code></a>).
</p>
- <h2 id="ab_updates">A/B (seamless) system updates</h2>
-
+ <h2 id="nonab_updates">Non-A/B system updates</h2>
<p>
- Modern A/B devices have two copies of each partition, A and B. Devices
- apply the update to the currently unused partition while the system is
- running but idle. A/B devices do not need space to download the update
- package because they can apply the update as they read it from the
- network. This is called <em>streaming A/B</em>. A/B updates are also
- known as <em>seamless updates</em>. For more information about OTA
- updates for A/B devices, see
- <a href="/devices/tech/ota/ab/index.html">A/B (Seamless) System
- Updates
- </a>.
+ Older Android devices have a dedicated recovery partition containing the
+ software needed to unpack a downloaded update package and apply the
+ update to the other partitions. For more information, see
+ <a href="/devices/tech/ota/nonab/index.html">Non-A/B System Updates</a>.
</p>
- <h2 id="nonab_updates">Non-A/B system updates</h2>
-
+ <h2 id=time-zone-updates>Time zone rule updates</h2>
<p>
- Older devices have a special recovery partition containing the software
- needed to unpack a downloaded update package and apply the update to
- the other partitions. For more information, see
- <a href="/devices/tech/ota/nonab/index.html">Non-A/B System Updates
- </a>.
+ As of Android 8.1, OEMs can push updated time zone rules data to devices
+ without requiring a system update. This mechanism enables users to
+ receive timely updates (thus extending the useful lifetime of an Android
+ device) and OEMs to test time zone updates independently of system image
+ updates. For details, see
+ <a href="/devices/tech/config/timezone-rules">Time Zone Rules</a>.
</p>
</body>
diff --git a/en/security/_toc-best-practices.yaml b/en/security/_toc-best-practices.yaml
new file mode 100644
index 00000000..ab2d8831
--- /dev/null
+++ b/en/security/_toc-best-practices.yaml
@@ -0,0 +1,15 @@
+toc:
+- title: Overview
+ path: /security/best-practices/
+- title: Operational Security
+ path: /security/best-practices/ops
+- title: System Security
+ path: /security/best-practices/system
+- title: App Security
+ path: /security/best-practices/app
+- title: Network Security
+ path: /security/best-practices/network
+- title: Hardware Security
+ path: /security/best-practices/hardware
+- title: Privacy Security
+ path: /security/best-practices/privacy
diff --git a/en/security/_toc-bulletins.yaml b/en/security/_toc-bulletins.yaml
index fd95a0ae..4f062436 100644
--- a/en/security/_toc-bulletins.yaml
+++ b/en/security/_toc-bulletins.yaml
@@ -9,6 +9,12 @@ toc:
path: /security/advisory/2016-03-18
- title: Android Bulletins
section:
+ - title: 2019 Bulletins
+ section:
+ - title: January
+ path: /security/bulletin/2019-01-01
+ - title: Index
+ path: /security/bulletin/2019
- title: 2018 Bulletins
section:
- title: December
@@ -111,6 +117,12 @@ toc:
section:
- title: Overview
path: /security/bulletin/pixel/index
+ - title: 2019 Bulletins
+ section:
+ - title: January
+ path: /security/bulletin/pixel/2019-01-01
+ - title: Index
+ path: /security/bulletin/pixel/2019
- title: 2018 Bulletins
section:
- title: December
diff --git a/en/security/_toc-features.yaml b/en/security/_toc-features.yaml
index eb4a9087..5c93129a 100644
--- a/en/security/_toc-features.yaml
+++ b/en/security/_toc-features.yaml
@@ -41,6 +41,8 @@ toc:
section:
- title: Overview
path: /security/trusty/
+ - title: Download and Build
+ path: /security/trusty/download-and-build
- title: Trusty API Reference
path: /security/trusty/trusty-ref
- title: Encryption
@@ -53,6 +55,8 @@ toc:
path: /security/encryption/full-disk
- title: Metadata Encryption
path: /security/encryption/metadata
+ - title: Enabling Adiantum
+ path: /security/encryption/adiantum
- title: SELinux
section:
- title: Overview
diff --git a/en/security/_toc-fuzz.yaml b/en/security/_toc-fuzz.yaml
index 2e51dff5..8228d8d9 100644
--- a/en/security/_toc-fuzz.yaml
+++ b/en/security/_toc-fuzz.yaml
@@ -5,7 +5,7 @@ toc:
path: /devices/tech/debug/asan
- title: LLVM Sanitizers
path: /devices/tech/debug/sanitizers
-- title: Build kernel with KASAN+KCOV
+- title: Build Kernel with KASAN+KCOV
path: /devices/tech/debug/kasan-kcov
- title: Fuzzing with libFuzzer
path: /devices/tech/debug/libfuzzer
diff --git a/en/security/_translation.yaml b/en/security/_translation.yaml
deleted file mode 100644
index 858045e0..00000000
--- a/en/security/_translation.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-ignore_paths:
-- /security/bulletin/...
-enable_continuous_translation: true
-title: Android Open Source Project Security tab
-description: Translations for SAC Security tab
-language:
-- zh-CN
-cc:
-- daroberts@google.com
-- sac-doc-leads+translation@google.com
-reviewer:
-- daroberts
-product: Android
diff --git a/en/security/best-practices/app.html b/en/security/best-practices/app.html
new file mode 100644
index 00000000..7bd95674
--- /dev/null
+++ b/en/security/best-practices/app.html
@@ -0,0 +1,234 @@
+<html devsite>
+ <head>
+ <title>App Security Best Practices</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>This section contains recommendations to ensure the security of apps on
+ Android devices.</p>
+
+<h2 id="source-code-review">Source code review</h2>
+
+<p>Source code review can detect a broad range of security issues, including
+ those identified in this document. Android strongly encourages both manual
+ and automated source code review.</p>
+
+<ul>
+ <li>Follow comprehensive security guidance when conducting reviews to ensure
+ coverage. Utilize relevant internal or external standards to ensure
+ consistent and complete reviews.</li>
+ <li>Run a linter, such as the
+ <a href="https://developer.android.com/studio/write/lint"
+ class="external">Android Studio linter</a>, on all app code using the
+ Android SDK and correct any identified issues.</li>
+ <li>Analyze native code using an automated tool that can detect memory
+ management issues, such as buffer overflows and off-by-one errors.</li>
+ <li>The Android build system supports many of the LLVM sanitizers, such as
+ <a href="/devices/tech/debug/asan">AddressSanitizer</a> and
+ <a href="/devices/tech/debug/sanitizers#undefinedbehaviorsanitizer">UndefinedBehaviorSanitizer</a>,
+ which can be used for runtime analysis of memory-related issues. Combined
+ with fuzzing, supported in Android through
+ <a href="/devices/tech/debug/libfuzzer">libFuzzer</a>, sanitizers can
+ uncover unusual edge cases requiring further investigation.</li>
+ <li>A knowledgeable security assessor should review higher risk code, such as
+ crypto, payment processing, and PII processing.</li>
+</ul>
+
+<h2 id="automated-testing">Automated testing</h2>
+
+<p>Automated testing can help detect a broad range of security issues and
+ should be performed regularly.</p>
+
+<ul>
+ <li>Run the latest version of <a href="/compatibility/cts/">CTS</a> regularly
+ throughout the development process to detect problems early and reduce time
+ to correction. Android uses CTS as part of continuous integration in our
+ automated build process, which builds multiple times per day.</li>
+ <li>Automate security testing of interfaces, including testing with malformed
+ inputs (fuzz testing). Android's build system supports
+ <a href="/devices/tech/debug/libfuzzer">libFuzzer</a> for writing fuzz
+ tests.</li>
+</ul>
+
+<h2 id="vulnerability-scanning">Vulnerability scanning</h2>
+
+<p>Vulnerability scanning can help ensure that pre-installed apps are free of
+ known security vulnerabilities. Advanced detection can reduce the time and
+ cost required with addressing these vulnerabilities and preventing risk to
+ users and devices.</p>
+
+<ul>
+ <li>Scan all pre-installed apps using an industry-recognized app
+ vulnerability scanning tool and address detected vulnerabilities.</li>
+</ul>
+
+
+<h2 id="phas">Potentially Harmful Applications</h2>
+
+<p>It is important to ensure that no pre-installed apps on your device are
+ accidental
+ <a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">Potentially
+ Harmful Applications</a> (PHAs). You are responsible for the behavior of
+ all apps that are included on your devices.</p>
+
+<h3 id="hostile-downloaders">Hostile downloaders</h3>
+
+<p>Hostile downloaders are apps that are not directly considered harmful but
+ instead download other potentially harmful apps.</p>
+
+<ul>
+ <li>Ensure there is user disclosure for all pre-installed apps that use the
+ <code>INSTALL_PACKAGES</code> permission.</li>
+ <li>Ensure that the developer is contractually obligated not to install any
+ apps as UID 0.</li>
+ <li>Evaluate permissions declared in the manifest of all apps to
+ be installed through the developer's network.</li>
+ <li>Ensure that the developer is contractually obligated to scan all download
+ URLs of auto-updater and installer apps with
+ <a href="https://developers.google.com/safe-browsing/"
+ class="external">Google Safe Browsing API</a> before serving apps to
+ the device.</li>
+ <li>Starting with Android 9, require all developers to use
+ <code>UPDATE_PACKAGES</code> permission instead of the
+ <code>INSTALL_PACKAGES</code> permission. When combined with
+ <code>INSTALL_SELF_UPDATES</code>, using <code>UPDATE_PACKAGES</code>
+ allows privileged apps to be granted finely scoped install privileges based
+ on their intended usage instead of the more broad
+ <code>INSTALL_PACKAGES</code> permission.</li>
+</ul>
+
+
+<h3 id="cryptomining">Cryptomining</h3>
+
+<p>Cryptomining apps are those that attempt to leverage a device's hardware or
+ cloud-based computing to generate currency in the form of "coins", typically
+ by way of blockchain technology. If you intend to offer this service as an
+ alternate form of currency or in exchange for services, ensure you request
+ the user's permission before leveraging the device's hardware to run this
+ service, including explicit consent that this will impact battery runtime.</p>
+
+<h3 id="imposter-apps">Impostor apps</h3>
+
+<p>Impostor apps are defined as ones that attempt to disguise themselves as a
+ well known app, such as YouTube or Facebook.</p>
+
+<ul>
+ <li>Prior to device launch, scan all pre-loaded apps for vulnerabilities.</li>
+</ul>
+
+
+<h2 id="app-permissions">App permissions</h2>
+
+<p>Excessive permissions for pre-installed apps can create a security
+ risk. Restrict pre-installed apps to the minimum necessary permissions and
+ ensure they don't have access to unnecessary permissions or privileges.</p>
+
+<ul>
+ <li>Do not grant unnecessary permissions or privileges to pre-installed apps.
+ Thoroughly review apps with system privileges as they may have very
+ sensitive permissions.</li>
+ <li>Ensure that all permissions requested are relevant and necessary for the
+ functionality of that specific app.</li>
+</ul>
+
+
+<h2 id="app-signing">App signing</h2>
+
+<p>App signatures play an important role in device security and are used for
+ permissions checks and software updates. When selecting a key to use for
+ signing apps, it is important to consider whether an app will be available
+ only on a single device or common across multiple devices.</p>
+
+<ul>
+ <li>Ensure that apps are not signed with a key that is publicly known, such
+ as the AOSP developer key.</li>
+ <li>Ensure that keys used to sign apps are managed in a manner consistent
+ with industry-standard practices for handling sensitive keys, including an
+ hardware security module (HSM) that provides limited, auditable access.</li>
+ <li>Ensure that apps are not signed with the platform key. Doing so gives an
+ app access to platform signature permissions, which are very powerful and
+ only intended to be used by components of the operating system. System apps
+ should use privileged permissions.</li>
+ <li>Ensure that apps with the same package name are not signed with different
+ keys. This often occurs when creating an app for different devices,
+ especially when using the platform key. If the app is device-independent,
+ use the same key across devices. If the app is device-specific, create
+ unique package names per device and key.</li>
+</ul>
+
+<h2 id="isolating-apps-and-processes">Isolating apps and processes</h2>
+
+ <p>The Android <a href="/security/app-sandbox">sandboxing model</a>
+ provides extra security around apps and processes when used correctly.</p>
+
+<h3 id="isolating-root-processes">Isolating root processes</h3>
+
+<p>Root processes are the most frequent target of privilege escalation attacks;
+ reducing the number of root processes reduces risk of privilege escalation.</p>
+
+<ul>
+ <li>Ensure that devices run the minimum necessary code as root. Where
+ possible, use a regular Android process rather than a root process. If a
+ process must run as root on a device, document the process in an AOSP
+ feature request so it can be publicly reviewed.</li>
+ <li>Where possible, root code should be isolated from untrusted data and
+ accessed via interprocess communication (IPC). For example, reduce root
+ functionality to a small Service accessible via Binder and expose the
+ Service with signature permission to an app with low or no privileges to
+ handle network traffic.</li>
+ <li>Root processes must not listen on a network socket.</li>
+ <li>Root processes must not include a general-purpose runtime, such as a Java
+ VM).</li>
+</ul>
+
+<h3 id="isolating-system-apps">Isolating system apps</h3>
+
+<p>In general, pre-installed apps should not run with the shared system unique
+ identifier (UID). If it is necessary for an app to use the shared UID of
+ system or another privileged service (e.g., phone), the app should not export
+ any services, broadcast receivers, or content providers that can be accessed
+ by third-party apps installed by users.</p>
+
+<ul>
+ <li>Ensure devices run the minimum necessary code as system. Where possible,
+ use an Android process with its own UID rather than reusing the system UID.</li>
+ <li>Where possible, system code should be isolated from untrusted data and
+ expose IPC only to other trusted processes.</li>
+ <li>System processes must not listen on a network socket. This is a CTS
+ requirement.</li>
+</ul>
+
+<h3 id="isolating-processes">Isolating processes</h3>
+
+<p>The Android Application Sandbox provides apps with an expectation of
+ isolation from other processes on the system, including root processes and
+ debuggers. Unless debugging is specifically enabled by the app and the user,
+ no app should violate that expectation.</p>
+
+<ul>
+ <li>Ensure root processes do not access data within individual app data
+ folders, unless using a documented Android debugging method.</li>
+ <li>Ensure root processes do not access memory of apps, unless using a
+ documented Android debugging method.</li>
+ <li>Ensure devices do not include any app that accesses data or memory of
+ other apps or processes.</li>
+</ul>
+ </body>
+</html>
diff --git a/en/security/best-practices/hardware.html b/en/security/best-practices/hardware.html
new file mode 100644
index 00000000..0197f7a4
--- /dev/null
+++ b/en/security/best-practices/hardware.html
@@ -0,0 +1,62 @@
+<html devsite>
+ <head>
+ <title>Hardware Security Best Practices</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 id="hardware-security">This page contains recommendations to ensure
+ that the hardware present on Android devices contributes to raising the
+ overall security of the device instead of compromising the security of
+ the device.</p>
+
+<h2 id="device-memory">Device memory</h2>
+
+<p>It is important to understand the potential security tradeoffs when
+ selecting memory for Android devices. For example, certain types of memory
+ may enable the execution of
+ <a href="https://en.wikipedia.org/wiki/Row_hammer"
+ class="external">Rowhammer</a> style attacks.</p>
+
+<ul>
+ <li>Android devices should use memory that contains mitigations against
+ Rowhammer style attacks. Device manufacturers should work closely with
+ their memory manufacturers for additional details.</li>
+</ul>
+
+<h2 id="strongbox-keymaster">StrongBox Keymaster</h2>
+
+<p>It is important to securely store and handle cryptographic keys that are
+ available on the device. This is typically done on Android devices by
+ utilizing a hardware-backed Keymaster implemented in an isolated environment,
+ such as the Trusted Execution Environment (TEE). It is further recommended to
+ also support a
+ <a href="https://developer.android.com/preview/features/security#hardware-security-module"
+ class="external">StrongBox Keymaster</a>, which is implemented in
+ tamper-resistant hardware.</p>
+
+<ul>
+ <li>Ensure that the StrongBox Keymaster is running in an environment that
+ has a discrete CPU, secure storage, a high quality true random number
+ generator, tamper resistant packaging, and side channel resistance to meet
+ the requirements to qualify as a StrongBox Keymaster. See the Android 9
+ CDD, section 9.11.2 for more information on the requirements.</li>
+</ul>
+ </body>
+</html>
diff --git a/en/security/best-practices/index.html b/en/security/best-practices/index.html
new file mode 100644
index 00000000..3d91bb13
--- /dev/null
+++ b/en/security/best-practices/index.html
@@ -0,0 +1,52 @@
+<html devsite>
+ <head>
+ <title>Android Security Best Practices</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 topic contains best practices for device manufacturers to ship secure
+ devices to all Android users. The collected best practices cover:
+</p>
+
+<ul>
+ <li><strong>Organizational and operational security</strong>—Creating strong
+ security practices in your team and organization.</li>
+ <li><strong>System security</strong>—Reviewing and improving core operating
+ system and device security.</li>
+ <li><strong>Application security</strong>—Reviewing and improving the
+ security of apps on the device.</li>
+ <li><strong>Network security</strong>—Reviewing and improving the security
+ of network communications from the device.</li>
+ <li><strong>Hardware security</strong>—Reviewing hardware choices to improve
+ device security.</li>
+ <li><strong>Privacy</strong>—Enabling user control over the handling of
+ their data.</li>
+</ul>
+
+<p>
+ Many recommendations in this section are also detailed in the
+ <a href="/compatibility/cdd">Android Compatibility Definition Document</a>
+ (CDD). In many instances, these recommendations are detected through tools,
+ such as the <a href="/compatibility/cts/">Android Compatibility Test Suite</a>
+ (CTS).</p>
+
+ </body>
+</html>
diff --git a/en/security/best-practices/network.html b/en/security/best-practices/network.html
new file mode 100644
index 00000000..dd12de87
--- /dev/null
+++ b/en/security/best-practices/network.html
@@ -0,0 +1,75 @@
+<html devsite>
+ <head>
+ <title>Network Security Best Practices</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>This section contains recommendations to ensure the security of network
+ communications from Android devices.</p>
+
+<h2 id="securing-listening-sockets">Securing listening sockets</h2>
+
+<p>Use listening sockets with caution. There should generally
+ not be any open listening sockets on devices as these provide a vector for a
+ remote attacker to gain access to the device.</p>
+
+<ul>
+ <li>Android devices should minimize the number of internet listening sockets
+ they expose, especially on boot or by default. No socket should be
+ listening on the internet at boot by default.
+ <ul>
+ <li>Root processes and processes owned by the system unique identifier
+ (UID) shouldn't expose any listening sockets.</li>
+ </ul>
+ </li>
+ <li>Listening sockets must be able to be disabled without an OTA update. This
+ can be performed using either a server or user-device configuration change.</li>
+ <li>For local IPC-using sockets, apps must use a UNIX domain socket with
+ access limited to a group. Create a file descriptor for the IPC and make it
+ +RW for a specific UNIX group. Any client apps must be within that UNIX
+ group.</li>
+ <li>Some devices with multiple processors (for example, a radio/modem separate
+ from the app processor) use network sockets to communicate between
+ processors. In such instances, the network socket used for inter-processor
+ communication must use an isolated network interface to prevent access by
+ unauthorized apps on the device (i.e. use iptables to prevent access by
+ other apps on the device).</li>
+ <li>Daemons that handle listening ports must be robust against malformed
+ data. You should conduct fuzz-testing against the port using an
+ unauthorized client, and, where possible, authorized client. File bugs to
+ follow up on crashes.</li>
+</ul>
+
+ <p>The <a href="/compatibility/tests/">Android Compatibility Test Suite</a>
+ (CTS) includes tests that check for the presence of open listening ports.</p>
+
+<h3 id="disable-adb">Disable ADB</h3>
+
+<p>Android Debug Bridge (ADB) is a valuable development and debugging tool, but
+ is designed for use in a controlled, secure environment and should not be
+ enabled for general use.</p>
+
+<ul>
+ <li>Ensure that ADB is disabled by default.</li>
+ <li>Ensure that ADB requires the user to turn it on before accepting
+ connections.</li>
+</ul>
+</body>
+</html>
diff --git a/en/security/best-practices/ops.html b/en/security/best-practices/ops.html
new file mode 100644
index 00000000..e119e133
--- /dev/null
+++ b/en/security/best-practices/ops.html
@@ -0,0 +1,166 @@
+<html devsite>
+ <head>
+ <title>Organizational and Operational Security</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>The foundation of good security practices start in your organization.</p>
+
+
+<h3 id="create-a-team">Create a security and privacy team</h3>
+
+<p>Create a dedicated security and privacy team and establish a leader for this
+organization.</p>
+
+<ul>
+ <li><strong>Build a security team.</strong>
+ <ul>
+ <li>Ensure at least one employee is responsible for security, privacy, and
+ incident response.</li>
+ <li>Define a mission and scope for this team.</li>
+ <li>Develop an org chart and job descriptions for: Security Manager,
+ Security Engineer, Incident Manager.</li>
+ <li>Hire employees or external contractors to fill these roles.</li>
+ </ul>
+ </li>
+ <li><strong>Define a security development lifecycle (SDL)</strong>. Your SDL
+ should cover these areas:
+ <ul>
+ <li>Security requirements for products.</li>
+ <li>Risk analysis and threat modeling.</li>
+ <li><a href="/devices/tech/debug/fuzz-sanitize">Static and dynamic
+ analysis</a> of applications and code.</li>
+ <li>Final security review processes for products.</li>
+ <li>Incident response.</li>
+ </ul>
+ </li>
+ <li><strong>Assess organizational risk</strong>. Create a risk assessment and
+ develop plans to eliminate or mitigate those risks.</li>
+</ul>
+
+<h3 id="build-verification">Build verification process</h3>
+
+<p>Evaluate gaps in your existing internal build verification and approval
+processes.</p>
+
+<ul>
+ <li>Identify any gaps in your current build verification process that could
+ lead to the introduction of a
+ <a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">Potentially
+ Harmful Application</a> (PHA) into your build.</li>
+ <li>Ensure you have a code review and approval process, even for in-house
+ patches to <a href="https://android.googlesource.com/"
+ class="external">AOSP</a>.</li>
+ <li>Improve build integrity by implementing controls in these areas:
+ <ul>
+ <li><strong>Track changes</strong>. Track software engineers; keep
+ change logs.</li>
+ <li><strong>Assess risk</strong>. Assess permissions used by an app;
+ require manual review of code changes.</li>
+ <li><strong>Monitor</strong>. Evaluate changes made to privileged code.</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="source-code-change-tracking">Source code change tracking</h3>
+
+<p>Monitor for unintentional modifications of source code or third-party
+apps&hairsp;/&hairsp;binaries&hairsp;/&hairsp;SDKs.</p>
+
+<ul>
+ <li><strong>Assess partnerships</strong>. Assess the risk of working with a
+ technical partner using the following steps:
+
+ <ul>
+ <li>Establish criteria for how to assess the risk of working with a
+ specific supplier.</li>
+ <li>Create a form that asks the supplier how they resolve incidents and
+ manage security and privacy.</li>
+ <li>Verify their claims with a periodic audit.</li>
+ </ul>
+ </li>
+ <li><strong>Track changes</strong>. Record which companies and employees
+ modify source code and conduct periodic audits to ensure only appropriate
+ changes take place.</li>
+ <li><strong>Keep records</strong>. Record which companies add third-party
+ binaries to your build and document what function those apps perform and
+ what data they collect.</li>
+ <li><strong>Plan updates</strong>. Ensure that your suppliers are required to
+ provide software updates for the full life of your product. Unforeseen
+ vulnerabilities may require support from vendors to address.</li>
+</ul>
+
+<h3 id="validate-source-code">Validate source code integrity and pedigree</h3>
+
+<p>Inspect and validate source code supplied by an original device manufacturer
+(ODM), Over-the-air update (OTA), or carrier.</p>
+
+<ul>
+ <li><strong>Manage signing certificates</strong>.
+ <ul>
+ <li>Store keys in a hardware security module (HSM) or secure cloud service
+ (don't share them).</li>
+ <li>Ensure access to signing certificates is controlled and audited.</li>
+ <li>Require all code signing be done in your build system.</li>
+ <li>Revoke lost keys.</li>
+ <li>Generate keys using best practices.</li>
+ </ul>
+ </li>
+ <li><strong>Analyze new code</strong>. Test newly added code with security
+ code analysis tools to check for the introduction of new vulnerabilities.
+ In addition, analyze overall functionality to detect expression of new
+ vulnerabilities.</li>
+ <li><strong>Review before publishing</strong>. Look for security
+ vulnerabilities in source code and third-party apps before you push them
+ into production. For example:
+ <ul>
+ <li>Require apps to use secure communication.</li>
+ <li>Follow the principle of least privilege and grant the minimum set of
+ permissions needed for the app to operate.</li>
+ <li>Ensure data is stored and transferred over secure channels.</li>
+ <li>Keep service dependencies up-to-date.</li>
+ <li>Apply security patches to SDKs and open source libraries.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="incident-response">Incident response</h2>
+
+<p>Android believes in the power of a strong security community to help find
+issues. You should create and publicize a way for external parties to contact
+you about device-specific security issues.</p>
+
+<ul>
+ <li><strong>Establish contact</strong>. Create an email address, such as
+ security@<var>your-company</var>.com or a website with clear instructions
+ for reporting potential security issues associated with your product
+ (<a href="https://security.samsungmobile.com/securityReporting.smsb"
+ class="external">example</a>).</li>
+ <li><strong>Contribute changes upstream</strong>. If you become aware of a
+ security issue affecting the Android platform or devices from multiple
+ device manufacturers, contact the Android Security Team by filing a <a
+ href="g.co/AndroidSecurityReport" class="external">security bug report</a>.
+ </li>
+ <li><strong>Promote good security practices</strong>. Proactively assess the
+ security practices of hardware and software vendors who provide services,
+ components, and/or code for your devices. Hold vendors accountable for
+ maintaining a good security posture.</li>
+</ul>
+ </body>
+</html>
diff --git a/en/security/best-practices/privacy.html b/en/security/best-practices/privacy.html
new file mode 100644
index 00000000..69c217d4
--- /dev/null
+++ b/en/security/best-practices/privacy.html
@@ -0,0 +1,96 @@
+<html devsite>
+ <head>
+ <title>Privacy Security Best Practices</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>This page contains a collection of data collection guidance
+ and recommendations to ensure that Android users have control over the
+ handling of their data.</p>
+
+<h2 id="logging-data">Logging data</h2>
+
+<p>Logging data increases the risk of exposure of that data and reduces system
+ performance. Multiple public security incidents have occurred as a result of
+ logging sensitive user data.</p>
+
+<ul>
+ <li>Do not log to the sdcard.</li>
+ <li>Apps or system services should not log data provided from third-party
+ apps that might include sensitive information.</li>
+ <li>Apps must not log any Personally Identifiable Information (PII) as
+ part of normal operation, unless it's absolutely necessary to provide the
+ core functionality of the app.</li>
+</ul>
+
+<p>CTS includes tests that check for the presence of potentially sensitive
+ information in logs.</p>
+
+<h2 id="metrics-collection">Metrics collection</h2>
+
+<p>Collecting metrics can be an essential part of understanding usage of your
+ app and making improvements for the overall user experience. However, overly
+ broad metrics collection can also present a risk to user privacy.</p>
+
+<ul>
+ <li>If at all possible, don't collect metrics.
+ <ul>
+ <li>If you must collect metrics, first request explicit, informed,
+ and meaningful user consent.</li>
+ </ul>
+ </li>
+ <li>With few exceptions, only collect metrics that are necessary to support
+ the reliability of the service.</li>
+ <li>Avoid collecting identifiable or potentially sensitive data whenever
+ possible, such as
+ <a href="https://developer.android.com/training/articles/user-data-ids"
+ class="external">hardware identifiers</a>.</li>
+ <li>Ensure data is sufficiently aggregated and anonymized whenever possible.</li>
+</ul>
+
+<h2 id="spyware">Spyware</h2>
+
+<p>Spyware is defined as software that aims to gather information about a user
+ or device without their knowledge, that may send user information to another
+ entity without consent.</p>
+
+<ul>
+ <li>Transmission of the following user or device data without disclosure or
+ in a manner that is unexpected to the user is considered spyware (this
+ list contains top examples, but is not an exhaustive list):
+ <ul>
+ <li>Information about the user's contacts (names, numbers, emails)</li>
+ <li>Photos or other files</li>
+ <li>Content from user email</li>
+ <li>Call log</li>
+ <li>SMS log</li>
+ <li>Web history</li>
+ <li>Browser bookmarks</li>
+ <li>Private information from other apps (private <code>/data/</code>
+ directories)</li>
+ <li>Audio or call recording</li>
+ <li>Passwords</li>
+ <li>OAuth tokens</li>
+ <li>Location</li>
+ </ul>
+ <li>Ensure that all apps provide a reasonable explanation disclosure to
+ the user prior to installation.</li>
+</ul>
+</body>
+</html>
diff --git a/en/security/best-practices/system.html b/en/security/best-practices/system.html
new file mode 100644
index 00000000..7431950e
--- /dev/null
+++ b/en/security/best-practices/system.html
@@ -0,0 +1,332 @@
+<html devsite>
+ <head>
+ <title>System Security Best Practices</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>This section contains recommendations for ensuring the security of the core
+ Android operating system and devices.</p>
+
+<h2 id="biometric-authentication">Biometric authentication</h2>
+
+<p>Acquire, store, and process <a href="/security/biometric">biometric data</a>
+ for user authentication carefully. You should:
+</p>
+
+<ul>
+ <li>Mandate the primary authentication method before using any other form of
+ authentication (including biometrics).</li>
+ <li>Require an explicit confirmation to indicate intent when using passive
+ biometric modalities, such as facial recognition, for transactions (for
+ example, payments) that involve authentication-bound keys.</li>
+ <li>Require the primary authentication method every 72 hours.</li>
+ <li>Use a fully secure pipeline for all biometric data and handling.</li>
+ <li>Never send biometric data (including raw sensor measurements and derived
+ features) off-device. If possible, keep this data in a secure isolated
+ environment, such as the <a href="/security/trusty">Trusted Execution
+ Environment (TEE)</a> or Secure Element.</li>
+</ul>
+
+<p>Devices with biometrics should support the
+ <a href="https://developer.android.com/preview/features/security#fingerprint-auth"
+ class="external">BiometricPrompt API</a>, which offers a common and
+ consistent interface for app developers to take advantage of biometrics-based
+ authentication in their apps. Only
+ <a href="/security/biometric/#strong-weak-unlocks" class="external">strong
+ biometrics</a> can integrate with <code>BiometricPrompt</code> and
+ integrations must follow <a href="/compatibility/cdd">Android Compatibility
+ Definition Document</a> (CDD) guidelines.</p>
+
+<p>For more biometric guidelines, see
+<a href="/security/biometric#hal-implementation">Biometric HAL implementation
+ guidelines</a>.</p>
+
+<h2 id="selinux">SELinux</h2>
+
+<p>SELinux provides the definition and enforcement of much of Android's
+ security model. Correctly using SELinux is critical to the security of
+ Android devices and can help mitigate the impact of security vulnerabilities.
+ All Android devices should implement a
+ <a href="/security/selinux/device-policy#granting_the_dac_override_capability">robust
+ SELinux policy</a> for this reason.</p>
+
+<ul>
+ <li>Implement a least privilege policy.</li>
+ <li>Avoid granting <code>CAP_DAC_OVERRIDE</code>, <code>CAP_SYS_ADMIN</code>,
+ and <code>CAP_NET_ADMIN</code> permissions.</li>
+ <li>Don't log system data to the SD card.</li>
+ <li>Use provided types for driver access, such as <code>gpu_device</code>,
+ <code>audio_device</code>, etc.</li>
+ <li>Use meaningful names for processes, files, and SELinux types.
+ <ul>
+ <li>Ensure default labels are not used and access is not granted to them.</li>
+ </ul>
+ </li>
+ <li>Device-specific policy should account for 5–10% of the overall policy
+ running on a device. Customizations in the 20%+ range almost certainly
+ contain over-privileged domains and dead policy. Unnecessarily large policy
+ wastes memory, wastes disk space by necessitating a larger boot image,
+ and negatively affects runtime policy lookup times.
+ </li>
+</ul>
+
+<h3 id="dynamic-loading-selinux-policy">Dynamic loading of SELinux policy</h3>
+
+<p>Do not dynamically load SELinux policy on Android devices. Doing so can
+ result in issues, such as:</p>
+
+<ul>
+ <li>Preventing the acceptance of critical security patches.</li>
+ <li>Exposing the ability to root a device through reloading of policies.</li>
+ <li>Exposing a vector for man-in-the-middle attacks against the policy
+ updater.</li>
+ <li>Resulting in bricked devices due to errors with policy updates.</li>
+</ul>
+
+<h2 id="backdoors">Backdoors</h2>
+
+<p>Android apps should not have any backdoors or ways to access the system or
+ data that bypass normal security mechanisms. This includes diagnostics,
+ debugging, development, or warranty repair special access gated by secrets
+ known to the developer. To prevent backdoors:</p>
+
+<ul>
+ <li>Scan all third-party apps using an industry-recognized app vulnerability
+ scanning tool.</li>
+ <li>Perform code reviews of all code with sensitive access, including
+ third-party libraries.</li>
+ <li>Utilize Google Play Protect by uploading apps to Google Play for
+ scanning. You can upload apps for scanning without publishing to Google
+ Play.</li>
+ <li>Do not preload diagnostics- or repair-focused tools on release
+ builds. Only install these tools on-demand to solve specific issues.
+ Additionally, these tools must not operate upon or upload any
+ account-specific data.</li>
+</ul>
+
+<h2 id="development-tools">Development tools</h2>
+
+<p>Development tools, such as debugging, testing, and diagnostic tools, can
+ often create unintended security gaps on your device by revealing how they
+ operate and the data that they collect. To make sure that development tools
+ don't make it into production builds:</p>
+
+<ul>
+ <li>Develop a blacklist of in-house debug and testing tool hashes and scan
+ builds for these APKs prior to using the system image.</li>
+ <li>Scan all first-party apps using an industry-recognized app vulnerability
+ scanning tool.</li>
+ <li>Hire a third-party app security testing firm to evaluate all critical
+ on-device diagnostic apps before any major update, especially if the app is
+ developed by a third party.</li>
+ <li>Ensure that only the user can enable the tool, either verbally or over
+ chat, during a support session. Store artifacts of consent and disable the
+ tool after collecting the necessary diagnostic information.</li>
+ <li>Store this tool's record of use in a log accessible by the user in their
+ carrier account.</li>
+ <li>Ensure that any personally identifiable information (PII) or device
+ telemetry data collected by the tool is subject to anonymization, retention
+ and deletion practices relevant to the country. Only data relevant for the
+ support call should be collected. This data should be deleted after each
+ call.</li>
+ <li>Ensure that techniques that can be used for spyware, such as keystroke
+ logging, microphone usage, or camera usage, are not used without explicit
+ user consent. Apps utilizing these potentially privacy-invasive methods
+ should be very clearly disclosed along with a privacy policy that the user
+ must consent to. Apps like this should not be enabled without explicit
+ consent by the user.</li>
+</ul>
+
+<p>Here are some additional suggestions to refer to when implementing
+ disclosure and consent:</p>
+
+<h3 id="in-app-disclosure">In-app disclosure</h3>
+
+<ul>
+ <li>Display the normal usage of the app directly in-app. Do not require the
+ user to navigate into a menu or settings.</li>
+ <li>Describe the type of data being collected and explain how the data will
+ be used.</li>
+ <li>Ideally do not embed this information in a privacy policy or terms of
+ service. Do not include it with other disclosures unrelated to personal or
+ sensitive data collection.</li>
+</ul>
+
+<h3 id="request-consent">Request for consent</h3>
+
+<ul>
+ <li>Consent must be affirmative. Don't consider navigation away from the
+ disclosure, including tapping away or pressing the back or home button,
+ as consent.</li>
+ <li>Present the consent dialog in a clear and unambiguous way.</li>
+ <li>Require affirmative user action, such as tap to accept or speak a
+ command, to accept.</li>
+ <li>Don't collect personal or sensitive data before obtaining
+ affirmative consent.</li>
+ <li>Don't use auto-dismissing or expiring messages.</li>
+</ul>
+
+<h2 id="embedded-functionality-in-aosp">Embedded functionality in AOSP</h2>
+
+<p>Embedding additional functionality in AOSP can often have unexpected
+ behavior and consequences; proceed with caution.</p>
+
+<ul>
+ <li>Ensure that the user is prompted if they want to use different default
+ apps (for example, search engine, web browser, launcher) and disclose
+ sending data off device.</li>
+ <li>Ensure that AOSP APKs are signed with the AOSP certificate.</li>
+ <li>Run regression tests and keep a change-log to determine whether the AOSP
+ APKs have had code added.</li>
+</ul>
+
+<h2 id="security-updates">Security updates</h2>
+
+<p>Android devices should receive ongoing security support for at least two
+ years from launch. This includes receiving regular updates that address
+ known security vulnerabilities.</p>
+
+<ul>
+ <li>Work with hardware partners, such as your SoC vendors, to put
+ appropriate support agreements in place for all components on your
+ Android device.</li>
+ <li>Ensure that security updates can be installed with minimal user
+ interaction to increase the likelihood of users accepting and installing
+ updates on their Android device. Implementing
+ <a href="/devices/tech/ota/ab/">Seamless System Updates</a> or an
+ equivalent security feature is strongly recommended.</li>
+ <li>Ensure that you understand the cumulative requirement of the Android
+ Security Patch Level (SPL) as declared in the
+ <a href="/security/bulletin/">Android Security Bulletin</a>. For example,
+ devices that use the 2018-02-01 security patch level must include all
+ issues associated with that security patch level, as well as fixes for
+ all issues reported in all previous security bulletins.</li>
+</ul>
+
+<h3 id="dynamic-kernel-updates">Dynamic kernel updates</h3>
+
+<p>Do not dynamically modify critical system components. While there is some
+ research to suggest that dynamic kernel updates help protect against
+ emergency threats, the assessed cost currently outweighs the benefits.
+ Instead, create a robust OTA update method to quickly distribute
+ vulnerability protections.</p>
+
+<h2 id="key-management">Key management</h2>
+
+<p>Maintain good key management policies and practices to ensure the security
+ of signing keys.</p>
+
+<ul>
+ <li>Do not share signing keys with external parties.</li>
+ <li>If a signing key is compromised, generate a new key and double sign all
+ apps going forward.</li>
+ <li>Store all keys in high-security module hardware or services requiring
+ multiple factors to access.</li>
+</ul>
+
+<h2 id="system-image-signing">System image signing</h2>
+
+<p>The signature of the system image is critical to determine device integrity.</p>
+
+<ul>
+ <li>Do not sign devices with a publicly known key.</li>
+ <li>Manage device-signing keys in a manner consistent with industry-standard
+ practices for handling sensitive keys, including a hardware security module
+ (HSM) that provides limited, auditable access.</li>
+</ul>
+
+<h2 id="unlockable-bootloaders">Unlockable bootloaders</h2>
+
+<p>Many Android devices support unlocking, enabling the device owner to modify
+ the system partition or install a custom operating system. Common use
+ cases include installing a third-party system image and performing
+ systems-level development on the device. For example, to unlock the system
+ image on a Google Nexus or Pixel, a user can run <code>fastboot oem
+ unlock</code>, which displays this message:</p>
+
+<aside class="caution">
+ <p><strong>Unlock bootloader?</strong></p>
+
+ <p>If you unlock the bootloader, you will be able to install custom
+ operating system software on this phone.</p>
+
+ <p>A custom OS is not subject to the same testing as the original OS, and
+ can cause your phone and installed apps to stop working properly.</p>
+
+ <p>To prevent unauthorized access to your personal data, unlocking the
+ bootloader will also delete all personal data from your phone (a "factory
+ data reset").</p>
+
+ <p>Press the Volume Up/Down buttons to select Yes or No. Then press the
+ Power button to continue.</p>
+
+ <p><strong>Yes:</strong> Unlock bootloader (may void warranty)</p>
+
+ <p><strong>No</strong>: Do not unlock bootloader and restart phone.</p>
+</aside>
+
+<p>As a best practice, unlockable Android devices must securely erase all user
+ data prior to being unlocked. Failure to properly delete all data on
+ unlocking may allow a physically proximate attacker to gain unauthorized
+ access to confidential Android user data. To prevent the disclosure of user
+ data, a device that supports unlocking must implement it properly.</p>
+
+<ul>
+ <li>After the user confirms the unlocking command, the device must start an
+ immediate data wipe. The <code>unlocked</code> flag must not be set until
+ after the secure deletion is complete.</li>
+ <li>If a secure deletion can't be completed, the device must stay in a locked
+ state.</li>
+ <li>If supported by the underlying block device,
+ <code>ioctl(BLKSECDISCARD)</code>or equivalent should be used. For
+ embedded MultiMediaCard (eMMC) devices, this means using a Secure Erase or
+ Secure Trim command. For eMMC 4.5 and later, this means using a normal Erase
+ or Trim followed by a Sanitize operation.</li>
+ <li>If <code>BLKSECDISCARD</code> is not supported by the underlying block
+ device, <code>ioctl(BLKDISCARD)</code> must be used instead. On eMMC
+ devices, this is a normal Trim operation.</li>
+ <li>If <code>BLKDISCARD</code> is not supported, overwriting the block
+ devices with all zeros is acceptable.</li>
+ <li>A user must have the option to require that user data be wiped
+ beofre flashing a partition. For example, Nexus devices use the
+ <code>fastboot oem lock</code> command to wipe user data.</li>
+ <li>A device may record, via eFuses or similar mechanism, whether a device
+ was unlocked and/or relocked. However, we strongly recommend that relocking
+ the bootloader with subsequent factory reset should restore full device
+ functionality.</li>
+</ul>
+
+<p>These requirements ensure that all data is destroyed upon the completion of
+ an unlock operation. Failure to implement these protections is considered a
+ <a href="/security/overview/updates-resources#severity">moderate level
+ security vulnerability</a>.</p>
+
+<p>A device that is unlocked may be subsequently relocked using the
+ <code>fastboot oem lock</code> command. Locking the bootloader provides the
+ same protection of user data with the new custom OS as was available with the
+ original device manufacturer OS (e.g. user data will be wiped if the device
+ is unlocked again).</p>
+
+<h2 id="device-pentesting">Device pentesting</h2>
+
+<p>Devices should be reviewed by a competent pentester prior to shipment.
+ Pentesting should establish that the device followed security guidance
+ provided here as well as internal OEM security guidance.</p>
+</body>
+</html>
diff --git a/en/security/bulletin/2015.html b/en/security/bulletin/2015.html
index 380764f3..63cb9533 100644
--- a/en/security/bulletin/2015.html
+++ b/en/security/bulletin/2015.html
@@ -45,8 +45,8 @@ please see the <a href="index.html">Android Security Bulletins</a> homepage.</p>
<a href="/security/bulletin/2015-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 7, 2015</td>
<td>2015-12-01</td>
@@ -58,8 +58,8 @@ please see the <a href="index.html">Android Security Bulletins</a> homepage.</p>
<a href="/security/bulletin/2015-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 2, 2015</td>
<td>2015-11-01</td>
@@ -71,8 +71,8 @@ please see the <a href="index.html">Android Security Bulletins</a> homepage.</p>
<a href="/security/bulletin/2015-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 5, 2015</td>
<td>2015-10-01</td>
@@ -84,8 +84,8 @@ please see the <a href="index.html">Android Security Bulletins</a> homepage.</p>
<a href="/security/bulletin/2015-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 9, 2015</td>
<td>N/A</td>
@@ -97,8 +97,8 @@ please see the <a href="index.html">Android Security Bulletins</a> homepage.</p>
<a href="/security/bulletin/2015-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 13, 2015</td>
<td>N/A</td>
diff --git a/en/security/bulletin/2016.html b/en/security/bulletin/2016.html
index 6f8782f2..9f1624fb 100644
--- a/en/security/bulletin/2016.html
+++ b/en/security/bulletin/2016.html
@@ -43,8 +43,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 5, 2016</td>
<td>2016-12-01<br>
@@ -57,8 +57,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 7, 2016</td>
<td>2016-11-01<br>
@@ -72,8 +72,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 3, 2016</td>
<td>2016-10-01<br>
@@ -86,8 +86,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 6, 2016</td>
<td>2016-09-01<br>
@@ -101,8 +101,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 1, 2016</td>
<td>2016-08-01<br>
@@ -115,8 +115,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 6, 2016</td>
<td>2016-07-01<br>
@@ -129,8 +129,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 6, 2016</td>
<td>2016-06-01</td>
@@ -142,8 +142,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 2, 2016</td>
<td>2016-05-01</td>
@@ -155,8 +155,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 4, 2016</td>
<td>2016-04-02</td>
@@ -168,8 +168,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 7, 2016</td>
<td>2016-03-01</td>
@@ -181,8 +181,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 1, 2016</td>
<td>2016-02-01</td>
@@ -194,8 +194,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2016-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 4, 2016</td>
<td>2016-01-01</td>
diff --git a/en/security/bulletin/2017.html b/en/security/bulletin/2017.html
index aa003eb5..af645994 100644
--- a/en/security/bulletin/2017.html
+++ b/en/security/bulletin/2017.html
@@ -43,8 +43,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 4, 2017</td>
<td>2017-12-01<br>
@@ -57,8 +57,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 6, 2017</td>
<td>2017-11-01<br>
@@ -72,8 +72,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 2, 2017</td>
<td>2017-10-01<br>
@@ -86,8 +86,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 5, 2017</td>
<td>2017-09-01<br>
@@ -100,8 +100,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 7, 2017</td>
<td>2017-08-01<br>
@@ -114,8 +114,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 5, 2017</td>
<td>2017-07-01<br>
@@ -128,8 +128,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 5, 2017</td>
<td>2017-06-01<br>
@@ -142,8 +142,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 1, 2017</td>
<td>2017-05-01<br>
@@ -156,8 +156,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 3, 2017</td>
<td>2017-04-01<br>
@@ -170,8 +170,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 6, 2017</td>
<td>2017-03-01<br>
@@ -184,8 +184,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 6, 2017</td>
<td>2017-02-01<br>
@@ -198,8 +198,8 @@ of all bulletins, see the <a href="index.html">Android Security Bulletins</a> ho
<a href="/security/bulletin/2017-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 3, 2017</td>
<td>2017-01-01<br>
diff --git a/en/security/bulletin/2018.html b/en/security/bulletin/2018.html
index 3eeceac6..b574f288 100644
--- a/en/security/bulletin/2018.html
+++ b/en/security/bulletin/2018.html
@@ -43,8 +43,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<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>
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">简体中文</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>
@@ -57,8 +57,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<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>
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 5, 2018</td>
<td>2018-11-01<br>
@@ -71,8 +71,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 1, 2018</td>
<td>2018-10-01<br>
@@ -85,8 +85,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 4, 2018</td>
<td>2018-09-01<br>
@@ -99,8 +99,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 6, 2018</td>
<td>2018-08-01<br>
@@ -114,8 +114,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 2, 2018</td>
<td>2018-07-01<br>
@@ -128,8 +128,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 4, 2018</td>
<td>2018-06-01<br>
@@ -142,8 +142,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 7, 2018</td>
<td>2018-05-01<br>
@@ -156,8 +156,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 2, 2018</td>
<td>2018-04-01<br>
@@ -170,8 +170,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 2018</td>
<td>2018-03-01<br>
@@ -184,8 +184,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 2018</td>
<td>2018-02-01<br>
@@ -198,8 +198,8 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<a href="/security/bulletin/2018-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 2018</td>
<td>2018-01-01<br>
diff --git a/en/security/bulletin/2019-01-01.html b/en/security/bulletin/2019-01-01.html
new file mode 100644
index 00000000..9afc1aef
--- /dev/null
+++ b/en/security/bulletin/2019-01-01.html
@@ -0,0 +1,650 @@
+<html devsite>
+ <head>
+ <title>Android Security Bulletin—January 2019</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 January 7, 2019 | Updated January 7, 2019</em></p>
+
+<p>
+The Android Security Bulletin contains details of security vulnerabilities
+affecting Android devices. Security patch levels of 2019-01-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
+System 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/2019-01-01">January 2019
+Pixel Update 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="2019-01-01-details">2019-01-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 2019-01-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 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>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-9582</td>
+ <td><a
+ href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/ab39f6cb7afc48584da3c59d8e2a5e1ef121aafb"
+ class="external">A-112031362</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>8.0, 8.1, 9</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 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-9583</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/94d718eb61cbb1e6fd08288039d7e62913735c6c"
+ class="external">A-112860487</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-9584</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/nfc/+/5f0f0cc6a10f710dea7e1ddd4ba19acb877a7081"
+ class="external">A-114047681</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-9585</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/nfc/+/71764b791f262491e3f628c14ce3949863dd6058"
+ class="external">A-117554809</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-9586</td>
+ <td><a
+ href="https://android.googlesource.com/platform/packages/apps/ManagedProvisioning/+/fe4c71a7a3a8a2184b3096203aa9240e01af621e"
+ class="external">A-116754444</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-9587</td>
+ <td><a
+ href="https://android.googlesource.com/platform/packages/apps/Contacts/+/66abad90093df5231f24654a64cf90d9b70ab228"
+ class="external">A-113597344</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-9588</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/bf9ff0c5215861ab673e211cd06e009f3157aab2"
+ class="external">A-111450156</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9589</td>
+ <td><a
+ href="https://android.googlesource.com/platform/external/wpa_supplicant_8/+/38af82c5ca615f56febcebde714c7cba653fd5ec"
+ class="external">A-111893132</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9590</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/297598898683b81e921474e6e74c0ddaedbb8bb5"
+ class="external">A-115900043</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9591</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/e1685cfa533db4155a447c405d7065cc17af2ae9"
+ class="external">A-116108738</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9592</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/bt/+/8679463ade0ee029ef826ed4fb7a847e2a981375"
+ class="external">A-116319076</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9593</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/nfc/+/8bc53213110fed8360d3e212dd61fbc0218e0b1e"
+ class="external">A-116722267</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-9594</td>
+ <td><a
+ href="https://android.googlesource.com/platform/system/nfc/+/494cd888eb2c5cfda05584dd598815c9268ff3c2"
+ class="external">A-116791157</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="2019-01-05-details">2019-01-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 2019-01-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="kernel-components">Kernel components</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>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-10876</td>
+ <td>A-116406122<br />
+ <a href="http://patchwork.ozlabs.org/patch/929239/">Upstream
+kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>ext4 filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10880</td>
+ <td>A-116406509<br />
+ <a href="http://patchwork.ozlabs.org/patch/930639/">Upstream
+kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>ext4 filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10882</td>
+ <td>A-116406626<br />
+ <a href="https://bugzilla.kernel.org/show_bug.cgi?id=200069">Upstream
+kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>ext4 filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13405</td>
+ <td>A-113452403<br />
+ <a
+href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7">
+Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>Filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-18281</td>
+ <td>A-118836219<br />
+ <a
+href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb66ae030829605d61fbef1909ce310e29f78821">
+Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>TLB</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-17182</td>
+ <td>A-117280327<br />
+ <a
+href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a9cdebdcc17e426fb5287e4a82db1dfe86339b2">
+Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>Memory Manager</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10877</td>
+ <td>A-116406625<br />
+ <a
+href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10877">Upstream
+kernel</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>ext4 filesystem</td>
+ </tr>
+</table>
+
+<h3 id="nvidia-components">NVIDIA components</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>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-6241</td>
+ <td>A-62540032<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>Dragon BSP</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-11962</td>
+ <td>A-117118292<br />
+ <a
+href="https://source.codeaurora.org/quic/la/platform/frameworks/av/commit?id=217604d69ce4dcf7c6433a9eafdfceefe25e8fd3">
+QC-CR#2267916</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Audio</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-12014</td>
+ <td>A-117118062<br />
+ <a
+href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=545e03e8420164506457367959ccf01bd055e1aa">
+QC-CR#2278688</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Data HLOS - LNX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13889</td>
+ <td>A-117118677<br />
+ <a
+href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=03885c6896a88d993dd49c64ada02bec52af08a1">
+QC-CR#2288358</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>GPS</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-2018-11847</td>
+ <td>A-111092812<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component </td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11888</td>
+ <td>A-111093241<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component </td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13888</td>
+ <td>A-117119136<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 2019-01-01 or later address all issues associated
+with the 2019-01-01 security patch level.</li>
+<li>Security patch levels of 2019-01-05 or later address all issues associated
+with the 2019-01-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]:[2019-01-01]</li>
+ <li>[ro.build.version.security_patch]:[2019-01-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 2019-01-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 2019-01-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 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 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</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>January 7, 2019</td>
+ <td>Bulletin published</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>January 7, 2019</td>
+ <td>Bulletin revised to include AOSP links.</td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/en/security/bulletin/2019.html b/en/security/bulletin/2019.html
new file mode 100644
index 00000000..f5e41f15
--- /dev/null
+++ b/en/security/bulletin/2019.html
@@ -0,0 +1,215 @@
+<html devsite>
+ <head>
+ <title>2019 Android Security Bulletins</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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 page contains all available 2019 Android Security Bulletins. For a list
+of all bulletins, see the <a href="/security/bulletin/index.html">
+Android Security Bulletins</a> homepage.</p>
+
+<table>
+ <col width="15%">
+ <col width="49%">
+ <col width="17%">
+ <col width="19%">
+ <tr>
+ <th>Bulletin</th>
+ <th>Languages</th>
+ <th>Published date</th>
+ <th>Security patch level</th>
+ </tr>
+ <!--
+<tr>
+ <td><a href="/security/bulletin/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-01<br>
+ 2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-01<br>
+ 2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-01<br>
+ 2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-01<br>
+ 2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-01<br>
+ 2019-08-05</td>
+ </tr>
+
+ <tr>
+ <td><a href="/security/bulletin/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-01<br>
+ 2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-01<br>
+ 2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-01<br>
+ 2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-01<br>
+ 2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-01<br>
+ 2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-01<br>
+ 2019-02-05</td>
+ </tr>
+-->
+ <tr>
+ <td><a href="/security/bulletin/2019-01-01.html">January 2019</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>January 7, 2019</td>
+ <td>2019-01-01<br>
+ 2019-01-05</td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/en/security/bulletin/_translation.yaml b/en/security/bulletin/_translation.yaml
deleted file mode 100644
index 1a07c4e8..00000000
--- a/en/security/bulletin/_translation.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-ignore_paths:
-- /security/bulletin/2018-06-01
-- /security/bulletin/2018-05-01
-- /security/bulletin/2018-04-01
-- /security/bulletin/2018-03-01
-- /security/bulletin/2018-02-01
-- /security/bulletin/2018-01-01
-- /security/bulletin/2017
-- /security/bulletin/2017-12-01
-- /security/bulletin/2017-11-01
-- /security/bulletin/2017-10-01
-- /security/bulletin/2017-09-01
-- /security/bulletin/2017-08-01
-- /security/bulletin/2017-07-01
-- /security/bulletin/2017-06-01
-- /security/bulletin/2017-05-01
-- /security/bulletin/2017-04-01
-- /security/bulletin/2017-03-01
-- /security/bulletin/2017-02-01
-- /security/bulletin/2017-01-01
-- /security/bulletin/2016
-- /security/bulletin/2016-12-01
-- /security/bulletin/2016-11-01
-- /security/bulletin/2016-10-01
-- /security/bulletin/2016-09-01
-- /security/bulletin/2016-08-01
-- /security/bulletin/2016-07-01
-- /security/bulletin/2016-06-01
-- /security/bulletin/2016-05-01
-- /security/bulletin/2016-04-02
-- /security/bulletin/2016-03-01
-- /security/bulletin/2016-02-01
-- /security/bulletin/2016-01-01
-- /security/bulletin/2015
-- /security/bulletin/2015-12-01
-- /security/bulletin/2015-11-01
-- /security/bulletin/2015-10-01
-- /security/bulletin/2015-09-01
-- /security/bulletin/2015-08-01
-- /security/bulletin/pixel/2017
-- /security/bulletin/pixel/2017-12-01
-- /security/bulletin/pixel/2017-11-01
-- /security/bulletin/pixel/2017-10-01
-enable_continuous_translation: true
-title: Android Security Bulletins
-description: Translations for Android Security Bulletins
-language:
-- ja
-- ko
-- ru
-- zh-CN
-- zh-TW
-cc:
-- daroberts@google.com
-- sac-doc-leads+translation@google.com
-- lhaviland@google.com
-reviewer:
-- daroberts
-product: Android
diff --git a/en/security/bulletin/index.html b/en/security/bulletin/index.html
index 6fdea4d0..ee61a610 100644
--- a/en/security/bulletin/index.html
+++ b/en/security/bulletin/index.html
@@ -28,12 +28,21 @@ Bulletins, which provide fixes for possible issues affecting devices running
Android. Android device and chipset manufacturers may also publish security
vulnerability details specific to their products, such as:</p>
<ul>
- <li><a href="/security/bulletin/pixel/">Google</a></li>
- <li><a href="https://lgsecurity.lge.com/security_updates.html">LG</a></li>
- <li><a href="https://motorola-global-portal.custhelp.com/app/software-upgrade-news/g_id/1949">
+ <li><a
+ href="/security/bulletin/pixel/">Google</a></li>
+ <li><a
+ href="https://lgsecurity.lge.com/security_updates.html"
+ class="external">LG</a></li>
+ <li><a
+ href="https://motorola-global-portal.custhelp.com/app/software-upgrade-news/g_id/1949"
+ class="external">
Motorola</a></li>
- <li><a href="https://www.nokia.com/en_int/phones/security-updates">Nokia</a></li>
- <li><a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a></li>
+ <li><a
+ href="https://www.nokia.com/en_int/phones/security-updates"
+ class="external">Nokia</a></li>
+ <li><a
+ href="https://security.samsungmobile.com/securityUpdate.smsb"
+ class="external">Samsung</a></li>
</ul>
<h3 id="sources">Sources</h3>
@@ -62,14 +71,30 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<th>Security patch level</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/2019-01-01.html">January 2019</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>January 7, 2019</td>
+ <td>2019-01-01<br>
+ 2019-01-05</td>
+ </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>
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">简体中文</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>
@@ -81,8 +106,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<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>
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 5, 2018</td>
<td>2018-11-01<br>
@@ -95,8 +120,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 1, 2018</td>
<td>2018-10-01<br>
@@ -109,8 +134,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 4, 2018</td>
<td>2018-09-01<br>
@@ -123,8 +148,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 6, 2018</td>
<td>2018-08-01<br>
@@ -137,8 +162,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 2, 2018</td>
<td>2018-07-01<br>
@@ -151,8 +176,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 4, 2018</td>
<td>2018-06-01<br>
@@ -165,8 +190,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 7, 2018</td>
<td>2018-05-01<br>
@@ -179,8 +204,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 2, 2018</td>
<td>2018-04-01<br>
@@ -193,8 +218,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 5, 2018</td>
<td>2018-03-01<br>
@@ -207,8 +232,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 5, 2018</td>
<td>2018-02-01<br>
@@ -221,8 +246,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2018-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2018-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2018-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2018-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2018-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 2, 2018</td>
<td>2018-01-01<br>
@@ -235,8 +260,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 4, 2017</td>
<td>2017-12-01<br>
@@ -249,8 +274,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 6, 2017</td>
<td>2017-11-01<br>
@@ -264,8 +289,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 2, 2017</td>
<td>2017-10-01<br>
@@ -278,8 +303,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 5, 2017</td>
<td>2017-09-01<br>
@@ -292,8 +317,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 7, 2017</td>
<td>2017-08-01<br>
@@ -306,8 +331,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 5, 2017</td>
<td>2017-07-01<br>
@@ -320,8 +345,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 5, 2017</td>
<td>2017-06-01<br>
@@ -334,8 +359,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 1, 2017</td>
<td>2017-05-01<br>
@@ -347,8 +372,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 3, 2017</td>
<td>2017-04-01<br>
@@ -360,8 +385,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 6, 2017</td>
<td>2017-03-01<br>
@@ -373,8 +398,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 6, 2017</td>
<td>2017-02-01<br>
@@ -386,8 +411,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2017-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2017-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2017-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2017-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2017-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2017-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2017-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 3, 2017</td>
<td>2017-01-01<br>
@@ -400,8 +425,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 5, 2016</td>
<td>2016-12-01<br>
@@ -414,8 +439,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 7, 2016</td>
<td>2016-11-01<br>
@@ -429,8 +454,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 3, 2016</td>
<td>2016-10-01<br>
@@ -443,8 +468,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 6, 2016</td>
<td>2016-09-01<br>
@@ -458,8 +483,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 1, 2016</td>
<td>2016-08-01<br>
@@ -472,8 +497,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 6, 2016</td>
<td>2016-07-01<br>
@@ -486,8 +511,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 6, 2016</td>
<td>2016-06-01</td>
@@ -499,8 +524,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 2, 2016</td>
<td>2016-05-01</td>
@@ -512,8 +537,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-04-02.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-04-02.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-04-02.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-04-02.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-04-02.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-04-02.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-04-02.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 4, 2016</td>
<td>2016-04-02</td>
@@ -525,8 +550,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 7, 2016</td>
<td>2016-03-01</td>
@@ -538,8 +563,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 1, 2016</td>
<td>2016-02-01</td>
@@ -551,8 +576,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2016-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2016-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2016-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2016-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2016-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2016-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2016-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 4, 2016</td>
<td>2016-01-01</td>
@@ -564,8 +589,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2015-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 7, 2015</td>
<td>2015-12-01</td>
@@ -577,8 +602,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2015-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 2, 2015</td>
<td>2015-11-01</td>
@@ -590,8 +615,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2015-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 5, 2015</td>
<td>2015-10-01</td>
@@ -603,8 +628,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2015-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 9, 2015</td>
<td>N/A</td>
@@ -616,8 +641,8 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
<a href="/security/bulletin/2015-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2015-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2015-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/2015-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/2015-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/2015-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/2015-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 13, 2015</td>
<td>N/A</td>
diff --git a/en/security/bulletin/pixel/2017.html b/en/security/bulletin/pixel/2017.html
index 23f1c15c..d8317f66 100644
--- a/en/security/bulletin/pixel/2017.html
+++ b/en/security/bulletin/pixel/2017.html
@@ -45,8 +45,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 4, 2017</td>
<td>2017-12-05</td>
@@ -58,8 +58,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 6, 2017</td>
<td>2017-11-05</td>
@@ -71,8 +71,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 2, 2017</td>
<td>2017-10-05</td>
diff --git a/en/security/bulletin/pixel/2018.html b/en/security/bulletin/pixel/2018.html
index a1cace8f..7517c91b 100644
--- a/en/security/bulletin/pixel/2018.html
+++ b/en/security/bulletin/pixel/2018.html
@@ -45,8 +45,8 @@ Bulletins</a> homepage.</p>
<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>
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">简体中文</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>
@@ -58,8 +58,8 @@ Bulletins</a> homepage.</p>
<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>
+ <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 5, 2018</td>
<td>2018-11-05</td>
@@ -71,8 +71,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 1, 2018</td>
<td>2018-10-05</td>
@@ -84,8 +84,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 4, 2018</td>
<td>2018-09-05</td>
@@ -97,8 +97,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 6, 2018</td>
<td>2018-08-05</td>
@@ -110,8 +110,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 2, 2018</td>
<td>2018-07-05</td>
@@ -123,8 +123,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 4, 2018</td>
<td>2018-06-05</td>
@@ -136,8 +136,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 7, 2018</td>
<td>2018-05-05</td>
@@ -149,8 +149,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 2, 2018</td>
<td>2018-04-05</td>
@@ -162,8 +162,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 2018</td>
<td>2018-03-05</td>
@@ -175,8 +175,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 2018</td>
<td>2018-02-05</td>
@@ -188,8 +188,8 @@ Bulletins</a> homepage.</p>
<a href="/security/bulletin/pixel/2018-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 2018</td>
<td>2018-01-05</td>
diff --git a/en/security/bulletin/pixel/2019-01-01.html b/en/security/bulletin/pixel/2019-01-01.html
new file mode 100644
index 00000000..e6e9939d
--- /dev/null
+++ b/en/security/bulletin/pixel/2019-01-01.html
@@ -0,0 +1,258 @@
+<html devsite>
+ <head>
+ <title>Pixel Update Bulletin—January 2019</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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 January 7, 2019</em></p>
+
+<p>
+The Pixel Update 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 devices</a> (Google devices).
+For Google devices, security patch levels of 2019-01-05 or later address all
+issues in this bulletin and all issues in the January 2019 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 2019-01-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/2019-01-01">January 2019 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="kernel-components">Kernel 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-13098</td>
+ <td>A-113148387<br />
+ <a
+href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2">
+Upstream kernel</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>Filesystem</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13099</td>
+ <td>A-113148515<br />
+ <a
+href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dbe38dc386910c668c75ae616b99b823b59f3eb">
+Upstream kernel</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>Filesystem</td>
+ </tr>
+</table>
+
+
+<h3 id="functional-patches">Functional patches</h3>
+<p>These updates are included for affected Pixel devices to address
+functionality issues not related to the security of Pixel devices. The table
+includes associated references, the affected category (such as, Bluetooth and
+mobile data), improvements, and affected devices.
+</p>
+
+<table>
+ <tr>
+ <col width="15%">
+ <col width="15%">
+ <col width="40%">
+ <col width="30%">
+ <th>References</th>
+ <th>Category</th>
+ <th>Improvements</th>
+ <th>Devices</th>
+ </tr>
+ <tr>
+ <td>A-113776612, A-118022272</td>
+ <td>Audio</td>
+ <td>Improved audio quality when recording videos</td>
+ <td>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 2019-01-05 or later address all issues associated with
+the 2019-01-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 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 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>January 7, 2019</td>
+ <td>Bulletin published.</td>
+ </tr>
+</table>
+</body>
+</html>
diff --git a/en/security/bulletin/pixel/2019.html b/en/security/bulletin/pixel/2019.html
new file mode 100644
index 00000000..65eb244d
--- /dev/null
+++ b/en/security/bulletin/pixel/2019.html
@@ -0,0 +1,203 @@
+<html devsite>
+ <head>
+ <title>2019 Pixel Update Bulletins</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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 page contains all available 2019 Pixel Update
+Bulletins. For a list of all bulletins, see the
+<a href="/security/bulletin/pixel/index.html">Pixel Update
+Bulletins</a> homepage.</p>
+
+<table>
+ <col width="15%">
+ <col width="49%">
+ <col width="17%">
+ <col width="19%">
+ <tr>
+ <th>Bulletin</th>
+ <th>Languages</th>
+ <th>Published date</th>
+ <th>Security patch level</th>
+ </tr>
+<!--
+<tr>
+ <td><a href="/security/bulletin/pixel/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-05</td>
+ </tr>
+-->
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">January 2019</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>January 7, 2019</td>
+ <td>2019-01-05</td>
+ </tr>
+</table>
+ </body>
+</html>
diff --git a/en/security/bulletin/pixel/index.html b/en/security/bulletin/pixel/index.html
index a32aa036..45a70c7b 100644
--- a/en/security/bulletin/pixel/index.html
+++ b/en/security/bulletin/pixel/index.html
@@ -1,6 +1,6 @@
<html devsite>
<head>
- <title>Pixel&hairsp;/&hairsp;Nexus Security Bulletins</title>
+ <title>Pixel Update Bulletins</title>
<meta name="project_path" value="/_project.yaml" />
<meta name="book_path" value="/_book.yaml" />
</head>
@@ -22,28 +22,30 @@
-->
-<p>This page contains the available Pixel&hairsp;/&hairsp;Nexus monthly
-bulletins. These bulletins supplement the
-<a href="/security/bulletin">Android Security Bulletins</a> with
-additional security patches and functional improvements on Pixel and Nexus
-devices. These bulletins apply to
-<a href="https://support.google.com/nexus/answer/4457705">supported Pixel and
-Nexus devices</a>.</p>
+<p>This page contains the available monthly Pixel Update Bulletins. These
+ bulletins were previously known as the
+ Pixel&hairsp;/&hairsp;Nexus security bulletins. These bulletins supplement
+ the <a href="/security/bulletin">Android Security Bulletins</a> with
+ additional security patches and functional improvements on <a
+href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices"
+class="external">supported Google Pixel and Nexus devices</a> (Google devices).
+</p>
<h3 id="notification">Notifications</h3>
-<p>Pixel and Nexus devices start receiving OTA updates on the same day the
-monthly bulletin is released. In general, it takes about one and a half calendar
-weeks for the OTA to reach every Nexus device. The Nexus firmware images are
-also released each month to the
-<a href="https://developers.google.com/android/nexus/images">Google Developer
-site</a>.
-</p>
-<h3 id="sources">Sources</h3>
-<p>Patches listed in the Pixel&hairsp;/&hairsp;Nexus bulletin come from various
-sources: the Android Open Source Project (AOSP), the upstream Linux kernel,
-and system-on-chip (SOC) manufacturers. Android platform fixes are merged into
-AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is released.</p>
+ <p>Google devices start receiving OTA updates on the same day the
+ monthly bulletin is released. In general, it takes about one and a half
+ calendar weeks for the OTA to reach every Google device. The Google device
+ firmware images are available on the
+ <a href="https://developers.google.com/android/images"
+ class="external">Google Developer site</a>.
+ </p>
+<h3 id="sources">Sources</h3>
+ <p>Patches listed in the Pixel Update bulletins can come from various
+ sources, including: the Android Open Source Project (AOSP), the upstream
+ Linux kernel, and system-on-chip (SOC) manufacturers. Android platform
+ fixes are merged into AOSP 24&ndash;48 hours after the Pixel Update
+ Bulletin is released.</p>
<h3 id="bulletins">Bulletins</h3>
@@ -59,14 +61,29 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<th>Security patch level</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">January 2019</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>January 7, 2018</td>
+ <td>2018-12-05</td>
+ </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>
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">简体中文</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>
@@ -78,8 +95,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<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>
+ <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 5, 2018</td>
<td>2018-11-05</td>
@@ -91,8 +108,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 1, 2018</td>
<td>2018-10-05</td>
@@ -104,8 +121,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-09-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-09-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>September 4, 2018</td>
<td>2018-09-05</td>
@@ -117,8 +134,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-08-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-08-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>August 6, 2018</td>
<td>2018-08-05</td>
@@ -130,8 +147,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-07-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-07-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-07-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-07-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>July 2, 2018</td>
<td>2018-07-05</td>
@@ -143,8 +160,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>June 4, 2018</td>
<td>2018-06-05</td>
@@ -156,8 +173,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-05-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-05-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-05-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-05-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>May 7, 2018</td>
<td>2018-05-05</td>
@@ -169,8 +186,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-04-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-04-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-04-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-04-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>April 2, 2018</td>
<td>2018-04-05</td>
@@ -182,8 +199,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-03-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-03-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-03-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-03-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>March 5, 2018</td>
<td>2018-03-05</td>
@@ -195,8 +212,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-02-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-02-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-02-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-02-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>February 5, 2018</td>
<td>2018-02-05</td>
@@ -208,8 +225,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2018-01-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-01-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-01-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2018-01-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>January 2, 2018</td>
<td>2018-01-05</td>
@@ -221,8 +238,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-12-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2017-12-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>December 4, 2017</td>
<td>2017-12-05</td>
@@ -234,8 +251,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-11-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2017-11-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>November 6, 2017</td>
<td>2017-11-05</td>
@@ -247,8 +264,8 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2017-10-01.html?hl=ru">ру́сский</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
- <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-cn">简体中文</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2017-10-01.html?hl=zh-tw">繁體中文&nbsp;(台灣)</a>
</td>
<td>October 2, 2017</td>
<td>2017-10-05</td>
diff --git a/en/security/encryption/adiantum.html b/en/security/encryption/adiantum.html
new file mode 100644
index 00000000..37288920
--- /dev/null
+++ b/en/security/encryption/adiantum.html
@@ -0,0 +1,260 @@
+<html devsite>
+ <head>
+ <title>Enabling Adiantum</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>
+<a href="https://eprint.iacr.org/2018/720.pdf" class="external">Adiantum</a>
+ is an encryption method designed for devices running Android 9 and higher
+ whose CPUs lack
+ <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard"
+ class="external">AES</a> instructions. If you are shipping an ARM-based
+ device with ARMv8 Cryptography Extensions or an x86-based device with AES-NI,
+ you should <strong>not</strong> use Adiantum. AES is faster on those
+ platforms.
+</p>
+<p>
+ For devices lacking these AES CPU instructions, Adiantum provides encryption on
+ your device with very little performance overhead. For benchmarking numbers,
+ see the <a href="https://eprint.iacr.org/2018/720.pdf"
+ class="external">Adiantum paper</a>. For the benchmarking source
+ to run on your hardware, see the
+ <a href="https://github.com/google/adiantum" class="external">Adiantum source
+ on GitHub</a>.
+</p>
+<p>
+ To enable Adiantum on a device running Android 9 or higher, you need to
+ make kernel changes and userspace changes.
+</p>
+
+<h2 id="kernel-changes">Kernel changes</h2>
+<p>
+ Cherry-pick the Adiantum changes to your kernel and apply an additional
+ <code>dm-crypt</code> patch. If you're having trouble cherry-picking, devices
+ using <a href="https://source.android.com/security/encryption/full-disk"
+ class="external">full-disk encryption</a> (FDE) can exclude the
+ "fscrypt: " patch.
+</p>
+
+<table>
+ <tr>
+ <th>Kernel version</th>
+ <th>Kernel changes</th>
+ <th><code>dm-crypt</code> patch</th>
+ </tr>
+ <tr>
+ <td>4.19
+ </td>
+ <td><a href="https://android-review.googlesource.com/q/topic:%22adiantum-4.19%22+(status:open%20OR%20status:merged)"
+ class="external">4.19 kernel</a>
+ </td>
+ <td><a href="https://android-review.googlesource.com/c/kernel/common/+/851273"
+ class="external"><code>dm-crypt</code> patch</a>
+ </td>
+ </tr>
+ <tr>
+ <td>4.14
+ </td>
+ <td><a href="https://android-review.googlesource.com/q/topic:%22adiantum-4.14%22+(status:open%20OR%20status:merged)"
+ class="external">4.14 kernel</a>
+ </td>
+ <td><a href="https://android-review.googlesource.com/c/kernel/common/+/851275"
+ class="external"><code>dm-crypt</code> patch</a>
+ </td>
+ </tr>
+ <tr>
+ <td>4.9
+ </td>
+ <td><a href="https://android-review.googlesource.com/q/topic:%22adiantum-4.9%22+(status:open%20OR%20status:merged)"
+ class="external">4.9 kernel</a>
+ </td>
+ <td><a href="https://android-review.googlesource.com/c/kernel/common/+/851278"
+ class="external"><code>dm-crypt</code> patch</a>
+ </td>
+ </tr>
+</table>
+
+<h3 id="enable-adiantum-kernel">Enable Adiantum in your kernel</h3>
+
+<p>
+After integrating the kernel changes, change your kernel config by adding the
+lines:
+</p>
+
+<pre class="devsite-click-to-copy">CONFIG_CRYPTO_ADIANTUM=y
+CONFIG_DM_CRYPT=y
+</pre>
+
+<p>
+If your device uses a 4.4 kernel, also add:
+</p>
+
+
+<pre class="devsite-click-to-copy">CONFIG_CRYPTO_SEQIV=y
+</pre>
+<p>
+If your device uses file-based encryption (FBE), also add:
+</p>
+
+
+<pre class="devsite-click-to-copy">CONFIG_F2FS_FS_ENCRYPTION=y
+</pre>
+<p>
+To ensure good performance on a 32-bit ARM kernel, enable NEON instructions for
+the kernel:
+</p>
+
+
+<pre
+class="devsite-click-to-copy">CONFIG_CRYPTO_AES_ARM=y
+CONFIG_CRYPTO_CHACHA20_NEON=y
+CONFIG_CRYPTO_NHPOLY1305_NEON=y
+CONFIG_KERNEL_MODE_NEON=y
+</pre>
+
+<h2 id="userspace-changes">Userspace changes</h2>
+<p>
+ For devices running Android 9, cherry-pick the
+ <a href="https://android-review.googlesource.com/q/topic:%22userspace_adiantum_support_pie%22+(status:open%20OR%20status:merged)"
+ class="external">Adiantum userspace changes</a> in the
+ <code>userspace_adiantum_support_pie</code> topic on the
+ <code>pie-platform-release</code> branch in AOSP.
+</p>
+<p>
+These changes are also in the
+ <a href="https://android-review.googlesource.com/q/topic:%22userspace_adiantum_support%22+(status:open%20OR%20status:merged)"
+ class="external">master branch of AOSP</a>.
+</p>
+
+<h2 id="enable-adiantum-device">Enable Adiantum in your device</h2>
+<p>
+These settings are for the userdata on the device, and also for adoptable
+storage.
+</p>
+
+<h3 id="fbe-devices">Devices with file-based encryption</h3>
+<p>
+To enable Adiantum and improve its performance, set these properties in
+<code>PRODUCT_PROPERTY_OVERRIDES</code>:
+</p>
+
+
+<pre
+class="devsite-click-to-copy">ro.crypto.fde_algorithm=adiantum
+ro.crypto.fde_sector_size=4096
+ro.crypto.volume.contents_mode=adiantum
+ro.crypto.volume.filenames_mode=adiantum
+</pre>
+
+<aside class="caution"><strong>Important</strong>:
+This setting references FDE but is needed also on FBE devices; it
+affects adoptable storage.
+</aside>
+
+<p>
+Setting <code>fde_sector_size</code> to 4096 improves performance, but is not
+required for Adiantum to work. Setting the sector size requires that the offset
+and alignment of the userdata partition and adoptable storage is 4096-byte
+aligned.
+</p>
+<p>
+ In the <code>fstab</code>, for userdata use the option:
+</p>
+
+
+<pre class="devsite-click-to-copy">fileencryption=adiantum
+</pre>
+<p>
+To verify that your implementation worked, take a bug report or run:
+</p>
+
+
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">adb root</code>
+<code class="devsite-terminal">adb shell dmesg</code>
+</pre>
+<p>
+If Adiantum is enabled correctly, you should see this in the kernel log:
+</p>
+
+
+<pre
+class="devsite-click-to-copy">fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
+</pre>
+
+<aside class="note">
+<strong>Note</strong>: For ARM-based devices, the implementation name should
+match exactly. If you don't see references to <code>neon</code>, your device
+won't perform as well. See the <em><a href="#enable-adiantum-kernel">Enable
+Adiantum in your kernel</a></em> section for details on enabling NEON
+instructions.
+</aside>
+
+<h3 id="fde-devices">Devices with full-disk encryption</h3>
+<p>
+To enable Adiantum and improve its performance, set these properties in
+<code>PRODUCT_PROPERTY_OVERRIDES</code>:
+</p>
+
+
+<pre
+class="devsite-click-to-copy">ro.crypto.fde_algorithm=adiantum
+ro.crypto.fde_sector_size=4096
+</pre>
+<p>
+Setting <code>fde_sector_size</code> to 4096 improves performance, but is not
+required for Adiantum to work. Setting the sector size requires that the offset
+and alignment of the userdata partition and adoptable storage is 4096-byte
+aligned.
+</p>
+<p>
+In the <code>fstab</code>, for userdata set:
+</p>
+
+
+<pre class="devsite-click-to-copy">forceencrypt
+</pre>
+<p>
+To verify that your implementation worked, take a bug report or run:
+</p>
+
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">adb root</code>
+<code class="devsite-terminal">adb shell dmesg</code>
+</pre>
+
+<p>
+If Adiantum is enabled correctly, you should see this in the kernel log:
+</p>
+
+
+<pre
+class="devsite-click-to-copy">device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
+</pre>
+<aside class="note">
+<strong>Note</strong>: For ARM-based devices, the implementation name should
+match exactly. If you don't see references to <code>neon</code>, your device
+won't perform as well. See the <em><a href="#enable-adiantum-kernel">Enable
+Adiantum in your kernel</a></em> section for details on enabling NEON
+instructions.
+</aside>
+ </body>
+</html>
diff --git a/en/security/images/trustyApps_900w.png b/en/security/images/trustyApps_900w.png
new file mode 100644
index 00000000..3bf93634
--- /dev/null
+++ b/en/security/images/trustyApps_900w.png
Binary files differ
diff --git a/en/security/images/trustyOverview_900w.png b/en/security/images/trustyOverview_900w.png
new file mode 100644
index 00000000..e80fdc4f
--- /dev/null
+++ b/en/security/images/trustyOverview_900w.png
Binary files differ
diff --git a/en/security/overview/acknowledgements.html b/en/security/overview/acknowledgements.html
index b6f7074e..52cb91da 100644
--- a/en/security/overview/acknowledgements.html
+++ b/en/security/overview/acknowledgements.html
@@ -33,6 +33,79 @@ impact on Android security, including code that qualifies
for the <a href="https://www.google.com/about/appsecurity/patch-rewards/">Patch
Rewards</a> program.</p>
+<h2 id="2019">2019</h2>
+<p>Starting in 2018 and continuing in 2019, the security acknowledgements are listed by month.
+ In prior years, acknowledgements were listed together.
+</p>
+
+<h4 id="jan-2019">January</h4>
+
+<table>
+ <col width="85%">
+ <col width="15%">
+ <tr>
+ <th>Researchers</th>
+ <th>CVEs</th>
+ </tr>
+ <tr>
+ <td>Chong Wang (<a
+ href="https://www.weibo.com/csddl" class="external">weibo.com/csddl</a>)
+ of Chengdu Security Response Center, Qihoo 360 Technology Co. Ltd.
+ </td>
+ <td>CVE-2018-9589</td>
+ </tr>
+ <tr>
+ <td>D2.Y.P of NON Team</td>
+ <td>CVE-2018-9594</td>
+ </tr>
+ <tr>
+ <td><a
+ href="https://www.linkedin.com/in/dzima"
+ class="external">Dzmitry Lukyanenka</a></td>
+ <td>CVE-2018-9587</td>
+ </tr>
+ <tr>
+ <td><a href="mailto:arnow117@gmail.com" class="external">Hanxiang Wen</a>
+ and 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-6241</td>
+ </tr>
+ <tr>
+ <td>Jann Horn of Google Project Zero</td>
+ <td>CVE-2018-17182, CVE-2018-18281</td>
+ </tr>
+ <tr>
+ <td>Maddie Stone of Google</td>
+ <td>CVE-2018-9586</td>
+ </tr>
+ <tr>
+ <td>Niky1235 (<a href="https://twitter.com/jiych_guru"
+ class="external">@jiych_guru</a>)
+ </td>
+ <td>CVE-2018-9584</td>
+ </tr>
+ <tr>
+ <td>Ricky Wai of Google</td>
+ <td>CVE-2018-9582</td>
+ </tr>
+ <tr>
+ <td>Yongke Wang (王永科)
+ (<a href="https://twitter.com/rudykewang" class="external">@Rudykewang</a>)
+ and Xiangqian Zhang (张向前)
+ (<a href="https://twitter.com/h3rb0x" class="external">@h3rb0x</a>) of
+ <a href="https://xlab.tencent.com/en/" class="external">Tencent Security
+ Xuanwu Lab</a></td>
+ <td>CVE-2018-9585, CVE-2018-9588</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-9583, CVE-2018-9590, CVE-2018-9591, CVE-2018-9592, CVE-2018-9593</td>
+ </tr>
+</table>
+
<h2 id="2018">2018</h2>
<p>In 2018, the security acknowledgements are listed by month. In prior years,
acknowledgements were listed together.</p>
@@ -116,6 +189,10 @@ acknowledgements were listed together.</p>
<td>CVE-2018-9457</td>
</tr>
<tr>
+ <td>Joshua Laney of Deja vu Security</td>
+ <td>CVE-2018-9542</td>
+ </tr>
+ <tr>
<td><a href="https://github.com/michalbednarski" class="external">Michał
Bednarski</a></td>
<td>CVE-2018-9522, CVE-2018-9523</td>
diff --git a/en/security/overview/app-security.html b/en/security/overview/app-security.html
index 317b57b6..1ebbef16 100644
--- a/en/security/overview/app-security.html
+++ b/en/security/overview/app-security.html
@@ -94,15 +94,14 @@ href="/security/app-sandbox">Application Sandbox</a>.
<li>SMS/MMS functions</li>
<li>Network/data connections</li>
</ul>
-<p>These resources are only accessible through the operating system. To make use
+<p>These resources are only accessible through the operating system. To make use
of the protected APIs on the device, an application must define the
- capabilities it needs in its manifest. When preparing to install an
- application, the system displays a dialog to the user that indicates the
- permissions requested and asks whether to continue the installation. If the
- user continues with the installation, the system accepts that the user has
- granted all of the requested permissions. The user can not grant or deny
- individual permissions -- the user must grant or deny all of the requested
- permissions as a block.</p>
+ capabilities it needs in its manifest. All Android versions 6.0 and higher use
+ a <a href="/devices/tech/config/runtime_perms">runtime permissions</a> model.
+ If a user requests a feature from an app that requires a protected API the
+ system displays a dialog, prompting the user to <strong>deny</strong>
+ or <strong>allow</strong> the permission.</p>
+</p>
<p>Once granted, the permissions are applied to the application as long as it is
installed. To avoid user confusion, the system does not notify the user again
of the permissions granted to the application, and applications that are
diff --git a/en/security/trusty/download-and-build.html b/en/security/trusty/download-and-build.html
new file mode 100644
index 00000000..bd1c2697
--- /dev/null
+++ b/en/security/trusty/download-and-build.html
@@ -0,0 +1,70 @@
+<html devsite>
+ <head>
+ <title>Download and Build</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>The <a href="https://android-review.googlesource.com/admin/repos/q/filter:trusty"
+ class="external">Trusty repositories</a> are available in the Android Open
+Source Project (AOSP).</p>
+
+<p>Use these links to find the appropriate Trusty kernel branches in AOSP:</p>
+
+<ul>
+ <li><a class="external"
+ href="https://android.googlesource.com/kernel/common/+/android-trusty-4.4">4.4</a></li>
+ <li><a class="external"
+ href="https://android.googlesource.com/kernel/common/+/android-trusty-4.9">4.9</a></li>
+ <li><a class="external"
+ href="https://android.googlesource.com/kernel/common/+/android-trusty-4.14">4.14</a></li>
+</ul>
+
+ <h2 id="installing_repo">Installing Repo</h2>
+<p>To download Trusty, first <a
+href="/setup/build/downloading#installing-repo">download and install Repo</a>.</p>
+
+<p>After Repo has been successfully installed you can clone the Android Trusty repository.</p>
+<pre class="prettyprint">
+<code class="devsite-terminal">mkdir trusty</code>
+<code class="devsite-terminal">cd trusty</code>
+<code class="devsite-terminal">repo init -u https://android.googlesource.com/trusty/manifest -b master</code>
+<code class="devsite-terminal">repo sync -j32</code>
+</pre>
+
+<h3 id="build">Build</h3>
+<p>Use the following to build the generic arm64 image for Trusty.
+
+<pre class="devsite-terminal devsite-click-to-copy">
+./trusty/vendor/google/aosp/scripts/build.py generic-arm64
+</pre>
+
+<p>Build results will be under <code>build-root/build-generic-arm64/.</code>
+ Look for lk.bin which is a TEE image with all apps compiled in:
+</p>
+
+<pre class="devsite-terminal devsite-click-to-copy">
+ls build-root/build-generic-arm64/lk.bin
+</pre>
+
+<h3 id="install">Install</h3>
+ <p>You can assemble lk.bin into a firmware image and flash it to the device.
+Generating firmware images varies depending on the board being used.
+ Contact your board manufacturer for instructions.</p>
+ </body>
+</html>
diff --git a/en/security/trusty/index.html b/en/security/trusty/index.html
index c5bacdad..3640a226 100644
--- a/en/security/trusty/index.html
+++ b/en/security/trusty/index.html
@@ -20,140 +20,142 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-
-
-
-<p>Trusty is a set of software components supporting a Trusted Execution
-Environment (TEE) on mobile devices.</p>
+<p>Trusty is a secure Operating System (OS) that provides a Trusted Execution
+ Environment (TEE) for Android. The Trusty OS runs on the same processor
+ as the Android OS, but Trusty is isolated from the rest of the system
+ by both hardware and software. Trusty and Android run parallel
+ to each other. Trusty has access to the full power of a device’s main
+ processor and memory but is completely isolated. Trusty's isolation
+ protects it from malicious apps installed by the user and potential
+ vulnerabilities that may be discovered in Android.
+</p>
+
+ <p>Trusty is compatible with ARM and Intel processors. On ARM systems,
+ Trusty uses ARM’s Trustzone™ to virtualize the main processor and create
+ a secure trusted execution environment. Similar support is also available
+ on Intel x86 platforms using Intel’s Virtualization Technology.
+</p>
+
+<img style="display: block;margin-left: auto;margin-right: auto;"
+ src="/security/images/trustyOverview_900w.png" />
+<p class="img-caption">
+<strong>Figure 1</strong>. Trusty overview diagram.
+</p>
<p>Trusty consists of:</p>
-
<ul>
- <li>An operating system (the Trusty OS) that runs on a processor intended to
-provide a TEE
- <li>Drivers for the Android kernel (Linux) to facilitate communication with
-applications running under the Trusty OS
- <li>A set of libraries for Android systems software to facilitate communication
-with trusted applications executed within the Trusty OS using the kernel
-drivers
+ <li>A small OS kernel derived from <a
+ href="https://github.com/littlekernel/lk" class="external">
+ Little Kernel</a></li>
+ <li>A Linux kernel driver to transfer data between the secure environment
+ and Android</li>
+ <li>An Android <a
+ href="https://android.googlesource.com/trusty/lib/" class="external">
+ userspace library</a> to communicate with trusted applications
+ (that is, secure tasks/services) via the kernel driver</li>
</ul>
-<p><strong>Important</strong>: Trusty and the Trusty API are subject
-to change.</p>
-<p>For information about the Trusty API, see the <a
+<p class="note"><strong>Note:</strong> Trusty and the Trusty API are subject
+to change. For information about the Trusty API, see the <a
href="/security/trusty/trusty-ref">API Reference</a>.</p>
-<h2 id=uses_examples>Uses and examples</h2>
-
-<p>Any TEE OS (not just Trusty) can be used for TEE implementations.</p>
-
-<p>A TEE processor is typically a separate microprocessor in the system or a
-virtualized instance of the main processor. The TEE processor is isolated from
-the rest of the system using memory and I/O protection mechanisms supported by
-the hardware.</p>
-
-<p>TEE processors have become a mainstay in today's mobile devices. The main
-processor on these devices is considered "untrusted" and cannot access certain
-areas of RAM, hardware registers and fuses where secret data (such as
-device-specific cryptographic keys) is stored by the manufacturer. Software
-running on the main processor delegates any operations that require use of
-secret data to the TEE processor.</p>
-
-<p>The most widely known example of this in the Android ecosystem
-is the <a href="/devices/drm.html">DRM framework</a> for
-protected content. Software running on the TEE processor can access
-device-specific keys required to decrypt protected content. The main processor
-sees only the encrypted content, providing a high level of security and
-protection against software-based attacks.</p>
+<h2 id="whyTrusty">Why Trusty?</h2>
+
+<p>Other TEE operating systems are traditionally supplied as binary
+ blobs by third-party vendors or developed internally.
+ Developing internal TEE systems or licensing a TEE from a third-party
+ can be costly to System-on-Chip (SoC) vendors and OEMs.
+ The monetary cost combined with unreliable third-party systems creates an
+ unstable ecosystem for Android. Trusty is being provided to its partners
+ as a reliable and free open source alternative for their Trusted Execution
+ Environment. Trusty offers a level of transparency that is just not possible
+ with closed source systems.
+</p>
+
+ <p>Android supports various TEE implementations so you are not restricted
+ to using Trusty. Each TEE OS has its own unique way of deploying trusted
+ applications. This fragmentation can be a problem for trusted application
+ developers trying to ensure their apps work on every Android device.
+ Using Trusty as a standard helps application developers to easily
+ create and deploy applications without accounting
+ for the fragmentation of multiple TEE systems. Trusty TEE provides developers
+ and partners with transparency, collaboration, inspectability of code, and
+ ease of debugging. Trusted application developers can converge around common
+ tools and APIs to reduce the risk of introducing security vulnerabilities.
+ These developers will have the confidence that they can develop an application
+ and have it reused across multiple devices without further development.
+</p>
+
+<h2 id="application_services">Applications and services</h3>
+
+<p>A Trusty application is defined as a collection of binary files
+ (executables and resource files), a binary manifest, and a
+ cryptographic signature.
+ At runtime, Trusty applications run as isolated processes in
+ unprivileged mode under the Trusty kernel. Each process runs
+ in its own virtual memory sandbox utilizing the memory management
+ unit capabilities of the TEE processor. The build of the hardware
+ changes the exact process that Trusty follows, but for example,
+ the kernel schedules these processes using a priority-based,
+ round-robin scheduler driven by a secure timer tick.
+ All Trusty applications share the same priority.
+</p>
+
+<img style="display: block;margin-left: auto;margin-right: auto;"
+ src="/security/images/trustyApps_900w.png" />
+<p class="img-caption">
+<strong>Figure 2</strong>. Trusty application overview.</p>
+
+<h2 id="third-party_trusty_applications">Third-party Trusty applications</h2>
+
+<p>Currently all Trusty applications are developed by a single
+ party and packaged with the Trusty kernel image.
+ The entire image is signed and verified by the bootloader during boot.
+ Third-party application development is not supported in Trusty at
+ this time. Although Trusty enables the development of new
+ applications, doing so must be exercised with extreme care; each
+ new application increases the area of the trusted computing base
+ (TCB) of the system.
+ Trusted applications can access device secrets and can perform
+ computations or data transformations using them. The ability to
+ develop new applications that run in the TEE opens up many
+ possibilities for innovation. However, due to the very definition
+ of a TEE, these applications cannot be distributed without some
+ form of trust attached. Typically this comes in the form of a
+ digital signature by an entity trusted by the user of the
+ product on which the application runs.
+</p>
+
+<h2 id="uses_examples">Uses and examples</h2>
+
+<p>Trusted execution environments are fast becoming a standard in
+ mobile devices. Users are relying more and more on their mobile
+ devices for their everyday lives and the need for security is always
+ growing.
+ Mobile devices with a TEE are more secure than devices without a TEE.
+</p>
+
+<p>On devices with a TEE implementation, the main processor is often
+ referred to as “untrusted”, meaning it cannot access certain areas
+ of RAM, hardware registers, and write-once fuses where secret data
+ (such as, device-specific cryptographic keys) are stored by the manufacturer.
+ Software running on the main processor delegates any operations that
+ require use of secret data to the TEE processor.
+</p>
+
+<p>The most widely known example of this in the Android ecosystem is the <a
+ href="/devices/drm.html">DRM framework</a>
+ for protected content. Software running on the TEE processor can
+ access device-specific keys required to decrypt protected content.
+ The main processor sees only the encrypted content, providing
+ a high level of security and protection against software-based attacks.
+</p>
<p>There are many other uses for a TEE such as mobile payments, secure banking,
-full-disk encryption, multi-factor authentication, device reset protection,
-replay-protected persistent storage, wireless display ("cast") of protected
-content, secure PIN and fingerprint processing, and even malware detection.</p>
-
-<p>Trusty provides APIs for developing two classes of applications:</p>
-
-<ul>
- <li>Trusted applications or services that run on the TEE processor
- <li>Normal/untrusted applications that run on the main processor and use services
-provided by Trusted applications
-</ul>
-
-<p>Software running on the main processor can use Trusty APIs to connect to
-trusted applications and exchange arbitrary messages with them, just like a
-network service over IP. It is up to the application to determine the data
-format and semantics of these messages using an app-level protocol. Reliable
-delivery of messages is guaranteed by the underlying Trusty infrastructure (in
-the form of drivers running on the main processor), and the communication is
-completely asynchronous.</p>
-
-<h2 id=trusted_applications_and_services>Trusted applications and services</h2>
-
-<p>Trusted applications run as isolated processes under the Trusty OS kernel. Each
-process runs in its own virtual memory sandbox utilizing the MMU capabilities
-of the TEE processor. The kernel schedules these processes using a
-priority-based, round-robin scheduler driven by a secure timer tick. In the
-current version of Trusty, all Trusty applications share the same priority.</p>
-
-<p>Applications for the Trusty OS can be written in C/C++ (C++ support is
-limited), and they have access to a small C library. The <code>main()</code>
-function currently does not take any arguments. System call stubs are provided
-in native assembly code as part of this library, so system calls can be
-accessed by name.</p>
-
-<h3 id=language_threading>Language and threading support</h3>
-
-<p>All Trusty applications are single-threaded; multithreading in Trusty userspace
-currently is unsupported.</p>
-
-<h3 id=application_structure>Application structure</h3>
-
-<p>Trusty applications initialize once during load and reside in memory until the
-TEE processor is reset. Trusty currently does not support dynamic loading and
-unloading of applications.</p>
-
-<p>Trusted applications are written as <strong>event-driven servers</strong>
-waiting for commands from other applications or from applications running on
-the main processor. Trusted applications can also be clients of other trusted
-server applications. Events described in the following API sections will be
-delivered to trusted applications by the Trusty kernel.</p>
-
-<h2 id=third-party_trusty_applications>Third-party Trusty applications</h2>
-
-<p>Currently all Trusty applications are developed by a single party and packaged
-with the Trusty kernel image. The entire image is signed and verified by the
-bootloader during boot. Third-party application development is not supported in
-this version of Trusty.</p>
-
-<p>Although the Trusty OS enables the development of new applications, doing so
-must be exercised with extreme care; each new application increases the area of
-the trusted computing base (TCB) of the system. Trusted applications can access
-device secrets and can perform computations or data transformations using them.</p>
-
-<p>The ability to develop new applications that run in the TEE opens up many
-possibilities for innovation. However, due to the very definition of TEE, these
-applications cannot be distributed without some form of <strong>trust</strong> attached.
-Typically this comes in the form of a digital signature by an entity
-trusted by the user of the product on which the application runs.</p>
-
-<h2 id=downloading_building>Downloading and building Trusty</h2>
-
-<p>You can find the Trusty implementation in the Android Open Source Project (AOSP) here:<br/>
-<a href="https://android-review.googlesource.com/#/admin/projects/?filter=trusty">https://android-review.googlesource.com/#/admin/projects/?filter=trusty</a></p>
-
-<p>The Trusty kernel branches on AOSP are here:<br/>
-<a href="https://android.googlesource.com/kernel/common/+/android-trusty-3.10">https://android.googlesource.com/kernel/common/+/android-trusty-3.10</a><br/>
-<a href="https://android.googlesource.com/kernel/common/+/android-trusty-3.18">https://android.googlesource.com/kernel/common/+/android-trusty-3.18</a></p>
-
-<p>To make Trusty, run the following commands (assuming the Android toolchain is already in the path):</p>
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">repo init -u https://android.googlesource.com/trusty/manifest</code>
-<code class="devsite-terminal">repo sync</code>
-<code class="devsite-terminal">make -j24 generic-arm64</code>
-</pre>
-
-<p>You may select another supported build target from: <code>device/*/*/project/*</code></p>
-
+ multi-factor authentication, device reset protection,
+ replay-protected persistent storage, secure PIN and fingerprint processing,
+ and even malware detection.
+</p>
</body>
</html>
diff --git a/en/security/trusty/trusty-ref.html b/en/security/trusty/trusty-ref.html
index 9f0cb2d1..b13e6307 100644
--- a/en/security/trusty/trusty-ref.html
+++ b/en/security/trusty/trusty-ref.html
@@ -21,39 +21,53 @@
limitations under the License.
-->
-
-
-<p>The <a href="index.html">Trusty</a> API generally describes the
-Trusty inter-process communication (IPC)
-system, including communications with the non-secure world. This page defines the
-relevant terms and provides a reference for the API
-calls.</p>
-
-<h2 id=ports_and_channels>Ports and channels</h2>
+<p>Trusty provides APIs for developing two classes of applications/services:</p>
+ <ul>
+ <li>Trusted applications or services that run on the TEE processor</li>
+ <li>Normal/untrusted applications that run on the main processor and use the services provided
+ by trusted applications</li>
+ </ul>
+<p>The <a
+ href="/security/index.html">Trusty</a>
+ API generally describes the Trusty inter-process communication (IPC) system,
+ including communications with the non-secure world. Software running on the
+ main processor can use Trusty APIs to connect to trusted applications/services
+ and exchange arbitrary messages with them just like a network service over IP.
+ It is up to the application to determine the data format and semantics of these
+ messages using an app-level protocol. Reliable delivery of messages is
+ guaranteed by the underlying Trusty infrastructure (in the form of drivers
+ running on the main processor), and the communication is completely asynchronous.
+</p>
+
+<h2 id="ports_and_channels">Ports and channels</h2>
<p>Ports are used by Trusty applications to expose service end-points in the form
-of a named path to which clients connect. This gives a simple, string-based
-service ID for clients to use. The naming convention is reverse-DNS-style
-naming, e.g. <code>com.google.servicename</code>.</p>
+ of a named path to which clients connect. This gives a simple, string-based
+ service ID for clients to use. The naming convention is reverse-DNS-style
+ naming, e.g. <code>com.google.servicename</code>.
+</p>
<p>When a client connects to a port, the client receives a channel for interacting
-with a service. The service must accept an incoming connection, and when it
-does, it too receives a channel. In essence, ports are used to look up services
-and then communication occurs over a pair of connected channels (i.e.,
-connection instances on a port). When a client connects to a port, a symmetric,
-bi-directional connection is established. Using this full-duplex path, clients
-and servers can exchange arbitrary messages until either side decides to tear
-down the connection.</p>
+ with a service. The service must accept an incoming connection, and when it
+ does, it too receives a channel. In essence, ports are used to look up services
+ and then communication occurs over a pair of connected channels (i.e.,
+ connection instances on a port). When a client connects to a port, a symmetric,
+ bi-directional connection is established. Using this full-duplex path, clients
+ and servers can exchange arbitrary messages until either side decides to tear
+ down the connection.
+</p>
<p>Only secure-side trusted applications or Trusty kernel modules can create
-ports. Applications running on the non-secure side (in the normal world) can
-only connect to services published by the secure side.</p>
+ ports. Applications running on the non-secure side (in the normal world) can
+ only connect to services published by the secure side.
+</p>
<p>Depending on requirements, a trusted application can be both a client and a
-server at the same time. A trusted application that publishes a service (as a
-server) might need to connect to other services (as a client).</p>
+ server at the same time. A trusted application that publishes a service (as a
+ server) might need to connect to other services (as a client).
+</p>
-<h2 id=handle_api>Handle API</h2>
+<h2 id="handle_api">Handle API</h2>
<p>Handles are unsigned integers representing resources such as ports and
channels, similar to file descriptors in UNIX. After handles are created, they
@@ -63,7 +77,7 @@ later.</p>
<p>A caller can associate private data with a handle by using
the <code>set_cookie()</code> method.</p>
-<h3 id=methods_handle_api>Methods in the Handle API</h3>
+<h3 id="methods_handle_api">Methods in the Handle API</h3>
<p>Handles are only valid in the context of an application. An application should
not pass the value of a handle to other applications unless explicitly
@@ -71,7 +85,7 @@ specified. A handle value only should be interpreted by comparing it with
the <code>INVALID_IPC_HANDLE #define,</code> which an application can use as an
indication that a handle is invalid or unset.</p>
-<h4 id=set_cookie>set_cookie()</h4>
+<h4 id="set_cookie">set_cookie()</h4>
<p>Associates the caller-provided private data with a specified handle.</p>
@@ -89,10 +103,9 @@ long set_cookie(uint32_t handle, void *cookie)
the handle has been created. The event-handling mechanism supplies the handle
and its cookie back to the event handler.</p>
-<p>Handles can be waited upon for events by using the <code>wait()</code>
-or <code>wait_any()</code> calls.</p>
+<p>Handles can be waited upon for events by using the <code>wait()</code> call.</p>
-<h4 id=wait>wait()</h4>
+<h4 id="wait">wait()</h4>
<p>Waits for an event to occur on a given handle for specified period of time.</p>
@@ -112,28 +125,8 @@ value of -1 is an infinite timeout</p>
specified timeout interval; <code>ERR_TIMED_OUT</code> if a specified timeout elapsed but no
event has occurred; <code>&lt; 0</code> for other errors</p>
-<h4 id=wait_any>wait_any()</h4>
-
-<p>Waits for any event to occur on any handle in the application handle table for
-the specified period of time.</p>
-
-<pre class="prettyprint">
-long wait_any(uevent_t *event, unsigned long timeout_msecs);
-</pre>
-
-<p>[out] <code>event</code>: A pointer to the structure representing an
-event that occurred on this handle</p>
-
-<p>[in] <code>timeout_msecs</code>: A timeout value in milliseconds.
-A value of -1 is an infinite timeout</p>
-
-<p>[retval]: <code>NO_ERROR</code> if a valid event occurred within a
-specified timeout interval; <code>ERR_TIMED_OUT</code> if a specified timeout elapsed but no
-event has occurred; <code>&lt; 0</code> for other errors</p>
-
-<p>Upon success (<code>retval == NO_ERROR</code>), the <code>wait()</code>
-and <code>wait_any()</code> calls
-fill a specified <code>uevent_t</code> structure with information about
+<p>Upon success (<code>retval == NO_ERROR</code>), the <code>wait()</code> call
+fills a specified <code>uevent_t</code> structure with information about
the event that occurred.</p>
<pre class="prettyprint">
@@ -195,7 +188,7 @@ handle it.</p>
<p>Handles can be destroyed by calling the <code>close()</code> method.</p>
-<h4 id=close>close()</h4>
+<h4 id="close">close()</h4>
<p>Destroys the resource associated with the specified handle and removes it from
the handle table.</p>
@@ -208,14 +201,14 @@ long close(uint32_t handle_id);
<p>[retval]: 0 if success; a negative error otherwise</p>
-<h2 id=server_api>Server API</h2>
+<h2 id="server_api">Server API</h2>
<p>A server begins by creating one or more <strong>named ports</strong> representing
its service end-points. Each port is represented by a handle.</p>
-<h3 id=methods_server_api>Methods in the Server API</h3>
+<h3 id="methods_server_api">Methods in the Server API</h3>
-<h4 id=port_create>port_create()</h4>
+<h4 id="port_create">port_create()</h4>
<p>Creates a named service port.</p>
@@ -256,14 +249,14 @@ with peer</p>
negative</p>
<p>The server then polls the list of port handles for incoming connections
-using <code>wait()</code> or <code>wait_any()</code> calls. Upon receiving a connection
+using <code>wait()</code> call. Upon receiving a connection
request indicated by the <code>IPC_HANDLE_POLL_READY</code> bit set in
the <code>event</code> field of the <code>uevent_t</code> structure, the
server should call <code>accept()</code> to finish establishing a connection and create a
channel (represented by
another handle) that can then be polled for incoming messages.</p>
-<h4 id=accept>accept()</h4>
+<h4 id="accept">accept()</h4>
<p>Accepts an incoming connection and gets a handle to a channel.</p>
@@ -280,13 +273,13 @@ will be set to all zeros if the connection originated from the non-secure world<
<p>[retval]: Handle to a channel (if non-negative) on which the server can
exchange messages with the client (or an error code otherwise)</p>
-<h2 id=client_api>Client API</h2>
+<h2 id="client_api">Client API</h2>
<p>This section contains the methods in the Client API.</p>
-<h3 id=methods_client_api>Methods in the Client API</h3>
+<h3 id="methods_client_api">Methods in the Client API</h3>
-<h4 id=connect>connect()</h4>
+<h4 id="connect">connect()</h4>
<p>Initiates a connection to a port specified by name.</p>
@@ -323,12 +316,12 @@ instead of failing immediately.</p>
<p><code>IPC_CONNECT_ASYNC</code> - if set, initiates an asynchronous connection. An
application has to poll for
-the returned handle (by calling <code>wait()</code> or <code>wait_any()</code>) for
+the returned handle (by calling <code>wait()</code> for
a connection completion event indicated by the <code>IPC_HANDLE_POLL_READY</code>
bit set in the event field of the <code>uevent_t</code> structure before starting
normal operation.</p>
-<h2 id=messaging_api>Messaging API</h2>
+<h2 id="messaging_api">Messaging API</h2>
<p>The Messaging API calls enable the sending and reading of messages over a
previously established connection (channel). The Messaging API calls are the
@@ -338,7 +331,7 @@ same for servers and clients.</p>
call, and a server gets a channel handle from an <code>accept()</code> call,
described above.</p>
-<h4 id=structure_of_a_trusty_message>Structure of a Trusty message</h4>
+<h4 id="structure_of_a_trusty_message">Structure of a Trusty message</h4>
<p>As shown in the following, messages exchanged by the Trusty API have a minimal
structure, leaving it to the server and client to agree on the semantics of the
@@ -368,9 +361,9 @@ reads and writes to these blocks
using the <code>iov</code> array. The content of buffers that can be described
by the <code>iov</code> array is completely arbitrary.</p>
-<h3 id=methods_messaging_api>Methods in the Messaging API</h3>
+<h3 id="methods_messaging_api">Methods in the Messaging API</h3>
-<h4 id=send_msg>send_msg()</h4>
+<h4 id="send_msg">send_msg()</h4>
<p>Sends a message over a specified channel.</p>
@@ -393,9 +386,9 @@ In such a case the caller must wait until the peer frees some
space in its receive queue by retrieving the handling and retiring messages,
indicated by the <code>IPC_HANDLE_POLL_SEND_UNBLOCKED</code> bit set in
the <code>event</code> field of the <code>uevent_t</code> structure
-returned by the <code>wait()</code> or <code>wait_any()</code> call.</p>
+returned by the <code>wait()</code> call.</p>
-<h4 id=get_msg>get_msg()</h4>
+<h4 id="get_msg">get_msg()</h4>
<p>Gets meta-information about the next message in an incoming message queue</p>
@@ -423,7 +416,7 @@ particular channel.</p>
<p>[retval]: <code>NO_ERROR</code> on success; a negative error otherwise</p>
-<h4 id=read_msg>read_msg()</h4>
+<h4 id="read_msg">read_msg()</h4>
<p>Reads the content of the message with the specified ID starting from the
specified offset.</p>
@@ -450,7 +443,7 @@ success; a negative error otherwise</p>
a different (not necessarily
sequential) offset as needed.</p>
-<h4 id=put_msg>put_msg()</h4>
+<h4 id="put_msg">put_msg()</h4>
<p>Retires a message with a specified ID.</p>
@@ -467,7 +460,7 @@ long put_msg(uint32_t handle, uint32_t msg_id);
<p>Message content cannot be accessed after a message has been retired and the
buffer it occupied has been freed.</p>
-<h2 id=file_descriptor_api>File Descriptor API</h2>
+<h2 id="file_descriptor_api">File Descriptor API</h2>
<p>The File Descriptor API includes <code>read()</code>, <code>write()</code>,
and <code>ioctl()</code> calls. All of these calls can operate on a predefined (static) set of file
@@ -500,9 +493,9 @@ error, as this stream is very likely to be unthrottled. The <code>read()</code>
to be exercised with caution. Extending file descriptors is prone to create
conflicts and is not generally recommended.</p>
-<h3 id=methods_file_descriptor_api>Methods in the File Descriptor API</h3>
+<h3 id="methods_file_descriptor_api">Methods in the File Descriptor API</h3>
-<h4 id=read>read()</h4>
+<h4 id="read">read()</h4>
<p>Attempts to read up to <code>count</code> bytes of data from a specified file descriptor.</p>
@@ -518,7 +511,7 @@ long read(uint32_t fd, void *buf, uint32_t count);
<p>[retval]: Returned number of bytes read; a negative error otherwise</p>
-<h4 id=write>write()</h4>
+<h4 id="write">write()</h4>
<p>Writes up to <code>count</code> bytes of data to specified file descriptor.</p>
@@ -534,7 +527,7 @@ long write(uint32_t fd, void *buf, uint32_t count);
<p>[retval]: Returned number of bytes written; a negative error otherwise</p>
-<h4 id=ioctl>ioctl()</h4>
+<h4 id="ioctl">ioctl()</h4>
<p>Invokes a specified <code>ioctl</code> command for a given file descriptor.</p>
@@ -548,11 +541,11 @@ long ioctl(uint32_t fd, uint32_t cmd, void *args);
<p>[in/out] <code>args</code>: Pointer to <code>ioctl()</code> arguments</p>
-<h2 id=miscellaneous_api>Miscellaneous API</h2>
+<h2 id="miscellaneous_api">Miscellaneous API</h2>
-<h3 id=methods_misc_api>Methods in the Miscellaneous API</h3>
+<h3 id="methods_misc_api">Methods in the Miscellaneous API</h3>
-<h4 id=gettime>gettime()</h4>
+<h4 id="gettime">gettime()</h4>
<p>Returns the current system time (in nanoseconds).</p>
@@ -568,7 +561,7 @@ long gettime(uint32_t clock_id, uint32_t flags, uint64_t *time);
<p>[retval]: <code>NO_ERROR</code> on success; a negative error otherwise</p>
-<h4 id=nanosleep>nanosleep()</h4>
+<h4 id="nanosleep">nanosleep()</h4>
<p>Suspends execution of the calling application for a specified period of time
and resumes it after that period.</p>
@@ -585,7 +578,7 @@ long nanosleep(uint32_t clock_id, uint32_t flags, uint64_t sleep_time)
<p>[retval]: <code>NO_ERROR</code> on success; a negative error otherwise</p>
-<h2 id=example_of_a_trusted_application_server>Example of a trusted application server</h2>
+<h2 id="example_of_a_trusted_application_server">Example of a trusted application server</h2>
<p>The following sample application shows the usage of the above APIs. The sample
creates an "echo" service that handles multiple incoming connections and
@@ -593,61 +586,57 @@ reflects back to the caller all messages it receives from clients originated
from the secure or non-secure side.</p>
<pre class="prettyprint">
-#include &lt;assert.h>
-#include &lt;err.h>
-#include &lt;stddef.h>
-#include &lt;stdio.h>
-#include &lt;stdlib.h>
-#include &lt;string.h>
-#include &lt;trusty_std.h>
-
-#include &lt;app/echo/uuids.h>
-
+#include < stddef.h >
+#include < stdio.h >
+#include < stdlib.h >
+#include < string.h >
+#include < trusty_std.h >
+#include < app / echo / uuids.h >
#define LOG_TAG "echo_srv"
+#define TLOGE(fmt, ...)\
+fprintf(stderr, "%s: %d: "
+ fmt, LOG_TAG, __LINE__, ##__VA_ARGS__)
-#define TLOGE(fmt, ...) \
- fprintf(stderr, "%s: %d: " fmt, LOG_TAG, __LINE__, ## __VA_ARGS__)
+# define MAX_ECHO_MSG_SIZE 64
-#define MAX_ECHO_MSG_SIZE 64
-
-static const char *srv_name = "com.android.echo.srv.echo";
+static
+const char * srv_name = "com.android.echo.srv.echo";
static uint8_t msg_buf[MAX_ECHO_MSG_SIZE];
/*
* Message handler
*/
-static int handle_msg(handle_t chan)
-{
+static int handle_msg(handle_t chan) {
int rc;
iovec_t iov;
ipc_msg_t msg;
ipc_msg_info_t msg_inf;
iov.base = msg_buf;
- iov.len = sizeof(msg_buf);
+ iov.len = sizeof(msg_buf);
msg.num_iov = 1;
- msg.iov = &iov;
+ msg.iov = & iov;
msg.num_handles = 0;
- msg.handles = NULL;
+ msg.handles = NULL;
/* get message info */
- rc = get_msg(chan, &msg_inf);
+ rc = get_msg(chan, & msg_inf);
if (rc == ERR_NO_MSG)
return NO_ERROR; /* no new messages */
if (rc != NO_ERROR) {
TLOGE("failed (%d) to get_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
/* read msg content */
- rc = read_msg(chan, msg_inf.id, 0, &msg);
- if (rc &lt; 0) {
+ rc = read_msg(chan, msg_inf.id, 0, & msg);
+ if (rc < 0) {
TLOGE("failed (%d) to read_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
@@ -655,18 +644,18 @@ static int handle_msg(handle_t chan)
iov.len = (size_t) rc;
/* send message back to the caller */
- rc = send_msg(chan, &msg);
- if (rc &lt; 0) {
+ rc = send_msg(chan, & msg);
+ if (rc < 0) {
TLOGE("failed (%d) to send_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
/* retire message */
rc = put_msg(chan, msg_inf.id);
- if ( rc != NO_ERROR) {
+ if (rc != NO_ERROR) {
TLOGE("failed (%d) to put_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
@@ -676,23 +665,22 @@ static int handle_msg(handle_t chan)
/*
* Channel event handler
*/
-static void handle_channel_event(const uevent_t *ev)
-{
+static void handle_channel_event(const uevent_t * ev) {
int rc;
- if (ev->event & IPC_HANDLE_POLL_MSG) {
- rc = handle_msg(ev->handle);
+ if (ev - > event & IPC_HANDLE_POLL_MSG) {
+ rc = handle_msg(ev - > handle);
if (rc != NO_ERROR) {
/* report an error and close channel */
TLOGE("failed (%d) to handle event on channel %d\n",
- rc, ev->handle);
- close(ev->handle);
+ rc, ev - > handle);
+ close(ev - > handle);
}
return;
}
- if (ev->event & IPC_HANDLE_POLL_HUP) {
+ if (ev - > event & IPC_HANDLE_POLL_HUP) {
/* closed by peer. */
- close(ev->handle);
+ close(ev - > handle);
return;
}
}
@@ -700,110 +688,84 @@ static void handle_channel_event(const uevent_t *ev)
/*
* Port event handler
*/
-static void handle_port_event(const uevent_t *ev)
-{
- uuid_t peer_uuid;
-
- if ((ev->event & IPC_HANDLE_POLL_ERROR) ||
- (ev->event & IPC_HANDLE_POLL_HUP) ||
- (ev->event & IPC_HANDLE_POLL_MSG) ||
- (ev->event & IPC_HANDLE_POLL_SEND_UNBLOCKED)) {
- /* should never happen with port handles */
- TLOGE("error event (0x%x) for port (%d)\n",
- ev->event, ev->handle);
- abort();
- }
- if (ev->event & IPC_HANDLE_POLL_READY) {
- /* incoming connection: accept it */
- int rc = accept(ev->handle, &peer_uuid);
- if (rc &lt; 0) {
- TLOGE("failed (%d) to accept on port %d\n",
- rc, ev->handle);
- return;
+static void handle_port_event(const uevent_t * ev) {
+ uuid_t peer_uuid;
+
+ if ((ev - > event & IPC_HANDLE_POLL_ERROR) ||
+ (ev - > event & IPC_HANDLE_POLL_HUP) ||
+ (ev - > event & IPC_HANDLE_POLL_MSG) ||
+ (ev - > event & IPC_HANDLE_POLL_SEND_UNBLOCKED)) {
+ /* should never happen with port handles */
+ TLOGE("error event (0x%x) for port (%d)\n",
+ ev - > event, ev - > handle);
+ abort();
}
- }
-}
-
-/*
- * Main application entry point
- */
-int main(void)
-{
- int rc;
- handle_t port;
-
- /* Initialize service */
- rc = port_create(srv_name, 1, MAX_ECHO_MSG_SIZE,
- IPC_PORT_ALLOW_NS_CONNECT |
- IPC_PORT_ALLOW_TA_CONNECT );
- if (rc &lt; 0) {
- TLOGE("Failed (%d) to create port %s\n",
- rc, srv_name);
- abort();
- }
- port = (handle_t)rc;
-
- /* enter main event loop */
- while (true) {
- uevent_t ev;
-
- ev.handle = INVALID_IPC_HANDLE;
- ev.event = 0;
- ev.cookie = NULL;
-
- /* wait forever */
- rc = wait_any(&ev, -1);
- if (rc == NO_ERROR) {
- /* got an event */
- if (ev.handle == port) {
- handle_port_event(&ev);
- } else {
- handle_channel_event(&ev);
+ if (ev - > event & IPC_HANDLE_POLL_READY) {
+ /* incoming connection: accept it */
+ int rc = accept(ev - > handle, &peer_uuid);
+ if (ev - > event & IPC_HANDLE_POLL_READY) {
+ /* incoming connection: accept it */
+ int rc = accept(ev - > handle, &peer_uuid);
+ if (rc < 0) {
+ TLOGE("failed (%d) to accept on port %d\n",
+ rc, ev - > handle);
+ return;
+ }
+ handle_t chan = rc;
+ while (true){
+ struct uevent cev;
+
+ rc = wait(handle, &cev, -1);
+ if (rc < 0) {
+ TLOGE("wait returned (%d)\n", rc);
+ abort();
+ }
+ handle_channel_event(&cev);
+ if (cev.event & IPC_HANDLE_POLL_HUP) {
+ return;
+ }
}
- } else {
- TLOGE("wait_any returned (%d)\n", rc);
- abort();
}
- }
- return 0;
-}
-</pre>
-<h2 id=example_of_a_trusted_application_client>Example of a trusted application client</h2>
-<p>The following code snippets show the use of the Trusty messaging APIs to
-implement a client of an "echo" service (shown in the code above). The <code>sync_connect()</code>
-method shows an implementation of a synchronous connect with a timeout on top
-of an asynchronous <code>connect()</code> call.</p>
+ /*
+ * Main application entry point
+ */
+ int main(void) {
+ int rc;
+ handle_t port;
-<pre class="prettyprint">
-/*
- * Local wrapper on top of an async connect that provides a
- * synchronous connect with timeout.
- */
-int sync_connect(const char *path, uint timeout)
-{
- int rc;
- uevent_t evt;
- handle_t chan;
-
- rc = connect(path, IPC_CONNECT_ASYNC | IPC_CONNECT_WAIT_FOR_PORT);
- if (rc >= 0) {
- chan = (handle_t) rc;
- rc = wait(chan, &evt, timeout);
- if (rc == 0) {
- rc = ERR_BAD_STATE;
- if (evt.handle == chan) {
- if (evt.event & IPC_HANDLE_POLL_READY)
- return chan;
- if (evt.event & IPC_HANDLE_POLL_HUP)
- rc = ERR_CHANNEL_CLOSED;
+ /* Initialize service */
+ rc = port_create(srv_name, 1, MAX_ECHO_MSG_SIZE,
+ IPC_PORT_ALLOW_NS_CONNECT |
+ IPC_PORT_ALLOW_TA_CONNECT);
+ if (rc < 0) {
+ TLOGE("Failed (%d) to create port %s\n",
+ rc, srv_name);
+ abort();
+ }
+ port = (handle_t) rc;
+
+ /* enter main event loop */
+ while (true) {
+ uevent_t ev;
+
+ ev.handle = INVALID_IPC_HANDLE;
+ ev.event = 0;
+ ev.cookie = NULL;
+
+ /* wait forever */
+ rc = wait(port, &ev, -1)
+ if (rc == NO_ERROR) {
+ /* got an event */
+ handle_port_event(&ev);
+ } else {
+ TLOGE("wait returned (%d)\n", rc);
+ abort();
+ }
}
+ return 0;
}
- close(chan);
- }
- return rc;
-}
</pre>
<p>The <code>run_end_to_end_msg_test()</code> method sends 10,000 messages asynchronously
@@ -906,7 +868,7 @@ abort_test:
}
</pre>
-<h2 id=non-secure_world_apis_and_applications>Non-secure world APIs and applications</h2>
+<h2 id="non-secure_world_apis_and_applications">Non-secure world APIs and applications</h2>
<p>A set of Trusty services, published from the secure side and marked with
the <code>IPC_PORT_ALLOW_NS_CONNECT</code> attribute, are accessible to kernel
@@ -921,7 +883,7 @@ trusty-ipc kernel driver and registers a character device node that can be used
by user space processes to communicate with services running on the secure
side.</p>
-<h3 id=user_space_trusty_ipc_client_api>User space Trusty IPC Client API</h3>
+<h3 id="user_space_trusty_ipc_client_api">User space Trusty IPC Client API</h3>
<p>The user space Trusty IPC Client API library is a thin layer on top of the
device node <code>fd</code>.</p>
@@ -967,7 +929,7 @@ messages that are delivered back to the non-secure side and placed in the
appropriate channel file descriptor message queue to be retrieved by the user
space application <code>read()</code> call.</p>
-<h4 id=tipc_connect>tipc_connect()</h4>
+<h4 id="tipc_connect">tipc_connect()</h4>
<p>Opens a specified <code>tipc</code> device node and initiates a
connection to a specified Trusty service.</p>
@@ -982,7 +944,7 @@ int tipc_connect(const char *dev_name, const char *srv_name);
<p>[retval]: Valid file descriptor on success, -1 otherwise.</p>
-<h4 id=tipc_close>tipc_close()</h4>
+<h4 id="tipc_close">tipc_close()</h4>
<p>Closes the connection to the Trusty service specified by a file descriptor.</p>
@@ -993,7 +955,7 @@ int tipc_close(int fd);
<p>[in] <code>fd</code>: File descriptor previously opened by
a <code>tipc_connect()</code> call</p>
-<h2 id=kernel_trusty_ipc_client_api>Kernel Trusty IPC Client API</h2>
+<h2 id="kernel_trusty_ipc_client_api">Kernel Trusty IPC Client API</h2>
<p>The kernel Trusty IPC Client API is available for kernel drivers. The user
space Trusty IPC API is implemented on top of this API.</p>
@@ -1039,9 +1001,9 @@ for further processing. A detached <code>rx</code> buffer must be tracked
and eventually released using a <code>tipc_chan_put_rxbuf()</code> call when
it is no longer needed.</p>
-<h3 id=methods_ktic_api>Methods in the Kernel Trusty IPC Client API</h3>
+<h3 id="methods_ktic_api">Methods in the Kernel Trusty IPC Client API</h3>
-<h4 id=tipc_create_channel>tipc_create_channel()</h4>
+<h4 id="tipc_create_channel">tipc_create_channel()</h4>
<p>Creates and configures an instance of a Trusty IPC channel for a particular
trusty-ipc device.</p>
@@ -1104,7 +1066,7 @@ received over a specified channel:</p>
can be a new buffer obtained by the <code>tipc_chan_get_rxbuf()</code> call)
</ul>
-<h4 id=tipc_chan_connect>tipc_chan_connect()</h4>
+<h4 id="tipc_chan_connect">tipc_chan_connect()</h4>
<p>Initiates a connection to the specified Trusty IPC service.</p>
@@ -1123,7 +1085,7 @@ service name to which to connect</p>
<p>The caller is notified when a connection is established by receiving a
<code>handle_event</code> callback.</p>
-<h4 id=tipc_chan_shutdown>tipc_chan_shutdown()</h4>
+<h4 id="tipc_chan_shutdown">tipc_chan_shutdown()</h4>
<p>Terminates a connection to the Trusty IPC service previously initiated
by a <code>tipc_chan_connect()</code> call.</p>
@@ -1135,7 +1097,7 @@ int tipc_chan_shutdown(struct tipc_chan *chan);
<p>[in] <code>chan</code>: Pointer to a channel returned by
a <code>tipc_create_chan()</code> call</p>
-<h4 id=tipc_chan_destroy>tipc_chan_destroy()</h4>
+<h4 id="tipc_chan_destroy">tipc_chan_destroy()</h4>
<p>Destroys a specified Trusty IPC channel.</p>
@@ -1146,7 +1108,7 @@ void tipc_chan_destroy(struct tipc_chan *chan);
<p>[in] <code>chan</code>: Pointer to a channel returned by the
<code>tipc_create_chan()</code> call</p>
-<h4 id=tipc_chan_get_txbuf_timeout>tipc_chan_get_txbuf_timeout()</h4>
+<h4 id="tipc_chan_get_txbuf_timeout">tipc_chan_get_txbuf_timeout()</h4>
<p>Obtains a message buffer that can be used to send data over a specified
channel. If the buffer is not immediately available the caller may be blocked
@@ -1165,7 +1127,7 @@ tipc_chan_get_txbuf_timeout(struct tipc_chan *chan, long timeout);
<p>[retval]: A valid message buffer on success,
<code>ERR_PTR(err)</code> on error</p>
-<h4 id=tipc_chan_queue_msg>tipc_chan_queue_msg()</h4>
+<h4 id="tipc_chan_queue_msg">tipc_chan_queue_msg()</h4>
<p>Queues a message to be sent over the specified
Trusty IPC channels.</p>
@@ -1181,7 +1143,7 @@ int tipc_chan_queue_msg(struct tipc_chan *chan, struct tipc_msg_buf *mb);
<p>[retval]: 0 on success, a negative error otherwise</p>
-<h4 id=tipc_chan_put_txbuf>tipc_chan_put_txbuf()</h4>
+<h4 id="tipc_chan_put_txbuf">tipc_chan_put_txbuf()</h4>
<p>Releases the specified <code>Tx</code> message buffer
previously obtained by a <code>tipc_chan_get_txbuf_timeout()</code> call.</p>
@@ -1198,7 +1160,7 @@ this message buffer belongs</p>
<p>[retval]: None</p>
-<h4 id=tipc_chan_get_rxbuf>tipc_chan_get_rxbuf()</h4>
+<h4 id="tipc_chan_get_rxbuf">tipc_chan_get_rxbuf()</h4>
<p>Obtains a new message buffer that can be used to receive messages over the
specified channel.</p>
@@ -1211,7 +1173,7 @@ struct tipc_msg_buf *tipc_chan_get_rxbuf(struct tipc_chan *chan);
<p>[retval]: A valid message buffer on success, <code>ERR_PTR(err)</code> on error</p>
-<h4 id=tipc_chan_put_rxbuf>tipc_chan_put_rxbuf()</h4>
+<h4 id="tipc_chan_put_rxbuf">tipc_chan_put_rxbuf()</h4>
<p>Releases a specified message buffer previously obtained by a
<code>tipc_chan_get_rxbuf()</code> call.</p>
@@ -1229,3 +1191,4 @@ void tipc_chan_put_rxbuf(struct tipc_chan *chan,
</body>
</html>
+
diff --git a/en/setup/_translation.yaml b/en/setup/_translation.yaml
deleted file mode 100644
index 88d00f99..00000000
--- a/en/setup/_translation.yaml
+++ /dev/null
@@ -1,10 +0,0 @@
-enable_continuous_translation: true
-title: Android Open Source Project Setup tab
-description: Translations for SAC Setup tab
-language:
-- zh-CN
-cc:
-- sac-doc-leads+translation@google.com
-reviewer:
-- daroberts
-product: Android
diff --git a/en/setup/build/dashboard.html b/en/setup/build/dashboard.html
index 7dee5bee..71aeda5a 100644
--- a/en/setup/build/dashboard.html
+++ b/en/setup/build/dashboard.html
@@ -21,9 +21,10 @@
limitations under the License.
-->
-<p>This dashboard provides visibility into the
+<p>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>
+ integration</a> dashboard (<a href="https://ci.android.com/" class="external">ci.android.com</a>)
+ provides visibility into the 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
diff --git a/en/setup/build/gsi.html b/en/setup/build/gsi.html
index c7e32c3a..5e204647 100644
--- a/en/setup/build/gsi.html
+++ b/en/setup/build/gsi.html
@@ -34,7 +34,7 @@
Compatibility program</a>. The system image of an Android device is replaced
with a GSI then tested with the <a href="/compatibility/vts/">Vendor Test
Suite (VTS)</a> and the <a href="/compatibility/cts/">Compatibility Test Suite
- (CTS)</a> to ensure the device implements vendor inferfaces correctly with the
+ (CTS)</a> to ensure the device implements vendor interfaces correctly with the
latest version of Android.
</p>
diff --git a/en/setup/index.html b/en/setup/index.html
index 3728eb2f..33c05e1f 100644
--- a/en/setup/index.html
+++ b/en/setup/index.html
@@ -46,21 +46,22 @@ consumer product with source code open for customization and porting.
<h2 id="governance-philosophy">Governance Philosophy</h2>
<p>Android was originated by a group of companies known as the Open
-Handset Alliance, led by Google. Today, many companies -- both original members
-of the OHA and others -- have invested heavily in Android. These companies have
+Handset Alliance, led by Google. Today, many companies—both original members
+of the OHA and others—have invested heavily in Android. These companies have
allocated significant engineering resources to improve Android and bring Android
devices to market.
</p>
<p>The companies that have invested in Android have done so on its merits
because we believe an open platform is necessary. Android is
-intentionally and explicitly an open source -- as opposed to a free software --
+intentionally and explicitly an open source—as opposed to a free software—
effort; a group of organizations with shared needs has pooled
resources to collaborate on a single implementation of a shared product.
The Android philosophy is pragmatic, first and foremost. The objective is
a shared product that each contributor can tailor and customize.</p>
<p>Uncontrolled customization can, of course, lead to incompatible
-implementations. To prevent this, the Android Open Source Project also maintains the <a href="/compatibility/index.html">Android
+implementations. To prevent this, the Android Open Source Project also
+maintains the <a href="/compatibility/index.html">Android
Compatibility Program</a>, which spells out what it means to be "Android
compatible" and what is required of device builders to achieve that status.
Anyone can (and will!) use the Android source code for any purpose, and we
diff --git a/en/setup/start/build-numbers.html b/en/setup/start/build-numbers.html
index 2b114631..509c6d03 100644
--- a/en/setup/start/build-numbers.html
+++ b/en/setup/start/build-numbers.html
@@ -241,28 +241,39 @@ following table.
</thead>
<tbody>
<tr>
+ <td>PQ1A.190105.004</td>
+ <td>android-9.0.0_r30</td>
+ <td>Pie</td>
+ <td>Pixel 3 XL, Pixel 3, Pixel 2 XL, Pixel 2, Pixel XL, Pixel</td>
+ <td>2019-01-05</td>
+ </tr>
+ <tr>
<td>PQ1A.181205.006.A1</td>
<td>android-9.0.0_r22</td>
<td>Pie</td>
<td>Pixel 3 XL, Pixel 3</td>
+ <td>2018-12-05</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>
+ <td>2018-12-05</td>
</tr>
<tr>
<td>PQ1A.181205.002.A1</td>
<td>android-9.0.0_r20</td>
<td>Pie</td>
<td>Pixel XL, Pixel</td>
+ <td>2018-12-05</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>
+ <td>2018-12-05</td>
</tr>
<tr>
<td>PPR2.181005.003.A1</td>
@@ -363,16 +374,25 @@ following table.
<td>2018-08-05</td>
</tr>
<tr>
+ <td>OPM8.190105.002</td>
+ <td>android-8.1.0_r60</td>
+ <td>Oreo</td>
+ <td>Pixel C</td>
+ <td>2019-01-05</td>
+ </tr>
+ <tr>
<td>OPM8.181205.001</td>
<td>android-8.1.0_r53</td>
<td>Oreo</td>
<td>Pixel C</td>
+ <td>2018-12-05</td>
</tr>
<tr>
<td>OPM7.181205.001</td>
<td>android-8.1.0_r52</td>
<td>Oreo</td>
<td>Nexus 5X, Nexus 6P</td>
+ <td>2018-12-05</td>
</tr>
<tr>
<td>OPM8.181105.002</td>
diff --git a/en/setup/start/licenses.html b/en/setup/start/licenses.html
index 49865996..4c0e22f1 100644
--- a/en/setup/start/licenses.html
+++ b/en/setup/start/licenses.html
@@ -94,7 +94,7 @@
Since Android software is typically shipped in the form of a static system
image, complying with these requirements restricts OEMs' designs. For
instance, it's difficult for a user to replace a library on read-only
- flash storage.)
+ flash storage.
</li>
<li>
LGPL requires allowance of customer modification and reverse
diff --git a/en/whitelist/_book.yaml b/en/whitelist/_book.yaml
deleted file mode 100644
index 5c59d5d7..00000000
--- a/en/whitelist/_book.yaml
+++ /dev/null
@@ -1,129 +0,0 @@
-upper_tabs:
-- name: Set up
- lower_tabs:
- other:
- - name: Overview
- contents:
- - title: Overview
- path: /setup/
- - name: Start
- contents:
- - include: /setup/_toc-start.yaml
- - name: Download
- contents:
- - include: /setup/_toc-download.yaml
- - name: Build
- contents:
- - include: /setup/_toc-build.yaml
- - name: Create
- contents:
- - include: /setup/_toc-create.yaml
- - name: Contribute
- contents:
- - include: /setup/_toc-contribute.yaml
- - name: Contact
- contents:
- - include: /setup/_toc-contact.yaml
-- name: Design
- lower_tabs:
- other:
- - name: Overview
- contents:
- - include: /compatibility/_toc-purpose.yaml
- - name: Architecture
- contents:
- - include: /compatibility/_toc-architecture.yaml
- - name: Compatibility
- contents:
- - include: /compatibility/_toc-compatibility.yaml
- - name: Display
- contents:
- - include: /compatibility/_toc-display.yaml
- - name: Settings
- contents:
- - include: /compatibility/_toc-settings.yaml
- - name: Tests
- contents:
- - include: /compatibility/_toc-tests.yaml
-- name: Secure
- lower_tabs:
- other:
- - name: Overview
- contents:
- - include: /security/_toc-overview.yaml
- - name: Bulletins
- contents:
- - include: /security/_toc-bulletins.yaml
- - name: Features
- contents:
- - include: /security/_toc-features.yaml
- - name: Dynamic Analysis
- contents:
- - include: /security/_toc-fuzz.yaml
-- name: Develop
- lower_tabs:
- other:
- - name: Audio
- contents:
- - include: /devices/_toc-audio.yaml
- - name: Camera
- contents:
- - include: /devices/_toc-camera.yaml
- - name: Connectivity
- contents:
- - include: /devices/_toc-connectivity.yaml
- - name: Graphics
- contents:
- - include: /devices/_toc-graphics.yaml
- - name: Interaction
- contents:
- - include: /devices/_toc-interaction.yaml
- - name: Media
- contents:
- - include: /devices/_toc-media.yaml
- - name: Storage
- contents:
- - include: /devices/_toc-storage.yaml
-- name: Configure
- lower_tabs:
- other:
- - name: ART
- contents:
- - include: /devices/_toc-runtime.yaml
- - name: Data
- contents:
- - include: /devices/_toc-data.yaml
- - name: Enterprise
- contents:
- - include: /devices/_toc-enterprise.yaml
- - name: Performance
- contents:
- - include: /devices/_toc-performance.yaml
- - name: Permissions
- contents:
- - include: /devices/_toc-permissions.yaml
- - name: Power
- contents:
- - include: /devices/_toc-power.yaml
- - name: Updates
- contents:
- - include: /devices/_toc-update.yaml
-- name: Reference
- lower_tabs:
- other:
- - name: Overview
- contents:
- - title: Overview
- path: /reference/
- - name: HIDL
- contents:
- - include: /reference/hidl/_toc.yaml
- - name: HAL
- contents:
- - include: /reference/hal/_toc.yaml
- - name: Trade Federation
- contents:
- - include: /reference/tradefed/_toc.yaml
-- name: Whitelist
- whitelist: /whitelist/
- path: /whitelist/
diff --git a/en/whitelist/_whitelist.yaml b/en/whitelist/_whitelist.yaml
deleted file mode 100644
index 25dc0876..00000000
--- a/en/whitelist/_whitelist.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-whitelist:
-- group: devsite-test-group@62144783.test.corp-partner.google.com
-- group: kunal_test@googlegroups.com
-- email: dlazin@gmail.com
diff --git a/en/whitelist/index.md b/en/whitelist/index.md
deleted file mode 100644
index 6c2dd500..00000000
--- a/en/whitelist/index.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Project: /_project.yaml
-Book: /whitelist/_book.yaml
-
-# Test page
-
-I am a test page.
diff --git a/ja/security/bulletin/2018-07-01.html b/ja/security/bulletin/2018-07-01.html
index b84adcd7..883c5316 100644
--- a/ja/security/bulletin/2018-07-01.html
+++ b/ja/security/bulletin/2018-07-01.html
@@ -22,18 +22,18 @@
<p><em>2018 年 7 月 2 日公開 | 2018 年 7 月 3 日更新</em></p>
<p>
-Android のセキュリティに関する公開情報には、Android 搭載端末に影響を及ぼすセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-07-05 以降では、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705">Android のバージョンを確認して更新する</a>をご覧ください。
+Android のセキュリティに関する公開情報には、Android デバイスに影響を及ぼすセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-07-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)のレポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
<p>
-下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
+下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあることです。<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-07-01.html">2018 年 7 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-07-01.html">2018 年 7 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
</p>
<h2 id="mitigations">Android と Google サービスでのリスク軽減策</h2>
@@ -42,7 +42,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</p>
<ul>
<li>機能強化された最新版の Android プラットフォームでは、Android 上の多くの問題について悪用が困難になります。Google では、すべてのユーザーに対し、できる限り最新バージョンの 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>についてユーザーに警告しています。Google Play プロテクトは、<a href="http://www.android.com/gms">Google モバイル サービス</a>を搭載した端末でデフォルトで有効になっており、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>についてユーザーに警告しています。Google Play プロテクトは、<a href="http://www.android.com/gms">Google モバイル サービス</a>を搭載したデバイスではデフォルトで有効になっており、Google Play 以外からアプリをインストールするユーザーにとって特に重要です。</li>
</ul>
<h2 id="2018-07-01-details">セキュリティ パッチレベル 2018-07-01 の脆弱性の詳細</h2>
<p>
@@ -459,24 +459,24 @@ Android パートナーには、情報公開の 1 か月前までにすべての
<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">Android のバージョンを確認して更新する</a>をご覧ください。</p>
+<p><strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?</strong></p>
+<p>デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Android のバージョンを確認して更新する</a>をご覧ください。</p>
<ul>
<li>セキュリティ パッチレベル 2018-07-01 以降では、セキュリティ パッチレベル 2018-07-01 に関連するすべての問題に対処しています。</li>
<li>セキュリティ パッチレベル 2018-07-05 以降では、セキュリティ パッチレベル 2018-07-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
</ul>
-<p>このアップデートを組み込んだ端末メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
+<p>このアップデートを組み込んだ各メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-07-01]</li>
<li>[ro.build.version.security_patch]:[2018-07-05]</li>
</ul>
<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
<p>
-この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
</p>
<ul>
-<li>2018-07-01 のセキュリティ パッチレベルを使用する端末では、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
-<li>2018-07-05 以降のセキュリティ パッチレベルを使用する端末には、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
+<li>2018-07-01 のセキュリティ パッチレベルを使用するデバイスには、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2018-07-05 以降のセキュリティ パッチレベルを使用するデバイスには、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
</ul>
<p>
パートナーには、対処するすべての問題の修正を 1 つのアップデートにまとめて提供することが推奨されています。
@@ -553,13 +553,13 @@ Android パートナーには、情報公開の 1 か月前までにすべての
<strong>5. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照」列の Android バグ ID の横に「*」を付けています。<em></em>この問題のアップデートは、<a href="https://developers.google.com/android/drivers">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに通常含まれています。
+公開されていない問題には、「参照」列の Android バグ ID の横に「*」を付けています。<em></em>この問題のアップデートは、<a href="https://developers.google.com/android/drivers">Google デベロッパー サイト</a>から入手できる Pixel / Nexus デバイス用最新バイナリ ドライバに通常含まれています。
</p>
<p>
-<strong>6. セキュリティの脆弱性が、この公開情報と端末やパートナーのセキュリティに関する公開情報(Pixel / Nexus のセキュリティに関する公開情報など)に分けられているのはなぜですか?</strong>
+<strong>6. セキュリティの脆弱性が、この公開情報と、デバイスやパートナーのセキュリティに関する公開情報(Pixel / Nexus のセキュリティに関する公開情報など)に分けられているのはなぜですか?</strong>
</p>
<p>
-Android 搭載端末の最新のセキュリティ パッチレベルを宣言するためには、このセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、端末やパートナーのセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処は必須ではありません。<a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a>、<a href="https://lgsecurity.lge.com/security_updates.html">LGE</a> などの Android 搭載端末やチップセットのメーカーには、自社の端末に関して他にも修正がある場合は、自社のセキュリティ関連のウェブサイトや <a href="/security/bulletin/pixel/">Pixel / Nexus</a> のセキュリティに関する公開情報にその情報を掲載することが推奨されています。
+Android デバイスの最新のセキュリティ パッチレベルを宣言するためには、このセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要となります。それ以外の、デバイスやパートナーのセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処は必要ありません。<a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a>、<a href="https://lgsecurity.lge.com/security_updates.html">LGE</a> などの Android デバイスやチップセットのメーカーは、自社のデバイスに関して他にも修正がある場合、その情報を自社のセキュリティ関連のウェブサイトや <a href="/security/bulletin/pixel/">Pixel / Nexus</a> のセキュリティに関する公開情報に掲載することが推奨されています。
</p>
<h2 id="versions">バージョン</h2>
<table>
diff --git a/ja/security/bulletin/2018-08-01.html b/ja/security/bulletin/2018-08-01.html
index 27867764..ea94e7e8 100644
--- a/ja/security/bulletin/2018-08-01.html
+++ b/ja/security/bulletin/2018-08-01.html
@@ -21,18 +21,18 @@
-->
<p><em>2018 年 8 月 6 日公開</em></p>
-<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-08-05 以降では、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+<p>Android のセキュリティに関する公開情報には、Android デバイスに影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-08-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)のレポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
<p>
-下記の問題のうち最も重大度の高いものは、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれのある重大なセキュリティの脆弱性です。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
+下記の問題のうち最も重大度の高いものは、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれのある重大なセキュリティの脆弱性です。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象のデバイスでその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
</p>
<p>
-この新たに報告された問題によって実際のユーザー端末が不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/index.html">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">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>でご覧いただけます。
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-08-01.html">2018 年 8 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
</p>
<h2 id="mitigations">Android と Google サービスでのリスク軽減策</h2>
@@ -41,7 +41,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</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>
+<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-08-01-details">セキュリティ パッチレベル 2018-08-01 の脆弱性の詳細</h2>
<p>
@@ -336,7 +336,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%" />
@@ -509,24 +509,24 @@ QC-CR#2204872</a></td>
<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>
+<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-08-01 以降では、セキュリティ パッチレベル 2018-08-01 に関連するすべての問題に対処しています。</li>
<li>セキュリティ パッチレベル 2018-08-05 以降では、セキュリティ パッチレベル 2018-08-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
</ul>
-<p>このアップデートを組み込んだ端末メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
+<p>このアップデートを組み込んだデバイス メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-08-01]</li>
<li>[ro.build.version.security_patch]:[2018-08-05]</li>
</ul>
<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
<p>
-この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーには、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
</p>
<ul>
-<li>2018-08-01 のセキュリティ パッチレベルを使用する端末では、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
-<li>2018-08-05 以降のセキュリティ パッチレベルを使用する端末には、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
+<li>2018-08-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2018-08-05 以降のセキュリティ パッチレベルを使用するデバイスには、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
</ul>
<p>
パートナーには、対処するすべての問題の修正を 1 つのアップデートにまとめて提供することが推奨されています。
@@ -603,13 +603,13 @@ QC-CR#2204872</a></td>
<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 端末用最新バイナリ ドライバに通常含まれています。
+公開されていない問題には、「参照」列の 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>
+<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> のセキュリティに関する公開情報に掲載することが推奨されています。
+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>
diff --git a/ja/security/bulletin/2018-09-01.html b/ja/security/bulletin/2018-09-01.html
index 5ddd45e2..796499e1 100644
--- a/ja/security/bulletin/2018-09-01.html
+++ b/ja/security/bulletin/2018-09-01.html
@@ -21,18 +21,18 @@
-->
<p><em>2018 年 9 月 4 日公開 | 2018 年 9 月 5 日更新</em></p>
-<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-09-05 以降では、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する方法</a>をご覧ください。
+<p>Android のセキュリティに関する公開情報には、Android デバイスに影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-09-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する方法</a>をご覧ください。
</p>
<p>
Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)リポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
<p>
-下記の問題のうち最も重要なのは、メディア フレームワークの重大なセキュリティの脆弱性です。この脆弱性が原因となり、リモートの攻撃者が特別に細工したファイルを使って、特権プロセス内で任意のコードを実行できるようになるおそれがあります。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
+下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使って特権プロセス内で任意のコードを実行できるようになるおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象のデバイスでその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
</p>
<p>
-この新たに報告された問題によって実際のユーザー端末が不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="#mitigations">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="/security/enhancements/">Android と Google サービスでのリスク軽減策</a>をご覧ください。
+この新たに報告された問題によってユーザーのデバイスが実際に不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google サービスでのリスク軽減策</a>をご覧ください。
</p>
<p class="note">
-<strong>注:</strong> 最新の無線(OTA)アップデートと Google 端末のファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-09-01">2018 年 9 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-09-01">2018 年 9 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
</p>
<h2 id="mitigations">Android と Google サービスでのリスク軽減策</h2>
@@ -41,14 +41,14 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</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>
+<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-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 バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に番号を併記して、追加の参照先へのリンクを設定しています。</p>
<h3 id="android-runtime">Android ランタイム</h3>
-<p>Android ランタイムの最も重大な脆弱性により、リモートの攻撃者が特別に細工したファイルを用いて、ライブラリが使用されるアプリ内で任意のコードを実行できるようになるおそれがあります。</p>
+<p>Android ランタイムの最も重大な脆弱性により、リモートの攻撃者が特別に細工したファイルを用いて、ライブラリを使用するアプリのコンテキスト内で任意のコードを実行できるようになるおそれがあります。</p>
<table>
<colgroup><col width="21%" />
@@ -119,7 +119,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</tbody></table>
<h3 id="library">ライブラリ</h3>
-<p>ライブラリの最も重大な脆弱性により、リモートの攻撃者が特別に細工したファイルを用いて、ライブラリが使用されるアプリ内で任意のコードを実行できるようになるおそれがあります。</p>
+<p>ライブラリの最も重大な脆弱性により、リモートの攻撃者が特別に細工したファイルを用いて、ライブラリを使用するアプリのコンテキスト内で任意のコードを実行できるようになるおそれがあります。</p>
<table>
<colgroup><col width="21%" />
@@ -144,7 +144,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</tbody></table>
<h3 id="media-framework">メディア フレームワーク</h3>
-<p>メディア フレームワークの最も重大な脆弱性が原因で、悪意のあるローカルアプリが、追加権限の取得に必要なユーザー操作の要件を回避できるようになるおそれがあります。</p>
+<p>メディア フレームワークの最も重大な脆弱性により、悪意のあるローカルアプリが、追加権限の取得に必要なユーザー操作の要件を回避できるようになるおそれがあります。</p>
<table>
<colgroup><col width="21%" />
@@ -292,44 +292,12 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</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 バージョン(該当する場合)などの詳細を記載しています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に番号を併記して、追加の参照先へのリンクを設定しています。</p>
<h3 id="framework">フレームワーク</h3>
-<p>フレームワークの最も重大な脆弱性が原因で、悪意のあるローカルアプリが、アプリデータを他のアプリから分離するオペレーティング システムの保護を回避できるようになるおそれがあります。</p>
+<p>フレームワークの最も重大な脆弱性により、悪意のあるローカルアプリが、アプリデータを他のアプリから分離するオペレーティング システムの保護を回避できるようになるおそれがあります。</p>
<table>
<colgroup><col width="21%" />
@@ -380,7 +348,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</tbody></table>
<h3 id="qualcomm-components">Qualcomm コンポーネント</h3>
-<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm APSS のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。Android パートナーは、Createpoint により、下記の問題が自社の端末に該当する可能性があるかどうかを確認できます。このような問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm APSS のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。Android パートナーは、Createpoint により、下記の問題が自社のデバイスに該当する可能性があるかどうかを確認できます。これらの問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
<table>
<colgroup><col width="21%" />
@@ -454,7 +422,7 @@ QC-CR#2119840<a href="#asterisk">*</a></td>
</tbody></table>
<h3 id="qualcomm-closed-source-components">Qualcomm クローズドソース コンポーネント</h3>
-<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm AMSS のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。Android パートナーは、Createpoint により、下記の問題が自社の端末に該当する可能性があるかどうかを確認できます。このような問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm AMSS のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。Android パートナーは、Createpoint により、下記の問題が自社のデバイスに該当する可能性があるかどうかを確認できます。これらの問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
<table>
<colgroup><col width="21%" />
@@ -655,24 +623,24 @@ QC-CR#2119840<a href="#asterisk">*</a></td>
<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>
+<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-09-01 以降では、セキュリティ パッチレベル 2018-09-01 に関連するすべての問題に対処しています。</li>
<li>セキュリティ パッチレベル 2018-09-05 以降では、セキュリティ パッチレベル 2018-09-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
</ul>
-<p>端末メーカーは、こうしたアップデートを組み込む場合、パッチレベル文字列を以下のとおり設定する必要があります。</p>
+<p>デバイス メーカーは、こうしたアップデートを組み込む場合、パッチレベル文字列を以下のとおり設定する必要があります。</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-09-01]</li>
<li>[ro.build.version.security_patch]:[2018-09-05]</li>
</ul>
<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
<p>
-この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
</p>
<ul>
-<li>2018-09-01 のセキュリティ パッチレベルを使用する端末では、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
-<li>2018-09-05 以降のセキュリティ パッチレベルを使用する端末には、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
+<li>2018-09-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2018-09-05 以降のセキュリティ パッチレベルを使用するデバイスには、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
</ul>
<p>
パートナーは、対処する問題すべてについて、修正を 1 つのアップデートにまとめて提供することが推奨されます。
@@ -749,13 +717,13 @@ QC-CR#2119840<a href="#asterisk">*</a></td>
<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 端末用最新バイナリ ドライバに通常含まれています。
+公開されていない問題には、「参照」列の 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>
+<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> のセキュリティに関する公開情報に掲載することが推奨されています。
+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>
diff --git a/ja/security/bulletin/2018-10-01.html b/ja/security/bulletin/2018-10-01.html
index 6b756409..b38b5eb4 100644
--- a/ja/security/bulletin/2018-10-01.html
+++ b/ja/security/bulletin/2018-10-01.html
@@ -21,18 +21,18 @@
-->
<p><em>2018 年 10 月 1 日公開 | 2018 年 10 月 1 日更新</em></p>
-<p>Android のセキュリティに関する公開情報には、Android 搭載端末に影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-10-05 以降では、下記のすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+<p>Android のセキュリティに関する公開情報には、Android デバイスに影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-10-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)リポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
<p>
-下記の問題のうち最も重大度が高いものは、フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行できるようになるおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
+下記の問題のうち最も重大度が高いものは、フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行できるようになるおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象のデバイスでその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
</p>
<p>
-この新たに報告された問題によって実際のユーザー端末が不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="#mitigations">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="/security/enhancements/">Android と Google サービスでのリスク軽減策</a>をご覧ください。
+この新たに報告された問題によってユーザーのデバイスが実際に不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google サービスでのリスク軽減策</a>をご覧ください。
</p>
<p class="note">
-<strong>注:</strong> 最新の無線(OTA)アップデートと Google 端末のファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-10-01">2018 年 10 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-10-01">2018 年 10 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
</p>
<h2 id="mitigations">Android と Google サービスでのリスク軽減策</h2>
@@ -41,7 +41,7 @@ Android パートナーには、情報公開の 1 か月前までにすべての
</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>
+<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-10-01-details">セキュリティ パッチレベル 2018-10-01 の脆弱性の詳細</h2>
<p>
@@ -315,24 +315,24 @@ Android パートナーには、情報公開の 1 か月前までにすべての
<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>
+<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-10-01 以降では、セキュリティ パッチレベル 2018-10-01 に関連するすべての問題に対処しています。</li>
<li>セキュリティ パッチレベル 2018-10-05 以降では、セキュリティ パッチレベル 2018-10-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
</ul>
-<p>このアップデートを組み込んだ端末メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
+<p>このアップデートを組み込んだデバイス メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-10-01]</li>
<li>[ro.build.version.security_patch]:[2018-10-05]</li>
</ul>
<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
<p>
-この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
</p>
<ul>
-<li>2018-10-01 のセキュリティ パッチレベルを使用する端末では、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
-<li>2018-10-05 以降のセキュリティ パッチレベルを使用する端末には、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
+<li>2018-10-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2018-10-05 以降のセキュリティ パッチレベルを使用するデバイスには、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
</ul>
<p>
パートナーは、対処する問題すべてについて、修正を 1 つのアップデートにまとめて提供することが推奨されます。
@@ -409,13 +409,13 @@ Android パートナーには、情報公開の 1 か月前までにすべての
<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 端末用最新バイナリ ドライバに通常含まれています。
+公開されていない問題には、「参照」列の 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>
+<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> のセキュリティに関する公開情報に掲載することが推奨されています。
+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>
diff --git a/ja/security/bulletin/2018-11-01.html b/ja/security/bulletin/2018-11-01.html
index 055a9e7d..59272ed9 100644
--- a/ja/security/bulletin/2018-11-01.html
+++ b/ja/security/bulletin/2018-11-01.html
@@ -21,17 +21,17 @@
-->
<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 か月前までにすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)リポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
-<p>下記の問題のうち最も重大な脆弱性により、近くにいる攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあります。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
+<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 サービスでのリスク軽減策</a>をご覧ください。
+この新たに報告された問題によってユーザーのデバイスが実際に不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google サービスでのリスク軽減策</a>をご覧ください。
</p>
<p class="note">
-<strong>注:</strong> 最新の無線(OTA)アップデートと Google 端末のファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-11-01">2018 年 11 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-11-01">2018 年 11 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
</p>
<h2 id="announcements">お知らせ</h2>
<p>
@@ -44,7 +44,7 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
</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>
+<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-11-01-details">セキュリティ パッチレベル 2018-11-01 の脆弱性の詳細</h2>
<p>
@@ -266,7 +266,7 @@ Libxaac ライブラリでセキュリティに関する問題がいくつか見
QC-CR#2078580</a></td>
<td>N/A</td>
<td>高</td>
- <td>エコシステム</td>
+ <td>EcoSystem</td>
</tr>
<tr>
<td>CVE-2018-11995</td>
@@ -275,7 +275,7 @@ QC-CR#2078580</a></td>
QC-CR#2129639</a></td>
<td>N/A</td>
<td>高</td>
- <td>ブートローダー</td>
+ <td>Bootloader</td>
</tr>
<tr>
<td>CVE-2018-11905</td>
@@ -289,7 +289,7 @@ QC-CR#2090797</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%" />
@@ -306,98 +306,98 @@ QC-CR#2090797</a></td>
</tr>
<tr>
<td>CVE-2017-18317</td>
- <td>A-78244877<a href="#asterisk">*</a></td>
+ <td>A-78244877 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>重大</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-5912</td>
- <td>A-79420111<a href="#asterisk">*</a></td>
+ <td>A-79420111 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>重大</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-11264</td>
- <td>A-109677962<a href="#asterisk">*</a></td>
+ <td>A-109677962 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>重大</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2016-10502</td>
- <td>A-68326808<a href="#asterisk">*</a></td>
+ <td>A-68326808 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2017-18316</td>
- <td>A-78240714<a href="#asterisk">*</a></td>
+ <td>A-78240714 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2017-18318</td>
- <td>A-78240675<a href="#asterisk">*</a></td>
+ <td>A-78240675 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2017-18315</td>
- <td>A-78241957<a href="#asterisk">*</a></td>
+ <td>A-78241957 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-11994</td>
- <td>A-72950294<a href="#asterisk">*</a></td>
+ <td>A-72950294 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-11996</td>
- <td>A-74235967<a href="#asterisk">*</a></td>
+ <td>A-74235967 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-5870</td>
- <td>A-77484722<a href="#asterisk">*</a></td>
+ <td>A-77484722 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-5877</td>
- <td>A-77484786<a href="#asterisk">*</a></td>
+ <td>A-77484786 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-5916</td>
- <td>A-79420492<a href="#asterisk">*</a></td>
+ <td>A-79420492 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-5917</td>
- <td>A-79420096<a href="#asterisk">*</a></td>
+ <td>A-79420096 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
</tr>
<tr>
<td>CVE-2018-11269</td>
- <td>A-109678529<a href="#asterisk">*</a></td>
+ <td>A-109678529 <a href="#asterisk">*</a></td>
<td>N/A</td>
<td>高</td>
<td>クローズドソース コンポーネント</td>
@@ -406,24 +406,24 @@ QC-CR#2090797</a></td>
<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>
+<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-11-01 以降では、セキュリティ パッチレベル 2018-11-01 に関連するすべての問題に対処しています。</li>
<li>セキュリティ パッチレベル 2018-11-05 以降では、セキュリティ パッチレベル 2018-11-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
</ul>
-<p>このアップデートを組み込んだ端末メーカーは、パッチレベル文字列を以下に設定する必要があります。</p>
+<p>デバイス メーカーは、こうしたアップデートを組み込む場合、パッチレベル文字列を以下のとおり設定する必要があります。</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-11-01]</li>
<li>[ro.build.version.security_patch]:[2018-11-05]</li>
</ul>
<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
<p>
-この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
</p>
<ul>
-<li>2018-11-01 のセキュリティ パッチレベルを使用する端末では、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
-<li>2018-11-05 以降のセキュリティ パッチレベルを使用する端末には、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
+<li>2018-11-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2018-11-05 以降のセキュリティ パッチレベルを使用するデバイスには、今回(およびそれ以前)のセキュリティに関する公開情報に掲載された、該当するすべてのパッチを組み込む必要があります。</li>
</ul>
<p>
パートナーは、対処する問題すべてについて、修正を 1 つのアップデートにまとめて提供することが推奨されます。
@@ -500,13 +500,13 @@ QC-CR#2090797</a></td>
<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 端末用最新バイナリ ドライバに通常含まれています。
+公開されていない問題には、「参照」列の 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>
+<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> のセキュリティに関する公開情報に掲載することが推奨されています。
+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>
diff --git a/ja/security/bulletin/2018-12-01.html b/ja/security/bulletin/2018-12-01.html
index 722d9835..83136372 100644
--- a/ja/security/bulletin/2018-12-01.html
+++ b/ja/security/bulletin/2018-12-01.html
@@ -19,20 +19,20 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>公開日: 2018 年 12 月 3 日</em></p>
+<p><em>2018 年 12 月 3 日公開 | 2018 年 12 月 5 日更新</em></p>
<p>
-Android のセキュリティに関する公開情報には、Android 搭載デバイスに影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2018-12-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+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>Android パートナーには、情報公開の少なくとも 1 か月前にすべての問題が通知されます。Android オープンソース プロジェクト(AOSP)リポジトリに、下記の問題に対するソースコードのパッチをリリースしています。また、この公開情報では、これらのパッチへのリンクに加え、AOSP 以外のパッチへのリンクも掲載しています。</p>
<p>
-下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象の端末でその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
+下記の問題のうち最も重大度の高いものは、メディア フレームワークに重大なセキュリティの脆弱性があるため、リモートの攻撃者が特別に細工したファイルを使用して、特権プロセス内で任意のコードを実行するおそれがあることです。<a href="/security/overview/updates-resources.html#severity">重大度の評価</a>は、攻撃対象のデバイスでその脆弱性が悪用された場合の影響に基づくもので、プラットフォームやサービスでのリスク軽減策が開発目的または不正な回避により無効となっていることを前提としています。
</p>
<p>
-この新たに報告された問題によって実際のユーザー端末が不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="#mitigations">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="/security/enhancements/">Android と Google サービスでのリスク軽減策をご覧ください。</a>
+この新たに報告された問題によってユーザーのデバイスが実際に不正使用された報告はありません。Android プラットフォームのセキュリティの向上に役立つ <a href="/security/enhancements/">Android セキュリティ プラットフォームでの保護</a>や Google Play プロテクトについて詳しくは、<a href="#mitigations">Android と Google サービスでのリスク軽減策</a>をご覧ください。
</p>
<p class="note">
-<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-12-01">2018 年 12 月の Pixel / Nexus のセキュリティに関する公開情報</a>でご覧いただけます。
+<strong>注:</strong> 最新の無線(OTA)アップデートと Google デバイスのファームウェア イメージについての情報は、<a href="/security/bulletin/pixel/2018-12-01">2018 年 12 月の Pixel / Nexus のセキュリティに関する公開情報</a>のページでご覧いただけます。
</p>
<h2 id="mitigations">Android と Google サービスでのリスク軽減策</h2>
@@ -42,7 +42,7 @@ Android のセキュリティに関する公開情報には、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>
+<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>
@@ -67,14 +67,14 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
</tr>
<tr>
<td>CVE-2018-9547</td>
- <td>A-114223584</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/e6eb42cb2e57747e52e488d54da314bc6eabb546" class="external">A-114223584</a></td>
<td>EoP</td>
<td>高</td>
<td>8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9548</td>
- <td>A-112555574</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c97efaa05124e020d7cc8c6e08be9c3b55ac4ea7" class="external">A-112555574</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -99,49 +99,49 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
</tr>
<tr>
<td>CVE-2018-9549</td>
- <td>A-112160868</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/6f6d220a3255e7cbd31bcd1220ffb83af0a2779a" class="external">A-112160868</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-9550</td>
- <td>A-112660981</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/ce97e7d55e1f69683b5bc8f19cc8da8c85bc2cd4" class="external">A-112660981</a></td>
<td>RCE</td>
<td>重大</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9551</td>
- <td>A-112891548</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/0e5db9fee912d367a572b88f0d86f9a33006fa29" class="external">A-112891548</a></td>
<td>RCE</td>
<td>重大</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9552</td>
- <td>A-113260892</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/d15da6f960dd2d5b77faced4e799f8bf53785d9c" class="external">A-113260892</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-9553</td>
- <td>A-116615297</td>
+ <td><a href="https://android.googlesource.com/platform/external/libvpx/+/c4c92b2c6ed72a78ea430c3cdce564ec11866a24" class="external">A-116615297</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-9538</td>
- <td>A-112181526</td>
+ <td><a href="https://android.googlesource.com/platform/external/v4l2_codec2/+/0a7d252adb774338c2c69a17651aceca3aec1b23" class="external">A-112181526</a></td>
<td>EoP</td>
<td>高</td>
<td>8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9554</td>
- <td>A-114770654</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/16f9b39c69626093ae9225b458739707c9a3b4e7" class="external">A-114770654</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -166,56 +166,56 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
</tr>
<tr>
<td>CVE-2018-9555</td>
- <td>A-112321180</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/02fc52878d8dba16b860fbdf415b6e4425922b2c" class="external">A-112321180</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-9556</td>
- <td>A-113118184</td>
+ <td><a href="https://android.googlesource.com/platform/system/update_engine/+/840a7eae5a6d8250490e8ea430193531f0c4ccd6" class="external">A-113118184</a></td>
<td>RCE</td>
<td>重大</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9557</td>
- <td>A-35385357</td>
+ <td>A-35385357<a href="#asterisk">*</a></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><a href="https://android.googlesource.com/platform/system/nfc/+/ce7fcb95d5111ad8c554e7ec8ff02f9b40196cdc" class="external">A-112161557</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-9559</td>
- <td>A-112731440</td>
+ <td><a href="https://android.googlesource.com/platform/system/vold/+/c2e37da22aadcdb4a5b7f61a61f824ab8e9b8af9" class="external">A-112731440</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-9560</td>
- <td>A-79946737</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/9009da96e00434501d9398bbfbc636902c757632" class="external">A-79946737</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9562</td>
- <td>A-113164621</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/1bb14c41a72978c6075c5753a8301ddcbb10d409" class="external">A-113164621</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9566</td>
- <td>A-74249842</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/314336a22d781f54ed7394645a50f74d6743267d" class="external">A-74249842</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -246,7 +246,7 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
</tr>
<tr>
<td>CVE-2018-9565</td>
- <td>A-16680558</td>
+ <td>A-16680558<a href="#asterisk">*</a></td>
<td>ID</td>
<td>高</td>
<td>OMA-DM</td>
@@ -272,7 +272,7 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
</tr>
<tr>
<td>CVE-2018-9567</td>
- <td>A-65543936</td>
+ <td>A-65543936<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>高</td>
<td>ブートローダー</td>
@@ -316,7 +316,7 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
<h3 id="qualcomm-components">Qualcomm コンポーネント</h3>
-<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。このような問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。これらの問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
<table>
<colgroup><col width="21%" />
@@ -359,7 +359,7 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
<h3 id="qualcomm-closed-source-components">Qualcomm クローズドソース コンポーネント</h3>
-<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。このような問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
+<p>Qualcomm コンポーネントに影響する脆弱性は次のとおりです。詳細については、該当する Qualcomm のセキュリティに関する公開情報やセキュリティ アラートをご覧ください。これらの問題の重大度の評価は、Qualcomm から直接提供されたものです。</p>
<table>
<colgroup><col width="21%" />
@@ -582,7 +582,7 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
<h2 id="common-questions-and-answers">一般的な質問と回答</h2>
<p>上記の公開情報に対する一般的な質問についての回答は以下のとおりです。</p>
-<p><strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?</strong></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>
@@ -595,7 +595,7 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
</ul>
<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
<p>
-この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android 搭載端末で同様の問題が発生する一部の脆弱性をサブセットとし、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
</p>
<ul>
<li>2018-12-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
@@ -676,13 +676,13 @@ Android のセキュリティに関する公開情報には、Android 搭載デ
<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 端末用最新バイナリ ドライバに通常含まれています。
+公開されていない問題には、「参照」列の 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>
+<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> のセキュリティに関する公開情報に掲載することが推奨されます。
+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>
@@ -701,6 +701,11 @@ Android 搭載端末の最新のセキュリティ パッチレベルを宣言
<td>2018 年 12 月 3 日</td>
<td>情報公開</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 12 月 5 日</td>
+ <td>公開情報を改訂し AOSP リンクを追加</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/2018.html b/ja/security/bulletin/2018.html
index 32b3cd6a..2112610e 100644
--- a/ja/security/bulletin/2018.html
+++ b/ja/security/bulletin/2018.html
@@ -33,6 +33,34 @@
<th>公開日</th>
<th>セキュリティ パッチレベル</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文(中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文(台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">2018 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文(中国)</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文(台灣)</a>
+ </td>
+ <td>2018 年 11 月 5 日</td>
+ <td>2018-11-01<br />
+ 2018-11-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/ja/security/bulletin/2019-01-01.html b/ja/security/bulletin/2019-01-01.html
new file mode 100644
index 00000000..7fdf9132
--- /dev/null
+++ b/ja/security/bulletin/2019-01-01.html
@@ -0,0 +1,502 @@
+<html devsite><head>
+ <title>Android のセキュリティに関する公開情報 - 2019 年 1 月</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>2019 年 1 月 7 日公開 | 2019 年 1 月 7 日更新</em></p>
+
+<p>
+Android のセキュリティに関する公開情報には、Android デバイスに影響を与えるセキュリティの脆弱性の詳細を掲載しています。セキュリティ パッチレベル 2019-01-05 以降では、下記のすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、「<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>」の記事をご覧ください。
+</p>
+<p>
+Android パートナーには、情報公開の 1 か月前までにすべての問題が通知されます。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/2019-01-01">2019 年 1 月の Pixel のアップデートに関する公開情報</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="2019-01-01-details">セキュリティ パッチレベル 2019-01-01 の脆弱性の詳細</h2>
+<p>
+パッチレベル 2019-01-01 に該当するセキュリティ脆弱性の各項目について、下記で詳しく説明します。脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、更新対象の AOSP バージョン(該当する場合)を表にまとめています。該当する場合は、バグ 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-9582</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/ab39f6cb7afc48584da3c59d8e2a5e1ef121aafb" class="external">A-112031362</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.0、8.1、9</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-9583</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/94d718eb61cbb1e6fd08288039d7e62913735c6c" class="external">A-112860487</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-9584</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/5f0f0cc6a10f710dea7e1ddd4ba19acb877a7081" class="external">A-114047681</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-9585</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/71764b791f262491e3f628c14ce3949863dd6058" class="external">A-117554809</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-9586</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/ManagedProvisioning/+/fe4c71a7a3a8a2184b3096203aa9240e01af621e" class="external">A-116754444</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-9587</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Contacts/+/66abad90093df5231f24654a64cf90d9b70ab228" class="external">A-113597344</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-9588</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/bf9ff0c5215861ab673e211cd06e009f3157aab2" class="external">A-111450156</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-9589</td>
+ <td><a href="https://android.googlesource.com/platform/external/wpa_supplicant_8/+/38af82c5ca615f56febcebde714c7cba653fd5ec" class="external">A-111893132</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-9590</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/297598898683b81e921474e6e74c0ddaedbb8bb5" class="external">A-115900043</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-9591</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e1685cfa533db4155a447c405d7065cc17af2ae9" class="external">A-116108738</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-9592</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/8679463ade0ee029ef826ed4fb7a847e2a981375" class="external">A-116319076</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-9593</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/8bc53213110fed8360d3e212dd61fbc0218e0b1e" class="external">A-116722267</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-9594</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/494cd888eb2c5cfda05584dd598815c9268ff3c2" class="external">A-116791157</a></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="2019-01-05-details">セキュリティ パッチレベル 2019-01-05 の脆弱性の詳細</h2>
+
+<p>
+パッチレベル 2019-01-05 に該当するセキュリティ脆弱性の各項目について、下記で詳しく説明します。影響を受けるコンポーネントごとに脆弱性を分類し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、コンポーネント(該当する場合)、更新対象の AOSP バージョン(該当する場合)などの詳細を記載しています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に続く番号で、追加の参照先へのリンクを示します。</p>
+
+<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-10876</td>
+ <td>A-116406122<br />
+ <a href="http://patchwork.ozlabs.org/patch/929239/">アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 ファイル システム</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10880</td>
+ <td>A-116406509<br />
+ <a href="http://patchwork.ozlabs.org/patch/930639/">アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 ファイル システム</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10882</td>
+ <td>A-116406626<br />
+ <a href="https://bugzilla.kernel.org/show_bug.cgi?id=200069">アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 ファイル システム</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13405</td>
+ <td>A-113452403<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7">
+アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ファイル システム</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-18281</td>
+ <td>A-118836219<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb66ae030829605d61fbef1909ce310e29f78821">
+アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>TLB</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-17182</td>
+ <td>A-117280327<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a9cdebdcc17e426fb5287e4a82db1dfe86339b2">
+アップストリーム カーネル</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>メモリ マネージャー</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10877</td>
+ <td>A-116406625<br />
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10877">アップストリーム カーネル</a></td>
+ <td>ID</td>
+ <td>高</td>
+ <td>ext4 ファイル システム</td>
+ </tr>
+</tbody></table>
+
+<h3 id="nvidia-components">NVIDIA コンポーネント</h3>
+<p>NVIDIA コンポーネントの最も重大な脆弱性により、悪意のあるローカルアプリによって特権プロセス内で任意のコードが実行されるおそれがあります。</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-6241</td>
+ <td>A-62540032<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>Dragon BSP</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-11962</td>
+ <td>A-117118292<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/frameworks/av/commit?id=217604d69ce4dcf7c6433a9eafdfceefe25e8fd3">
+QC-CR#2267916</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>音声</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-12014</td>
+ <td>A-117118062<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=545e03e8420164506457367959ccf01bd055e1aa">
+QC-CR#2278688</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>データ HLOS - LNX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13889</td>
+ <td>A-117118677<br />
+ <a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=03885c6896a88d993dd49c64ada02bec52af08a1">
+QC-CR#2288358</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>GPS</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-2018-11847</td>
+ <td>A-111092812<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>重大</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11888</td>
+ <td>A-111093241<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>クローズドソース コンポーネント</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13888</td>
+ <td>A-117119136<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>セキュリティ パッチレベル 2019-01-01 以降では、セキュリティ パッチレベル 2019-01-01 に関連するすべての問題に対処しています。</li>
+<li>セキュリティ パッチレベル 2019-01-05 以降では、セキュリティ パッチレベル 2019-01-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。</li>
+</ul>
+<p>デバイス メーカーは、こうしたアップデートを組み込む場合、パッチレベル文字列を以下のとおり設定する必要があります。</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2019-01-01]</li>
+ <li>[ro.build.version.security_patch]:[2019-01-05]</li>
+</ul>
+<p><strong>2. この公開情報に 2 つのセキュリティ パッチレベルがあるのはなぜですか?</strong></p>
+<p>
+この公開情報では、2 つのセキュリティ パッチレベルを定義しています。これは、すべての Android デバイスにまたがる同様の脆弱性をひとまとめにして、Android パートナーが迅速かつ柔軟に修正できるようにするためです。Android パートナーは、この公開情報に掲載されている問題をすべて修正し、最新のセキュリティ パッチレベルを使用することが推奨されています。
+</p>
+<ul>
+<li>2019-01-01 のセキュリティ パッチレベルを使用するデバイスでは、そのセキュリティ パッチレベルに関連するすべての問題と、それ以前のセキュリティに関する公開情報で報告されたすべての問題の修正を含める必要があります。</li>
+<li>2019-01-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>
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、<a href="https://developers.google.com/android/drivers" class="external">Google デベロッパー サイト</a>から入手できる Pixel デバイス用最新バイナリ ドライバに通常含まれています。
+</p>
+<p>
+<strong>6. セキュリティの脆弱性が、この公開情報とデバイスやパートナーのセキュリティに関する公開情報(Pixel のセキュリティに関する公開情報など)に分けられているのはなぜですか?</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</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>2019 年 1 月 7 日</td>
+ <td>情報公開</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>2019 年 1 月 7 日</td>
+ <td>公開情報を改訂し AOSP リンクを追加</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/2019.html b/ja/security/bulletin/2019.html
new file mode 100644
index 00000000..7b828bd7
--- /dev/null
+++ b/ja/security/bulletin/2019.html
@@ -0,0 +1,211 @@
+<html devsite><head>
+ <title>Android のセキュリティに関する公開情報(2019 年)</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>このページでは、Android のセキュリティに関して提供できる 2019 年の公開情報をすべて掲載しています。すべての公開情報の一覧については、<a href="/security/bulletin/index.html">Android のセキュリティに関する公開情報</a>のトップページをご覧ください。</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公開情報</th>
+ <th>言語</th>
+ <th>公開日</th>
+ <th>セキュリティ パッチレベル</th>
+ </tr>
+ <tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-01<br>
+ 2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-01<br>
+ 2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-01<br>
+ 2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-01<br>
+ 2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-01<br>
+ 2019-08-05</td>
+ </tr>
+
+ <tr>
+ <td><a href="/security/bulletin/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-01<br>
+ 2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-01<br>
+ 2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-01<br>
+ 2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-01<br>
+ 2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-01<br>
+ 2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-01<br>
+ 2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
+ <td>準備中
+ <!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019 年 1 月 7 日</td>
+ <td>2019-01-01<br />
+ 2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/index.html b/ja/security/bulletin/index.html
index 9f64e87c..b56b3a67 100644
--- a/ja/security/bulletin/index.html
+++ b/ja/security/bulletin/index.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>毎月提供する端末のアップデートは、Android ユーザーの安全を維持し、端末を保護するうえで重要な役割を果たしています。このページでは、Android のセキュリティに関して提供可能な公開情報を掲載しています。これらの情報を利用することで、Android 搭載端末に影響を与える可能性がある問題を解決できます。次のような Android 搭載端末やチップセットのメーカーからも、各社製品に固有のセキュリティの脆弱性に関する詳細情報が公開される場合があります。</p>
+<p>毎月提供するデバイスのアップデートは、Android ユーザーの安全を維持し、デバイスを保護するうえで重要な役割を果たしています。このページでは、Android のセキュリティに関して提供可能な公開情報を掲載しています。これらの情報を利用することで、Android デバイスに影響を与える可能性がある問題を解決できます。次のような Android デバイスやチップセットのメーカーからも、各社製品に固有のセキュリティの脆弱性に関する詳細情報が公開される場合があります。</p>
<ul>
<li><a href="/security/bulletin/pixel/">Google</a></li>
<li><a href="https://lgsecurity.lge.com/security_updates.html">LG</a></li>
@@ -30,13 +30,9 @@
<li><a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a></li>
</ul>
-<h3 id="notification">通知</h3>
-<p>Android に関する最新の公開情報が公開されたときに通知を受け取るには、<a href="https://groups.google.com/forum/#!forum/android-security-updates">Android Security Updates グループ</a>に参加し、すべてのアップデートを受け取るようメール配信を設定してください。
-</p>
-
<h3 id="sources">提供元</h3>
-<p>この一般公開の情報には、Android オープンソース プロジェクト(AOSP)、アップストリームの Linux カーネル、システム オン チップ(SOC)メーカーなど、さまざまな提供元からの修正が掲載されます。端末メーカー向けに以下の修正があります。</p>
+<p>この一般公開の情報には、Android オープンソース プロジェクト(AOSP)、アップストリームの Linux カーネル、システム オン チップ(SOC)メーカーなど、さまざまな提供元からの修正が掲載されます。デバイス メーカー向けに以下の修正があります。</p>
<ul>
<li>Android プラットフォームの修正は、セキュリティに関する公開情報のリリースから 24~48 時間後に AOSP に統合され、AOSP から直接入手できます。</li>
<li>アップストリームの Linux カーネルの修正は、リリース時に公開情報から直接リンクされ、そのリンクから入手できます。</li>
@@ -55,17 +51,28 @@
<th>公開日</th>
<th>セキュリティ パッチレベル</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文(中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文(台灣)</a>
+ </td><td>2018 年 12 月 3 日</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-11-01.html">2018 年 11 月</a></td>
- <td>準備中
- <!--
- <a href="/security/bulletin/2018-11-01.html">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">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</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/ja/security/bulletin/pixel/2018-01-01.html b/ja/security/bulletin/pixel/2018-01-01.html
index 941c2385..fadf48ca 100644
--- a/ja/security/bulletin/pixel/2018-01-01.html
+++ b/ja/security/bulletin/pixel/2018-01-01.html
@@ -22,17 +22,17 @@
<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>
-パッチレベル 2018-01-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末にこのアップデートを適用することをすべてのユーザーにおすすめします。
+パッチレベル 2018-01-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
<p>
-<a href="/security/bulletin/2018-01-01">2018 年 1 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Pixel 端末と Nexus 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。
+<a href="/security/bulletin/2018-01-01">2018 年 1 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Pixel デバイスと Nexus デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、自社のデバイスのアップデートにこれらのパッチを組み込むことができます。
</p>
<h2 id="security-patches">セキュリティ パッチ</h2>
<p>
@@ -628,7 +628,7 @@ QC-CR#2078342</a></td>
<h2 id="functional-updates">機能の更新</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容を下記の表にまとめています。
+影響を受ける Pixel デバイス向けに、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容を下記の表にまとめています。
</p>
<table>
<tbody><tr>
@@ -653,11 +653,11 @@ QC-CR#2078342</a></td>
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-01-05 以降では、セキュリティ パッチレベル 2018-01-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-01-05 以降では、セキュリティ パッチレベル 2018-01-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
</p>
<p id="type">
<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
@@ -731,13 +731,13 @@ QC-CR#2078342</a></td>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる 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-02-01.html b/ja/security/bulletin/pixel/2018-02-01.html
index 5d804ff4..f871fe89 100644
--- a/ja/security/bulletin/pixel/2018-02-01.html
+++ b/ja/security/bulletin/pixel/2018-02-01.html
@@ -28,7 +28,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
パッチレベル 2018-02-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末に上記のアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
<p><a href="/security/bulletin/2018-02-01">2018 年 2 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Pixel 端末と Nexus 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。</p>
@@ -395,7 +395,7 @@ QC-CR#2003798</a></td>
<h2 id="functional-updates">機能の更新</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
diff --git a/ja/security/bulletin/pixel/2018-03-01.html b/ja/security/bulletin/pixel/2018-03-01.html
index 48fa054c..072d23cb 100644
--- a/ja/security/bulletin/pixel/2018-03-01.html
+++ b/ja/security/bulletin/pixel/2018-03-01.html
@@ -28,7 +28,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
パッチレベル 2018-03-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末にこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
@@ -191,7 +191,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<td>Mnh_sm ドライバ</td>
</tr>
<tr>
- <td>CVE-2017-16527</td>
+ <td>CVE-2017-16527 </td>
<td>A-69051382<br />
<a href="https://github.com/torvalds/linux/commit/124751d5e63c823092060074bd0abaae61aaa9c4">
アップストリーム カーネル</a></td>
@@ -303,7 +303,7 @@ QC-CR#2119432</a></td>
<td>Wma</td>
</tr>
<tr>
- <td>CVE-2017-18055</td>
+ <td>CVE-2017-18055 </td>
<td>A-70237693<br />
<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=50a0554d12cff58b3ffbd51d3194304244b87023">
QC-CR#2119430</a></td>
@@ -517,7 +517,7 @@ QC-CR#2119401</a></td>
<h2 id="functional-updates">機能の更新</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
@@ -525,7 +525,7 @@ QC-CR#2119401</a></td>
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-70491468</td>
@@ -636,7 +636,7 @@ QC-CR#2119401</a></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-04-01.html b/ja/security/bulletin/pixel/2018-04-01.html
index 2327c111..808c8d95 100644
--- a/ja/security/bulletin/pixel/2018-04-01.html
+++ b/ja/security/bulletin/pixel/2018-04-01.html
@@ -23,16 +23,16 @@
<p><em>2018 年 4 月 2 日公開 | 2018 年 4 月 10 日更新</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-04-05 以降において、この公開情報に掲載されているすべての問題と、<a href="/security/bulletin/2018-04-01">2018 年 4 月の 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-04-05 以降において、この公開情報に掲載されているすべての問題と、<a href="/security/bulletin/2018-04-01">2018 年 4 月の Android のセキュリティに関する公開情報</a>に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705">Android のバージョンを確認して更新する</a>をご覧ください。</p>
<p>
-パッチレベル 2018-04-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末にこのアップデートを適用することをすべてのユーザーにおすすめします。
+パッチレベル 2018-04-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p><a href="/security/bulletin/2018-04-01">2018 年 4 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Google 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。</p>
+<p><a href="/security/bulletin/2018-04-01">2018 年 4 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Google デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、自社のデバイスのアップデートにこれらのパッチを組み込むことができます。</p>
<h2 id="security-patches">セキュリティ パッチ</h2>
<p>
@@ -503,7 +503,7 @@ QC-CR#2098332</a></td>
<h2 id="functional-updates">機能の更新</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイス向けに、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
@@ -511,7 +511,7 @@ QC-CR#2098332</a></td>
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-35963245</td>
@@ -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>
@@ -635,8 +635,7 @@ QC-CR#2098332</a></td>
<td>Pixel、Pixel XL</td>
</tr>
<tr>
- <td>A-68150449<br />
- A-68059359<br />
+ <td>A-68150449<br />A-68059359<br />
A-69797741<br />
A-69378640<br />
A-68824279</td>
@@ -766,7 +765,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>
@@ -848,7 +847,7 @@ QC-CR#2098332</a></td>
<tr>
<td>A-72119809</td>
<td>接続</td>
- <td>特定の SIM カードが装着された端末のデータ パフォーマンスを向上</td>
+ <td>特定の SIM カードが装着されたデバイスのデータ パフォーマンスを向上</td>
<td>すべて</td>
</tr>
<tr>
@@ -877,11 +876,11 @@ QC-CR#2098332</a></td>
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-04-05 以降では、セキュリティ パッチレベル 2018-04-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-04-05 以降では、セキュリティ パッチレベル 2018-04-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
</p>
<p id="type">
<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
@@ -955,13 +954,13 @@ QC-CR#2098332</a></td>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる 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-05-01.html b/ja/security/bulletin/pixel/2018-05-01.html
index cf4f4db6..7080fe48 100644
--- a/ja/security/bulletin/pixel/2018-05-01.html
+++ b/ja/security/bulletin/pixel/2018-05-01.html
@@ -23,17 +23,17 @@
<p><em>2018 年 5 月 7 日公開 | 2018 年 5 月 9 日更新</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-05-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 5 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<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-05-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 5 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
-パッチレベル 2018-05-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末で上記の更新を行うことをすべてのユーザーにおすすめします。
+パッチレベル 2018-05-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスで上記の更新を行うことをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p>2018 年 5 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Pixel 端末と Nexus 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。</p>
+<p>2018 年 5 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Pixel デバイスと Nexus デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーはデバイスのアップデートにこうしたパッチを組み込むことができます。</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(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題に対処した一般公開されている変更(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
@@ -439,14 +439,14 @@ QC-CR#2149720</a></td>
<h2 id="functional-patches">機能パッチ</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
<tbody><tr>
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-68840121</td>
@@ -467,11 +467,11 @@ QC-CR#2149720</a></td>
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-05-05 以降では、セキュリティ パッチレベル 2018-05-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-05-05 以降では、セキュリティ パッチレベル 2018-05-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
</p>
<p id="type">
<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
@@ -545,13 +545,13 @@ QC-CR#2149720</a></td>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">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-06-01.html b/ja/security/bulletin/pixel/2018-06-01.html
index 5b72ca80..8319cdca 100644
--- a/ja/security/bulletin/pixel/2018-06-01.html
+++ b/ja/security/bulletin/pixel/2018-06-01.html
@@ -23,17 +23,17 @@
<p><em>2018 年 6 月 4 日公開 | 2018 年 6 月 6 日更新</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-06-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 6 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<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-06-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 6 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
-パッチレベル 2018-06-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末にこのアップデートを適用することをすべてのユーザーにおすすめします。
+パッチレベル 2018-06-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p>2018 年 6 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Pixel 端末と Nexus 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。</p>
+<p>2018 年 6 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Pixel デバイスと Nexus デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、自社のデバイスのアップデートにこれらのパッチを組み込むことができます。</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(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題に対処した一般公開されている変更(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に記載した番号に、追加の参照へのリンクを設定しています。</p>
@@ -383,7 +383,7 @@ Google 端末では、セキュリティ パッチレベル 2018-06-05 以降に
M-ALPS03479586</td>
<td>EoP</td>
<td>中</td>
- <td>Mediatek WMT 端末</td>
+ <td>Mediatek WMT デバイス</td>
</tr>
<tr>
<td>CVE-2018-9398</td>
@@ -716,7 +716,7 @@ Qualcomm コンポーネントに影響する脆弱性は次のとおりです
<h2 id="functional-patches">機能パッチ</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイス向けに、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
@@ -724,7 +724,7 @@ Qualcomm コンポーネントに影響する脆弱性は次のとおりです
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-74413120</td>
@@ -771,11 +771,11 @@ A-74058011</td>
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-06-05 以降では、セキュリティ パッチレベル 2018-06-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-06-05 以降では、セキュリティ パッチレベル 2018-06-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
</p>
<p id="type">
<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
@@ -849,13 +849,13 @@ A-74058011</td>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、<a href="https://developers.google.com/android/nexus/drivers">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-07-01.html b/ja/security/bulletin/pixel/2018-07-01.html
index b60aa9c7..ddf0673a 100644
--- a/ja/security/bulletin/pixel/2018-07-01.html
+++ b/ja/security/bulletin/pixel/2018-07-01.html
@@ -23,17 +23,17 @@
<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>方法の説明をご覧ください。
+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>方法の説明をご覧ください。
</p>
<p>
-パッチレベル 2018-07-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末で上記の更新を行うことをすべてのユーザーにおすすめします。
+パッチレベル 2018-07-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/images">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p>2018 年 7 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Pixel 端末と Nexus 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。</p>
+<p>2018 年 7 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Pixel デバイスと Nexus デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーはデバイスのアップデートにこうしたパッチを組み込むことができます。</p>
<h2 id="security-patches">セキュリティ パッチ</h2>
<p>
@@ -331,7 +331,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<h2 id="functional-patches">機能パッチ</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
@@ -339,7 +339,7 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-73204553</td>
@@ -354,11 +354,11 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-07-05 以降では、セキュリティ パッチレベル 2018-07-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-07-05 以降では、セキュリティ パッチレベル 2018-07-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
</p>
<p id="type">
<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
@@ -432,13 +432,13 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">Google デベロッパー サイト</a>から入手できる Pixel / Nexus 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/nexus/drivers">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-08-01.html b/ja/security/bulletin/pixel/2018-08-01.html
index 72c1c181..df6cbd53 100644
--- a/ja/security/bulletin/pixel/2018-08-01.html
+++ b/ja/security/bulletin/pixel/2018-08-01.html
@@ -23,22 +23,21 @@
<p><em>2018 年 8 月 6 日公開</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-08-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 8 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+Pixel / Nexus のセキュリティに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">サポート対象の Google Pixel デバイスと Nexus デバイス</a>(Google デバイス)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。Google デバイスでは、セキュリティ パッチレベル 2018-08-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 8 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
-パッチレベル 2018-08-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末にこのアップデートを適用することをすべてのユーザーにおすすめします。
+パッチレベル 2018-08-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p>2018 年 8 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Google 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。</p>
+<p>2018 年 8 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Google デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーはデバイスのアップデートにこうしたパッチを組み込むことができます。</p>
<h2 id="security-patches">セキュリティ パッチ</h2>
<p>
-脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、更新対象の AOSP(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。
-該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に続く番号で、追加の参照先へのリンクを示します。</p>
+脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources.html#severity">重大度</a>、更新対象の AOSP(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に続く番号で、追加の参照先へのリンクを示します。</p>
<h3 id="framework">フレームワーク</h3>
@@ -415,17 +414,17 @@ QC-CR#2185477</a></td>
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-08-05 以降では、セキュリティ パッチレベル 2018-08-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-08-05 以降では、セキュリティ パッチレベル 2018-08-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>
+<strong>2. 「タイプ」<em></em>列の項目はどういう意味ですか?</strong>
</p>
<p>
-脆弱性の詳細の表で「タイプ<em></em>」列に記載した項目は、セキュリティの脆弱性の分類を示しています。
+脆弱性の詳細の表で「タイプ」<em></em>列に記載した項目は、セキュリティの脆弱性の分類を示しています。
</p>
<table>
<colgroup><col width="25%" />
@@ -490,16 +489,16 @@ QC-CR#2185477</a></td>
</tr>
</tbody></table>
<p id="asterisk">
-<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
+<strong>4. 「参照」<em></em>列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<a href="https://developers.google.com/android/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 b9c98845..ac2ad16d 100644
--- a/ja/security/bulletin/pixel/2018-09-01.html
+++ b/ja/security/bulletin/pixel/2018-09-01.html
@@ -23,23 +23,22 @@
<p><em>2018 年 9 月 4 日公開</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-09-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 9 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+Pixel / Nexus のセキュリティに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">サポート対象の Google Pixel および Nexus デバイス</a>(Google デバイス)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。
+Google デバイスでは、セキュリティ パッチレベル 2018-09-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 9 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
-パッチレベル 2018-09-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。Google ではすべてのユーザーに対し、ご利用の端末にこのようなアップデートを適用することをおすすめしています。
+パッチレベル 2018-09-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p>2018 年 9 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、Google 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーは、少なくとも 1 か月前に下記の問題を通知されているので、こうしたパッチを端末のアップデートに組み込むことができます。</p>
+<p>2018 年 9 月の Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性に加えて、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>
+脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources#severity">重大度</a>、更新対象の AOSP(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に番号を併記して、追加の参照先へのリンクを設定しています。</p>
<h3 id="kernel-components">カーネル コンポーネント</h3>
@@ -199,7 +198,7 @@ QC-CR#2204285</a>
<h2 id="functional-patches">機能パッチ</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
@@ -207,7 +206,7 @@ QC-CR#2204285</a>
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-110489408</td>
@@ -234,11 +233,11 @@ QC-CR#2204285</a>
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-09-05 以降では、セキュリティ パッチレベル 2018-09-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-09-05 以降では、セキュリティ パッチレベル 2018-09-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>
@@ -312,13 +311,13 @@ QC-CR#2204285</a>
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<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-10-01.html b/ja/security/bulletin/pixel/2018-10-01.html
index 1ff26d1f..177bc1ee 100644
--- a/ja/security/bulletin/pixel/2018-10-01.html
+++ b/ja/security/bulletin/pixel/2018-10-01.html
@@ -23,14 +23,14 @@
<p><em>2018 年 10 月 1 日公開</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-10-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 10 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+Pixel / Nexus のセキュリティに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">サポート対象の Google Pixel および Nexus デバイス</a>(Google デバイス)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。
+Google デバイスでは、セキュリティ パッチレベル 2018-10-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 10 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
-パッチレベル 2018-10-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末で上記の更新を行うことをすべてのユーザーにおすすめします。
+パッチレベル 2018-10-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスで上記の更新を行うことをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
@@ -40,7 +40,7 @@ Google 端末では、セキュリティ パッチレベル 2018-10-05 以降に
<h2 id="functional-patches">機能パッチ</h2>
<p>
-影響を受ける Pixel 端末には、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受ける端末を下記の表にまとめています。
+影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
</p>
<table>
@@ -48,7 +48,7 @@ Google 端末では、セキュリティ パッチレベル 2018-10-05 以降に
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-112486006</td>
@@ -59,7 +59,7 @@ Google 端末では、セキュリティ パッチレベル 2018-10-05 以降に
<tr>
<td>A-112529920</td>
<td>電源</td>
- <td>Pixel 端末の高速充電動作を改善</td>
+ <td>Pixel デバイスの高速充電動作を改善</td>
<td>Pixel、Pixel XL</td>
</tr>
<tr>
@@ -81,11 +81,11 @@ Google 端末では、セキュリティ パッチレベル 2018-10-05 以降に
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-10-05 以降では、セキュリティ パッチレベル 2018-10-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-10-05 以降では、セキュリティ パッチレベル 2018-10-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>
@@ -159,13 +159,13 @@ Google 端末では、セキュリティ パッチレベル 2018-10-05 以降に
<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 dce744c6..f4f35fe1 100644
--- a/ja/security/bulletin/pixel/2018-11-01.html
+++ b/ja/security/bulletin/pixel/2018-11-01.html
@@ -23,24 +23,23 @@
<p><em>2018 年 11 月 5 日公開</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-11-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 11 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+Pixel / Nexus のセキュリティに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">サポート対象の Google Pixel デバイスと Nexus デバイス</a>(Google デバイス)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。Google デバイスでは、セキュリティ パッチレベル 2018-11-05 以降において、この公開情報に掲載されているすべての問題と、2018 年 11 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
</p>
<p>
-パッチレベル 2018-11-05 へのアップデートは、サポート対象のすべての Google 端末に送信されます。ご利用の端末にこのアップデートを適用することをすべてのユーザーにおすすめします。
+パッチレベル 2018-11-05 へのアップデートは、サポート対象のすべての Google デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
</p>
<p class="note">
-<strong>注:</strong> Google 端末のファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
+<strong>注:</strong> Google デバイスのファームウェア イメージは、<a href="https://developers.google.com/android/images" class="external">Google デベロッパー サイト</a>で入手できます。
</p>
<h2 id="announcements">お知らせ</h2>
-<p><a href="/security/bulletin/2018-11-01">2018 年 11 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Pixel 端末と Nexus 端末には、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーは端末のアップデートにこうしたパッチを組み込むことができます。
+<p><a href="/security/bulletin/2018-11-01">2018 年 11 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Pixel デバイスと Nexus デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 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>
+脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、CVE、関連する参照先、<a href="#type">脆弱性のタイプ</a>、<a href="/security/overview/updates-resources#severity">重大度</a>、更新対象の AOSP(Android オープンソース プロジェクト)バージョン(該当する場合)を表にまとめています。該当する場合は、バグ ID の欄に、その問題の対処法として一般公開されている変更内容(AOSP の変更の一覧など)へのリンクがあります。複数の変更が同じバグに関係する場合は、バグ ID の後に続く番号で、追加の参照先へのリンクを示します。</p>
<h3 id="framework-05">フレームワーク</h3>
@@ -128,21 +127,21 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<h2 id="functional-patches">機能パッチ</h2>
-<p>Android 9 のアップデートは、11 月の OTA の一部として、Android 9 が搭載されているすべての Pixel 端末に送信されます。この四半期リリースには、Android プラットフォームとサポート対象の Pixel 端末の各種パーツに対する多くの機能更新や機能強化が含まれています。</p>
+<p>Android 9 のアップデートは、11 月の OTA の一部として、Android 9 が搭載されているすべての Pixel デバイスに送信されます。この四半期リリースには、Android プラットフォームとサポート対象の Pixel デバイスの各種パーツに対する多くの機能更新や機能強化が含まれています。</p>
-<p>Android 搭載端末メーカーは、このリリースに含まれている以下の修正も適用する必要があります。</p>
+<p>Android デバイスのメーカーは、このリリースに含まれている以下の修正も適用する必要があります。</p>
<table>
<tbody><tr>
<th>参照</th>
<th>カテゴリ</th>
<th>改善内容</th>
- <th>端末</th>
+ <th>デバイス</th>
</tr>
<tr>
<td>A-111401911</td>
<td>表示</td>
- <td><a href="/devices/tech/display/pip">ピクチャー イン ピクチャー</a>を使用する端末のパフォーマンスを改善</td>
+ <td><a href="/devices/tech/display/pip">ピクチャー イン ピクチャー</a>を使用するデバイスのパフォーマンスを改善</td>
<td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
</tr>
<tr>
@@ -170,11 +169,11 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
</p>
<p>
-<strong>1. 上記の問題に対処するように端末が更新されているかどうかを確かめるには、どうすればよいですか?
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
</strong>
</p>
<p>
-セキュリティ パッチレベル 2018-11-05 以降では、セキュリティ パッチレベル 2018-11-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。端末のセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel および Nexus のアップデート スケジュール</a>に記載されている手順をご覧ください。
+セキュリティ パッチレベル 2018-11-05 以降では、セキュリティ パッチレベル 2018-11-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>
@@ -248,13 +247,13 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<strong>4. 「参照<em></em>」列の Android バグ ID の横にある「*」はどういう意味ですか?</strong>
</p>
<p>
-公開されていない問題には、「参照<em></em>」列の Android バグ ID の横に「*」を付けています。この問題のアップデートは、通常、<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-12-01.html b/ja/security/bulletin/pixel/2018-12-01.html
index 49f0cc2c..d1bd36ec 100644
--- a/ja/security/bulletin/pixel/2018-12-01.html
+++ b/ja/security/bulletin/pixel/2018-12-01.html
@@ -23,7 +23,7 @@
<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>をご覧ください。
+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 デバイスに送信されます。ご利用のデバイスにこのアップデートを適用することをすべてのユーザーにおすすめします。
@@ -34,13 +34,12 @@ Pixel / Nexus のセキュリティに関する公開情報には、<a href="htt
<h2 id="announcements">お知らせ</h2>
-<p><a href="/security/bulletin/2018-12-01">2018 年 12 月の Android のセキュリティに関する公開情報</a>に掲載されているセキュリティの脆弱性に加えて、Google デバイスには、下記のセキュリティの脆弱性に対するパッチも含まれています。パートナーには少なくとも 1 か月前に下記の問題が通知されており、パートナーはデバイスのアップデートにこうしたパッチを組み込むことができます。
+<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>
+脆弱性は、影響を受けるコンポーネントごとに分類しています。問題の内容について説明し、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>
@@ -70,7 +69,7 @@ QC-CR#2258691</a></td>
<h2 id="functional-patches">機能パッチ</h2>
-<p>影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記の機能パッチが組み込まれています。下記の表に示すパッチに、関連する参照先、影響を受けるカテゴリ、影響を受けるデバイスを記載しています。</p>
+<p>影響を受ける Pixel デバイス向けに、セキュリティ関連以外の機能の問題に対処する下記の機能パッチが組み込まれています。下記のパッチの表に、関連する参照先、影響を受けるカテゴリ、影響を受けるデバイスを記載しています。</p>
<table>
<colgroup><col width="15%" />
@@ -83,6 +82,12 @@ QC-CR#2258691</a></td>
<th>改善内容</th>
<th>デバイス</th>
</tr>
+ <tr>
+ <td>A-112646910</td>
+ <td>セキュリティ</td>
+ <td>リセット後のロック解除パターンの認識を改善</td>
+ <td>Pixel、Pixel XL</td>
+ </tr>
<tr>
<td>A-117522738</td>
<td>パフォーマンス</td>
@@ -246,13 +251,13 @@ QC-CR#2258691</a></td>
<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 端末用最新バイナリ ドライバに含まれています。
+公開されていない問題には、「参照<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 のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要です。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
+Android デバイスの最新のセキュリティ パッチレベルを宣言するためには、Android のセキュリティに関する公開情報に掲載されているセキュリティの脆弱性への対処が必要となります。それ以外の、この公開情報などに掲載されているセキュリティの脆弱性への対処は必要ありません。
</p>
<h2 id="versions">バージョン</h2>
<table>
diff --git a/ja/security/bulletin/pixel/2018.html b/ja/security/bulletin/pixel/2018.html
index 5d025af2..9097ff0f 100644
--- a/ja/security/bulletin/pixel/2018.html
+++ b/ja/security/bulletin/pixel/2018.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>このページでは、Pixel 端末と Nexus 端末のセキュリティに関して提供可能な 2018 年の公開情報をすべて掲載しています。すべての公開情報の一覧については、<a href="/security/bulletin/pixel/index.html">Pixel / Nexus のセキュリティに関する公開情報</a>のトップページをご覧ください。</p>
+<p>このページでは、Pixel デバイスと Nexus デバイスのセキュリティに関して提供可能な 2018 年の公開情報をすべて掲載しています。すべての公開情報の一覧については、<a href="/security/bulletin/pixel/index.html">Pixel / Nexus のセキュリティに関する公開情報</a>のトップページをご覧ください。</p>
<table>
<colgroup><col width="15%" />
@@ -33,7 +33,20 @@
<th>公開日</th>
<th>セキュリティ パッチレベル</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文(中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文(台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-05</td>
+ </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> /
diff --git a/ja/security/bulletin/pixel/2019-01-01.html b/ja/security/bulletin/pixel/2019-01-01.html
new file mode 100644
index 00000000..6b38f711
--- /dev/null
+++ b/ja/security/bulletin/pixel/2019-01-01.html
@@ -0,0 +1,211 @@
+<html devsite><head>
+ <title>Pixel のアップデートに関する公開情報 - 2019 年 1 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>公開日: 2019 年 1 月 7 日</em></p>
+
+<p>
+Pixel のアップデートに関する公開情報には、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">サポート対象の Google Pixel デバイス</a>(Google デバイス)に影響を与えるセキュリティの脆弱性や機能強化の詳細を掲載しています。Google デバイスでは、セキュリティ パッチレベル 2019-01-05 以降において、この公開情報に掲載されているすべての問題と、2019 年 1 月の Android のセキュリティに関する公開情報に掲載されているすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android のバージョンを確認して更新する</a>をご覧ください。
+</p>
+<p>
+パッチレベル 2019-01-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/2019-01-01">2019 年 1 月の 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="kernel-components">カーネル コンポーネント</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-13098</td>
+ <td>A-113148387<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2">
+アップストリーム カーネル</a></td>
+ <td>ID</td>
+ <td>中</td>
+ <td>ファイル システム</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13099</td>
+ <td>A-113148515<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dbe38dc386910c668c75ae616b99b823b59f3eb">
+アップストリーム カーネル</a></td>
+ <td>ID</td>
+ <td>中</td>
+ <td>ファイル システム</td>
+ </tr>
+</tbody></table>
+
+<h3 id="functional-patches">機能パッチ</h3>
+<p>
+影響を受ける Pixel デバイスには、セキュリティ関連以外の機能の問題に対処する下記のアップデートが組み込まれています。関連する参照先、影響を受けるカテゴリ(Bluetooth やモバイルデータなど)、改善内容、影響を受けるデバイスを下記の表にまとめています。
+</p>
+
+<table>
+ <tbody><tr>
+ </tr></tbody><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-113776612、A-118022272</td>
+ <td>音声</td>
+ <td>録画時の音質向上</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">一般的な質問と回答</h2>
+<p>
+上記の公開情報に対する一般的な質問についての回答は以下のとおりです。
+</p>
+<p>
+<strong>1. 上記の問題に対処するようにデバイスが更新されているかどうかを確かめるには、どうすればよいですか?
+</strong>
+</p>
+<p>
+セキュリティ パッチレベル 2019-01-05 以降では、セキュリティ パッチレベル 2019-01-05、およびそれ以前のすべてのパッチレベルに関連するすべての問題に対処しています。デバイスのセキュリティ パッチレベルを確認する方法については、<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel のアップデート スケジュール</a>に記載されている手順をご覧ください。
+</p>
+<p id="type">
+<strong>2. 「タイプ<em></em>」列の項目はどういう意味ですか?</strong>
+</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 デバイス用最新バイナリ ドライバに通常含まれています。
+</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>2019 年 1 月 7 日</td>
+ <td>情報公開</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/pixel/2019.html b/ja/security/bulletin/pixel/2019.html
new file mode 100644
index 00000000..fccd8401
--- /dev/null
+++ b/ja/security/bulletin/pixel/2019.html
@@ -0,0 +1,198 @@
+<html devsite><head>
+ <title>Pixel のアップデートに関する公開情報(2019 年)</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>このページでは、Pixel のアップデートに関して提供できる 2019 年の公開情報をすべて掲載しています。すべての公開情報の一覧については、<a href="/security/bulletin/pixel/index.html">Pixel のアップデートに関する公開情報</a>のトップページをご覧ください。</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公開情報</th>
+ <th>言語</th>
+ <th>公開日</th>
+ <th>セキュリティ パッチレベル</th>
+ </tr>
+<tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/pixel/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
+ <td>準備中
+ <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019 年 1 月 7 日</td>
+ <td>2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ja/security/bulletin/pixel/index.html b/ja/security/bulletin/pixel/index.html
index 6daae3f9..e74fb2a1 100644
--- a/ja/security/bulletin/pixel/index.html
+++ b/ja/security/bulletin/pixel/index.html
@@ -20,10 +20,10 @@
limitations under the License.
-->
-<p>このページでは、Pixel 端末と Nexus 端末のセキュリティに関して提供可能な月次公開情報を掲載しています。この公開情報は、<a href="/security/bulletin">Android のセキュリティに関する公開情報</a>を補足するもので、Pixel 端末と Nexus 端末を対象とする追加セキュリティ パッチや機能強化についてまとめられています。この公開情報は、<a href="https://support.google.com/nexus/answer/4457705">サポート対象の Pixel 端末と Nexus 端末</a>に適用されます。</p>
+<p>このページでは、Pixel デバイスと Nexus デバイスのセキュリティに関して提供可能な月次公開情報を掲載しています。この公開情報は、<a href="/security/bulletin">Android のセキュリティに関する公開情報</a>を補足するもので、Pixel デバイスと Nexus デバイスを対象とする追加セキュリティ パッチや機能強化についてまとめられています。この公開情報は、<a href="https://support.google.com/nexus/answer/4457705">サポート対象の Pixel デバイスと Nexus デバイス</a>に適用されます。</p>
<h3 id="notification">お知らせ</h3>
-<p>Pixel 端末と Nexus 端末は、月次公開情報のリリース日以降、無線(OTA)アップデートの受信を開始します。一般に、OTA がすべての Nexus 端末に配信されるまでに 1 週間半ほどかかります。また、Nexus ファームウェア イメージも <a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>に毎月リリースされています。
+<p>Pixel デバイスと Nexus デバイスは、月次公開情報のリリース日以降、無線(OTA)アップデートの受信を開始します。一般に、OTA がすべての Nexus デバイスに配信されるまでに 1 週間半ほどかかります。また、Nexus ファームウェア イメージも <a href="https://developers.google.com/android/nexus/images">Google デベロッパー サイト</a>に毎月リリースされています。
</p>
<h3 id="sources">提供元</h3>
@@ -42,17 +42,28 @@
<th>公開日</th>
<th>セキュリティ パッチレベル</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文(中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文(台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-05</td>
+ </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-07-01.html b/ko/security/bulletin/2018-07-01.html
index 93708308..fec528b0 100644
--- a/ko/security/bulletin/2018-07-01.html
+++ b/ko/security/bulletin/2018-07-01.html
@@ -588,7 +588,7 @@ Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
<td>서비스 거부</td>
</tr>
<tr>
- <td>해당 없음</td>
+ <td>N/A</td>
<td>분류 없음</td>
</tr>
</tbody></table>
@@ -662,7 +662,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-08-01.html b/ko/security/bulletin/2018-08-01.html
index af470f9a..7453f42d 100644
--- a/ko/security/bulletin/2018-08-01.html
+++ b/ko/security/bulletin/2018-08-01.html
@@ -53,8 +53,7 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게
<strong>참고:</strong> Google 기기의 최신 무선 업데이트(OTA)
및 펌웨어 이미지 관련 정보는
<a href="/security/bulletin/pixel/2018-08-01.html">2018년 8월
-Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>
-을 참조하세요.
+Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>을 참조하세요.
</p>
<h2 id="mitigations">Android 및 Google 서비스 완화</h2>
@@ -70,13 +69,18 @@ Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>
<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>가 적용된 기기에
-기본적으로
+<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-08-01-details">2018-08-01 보안 패치 수준
-취약성 세부정보</h2>
+<h2 id="2018-08-01-details">2018-08-01 보안 패치 수준 취약성
+세부정보</h2>
<p>
다음 섹션에서는 2018-08-01 패치 수준에 적용되는 각 보안
취약성에 관해 자세히 알아볼 수 있습니다. 취약성은 영향을 받는
@@ -573,7 +577,7 @@ Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
</tbody></table>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
-<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+<p>이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.</p>
<p><strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수
있나요?</strong></p>
@@ -626,7 +630,7 @@ Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/2018-09-01.html b/ko/security/bulletin/2018-09-01.html
index 34b39b4c..7b6987c5 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="/security/enhancements/">Android 보안 플랫폼</a> 및
-<a href="https://www.android.com/play-protect" class="external">Google Play 프로텍트</a>와 같은 서비스 보호 기능에서
+<a href="https://www.android.com/play-protect" class="external">Google Play 프로텍트</a>와 같은
+<a href="/security/enhancements/">Android 보안 플랫폼</a> 및 서비스 보호 기능에서
제공하는 완화에 관한 요약입니다. 이러한 기능을 통해
Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</p>
@@ -68,7 +68,12 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
<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>가 적용된 기기에
+<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>
@@ -689,7 +694,7 @@ Qualcomm에서 직접 제공합니다.</p>
</tbody></table>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
-<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+<p>이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.</p>
<p><strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수
있나요?</strong></p>
diff --git a/ko/security/bulletin/2018-10-01.html b/ko/security/bulletin/2018-10-01.html
index e5887556..b2818ffc 100644
--- a/ko/security/bulletin/2018-10-01.html
+++ b/ko/security/bulletin/2018-10-01.html
@@ -44,8 +44,8 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게
<p>
실제 고객이 새로 보고된 이러한 문제로 인해 악용당했다는 신고는
접수되지 않았습니다. Android 플랫폼의 보안을 개선하는
-<a href="#mitigations">Android 보안 플랫폼 보호</a> 및 Google Play 프로텍트에 관해
-자세히 알아보려면 <a href="/security/enhancements/">Android 및 Google Play 프로텍트 완화</a>
+<a href="/security/enhancements/">Android 보안 플랫폼 보호</a> 및 Google Play 프로텍트에 관해
+자세히 알아보려면 <a href="#mitigations">Android 및 Google Play 프로텍트 완화</a>
섹션을 참조하세요.
</p>
<p class="note">
@@ -68,7 +68,12 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
<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>가 적용된 기기에
+<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>
@@ -371,7 +376,7 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
</tbody></table>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
-<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+<p>이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.</p>
<p><strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수
있나요?</strong></p>
@@ -516,7 +521,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 b02e0513..11c9cd74 100644
--- a/ko/security/bulletin/2018-11-01.html
+++ b/ko/security/bulletin/2018-11-01.html
@@ -37,8 +37,8 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게
제작된 파일을 사용하는 근접한 공격자가 권한이 설정된
프로세스의 컨텍스트 내에서 임의의 코드를 실행할 수 있습니다. <a href="/security/overview/updates-resources.html#severity">심각도
평가</a>는
-개발 목적으로 플랫폼 및 서비스 완화를 사용할 수 없거나 우회에 성공한 경우 취약성 악용으로 인해
-대상 기기가 받는 영향을
+개발 목적으로 플랫폼 및 서비스 완화를 사용할 수 없거나
+우회에 성공한 경우 취약성 악용으로 인해 대상 기기가 받는 영향을
기준으로 합니다.
</p>
<p>
@@ -51,7 +51,8 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게
<p class="note">
<strong>참고:</strong> Google 기기의 최신 무선 업데이트(OTA) 및
펌웨어 이미지 관련 정보는
-<a href="/security/bulletin/pixel/2018-11-01">2018년 11월Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>
+<a href="/security/bulletin/pixel/2018-11-01">2018년 11월
+Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판</a>
을 참조하세요.
</p>
<h2 id="announcements">공지사항</h2>
@@ -60,8 +61,8 @@ 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>
-<p>이 라브러리는 실험적 라이브러리로 표시되었으며, 프로덕션 Android 빌드에 더 이상 포함되지 않습니다.</p>
+CVE-2018-9576, CVE-2018-9577, CVE-2018-9578</p>
+<p>이 라이브러리는 실험적 라이브러리로 표시되었으며, 프로덕션 Android 빌드에 더 이상 포함되지 않습니다.</p>
<h2 id="mitigations">Android 및 Google 서비스 완화</h2>
<p>
@@ -75,7 +76,12 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
<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>가 적용된 기기에
+<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>
@@ -264,7 +270,7 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
</tbody></table>
-<h2 id="2018-11-05-details">2018-11-01 보안 패치 수준 취약성 세부정보</h2>
+<h2 id="2018-11-05-details">2018-11-05 보안 패치 수준 취약성 세부정보</h2>
<p>
다음 섹션에서는 2018-11-05 패치 수준에 적용되는
각 보안 취약성에 관해 자세히 알아볼 수 있습니다. 취약성은
@@ -472,14 +478,14 @@ Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
</tbody></table>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
-<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+<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-10-01 보안 패치 수준과 관련된 모든 문제는 2018-10-01
+<li>2018-11-01 보안 패치 수준과 관련된 모든 문제는 2018-11-01
보안 패치 수준 이상에서 해결됩니다.</li>
<li>2018-11-05 보안 패치 수준 및 그 이전의 모든 패치 수준과 관련된
문제는 2018-11-05 보안 패치 수준 이상에서 모두 해결됩니다.</li>
@@ -525,7 +531,7 @@ Qualcomm AMSS 보안 게시판 또는 보안 알림에 자세히 설명되어
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/2018-12-01.html b/ko/security/bulletin/2018-12-01.html
index 3349aea2..e24cbda7 100644
--- a/ko/security/bulletin/2018-12-01.html
+++ b/ko/security/bulletin/2018-12-01.html
@@ -19,7 +19,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>2018년 12월 3일 게시됨</em></p>
+<p><em>2018년 12월 3일 게시됨 | 2018년 12월 5일 업데이트됨</em></p>
<p>
Android 보안 게시판은 Android 기기에 영향을 미치는 보안 취약성
@@ -27,9 +27,10 @@ Android 보안 게시판은 Android 기기에 영향을 미치는 보안 취약
모두 해결되었습니다. 기기의 보안 패치 수준을 확인하는 방법은
<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android 버전 확인 및 업데이트</a>를 참조하세요.
</p>
-<p>이러한 문제의 해결을 위한 소스 코드 패치는 향후 48시간 동안
-Android 오픈소스 프로젝트(AOSP) 저장소에 배포됩니다. 패치를 사용할 수 있게 되면 AOSP 링크와 함께 이 게시판을
-수정하겠습니다.</p>
+<p>Android 파트너에게는 게시되기 최소 한 달 전에 모든 문제 관련 알림이
+전달되었습니다. 이러한 문제를 해결하기 위한 소스 코드 패치는
+Android 오픈소스 프로젝트(AOSP) 저장소에 배포되었으며 이 게시판에도 링크되어 있습니다.
+이 게시판에는 AOSP 외부의 패치 링크도 포함되어 있습니다.</p>
<p>
이러한 문제 중 가장 심각한 것은 미디어 프레임워크의 심각한 보안 취약성으로,
특별히 제작된 파일을 사용하는 원격 공격자가 권한이 설정된 프로세스의 컨텍스트
@@ -49,7 +50,7 @@ Android 오픈소스 프로젝트(AOSP) 저장소에 배포됩니다. 패치를
<p class="note">
<strong>참고:</strong> Google 기기의 최신 무선 업데이트(OTA) 및
펌웨어 이미지는
-<a href="/security/bulletin/pixel/2018-12-01">2017년 12월
+<a href="/security/bulletin/pixel/2018-12-01">2018년 12월
Pixel&amp;hairsp;/&amp;hairsp;Nexus보안 게시판</a>
을 참조하세요.
</p>
@@ -67,7 +68,12 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
<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>가 적용된 기기에
+<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>
@@ -107,14 +113,14 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
<tr>
<td>CVE-2018-9547</td>
- <td>A-114223584</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/e6eb42cb2e57747e52e488d54da314bc6eabb546" class="external">A-114223584</a></td>
<td>EoP</td>
<td>높음</td>
<td>8.1, 9</td>
</tr>
<tr>
<td>CVE-2018-9548</td>
- <td>A-112555574</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c97efaa05124e020d7cc8c6e08be9c3b55ac4ea7" class="external">A-112555574</a></td>
<td>ID</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
@@ -141,49 +147,49 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
<tr>
<td>CVE-2018-9549</td>
- <td>A-112160868</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/6f6d220a3255e7cbd31bcd1220ffb83af0a2779a" class="external">A-112160868</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-9550</td>
- <td>A-112660981</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/ce97e7d55e1f69683b5bc8f19cc8da8c85bc2cd4" class="external">A-112660981</a></td>
<td>RCE</td>
<td>심각</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9551</td>
- <td>A-112891548</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/0e5db9fee912d367a572b88f0d86f9a33006fa29" class="external">A-112891548</a></td>
<td>RCE</td>
<td>심각</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9552</td>
- <td>A-113260892</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/d15da6f960dd2d5b77faced4e799f8bf53785d9c" class="external">A-113260892</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-9553</td>
- <td>A-116615297</td>
+ <td><a href="https://android.googlesource.com/platform/external/libvpx/+/c4c92b2c6ed72a78ea430c3cdce564ec11866a24" class="external">A-116615297</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-9538</td>
- <td>A-112181526</td>
+ <td><a href="https://android.googlesource.com/platform/external/v4l2_codec2/+/0a7d252adb774338c2c69a17651aceca3aec1b23" class="external">A-112181526</a></td>
<td>EoP</td>
<td>높음</td>
<td>8.1, 9</td>
</tr>
<tr>
<td>CVE-2018-9554</td>
- <td>A-114770654</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/16f9b39c69626093ae9225b458739707c9a3b4e7" class="external">A-114770654</a></td>
<td>ID</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
@@ -210,56 +216,56 @@ Android에서 보안 취약성이 악용될 가능성을 줄입니다.
</tr>
<tr>
<td>CVE-2018-9555</td>
- <td>A-112321180</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/02fc52878d8dba16b860fbdf415b6e4425922b2c" class="external">A-112321180</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-9556</td>
- <td>A-113118184</td>
+ <td><a href="https://android.googlesource.com/platform/system/update_engine/+/840a7eae5a6d8250490e8ea430193531f0c4ccd6" class="external">A-113118184</a></td>
<td>RCE</td>
<td>심각</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9557</td>
- <td>A-35385357</td>
+ <td>A-35385357<a href="#asterisk">*</a></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><a href="https://android.googlesource.com/platform/system/nfc/+/ce7fcb95d5111ad8c554e7ec8ff02f9b40196cdc" class="external">A-112161557</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-9559</td>
- <td>A-112731440</td>
+ <td><a href="https://android.googlesource.com/platform/system/vold/+/c2e37da22aadcdb4a5b7f61a61f824ab8e9b8af9" class="external">A-112731440</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-9560</td>
- <td>A-79946737</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/9009da96e00434501d9398bbfbc636902c757632" class="external">A-79946737</a></td>
<td>EoP</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9562</td>
- <td>A-113164621</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/1bb14c41a72978c6075c5753a8301ddcbb10d409" class="external">A-113164621</a></td>
<td>ID</td>
<td>높음</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9566</td>
- <td>A-74249842</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/314336a22d781f54ed7394645a50f74d6743267d" class="external">A-74249842</a></td>
<td>ID</td>
<td>높음</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9</td>
@@ -299,7 +305,7 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
</tr>
<tr>
<td>CVE-2018-9565</td>
- <td>A-16680558</td>
+ <td>A-16680558<a href="#asterisk">*</a></td>
<td>ID</td>
<td>높음</td>
<td>OMA-DM</td>
@@ -327,7 +333,7 @@ AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을
</tr>
<tr>
<td>CVE-2018-9567</td>
- <td>A-65543936</td>
+ <td>A-65543936<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>높음</td>
<td>부트로더</td>
@@ -644,7 +650,7 @@ Qualcomm 보안 게시판 또는 보안 알림에 자세히 설명되어
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
-<p>이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+<p>이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.</p>
<p><strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수
있나요?</strong></p>
@@ -697,7 +703,7 @@ Qualcomm 보안 게시판 또는 보안 알림에 자세히 설명되어
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -797,6 +803,11 @@ Android 기기의 최신 보안 패치 수준을 선언하는 데 필요합니
<td>2018년 12월 3일</td>
<td>게시판이 게시됨</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018년 12월 5일</td>
+ <td>게시판이 수정되어 AOSP 링크 포함됨</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 285e511d..bec8c6a6 100644
--- a/ko/security/bulletin/2018.html
+++ b/ko/security/bulletin/2018.html
@@ -33,6 +33,20 @@
<th>게시일</th>
<th>보안 패치 수준</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018년 12월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018년 12월 3일</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-11-01.html">2018년 11월</a></td>
<td>
diff --git a/ko/security/bulletin/2019-01-01.html b/ko/security/bulletin/2019-01-01.html
new file mode 100644
index 00000000..ccea6b31
--- /dev/null
+++ b/ko/security/bulletin/2019-01-01.html
@@ -0,0 +1,607 @@
+<html devsite><head>
+ <title>Android 보안 게시판—2019년 1월</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>2019년 1월 7일 게시됨 | 2019년 1월 7일 업데이트됨</em></p>
+
+<p>
+Android 보안 게시판은 Android 기기에 영향을 미치는 보안 취약성
+세부정보를 다룹니다. 이러한 문제는 2019-01-05 보안 패치 수준 이상에서
+모두 해결되었습니다. 기기의 보안 패치 수준을 확인하는 방법은
+<a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android 버전 확인 및 업데이트</a>를 참조하세요.
+</p>
+<p>
+Android 파트너에게는 게시되기 최소 한 달 전에 모든 문제 관련 알림이
+전달되었습니다. 이러한 문제를 해결하기 위한 소스 코드 패치는
+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/2019-01-01">2019년 1월
+Pixel 업데이트 게시판</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="2019-01-01-details">2019-01-01 보안 패치 수준 취약성 세부정보</h2>
+<p>
+다음 섹션에서는 2019-01-01 패치 수준에 적용되는
+각 보안 취약성에 관해 자세히 알아볼 수 있습니다. 취약성은 영향을 받는
+구성요소 아래에 분류되어 있습니다. 여기에는
+문제 설명 및 CVE, 관련 참조,
+<a href="#type">취약성 유형</a>,
+<a href="/security/overview/updates-resources.html#severity">심각도</a>,
+업데이트된 AOSP 버전(해당하는 경우)이 포함된 표가 제시됩니다. 가능한 경우 AOSP 변경사항 목록과 같이 문제를
+해결한 공개 변경사항을 버그 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-9582</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/ab39f6cb7afc48584da3c59d8e2a5e1ef121aafb" class="external">A-112031362</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>8.0, 8.1, 9</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-9583</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/94d718eb61cbb1e6fd08288039d7e62913735c6c" class="external">A-112860487</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-9584</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/5f0f0cc6a10f710dea7e1ddd4ba19acb877a7081" class="external">A-114047681</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-9585</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/71764b791f262491e3f628c14ce3949863dd6058" class="external">A-117554809</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-9586</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/ManagedProvisioning/+/fe4c71a7a3a8a2184b3096203aa9240e01af621e" class="external">A-116754444</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-9587</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Contacts/+/66abad90093df5231f24654a64cf90d9b70ab228" class="external">A-113597344</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-9588</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/bf9ff0c5215861ab673e211cd06e009f3157aab2" class="external">A-111450156</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-9589</td>
+ <td><a href="https://android.googlesource.com/platform/external/wpa_supplicant_8/+/38af82c5ca615f56febcebde714c7cba653fd5ec" class="external">A-111893132</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-9590</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/297598898683b81e921474e6e74c0ddaedbb8bb5" class="external">A-115900043</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-9591</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e1685cfa533db4155a447c405d7065cc17af2ae9" class="external">A-116108738</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-9592</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/8679463ade0ee029ef826ed4fb7a847e2a981375" class="external">A-116319076</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-9593</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/8bc53213110fed8360d3e212dd61fbc0218e0b1e" class="external">A-116722267</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-9594</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/494cd888eb2c5cfda05584dd598815c9268ff3c2" class="external">A-116791157</a></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="2019-01-05-details">2019-01-05 보안 패치 수준 취약성 세부정보</h2>
+
+<p>
+다음 섹션에서는 2019-01-05 패치 수준에 적용되는
+각 보안 취약성에 관해 자세히 알아볼 수 있습니다. 취약성은
+영향을 받는 구성요소 아래에 분류되어 있으며
+CVE, 관련 참조, <a href="#type">취약성 유형</a>,
+<a href="/security/overview/updates-resources.html#severity">심각도</a>,
+구성요소(해당하는 경우), 업데이트된 AOSP 버전(해당하는 경우)과 같은 세부정보가 포함되어 있습니다. 가능한 경우
+AOSP 변경사항 목록과 같이 문제를 해결한 공개 변경사항을 버그 ID에
+연결합니다. 하나의 버그와 관련된 변경사항이 여러 개인 경우
+추가 참조가 버그 ID 다음에 오는 번호에 연결됩니다.
+</p>
+
+<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-10876</td>
+ <td>A-116406122<br />
+ <a href="http://patchwork.ozlabs.org/patch/929239/">업스트림
+커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>ext4 파일 시스템</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10880</td>
+ <td>A-116406509<br />
+ <a href="http://patchwork.ozlabs.org/patch/930639/">업스트림
+커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>ext4 파일 시스템</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10882</td>
+ <td>A-116406626<br />
+ <a href="https://bugzilla.kernel.org/show_bug.cgi?id=200069">업스트림
+커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>ext4 파일 시스템</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13405</td>
+ <td>A-113452403<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7">
+업스트림 커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>파일 시스템</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-18281</td>
+ <td>A-118836219<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb66ae030829605d61fbef1909ce310e29f78821">
+업스트림 커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>TLB</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-17182</td>
+ <td>A-117280327<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a9cdebdcc17e426fb5287e4a82db1dfe86339b2">
+업스트림 커널</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>메모리 관리자</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10877</td>
+ <td>A-116406625<br />
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10877">업스트림
+커널</a></td>
+ <td>ID</td>
+ <td>높음</td>
+ <td>ext4 파일 시스템</td>
+ </tr>
+</tbody></table>
+
+<h3 id="nvidia-components">NVIDIA 구성요소</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-6241</td>
+ <td>A-62540032<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>높음</td>
+ <td>드래곤 BSP</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-11962</td>
+ <td>A-117118292<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/frameworks/av/commit?id=217604d69ce4dcf7c6433a9eafdfceefe25e8fd3">
+QC-CR#2267916</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>오디오</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-12014</td>
+ <td>A-117118062<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=545e03e8420164506457367959ccf01bd055e1aa">
+QC-CR#2278688</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>데이터 HLOS - LNX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13889</td>
+ <td>A-117118677<br />
+ <a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=03885c6896a88d993dd49c64ada02bec52af08a1">
+QC-CR#2288358</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>GPS</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-2018-11847</td>
+ <td>A-111092812<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>심각</td>
+ <td>비공개 소스 구성요소 </td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11888</td>
+ <td>A-111093241<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>높음</td>
+ <td>비공개 소스 구성요소 </td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13888</td>
+ <td>A-117119136<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>2019-01-01 보안 패치 수준과 관련된 모든 문제는 2018-12-01
+보안 패치 수준 이상에서 해결됩니다.</li>
+<li>2019-01-05 보안 패치 수준 및 그 이전의 모든 패치 수준과 관련된
+문제는 2019-01-05 보안 패치 수준 이상에서 모두 해결됩니다.</li>
+</ul>
+<p>이 업데이트를 포함하는 기기 제조업체는 패치 문자열 수준을 다음과 같이
+설정해야 합니다.</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2019-01-01]</li>
+ <li>[ro.build.version.security_patch]:[2019-01-05]</li>
+</ul>
+<p><strong>2. 이 게시판에 두 가지 보안 패치 수준이 있는 이유가 무엇인가요?</strong></p>
+<p>
+이 게시판에는 Android 파트너가 모든 Android 기기에서 유사하게 발생하는
+취약성 문제의 일부를 더욱 빠르고 유연하게 해결할 수 있도록 두 가지
+보안 패치 수준이 포함되어 있습니다. Android 파트너는 이 게시판에 언급된 문제를 모두 수정하고
+최신 보안 패치 수준을 사용하는 것이 좋습니다.
+</p>
+<ul>
+<li>2019-01-01 보안 패치 수준을 사용하는 기기는 이 보안 패치
+수준과 관련된 모든 문제와 이전 보안 게시판에 보고된
+모든 문제의 수정사항을 포함해야 합니다.</li>
+<li>2019-01-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>에서 제공되는 Nexus 기기용 최신 바이너리 드라이버에
+포함되어
+있습니다.
+</p>
+<p>
+<strong>6. 보안 취약성이 이 게시판과 Pixel  게시판과 같은
+기기 / 파트너 보안 게시판에 나뉘어져 있는
+이유가 무엇인가요?</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</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>2019년 1월 7일</td>
+ <td>게시판이 게시됨</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>2019년 1월 7일</td>
+ <td>게시판이 수정되어 AOSP 링크 포함됨</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/2019.html b/ko/security/bulletin/2019.html
new file mode 100644
index 00000000..4a8b0453
--- /dev/null
+++ b/ko/security/bulletin/2019.html
@@ -0,0 +1,213 @@
+<html devsite><head>
+ <title>2019년 Android 보안 게시판</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>이 페이지에는 사용 가능한 2019년 Android 보안 게시판이 모두 포함되어 있습니다. 게시판의 전체 목록을 확인하려면
+<a href="/security/bulletin/index.html">Android 보안 게시판</a> 홈페이지를
+참조하세요.</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>게시판</th>
+ <th>언어</th>
+ <th>게시일</th>
+ <th>보안 패치 수준</th>
+ </tr>
+ <tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-01<br>
+ 2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-01<br>
+ 2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-01<br>
+ 2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-01<br>
+ 2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-01<br>
+ 2019-08-05</td>
+ </tr>
+
+ <tr>
+ <td><a href="/security/bulletin/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-01<br>
+ 2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-01<br>
+ 2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-01<br>
+ 2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-01<br>
+ 2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-01<br>
+ 2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-01<br>
+ 2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/2019-01-01.html">2019년 1월</a></td>
+ <td>출시 예정
+ <!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019년 1월 7일</td>
+ <td>2019-01-01<br />
+ 2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/index.html b/ko/security/bulletin/index.html
index 9d98075d..8817d473 100644
--- a/ko/security/bulletin/index.html
+++ b/ko/security/bulletin/index.html
@@ -21,7 +21,7 @@
-->
<p>월간 기기 업데이트는 Android 사용자의 안전을 유지하고 기기를 보호하는
-중요한 수단입니다. 이 페이지에는 Android 실행 기기에 영향을 주는 발생 가능한 문제에 대해 해결 방법을 제공하는 Android 보안 게시판에 대해 알려드립니다. 다음과 같은 Android 기기 및
+중요한 수단입니다. 이 페이지에서는 Android 실행 기기에 영향을 주는 발생 가능한 문제에 대해 해결 방법을 제공하는 Android 보안 게시판에 대해 알려드립니다. 다음과 같은 Android 기기 및
칩셋 제조업체에서도 자사 제품과 관련된 보안 취약성 세부정보를 게시할 수 있습니다.</p>
<ul>
<li><a href="/security/bulletin/pixel/">Google</a></li>
@@ -32,14 +32,7 @@
<li><a href="https://security.samsungmobile.com/securityUpdate.smsb">삼성</a></li>
</ul>
-<h3 id="notification">알림</h3>
-<p>새로운 Android 게시판이 게시될 때 알림을 받으려면
-<a href="https://groups.google.com/forum/#!forum/android-security-updates">Android
-Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모든
-업데이트 수신으로 설정하세요.
-</p>
-
-<h3 id="sources">소스</h3>
+<h3 id="sources">출처</h3>
<p>공개 게시판에 표시된 수정사항은 Android 오픈소스 프로젝트(AOSP),
업스트림 Linux 커널, 단일 칩 시스템(SOC) 제조업체 등 다양한
@@ -64,7 +57,20 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<th>게시일</th>
<th>보안 패치 수준</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018년 12월</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td><td>2018년 12월 3일</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-11-01.html">2018년 11월</a></td>
<td>
<a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
@@ -346,9 +352,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
</tr>
<tr>
<td><a href="/security/bulletin/2017-03-01.html">2017년 3월</a></td>
- <td><a href="/security/bulletin/2017-03-01.html?hl=ko">한국어</a> /
+ <td><a href="/security/bulletin/2017-03-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2017-03-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2017-03-01.html">English</a> /
+ <a href="/security/bulletin/2017-03-01.html">English</a>/
<a href="/security/bulletin/2017-03-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2017-03-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2017-03-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -359,9 +365,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
</tr>
<tr>
<td><a href="/security/bulletin/2017-02-01.html">2017년 2월</a></td>
- <td><a href="/security/bulletin/2017-02-01.html?hl=ko">한국어</a> /
+ <td><a href="/security/bulletin/2017-02-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2017-02-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2017-02-01.html">English</a> /
+ <a href="/security/bulletin/2017-02-01.html">English</a>/
<a href="/security/bulletin/2017-02-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2017-02-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2017-02-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -372,9 +378,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
</tr>
<tr>
<td><a href="/security/bulletin/2017-01-01.html">2017년 1월</a></td>
- <td><a href="/security/bulletin/2017-01-01.html?hl=ko">한국어</a> /
+ <td><a href="/security/bulletin/2017-01-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2017-01-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2017-01-01.html">English</a> /
+ <a href="/security/bulletin/2017-01-01.html">English</a>/
<a href="/security/bulletin/2017-01-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2017-01-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2017-01-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -386,9 +392,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-12-01.html">2016년 12월</a></td>
<td>
- <a href="/security/bulletin/2016-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-12-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-12-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-12-01.html">English</a> /
+ <a href="/security/bulletin/2016-12-01.html">English</a>/
<a href="/security/bulletin/2016-12-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-12-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-12-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -400,9 +406,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-11-01.html">2016년 11월</a></td>
<td>
- <a href="/security/bulletin/2016-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-11-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-11-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-11-01.html">English</a> /
+ <a href="/security/bulletin/2016-11-01.html">English</a>/
<a href="/security/bulletin/2016-11-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-11-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-11-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -415,9 +421,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-10-01.html">2016년 10월</a></td>
<td>
- <a href="/security/bulletin/2016-10-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-10-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-10-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-10-01.html">English</a> /
+ <a href="/security/bulletin/2016-10-01.html">English</a>/
<a href="/security/bulletin/2016-10-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-10-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-10-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -429,9 +435,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-09-01.html">2016년 9월</a></td>
<td>
- <a href="/security/bulletin/2016-09-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-09-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-09-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-09-01.html">English</a> /
+ <a href="/security/bulletin/2016-09-01.html">English</a>/
<a href="/security/bulletin/2016-09-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-09-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-09-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -444,9 +450,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-08-01.html">2016년 8월</a></td>
<td>
- <a href="/security/bulletin/2016-08-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-08-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-08-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-08-01.html">English</a> /
+ <a href="/security/bulletin/2016-08-01.html">English</a>/
<a href="/security/bulletin/2016-08-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-08-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-08-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -458,9 +464,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-07-01.html">2016년 7월</a></td>
<td>
- <a href="/security/bulletin/2016-07-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-07-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-07-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-07-01.html">English</a> /
+ <a href="/security/bulletin/2016-07-01.html">English</a>/
<a href="/security/bulletin/2016-07-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-07-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-07-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -472,9 +478,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-06-01.html">2016년 6월</a></td>
<td>
- <a href="/security/bulletin/2016-06-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-06-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-06-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-06-01.html">English</a> /
+ <a href="/security/bulletin/2016-06-01.html">English</a>/
<a href="/security/bulletin/2016-06-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-06-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-06-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -485,9 +491,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-05-01.html">2016년 5월</a></td>
<td>
- <a href="/security/bulletin/2016-05-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-05-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-05-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-05-01.html">English</a> /
+ <a href="/security/bulletin/2016-05-01.html">English</a>/
<a href="/security/bulletin/2016-05-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-05-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-05-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -498,9 +504,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-04-02.html">2016년 4월</a></td>
<td>
- <a href="/security/bulletin/2016-04-02.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-04-02.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-04-02.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-04-02.html">English</a> /
+ <a href="/security/bulletin/2016-04-02.html">English</a>/
<a href="/security/bulletin/2016-04-02.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-04-02.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-04-02.html?hl=zh-tw">中文 (台灣)</a>
@@ -511,9 +517,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-03-01.html">2016년 3월</a></td>
<td>
- <a href="/security/bulletin/2016-03-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-03-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-03-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-03-01.html">English</a> /
+ <a href="/security/bulletin/2016-03-01.html">English</a>/
<a href="/security/bulletin/2016-03-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-03-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-03-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -524,9 +530,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-02-01.html">2016년 2월</a></td>
<td>
- <a href="/security/bulletin/2016-02-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-02-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-02-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-02-01.html">English</a> /
+ <a href="/security/bulletin/2016-02-01.html">English</a>/
<a href="/security/bulletin/2016-02-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-02-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-02-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -537,9 +543,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2016-01-01.html">2016년 1월</a></td>
<td>
- <a href="/security/bulletin/2016-01-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2016-01-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2016-01-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2016-01-01.html">English</a> /
+ <a href="/security/bulletin/2016-01-01.html">English</a>/
<a href="/security/bulletin/2016-01-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2016-01-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2016-01-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -550,9 +556,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2015-12-01.html">2015년 12월</a></td>
<td>
- <a href="/security/bulletin/2015-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2015-12-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2015-12-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2015-12-01.html">English</a> /
+ <a href="/security/bulletin/2015-12-01.html">English</a>/
<a href="/security/bulletin/2015-12-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2015-12-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2015-12-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -563,9 +569,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2015-11-01.html">2015년 11월</a></td>
<td>
- <a href="/security/bulletin/2015-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2015-11-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2015-11-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2015-11-01.html">English</a> /
+ <a href="/security/bulletin/2015-11-01.html">English</a>/
<a href="/security/bulletin/2015-11-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2015-11-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2015-11-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -576,9 +582,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2015-10-01.html">2015년 10월</a></td>
<td>
- <a href="/security/bulletin/2015-10-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2015-10-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2015-10-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2015-10-01.html">English</a> /
+ <a href="/security/bulletin/2015-10-01.html">English</a>/
<a href="/security/bulletin/2015-10-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2015-10-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2015-10-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -589,9 +595,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2015-09-01.html">2015년 9월</a></td>
<td>
- <a href="/security/bulletin/2015-09-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2015-09-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2015-09-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2015-09-01.html">English</a> /
+ <a href="/security/bulletin/2015-09-01.html">English</a>/
<a href="/security/bulletin/2015-09-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2015-09-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2015-09-01.html?hl=zh-tw">中文 (台灣)</a>
@@ -602,9 +608,9 @@ Security Updates 그룹</a>에 가입하여 이메일 전달 환경설정을 모
<tr>
<td><a href="/security/bulletin/2015-08-01.html">2015년 8월</a></td>
<td>
- <a href="/security/bulletin/2015-08-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2015-08-01.html?hl=ko">한국어</a>  /
<a href="/security/bulletin/2015-08-01.html?hl=ja">日本語</a> /
- <a href="/security/bulletin/2015-08-01.html">English</a> /
+ <a href="/security/bulletin/2015-08-01.html">English</a>/
<a href="/security/bulletin/2015-08-01.html?hl=ru">ру́сский</a> /
<a href="/security/bulletin/2015-08-01.html?hl=zh-cn">中文 (中国)</a> /
<a href="/security/bulletin/2015-08-01.html?hl=zh-tw">中文 (台灣)</a>
diff --git a/ko/security/bulletin/pixel/2018-01-01.html b/ko/security/bulletin/pixel/2018-01-01.html
index f5111022..862661ce 100644
--- a/ko/security/bulletin/pixel/2018-01-01.html
+++ b/ko/security/bulletin/pixel/2018-01-01.html
@@ -675,7 +675,7 @@ QC-CR#2078342</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -704,7 +704,7 @@ QC-CR#2078342</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-02-01.html b/ko/security/bulletin/pixel/2018-02-01.html
index d6cff0ed..fe3c39d8 100644
--- a/ko/security/bulletin/pixel/2018-02-01.html
+++ b/ko/security/bulletin/pixel/2018-02-01.html
@@ -496,7 +496,7 @@ QC-CR#2003798</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -526,7 +526,7 @@ QC-CR#2003798</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-03-01.html b/ko/security/bulletin/pixel/2018-03-01.html
index ed42ba58..f036f5a4 100644
--- a/ko/security/bulletin/pixel/2018-03-01.html
+++ b/ko/security/bulletin/pixel/2018-03-01.html
@@ -573,7 +573,7 @@ QC-CR#2119401</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -603,7 +603,7 @@ QC-CR#2119401</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-04-01.html b/ko/security/bulletin/pixel/2018-04-01.html
index 9d83e600..acb6adde 100644
--- a/ko/security/bulletin/pixel/2018-04-01.html
+++ b/ko/security/bulletin/pixel/2018-04-01.html
@@ -900,7 +900,7 @@ QC-CR#2098332</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -930,7 +930,7 @@ QC-CR#2098332</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-05-01.html b/ko/security/bulletin/pixel/2018-05-01.html
index 6027da5e..0f5bc71e 100644
--- a/ko/security/bulletin/pixel/2018-05-01.html
+++ b/ko/security/bulletin/pixel/2018-05-01.html
@@ -489,7 +489,7 @@ QC-CR#2149720</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -602,7 +602,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 9b3bf8b4..b29a84f3 100644
--- a/ko/security/bulletin/pixel/2018-06-01.html
+++ b/ko/security/bulletin/pixel/2018-06-01.html
@@ -351,7 +351,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된
<td>wlanThermo procfs 항목</td>
</tr>
<tr>
- <td>CVE-2018-9391</td>
+ <td>CVE-2018-9391 =</td>
<td>A-72313579<a href="#asterisk">*</a><br />
M-ALPS03762614</td>
<td>EoP</td>
@@ -757,7 +757,7 @@ QC-CR#2062648</a></td>
<td>A-74413120</td>
<td>블루투스</td>
<td>BLE 성능 개선</td>
- <td>전체</td>
+ <td>모두</td>
</tr>
<tr>
<td>A-76022834</td>
@@ -824,7 +824,7 @@ A-74058011</td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</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 e73e89a6..ddae0aab 100644
--- a/ko/security/bulletin/pixel/2018-07-01.html
+++ b/ko/security/bulletin/pixel/2018-07-01.html
@@ -377,7 +377,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -406,7 +406,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-08-01.html b/ko/security/bulletin/pixel/2018-08-01.html
index 9a85776b..14e690b8 100644
--- a/ko/security/bulletin/pixel/2018-08-01.html
+++ b/ko/security/bulletin/pixel/2018-08-01.html
@@ -35,9 +35,9 @@ Google 기기의 경우 2018-08-05 보안 패치 수준 이상에서 이 게시
업데이트됩니다. 모든 고객은 기기에서 이 업데이트를 수락하는 것이 좋습니다.
</p>
<p class="note">
-<strong>참고:</strong> Google 기기 펌웨어 이미지는 <a href="https://developers.google.com/android/images" class="external">Google
-개발자 사이트</a>
-에 있습니다.
+<strong>참고:</strong> Google 기기 펌웨어 이미지는
+<a href="https://developers.google.com/android/images" class="external">Google
+개발자 사이트</a>에 있습니다.
</p>
<h2 id="announcements">공지사항</h2>
@@ -186,7 +186,7 @@ Google 기기에는 아래 설명된 보안 취약성과 관련된 패치도 포
<td>A-78364203<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>보통</td>
- <td>터치 스크린</td>
+ <td>터치스크린</td>
</tr>
<tr>
<td>CVE-2018-9439</td>
@@ -200,7 +200,7 @@ Google 기기에는 아래 설명된 보안 취약성과 관련된 패치도 포
<td>A-78362414<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>보통</td>
- <td>터치 스크린</td>
+ <td>터치스크린</td>
</tr>
<tr>
<td>CVE-2018-1068</td>
@@ -431,7 +431,7 @@ QC-CR#2185477</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -459,7 +459,7 @@ QC-CR#2185477</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-09-01.html b/ko/security/bulletin/pixel/2018-09-01.html
index 6ec7999f..26b2709e 100644
--- a/ko/security/bulletin/pixel/2018-09-01.html
+++ b/ko/security/bulletin/pixel/2018-09-01.html
@@ -251,7 +251,7 @@ QC-CR#2204285</a>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -279,7 +279,7 @@ QC-CR#2204285</a>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018-10-01.html b/ko/security/bulletin/pixel/2018-10-01.html
index 7c1c1057..e3512d40 100644
--- a/ko/security/bulletin/pixel/2018-10-01.html
+++ b/ko/security/bulletin/pixel/2018-10-01.html
@@ -89,7 +89,7 @@ Google 기기의 경우 2018-10-05 보안 패치 수준 이상에서 이 게시
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -183,7 +183,7 @@ Google 기기의 경우 2018-10-05 보안 패치 수준 이상에서 이 게시
드라이버에 포함되어 있습니다.
</p>
<p>
-<strong>5 보안 취약성이 이 게시판과 Android 보안 게시판에 나누어져 있는 이유가
+<strong>5. 보안 취약성이 이 게시판과 Android 보안 게시판에 나누어져 있는 이유가
무엇인가요?</strong>
</p>
<p>
@@ -200,7 +200,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 b5b78832..b8fa3e83 100644
--- a/ko/security/bulletin/pixel/2018-11-01.html
+++ b/ko/security/bulletin/pixel/2018-11-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>2018년 11월 5rlx일 게시됨</em></p>
+<p><em>2018년 11월 5일 게시됨</em></p>
<p>
Pixel&amp;hairsp;/&amp;hairsp;Nexus 보안 게시판에서는 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">지원되는
@@ -165,8 +165,8 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된 패
<tr>
<td>A-111401911</td>
<td>디스플레이</td>
- <td><a href="/devices/tech/display/pip">PIP 모드</a>를 사용하여 기기의 성능
- 개선</td>
+ <td><a href="/devices/tech/display/pip">PIP 모드</a>를 사용하여
+ 기기의 성능 개선</td>
<td>Pixel 2, Pixel 2 XL, Pixel 3, Pixel 3 XL</td>
</tr>
<tr>
@@ -192,7 +192,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된 패
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -220,7 +220,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된 패
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
@@ -281,7 +281,7 @@ Pixel 및 Nexus 기기에는 아래 설명된 보안 취약성과 관련된 패
</p>
<p>
공개되지 않은 문제는 <em>참조</em> 열의 Android 버그 ID 옆에 * 표시가
-있습니다. 일반적으로 이러한 문제에 관한 업데이트는 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google
+되어 있습니다. 일반적으로 이러한 문제에 관한 업데이트는 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google
개발자 사이트</a>에서 제공되는 Pixel / Nexus 기기용 최신 바이너리
드라이버에 포함되어 있습니다.
</p>
diff --git a/ko/security/bulletin/pixel/2018-12-01.html b/ko/security/bulletin/pixel/2018-12-01.html
index 596c9a5f..12674097 100644
--- a/ko/security/bulletin/pixel/2018-12-01.html
+++ b/ko/security/bulletin/pixel/2018-12-01.html
@@ -104,6 +104,12 @@ QC-CR#2258691</a></td>
<th>개선 사항</th>
<th>기기</th>
</tr>
+ <tr>
+ <td>A-112646910</td>
+ <td>보안</td>
+ <td>재설정한 이후 패턴 잠금 해제 인식 성능 개선</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
<tr>
<td>A-117522738</td>
<td>성능</td>
@@ -186,7 +192,7 @@ QC-CR#2258691</a></td>
<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
<p>
-이 섹션에서는 게시판을 읽은 뒤 제기될 수 있는 일반적인 질문의 답변을
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
제시합니다.
</p>
<p>
@@ -214,7 +220,7 @@ QC-CR#2258691</a></td>
</tr>
<tr>
<td>RCE</td>
- <td>리모컨 코드 실행</td>
+ <td>원격 코드 실행</td>
</tr>
<tr>
<td>EoP</td>
diff --git a/ko/security/bulletin/pixel/2018.html b/ko/security/bulletin/pixel/2018.html
index e1533434..b760db83 100644
--- a/ko/security/bulletin/pixel/2018.html
+++ b/ko/security/bulletin/pixel/2018.html
@@ -36,6 +36,32 @@
<th>게시일</th>
<th>보안 패치 수준</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018년 12월</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018년 12월 3일</td>
+ <td>2018-12-05</td>
+ </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?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-11-01.html">English</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>
+ </tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-10-01.html">2018년 10월</a></td>
<td>
diff --git a/ko/security/bulletin/pixel/2019-01-01.html b/ko/security/bulletin/pixel/2019-01-01.html
new file mode 100644
index 00000000..75631217
--- /dev/null
+++ b/ko/security/bulletin/pixel/2019-01-01.html
@@ -0,0 +1,249 @@
+<html devsite><head>
+ <title>Pixel 업데이트 게시판—2019년 1월</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>2019년 1월 7일에 게시됨</em></p>
+
+<p>
+Pixel 업데이트 게시판에서는 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">지원되는
+Google Pixel 및 Nexus 기기</a>(Google 기기)에 영향을 미치는 보안 취약성 및 기능 개선을 자세히 다룹니다.
+Google 기기의 경우
+2019-01-05 보안 패치 수준 이상에서 이 게시판에 언급된
+모든 문제와 2019년 1월
+Android 보안 게시판의 모든 문제를 해결했습니다. 기기의 보안 패치 수준을 확인하는 방법은 <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Android 버전 확인 및 업데이트</a>를 참조하세요.
+</p>
+<p>
+지원되는 모든 Google 기기는 2019-01-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/2019-01-01">2019년 1월 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="kernel-components">커널 구성요소</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-13098</td>
+ <td>A-113148387<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2">
+업스트림 커널</a></td>
+ <td>ID</td>
+ <td>보통</td>
+ <td>파일 시스템</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13099</td>
+ <td>A-113148515<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dbe38dc386910c668c75ae616b99b823b59f3eb">
+업스트림 커널</a></td>
+ <td>ID</td>
+ <td>보통</td>
+ <td>파일 시스템</td>
+ </tr>
+</tbody></table>
+
+<h3 id="functional-patches">기능 패치</h3>
+<p>다음 업데이트는 영향을 받은 Pixel 기기에서 Pixel 기기의 보안과
+관련되지 않은 기능 문제를 해결하기 위해 포함되었습니다. 표에는 관련 참조,
+블루투스나 모바일 데이터 등 영향을 받은 카테고리, 개선 사항, 영향을 받은 기기가
+포함되어 있습니다.
+</p>
+
+<table>
+ <tbody><tr>
+ </tr></tbody><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-113776612, A-118022272</td>
+ <td>오디오</td>
+ <td>동영상 녹화 시 오디오 품질 개선</td>
+ <td>Pixel 3, Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">일반적인 질문 및 답변</h2>
+<p>
+이 섹션에서는 게시판 내용에 관한 일반적인 질문의 답변을
+제시합니다.
+</p>
+<p>
+<strong>1. 내 기기가 업데이트되어 이 문제가 해결되었는지 어떻게 알 수 있나요?
+</strong>
+</p>
+<p>
+2019-01-05 보안 패치 수준 및 그 이전의 모든 패치 수준과 관련된
+문제는 2019-01-05 보안 패치 수준 이상에서 모두 해결됩니다. 기기의
+보안 패치 수준을 확인하는 방법을 알아보려면 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel 업데이트 일정</a>의 안내를 참조하세요.
+</p>
+<p id="type">
+<strong>2. <em>유형</em> 열의 항목은 무엇을 의미하나요?</strong>
+</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>에서 제공되는 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>2019년 1월 7일</td>
+ <td>게시판이 게시됨</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/pixel/2019.html b/ko/security/bulletin/pixel/2019.html
new file mode 100644
index 00000000..79c45459
--- /dev/null
+++ b/ko/security/bulletin/pixel/2019.html
@@ -0,0 +1,201 @@
+<html devsite><head>
+ <title>2019 Pixel 업데이트 게시판</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>이 페이지에는 사용 가능한 2019 Pixel 업데이트 게시판이
+모두 포함되어 있습니다. 게시판의 전체 목록을 확인하려면
+<a href="/security/bulletin/pixel/index.html">Pixel 업데이트
+게시판</a> 홈페이지를 참조하세요.</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>게시판</th>
+ <th>언어</th>
+ <th>게시일</th>
+ <th>보안 패치 수준</th>
+ </tr>
+<tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/pixel/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">2019년 1월</a></td>
+ <td>출시 예정
+ <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019년 1월 7일</td>
+ <td>2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ko/security/bulletin/pixel/index.html b/ko/security/bulletin/pixel/index.html
index b373c4ac..eb2f561a 100644
--- a/ko/security/bulletin/pixel/index.html
+++ b/ko/security/bulletin/pixel/index.html
@@ -56,6 +56,32 @@ Pixel&amp;hairsp;/&amp;hairsp;Nexus 게시판이 게시된 후 24~48시간 내
<th>게시일</th>
<th>보안 패치 수준</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018년 12월</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018년 12월 3일</td>
+ <td>2018-12-05</td>
+ </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?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-11-01.html">English</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>
+ </tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-10-01.html">2018년 10월</a></td>
<td>
diff --git a/ru/security/bulletin/2018-09-01.html b/ru/security/bulletin/2018-09-01.html
index febf4537..01a4256e 100644
--- a/ru/security/bulletin/2018-09-01.html
+++ b/ru/security/bulletin/2018-09-01.html
@@ -34,7 +34,7 @@
У нас нет информации о том, что обнаруженные уязвимости эксплуатировались. В разделе <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-09-01">бюллетене по безопасности Pixel  и Nexus</a> за сентябрь 2018 года.
+<strong>Примечание.</strong> Информация о последних автоматических обновлениях (OTA) и образах встроенного ПО для устройств Google содержится в <a href="/security/bulletin/pixel/2018-09-01">бюллетене по безопасности Pixel  и Nexus</a> за сентябрь 2018 г.
</p>
<h2 id="mitigations">Предотвращение атак</h2>
@@ -290,39 +290,7 @@
<td><a href="https://android.googlesource.com/platform/system/sepolicy/+/d4e094e2b1a47c1fea1799d9fade19e953a7ca1b" class="external">A-110107376</a></td>
<td>ПП</td>
<td>Средний</td>
- <td>8.0, 8.1, 9</td>
- </tr>
-</tbody></table>
-
-<h3 id="update-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-9411</td>
- <td><a href="https://android.googlesource.com/platform/system/libhidl/+/93484b9b015d47c0f7e5f4449a214b2fed8bed4f" class="external">A-79376389</a></td>
- <td>УВК</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>УВК</td>
- <td>Критический</td>
- <td>8.0, 8.1, 9</td>
+ <td>8.0, 8.1, 9.0</td>
</tr>
</tbody></table>
diff --git a/ru/security/bulletin/2018-10-01.html b/ru/security/bulletin/2018-10-01.html
index 8b0ac6e5..a5ca409d 100644
--- a/ru/security/bulletin/2018-10-01.html
+++ b/ru/security/bulletin/2018-10-01.html
@@ -85,7 +85,7 @@
<td><a href="https://android.googlesource.com/platform/frameworks/base/+/962fb40991f15be4f688d960aa00073683ebdd20">A-111934948</a></td>
<td>ПП</td>
<td>Высокий</td>
- <td>8.0, 8.1, 9</td>
+ <td>8.0, 8.1, 9.0</td>
</tr>
<tr>
<td>CVE-2018-9493</td>
diff --git a/ru/security/bulletin/2018-12-01.html b/ru/security/bulletin/2018-12-01.html
index 8e584dbd..ec1bbb7c 100644
--- a/ru/security/bulletin/2018-12-01.html
+++ b/ru/security/bulletin/2018-12-01.html
@@ -19,12 +19,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>Опубликовано 3 декабря 2018 г.</em></p>
+<p><em>Опубликовано 3 декабря 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>
+<p>Мы сообщили партнерам обо всех проблемах по крайней мере за месяц до выхода бюллетеня. Исправления уязвимостей доступны в хранилище Android Open Source Project (AOSP).
+В бюллетене также приведены ссылки на исправления вне AOSP.</p>
<p>
Самая серьезная из проблем – критическая уязвимость в Media Framework, которая позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла. <a href="/security/overview/updates-resources.html#severity">Уровень серьезности</a> зависит от того, какой ущерб будет нанесен устройству при атаке с использованием уязвимости, если средства защиты будут отключены разработчиком или взломаны.
</p>
@@ -68,14 +69,14 @@
</tr>
<tr>
<td>CVE-2018-9547</td>
- <td>A-114223584</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/e6eb42cb2e57747e52e488d54da314bc6eabb546" class="external">A-114223584</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>8.1, 9.0</td>
</tr>
<tr>
<td>CVE-2018-9548</td>
- <td>A-112555574</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c97efaa05124e020d7cc8c6e08be9c3b55ac4ea7" class="external">A-112555574</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
@@ -100,49 +101,49 @@
</tr>
<tr>
<td>CVE-2018-9549</td>
- <td>A-112160868</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/6f6d220a3255e7cbd31bcd1220ffb83af0a2779a" class="external">A-112160868</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-9550</td>
- <td>A-112660981</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/ce97e7d55e1f69683b5bc8f19cc8da8c85bc2cd4" class="external">A-112660981</a></td>
<td>УВК</td>
<td>Критический</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9551</td>
- <td>A-112891548</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/0e5db9fee912d367a572b88f0d86f9a33006fa29" class="external">A-112891548</a></td>
<td>УВК</td>
<td>Критический</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9552</td>
- <td>A-113260892</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/d15da6f960dd2d5b77faced4e799f8bf53785d9c" class="external">A-113260892</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-9553</td>
- <td>A-116615297</td>
+ <td><a href="https://android.googlesource.com/platform/external/libvpx/+/c4c92b2c6ed72a78ea430c3cdce564ec11866a24" class="external">A-116615297</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-9538</td>
- <td>A-112181526</td>
+ <td><a href="https://android.googlesource.com/platform/external/v4l2_codec2/+/0a7d252adb774338c2c69a17651aceca3aec1b23" class="external">A-112181526</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>8.1, 9.0</td>
</tr>
<tr>
<td>CVE-2018-9554</td>
- <td>A-114770654</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/16f9b39c69626093ae9225b458739707c9a3b4e7" class="external">A-114770654</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
@@ -167,56 +168,56 @@
</tr>
<tr>
<td>CVE-2018-9555</td>
- <td>A-112321180</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/02fc52878d8dba16b860fbdf415b6e4425922b2c" class="external">A-112321180</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-9556</td>
- <td>A-113118184</td>
+ <td><a href="https://android.googlesource.com/platform/system/update_engine/+/840a7eae5a6d8250490e8ea430193531f0c4ccd6" class="external">A-113118184</a></td>
<td>УВК</td>
<td>Критический</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9557</td>
- <td>A-35385357</td>
+ <td>A-35385357<a href="#asterisk">*</a></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><a href="https://android.googlesource.com/platform/system/nfc/+/ce7fcb95d5111ad8c554e7ec8ff02f9b40196cdc" class="external">A-112161557</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-9559</td>
- <td>A-112731440</td>
+ <td><a href="https://android.googlesource.com/platform/system/vold/+/c2e37da22aadcdb4a5b7f61a61f824ab8e9b8af9" class="external">A-112731440</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-9560</td>
- <td>A-79946737</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/9009da96e00434501d9398bbfbc636902c757632" class="external">A-79946737</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9562</td>
- <td>A-113164621</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/1bb14c41a72978c6075c5753a8301ddcbb10d409" class="external">A-113164621</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9566</td>
- <td>A-74249842</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/314336a22d781f54ed7394645a50f74d6743267d" class="external">A-74249842</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1, 9.0</td>
@@ -248,7 +249,7 @@
</tr>
<tr>
<td>CVE-2018-9565</td>
- <td>A-16680558</td>
+ <td>A-16680558<a href="#asterisk">*</a></td>
<td>РИ</td>
<td>Высокий</td>
<td>Протокол OMA-DM</td>
@@ -274,7 +275,7 @@
</tr>
<tr>
<td>CVE-2018-9567</td>
- <td>A-65543936</td>
+ <td>A-65543936<a href="#asterisk">*</a></td>
<td>ПП</td>
<td>Высокий</td>
<td>Загрузчик</td>
@@ -704,6 +705,11 @@
<td>3 декабря 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.html b/ru/security/bulletin/2018.html
index f8c3a771..26bf5bd9 100644
--- a/ru/security/bulletin/2018.html
+++ b/ru/security/bulletin/2018.html
@@ -33,8 +33,36 @@
<th>Дата публикации</th>
<th>Обновление системы безопасности</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">Декабрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>3 декабря 2018 г.</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">Ноябрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+<a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+<a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</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>5 ноября 2018 г.</td>
+ <td>2018-11-01<br />
+ 2018-11-05</td>
+ </tr>
<tr>
- <td><a href="/security/bulletin/2018-10-01.html">Октябрь 2018 г.</a></td>
+ <td><a href="/security/bulletin/2018-10-01.html">Октябрь 2018 г.</a></td>
<td>
<a href="/security/bulletin/2018-10-01.html">English</a> /
<a href="/security/bulletin/2018-10-01.html?hl=ja">日本語</a> /
diff --git a/ru/security/bulletin/2019-01-01.html b/ru/security/bulletin/2019-01-01.html
new file mode 100644
index 00000000..98ea3593
--- /dev/null
+++ b/ru/security/bulletin/2019-01-01.html
@@ -0,0 +1,509 @@
+<html devsite><head>
+ <title>Бюллетень по безопасности Android – январь 2019 г.</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>Опубликовано 7 января 2019 г. | Обновлено 7 января 2019 г.</em></p>
+
+<p>
+В этом бюллетене содержится информация об уязвимостях в защите устройств Android. Все актуальные проблемы, перечисленные здесь, устранены в исправлении от 5 января 2019 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Справочном центре</a>.
+</p>
+<p>
+Мы сообщили партнерам обо всех проблемах по крайней мере за месяц до выхода бюллетеня. Исправления уязвимостей доступны в хранилище Android Open Source Project (AOSP).
+В бюллетене также приведены ссылки на исправления вне AOSP.
+</p>
+<p>
+Самая серьезная из проблем – критическая уязвимость в системе, которая позволяет злоумышленнику выполнять произвольный код в контексте привилегированного процесса с помощью специально созданного файла. <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/2019-01-01">бюллетене по обновлениям Pixel </a> за январь 2019 года.
+</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="2019-01-01-details">Описание уязвимостей (обновление системы безопасности 2019-01-01)</h2>
+<p>
+В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2019-01-01. Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведены описание и таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Когда несколько изменений относятся к одной ошибке, дополнительные ссылки перечислены в квадратных скобках.
+</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-9582</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/ab39f6cb7afc48584da3c59d8e2a5e1ef121aafb" class="external">A-112031362</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>8.0, 8.1, 9.0</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-9583</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/94d718eb61cbb1e6fd08288039d7e62913735c6c" class="external">A-112860487</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-9584</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/5f0f0cc6a10f710dea7e1ddd4ba19acb877a7081" class="external">A-114047681</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-9585</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/71764b791f262491e3f628c14ce3949863dd6058" class="external">A-117554809</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-9586</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/ManagedProvisioning/+/fe4c71a7a3a8a2184b3096203aa9240e01af621e" class="external">A-116754444</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-9587</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Contacts/+/66abad90093df5231f24654a64cf90d9b70ab228" class="external">A-113597344</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-9588</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/bf9ff0c5215861ab673e211cd06e009f3157aab2" class="external">A-111450156</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-9589</td>
+ <td><a href="https://android.googlesource.com/platform/external/wpa_supplicant_8/+/38af82c5ca615f56febcebde714c7cba653fd5ec" class="external">A-111893132</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-9590</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/297598898683b81e921474e6e74c0ddaedbb8bb5" class="external">A-115900043</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-9591</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e1685cfa533db4155a447c405d7065cc17af2ae9" class="external">A-116108738</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-9592</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/8679463ade0ee029ef826ed4fb7a847e2a981375" class="external">A-116319076</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-9593</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/8bc53213110fed8360d3e212dd61fbc0218e0b1e" class="external">A-116722267</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-9594</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/494cd888eb2c5cfda05584dd598815c9268ff3c2" class="external">A-116791157</a></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="2019-01-05-details">Описание уязвимостей (обновление системы безопасности 2019-01-05)</h2>
+
+<p>
+В этом разделе вы найдете подробную информацию обо всех уязвимостях, устраненных в обновлении системы безопасности 2019-01-05. Проблемы сгруппированы по компонентам, которые они затрагивают. Для каждого приведена таблица, где указаны CVE, ссылки, <a href="#type">тип уязвимости</a>, <a href="/security/overview/updates-resources.html#severity">уровень серьезности</a>, а также версии AOSP (при наличии). Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Когда несколько изменений относятся к одной ошибке, дополнительные ссылки перечислены в квадратных скобках.
+</p>
+
+<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-10876</td>
+ <td>A-116406122<br />
+ <a href="http://patchwork.ozlabs.org/patch/929239/">Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Файловая система ext4</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10880</td>
+ <td>A-116406509<br />
+ <a href="http://patchwork.ozlabs.org/patch/930639/">Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Файловая система ext4</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10882</td>
+ <td>A-116406626<br />
+ <a href="https://bugzilla.kernel.org/show_bug.cgi?id=200069">Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Файловая система ext4</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13405</td>
+ <td>A-113452403<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7">
+Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Файловая система</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-18281</td>
+ <td>A-118836219<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb66ae030829605d61fbef1909ce310e29f78821">
+Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>TLB</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-17182</td>
+ <td>A-117280327<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a9cdebdcc17e426fb5287e4a82db1dfe86339b2">
+Upstream kernel</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Диспетчер памяти</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10877</td>
+ <td>A-116406625<br />
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10877">Upstream kernel</a></td>
+ <td>РИ</td>
+ <td>Высокий</td>
+ <td>Файловая система ext4</td>
+ </tr>
+</tbody></table>
+
+<h3 id="nvidia-components">Компоненты NVIDIA</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-6241</td>
+ <td>A-62540032<a href="#asterisk">*</a></td>
+ <td>ПП</td>
+ <td>Высокий</td>
+ <td>Пакет поддержки платформы Dragon</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-11962</td>
+ <td>A-117118292<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/frameworks/av/commit?id=217604d69ce4dcf7c6433a9eafdfceefe25e8fd3">
+QC-CR#2267916</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Аудио</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-12014</td>
+ <td>A-117118062<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=545e03e8420164506457367959ccf01bd055e1aa">
+QC-CR#2278688</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Данные HLOS – LNX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13889</td>
+ <td>A-117118677<br />
+ <a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=03885c6896a88d993dd49c64ada02bec52af08a1">
+QC-CR#2288358</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>GPS</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-2018-11847</td>
+ <td>A-111092812<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Критический</td>
+ <td>Компонент с закрытым исходным кодом </td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11888</td>
+ <td>A-111093241<a href="#asterisk">*</a></td>
+ <td>Н/Д</td>
+ <td>Высокий</td>
+ <td>Компонент с закрытым исходным кодом </td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13888</td>
+ <td>A-117119136<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 января 2019 года или более новом устранены все проблемы, связанные с обновлением 2019-01-01.</li>
+<li>В исправлении от 5 января 2019 года или более новом устранены все проблемы, связанные с обновлением 2019-01-05.</li>
+</ul>
+<p>Производители устройств, позволяющие установить эти обновления, должны присвоить им один из этих уровней:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2019-01-01]</li>
+ <li>[ro.build.version.security_patch]:[2019-01-05]</li>
+</ul>
+<p><strong>2. Почему в этом бюллетене говорится о двух обновлениях системы безопасности?</strong></p>
+<p>
+Мы включили в этот бюллетень сведения о двух обновлениях, чтобы помочь нашим партнерам как можно скорее устранить уязвимости, затрагивающие все устройства Android. Рекомендуем партнерам Android исправить все вышеперечисленные проблемы и установить последнее обновление системы безопасности.
+</p>
+<ul>
+<li>На устройствах с установленным обновлением 2019-01-01 должны быть исправлены все проблемы, упомянутые в соответствующем разделе этого бюллетеня, а также в предыдущих выпусках.</li>
+<li>На устройствах с установленным обновлением 2019-01-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, которые можно скачать на <a href="https://developers.google.com/android/drivers" class="external">сайте для разработчиков</a>.
+</p>
+<p>
+<strong>6. Почему теперь одни уязвимости описываются в этих бюллетенях, а другие – в бюллетенях по безопасности Pixel , а также в остальных бюллетенях партнеров?</strong>
+</p>
+<p>
+В этом бюллетене описаны уязвимости, которые были устранены в последнем обновлении системы безопасности для устройств Android. Решать дополнительные проблемы, перечисленные в бюллетенях по безопасности партнеров, для этого не потребовалось. Мы рекомендуем производителям чипсетов и устройств Android рассказывать об исправлениях для своих устройств в бюллетенях по безопасности на собственных сайтах, например <a href="https://security.samsungmobile.com/securityUpdate.smsb" class="external">Samsung</a>, <a href="https://lgsecurity.lge.com/security_updates.html" class="external">LGE</a>, а также <a href="/security/bulletin/pixel/" class="external">Pixel </a>.
+</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>7 января 2019 г.</td>
+ <td>Бюллетень опубликован.</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>7 января 2019 г.</td>
+ <td>Добавлены ссылки на AOSP.</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/2019.html b/ru/security/bulletin/2019.html
new file mode 100644
index 00000000..c052bc5c
--- /dev/null
+++ b/ru/security/bulletin/2019.html
@@ -0,0 +1,210 @@
+<html devsite><head>
+ <title>Бюллетени по безопасности Android за 2019 г.</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>Здесь собраны бюллетени по безопасности Android за 2019 год. Полный список бюллетеней вы найдете на <a href="/security/bulletin/index.html">главной странице</a>.</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>Бюллетень</th>
+ <th>Язык</th>
+ <th>Дата публикации</th>
+ <th>Обновление системы безопасности</th>
+ </tr>
+ <tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-01<br>
+ 2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-01<br>
+ 2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-01<br>
+ 2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-01<br>
+ 2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-01<br>
+ 2019-08-05</td>
+ </tr>
+
+ <tr>
+ <td><a href="/security/bulletin/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-01<br>
+ 2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-01<br>
+ 2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-01<br>
+ 2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-01<br>
+ 2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-01<br>
+ 2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-01<br>
+ 2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/2019-01-01.html">Январь 2019 г.</a></td>
+ <td>Готовится к публикации <!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>7 января 2019 г.</td>
+ <td>2019-01-01<br />
+ 2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/index.html b/ru/security/bulletin/index.html
index 07225d14..7794c815 100644
--- a/ru/security/bulletin/index.html
+++ b/ru/security/bulletin/index.html
@@ -30,10 +30,6 @@
<li><a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a></li>
</ul>
-<h3 id="notification">Уведомления</h3>
-<p>Чтобы получать оповещения о выходе бюллетеней, вступите в группу <a href="https://groups.google.com/forum/#!forum/android-security-updates">Android Security Updates</a> и включите уведомления обо всех новых сообщениях.
-</p>
-
<h3 id="sources">Источники</h3>
<p>Перечисленные здесь исправления получены из разных источников: из Android Open Source Project (AOSP), из сообщества Linux и от производителей процессоров. Информация для производителей устройств:</p>
@@ -55,8 +51,35 @@
<th>Дата публикации</th>
<th>Обновление системы безопасности</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">Декабрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td><td>3 декабря 2018 г.</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">Ноябрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+<a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+<a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</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>5 ноября 2018 г.</td>
+ <td>2018-11-01<br />
+ 2018-11-05</td>
+ </tr>
<tr>
- <td><a href="/security/bulletin/2018-10-01.html">Октябрь 2018 г.</a></td>
+ <td><a href="/security/bulletin/2018-10-01.html">Октябрь 2018 г.</a></td>
<td>
<a href="/security/bulletin/2018-10-01.html">English</a> /
<a href="/security/bulletin/2018-10-01.html?hl=ja">日本語</a> /
diff --git a/ru/security/bulletin/pixel/2018-01-01.html b/ru/security/bulletin/pixel/2018-01-01.html
index ff943bb7..32c22261 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>
diff --git a/ru/security/bulletin/pixel/2018-03-01.html b/ru/security/bulletin/pixel/2018-03-01.html
index e14c7e6d..1ddea8a5 100644
--- a/ru/security/bulletin/pixel/2018-03-01.html
+++ b/ru/security/bulletin/pixel/2018-03-01.html
@@ -196,7 +196,7 @@ Upstream kernel</a></td>
<td>USB-аудиодрайвер</td>
</tr>
<tr>
- <td>CVE-2017-15649</td>
+ <td>CVE-2017-1564</td>
<td>A-69160446<br />
<a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=008ba2a13f2d04c947adc536d19debb8fe66f110">Upstream kernel</a> [<a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=4971613c1639d8e5f102c4e797c3bf8f83a5a69e">2</a>]</td>
<td>ПП</td>
diff --git a/ru/security/bulletin/pixel/2018-04-01.html b/ru/security/bulletin/pixel/2018-04-01.html
index e3a5835f..bafbe548 100644
--- a/ru/security/bulletin/pixel/2018-04-01.html
+++ b/ru/security/bulletin/pixel/2018-04-01.html
@@ -510,7 +510,7 @@ QC-CR#2098332</a></td>
<td>A-35963245</td>
<td>Производительность</td>
<td>Включена поддержка набора номера с подсказками.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-37681923<br />
@@ -529,37 +529,37 @@ QC-CR#2098332</a></td>
<td>A-64101451</td>
<td>Производительность</td>
<td>Улучшено переключение соединения с VoLTE на VoWi-Fi во время экстренных вызовов для некоторых операторов связи.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-64586126</td>
<td>Камера</td>
<td>Повышена производительность микровидео в Google Камере.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-64610438</td>
<td>Производительность</td>
<td>Уменьшена задержка при запуске некоторых приложений.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-65175134</td>
<td>Видео</td>
<td>Улучшено декодирование некоторых видеопотоков.</td>
- <td>Pixel, Pixel XL</td>
+ <td>Pixel, Pixel XL</td>
</tr>
<tr>
<td>A-65347520</td>
<td>Производительность</td>
<td>Ускорено время реакции сканера отпечатков пальцев и клавиатуры в определенных условиях.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-65490850</td>
<td>Пользовательский интерфейс</td>
<td>Изменены уведомления о входе в зону покрытия Wi-Fi и выходе из нее во время видеовстречи.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-65509134</td>
@@ -589,43 +589,43 @@ QC-CR#2098332</a></td>
<td>A-67589241</td>
<td>Производительность</td>
<td>Улучшена работа магнитного датчика.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-67593274</td>
<td>Батарея</td>
<td>Уменьшен расход заряда батареи, возникающий после проблем с модемом.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-67634615</td>
<td>Стабильность</td>
<td>Повышена стабильность работы модема.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-67750231</td>
<td>Пользовательский интерфейс</td>
<td>Внесены изменения в интерфейс переадресации вызова.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-67774904</td>
<td>Подключение</td>
<td>Повышена производительность групповых вызовов по Wi-Fi.</td>
- <td>Pixel, Pixel XL</td>
+ <td>Pixel, Pixel XL</td>
</tr>
<tr>
<td>A-67777512</td>
<td>Подключение</td>
<td>Улучшена передача данных для абонентов T-Mobile в некоторых регионах Австралии.</td>
- <td>Pixel, Pixel XL</td>
+ <td>Pixel, Pixel XL</td>
</tr>
<tr>
<td>A-67882977</td>
<td>Сертификация</td>
<td>Изменен процесс сертификации.</td>
- <td>Pixel, Pixel XL</td>
+ <td>Pixel, Pixel XL</td>
</tr>
<tr>
<td>A-68150449<br />
@@ -635,25 +635,25 @@ QC-CR#2098332</a></td>
A-68824279</td>
<td>Стабильность</td>
<td>Повышена стабильность работы Wi-Fi.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-68217064</td>
<td>Производительность</td>
<td>Улучшено переключение на функцию "Звонки по Wi-Fi" в зонах со слабым покрытием сети.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-68398312</td>
<td>Производительность</td>
<td>Повышена производительность конференц-вызовов по Wi-Fi.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-68671462</td>
<td>Подключение</td>
<td>Повышена производительность VoLTE для некоторых операторов связи.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-68841424</td>
@@ -673,7 +673,7 @@ QC-CR#2098332</a></td>
A-68940490</td>
<td>Сертификация</td>
<td>Обновлены сертификаты, чтобы обеспечить продолжение обслуживания.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-68931709</td>
@@ -685,13 +685,13 @@ QC-CR#2098332</a></td>
<td>A-68959671</td>
<td>Подключение</td>
<td>Обновлен файл Verizon Service APK.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69003183</td>
<td>Журнал</td>
<td>Улучшено ведение журналов для Wi-Fi и RPM.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69017578<br />
@@ -703,7 +703,7 @@ QC-CR#2098332</a></td>
A-70406781</td>
<td>Подключение, производительность</td>
<td>Улучшена передача данных и повышена производительность работы в сетях некоторых операторов связи.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69064494</td>
@@ -721,7 +721,7 @@ QC-CR#2098332</a></td>
<td>A-69209000</td>
<td>Подключение</td>
<td>Улучшено подключение к Интернету в некоторых сетях Wi-Fi.</td>
- <td>Pixel 2</td>
+ <td>Pixel 2</td>
</tr>
<tr>
<td>A-69238007<br />
@@ -729,20 +729,20 @@ QC-CR#2098332</a></td>
A-69334308</td>
<td>Подключение</td>
<td>Изменены настройки точки доступа.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69261367<br />
A-70512352</td>
<td>Сообщения</td>
<td>Улучшен обмен MMS-сообщениями для некоторых операторов связи.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69275204</td>
<td>Батарея</td>
<td>Изменены верхний и нижний пределы, в которых происходит корректировка емкости батареи.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69334266</td>
@@ -760,7 +760,7 @@ QC-CR#2098332</a></td>
<td>A-69672417</td>
<td>Стабильность</td>
<td>Повышена стабильность работы телефонов Pixel 2 в некоторых регионах Канады.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-69848394<br />
@@ -773,26 +773,26 @@ QC-CR#2098332</a></td>
<td>A-69870527</td>
<td>Пользовательский интерфейс</td>
<td>Улучшена работа индикаторов при совершении экстренных вызовов.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-70045970</td>
<td>Батарея</td>
<td>Оптимизирована логика поиска, чтобы повысить производительность батареи.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-70094083<br />
A-70094701</td>
<td>Батарея</td>
<td>Улучшено ведение журналов батареи.</td>
- <td>Pixel 2, Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-70214869</td>
<td>GPS</td>
<td>Улучшена работа с GPS-сигналами времени.</td>
- <td>Pixel 2 XL</td>
+ <td>Pixel 2 XL</td>
</tr>
<tr>
<td>A-70338906</td>
@@ -804,13 +804,13 @@ QC-CR#2098332</a></td>
<td>A-70398372</td>
<td>Пользовательский интерфейс</td>
<td>Изменены расширенные настройки вызовов для Verizon.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-70576351</td>
<td>Подключение</td>
<td>Изменен приоритет использования определенных диапазонов частот.</td>
- <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-70580873<br />
@@ -818,13 +818,13 @@ QC-CR#2098332</a></td>
A-71497259</td>
<td>Подключение</td>
<td>Улучшено качество выполнения вызовов для некоторых операторов связи.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-70815434</td>
<td>Подключение</td>
<td>Повышена производительность работы в сети оператора связи Simyo.</td>
- <td>Nexus 5X</td>
+ <td>Nexus 5X</td>
</tr>
<tr>
<td>A-71708302</td>
@@ -836,7 +836,7 @@ QC-CR#2098332</a></td>
<td>A-71983424</td>
<td>Производительность</td>
<td>Улучшено переключение между LTE и Wi-Fi.</td>
- <td>Pixel 2 XL</td>
+ <td>Pixel 2 XL</td>
</tr>
<tr>
<td>A-72119809</td>
diff --git a/ru/security/bulletin/pixel/2018-05-01.html b/ru/security/bulletin/pixel/2018-05-01.html
index 56858411..5bd0730c 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>
@@ -212,7 +212,7 @@ Upstream kernel</a></td>
<td>A-64340684<a href="#asterisk">*</a></td>
<td>РИ</td>
<td>Средний</td>
- <td>Mediaserver</td>
+ <td>Медиасервер</td>
</tr>
<tr>
<td>CVE-2018-6246</td>
@@ -453,7 +453,7 @@ QC-CR#2149720</a></td>
<td>A-72851087</td>
<td>Питание</td>
<td>Внесены изменения в процесс зарядки батареи.</td>
- <td>Pixel XL</td>
+ <td>Pixel XL</td>
</tr>
</tbody></table>
diff --git a/ru/security/bulletin/pixel/2018-06-01.html b/ru/security/bulletin/pixel/2018-06-01.html
index 67daedbe..a3ffaece 100644
--- a/ru/security/bulletin/pixel/2018-06-01.html
+++ b/ru/security/bulletin/pixel/2018-06-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>
@@ -30,8 +30,7 @@
Обновление системы безопасности 2018-06-05 получат все поддерживаемые устройства Google. Мы настоятельно рекомендуем пользователям установить это обновление.
</p>
<p class="note">
-<strong>Примечание.</strong> Образы встроенного ПО для устройств Google можно найти на
-<a href="https://developers.google.com/android/images">сайте Google Developers</a>.
+<strong>Примечание.</strong> Образы встроенного ПО для устройств Google можно найти на <a href="https://developers.google.com/android/images">сайте Google Developers</a>.
</p>
<h2 id="announcements">Объявления</h2>
<p>Помимо исправлений уязвимостей, описанных в бюллетене по безопасности Android за июнь 2018 года, обновления для устройств Pixel и Nexus содержат также исправления проблем, перечисленных ниже. Мы сообщили партнерам об этих проблемах не менее месяца назад. Они могут включить эти исправления в свои обновления безопасности.</p>
@@ -102,8 +101,7 @@
</tr>
<tr>
<td>CVE-2018-9379</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/42e5aed1d106bef1f8913ffe87aa1f9df6aae90c">A-63766886</a>
- [<a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/76ffd8258c483b7170af49a8a67702426df07f2f">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/42e5aed1d106bef1f8913ffe87aa1f9df6aae90c">A-63766886</a> [<a href="https://android.googlesource.com/platform/packages/providers/MediaProvider/+/76ffd8258c483b7170af49a8a67702426df07f2f">2</a>]</td>
<td>РИ</td>
<td>Средний</td>
<td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
@@ -146,8 +144,7 @@
</tr>
<tr>
<td rowspan="2">CVE-2018-9352</td>
- <td rowspan="2"><a href="https://android.googlesource.com/platform/external/libhevc/+/a7303e887a40ab164b19b310068e13ac4f123edc">A-73965867</a>
- [<a href="https://android.googlesource.com/platform/external/libhevc/+/9434d4d8846241f0575aaf48ee7d4342e926ae77">2</a>]</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/external/libhevc/+/a7303e887a40ab164b19b310068e13ac4f123edc">A-73965867</a> [<a href="https://android.googlesource.com/platform/external/libhevc/+/9434d4d8846241f0575aaf48ee7d4342e926ae77">2</a>]</td>
<td>РИ</td>
<td>Средний</td>
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
@@ -745,19 +742,19 @@ QC-CR#2062648</a></td>
<td>A-77963927</td>
<td>Wi-Fi</td>
<td>Улучшено подключение к Wi-Fi через некоторые точки доступа.</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-77458860</td>
<td>Пользовательский интерфейс</td>
<td>IMEISV-код теперь отображается корректно (в числовом формате).</td>
- <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
</tr>
<tr>
<td>A-68114567<br />
A-74058011</td>
- <td>Экран</td>
+ <td>Дисплей</td>
<td>Повышена стабильность работы функции "Информация на заблокированном экране".</td>
<td>Pixel 2 XL</td>
</tr>
diff --git a/ru/security/bulletin/pixel/2018-07-01.html b/ru/security/bulletin/pixel/2018-07-01.html
index 6dd0700f..0fa17f31 100644
--- a/ru/security/bulletin/pixel/2018-07-01.html
+++ b/ru/security/bulletin/pixel/2018-07-01.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><em>Опубликовано 2 июля 2018 г. | Обновлено 3 июля 2018 г.</em></p>
+<p><em>Опубликовано 2 июля 2018 г. | Обновлено 8 ноября 2018 г.</em></p>
<p>
В этом бюллетене содержится информация об уязвимостях в защите и об улучшениях функциональных возможностей <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">поддерживаемых устройств Pixel и Nexus</a> (устройства Google).
@@ -222,7 +222,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">Upstream kernel</a></td>
<td>ПП</td>
@@ -460,6 +460,11 @@
<td>3 июля 2018 г.</td>
<td>Добавлены ссылки на AOSP.</td>
</tr>
+ <tr>
+ <td>1.2</td>
+ <td>8 ноября 2018 г.</td>
+ <td>Изменена уязвимость CVE-2017-1000112.</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/pixel/2018-09-01.html b/ru/security/bulletin/pixel/2018-09-01.html
index 4337ea68..c0afb157 100644
--- a/ru/security/bulletin/pixel/2018-09-01.html
+++ b/ru/security/bulletin/pixel/2018-09-01.html
@@ -310,7 +310,7 @@
<strong>4. Что означает символ * рядом с идентификатором ошибки Android в столбце <em>Ссылки</em>?</strong>
</p>
<p>
-Символ * означает, что исправление для уязвимости не опубликовано.<em></em> Необходимое обновление содержится в последних бинарных драйверах для устройств Pixel и Nexus, которые можно скачать на <a href="https://developers.google.com/android/nexus/drivers" class="external">сайте Google Developers</a>.
+Символ * означает, что исправление для уязвимости не опубликовано.<em></em> Необходимое обновление содержится в последних бинарных драйверах для устройств Pixel и Nexus, которые можно скачать на <a href="https://developers.google.com/android/nexus/drivers" class="external">сайте Google Developers</a>.
</p>
<p>
<strong>5. Почему теперь одни уязвимости описываются в этом бюллетене, а другие – в бюллетенях по безопасности Android?</strong>
diff --git a/ru/security/bulletin/pixel/2018-10-01.html b/ru/security/bulletin/pixel/2018-10-01.html
index 51145d6c..066277d8 100644
--- a/ru/security/bulletin/pixel/2018-10-01.html
+++ b/ru/security/bulletin/pixel/2018-10-01.html
@@ -159,7 +159,7 @@
<strong>4. Что означает символ * рядом с идентификатором ошибки Android в столбце <em>Ссылки</em>?</strong>
</p>
<p>
-Символ * означает, что исправление для уязвимости не опубликовано.<em></em> Необходимое обновление содержится в последних бинарных драйверах для устройств Pixel и Nexus, которые можно скачать на <a href="https://developers.google.com/android/nexus/drivers" class="external">сайте Google Developers</a>.
+Символ * означает, что исправление для уязвимости не опубликовано.<em></em> Необходимое обновление содержится в последних бинарных драйверах для устройств Pixel и Nexus, которые можно скачать на <a href="https://developers.google.com/android/nexus/drivers" class="external">сайте Google Developers</a>.
</p>
<p>
<strong>5. Почему теперь одни уязвимости описываются в этом бюллетене, а другие – в бюллетенях по безопасности Android?</strong>
diff --git a/ru/security/bulletin/pixel/2018-11-01.html b/ru/security/bulletin/pixel/2018-11-01.html
index 00942ef5..b7e20303 100644
--- a/ru/security/bulletin/pixel/2018-11-01.html
+++ b/ru/security/bulletin/pixel/2018-11-01.html
@@ -44,7 +44,7 @@
Где возможно, идентификаторы ошибки содержат ссылку на опубликованное изменение (например, список AOSP). Если опубликованных изменений несколько, дополнительные ссылки указаны в квадратных скобках.
</p>
-<h3 id="framework-05">Framework</h3>
+<h3 id="framework-05">Фреймворк</h3>
<table>
<colgroup><col width="21%" />
@@ -65,7 +65,7 @@
</td>
<td>РИ</td>
<td>Высокий</td>
- <td>9</td>
+ <td>9.0</td>
</tr>
</tbody></table>
diff --git a/ru/security/bulletin/pixel/2018-12-01.html b/ru/security/bulletin/pixel/2018-12-01.html
index 092e2c35..19fe4bd1 100644
--- a/ru/security/bulletin/pixel/2018-12-01.html
+++ b/ru/security/bulletin/pixel/2018-12-01.html
@@ -85,6 +85,12 @@ QC-CR#2258691</a></td>
<th>Описание</th>
<th>Устройства</th>
</tr>
+ <tr>
+ <td>A-112646910</td>
+ <td>Безопасность</td>
+ <td>Улучшено распознавание графического ключа после сброса.</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
<tr>
<td>A-117522738</td>
<td>Производительность</td>
diff --git a/ru/security/bulletin/pixel/2018.html b/ru/security/bulletin/pixel/2018.html
index 03ab10d6..c7badd3a 100644
--- a/ru/security/bulletin/pixel/2018.html
+++ b/ru/security/bulletin/pixel/2018.html
@@ -33,7 +33,20 @@
<th>Дата публикации</th>
<th>Обновление системы безопасности</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">Декабрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>3 декабря 2018 г.</td>
+ <td>2018-12-05</td>
+ </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> /
diff --git a/ru/security/bulletin/pixel/2019-01-01.html b/ru/security/bulletin/pixel/2019-01-01.html
new file mode 100644
index 00000000..8084bea9
--- /dev/null
+++ b/ru/security/bulletin/pixel/2019-01-01.html
@@ -0,0 +1,213 @@
+<html devsite><head>
+ <title>Бюллетень по обновлениям Pixel – январь 2019 г.</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>Опубликовано 7 января 2019 г.</em></p>
+
+<p>
+В этом бюллетене содержится информация об уязвимостях в защите и улучшениях функциональных возможностей <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">поддерживаемых устройств Pixel</a> (устройства Google).
+Все проблемы, перечисленные здесь и в бюллетене по безопасности Android за январь 2019 года, устранены в исправлении от 5 января 2019 года или более новом. Информацию о том, как проверить обновления системы безопасности, можно найти в статье <a href="https://support.google.com/pixelphone/answer/4457705" class="external">Справочного центра</a>.
+</p>
+<p>
+Обновление системы безопасности 2019-01-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/2019-01-01">бюллетене по безопасности Android</a> за январь 2019 года, обновления для устройств 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="kernel-components">Компоненты ядра</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-13098</td>
+ <td>A-113148387<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2">
+Upstream kernel</a></td>
+ <td>РИ</td>
+ <td>Средний</td>
+ <td>Файловая система</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13099</td>
+ <td>A-113148515<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dbe38dc386910c668c75ae616b99b823b59f3eb">
+Upstream kernel</a></td>
+ <td>РИ</td>
+ <td>Средний</td>
+ <td>Файловая система</td>
+ </tr>
+</tbody></table>
+
+<h3 id="functional-patches">Улучшения функциональных возможностей</h3>
+<p>В эти обновления включены исправления проблем, касающихся функциональных возможностей устройств Pixel. Они не связаны с уязвимостями в защите. В таблице приведены ссылки, категория обновления (например, Bluetooth или мобильный Интернет) и описание улучшения, а также сведения об устройствах, для которых предназначены исправления.
+</p>
+
+<table>
+ <tbody><tr>
+ </tr></tbody><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-113776612, A-118022272</td>
+ <td>Аудио</td>
+ <td>Улучшено качество звука при записи видео.</td>
+ <td>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 января 2019 года или более новом устранены все проблемы, связанные с обновлением 2019-01-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, которые можно скачать на <a href="https://developers.google.com/android/drivers" class="external">сайте для разработчиков</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>7 января 2019 г.</td>
+ <td>Бюллетень опубликован.</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/pixel/2019.html b/ru/security/bulletin/pixel/2019.html
new file mode 100644
index 00000000..72c56c46
--- /dev/null
+++ b/ru/security/bulletin/pixel/2019.html
@@ -0,0 +1,197 @@
+<html devsite><head>
+ <title>Бюллетени по обновлениям Pixel за 2019 г.</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>Здесь собраны бюллетени по обновлениям Pixel за 2019 год. Полный список бюллетеней вы найдете на <a href="/security/bulletin/pixel/index.html">главной странице</a>.</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>Бюллетень</th>
+ <th>Язык</th>
+ <th>Дата публикации</th>
+ <th>Обновление системы безопасности</th>
+ </tr>
+<tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/pixel/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">Январь 2019 г.</a></td>
+ <td>Готовится к публикации <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>7 января 2019 г.</td>
+ <td>2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/ru/security/bulletin/pixel/index.html b/ru/security/bulletin/pixel/index.html
index f75d3bf7..ce48112d 100644
--- a/ru/security/bulletin/pixel/index.html
+++ b/ru/security/bulletin/pixel/index.html
@@ -23,7 +23,7 @@
<p>На этой странице собраны ежемесячные бюллетени по безопасности Pixel  и Nexus. Они выпускаются как приложение к <a href="/security/bulletin">бюллетеням по безопасности Android</a>. В них описаны дополнительные обновления системы безопасности и улучшения функциональных возможностей для <a href="https://support.google.com/nexus/answer/4457705">поддерживаемых устройств Pixel и Nexus</a>.</p>
<h3 id="notification">Уведомления</h3>
-<p>Устройства Pixel и Nexus начинают получать автоматические обновления системы безопасности (OTA) со дня выхода ежемесячного бюллетеня. Обычно на устройства Nexus обновления приходят в течение 10-11 дней. Образы встроенного ПО Nexus также выходят каждый месяц и публикуются на <a href="https://developers.google.com/android/nexus/images">сайте для разработчиков</a>.
+<p>Устройства Pixel и Nexus начинают получать автоматические обновления системы безопасности (OTA) со дня выхода ежемесячного бюллетеня. Обычно на устройства Nexus обновления приходят в течение 10–11 дней. Образы встроенного ПО Nexus также выходят каждый месяц и публикуются на <a href="https://developers.google.com/android/nexus/images">сайте для разработчиков</a>.
</p>
<h3 id="sources">Источники</h3>
@@ -42,7 +42,20 @@
<th>Дата публикации</th>
<th>Обновление системы безопасности</th>
</tr>
- <tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">Декабрь 2018 г.</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">русский</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+<a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>3 декабря 2018 г.</td>
+ <td>2018-12-05</td>
+ </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> /
diff --git a/zh-cn/_book.yaml b/zh-cn/_book.yaml
index 574cea4b..137aad24 100644
--- a/zh-cn/_book.yaml
+++ b/zh-cn/_book.yaml
@@ -37,7 +37,7 @@ upper_tabs:
- path: /setup/build/devices
title: 使用参考开发板
- path: /setup/build/gsi
- title: 查找通用系统映像
+ title: 常规系统映像
- path: /setup/build/jack
title: 使用 Jack 编译
- path: /setup/build/running
@@ -46,7 +46,9 @@ upper_tabs:
title: 编译内核
- path: /setup/build/known-issues
title: 查看已知问题
- name: 细分版本
+ - path: /setup/build/dashboard
+ title: 持续集成信息中心
+ name: 编译
- contents:
- path: /setup/develop/
title: 概览
@@ -91,7 +93,7 @@ upper_tabs:
title: 概览
- section:
- path: /devices/architecture/hal
- title: HAL
+ title: 旧版 HAL
- path: /devices/architecture/hal-types
title: HAL 类型
- path: /devices/architecture/hal/framework-testing
@@ -265,10 +267,80 @@ upper_tabs:
title: 概览
- path: /compatibility/cdd/
title: 兼容性定义文档
- - path: /compatibility/android-cdd
- title: 兼容性定义文档(HTML 格式)
- - path: /compatibility/android-cdd.pdf
- title: 兼容性定义文档(PDF 格式)
+ - section:
+ - path: /compatibility/9/android-9-cdd
+ title: Android 9(现行版本)
+ - path: /compatibility/8.1/android-8.1-cdd
+ title: Android 8.1
+ - path: /compatibility/8.0/android-8.0-cdd
+ title: Android 8.0
+ - path: /compatibility/7.1/android-7.1-cdd
+ title: Android 7.1
+ - path: /compatibility/7.0/android-7.0-cdd
+ title: Android 7.0
+ - path: /compatibility/6.0/android-6.0-cdd
+ title: Android 6.0
+ - path: /compatibility/5.1/android-5.1-cdd
+ title: Android 5.1
+ - path: /compatibility/5.0/android-5.0-cdd
+ title: Android 5.0
+ - path: /compatibility/4.4/android-4.4-cdd
+ title: Android 4.4
+ - path: /compatibility/4.3/android-4.3-cdd
+ title: Android 4.3
+ - path: /compatibility/4.2/android-4.2-cdd
+ title: Android 4.2
+ - path: /compatibility/4.1/android-4.1-cdd
+ title: Android 4.1
+ - path: /compatibility/4.0/android-4.0-cdd
+ title: Android 4.0
+ - path: /compatibility/2.3/android-2.3-cdd
+ title: Android 2.3
+ - path: /compatibility/2.2/android-2.2-cdd
+ title: Android 2.2
+ - path: /compatibility/2.1/android-2.1-cdd
+ title: Android 2.1
+ - path: /compatibility/1.6/android-1.6-cdd
+ title: Android 1.6
+ title: HTML 格式的 CDD
+ - section:
+ - path: /compatibility/9/android-9-cdd.pdf
+ title: Android 9(现行版本)
+ - path: /compatibility/8.1/android-8.1-cdd.pdf
+ title: Android 8.1
+ - path: /compatibility/8.0/android-8.0-cdd.pdf
+ title: Android 8.0
+ - path: /compatibility/7.1/android-7.1-cdd.pdf
+ title: Android 7.1
+ - path: /compatibility/7.0/android-7.0-cdd.pdf
+ title: Android 7.0
+ - path: /compatibility/6.0/android-6.0-cdd.pdf
+ title: Android 6.0
+ - path: /compatibility/5.1/android-5.1-cdd.pdf
+ title: Android 5.1
+ - path: /compatibility/5.0/android-5.0-cdd.pdf
+ title: Android 5.0
+ - path: /compatibility/4.4/android-4.4-cdd.pdf
+ title: Android 4.4
+ - path: /compatibility/4.3/android-4.3-cdd.pdf
+ title: Android 4.3
+ - path: /compatibility/4.2/android-4.2-cdd.pdf
+ title: Android 4.2
+ - path: /compatibility/4.1/android-4.1-cdd.pdf
+ title: Android 4.1
+ - path: /compatibility/4.0/android-4.0-cdd.pdf
+ title: Android 4.0
+ - path: /compatibility/2.3/android-2.3-cdd.pdf
+ title: Android 2.3
+ - path: /compatibility/2.3/android-2.3.3-cdd.pdf
+ title: Android 2.3.3
+ - path: /compatibility/2.2/android-2.2-cdd.pdf
+ title: Android 2.2
+ - path: /compatibility/2.1/android-2.1-cdd.pdf
+ title: Android 2.1
+ - path: /compatibility/1.6/android-1.6-cdd.pdf
+ title: Android 1.6
+ title: CDD 另存为 PDF 格式
name: 兼容性
- contents:
- path: /devices/tech/display/
@@ -319,9 +391,39 @@ upper_tabs:
title: 通用搜索
name: 设置
- contents:
- - path: /compatibility/tests
+ - path: /compatibility/tests/
title: 概览
- section:
+ - path: /compatibility/tests/development/
+ title: 概览
+ - path: /compatibility/tests/development/blueprints.md
+ title: 简单配置
+ - path: /compatibility/tests/development/test-config.md
+ title: 复杂配置
+ - section:
+ - path: /compatibility/tests/development/instrumentation.md
+ title: 概览
+ - path: /compatibility/tests/development/instr-self-e2e.md
+ title: 自插桩测试
+ - path: /compatibility/tests/development/instr-app-e2e.md
+ title: 定位应用
+ title: 插桩测试
+ - section:
+ - path: /compatibility/tests/development/native.md
+ title: 概览
+ - path: /compatibility/tests/development/native-func-e2e.md
+ title: 添加新的原生测试
+ - path: /compatibility/tests/development/metrics.md
+ title: 原生指标测试
+ title: 原生测试
+ - path: /compatibility/tests/development/jar.md
+ title: JAR 主机测试
+ - path: /compatibility/tests/development/test-mapping
+ title: 映射测试
+ - path: /compatibility/tests/development/atest
+ title: 运行测试 (Atest)
+ title: 测试开发工作流程
+ - section:
- path: /compatibility/cts/
title: 概览
- path: /compatibility/cts/setup
@@ -343,14 +445,20 @@ upper_tabs:
- section:
- path: /compatibility/cts/camera-hal
title: 相机 HAL 测试
- - path: /compatibility/cts/camera-its-box
+ - section:
+ - path: /compatibility/cts/camera-its-box
+ title: 概览
+ - path: /compatibility/cts/camera-its-box-assembly
+ title: 常规视野盒装 ITS
+ - path: /compatibility/cts/camera-wfov-box-assembly
+ title: 宽视野盒装 ITS
title: 相机盒装 ITS
- - path: /compatibility/cts/camera-its-box-assembly
- title: 组装相机盒装 ITS
- - path: /compatibility/cts/sensor-fusion-quick-start
- title: 传感器融合盒快速入门
- - path: /compatibility/cts/sensor-fusion-box-assembly
- title: 组装传感器融合盒
+ - section:
+ - path: /compatibility/cts/sensor-fusion-quick-start
+ title: 传感器融合盒快速入门
+ - path: /compatibility/cts/sensor-fusion-box-assembly
+ title: 传感器融合盒详细信息
+ title: 传感器融合盒
title: 相机测试
- path: /compatibility/cts/secure-element
title: 安全要素
@@ -359,11 +467,13 @@ upper_tabs:
- path: /compatibility/cts/development
title: CTS 开发
- path: /compatibility/cts/downloads
- title: 下载
- title: 兼容性测试套件
+ title: 下载次数
+ title: 兼容性测试套件 (CTS)
- section:
- path: /compatibility/vts/
title: 概览
+ - path: /compatibility/vts/codelab-video
+ title: Codelab 和视频教程
- path: /compatibility/vts/systems
title: 使用 VTS 进行系统测试
- section:
@@ -412,7 +522,7 @@ upper_tabs:
title: 端到端示例
- path: /reference/tradefed/
title: 软件包索引
- title: 测试基础架构
+ title: Trade Federation 自动化测试框架
- section:
- path: /devices/tech/debug/
title: 概览
@@ -498,6 +608,14 @@ upper_tabs:
title: 公告
- section:
- section:
+ - path: /security/bulletin/2018-12-01
+ title: 12 月
+ - path: /security/bulletin/2018-11-01
+ title: 11 月
+ - path: /security/bulletin/2018-10-01
+ title: 10 月
+ - path: /security/bulletin/2018-09-01
+ title: 9 月
- path: /security/bulletin/2018-08-01
title: 8 月
- path: /security/bulletin/2018-07-01
@@ -592,6 +710,14 @@ upper_tabs:
- path: /security/bulletin/pixel/index
title: 概览
- section:
+ - path: /security/bulletin/pixel/2018-12-01
+ title: 12 月
+ - path: /security/bulletin/pixel/2018-11-01
+ title: 11 月
+ - path: /security/bulletin/pixel/2018-10-01
+ title: 10 月
+ - path: /security/bulletin/pixel/2018-09-01
+ title: 9 月
- path: /security/bulletin/pixel/2018-08-01
title: 8 月
- path: /security/bulletin/pixel/2018-07-01
@@ -665,6 +791,8 @@ upper_tabs:
- section:
- path: /security/trusty/
title: 概览
+ - path: /security/trusty/download-and-build
+ title: 下载和编译
- path: /security/trusty/trusty-ref
title: Trusty API 参考
title: Trusty TEE
@@ -677,6 +805,8 @@ upper_tabs:
title: 全盘加密
- path: /security/encryption/metadata
title: 元数据加密
+ - path: /security/encryption/adiantum
+ title: 启用Adiantum
title: 加密
- section:
- path: /security/selinux/
@@ -730,7 +860,23 @@ upper_tabs:
title: 内核 CFI
- path: /devices/tech/debug/intsan
title: 整数溢出清理
- name: 动态分析
+ name: 测试
+ - contents:
+ - path: /security/best-practices/
+ title: 概览
+ - path: /security/best-practices/ops
+ title: 运营安全性
+ - path: /security/best-practices/system
+ title: 系统安全性
+ - path: /security/best-practices/app
+ title: 应用安全性
+ - path: /security/best-practices/network
+ title: 网络安全性
+ - path: /security/best-practices/hardware
+ title: 硬件安全性
+ - path: /security/best-practices/privacy
+ title: 隐私安全性
+ name: 最佳做法
name: 安全性
- lower_tabs:
other:
@@ -837,7 +983,7 @@ upper_tabs:
- path: /devices/bluetooth/ble
title: 蓝牙低功耗
- path: /devices/bluetooth/asha
- title: 将 BLE 用于助听器
+ title: 使用 BLE 的助听器
- path: /devices/bluetooth/ble_advertising
title: BLE 广播
- path: /devices/bluetooth/verifying_debugging
@@ -905,7 +1051,7 @@ upper_tabs:
- path: /devices/tech/connect/wifi-rtt
title: WLAN 往返时间 (RTT)
- path: /devices/tech/connect/wifi-debug
- title: 测试和调试
+ title: 测试、调试和调整 WLAN
title: WLAN
name: 连接
- contents:
@@ -963,6 +1109,8 @@ upper_tabs:
- path: /devices/graphics/cts-integration
title: 与 Android CTS 集成
title: OpenGL ES 测试
+ - path: /devices/graphics/tracing-win-transitions
+ title: 跟踪窗口转换
name: 图形
- contents:
- section:
@@ -1147,8 +1295,10 @@ upper_tabs:
title: 网络接口统计信息概览
- path: /devices/tech/datausage/tethering-data
title: 网络共享流量
+ - path: /devices/tech/connect/tethering-offload
+ title: 网络共享分流
- path: /devices/tech/datausage/usage-cycle-resets-dates
- title: 流量统计周期重置日期
+ title: 流量消耗重计日期
- path: /devices/tech/datausage/kernel-overview
title: 内核概览
- path: /devices/tech/datausage/kernel-changes
@@ -1189,6 +1339,8 @@ upper_tabs:
title: APK 缓存
- path: /devices/tech/perf/boot-times
title: 启动时间
+ - path: /devices/tech/perf/lmkd
+ title: 用户空间中的 LMKD
- path: /devices/tech/perf/low-ram
title: 低内存
- path: /devices/tech/perf/pgo
diff --git a/zh-cn/_index.yaml b/zh-cn/_index.yaml
index 6b0c5b95..9118c57e 100644
--- a/zh-cn/_index.yaml
+++ b/zh-cn/_index.yaml
@@ -46,33 +46,32 @@ landing_page:
items:
- heading: Android 开源项目简介
description: |
- Android 是一个支持多种移动设备的开源软件堆栈以及对应的由 Google 领导的开源项目。此网站和 Android 开源项目 (AOSP) 代码库可为您提供所需信息和源代码,供您创建定制的 Android 堆栈版本,将设备和配件移植到 Android 平台,同时确保您的设备符合兼容性要求。<br /><br />
-
- 此外,我们还希望确保 Android 平台不存在集中瓶颈(意即没有任何行业参与者可一手限制或控制其他参与者的创新)。这样,我们就可以针对消费类商品打造一个完整的高品质操作系统,并支持对源代码进行定制和移植。而现在,本网站已在中国发布,网址为 <a href="https://source.android.google.cn/">source.android.google.cn</a>。<br /><br />
-
- 欢迎您向我们提供关于 AOSP 文档网站的反馈意见。随着生态系统不断变化,我们需要您的帮助来保持内容与时俱进。请使用任意页面底部的<a href="https://issuetracker.google.com/issues/new?component=191476">网站反馈</a>链接来报告错误以及提出改进建议。如需详细了解所有更新,请参阅网站的<a href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?pretty=full&no-merges">更改日志</a>。
+ Android 是一个适用于移动设备的开源操作系统以及由 Google 主导的相关开源项目。此网站和 Android 开源项目 (AOSP) 代码库可为您提供所需信息和源代码,供您创建定制的 Android 操作系统版本,将设备和配件移植到 Android 平台,同时确保您的设备符合兼容性要求,从而让 Android 生态系统维持良好稳健的运行环境,以便更好地服务于数百万用户。
+ <br /><br />作为一个开源项目,Android 的目标是避免出现任何集中瓶颈(即没有任何行业参与者可一手限制或控制其他任何参与者的创新)。为此,Android 被打造成了一个适用于消费类产品的完整高品质操作系统,并配有可定制源代码,该代码可移植到几乎所有设备以及所有用户均可使用的公开文档中(英文网址:<a href="https://source.android.com/">source.android.com</a>;简体中文网址:<a href="https://source.android.google.cn/">source.android.google.cn</a>)。
+ <br /><br />
+ 正如您可以<a href="/setup/contribute/">为 AOSP 贡献代码</a>一样,您也可以为 AOSP 文档“添砖加瓦”,而且我们非常欢迎您提供宝贵意见!Android 的灵活性和不断变化的代码库意味着,此网站要想提供准确且与 Android 实现者息息相关的最新内容,离不开您的反馈。我们建议您查看<a href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?pretty=full&no-merges">更改日志</a>,以详细了解 AOSP 的最新动态,并使用每个页面底部的<a href="https://issuetracker.google.com/issues/new?component=191476">网站反馈</a>(或通过访问 <a href="https://g.co/androidsourceissue">g.co/androidsourceissue</a>)来报告错误或提供建议。
image_path: /images/android_stack.png
- heading: 新闻
items:
- - heading: Android 9 文档
- description: >
- Android 9 已发布!该网站提供有关在最新版 Android 中实现功能、改进措施和增强功能的文档。
+ - heading: 启用 Adiantum
+ description: >-
+ 用于启用 Adiantum 的新页面,Adiantum 是一种加密方法,专为搭载 Android 9 或更高版本且其 CPU 缺少
+ AES 指令的设备而设计。
buttons:
- - label: 2018 年 8 月 6 日
- path: /setup/start/p-release-notes
- - heading: 网站更新
+ - label: 2018 年 12 月 21 日
+ path: /security/encryption/adiantum
+ - heading: 安全性最佳做法
description: >
- 本网站经过了全新改版,可让您更轻松地浏览、搜索和阅读日益增多的信息。查看重新整理后的版块和全新导航。
+ 添加了一个包含设备制造商安全性最佳做法(包括针对系统、应用、网络、硬件以及组织和运营安全性的提示)的新部分。
buttons:
- - label: 2018 年 8 月 6 日
- path: /setup/start/site-updates
- - heading: 8 月安全公告
- description: >-
- 2018 年 8 月的 Android 和 Pixel/Nexus 安全公告已经发布,一同发布的还有相关修复程序的链接以及用于
- 8 月安全更新补丁的新版本号。
+ - label: 2018 年 12 月 18 日
+ path: /security/best-practices
+ - heading: Trusty 可信执行环境
+ description: >
+ 更新了 Trusty(即 Android 的开源可信执行环境 (TEE))的相关信息。您可以使用 Trusty TEE 打造更安全的移动设备。
buttons:
- - label: 2018 年 8 月 6 日
- path: /security/bulletin/2018-08-01
+ - label: 2018 年 12 月 17 日
+ path: /security/trusty/
- classname: devsite-landing-row-100 tf-row-centered
items:
- buttons:
diff --git a/zh-cn/compatibility/cts/camera-hal.html b/zh-cn/compatibility/cts/camera-hal.html
index 77aba125..21147b93 100644
--- a/zh-cn/compatibility/cts/camera-hal.html
+++ b/zh-cn/compatibility/cts/camera-hal.html
@@ -41,11 +41,11 @@
<p>以下是适用于最新 Android 相机的主要测试类型以及相关说明:</p>
<ul>
- <li><em><a href="#vendor_test_suite">供应商测试套件 (VTS)</a>:</em>直接针对相机 HAL 接口的测试
+ <li><em></em><a href="#vendor_test_suite">供应商测试套件 (VTS)</a>:直接测试相机 HAL 接口的测试
</li><li><em><a href="#cts_tests">兼容性测试套件 (CTS)</a></em>:自动运行的标准 Android 测试,可确保设备兼容性;有关详情,请参阅 <a href="/compatibility/cts/index.html">CTS 简介</a>和<a href="/devices/tech/test_infra/tradefed/index.html">贸易联盟概述</a>
- </li><li><em><a href="#its_tests">图像测试套件 (ITS)</a>:</em>手动运行的测试,可确保图像正确性;有关设置说明,请参阅顶级和测试专用的 <code>README</code> 文件以及 <code>tutorial.py</code>
- </li><li><em><a href="#manual_testingcam_tests">手动 TestingCam 测试</a>:</em>从源中的 <code>pdk/apps/TestingCamera/</code> 运行
- </li><li><em><a href="#manual_testingcam2_tests">手动 TestingCam2.1 测试</a>:从源中的 <code>pdk/apps/TestingCamera2/</code></em> 运行
+ </li><li><em></em><a href="#its_tests">图像测试套件 (ITS)</a>:手动运行的测试,可确保图像正确性;有关设置说明,请参阅顶级和测试专用的 <code>README</code> 文件以及 <code>tutorial.py</code>
+ </li><li><em></em><a href="#manual_testingcam_tests">手动 TestingCam 测试</a>:从 <code>pdk/apps/TestingCamera/</code> 中的源代码运行
+ </li><li><em></em><a href="#manual_testingcam2_tests">手动 TestingCam2.1 测试</a>:从 <code>pdk/apps/TestingCamera2/</code> 中的源代码运行
</li></ul>
<p>下面详细介绍了所有这些测试类型。我们按照 OEM 应执行这些测试的时间先后顺序对它们进行了介绍。</p>
@@ -62,7 +62,7 @@
<p>相机 CTS 测试的起始路径为:<code>platform/cts</code>。</p>
-<p>在针对支持外部相机(如 USB 网络摄像头)的设备运行相机 CTS 时,您必须在运行 CTS 时将设备连接到充电器,否则测试将自动失败。</p>
+<p>在针对支持外部相机(如 USB 摄像头)的设备运行相机 CTS 时,您必须在运行 CTS 时将设备连接到充电器,否则测试将自动失败。外部相机示例:<a href="https://www.logitech.com/en-us/product/hd-pro-webcam-c920" class="external">Logitech HD Pro Webcam C920</a> 和 <a href="https://www.microsoft.com/accessories/en-us/products/webcams/lifecam-hd-3000/t3h-00011" class="external">Microsoft LifeCam HD-3000</a>。</p>
<p>有关运行 CTS 的常规说明,请参阅 <a href="/compatibility/cts/index.html">CTS 简介</a>及其子页面。</p>
@@ -108,7 +108,7 @@ cts</code></p>
<code class="devsite-terminal">cd CameraITS</code>
</pre>
-<p>有关脚本使用方法的演示,请参阅 <code>tests</code> 子目录中的 <code>tutorial.py</code>。每项测试都归属于相应的 <code>tests/scene<#></code> 子目录。有关具体的测试说明,请参阅每个子目录中的 <code>README</code> 文件。</p>
+<p>有关脚本使用方法的演示,请参阅 <code>tests</code> 子目录中的 <code>tutorial.py</code>。每项测试都位于相应的 <code>tests/scene<#></code> 子目录。有关具体的测试说明,请参阅每个子目录中的 <code>README</code> 文件。</p>
<p>要按照推荐的方法设置和运行相机图像测试套件,请参阅<a href="/compatibility/cts/camera-its-box">相机盒装 ITS</a>。</p>
@@ -183,8 +183,7 @@ instrumentation:com.android.mediaframeworktest/.MediaFrameworkPowerTestRunner
(target=com.android.mediaframeworktest)
</pre>
-<p>从每个测试行中识别并提取组件(位于 <code>instrumentation:</code> 和 <code>(target=com.android.mediaframeworktest) </code>之间)。
-该组件包含目标软件包名称 (<code>com.android.mediaframeworktest</code>) 和测试运行器名称 (<code>MediaFramework<type>TestRunner</type></code>)。</p>
+<p>从每个测试行中识别并提取组件(位于 <code>instrumentation:</code> 和 <code>(target=com.android.mediaframeworktest) </code>之间)。该组件包含目标软件包名称 (<code>com.android.mediaframeworktest</code>) 和测试运行器名称 (<code>MediaFramework<type>TestRunner</type></code>)。</p>
<p>例如:</p>
diff --git a/zh-cn/compatibility/cts/camera-its-box.html b/zh-cn/compatibility/cts/camera-its-box.html
index c397dc74..fb876817 100644
--- a/zh-cn/compatibility/cts/camera-its-box.html
+++ b/zh-cn/compatibility/cts/camera-its-box.html
@@ -42,7 +42,7 @@
</ol>
<h2 id="configure-tablet">配置平板电脑</h2>
-<p>本部分将分步说明如何设置 Pixel C 平板电脑以与 CameraITS 软件配合使用。</p>
+<p>本部分将分步说明如何设置平板电脑以与 CameraITS 软件配合使用。这些说明使用 Pixel C 作为示例平板电脑。要了解针对平板电脑的要求和建议,请参阅<a href="#tablet-requirements">针对平板电脑的要求</a>。</p>
<p class="note"><strong>注意</strong>:CameraITS python 脚本会自动在平板电脑上为您设置以下选项:<br /><em>设置 &gt; 显示 &gt; 休眠 &gt; 无操作 30 分钟后</em>
<br /><em>自动调节亮度 &gt; 关闭</em>
@@ -50,8 +50,8 @@
<ol>
<li>为平板电脑接通电源并开机。如果系统提示您设置帐号,请跳过(CameraITS 不需要与平板电脑配对任何帐号)。</li>
-<li>将平板电脑更新为 Android 7.0 或更高版本(Android 6.x 及更早版本不支持 CameraITS)。</li>
-<li>依次转到“设置”&gt;“关于平板电脑”,然后点按<strong>版本号</strong> 5 次,从而启用开发者模式。<em></em></li>
+<li>将平板电脑更新为 Android 7.0 或更高版本。Android 6.x 及更低版本不支持 CameraITS。</li>
+<li>启用<a href="https://developer.android.com/studio/debug/dev-options#enable" class="external">开发者模式</a>。</li>
<li>返回“设置”并选择<strong>开发者选项</strong>。<em></em>
<table>
@@ -82,7 +82,7 @@
<li>将平板电脑正面朝上放在桌子上(请勿将平板电脑连接到盒子的后板)</li>
<li>运行以下命令:<pre class="devsite-terminal devsite-click-to-copy">
python tools/run_all_tests.py device=$device_id camera=0 chart=$chart_id scenes=2,3
-</pre>场景 2 和 3 需要平板电脑来显示图像,因此平板电脑会提示您“允许云端硬盘访问您设备上的照片、媒体和文件吗?”。通过按<strong>允许</strong>清除此提示(并防止以后再次出现提示)。</li>
+</pre>场景 2 和 3 需要使用平板电脑来显示图像,因此平板电脑会提示您“允许云端硬盘访问您设备上的照片、媒体和文件吗?”。通过按<strong>允许</strong>清除此提示(并防止以后再次出现提示)。</li>
<li>再次运行该命令。平板电脑会提示您“保留此文件的副本吗?”,并建议保存到 Google 云端硬盘。通过按“云端硬盘”图标,然后按<strong>取消</strong>上传到云端硬盘,清除此提示(并防止以后再次出现提示)。</li>
<li>最后,运行 <code>tools/run_all_tests.py</code> 并确认当前场景会随着脚本循环自动变换为不同的场景。尽管大多数测试将失败(因为相机未指向图表),但您可以验证平板电脑是否正确地循环播放场景,而不会在屏幕上显示任何提示或其他弹出式窗口。</li></ol></li></ol>
@@ -176,4 +176,61 @@ adb -s FA6BM0305016 pull /sdcard/verifierReports
</li>
</ul>
+<h2 id="tablet-requirements">针对平板电脑的要求</h2>
+
+<p>平板电脑的显示屏尺寸必须为 10 英寸左右,并且屏幕分辨率必须大于 2000 x 1500 像素。必须根据平板电脑型号在 <code>CameraITS/tools/wake_up_screen.py</code> 中设置 <code>DISPLAY_LEVEL</code> 值。下表列出了适用于推荐的平板电脑的值。</p>
+
+<p>下面显示了针对 ITS 测试推荐的平板电脑:</p>
+
+<table>
+ <tbody><tr>
+ <th>设备</th>
+ <th>显示屏尺寸<br />(英寸)</th>
+ <th>显示大小<br />(像素)</th>
+ <th>平板电脑尺寸<br />(英寸)</th>
+ <th>显示级别</th>
+ <th>操作系统</th>
+ </tr>
+ <tr>
+ <td>Asus Zen Pad 3</td>
+ <td>9.7</td>
+ <td>2048 x 1536</td>
+ <td>9.47 x 6.44 x 0.28</td>
+ <td>192</td>
+ <td>Android 6.0</td>
+ </tr>
+ <tr>
+ <td>Huawei Mediapad m5</td>
+ <td>10.8</td>
+ <td>2560 x 1600</td>
+ <td>10.18 x 6.76 x 0.29</td>
+ <td>192</td>
+ <td>Android 8.0</td>
+ </tr>
+ <tr>
+ <td>Pixel C</td>
+ <td>10.2</td>
+ <td>2560 x 1800</td>
+ <td>9.53 x 7.05 x 0.28</td>
+ <td>96</td>
+ <td>Android 8.0</td>
+ </tr>
+ <tr>
+ <td>Samsung S3</td>
+ <td>9.7</td>
+ <td>2048 x 1536</td>
+ <td>10.76 x 6.65 x 0.24</td>
+ <td>192</td>
+ <td>Android 7.0</td>
+ </tr>
+ <tr>
+ <td>Sony Xperia Z4</td>
+ <td>10.1</td>
+ <td>2560 x 1600</td>
+ <td>10 x 6.57 x 0.24</td>
+ <td>192</td>
+ <td>Android 7.0</td>
+ </tr>
+</tbody></table>
+
</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/cts/camera-wfov-box-assembly.html b/zh-cn/compatibility/cts/camera-wfov-box-assembly.html
index 886564f1..e0a6b4fe 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>
@@ -62,7 +62,7 @@ sales@myway.tw</li>
<li>喷壶</li>
<li>美工刀</li>
</ul>
-<aside class="note"><strong>注意</strong>:<span>如需详细了解以往版本,请参阅<a href="#revision_history">修订历史记录</a>。</span></aside>
+<aside class="note"><strong>注意</strong>:<span>要详细了解以往版本,请参阅<a href="#revision_history">修订历史记录</a>。</span></aside>
<h3 id="step_1_apply_colored_vinyl">第 1 步:贴彩色乙烯基膜</h3>
<p>要贴彩色乙烯基膜,请执行以下操作:</p>
diff --git a/zh-cn/compatibility/cts/downloads.html b/zh-cn/compatibility/cts/downloads.html
index 3bc7c5d1..cc931baa 100644
--- a/zh-cn/compatibility/cts/downloads.html
+++ b/zh-cn/compatibility/cts/downloads.html
@@ -20,53 +20,53 @@
limitations under the License.
-->
-<p>感谢您对 Android 兼容性计划的关注!您可以通过以下链接访问关于该计划的重要文档和信息。随着 CTS 的更新,此网页上会陆续添加新的版本。CTS 版本在链接名称中由 R&lt;数字&gt; 表示。</p>
+<p>感谢您对 Android 兼容性计划的关注!您可以通过以下链接访问关于该计划的重要文档和信息。随着 CTS 的更新,此网页上会陆续添加新的版本。CTS 版本在链接名称中由 R<var>数字</var>表示。</p>
<h2 id="android-90">Android 9</h2>
-<p>Android 9 是代号为 P 的开发里程碑版本。以下测试(包括针对免安装应用的测试)的源代码可以与开放源代码树中的“'android-cts-9.0_r4”标记同步。</p>
+<p>Android 9 是代号为 P 的开发里程碑版本。以下测试(包括针对免安装应用的测试)的源代码可以与开放源代码树中的“'android-cts-9.0_r5”标记同步。</p>
<ul>
-<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>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-9.0_r5-linux_x86-arm.zip">Android 9.0 R5 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-9.0_r5-linux_x86-x86.zip">Android 9.0 R5 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r5-linux_x86-arm.zip">Android 9.0 R5 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-9.0_r5-linux_x86-x86.zip">Android 9.0 R5 CTS 验证程序 - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r5-linux_x86-arm.zip">Android 9.0 R5 CTS(适用于免安装应用)- ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts_instant-9.0_r5-linux_x86-x86.zip">Android 9.0 R5 CTS(适用于免安装应用)- x86</a></li>
</ul>
<h2 id="android-81">Android 8.1</h2>
-<p>Android 8.1 是代号为 Oreo-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.1_r11”标记同步。</p>
+<p>Android 8.1 是代号为 Oreo-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.1_r12”标记同步。</p>
<ul>
-<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>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.1_r12-linux_x86-arm.zip">Android 8.1 R12 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.1_r12-linux_x86-x86.zip">Android 8.1 R12 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r12-linux_x86-arm.zip">Android 8.1 R12 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r12-linux_x86-x86.zip">Android 8.1 R12 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-80">Android 8.0</h2>
-<p>Android 8.0 是代号为 Oreo 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.0_r15”标记同步。</p>
+<p>Android 8.0 是代号为 Oreo 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-8.0_r16”标记同步。</p>
<ul>
-<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>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r16-linux_x86-arm.zip">Android 8.0 R16 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-8.0_r16-linux_x86-x86.zip">Android 8.0 R16 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r16-linux_x86-arm.zip">Android 8.0 R16 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r16-linux_x86-x86.zip">Android 8.0 R16 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-71">Android 7.1</h2>
-<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r23”标记同步。</p>
+<p>Android 7.1 是代号为 Nougat-MR1 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.1_r24”标记同步。</p>
<ul>
-<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>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r24-linux_x86-arm.zip">Android 7.1 R24 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.1_r24-linux_x86-x86.zip">Android 7.1 R24 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r24-linux_x86-arm.zip">Android 7.1 R24 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r24-linux_x86-x86.zip">Android 7.1 R24 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-70">Android 7.0</h2>
-<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r27”标记同步。</p>
+<p>Android 7.0 是代号为 Nougat 的开发里程碑版本。以下测试的源代码可以与开放源代码树中的“android-cts-7.0_r28”标记同步。</p>
<ul>
-<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>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r28-linux_x86-arm.zip">Android 7.0 R28 兼容性测试套件 (CTS) - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-7.0_r28-linux_x86-x86.zip">Android 7.0 R28 兼容性测试套件 (CTS) - x86</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r28-linux_x86-arm.zip">Android 7.0 R28 CTS 验证程序 - ARM</a></li>
+<li><a href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r28-linux_x86-x86.zip">Android 7.0 R28 CTS 验证程序 - x86</a></li>
</ul>
<h2 id="android-60">Android 6.0</h2>
diff --git a/zh-cn/compatibility/cts/secure-element.html b/zh-cn/compatibility/cts/secure-element.html
index dabff778..3f800b70 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) 中收到以下应用协议数据单元 (APDU) 时,该小程序应引发安全异常:<em></em><ol>
+ <li>当在 <code>android.se.omapi.Channel.Transmit</code> (Transmit) 中收到以下应用协议数据单元 (APDU) 时,该小程序应抛出安全异常:<em></em><ol>
<li>0x00700000</li>
<li>0x00708000</li>
<li>0x00A40404104A535231373754657374657220312E30</li>
@@ -224,7 +224,7 @@
</tr>
<tr>
<td>0x00F30E0A01AA</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>否</td>
</tr>
<tr>
@@ -304,7 +304,7 @@
</tr>
<tr>
<td>0x00F30E0800</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>是</td>
</tr>
<tr>
@@ -384,7 +384,7 @@
</tr>
<tr>
<td>0x00F30E0C01AA00</td>
- <td>0x6282</td>
+ <td>0x6286</td>
<td>是*</td>
</tr>
<tr>
@@ -783,6 +783,6 @@ uicc.hci.services.connectivity v1.0 - A0000000090005FFFFFFFF8916020200</p>
<li>0xA000000476416E64726F69644354534F</li>
</ul>
-<p>如需用于设置与 CTS 测试匹配的 PKCS#15 结构的分步命令,请参阅<a href="/compatibility/cts/pkcs15-commands.txt">针对 PKCS#15 的命令</a>。</p>
+<p>如需用于设置与 CTS 测试匹配的 PKCS#15 结构的分步命令,请参阅 <a href="/compatibility/cts/pkcs15-commands.txt">PKCS#15 命令</a>。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/compatibility/cts/setup.html b/zh-cn/compatibility/cts/setup.html
index cbba8932..a4e02045 100644
--- a/zh-cn/compatibility/cts/setup.html
+++ b/zh-cn/compatibility/cts/setup.html
@@ -166,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) 视为隔离客户端(请参阅上文的<em>物理环境</em>部分),并可连接到互联网。具体操作方法为:<a href="#physical_environment">设置 &gt; WLAN</a><strong></strong>
+ </li><li>连接到满足以下要求的 WLAN 网络:支持 IPv6、可以将被测设备 (DUT) 视为隔离客户端(请参阅上文的<a href="#physical_environment">物理环境</a>部分),并可连接到互联网。具体操作方法为:<strong>设置 &gt; WLAN</strong><em></em>
</li><li>确保设备上未设置锁定图案或密码:<strong>设置 &gt; 安全 &gt; 屏幕锁定 &gt; 无</strong>
</li><li>在设备上启用 <strong>USB 调试</strong>:<strong>设置 &gt; 开发者选项 &gt; USB 调试</strong>。
<p class="note"><strong>注意:</strong>在 Android 4.2 及更高版本中,默认情况下会隐藏<strong>开发者选项</strong>。要显示这些选项,请依次转到<strong>设置 &gt; 关于手机</strong>,然后点按<strong>版本号</strong>七次。返回上一屏幕以查找<strong>开发者选项</strong>。要查看其他详细信息,请参阅<a href="http://developer.android.com/studio/run/device.html#developer-device-options">启用设备上的开发者选项</a>。</p>
@@ -182,10 +182,10 @@ ro.product.first_api_level=21
<p class="note"><strong>注意:</strong>对于 CTS 2.1 R2 - 4.2 R4 的版本,请通过以下命令设置您的设备(或模拟器),以便执行无障碍测试:<br />
<code>adb install -r android-cts/repository/testcases/CtsDelegatingAccessibilityService.apk</code><br />
在设备上,依次启用:<strong>设置 &gt; 无障碍 &gt; 无障碍 &gt; Delegating Accessibility Service</strong></p>
-<p class="note"><strong>注意:</strong>对于 7.0 之前的 CTS 版本,请在声明 <code>android.software.device_admin</code> 的设备上设置您的设备,以使用以下命令执行设备管理测试:<br />
+<p class="note"><strong>注意</strong>:对于 7.0 之前的 CTS 版本,请在声明 <code>android.software.device_admin</code> 的设备上设置您的设备,以使用以下命令执行设备管理测试:<br />
<code>adb install -r android-cts/repository/testcases/CtsDeviceAdmin.apk</code><br />
</p><p>
-依次选择“设置”&gt;“安全”&gt;“选择设备管理器”,然后启用两个 <code>android.deviceadmin.cts.CtsDeviceAdminReceiver*</code> 设备管理器。确保 <code>android.deviceadmin.cts.CtsDeviceAdminDeactivatedReceiver</code> 和任何其他预加载的设备管理器均保持停用状态。
+依次点击“设置”&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/index.html b/zh-cn/compatibility/index.html
index 2a18f1d0..fad996f9 100644
--- a/zh-cn/compatibility/index.html
+++ b/zh-cn/compatibility/index.html
@@ -30,7 +30,7 @@
<ol>
<li><p>查看<a href="/devices/architecture/">架构</a>中的 Android 平台开发基本原则,尤其是 Android 8.0 中引入的 <a href="/devices/architecture/hidl/">HIDL</a> 格式。</p></li>
-<li><p>确保设备符合 <a href="/compatibility/cdd">Android 兼容性定义文档</a>(Android 的核心规范)的要求,即设备属于<a href="/compatibility/overview">兼容性</a>设备。</p></li>
+<li><p>确保设备符合 <a href="/compatibility/cdd">Android 兼容性定义文档</a>(Android 的核心规范)的要求,即设备属于<a href="/compatibility/overview">兼容的</a>设备。</p></li>
<li><p>参阅<a href="/devices/tech/display/">显示</a>功能和<a href="/devices/tech/settings/settings-guidelines">设置</a>指南,获取界面方面的帮助。</p></li>
<li><p>利用所有可用的<a href="/compatibility/tests">测试</a>调试和改进您的 Android 设备。</p></li>
<li><p>在开发面向用户的应用时,请先熟悉一下<a href="https://developer.android.com/design/" class="external">应用设计</a>原则和 <a href="https://material.io/design/" class="external">Material Design</a> 技术。</p></li>
diff --git a/zh-cn/compatibility/tests/development/atest.html b/zh-cn/compatibility/tests/development/atest.html
index 68bd31c6..0a0e5e68 100644
--- a/zh-cn/compatibility/tests/development/atest.html
+++ b/zh-cn/compatibility/tests/development/atest.html
@@ -24,15 +24,21 @@
<h1 id="atest" class="page-title">Atest</h1>
-<p>Atest 是一个命令行工具,用户可以使用这种工具在本地编译、安装并运行 Android 测试。本文介绍了如何使用 Atest 运行 Android 测试。</p>
+<p>Atest 是一个命令行工具,可让用户在本地编译、安装并运行 Android 测试,同时可以大大加快重新运行测试的速度,而无需您了解 <a href="/devices/tech/test_infra/tradefed">Trade Federation 自动化测试框架</a>命令行选项。本文介绍了如何使用 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>要了解有关如何针对 Android 编写测试的一般信息,请参阅 <a href="/compatibility/tests/index.md">Android 平台测试</a>。</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>
+<p>要了解 Atest 的总体结构,请参阅 <a href="https://android.googlesource.com/platform/tools/tradefederation/+/master/atest/docs/atest_structure.md" class="external">Atest 开发者指南</a>。</p>
+
+<p>要向 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>
+<p>要运行 Atest,请按照以下部分中的步骤来设置您的环境。</p>
+
+<h3 id="set_environment_variable">设置环境变量</h3>
+
+<p>按照<a href="/compatibility/tests/development/test-mapping#packaging_build_script_rules">打包构建脚本规则</a>为 <a href="/compatibility/tests/development/blueprints">Soong</a> 设置 test_suite,或为 Make 设置 LOCAL_COMPATIBILITY_SUITE。</p>
<h3 id="1_run_envsetupsh">1. 运行 envsetup.sh</h3>
diff --git a/zh-cn/compatibility/tests/development/blueprints.html b/zh-cn/compatibility/tests/development/blueprints.html
index 5b04446c..62647343 100644
--- a/zh-cn/compatibility/tests/development/blueprints.html
+++ b/zh-cn/compatibility/tests/development/blueprints.html
@@ -22,13 +22,17 @@
limitations under the License.
-->
-<h1 id="soong_and_blueprints" class="page-title">Soong 和 Blueprint</h1>
+<h1 id="simple_test_configuration" class="page-title">简单的测试配置</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><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>
-<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>Soong 使用 Blueprint 文件或 <code>.bp</code> 文件,这些文件与 JSON 类似,用于对要编译的模块进行简单的声明性描述。此格式取代了以前的版本中使用的基于 Make 的系统。要适应自定义测试或使用 Android <a href="compatibility/cts">兼容性测试套件</a> (CTS),请改为按照<a href="/compatibility/tests/development/test-config">复杂的测试配置</a>操作。</p>
+
+<h2 id="example">示例</h2>
+
+<p>以下条目均来自这一示例 Blueprint 配置文件:<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 {
@@ -42,6 +46,8 @@
</code></pre>
<p>请注意,开头的 <code>android_test</code> 声明表示这是一个测试。相反,如果开头为 <code>android_app</code>,则表示这是一个编译软件包。</p>
+<h2 id="settings">设置</h2>
+
<p>下面对各项设置进行了解释:</p>
<pre class="prettyprint"><code> name: "HelloWorldTests",
</code></pre>
@@ -53,7 +59,7 @@
<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> 是 Android 测试支持库的预编译项,包括新的测试运行器 <code>AndroidJUnitRunner</code>:它替代了现已弃用的内置 <code>InstrumentationTestRunner</code>,并且支持 JUnit4 测试框架。如需了解详情,请参阅<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",
@@ -65,8 +71,8 @@
<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>
+<p><code>test_suites</code> 设置使 Trade Federation 自动化测试框架很容易发现测试。可以在此处添加其他套件(如 CTS),以便共享此测试。</p>
+<pre class="prettyprint"><code>${ANDROID_PRODUCT_OUT}/testcases/HelloWorldTests/HelloWorldTests.apk
+</code></pre>
</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
index 924e6612..8e608059 100644
--- a/zh-cn/compatibility/tests/development/index.html
+++ b/zh-cn/compatibility/tests/development/index.html
@@ -24,46 +24,40 @@
<h1 id="test_development_workflow" class="page-title">测试开发工作流</h1>
-<p>要将测试集成到平台连续测试服务,它们应该符合以下准则。</p>
+<p>要将测试集成到平台连续测试服务,它们应该符合本页面中的准则并遵循以下建议流程。</p>
+
+<ol>
+<li>使用 <a href="https://android.googlesource.com/platform/build/soong/">Soong 编译系统</a>以实现<a href="blueprints">简单的测试配置</a>。</li>
+<li>使用 <a href="test-mapping">Test Mapping</a> 直接在 Android 源代码树中轻松地创建提交前测试规则和提交后测试规则。</li>
+<li>使用 <a href="atest">Atest</a> 在本地运行测试。</li>
+</ol>
<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>
+<li><a href="/compatibility/tests/development/instrumentation">插桩测试</a>,这种测试支持功能测试和指标测试。要获取常规应用测试指导,请参阅<a href="https://developer.android.com/studio/test/" class="external">测试您的应用</a>。</li>
+<li><a href="/compatibility/tests/development/native">原生测试</a>,这种测试支持以下类型:<ul>
+<li>使用 <a href="https://github.com/google/googletest" class="external">gtest</a> 框架进行的<a href="/compatibility/tests/development/native-func-e2e">原生功能测试</a></li>
+<li><a href="/compatibility/tests/development/metrics.md">原生指标测试</a>,它是使用 <a href="https://github.com/google/benchmark" class="external">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>
+<li>使用 JUnit 进行的 <a href="/compatibility/tests/development/jar">JAR 主机测试</a></li>
</ul>
<p>功能测试对测试用例进行通过或未通过测试的断言,而指标测试通常重复执行操作以收集时间指标。</p>
-<p>采用标准化的输入/输出格式后,不再需要对每个测试进行自定义结果解析和后处理,并且通用自动化测试框架可用于符合惯例的所有测试。</p>
+<p>采用标准化的输入/输出格式后,不再需要对每个测试进行自定义结果解析和后处理,并且通用自动化测试框架可用于符合惯例的所有测试。如需了解 Android 附带的连续测试框架,请参阅 <a href="/devices/tech/test_infra/tradefed">Trade Federation 概览</a>。</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>
+<p>通过连续测试服务执行的测试用例应该是<strong>封闭</strong>测试,也就是说,所有依赖项均已声明并与测试一起提供。如需了解此原则,请参阅 <a href="https://testing.googleblog.com/2012/10/hermetic-servers.html" class="external">Google Testing Blog 网站上的“Hermetic Servers”一文</a>。简而言之,封闭测试<strong>无</strong>需:</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>
+<li>使用 Google 帐号登录</li>
+<li>配置连接(电话/Wi-Fi/蓝牙/NFC)</li>
+<li>传入测试参数</li>
+<li>由自动化测试框架对特定的测试用例执行设置或拆解</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
index 161b9402..e18ca48d 100644
--- a/zh-cn/compatibility/tests/development/instr-app-e2e.html
+++ b/zh-cn/compatibility/tests/development/instr-app-e2e.html
@@ -22,9 +22,9 @@
limitations under the License.
-->
-<h1 id="instrumentation_targeting_an_application_a_complete_example" class="page-title">针对应用的插桩:完整的示例</h1>
+<h1 id="targeting_an_application_example" class="page-title">针对应用的插桩测试示例</h1>
-<p>如果您不熟悉 Android 平台开发,那么您可能会发现,这个从头开始添加全新插桩测试的完整示例很有用,可以帮助了解所涉及的典型工作流。</p>
+<p>此类插桩测试与针对常规 Android 应用的测试没有什么不同。值得注意的是,包含插桩的测试应用需要与其针对的应用使用相同的证书进行签名。</p>
<p>请注意,本指南假定您已掌握平台源代码树工作流的一些相关知识。如果没有,请参阅 https://source.android.com/source/requirements。本文介绍的示例是编写新的插桩测试,其中目标软件包设置为其自己的测试应用软件包。如果您不熟悉相关概念,请仔细阅读<a href="../development/index.md">平台测试简介</a>。</p>
@@ -42,15 +42,11 @@
<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>在继续深入阅读以下内容之前,强烈建议您先查阅<a href="https://developer.android.com/guide/topics/manifest/manifest-intro.html" class="external">应用清单概览</a>。</p>
<p>此文档概述了清单文件的基本组成部分及其功能。</p>
@@ -101,9 +97,13 @@
</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>
+<h2 id="simple_configuration_file">简单配置文件</h2>
+
+<p>每个新的测试模块都必须具有配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。在大多数情况下,基于 Soong 的 Blueprint 文件选项就足够了。如需了解详情,请参阅<a href="blueprints.md">简单的测试配置</a>。</p>
-<p>为了简化测试执行过程,您还需要为 Android 的自动化测试框架 <a href="https://source.android.com/devices/tech/test_infra/tradefed/">Trade Federation</a> 编写测试配置文件。</p>
+<h2 id="complex_configuration_file">复杂配置文件</h2>
+<aside class="special"><strong>重要提示</strong>:<span>只有 CTS 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循本部分中的说明。其他所有用例均可通过<a href="blueprints">简单的测试配置</a>来涵盖。如需了解适用于本部分的详细信息,请参阅<a href="test-config">复杂的测试配置</a>。</span></aside>
+<p>对于更复杂的测试,您还需要为 Android 的自动化测试框架 <a href="/devices/tech/test_infra/tradefed/">Trade Federation</a> 编写测试配置文件。</p>
<p>测试配置可以指定特殊的设备设置选项和默认参数来提供测试类。</p>
@@ -174,7 +174,7 @@ public final class FeatureFactoryImplTest {
<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="/compatibility/tests/development/atest">Atest</a>。</p>
<p>对于更为复杂的用例,如果需要更繁琐的自定义,请遵循<a href="instrumentation.md">插桩说明</a>。</p>
diff --git a/zh-cn/compatibility/tests/development/instr-self-e2e.html b/zh-cn/compatibility/tests/development/instr-self-e2e.html
index e621cf50..a8d8e67e 100644
--- a/zh-cn/compatibility/tests/development/instr-self-e2e.html
+++ b/zh-cn/compatibility/tests/development/instr-self-e2e.html
@@ -22,13 +22,29 @@
limitations under the License.
-->
-<h1 id="self-instrumenting_tests_a_complete_example" class="page-title">自插桩测试:完整的示例</h1>
+<h1 id="self-instrumenting_tests_example" class="page-title">自插桩测试示例</h1>
-<p>如果您不熟悉 Android 平台开发,那么您可能会发现,这个从头开始添加全新插桩测试的完整示例很有用,可以帮助了解所涉及的典型工作流。</p>
+<p>当启动插桩测试时,系统会重启其目标软件包,并且会注入和启动插桩代码以执行测试。一种例外情况是,这里的目标软件包不能是 Android 应用框架本身,即软件包 <code>android</code>,因为这样做会导致出现一种矛盾情况:需要重启 Android 框架,而正是该框架支持系统功能,包括插桩本身。</p>
-<p>请注意,本指南假定您已掌握平台源代码树工作流的一些相关知识。如果没有,请参阅 https://source.android.com/source/requirements。本文介绍的示例是编写新的插桩测试,其中目标软件包设置为其自己的测试应用软件包。如果您不熟悉相关概念,请仔细阅读<a href="/compatibility/tests/">平台测试概述</a>。</p>
+<p>这意味着,插桩测试无法将本身注入到 Android 框架(也称为系统服务器)以执行测试。为了测试 Android 框架,测试代码只能调用公共 API Surface,或者通过平台源代码树中可用的 Android 接口定义语言 (<a href="https://developer.android.com/guide/components/aidl.html" class="external">AIDL</a>) 公开的 API Surface。对于此类测试,针对任何特定软件包都没有意义。因此,按照惯例会将此类插桩声明为针对其自己的测试应用软件包,如其自己的 <code>AndroidManifest.xml</code> 中的 <code>&lt;manifest&gt;</code> 标记所定义。</p>
-<p>本指南使用以下测试作为示例:</p>
+<p>根据要求,此类测试应用软件包还可以:</p>
+
+<ul>
+<li>捆绑测试所需的 Activity。</li>
+<li>与系统共享用户 ID。</li>
+<li>使用平台密钥进行签名。</li>
+<li>根据框架源代码而不是公共 SDK 进行编译。</li>
+</ul>
+
+<p>此类插桩测试有时称为自插桩。以下是平台源代码中自插桩测试的一些示例:</p>
+
+<ul>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/tests/">frameworks/base/core/tests/</a></li>
+<li><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/tests/servicestests/">frameworks/base/services/tests/servicestests</a></li>
+</ul>
+
+<p>本文介绍的示例是编写新的插桩测试,其中目标软件包设置为其自己的测试应用软件包。本指南使用以下测试作为示例:</p>
<ul>
<li><a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/instrumentation/">Hello World 插桩测试</a></li>
@@ -49,15 +65,11 @@ root&gt;</code>,大多数组件在该位置下具有 <code>src</code> 和 <cod
<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://developer.android.com/guide/topics/manifest/manifest-intro.html" class="external">应用清单概览</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>
@@ -101,9 +113,13 @@ root&gt;</code>,大多数组件在该位置下具有 <code>src</code> 和 <cod
</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>
+<h2 id="simple_configuration_file">简单配置文件</h2>
+
+<p>每个新的测试模块都必须具有配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。在大多数情况下,基于 Soong 的 Blueprint 文件选项就足够了。如需了解详情,请参阅<a href="blueprints.md">简单的测试配置</a>。</p>
+
+<h2 id="complex_configuration_file">复杂配置文件</h2>
+<aside class="special"><strong>重要提示</strong>:<span>只有 CTS 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循本部分中的说明。其他所有用例均可通过<a href="blueprints">简单的测试配置</a>来涵盖。如需了解适用于本部分的更多详细信息,请参阅<a href="test-config">复杂的测试配置</a>。</span></aside>
+<p>对于这些更复杂的用例,您还需要为 Android 的自动化测试框架 <a href="/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>
@@ -178,9 +194,9 @@ public class HelloWorldTest {
<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>
+<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="/compatibility/tests/development/atest">Atest</a>。</p>
<p>对于更为复杂的用例,如果需要更繁琐的自定义,请遵循<a href="instrumentation.md">插桩说明</a>。</p>
diff --git a/zh-cn/compatibility/tests/development/instrumentation.html b/zh-cn/compatibility/tests/development/instrumentation.html
index 1164965b..eb64df98 100644
--- a/zh-cn/compatibility/tests/development/instrumentation.html
+++ b/zh-cn/compatibility/tests/development/instrumentation.html
@@ -24,6 +24,23 @@
<h1 id="instrumentation_tests" class="page-title">插桩测试</h1>
+<p>请先阅读 developer.android.com 上的<a href="https://developer.android.com/studio/test/" class="external">测试应用</a>一文。请注意,在平台测试中使用插桩测试的方式有一些差异。</p>
+
+<p>总的来说,插桩测试提供了一种通过 <code>am instrument</code> 命令启动的特殊测试执行环境,其中目标应用进程会重启并使用基本的应用上下文进行初始化,并在应用进程虚拟机内启动插桩线程。您的测试代码在此插桩线程上开始执行,并附带一个 <code>Instrumentation</code> 实例,该实例可提供对应用上下文和 API 的访问权限,以操纵接受测试的应用进程。</p>
+
+<h2 id="key_concepts">主要概念</h2>
+
+<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>
+
+<h2 id="summary_of_steps">步骤总结</h2>
+
<ol>
<li><p>下面是框架服务封闭测试的常见位置:</p>
<pre class="prettyprint"><code>frameworks/base/core/tests/coretests
@@ -36,7 +53,7 @@ frameworks/base/services/tests/servicestests
<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>
+<li><p>有关示例,请参阅 <a href="https://android.googlesource.com/platform/frameworks/base.git/+/master/core/tests/coretests/">frameworks/base/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>
@@ -47,7 +64,7 @@ frameworks/base/services/tests/servicestests
<li><p>运行测试:</p>
<ul>
-<li><p>最简单的解决方案是使用 Atest,如下所示:</p>
+<li><p>最简单的解决方案是使用 <a href="/compatibility/tests/development/atest">Atest</a>,如下所示:</p>
<pre class="prettyprint"><code>atest FrameworksCoreTests
</code></pre></li>
<li><p>或者,对于更复杂的测试,请使用 Trade Federation 自动化测试框架:</p></li>
diff --git a/zh-cn/compatibility/tests/development/metrics.html b/zh-cn/compatibility/tests/development/metrics.html
index 35ee36f9..56fb11b0 100644
--- a/zh-cn/compatibility/tests/development/metrics.html
+++ b/zh-cn/compatibility/tests/development/metrics.html
@@ -24,32 +24,34 @@
<h1 id="native_metric_tests" class="page-title">原生指标测试</h1>
-<p>如前所述,原生指标测试通常用于执行 HAL 或直接与较低级别的系统服务交互,要利用连续测试服务,应使用 <a href="https://github.com/google/benchmark">google-benchmark</a> 框架编译原生指标测试。</p>
+<p>原生指标测试通常用于执行硬件抽象层 (HAL) 或直接与较低级别的系统服务交互。要利用连续测试服务,应使用 <a href="https://github.com/google/benchmark" class="external">google-benchmark</a> 框架编译原生指标测试。</p>
-<p>下面是一些常规说明:</p>
+<h2 id="example">示例</h2>
+
+<p>请参阅示例原生测试模块设置,位于:<a href="https://android.googlesource.com/platform/bionic/+/master/benchmarks/bionic_benchmarks.cpp">bionic/benchmarks/bionic-benchmarks</a></p>
+
+<h2 id="summary_of_steps">步骤总结</h2>
<ol>
-<li>参阅示例原生测试模块设置,位于:<code>bionic/benchmarks/bionic-benchmarks</code></li>
-<li>测试模块 makefile 应使用 <code>BUILD_NATIVE_BENCHMARK</code> 编译规则,以便自动包含 google-benchmark 依赖项</li>
+<li>测试模块配置文件应使用 <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>
+<li><p>手动安装并运行,如下所示:</p>
+
+<ol>
+<li><p>将生成的测试二进制文件推送到设备:</p>
+<pre class="prettyprint"><code>adb push ${OUT}/data/benchmarktest/bionic-benchmarks/bionic-benchmarks32 \
+ /data/benchmarktest/bionic-benchmarks/bionic-benchmarks32
+</code></pre></li>
+<li><p>通过在设备上调用测试二进制文件执行测试:</p>
+<pre class="prettyprint"><code>adb shell /data/benchmarktest/bionic-benchmarks/bionic-benchmarks32
+</code></pre></li>
+</ol></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
index 17023aac..f78a2923 100644
--- a/zh-cn/compatibility/tests/development/native-func-e2e.html
+++ b/zh-cn/compatibility/tests/development/native-func-e2e.html
@@ -22,19 +22,13 @@
limitations under the License.
-->
-<h1 id="adding_a_new_native_test_a_complete_example" class="page-title">添加新的原生测试:完整的示例</h1>
+<h1 id="adding_a_new_native_test_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>如果您不熟悉 Android 平台开发,那么您可能会发现,这个从头开始添加全新原生测试的完整示例很有用,可以帮助您了解所涉及的典型工作流。此外,如果您也不熟悉 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><a href="https://android.googlesource.com/platform/platform_testing/+/master/tests/example/native/">Hello World 原生测试</a></p>
<p>建议您先浏览代码以获得粗略的印象,然后再继续。</p>
@@ -87,10 +81,6 @@ root&gt;</code>,大多数组件在该位置下具有 <code>src</code> 和 <cod
</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>
@@ -125,17 +115,19 @@ TEST(HelloWorldTest, PrintHelloWorld) {
<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>
+<h2 id="simple_configuration_file">简单配置文件</h2>
+
+<p>每个新的测试模块都必须具有配置文件,以使用模块元数据、编译时依赖项和打包指令来指引编译系统。在大多数情况下,基于 Soong 的 Blueprint 文件选项就足够了。如需了解详情,请参阅<a href="blueprints.md">简单的测试配置</a>。</p>
+<h2 id="complex_configuration_file">复杂配置文件</h2>
+<aside class="special"><strong>重要提示</strong>:<span>只有 CTS 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循本部分中的说明。其他所有用例均可通过<a href="blueprints.md">简单的测试配置</a>来涵盖。如需了解适用于本部分的详细信息,请参阅<a href="compatibility/tests/development/test-config">复杂的测试配置</a>。</span></aside>
<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="/compatibility/tests/development/atest">Atest</a>。</p>
<p>对于更为复杂的用例,如果需要更繁琐的自定义,请遵循<a href="instrumentation.md">插桩说明</a>。</p>
diff --git a/zh-cn/compatibility/tests/development/native.html b/zh-cn/compatibility/tests/development/native.html
index 9d9fee67..68aece93 100644
--- a/zh-cn/compatibility/tests/development/native.html
+++ b/zh-cn/compatibility/tests/development/native.html
@@ -24,25 +24,36 @@
<h1 id="native_tests" class="page-title">原生测试</h1>
-<p>如前所述,原生测试通常用于执行 HAL 或直接与较低级别的系统服务交互,要利用连续测试服务,应使用 <a href="https://github.com/google/googletest">gtest</a> 框架编译原生测试。</p>
+<p>平台的原生测试通常会访问较低级别的 HAL,或针对各种系统服务执行原始 IPC。因此,测试方法通常与接受测试的服务密切相关。</p>
-<p>下面是一些常规说明:</p>
+<p>请使用 <a href="https://github.com/google/googletest" class="external">gtest</a> 框架编译原生测试。这是与持续测试基础架构集成的先决条件。</p>
+
+<h2 id="examples">示例</h2>
+
+<p>以下是平台源代码中原生测试的一些示例:</p>
+
+<ul>
+<li><a href="https://android.googlesource.com/platform/frameworks/av/+/master/camera/tests/">frameworks/av/camera/tests</a></li>
+<li><a href="https://android.googlesource.com/platform/frameworks/native/+/master/libs/gui/tests/">frameworks/native/libs/gui/tests</a></li>
+</ul>
+
+<h2 id="summary_of_steps">步骤总结</h2>
<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>参阅示例原生测试模块设置,位于:<a href="https://android.googlesource.com/platform/frameworks/base/+/master/libs/hwui/tests/unit/">frameworks/base/libs/hwui/tests/unit/</a></li>
+<li>测试模块配置应使用 <code>BUILD_NATIVE_TEST</code> 编译规则,以便自动包含 gtest 依赖项</li>
+<li>编写测试配置。请参阅<a href="/compatibility/tests/development/blueprints">简单配置</a>选项和<a href="/compatibility/tests/development/test-config">复杂配置</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>
+<li><p>使用 <a href="/compatibility/tests/development/atest">Atest</a> 在本地运行测试:</p>
<pre class="prettyprint"><code>atest hwui_unit_tests
</code></pre></li>
-<li><p>或者,使用 Trade Federation 自动化测试框架运行:</p>
+<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>
+<li><p>手动安装并运行:</p>
<ol>
<li><p>将生成的测试二进制文件推送到设备:</p>
diff --git a/zh-cn/compatibility/tests/development/test-config.html b/zh-cn/compatibility/tests/development/test-config.html
index 66d47845..1fd2a92e 100644
--- a/zh-cn/compatibility/tests/development/test-config.html
+++ b/zh-cn/compatibility/tests/development/test-config.html
@@ -22,8 +22,8 @@
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>
+<h1 id="complex_test_configuration" class="page-title">复杂的测试配置</h1>
+<aside class="special"><strong>重要提示</strong>:<span>只有 Android <a href="compatibility/cts">兼容性测试套件</a> (CTS) 测试或需要特殊设置(如停用蓝牙或收集示例数据)的测试需要遵循此页面上的说明。其他所有用例均可通过使用 Blueprint 的基于 Soong 的<a href="blueprints.md">简单的测试配置</a>来涵盖,这些 Blueprint 能够自动处理以前手动执行的大部分配置操作。</span></aside>
<p>某些测试模块可能需要执行在测试用例本身内无法执行的自定义设置和拆解步骤。典型的示例可能包括:</p>
<ul>
@@ -34,13 +34,13 @@
<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>我们引入了测试模块配置的概念(借鉴于 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>顾名思义,“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;
@@ -62,7 +62,9 @@
<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>
+<p>在此特定示例中,分别在测试模块执行之前/之后启用/停用可访问性。通过一个简单的示例演示,可以详细介绍如何使用“option”标记。如上所示,该标记可以有两个属性:名称和值。名称属性指示选项的名称,并进一步分解成由冒号分隔的两部分:一部分是准备器的简称,另一部分是准备器提供的实际选项名称。</p>
+
+<p>值字段的确切用途取决于准备器如何定义选项:它可以是字符串、数字、布尔值,甚至可以是文件路径等等。在上面的示例中,名称“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>
diff --git a/zh-cn/compatibility/tests/development/test-mapping.html b/zh-cn/compatibility/tests/development/test-mapping.html
index e76cdaac..57820d64 100644
--- a/zh-cn/compatibility/tests/development/test-mapping.html
+++ b/zh-cn/compatibility/tests/development/test-mapping.html
@@ -44,7 +44,7 @@
<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>
+<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>
diff --git a/zh-cn/compatibility/tests/index.html b/zh-cn/compatibility/tests/index.html
index 6844579a..eb05a679 100644
--- a/zh-cn/compatibility/tests/index.html
+++ b/zh-cn/compatibility/tests/index.html
@@ -26,23 +26,23 @@
<p>本内容面向 Android 平台开发者。在了解如何在 Android 平台上进行测试之前,请参阅 <a href="/devices/architecture">Android 平台架构</a>,大致了解相关的信息。</p>
-<h2 id="whats_new">新增内容</h2>
+<h2 id="whats_new">新变化</h2>
<h3 id="test_development_workflow">测试开发工作流</h3>
<p><a href="/compatibility/tests/development">测试开发工作流</a>小节现在包含介绍性材料,其中包括所有主要测试类型的端到端示例。</p>
-<h3 id="blueprints">Blueprint</h3>
+<h3 id="simple_test_configuration">简单的测试配置</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>
+<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 分支中找到它。Soong 基于 Blueprint 的配置比以前的 Make 解决方案简单得多。</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>
+<p><a href="/compatibility/tests/development/atest">Atest</a> 是一个命令行工具,用户可以使用该工具在本地编译、安装并运行 Android 测试。建议采用此标准对您的功能进行初始测试。</p>
<h2 id="what_and_how_to_test">测试什么以及如何测试</h2>
-<p>平台测试通常与一个或多个 Android 系统服务或 HAL 层交互、执行受测对象的功能,并断言测试结果的正确性。</p>
+<p>平台测试通常与一个或多个 Android 系统服务或硬件抽象层 (HAL) 交互、执行受测对象的功能,并断言测试结果的正确性。</p>
<p>因此,平台测试可以:</p>
@@ -53,69 +53,19 @@
<li>私有 API(@hide 或受保护,软件包私有)</li>
</ul></li>
<li>直接通过原始 binder/IPC 代理调用 Android 系统服务</li>
-<li>通过低级 API 或 IPC 接口直接与 HAL 交互</li>
+<li>通过低级别 API 或 IPC 接口直接与 HAL 交互</li>
</ol>
-<p>上面的类型 1 和 2 通常编写为<strong>插桩测试</strong>,而类型 3 通常使用 gtest 框架编写为<strong>原生测试</strong>。</p>
+<p>类型 1 和 2 通常编写为<a href="/compatibility/tests/development/instrumentation">插桩测试</a>,而类型 3 通常使用 <a href="https://github.com/google/googletest" class="external">gtest</a> 框架编写为<a href="/compatibility/tests/development/native">原生测试</a>。</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>
+<p>如需了解详情,请参阅我们的端到端示例:</p>
<ul>
-<li>捆绑测试所需的 Activity。</li>
-<li>与系统共享用户 ID。</li>
-<li>使用平台密钥进行签名。</li>
-<li>根据框架源代码而不是公共 SDK 进行编译。</li>
+<li><a href="/compatibility/tests/development/instr-app-e2e.md">针对应用的插桩</a></li>
+<li><a href="/compatibility/tests/development/instr-self-e2e.md">自插桩测试</a></li>
+<li><a href="/compatibility/tests/development/native-func-e2e.md">原生测试</a></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>
diff --git a/zh-cn/compatibility/vts/codelab-video.html b/zh-cn/compatibility/vts/codelab-video.html
index a414a6d4..f4c7e81e 100644
--- a/zh-cn/compatibility/vts/codelab-video.html
+++ b/zh-cn/compatibility/vts/codelab-video.html
@@ -22,7 +22,7 @@
limitations under the License.
-->
- <p>供应商测试套件 (VTS) 代码实验室和视频教程提供了有关在 Android {{ androidPVersionNumber }} 及 Android 8.1 上运行和开发 VTS 与 CTS-on-GSI 的详细信息。</p>
+ <p>供应商测试套件 (VTS) 代码实验室和视频教程提供了有关在 Android 9 及 Android 8.1 上运行和开发 VTS 与 CTS-on-GSI 的详细信息。</p>
<h2>适用于 Android 9 的视频和代码实验室</h2>
@@ -467,4 +467,4 @@
</tr>
</tbody></table>
-</body></html> \ No newline at end of file
+</body></html>
diff --git a/zh-cn/compatibility/vts/index.html b/zh-cn/compatibility/vts/index.html
index 33b02932..445c8ed9 100644
--- a/zh-cn/compatibility/vts/index.html
+++ b/zh-cn/compatibility/vts/index.html
@@ -26,7 +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/codelab-video">Codelab 和视频教程</a>:介绍了有关在 Android 9 和 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>
@@ -43,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="/compatibility/vts/automated-test-infra">常规系统映像 (GSI)</a> 的合作伙伴设备上运行 VTS、CTS 或其他测试的<a href="/setup/build/gsi">自动化测试基础架构</a>所采用的架构。需要<a href="/compatibility/vts/host-controller">主机控制器</a>。
+ <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>
<li><a href="/compatibility/vts/performance.html">binder 和 hwbinder 性能测试</a>:用于衡量吞吐量和延迟的工具。</li>
</ul>
@@ -52,4 +52,4 @@ Android 供应商测试套件 (VTS) 提供了大量用于进行 Android 测试
要了解详情,请参阅 developer.android.com 上的 <a href="https://codelabs.developers.google.com/codelabs/android-vts/#0" class="external">Android VTS Codelab</a> 以及由 Google Developers 制作的 <a href="https://www.youtube.com/watch?v=7BX7oSHc7nk&list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva" class="external">Android VTS 产品视频</a>。
</p>
-</body></html> \ No newline at end of file
+</body></html>
diff --git a/zh-cn/devices/accessories/index.html b/zh-cn/devices/accessories/index.html
index ed5aa82b..7233f24e 100644
--- a/zh-cn/devices/accessories/index.html
+++ b/zh-cn/devices/accessories/index.html
@@ -26,15 +26,15 @@
<div class="layout-content-row">
<div class="layout-content-col span-6">
- <h4 id="audio-accessories">音频配件</h4>
- <p>Android 不但支持设备本地音频,而且支持经由 3.5 毫米有线耳机插孔、USB 或蓝牙连接的设备外远程音频。制造商应该查看<a href="headset/index.html">耳机规范</a>,而用户可以了解如何<a href="https://support.google.com/nexus/answer/6127700">使用 USB 主机模式录制和播放音频</a>。</p>
- <p><a href="audio.html">» 音频配件</a></p>
+ <h2 id="audio-accessories">音频配件</h2>
+ <p>Android 不但支持设备本地音频,而且支持经由 3.5 毫米有线耳机插孔、USB 或蓝牙连接的设备外远程音频。制造商应查看<a href="headset/index.html">耳机规范</a>,而用户可以了解如何<a href="https://support.google.com/nexus/answer/6127700">使用 USB 主机模式录制和播放音频</a>。</p>
+ <p><a href="/devices/accessories/audio">» 音频配件</a></p>
</div>
<div class="layout-content-col span-6">
- <h4 id="custom-accessories">自定义配件</h4>
+ <h2 id="custom-accessories">自定义配件</h2>
<p>您想要将什么配件连接到您的 Android 设备?闹钟?键盘?恒温器?机器人?了解如何使用 Android 开源配件 (AOA) 协议将现有设备或您自己独有的硬件连接到 Android。</p>
- <p><a href="custom.html">» 自定义配件</a></p>
+ <p><a href="/devices/accessories/custom">» 自定义配件</a></p>
</div>
</div>
diff --git a/zh-cn/devices/architecture/dto/optimize.html b/zh-cn/devices/architecture/dto/optimize.html
index 0ae1fe52..e194aec3 100644
--- a/zh-cn/devices/architecture/dto/optimize.html
+++ b/zh-cn/devices/architecture/dto/optimize.html
@@ -81,14 +81,14 @@
<h2 id="libufdt">libufdt</h2>
<p>
- 虽然最新的 <code><a href="https://github.com/dgibson/dtc/tree/master/libfdt" class="external">libfdt</a></code> 支持 DTO,但是我们还是建议您使用 <code>libufdt</code> 来实现 DTP(AOSP 源代码位于 <code><a href="https://android.googlesource.com/platform/system/libufdt/+/refs/heads/master" class="external">platform/system/libufdt</a></code> 下)。
+ 虽然最新的 <code><a href="https://github.com/dgibson/dtc/tree/master/libfdt" class="external">libfdt</a></code> 支持 DTO,但我们还是建议您使用 <code>libufdt</code> 来实现 DTP(AOSP 源代码位于 <code><a href="https://android.googlesource.com/platform/system/libufdt/+/refs/heads/master" class="external">platform/system/libufdt</a></code> 下)。
<code>libufdt</code> 会从扁平化设备树 (FDT) 编译真实的树结构(非扁平化设备树,简称“ufdt”<em></em>),从而改善两个 <code>.dtb</code> 文件(从 O(N2) 到 O(N),其中 N 是树中的节点数)的合并效果。
</p>
<h3 id="performance">性能测试</h3>
<p>
- 在 Google 的内部测试中,进行编译后,在 2405 个 <code>.dtb</code> 和 283 个 <code>.dtbo</code> DT 节点上使用 <code>libufdt</code> 生成了 70618 字节和 8566 字节的文件。与从 FreeBSD 移植的 <a href="http://fxr.watson.org/fxr/source/boot/fdt/" class="external">DTO 实现</a>(运行时为 124 毫秒)相比,<code>libufdt</code> DTO 运行时为 10 毫秒。
+ 在 Google 的内部测试中,进行编译后,在 2405 个 <code>.dtb</code> 和 283 个 <code>.dtbo</code> DT 节点上使用 <code>libufdt</code> 生成了 70618 字节和 8566 字节的文件。与从 FreeBSD 移植的 <a href="http://fxr.watson.org/fxr/source/boot/fdt/" class="external">DTO 实现</a>的运行时(为 124 毫秒)形成鲜明对比的是,<code>libufdt</code> DTO 运行时为 10 毫秒。
</p>
<p>
@@ -147,8 +147,7 @@ struct fdt_header *ufdt_apply_overlay(
</p>
<p>
- SoC 供应商必须定义主 DT 的叠加能力;ODM/OEM 只能使用由 SoC 供应商定义的标签附加或覆盖节点。要解决这个问题,您可以在基础 DT 中的根节点下定义一个 <strong><code>odm</code></strong> 节点,使叠加 DT 中的所有 ODM 节点都能够添加新节点。
-或者,您也可以将基础 DT 中的所有 SoC 相关节点放在根节点下的 <strong><code>soc</code></strong> 节点中,如下所述:
+ SoC 供应商必须定义主 DT 的叠加能力;ODM/OEM 只能使用由 SoC 供应商定义的标签附加或覆盖节点。要解决这个问题,您可以在基础 DT 中的根节点下定义一个 <strong><code>odm</code></strong> 节点,使叠加 DT 中的所有 ODM 节点都能够添加新节点。或者,您也可以将基础 DT 中的所有 SoC 相关节点放在根节点下的 <strong><code>soc</code></strong> 节点中,如下所述:
</p>
<table>
diff --git a/zh-cn/devices/architecture/hidl-cpp/functions.html b/zh-cn/devices/architecture/hidl-cpp/functions.html
index 864b34c2..0b035192 100644
--- a/zh-cn/devices/architecture/hidl-cpp/functions.html
+++ b/zh-cn/devices/architecture/hidl-cpp/functions.html
@@ -43,7 +43,7 @@
<p>由于客户端和服务器端函数具有相同的签名,因此服务器端函数必须返回 <code>Return</code> 类型(即使其实现并不会指出传输错误)。<code>Return&lt;T&gt;</code> 对象会使用 <code>Return(myTValue)</code> 进行构建(也可以通过 <code>mTValue</code> 隐式构建,例如在 <code>return</code> 语句中),而 <code>Return&lt;void&gt;</code> 对象则使用 <code>Void()</code> 进行构建。</p>
-<p><code>Return&lt;T&gt;</code> 对象可以从其 <code>T</code> 值执行隐式转换,也可以执行到该值的隐式转换。您可以检查 <code>Return</code> 对象是否存在传输错误,只需调用其 <code>isOk()</code> 方法即可。这项检查不是必需的;不过,如果发生了一个错误,而您未在 <code>Return</code> 对象销毁前对该错误进行检查,或尝试进行了 <code>T</code> 值转换,则客户端进程将会终止并记录一个错误。如果 <code>isOk()</code> 表明存在由开发者代码中的逻辑错误(例如将 <code>nullptr</code> 作为同步回调进行传递)导致的传输错误或失败调用,则可以对 Return 对象调用 <code>description()</code> 以返回适合日志记录的字符串。在这种情况下,您无法确定因调用失败而在服务器上执行的代码可能有多少。另外,您还可以使用 <code>isDeadObject()</code> 方法。此方法表明,之所以会显示 <code>!isOk()</code> 是因为远程对象已崩溃或已不存在。<code>isDeadObject()</code> 一律表示 <code>!isOk()</code>。</p>
+<p><code>Return&lt;T&gt;</code> 对象可以从其 <code>T</code> 值执行隐式转换,也可以执行到该值的隐式转换。您可以检查 <code>Return</code> 对象是否存在传输错误,只需调用其 <code>isOk()</code> 方法即可。这项检查不是必需的;不过,如果发生了一个错误,而您未在 <code>Return</code> 对象销毁前对该错误进行检查,或尝试进行了 <code>T</code> 值转换,则客户端进程将会终止并记录一个错误。如果 <code>isOk()</code> 表明存在由开发者代码中的逻辑错误(例如将 <code>nullptr</code> 作为同步回调进行传递)导致的传输错误或失败调用,则可以对 Return 对象调用 <code>description()</code> 以返回适合日志记录的字符串。在这种情况下,您无法确定因调用失败而在服务器上执行的代码可能有多少。另外,您还可以使用 <code>isDeadObject()</code> 方法。此方法表明,之所以会显示 <code>!isOk()</code>,是因为远程对象已崩溃或已不存在。<code>isDeadObject()</code> 一律表示 <code>!isOk()</code>。</p>
<h3 id="return-by">由值返回</h3>
<p>如果 <code>generates</code> 语句映射到单个 C++ 基元,则参数列表中不会有任何回调参数,而实现会在 <code>Return&lt;T&gt;</code> 对象中提供返回值 <code>T</code>,该值可以从基元类型 <code>T</code> 隐式生成。例如:</p>
diff --git a/zh-cn/devices/architecture/hidl-cpp/index.html b/zh-cn/devices/architecture/hidl-cpp/index.html
index 367d6464..e58e2168 100644
--- a/zh-cn/devices/architecture/hidl-cpp/index.html
+++ b/zh-cn/devices/architecture/hidl-cpp/index.html
@@ -70,7 +70,7 @@ hidl-gen -o $LOC -Landroidbp-impl -randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport $PACKAGE
</pre>
-<p>为了让 HAL 在直通模式下发挥作用(对于旧版设备),您必须具备 HIDL_FETCH_IModuleName <em></em>函数(位于 <code>/(system|vendor|...)/lib(64)?/hw/android.hardware.package@3.0-impl($OPTIONAL_IDENTIFIER).so</code> 下),其中 <code>$OPTIONAL_IDENTIFIER</code> 是一个标识直通实现的字符串。直通模式要求会通过上述命令自动满足,这些命令也会创建 <code>android.hardware.nfc@1.0-impl</code> 目标,但是可以使用任何扩展。例如,<code>android.hardware.nfc@1.0-impl-foo</code> 就是使用 <code>-foo</code> 区分自身。</p>
+<p>为了让 HAL 在直通模式下发挥作用(对于旧版设备),您必须具备 HIDL_FETCH_IModuleName 函数(位于 <code>/(system|vendor|...)/lib(64)?<em></em>/hw/android.hardware.package@3.0-impl($OPTIONAL_IDENTIFIER).so</code> 下),其中 <code>$OPTIONAL_IDENTIFIER</code> 是一个标识直通实现的字符串。直通模式要求会通过上述命令自动满足,这些命令也会创建 <code>android.hardware.nfc@1.0-impl</code> 目标,但是可以使用任何扩展。例如,<code>android.hardware.nfc@1.0-impl-foo</code> 就是使用 <code>-foo</code> 区分自身。</p>
<p>接下来,使用相应功能填写存根并设置守护进程。守护进程代码(支持直通)示例:</p>
diff --git a/zh-cn/devices/architecture/hidl-cpp/types.html b/zh-cn/devices/architecture/hidl-cpp/types.html
index e866a4c0..8001aed5 100644
--- a/zh-cn/devices/architecture/hidl-cpp/types.html
+++ b/zh-cn/devices/architecture/hidl-cpp/types.html
@@ -222,7 +222,7 @@ SN&gt;</code> 表示具有固定大小的 N 维数组 <code>T[S1][S2]…[SN]</co
<h2 id="string">字符串</h2>
<p><code>hidl_string</code> 类(<code>libhidlbase</code> 的一部分)可用于通过 HIDL 接口传递字符串,并在 <code>/system/libhidl/base/include/hidl/HidlSupport.h</code> 下进行定义。该类中的第一个存储位置是指向其字符缓冲区的指针。</p>
-<p><code>hidl_string</code> 知道如何使用 <code>operator=</code>、隐式类型转换和 <code>.c_str()</code> 函数转换到 <code>std::string and char*</code>(C 样式的字符串)以及如何从其进行转换。HIDL 字符串结构具有适当的复制构造函数和赋值运算符,可用于:</p>
+<p><code>hidl_string</code> 知道如何使用 <code>operator=</code>、隐式类型转换和 <code>.c_str()</code> 函数转换自或转换到 <code>std::string and char*</code>(C 样式的字符串)。HIDL 字符串结构具有适当的复制构造函数和赋值运算符,可用于:</p>
<ul>
<li>从 <code>std::string</code> 或 C 字符串加载 HIDL 字符串。</li>
diff --git a/zh-cn/devices/architecture/hidl/code-style.html b/zh-cn/devices/architecture/hidl/code-style.html
index 8629da72..0d8aa9e7 100644
--- a/zh-cn/devices/architecture/hidl/code-style.html
+++ b/zh-cn/devices/architecture/hidl/code-style.html
@@ -46,12 +46,14 @@ interface <a href="#interface-names">IFoo</a> {
/**
* This is a <a href="#comments">multiline docstring</a>.
+ *
* <a href="#return">@return</a> result 0 if successful, nonzero otherwise.
*/
<a href="#function-declarations">foo() generates (FooStatus result);</a>
/**
* Restart controller by power cycle.
+ *
* <a href="#param">@param</a> bar callback interface that…
* @return result 0 if successful, nonzero otherwise.
*/
@@ -62,6 +64,7 @@ interface <a href="#interface-names">IFoo</a> {
/**
* The bar function.
+ *
* <a href="#param">@param</a> <a href="#functions">clientCallback</a> callback after function is called
* @param baz related baz object
* @param data input data blob
@@ -133,12 +136,13 @@ package android.hardware.foo@1.0;
<li><code><var>ROOT-DIRECTORY</var></code> 为:
<ul>
<li><code>hardware/interfaces</code>(如果是核心 HIDL 软件包)。</li>
- <li><code>vendor/<var>VENDOR</var>/interfaces</code>(如果是供应商软件包),其中 <code><var>VENDOR</var></code> 指 SoC 供应商或 OEM/原始设计制造商 (ODM)。</li>
+ <li><code>vendor/<var>VENDOR</var>/interfaces</code>(如果是供应商软件包),其中 <code><var>VENDOR</var></code>
+指 SoC 供应商或原始设备制造商 (OEM)/原始设计制造商 (ODM)。</li>
</ul>
</li>
<li><code><var>MODULE</var></code> 应该是一个描述子系统的小写字词(例如 <code>nfc</code>)。如果需要多个字词,请使用嵌套式 <code><var>SUBMODULE</var></code>。可以嵌套多层。</li>
-<li><code><var>VERSION</var></code> 应该与<a href="#versions">版本</a>中所述的版本完全相同 (major.minor)。</li>
-<li><code>I<var>INTERFACE_X</var></code> 应该是含有 <code>UpperCamelCase</code>/<code>PascalCase</code> 的接口名称(例如 <code>INfc</code>),如<a href="#interface-names">接口名称</a>中所述。</li>
+<li><code><var>VERSION</var></code> 应该与<a href="#versions">版本</a>中所述的版本 (major.minor) 完全相同。</li>
+<li>如<a href="#interface-names">接口名称</a>中所述,<code>I<var>INTERFACE_X</var></code> 应该是含有 <code>UpperCamelCase</code>/<code>PascalCase</code> 的接口名称(例如 <code>INfc</code>)。</li>
</ul>
<p>例如:</p>
@@ -175,7 +179,7 @@ package android.hardware.foo@1.0;
<li><code><var>PACKAGE</var></code> 是映射到 <code><var>ROOT-DIRECTORY</var></code> 的软件包。具体来说,<code><var>PACKAGE</var></code> 是:
<ul>
<li><code>android.hardware</code>(如果是核心 HIDL 软件包)(映射到 <code>hardware/interfaces</code>)。</li>
- <li><code>vendor.<var>VENDOR</var>.hardware</code>(如果是供应商软件包),其中 <code><var>VENDOR</var></code> 指 SoC 供应商或原始设备制造商 (OEM)/原始设计制造商 (ODM)(映射到 <code>vendor/<var>VENDOR</var>/interfaces</code>)。</li>
+ <li><code>vendor.<var>VENDOR</var>.hardware</code>(如果是供应商软件包),其中 <code><var>VENDOR</var></code> 指 SoC 供应商或 OEM/ODM(映射到 <code>vendor/<var>VENDOR</var>/interfaces</code>)。</li>
</ul>
</li><li><code><var>MODULE</var>[.<var>SUBMODULE</var>[.<var>SUBMODULE</var>[…]]]@<var>VERSION</var></code> 与<a href="#dir-structure">目录结构</a>中所述结构内的文件夹名称完全相同。</li>
<li>软件包名称应为小写。如果软件包名称包含多个字词,则这些字词应用作子模块或以 <code>snake_case</code> 形式书写。
@@ -195,7 +199,7 @@ package android.hardware.foo@1.0;
<p>MAJOR 和 MINOR 版本都应该是一个整数。<var></var><var></var>HIDL 使用<a href="http://semver.org/" class="external">语义化版本编号</a>规则。</p>
<h3 id="imports">导入</h3>
-<p>导入采用以下 3 种格式之一:</p>
+<p>导入采用以下三种格式之一:</p>
<ul>
<li>完整软件包导入:<code>import <var>PACKAGE-NAME</var>;</code></li>
<li>部分导入:<code>import
@@ -380,6 +384,7 @@ enum TeleportStatus {
interface IFooController {
/**
* Opens the controller.
+ *
* @return status HAL_FOO_OK if successful.
*/
open() generates (FooStatus status);
@@ -400,6 +405,7 @@ interface IFooController {
<pre class="prettyprint">
/**
* Explain what foo does.
+ *
* @param arg1 explain what arg1 is
* @param arg2 explain what arg2 is
* @return ret1 explain what ret1 is
diff --git a/zh-cn/devices/architecture/hidl/types.html b/zh-cn/devices/architecture/hidl/types.html
index ca597e59..6ff875de 100644
--- a/zh-cn/devices/architecture/hidl/types.html
+++ b/zh-cn/devices/architecture/hidl/types.html
@@ -171,7 +171,7 @@ typedef struct native_handle
<p>当您调用传递(或返回)<code>hidl_handle</code> 对象(复合类型的顶级或一部分)的 HIDL 接口方法时,其中包含的文件描述符的所有权如下所述:</p>
<ul>
-<li>将 <code>hidl_handle</code> 对象作为参数传递的<strong>调用程序</strong>会保留对它所封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;在对这些文件描述符完成操作后,该调用程序必须将其关闭。</li>
+<li>将 <code>hidl_handle</code> 对象作为参数传递的<strong>调用程序</strong>会保留对其封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;在对这些文件描述符完成操作后,该调用程序必须将其关闭。</li>
<li>返回 <code>hidl_handle</code> 对象(通过将其传递到 <code>_cb</code> 函数)的<strong>进程</strong>会保留对相应对象封装的 <code>native_handle_t</code> 中包含的文件描述符的所有权;在对这些文件描述符完成操作后,该进程必须将其关闭。
</li>
<li>接收 <code>hidl_handle</code> 的 <strong>transport</strong> 拥有对相应对象封装的 <code>native_handle_t</code> 中的文件描述符的所有权;接收器可在事务回调期间按原样使用这些文件描述符,但如果想在回调完成后继续使用这些文件描述符,则必须克隆原生句柄。事务完成时,transport 将自动对文件描述符执行 <code>close()</code> 操作。</li>
diff --git a/zh-cn/devices/architecture/hidl/versioning.html b/zh-cn/devices/architecture/hidl/versioning.html
index 518daf0b..f100c912 100644
--- a/zh-cn/devices/architecture/hidl/versioning.html
+++ b/zh-cn/devices/architecture/hidl/versioning.html
@@ -84,7 +84,7 @@
<li>如有必要,可以是不透明数据(如公钥、ID 等)。</li>
</ul>
-<p>如果使用不透明数据,则只能在 HIDL 接口的一侧读取相关数据。例如,如果 <code>vendor.img</code> 代码为 <code>system.img</code> 上的某个组件提供了一项字符串消息或 <code>vec&lt;uint8_t&gt;</code> 数据,则这项数据不能由 <code>system.img</code> 自行解析,只能传回到 <code>vendor.img</code> 进行解读。<strong>将 <code>vendor.img</code> 中的值传递给 <code>system.img</code> 上的供应商代码或其他设备时,相关数据的格式及其解读方式必须准确描述,并且仍是相应接口的一部分</strong>。</p>
+<p>如果使用不透明数据,则只能在 HIDL 接口的一侧读取相关数据。例如,如果 <code>vendor.img</code> 代码为 <code>system.img</code> 上的某个组件提供了一项字符串消息或 <code>vec&lt;uint8_t&gt;</code> 数据,则这项数据不能由 <code>system.img</code> 自行解析,只能传回到 <code>vendor.img</code> 进行解读。<strong>将 <code>vendor.img</code> 中的值传递给 <code>system.img</code> 上的供应商代码或传递给其他设备时,相关数据的格式及其解读方式必须准确描述,并且仍是相应接口的一部分</strong>。</p>
<h3 id="structuring-guidelines">准则</h3>
@@ -273,8 +273,8 @@ interface IBar {
</pre>
<ul>
-<li>插入 <strong><code>S</code></strong> 后得到 <code>android.hardware.bar@1.0::S</code>,并可在 <code>bar/1.0/types.hal</code> 中找到它(因为 <code>types.hal</code> 是自动导入的)。</li>
-<li>使用规则 2 插入 <strong><code>IFooCallback</code></strong> 后得到 <code>android.hardware.bar@1.0::IFooCallback</code>,但无法找到它,因为 <code>bar/1.0/IFooCallback.hal</code> 不是自动导入的(<code>types.hal</code> 是自动导入的)。因此,规则 3 会将其解析为 <code>android.hardware.foo@1.0::IFooCallback</code>(通过 <code>import android.hardware.foo@1.0;</code> 导入)。</li>
+<li>内插 <strong><code>S</code></strong> 后得到 <code>android.hardware.bar@1.0::S</code>,并可在 <code>bar/1.0/types.hal</code> 中找到它(因为 <code>types.hal</code> 是自动导入的)。</li>
+<li>使用规则 2 内插 <strong><code>IFooCallback</code></strong> 后得到 <code>android.hardware.bar@1.0::IFooCallback</code>,但无法找到它,因为 <code>bar/1.0/IFooCallback.hal</code> 不是自动导入的(<code>types.hal</code> 是自动导入的)。因此,规则 3 会将其解析为 <code>android.hardware.foo@1.0::IFooCallback</code>(通过 <code>import android.hardware.foo@1.0;</code> 导入)。</li>
</ul>
<h2 id="types">types.hal</h2>
diff --git a/zh-cn/devices/architecture/kernel/modular-kernels.html b/zh-cn/devices/architecture/kernel/modular-kernels.html
index 88264815..12b5e86b 100644
--- a/zh-cn/devices/architecture/kernel/modular-kernels.html
+++ b/zh-cn/devices/architecture/kernel/modular-kernels.html
@@ -196,16 +196,16 @@ on early-init
<h3 id="early-mounting-partitions-vboot-1-0">提前装载分区 (VBoot 1.0)</h3>
<p>使用 VBoot 1.0 提前装载分区的要求包括:</p>
<ol>
-<li>设备节点路径必须在 <em>fstab</em> 和设备树条目中使用其 by-name 符号链接。<code>fstab</code>例如,确保对分区进行命名且设备节点为 <code>/dev/block/…./by-name/{system,vendor,odm}</code>,而不是使用 <code>/dev/block/mmcblk0pX</code> 指定分区。
+<li>设备节点路径必须在 <code>fstab</code> 和设备树条目中使用其 by-name 符号链接。<em></em>例如,确保对分区进行命名且设备节点为 <code>/dev/block/…./by-name/{system,vendor,odm}</code>,而不是使用 <code>/dev/block/mmcblk0pX</code> 指定分区。
</li>
-<li>在产品的设备配置中(即 <code>device/<em>oem</em>/<em>project</em>/device.mk</code> 中)为 <code>PRODUCT_{SYSTEM,VENDOR}_VERITY_PARTITION</code> 和 <code>CUSTOM_IMAGE_VERITY_BLOCK_DEVICE</code> 指定的路径必须与 <code>fstab</code>/设备树条目中相应块设备节点指定的 by-name 相匹配。<em></em>例如:<pre class="prettyprint">
+<li>在产品的设备配置中(即 <code>device/<em>oem</em>/<em>project</em>/device.mk</code> 中)为 <code>PRODUCT_{SYSTEM,VENDOR}_VERITY_PARTITION</code> 和 <code>CUSTOM_IMAGE_VERITY_BLOCK_DEVICE</code> 指定的路径必须与 <code>fstab</code> 设备树条目中相应块设备节点指定的 by-name 相匹配。<em></em>例如:<pre class="prettyprint">
PRODUCT_SYSTEM_VERITY_PARTITION := /dev/block/…./by-name/system
PRODUCT_VENDOR_VERITY_PARTITION := /dev/block/…./by-name/vendor
CUSTOM_IMAGE_VERITY_BLOCK_DEVICE := /dev/block/…./by-name/odm
</pre>
</li>
<li>通过设备树叠加层提供的条目不得在 <code>fstab</code> 文件片段中出现重复。例如,指定某个条目以在设备树中装载 <code>/vendor</code> 时,<code>fstab</code> 文件不得重复该条目。</li>
-<li><strong>不得</strong>提前装载需要 <code>verifyatboot</code> 的分区(此操作不受支持)。</li>
+<li><code>verifyatboot</code>提前装载需要 <strong>verifyatboot</strong> 的分区(此操作不受支持)。</li>
<li>必须在内核命令行中使用 <code>androidboot.veritymode</code> 选项指定验证分区的真实模式/状态(现有要求)。</li>
</ol>
diff --git a/zh-cn/devices/architecture/vintf/dm.html b/zh-cn/devices/architecture/vintf/dm.html
index d067196f..16bc9a07 100644
--- a/zh-cn/devices/architecture/vintf/dm.html
+++ b/zh-cn/devices/architecture/vintf/dm.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>
@@ -100,7 +100,7 @@
<li>在设备清单文件中修改 HAL 版本。</li>
<li>在设备清单文件中修改目标 FCM 版本。</li>
<li>移除已弃用的 HAL 版本。</li>
-<li>对于搭载版本 9 或更低版本的设备,先择优挑选以下 CL,然后再生成 OTA 更新程序包:
+<li>对于搭载 Android 9 或更低版本的设备,先择优挑选以下 CL,然后再生成 OTA 更新程序包:
<ul>
<li><a href="https://android-review.googlesource.com/722283">CL 722283</a></li>
<li><a href="https://android-review.googlesource.com/722284">CL 722284</a></li>
diff --git a/zh-cn/devices/architecture/vintf/match-rules.html b/zh-cn/devices/architecture/vintf/match-rules.html
index 22259b65..ada98189 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;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>
+<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>
</ul>
<h4><strong>示例</strong>:相机模块的成功 HAL 匹配</h4>
@@ -257,7 +257,7 @@ CONFIG_EMPTY=1 # mismatch; expects ""
</li>
</ul>
-<p>引导加载程序或 Android 操作系统可能包含 <code>libavb</code> 库的两个副本,每个副本具有不同的 MAJOR 版本,用于升级设备和启动设备。<em></em><em></em>在这种情况下,可以共享同一个未签名的系统映像,但最终的签名系统映像则不同(它具有不同的 <code>avb.vbmeta-version</code>):</p>
+<p>引导加载程序或 Android 操作系统可能包含 <code>libavb</code> 库的两个副本,每个副本具有不同的 MAJOR 版本,用于升级设备和启动设备。<em></em><em></em>在这种情况下,可以共享同一个未签名的系统映像,但最终的签名系统映像则不同(具有不同的 <code>avb.vbmeta-version</code>):</p>
<img src="../images/treble_vintf_avb_o_p.png"/>
<figcaption><strong>图 1. </strong>AVB 版本匹配(<code>/system</code> 为 P,其他所有分区均为 O)。</figcaption>
diff --git a/zh-cn/devices/architecture/vintf/objects.html b/zh-cn/devices/architecture/vintf/objects.html
index 6fd46c83..9e9fcd41 100644
--- a/zh-cn/devices/architecture/vintf/objects.html
+++ b/zh-cn/devices/architecture/vintf/objects.html
@@ -3,6 +3,7 @@
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
+
<body>
<!--
Copyright 2017 The Android Open Source Project
@@ -24,12 +25,38 @@
</p>
<h2 id="device-manifest-file">设备清单</h2>
-<p>设备清单(由设备提供)包含供应商清单和 ODM 清单:</p>
+<p>设备清单(由设备提供)包含供应商清单和 ODM 清单。</p>
<ul>
-<li>供应商清单会指定 SoC 通用的 HAL、VNDK 版本等信息。建议将其放置在 Android 源代码树的 <code>device/${VENDOR}/${DEVICE}/manifest.xml</code> 中,但可以使用多个片段文件。有关详情,请参阅<a href="/devices/architecture/vintf/resources.html#manifest-fragments">从片段生成设备清单</a>。
+<li>供应商清单会指定 SoC 通用的 HAL、VNDK 版本等信息。建议将其放置在 Android 源代码树的 <code>device/<var>VENDOR</var>/<var>DEVICE</var>/manifest.xml</code> 中,但可以使用多个片段文件。如需了解详情,请参阅<a href="/devices/architecture/vintf/resources.html#manifest-fragments">从片段生成设备清单</a>。
+</li>
+<li>ODM 清单列出了产品专用的 HAL。VINTF 对象会从以下文件加载 ODM 清单:
+ <ol>
+ <li><code>/odm/etc/vintf/manifest_<var>SKU</var>.xml</code>(如果定义了 <code><var>SKU</var></code>,其中 <code><var>SKU</var></code> 是属性 <code>ro.boot.product.hardware.sku</code> 的值)
+ </li>
+ <li><code>/odm/etc/vintf/manifest.xml</code></li>
+ <li><code>/odm/etc/manifest_<var>SKU</var>.xml</code>(如果定义了 <code><var>SKU</var></code>)</li>
+ <li><code>/odm/etc/manifest.xml</code></li>
+ </ol>
+</li>
+<li>VINTF 对象会按如下方式加载设备清单:
+ <ol>
+ <li>如果存在 <code>/vendor/etc/vintf/manifest.xml</code>,则合并以下内容:
+ <ol>
+ <li><code>/vendor/etc/vintf/manifest.xml</code></li>
+ <li>可选的供应商清单片段</li>
+ <li>可选的 ODM 清单</li><li>可选的 ODM 清单片段</li>
+ </ol>
+ </li><li>如果存在 ODM 清单,则将 ODM 清单与可选的 ODM 清单片段合并在一起。</li>
+ <li><code>/vendor/manfiest.xml</code>(旧版,无片段)</li>
+ </ol>
+请注意:
+ <ul>
+ <li>在旧版设备上,使用旧版供应商清单和 ODM 清单。ODM 清单可能会完全覆盖旧版供应商清单。</li>
+ <li>在搭载 Android 9 的设备上,ODM 清单会与供应商清单合并。</li>
+ <li>合并清单列表时,列表中后出现的清单可能会覆盖列表中先有清单中的标记,但前提是后出现的清单中的标记具有 <code>override="true"</code> 属性。例如,ODM 清单可能会覆盖供应商清单中的某些 <code>&lt;hal&gt;</code> 标记。请参阅下面的属性 <code>override</code> 文档。</li>
+ </ul>
</li>
-<li>ODM 清单会覆盖供应商清单,并列出产品专用的 HAL。</li>
</ul>
<p>此设置可让采用相同开发板的多个产品共用同一个供应商映像(用于提供通用 HAL),但具有不同的 ODM 映像(用于指定产品专用的 HAL)。</p>
@@ -106,6 +133,7 @@
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!-- Comments, Legal notices, etc. here --&gt;
&lt;manifest version="1.0" type="device"&gt;
+ &lt;!-- camera 3.4 in vendor manifest is ignored --&gt;
&lt;hal override="true"&gt;
&lt;name&gt;android.hardware.camera&lt;/name&gt;
&lt;transport&gt;hwbinder&lt;/transport&gt;
@@ -115,6 +143,7 @@
&lt;instance&gt;legacy/0&lt;/instance&gt;
&lt;/interface&gt;
&lt;/hal&gt;
+ &lt;!-- NFC is disabled --&gt;
&lt;hal override="true"&gt;
&lt;name&gt;android.hardware.nfc&lt;/name&gt;
&lt;transport&gt;hwbinder&lt;/transport&gt;
@@ -189,7 +218,7 @@
</pre>
<h2 id="manifest-file-schema">清单文件架构</h2>
-<p>这一部分介绍了下列 XML 标记的含义。Android 源代码树中的源文件中可以缺少某些“必需”的标记,这些标记可以在编译时由 <code><a href="/devices/architecture/vintf/resources.html#assemble_vintf">assemble_vintf</a></code> 写入。设备上的相应文件中必须有“必需”的标记。</p>
+<p>本部分介绍这些 XML 标记的含义。Android 源代码树中的源文件中可能缺少某些“必需”标记,这些标记会在编译时由 <code><a href="/devices/architecture/vintf/resources.html#assemble_vintf">assemble_vintf</a></code> 写入。设备上的相应文件中必须有“必需”标记。</p>
<dl>
<dt><code>?xml</code></dt>
@@ -234,7 +263,7 @@
</ul>
</dd>
<dt><code>manifest.hal.version</code></dt>
-<dd>选用且可重复。清单中 <code>hal</code> 标记的版本。格式为 <code><var>MAJOR</var>.<var>MINOR</var></code>。有关示例,请参阅 <code>hardware/interfaces</code>、<code>vendor/${VENDOR}/interfaces</code>、<code>framework/hardware/interfaces</code> 或 <code>
+<dd>选用且可重复。清单中 <code>hal</code> 标记的版本,格式为 <code><var>MAJOR</var>.<var>MINOR</var></code>。有关示例,请参阅 <code>hardware/interfaces</code>、<code>vendor/${VENDOR}/interfaces</code>、<code>framework/hardware/interfaces</code> 或 <code>
system/hardware/interfaces</code>。
<br /><br />
HIDL 和本机 HAL 可以使用多个版本字段,前提是它们代表<strong>不同的 Major 版本</strong>,并且提供的每个 Major 版本只有一个 Minor 版本。例如,3.1 和 3.2 不能共存,但 1.0 和 3.4 可以共存。这适用于所有同名的 <code>hal</code> 元素,除非 <code>override="true"</code>。</dd>
diff --git a/zh-cn/devices/architecture/vndk/abi-stability.html b/zh-cn/devices/architecture/vndk/abi-stability.html
index 748d4a15..eee6e243 100644
--- a/zh-cn/devices/architecture/vndk/abi-stability.html
+++ b/zh-cn/devices/architecture/vndk/abi-stability.html
@@ -50,7 +50,7 @@ VNDK 是供应商模块可以关联到的一组受限库,用于实现仅针对
</ul>
<p>
-共享库的公开标头是指通过以下属性提供给其他库/二进制文件使用的标头<em></em>:与共享库对应的模块的 <code>Android.bp</code> 定义中的 <code>export_include_dirs</code>、<code>export_header_lib_headers</code>、<code>export_static_lib_headers</code>、<code>export_shared_lib_headers</code> 和 <code>export_generated_headers</code> 属性。
+<em></em>共享库的公开标头是指通过以下属性提供给其他库/二进制文件使用的标头:与共享库对应的模块的 <code>Android.bp</code> 定义中的 <code>export_include_dirs</code>、<code>export_header_lib_headers</code>、<code>export_static_lib_headers</code>、<code>export_shared_lib_headers</code> 和 <code>export_generated_headers</code> 属性。
</p>
<h3 id="about-reachable-types">关于可到达类型</h3>
@@ -410,7 +410,7 @@ $ header-abi-dumper foo.cpp -I exported -o foo.sdump -- -x c++
</pre>
<p>
-该命令指示 <code>header-abi-dumper</code> 解析 <code>foo.cpp</code> 并发出 ABI 信息(显示在 <code>exported</code> 目录内的公开标头中)。下面是 <code>header-abi-dumper</code> 生成的 <strong><code>foo.sdump</code></strong> 中的一部分(并非完整内容):
+该命令指示 <code>header-abi-dumper</code> 解析 <code>foo.cpp</code> 并发出 ABI 信息(显示在 <code>exported</code> 目录内的公开标头中)。下面是 <code>header-abi-dumper</code> 生成的 <strong><code>foo.sdump</code></strong> 中的一部分(并非完整内容表示):
</p>
<pre class="prettyprint">
diff --git a/zh-cn/devices/architecture/vndk/build-system.html b/zh-cn/devices/architecture/vndk/build-system.html
index 591669fc..e6f00aa0 100644
--- a/zh-cn/devices/architecture/vndk/build-system.html
+++ b/zh-cn/devices/architecture/vndk/build-system.html
@@ -20,199 +20,209 @@
limitations under the License.
-->
-<p>编译系统在 Android 8.1 中具有内置的 VNDK 支持。如果启用了 VNDK 支持,编译系统就会检查各模块之间的依赖关系,为供应商模块编译特定于供应商的变体,并自动将这些模块安装到指定目录中。</p>
+<p>
+在 Android 8.1 及更高版本中,编译系统具有内置的 VNDK 支持。如果启用了 VNDK 支持,编译系统就会检查各模块之间的依赖关系,为供应商模块编译特定于供应商的变体,并自动将这些模块安装到指定目录中。
+</p>
-<p>以下示例演示了基本概念:</p>
+<h2 id="vndk-build-support-example">VNDK 编译支持示例</h2>
-<p><img src="../images/treble_vndk_androidbp.png" alt="具有 vendor_available:true 和 vndk.enabled:true 的 libexample"/></p>
-<figcaption><strong>图 1.</strong> 启用 VNDK 支持。</figcaption>
+<p>
+在此示例中,<code>Android.bp</code> 模块定义定义了一个名为 <code>libexample</code> 的库。<code>vendor_available</code> 属性表示框架模块和供应商模块均可能依赖于 <code>libexample</code>。
+</p>
-<p><code>Android.bp</code> 模块定义定义了一个名为 <code>libexample</code> 的库。<code>vendor_available</code> 属性表示框架模块和供应商模块均可能依赖于 <code>libexample</code>。在本示例中,框架可执行文件 <code>/system/bin/foo</code> 和供应商可执行文件 <code>/vendor/bin/bar</code> 均依赖于 <code>libexample</code>,并且在其 <code>shared_libs</code> 属性中具有 <code>libexample</code>。</p>
+<p>
+ <img src="../images/treble_vndk_androidbp.png" alt="具有 vendor_available:true 和 vndk.enabled:true 的 libexample"/>
+</p>
+<figcaption>
+ <strong>图 1.</strong> 已启用 VNDK 支持
+</figcaption>
-<p>如果框架模块和供应商模块均使用 <code>libexample</code>,则编译 <code>libexample</code> 的两个变体。核心变体(以 <code>libexample</code> 命名)由框架模块使用,供应商变体(以 <code>libexample.vendor</code> 命名)由供应商模块使用。</p>
+<p>
+框架可执行文件 <code>/system/bin/foo</code> 和供应商可执行文件 <code>/vendor/bin/bar</code> 均依赖于 <code>libexample</code>,并且在其 <code>shared_libs</code> 属性中具有 <code>libexample</code>。
+</p>
-<p>这两个变体将安装到不同的目录中。核心变体将安装到 <code>/system/lib[64]/libexample.so</code> 中。供应商变体将安装到 <code>/system/lib[64]/vndk/libexample.so</code> 中,因为 <code>vndk.enabled</code> 为 <code>true</code>。</p>
+<p>
+如果框架模块和供应商模块均使用 <code>libexample</code>,则编译 <code>libexample</code> 的两个变体。核心变体(以 <code>libexample</code> 命名)由框架模块使用,供应商变体(以 <code>libexample.vendor</code> 命名)由供应商模块使用。这两个变体将安装到不同的目录中。
+</p>
-<p>有关更多详情,请参阅<a href="#module-definition">模块定义</a>。</p>
-
-<h2 id="configuration">配置</h2>
+<ul>
+ <li>核心变体将安装到 <code>/system/lib[64]/libexample.so</code> 中。</li>
+ <li>供应商变体将安装到 <code>/system/lib[64]/vndk/libexample.so</code> 中,因为 <code>vndk.enabled</code> 为 <code>true</code>。</li>
+</ul>
-<p>要为产品设备启用完整编译系统支持,请将 <code>BOARD_VNDK_VERSION</code> 添加到 <code>BoardConfig.mk</code>:</p>
+<p>
+如需了解详情,请参阅<a href="#module-definition">模块定义</a>。
+</p>
-<pre class="prettyprint">BOARD_VNDK_VERSION := current</pre>
+<h2 id="configuring-build-support">配置编译支持</h2>
-<h3 id="migration-notes">迁移备注</h3>
+<p>
+要为产品设备启用完整编译系统支持,请将 <code>BOARD_VNDK_VERSION</code> 添加到 <code>BoardConfig.mk</code>:
+</p>
-<p>将 <code>BOARD_VNDK_VERSION</code> 添加到 <code>BoardConfig.mk</code> 会产生全局效应。如果是在 <code>BoardConfig.mk</code> 中定义,系统会检查所有模块。没有将违规模块列入黑名单或白名单的机制。建议您在清除所有不必要的依赖项后再添加 <code>BOARD_VNDK_VERSION</code>。</p>
+<pre class="prettyprint">BOARD_VNDK_VERSION := current</pre>
-<p>在迁移过程中,您可以通过在环境变量中设置 <code>BOARD_VNDK_VERSION</code> 来测试和编译模块:</p>
+<p>
+此设置会产生<strong>全局</strong>效应:如果在 <code>BoardConfig.mk</code> 中定义,系统会检查所有模块。由于没有将违规模块列入黑名单或白名单的机制,因此在添加 <code>BOARD_VNDK_VERSION</code> 之前应清除所有不必要的依赖项。您可以通过在环境变量中设置 <code>BOARD_VNDK_VERSION</code> 来测试和编译模块:
+</p>
<pre class="prettyprint">$ BOARD_VNDK_VERSION=current m module_name.vendor</pre>
-<p>而另一个副作用是,默认的全局标头搜索路径会被移除。<em></em>如果启用 <code>BOARD_VNDK_VERSION</code>,则在默认情况下,系统不会添加以下默认标头搜索路径:</p>
+<p>如果启用 <code>BOARD_VNDK_VERSION</code>,系统会移除多个默认的全局标头搜索路径。<em></em>其中包括:
+</p>
<ul>
- <li>frameworks/av/include</li>
- <li>frameworks/native/include</li>
- <li>frameworks/native/opengl/include</li>
- <li>hardware/libhardware/include</li>
- <li>hardware/libhardware_legacy/include</li>
- <li>hardware/ril/include</li>
- <li>libnativehelper/include</li>
- <li>libnativehelper/include_deprecated</li>
- <li>system/core/include</li>
- <li>system/media/audio/include</li>
+ <li><code>frameworks/av/include</code></li>
+ <li><code>frameworks/native/include</code></li>
+ <li><code>frameworks/native/opengl/include</code></li>
+ <li><code>hardware/libhardware/include</code></li>
+ <li><code>hardware/libhardware_legacy/include</code></li>
+ <li><code>hardware/ril/include</code></li>
+ <li><code>libnativehelper/include</code></li>
+ <li><code>libnativehelper/include_deprecated</code></li>
+ <li><code>system/core/include</code></li>
+ <li><code>system/media/audio/include</code></li>
</ul>
-<p>如果某个模块依赖于这些目录中的标头,则其作者必须明确指定与 <code>header_libs</code>、<code>static_libs</code> 和/或 <code>shared_libs</code> 的依赖关系。</p>
+<p>
+如果某个模块依赖于上述目录中的标头,则您必须明确指定与 <code>header_libs</code>、<code>static_libs</code> 和/或 <code>shared_libs</code> 的依赖关系。
+</p>
<h2 id="module-definition">模块定义</h2>
-<p>要使用 <code>BOARD_VNDK_VERSION</code> 编译 Android,开发者必须在 <code>Android.mk</code> 或 <code>Android.bp</code> 中修改其模块定义。本小节介绍了不同种类的模块定义,一些与 VNDK 相关的模块属性,以及在编译系统中实现的依赖性检查。</p>
+<p>
+要使用 <code>BOARD_VNDK_VERSION</code> 编译 Android,您必须在 <code>Android.mk</code> 或 <code>Android.bp</code> 中修改模块定义。此部分介绍了不同种类的模块定义,一些与 VNDK 相关的模块属性,以及在编译系统中实现的依赖性检查。
+</p>
<h3 id="vendor-modules">供应商模块</h3>
-<p>供应商模块是特定于供应商的可执行文件或共享库(必须将这些模块安装到供应商分区中)。在 <code>Android.bp</code> 文件中,供应商模块必须将供应商或专有属性设置为 <code>true</code>。在 <code>Android.mk</code> 文件中,供应商模块必须将 <code>LOCAL_VENDOR_MODULE</code> 或 <code>LOCAL_PROPRIETARY_MODULE</code> 设置为 <code>true</code>。</p>
+<p>
+供应商模块是特定于供应商的可执行文件或共享库(必须将这些模块安装到供应商分区中)。在 <code>Android.bp</code> 文件中,供应商模块必须将供应商或专有属性设置为 <code>true</code>。在 <code>Android.mk</code> 文件中,供应商模块必须将 <code>LOCAL_VENDOR_MODULE</code> 或 <code>LOCAL_PROPRIETARY_MODULE</code> 设置为 <code>true</code>。
+</p>
-<p>如果定义了 <code>BOARD_VNDK_VERSION</code>,则编译系统不允许在供应商模块和框架模块之间建立依赖关系。在以下情况下,编译系统会发出错误:</p>
+<p>
+如果定义了 <code>BOARD_VNDK_VERSION</code>,则编译系统不允许在供应商模块和框架模块之间建立依赖关系,并且编译系统会在以下情况下发出错误:
+</p>
<ul>
<li>不具有 <code>vendor:true</code> 的模块依赖于具有 <code>vendor:true</code> 的模块,或</li>
-
<li>具有 <code>vendor:true</code> 的模块依赖于既不具有 <code>vendor:true</code> 也不具有 <code>vendor_available:true</code> 的非 <code>llndk_library</code> 模块。</li>
</ul>
-<p>前面提到的依赖性检查适用于 <code>Android.bp</code> 中的 <code>header_libs</code>、<code>static_libs</code> 和 <code>shared_libs</code>,也适用于 <code>Android.mk</code> 中的 <code>LOCAL_HEADER_LIBRARIES</code>、<code>LOCAL_STATIC_LIBRARIES</code> 和 <code>LOCAL_SHARED_LIBRARIES</code>。</p>
+<p>
+依赖性检查适用于 <code>Android.bp</code> 中的 <code>header_libs</code>、<code>static_libs</code> 和 <code>shared_libs</code> 以及 <code>Android.mk</code> 中的 <code>LOCAL_HEADER_LIBRARIES</code>、<code>LOCAL_STATIC_LIBRARIES</code> 和 <code>LOCAL_SHARED_LIBRARIES</code>。
+</p>
<h3 id="ll-ndk">LL-NDK</h3>
-<p>LL-NDK 共享库是具有稳定 ABI 的共享库。框架模块和供应商模块均具有相同的最新实现。对于每个 LL-NDK 共享库,<code>Android.bp</code> 文件中都有 <code>llndk_library</code> 模块定义:</p>
+<p>
+LL-NDK 共享库是具有稳定 ABI 的共享库。框架模块和供应商模块均具有相同的最新实现。对于每个 LL-NDK 共享库,<code>Android.bp</code> 都包含一个 <code>llndk_library</code> 模块定义:
+</p>
-<pre class="prettyprint">llndk_library {
+<pre class="prettyprint">
+llndk_library {
name: "libvndksupport",
symbol_file: "libvndksupport.map.txt",
-}</pre>
+}
+</pre>
-<p>该模块定义指定了模块名称和符号文件,后者描述了应该对供应商模块可见的符号。例如:</p>
+<p>
+该模块定义指定了模块名称和符号文件,后者描述了对供应商模块可见的符号。例如:
+</p>
-<pre class="prettyprint">LIBVNDKSUPPORT {
+<pre class="prettyprint">
+LIBVNDKSUPPORT {
global:
android_load_sphal_library; # vndk
android_unload_sphal_library; # vndk
local:
*;
-};</pre>
-
-<p>编译系统会根据符号文件为供应商模块生成存根共享库。如果启用了 <code>BOARD_VNDK_VERSION</code>,供应商模块将与这些存根共享库建立关联。</p>
+};
+</pre>
-<p>只有在满足以下条件时,存根共享库中才会包含符号:</p>
+<p>
+编译系统会根据符号文件为供应商模块生成存根共享库。如果启用了 <code>BOARD_VNDK_VERSION</code>,供应商模块将与这些存根共享库建立关联。只有在满足以下条件时,存根共享库中才会包含符号:
+</p>
<ul>
- <li>它未在以 <code>_PRIVATE</code> 或 <code>_PLATFORM</code> 结尾的部分中定义。</li>
-
+ <li>它未在以 <code>_PRIVATE</code> 或 <code>_PLATFORM</code> 结尾的部分中定义,</li>
<li>它不含 <code>#platform-only</code> 标记,并且</li>
-
- <li>它不含 <code>#introduce*</code> 标记或者该标记与目标匹配。</li>
+ <li>不含 <code>#introduce*</code> 标记或者该标记与目标匹配。</li>
</ul>
-<aside class="note"><strong>注意</strong>:供应商不得定义自己的 LL-NDK 共享库,因为供应商模块无法在常规系统映像 (GSI) 中找到它们。<em></em></aside>
+<aside class="note">
+ <strong>注意</strong>:供应商不得定义自己的 LL-NDK 共享库,因为供应商模块无法在<a href="/setup/build/gsi">通用系统映像 (GSI)</a> 中找到它们。
+</aside>
<h3 id="vndk">VNDK</h3>
-<p>在 <code>Android.bp</code> 文件中,<code>cc_library</code>、<code>cc_library_static</code>、<code>cc_library_shared</code> 和 <code>cc_library_headers</code> 模块定义支持三个与 VNDK 相关的属性:<code>vendor_available</code>、<code>vndk.enabled</code> 和 <code>vndk.support_system_process</code>。</p>
+<p>
+在 <code>Android.bp</code> 文件中,<code>cc_library</code>、<code>cc_library_static</code>、<code>cc_library_shared</code> 和 <code>cc_library_headers</code> 模块定义支持三个与 VNDK 相关的属性:<code>vendor_available</code>、<code>vndk.enabled</code> 和 <code>vndk.support_system_process</code>。
+</p>
-<p>如果 <code>vendor_available</code> 或 <code>vndk.enabled</code> 为 <code>true</code>,则可以编译两种变体(核心变体和供应商变体)。<em></em><em></em>核心变体应被视为框架模块,而供应商变体应被视为供应商模块。如果某些框架模块依赖于此模块,则会编译核心变体。如果某些供应商模块依赖于此模块,则会编译供应商变体。</p>
-
-<p>编译系统会强制执行以下依赖性检查:</p>
+<p>
+如果 <code>vendor_available</code> 或 <code>vndk.enabled</code> 为 <code>true</code>,则可以编译两种变体(核心变体和供应商变体)。<em></em><em></em>核心变体应被视为框架模块,而供应商变体应被视为供应商模块。如果某些框架模块依赖于此模块,则会编译核心变体。如果某些供应商模块依赖于此模块,则会编译供应商变体。编译系统会强制执行以下依赖性检查:
+</p>
<ul>
<li>核心变体始终供框架专用,无法供供应商模块访问。</li>
-
<li>供应商变体始终无法供框架模块访问。</li>
-
<li>供应商变体的所有依赖项(在 <code>header_libs</code>、<code>static_libs</code> 和/或 <code>shared_libs</code> 中指定)必须是 <code>llndk_library</code> 或具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块。</li>
-
<li>如果 <code>vendor_available</code> 为 <code>true</code>,则供应商变体可供所有供应商模块访问。</li>
-
<li>如果 <code>vendor_available</code> 为 <code>false</code>,则供应商变体仅可供其他 VNDK 或 VNDK-SP 模块访问(即,具有 <code>vendor:true</code> 的模块无法与 <code>vendor_available:false</code> 模块相关联)。</li>
</ul>
-<p>系统将通过以下规则确定 <code>cc_library</code> 或 <code>cc_library_shared</code> 的默认安装路径:</p>
+<p>
+系统将通过以下规则确定 <code>cc_library</code> 或 <code>cc_library_shared</code> 的默认安装路径:
+</p>
<ul>
- <li>
- 将核心变体安装到 <code>/system/lib[64]</code> 中。
- </li>
-
- <li>
- 供应商变体安装路径可能会有所不同:
-
+ <li>将核心变体安装到 <code>/system/lib[64]</code> 中。</li>
+ <li>供应商变体安装路径可能会有所不同:
<ul>
- <li>
- 如果 <code>vndk.enabled</code> 为 <code>false</code>,则将供应商变体安装到 <code>/vendor/lib[64]</code> 中。
- </li>
-
- <li>
- 如果 <code>vndk.enabled</code> 为 <code>true</code>,则 <code>vndk.support_system_process</code> 可以是 <code>true</code> 或 <code>false</code>。
-
- <ul>
- <li>
- 如果 <code>vndk.support_system_process</code> 为 <code>false</code>,则供应商变体将安装到 <code>/system/lib[64]/vndk-${VER}</code> 中。
- </li>
-
- <li>
- 否则,供应商变体将安装到 <code>/system/lib[64]/vndk-sp-${VER}</code> 中。
- </li>
+ <li>如果 <code>vndk.enabled</code> 为 <code>false</code>,则将供应商变体将安装到 <code>/vendor/lib[64]</code> 中。</li>
+ <li>如果 <code>vndk.enabled</code> 为 <code>true</code>,则 <code>vndk.support_system_process</code> 可以是 <code>true</code> 或 <code>false</code>。如果:
+ <ul>
+ <li>为 <code>false</code>,则供应商变体将安装到 <code>/system/lib[64]/vndk-${VER}</code> 中。</li>
+ <li>为 <code>true</code>,则供应商变体将安装到 <code>/system/lib[64]/vndk-sp-${VER}</code> 中。</li>
</ul>
</li>
</ul>
</li>
</ul>
-<p>下表总结了编译系统如何处理供应商变体:</p>
-
+<p>
+下表总结了编译系统如何处理供应商变体:
+</p>
<table>
<tbody><tr>
- <th rowspan="2"><p><code>vendor_available</code></p></th>
- <th colspan="2"><p><code>vndk</code></p></th>
- <th rowspan="2"><p><code>Vendor variant descriptions</code></p></th>
+ <th>vendor_available</th>
+ <th style="text-align: center">vndk<br />已启用</th>
+ <th style="text-align: center">vndk<br />support_same_process</th>
+ <th>供应商变体说明</th>
</tr>
<tr>
- <th><p><code>enabled</code></p></th>
- <th><p><code>support_same_process</code></p></th>
+ <td rowspan="4"><code>true</code></td>
+ <td rowspan="2"><code>false</code></td>
+ <td><code>false</code></td>
+ <td>供应商变体为 VND-ONLY。共享库将安装到 <code>/vendor/lib[64]</code> 中。<em></em></td>
</tr>
<tr>
- <td rowspan="4"><p><code>true</code></p></td>
- <td rowspan="2"><p><code>false</code></p></td>
- <td><p><code>false</code></p></td>
- <td>
- <p>供应商变体是 VND-ONLY<em></em></p>
- <p>共享库将安装到 <code>/vendor/lib[64]</code> 中。</p>
- </td>
+ <td><code>true</code></td>
+ <td>无效(编译错误)<em></em></td>
</tr>
<tr>
- <td><p><code>true</code></p></td>
- <td><p><em></em>无效(编译错误)</p></td>
+ <td rowspan="2"><code>true</code></td>
+ <td><code>false</code></td>
+ <td>供应商变体为 VNDK。共享库将安装到 <code>/system/lib[64]/vndk-${VER}</code> 中。<em></em></td>
</tr>
<tr>
- <td rowspan="2"><p><code>true</code></p></td>
- <td><p><code>false</code></p></td>
- <td>
- <p>供应商变体是 VNDK<em></em>。</p>
- <p>共享库将安装到 <code>/system/lib[64]/vndk-${VER}</code> 中。</p>
- </td>
- </tr>
-
- <tr>
- <td><p><code>true</code></p></td>
- <td>
- <p>供应商变体是 VNDK-SP<em></em>。</p>
- <p>共享库将安装到 <code>/system/lib[64]/vndk-sp-${VER}</code> 中。</p>
- </td>
+ <td><code>true</code></td>
+ <td>供应商变体为 VNDK-SP。共享库将安装到 <code>/system/lib[64]/vndk-sp-${VER}</code> 中。<em></em></td>
</tr>
<tr>
@@ -223,39 +233,37 @@
</tr>
<tr>
- <td><p><code>true</code></p></td>
- <td><p><em></em>无效(编译错误)</p></td>
+ <td><code>true</code></td>
+ <td>无效(编译错误)<em></em></td>
</tr>
<tr>
- <td rowspan="2"><p><code>true</code></p></td>
- <td><p><code>false</code></p></td>
- <td>
- <p>供应商变体是 VNDK-Private<em></em>。</p>
- <p>共享库将安装到 <code>/system/lib[64]/vndk-${VER}</code> 中。</p>
- <p>供应商模块不得直接使用这些变体。</p>
- </td>
+ <td rowspan="2"><code>true</code></td>
+ <td><code>false</code></td>
+ <td>供应商变体为 VNDK-Private。<em></em>共享库将安装到 <code>/system/lib[64]/vndk-${VER}</code> 中。供应商模块不得直接使用这些变体。</td>
</tr>
<tr>
- <td><p><code>true</code></p></td>
- <td>
- <p>供应商变体是 <em></em>VNDK-SP-Private。</p>
- <p>共享库将安装到 <code>/system/lib[64]/vndk-sp-${VER}</code> 中。</p>
- <p>供应商模块不得直接使用这些变体。</p>
- </td>
+ <td><code>true</code></td>
+ <td>供应商变体为 VNDK-SP-Private。<em></em>共享库将安装到 <code>/system/lib[64]/vndk-sp-${VER}</code> 中。供应商模块不得直接使用这些变体。</td>
</tr>
</tbody></table>
-<aside class="note"><strong>注意</strong>:供应商可以为其模块设置 <code>vendor_available</code>。不过,供应商不得设置 <code>vndk.enabled</code> 和 <code>vndk.support_system_process</code>,因为供应商模块无法在 GSI 中找到它们。</aside>
+<aside class="note">
+ <strong>注意</strong>:供应商可以为其模块设置 <code>vendor_available</code>,但不得设置 <code>vndk.enabled</code> 和 <code>vndk.support_system_process</code>,因为供应商模块无法在<a href="/setup/build/gsi">通用系统映像 (GSI)</a> 中找到它们。
+</aside>
<h3 id="vndk-extensions">VNDK 扩展</h3>
-<p>VNDK 扩展是具有额外 API 的 VNDK 共享库,将安装到 <code>/vendor/lib[64]/vndk[-sp]</code> 中(不含版本后缀),并在系统运行时替换原始的 VNDK 共享库。</p>
+<p>
+VNDK 扩展是具有额外 API 的 VNDK 共享库,将安装到 <code>/vendor/lib[64]/vndk[-sp]</code> 中(不含版本后缀),并在系统运行时会替换原始的 VNDK 共享库。
+</p>
<h4 id="defining-vndk-extensions">定义 VNDK 扩展</h4>
-<p>在 Android P 中,<code>Android.bp</code> 本身支持 VNDK 扩展。要编译 VNDK 扩展,请定义另一个具有 <code>vendor:true</code> 和 <code>extends</code> 属性的模块:</p>
+<p>
+在 Android 9 及更高版本中,<code>Android.bp</code> 本身支持 VNDK 扩展。要编译 VNDK 扩展,请定义另一个具有 <code>vendor:true</code> 和 <code>extends</code> 属性的模块:
+</p>
<pre class="prettyprint">
cc_library {
@@ -276,21 +284,20 @@ cc_library {
}
</pre>
-<p>具有 <code>vendor:true</code>、<code>vndk.enabled:true</code> 和 <code>extends</code> 属性的模块可定义 VNDK 扩展:</p>
+<p>
+具有 <code>vendor:true</code>、<code>vndk.enabled:true</code> 和 <code>extends</code> 属性的模块可定义 VNDK 扩展:</p>
<ul>
<li><code>extends</code> 属性必须指定基础 VNDK 共享库名称(或 VNDK-SP 共享库名称)。</li>
-
- <li>VNDK 扩展(或 VNDK-SP 扩展)以扩展时所基于的基础模块名称命名。例如,<code>libvndk_ext</code> 的输出二进制文件是 <code>libvndk.so</code>,而非 <code>libvndk_ext.so</code>。</li>
-
- <li>VNDK 扩展将安装到 <code>/vendor/lib[64]/vndk</code> 中。</li>
-
- <li>VNDK-SP 扩展将安装到 <code>/vendor/lib[64]/vndk-sp</code> 中。</li>
-
- <li>基础共享库必须同时具有 <code>vndk.enabled:true</code> 和 <code>vendor_available:true</code>。</li>
+ <li>VNDK 扩展(或 VNDK-SP 扩展)以扩展时所基于的基础模块名称命名。例如,<code>libvndk_ext</code> 的输出二进制文件是 <code>libvndk.so</code>,而非 <code>libvndk_ext.so</code>。</li>
+ <li>VNDK 扩展将安装到 <code>/vendor/lib[64]/vndk</code> 中。</li>
+ <li>VNDK-SP 扩展将安装到 <code>/vendor/lib[64]/vndk-sp</code> 中。</li>
+ <li>基础共享库必须同时具有 <code>vndk.enabled:true</code> 和 <code>vendor_available:true</code>。</li>
</ul>
-<p>VNDK-SP 扩展必须从 VNDK-SP 共享库进行扩展。也就是说,<code>vndk.support_system_process</code> 必须等于:</p>
+<p>
+VNDK-SP 扩展必须从 VNDK-SP 共享库进行扩展(<code>vndk.support_system_process</code> 必须相等):
+</p>
<pre class="prettyprint">
cc_library {
@@ -313,7 +320,9 @@ cc_library {
}
</pre>
-<p>VNDK 扩展(或 VNDK-SP 扩展)可以依赖于其他供应商共享库:</p>
+<p>
+VNDK 扩展(或 VNDK-SP 扩展)可以依赖于其他供应商共享库:
+</p>
<pre class="prettyprint">
cc_library {
@@ -342,11 +351,15 @@ cc_library {
}
</pre>
-<aside class="note"><strong>注意</strong>:与 SP-HAL-Dep 类似,VNDK-SP 扩展及其依赖项(包括供应商库)在 sepolicy 中必须标记为 <code>same_process_hal_file</code>。</aside>
+<aside class="note">
+ <strong>注意</strong>:与 SP-HAL-Dep 类似,VNDK-SP 扩展及其依赖项(包括供应商库)在 sepolicy 中必须标记为 <code>same_process_hal_file</code>。
+</aside>
<h4 id="using-vndk-extensions">使用 VNDK 扩展</h4>
-<p>如果供应商模块依赖于由 VNDK 扩展定义的一些其他 API,则必须在其 <code>shared_libs</code> 属性中指定 VNDK 扩展的名称:</p>
+<p>
+如果供应商模块依赖于由 VNDK 扩展定义的其他 API,则该模块必须在其 <code>shared_libs</code> 属性中指定 VNDK 扩展的名称:
+</p>
<pre class="prettyprint">
// A vendor shared library example
@@ -368,9 +381,9 @@ cc_binary {
}
</pre>
-<p>如果供应商模块依赖于一些 VNDK 扩展,则这些 VNDK 扩展将自动安装到 <code>/vendor/lib[64]/vndk[-sp]</code> 中。</p>
-
-<p>如果某个模块不再依赖于 VNDK 扩展,请向 <code>CleanSpec.mk</code> 添加一个清理步骤,以移除共享库。例如:</p>
+<p>
+如果供应商模块依赖于 VNDK 扩展,则这些 VNDK 扩展将自动安装到 <code>/vendor/lib[64]/vndk[-sp]</code> 中。如果某个模块不再依赖于 VNDK 扩展,请向 <code>CleanSpec.mk</code> 添加一个清理步骤,以移除共享库。例如:
+</p>
<pre class="prettyprint">
$(call add-clean-step, rm -rf $(TARGET_OUT_VENDOR)/lib/libvndk.so)
@@ -378,11 +391,22 @@ $(call add-clean-step, rm -rf $(TARGET_OUT_VENDOR)/lib/libvndk.so)
<h3 id="conditional-compilation">条件编译</h3>
-<p>本小节介绍了如何处理以下三个 VNDK 共享库之间的细微差异<em></em>(例如,为其中一个变体添加或移除某项功能):(1) 核心变体(例如 <code>/system/lib[64]/libexample.so</code>)、(2) 供应商变体(例如 <code>/system/lib[64]/vndk[-sp]-${VER}/libexample.so</code>)和 (3) VNDK 扩展(例如 <code>/vendor/lib[64]/vndk[-sp]/libexample.so</code>)。
+<p>
+本节介绍了如何处理以下三个 VNDK 共享库之间的细微差别(例如,为其中一个变体添加或移除某项功能):<em></em>
+</p>
+
+<ul>
+ <li>核心变体(例如 <code>/system/lib[64]/libexample.so</code>)</li>
+ <li>供应商变体(例如 <code>/system/lib[64]/vndk[-sp]-${VER}/libexample.so</code>)</li>
+ <li>VNDK 扩展(例如 <code>/vendor/lib[64]/vndk[-sp]/libexample.so</code>)
+ </li>
+</ul>
-</p><h4 id="conditional-cflags">条件编译器标志</h4>
+<h4 id="conditional-cflags">条件编译器标记</h4>
-<p>默认情况下,Android 编译系统会为供应商变体(包括 VNDK 扩展)定义 <code>__ANDROID_VNDK__</code>。您可以使用 C 预处理器防护程序来保护相应代码:</p>
+<p>
+默认情况下,Android 编译系统会为供应商变体(包括 VNDK 扩展)定义 <code>__ANDROID_VNDK__</code>。您可以使用 C 预处理器防护程序来保护相应代码:
+</p>
<pre class="prettyprint">
void all() { }
@@ -396,7 +420,9 @@ void vndk_only() { }
#endif
</pre>
-<p>除了 <code>__ANDROID_VNDK__</code>,还可以在 <code>Android.bp</code> 中指定不同的 <code>cflags</code> 或 <code>cppflags</code>。在 <code>target.vendor</code> 中指定的 <code>cflags</code> 或 <code>cppflags</code> 是专门针对供应商变体的。例如,以下代码是针对 <code>libexample</code> 和 <code>libexample_ext</code> 的 <code>Android.bp</code> 模块定义:</p>
+<p>
+除了 <code>__ANDROID_VNDK__</code>,还可以在 <code>Android.bp</code> 中指定不同的 <code>cflags</code> 或 <code>cppflags</code>。在 <code>target.vendor</code> 中指定的 <code>cflags</code> 或 <code>cppflags</code> 是专门针对供应商变体的。例如,以下代码示例是针对 <code>libexample</code> 和 <code>libexample_ext</code> 的 <code>Android.bp</code> 模块定义:
+</p>
<pre class="prettyprint">
cc_library {
@@ -428,7 +454,9 @@ cc_library {
}
</pre>
-<p><code>example.c</code> 的代码清单:</p>
+<p>
+<code>example.c</code> 的代码清单:
+</p>
<pre class="prettyprint">
void all() { }
@@ -446,7 +474,9 @@ void vndk_ext() { }
#endif
</pre>
-<p>针对每个变体导出的符号如下:</p>
+<p>
+针对每个变体导出的符号:
+</p>
<table>
<tbody><tr>
@@ -470,22 +500,23 @@ void vndk_ext() { }
</tr>
</tbody></table>
-<!-- TODO: The paragraph below looks awkward. Refine this subsection to make
-this more fluent. -->
-
-<p>VNDK ABI 合规性检查工具会将 VNDK 和 VNDK 扩展的 ABI 同 <code>prebuilts/abi-dumps/vndk</code> 下的 ABI 转储进行比较:</p>
+<p>
+VNDK ABI 合规性检查工具会将 VNDK 和 VNDK 扩展的 ABI 同 <code>prebuilts/abi-dumps/vndk</code> 下的 ABI 转储进行比较:
+</p>
<ul>
- <li>通过原始 VNDK 共享库导出的符号必须与 ABI 转储中定义的符号相同(而不是后者的超集)。</li>
-
- <li>通过 VNDK 扩展导出的符号必须是 ABI 转储中定义的符号的超集。</li>
+ <li>通过原始 VNDK 共享库导出的符号必须与 ABI 转储中定义的符号相同(而不是后者的超集)。</li>
+ <li>通过 VNDK 扩展导出的符号必须是 ABI 转储中定义的符号的超集。</li>
</ul>
-<h4 id="exclude-source-files-or-shared-libs">排除源文件或共享库</h4>
+<h4 id="excluding">排除源文件或共享库</h4>
-<p>要从供应商变体中排除源文件,请将相应文件添加到 <code>exclude_srcs</code> 属性中。同样,要确保特定共享库未与供应商变体相关联,请将这些共享库添加到 <code>exclude_shared_libs</code> 属性中。例如:</p>
+<p>
+要从供应商变体中排除源文件,请将相应文件添加到 <code>exclude_srcs</code> 属性中。同样,要确保共享库未与供应商变体相关联,请将这些库添加到 <code>exclude_shared_libs</code> 属性中。例如:
+</p>
-<pre class="prettyprint">cc_library {
+<pre class="prettyprint">
+cc_library {
name: "libcond_exclude_example",
srcs: ["fwk.c", "both.c"],
shared_libs: ["libfwk_only", "libboth"],
@@ -495,33 +526,42 @@ this more fluent. -->
exclude_shared_libs: ["libfwk_only"],
},
},
-}</pre>
-
-<p>在本示例中,<code>libcond_exclude_example</code> 的核心变体包含 <code>fwk.c</code> 和 <code>both.c</code> 中的代码,并且依赖于共享库 <code>libfwk_only</code> 和 <code>libboth</code>。</p>
-
-<p>另一方面,<code>libcond_exclude_example</code> 的供应商变体仅包含 <code>both.c</code> 中的代码,因为 <code>fwk.c</code> 已被 <code>exclude_srcs</code> 属性排除。同样,<code>libcond_exclude_example</code> 仅依赖于共享库 <code>libboth</code>,因为 <code>libfwk_only</code> 已被<br /> <code>exclude_shared_libs</code> 属性排除。
-
-<!-- <h4 id="vndk-ext-header-guideline">VNDK extension header guidelines</h4> -->
+}
+</pre>
-<!-- TODO: Add the guide line for VNDK extension headers. -->
+<p>
+在本示例中,<code>libcond_exclude_example</code> 的核心变体包含 <code>fwk.c</code> 和 <code>both.c</code> 中的代码,并且依赖于共享库 <code>libfwk_only</code> 和 <code>libboth</code>。<code>libcond_exclude_example</code> 的供应商变体仅包含 <code>both.c</code> 中的代码,因为 <code>fwk.c</code> 已被 <code>exclude_srcs</code> 属性排除。同样,<code>libcond_exclude_example</code> 仅依赖于共享库 <code>libboth</code>,因为 <code>libfwk_only</code> 已被 <code>exclude_shared_libs</code> 属性排除。
+</p>
-</p><h3 id="product-packages">产品包</h3>
+<h3 id="product-packages">产品包</h3>
-<p>在 Android 编译系统中,变量 <code>PRODUCT_PACKAGES</code> 指定应安装到设备中的可执行文件、共享库或软件包。指定模块的传递依赖项也会隐式安装到设备中。</p>
+<p>
+在 Android 编译系统中,变量 <code>PRODUCT_PACKAGES</code> 指定应安装到设备中的可执行文件、共享库或软件包。指定模块的传递依赖项也会隐式安装到设备中。
+</p>
-<p>如果启用了 <code>BOARD_VNDK_VERSION</code>,具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块会得到特殊处理。如果框架模块依赖于具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块,则核心变体将纳入传递安装集中。同样,如果供应商模块依赖于具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块,则供应商变体将纳入传递安装集中。</p>
+<p>
+如果启用了 <code>BOARD_VNDK_VERSION</code>,具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块会得到特殊处理。如果框架模块依赖于具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块,则核心变体将纳入传递安装集中。同样,如果供应商模块依赖于具有 <code>vendor_available</code> 或 <code>vndk.enabled</code> 的模块,则供应商变体将纳入传递安装集中。
+</p>
-<p>当相关依赖项对编译系统不可见时(例如,可以在运行时使用 <code>dlopen()</code> 打开的共享库),您应该在 <code>PRODUCT_PACKAGES</code> 中指定模块名称来明确安装这些模块。</p>
+<p>
+当相关依赖项对编译系统不可见时(例如,可以在运行时使用 <code>dlopen()</code> 打开的共享库),您应该在 <code>PRODUCT_PACKAGES</code> 中指定模块名称来明确安装这些模块。
+</p>
-<p>如果某个模块具有 <code>vendor_available</code> 或 <code>vndk.enabled</code>,则模块名称代表该模块的核心变体。要在 <code>PRODUCT_PACKAGES</code> 中明确指定供应商变体,请将 <code>.vendor</code> 后缀附加到模块名称上。例如:</p>
+<p>
+如果某个模块具有 <code>vendor_available</code> 或 <code>vndk.enabled</code>,则模块名称代表该模块的核心变体。要在 <code>PRODUCT_PACKAGES</code> 中明确指定供应商变体,请将 <code>.vendor</code> 后缀附加到模块名称上。例如:
+</p>
-<pre class="prettyprint">cc_library {
+<pre class="prettyprint">
+cc_library {
name: "libexample",
srcs: ["example.c"],
vendor_available: true,
-}</pre>
+}
+</pre>
-<p>在本示例中,<code>libexample</code> 代表 <code>/system/lib[64]/libexample.so</code>,<code>libexample.vendor</code> 代表 <code>/vendor/lib[64]/libexample.so</code>。要安装 <code>/vendor/lib[64]/libexample.so</code>,请将 <code>libexample.vendor</code> 添加到 <code>PRODUCT_PACKAGES</code>:</p>
+<p>
+在本示例中,<code>libexample</code> 代表 <code>/system/lib[64]/libexample.so</code>、<code>libexample.vendor</code> 代表 <code>/vendor/lib[64]/libexample.so</code>。要安装 <code>/vendor/lib[64]/libexample.so</code>,请将 <code>libexample.vendor</code> 添加到 <code>PRODUCT_PACKAGES</code>:
+</p>
<pre class="prettyprint">PRODUCT_PACKAGES += libexample.vendor</pre>
diff --git a/zh-cn/devices/architecture/vndk/index.html b/zh-cn/devices/architecture/vndk/index.html
index 086c94b1..5279bc1b 100644
--- a/zh-cn/devices/architecture/vndk/index.html
+++ b/zh-cn/devices/architecture/vndk/index.html
@@ -4,6 +4,7 @@
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
+
<!--
Copyright 2017 The Android Open Source Project
@@ -45,7 +46,7 @@
<li><em><a href="/devices/architecture/vndk/linker-namespace.html">链接器命名空间</a></em>:提供对共享库关联的精细控制。
</li>
<li><em><a href="/devices/architecture/vndk/dir-rules-sepolicy.html">目录、规则和 sepolicy</a></em>:定义了搭载 Android 8.0 及更高版本的设备的目录结构,以及 VNDK 规则和关联的 sepolicy。</li>
-<li><em><a href="../images/vndk_design_android_o.pdf">Android O 中的 VDNK 设计</a></em>演示文稿:阐述了 Android O 中使用的 VDNK 基本概念。</li>
+<li><em><a href="/devices/architecture/images/VNDK.pdf">VNDK 设计</a></em>演示文稿:阐述了 Android 8.0 中使用的 VDNK 基本概念。</li>
</ul>
<h2 id="concepts">VNDK 概念</h2>
@@ -163,18 +164,20 @@
<li>框架共享库是指 <code>/system/lib[64]</code> 下的共享库。<em></em></li>
<li><em></em><em></em><em></em>框架模块是指框架共享库和框架可执行文件。</li>
<li>框架进程是指从框架可执行文件衍生而来的进程(例如 <code>/system/bin/app_process</code>)。<em></em><em></em></li>
-<li>供应商可执行文件是指 <code>/vendor/bin</code> 中的可执行文件<em></em>。
+<li>供应商可执行文件是指 <code>/vendor/bin</code> 中的可执行文件。<em></em>
</li><li>供应商共享库是指 <code>/vendor/lib[64]</code> 下的共享库。<em></em></li>
<li><em></em><em></em><em></em>供应商模块是指供应商可执行文件和供应商共享库。</li>
<li><em></em><em></em>供应商进程是指供应商可执行文件(例如 </li>
<code>/vendor/bin/android.hardware.camera.provider@2.4-service</code>)产生的进程。
</ul>
-<aside class="note"><strong>注意</strong>:常规系统映像 (GSI) 是指根据相应分支(与版本分支类似,但更正了一些错误或进行了一些泛化)编译并由 Google 发布的标准 Android 系统映像。<em></em></aside>
+<aside class="note"><strong>注意</strong>:通用系统映像 (GSI) 是指根据相应分支(与版本分支类似,但更正了一些错误或进行了一些泛化)编译并由 Google 发布的标准 Android 系统映像。<em></em></aside>
-<h2 id="vndk-versioning">VNDK 版本编号</h2>
+<h2 id="vndk-versioning">VNDK 版本控制</h2>
-<p>在 Android P 中,VNDK 共享库带有版本编号:</p>
+<p>
+在 Android 9 中,VNDK 共享库带有版本编号:
+</p>
<ul>
<li><code>ro.vndk.version</code> 系统属性将自动添加到 <code>/vendor/default.prop</code>。</li>
@@ -202,24 +205,30 @@
<h3 id="upgrading-devices">升级设备</h3>
-<p>如果 Android 8.x 设备停用了 VNDK 运行时增强功能(即,编译时未使用 <code>BOARD_VNDK_VERSION</code> 或使用了 <code>BOARD_VNDK_RUNTIME_DISABLE</code>),则在升级到 Android P 时,可能会将 <code>PRODUCT_USE_VNDK_OVERRIDE := false</code> 添加 <code>BoardConfig.mk</code>。</p>
+<p>如果 Android 8.x 设备停用了 VNDK 运行时增强功能(即,编译时未使用 <code>BOARD_VNDK_VERSION</code> 或使用了 <code>BOARD_VNDK_RUNTIME_DISABLE</code>),则在升级到 Android 9 时,可能会将 <code>PRODUCT_USE_VNDK_OVERRIDE := false</code> 添加到 <code>BoardConfig.mk</code>。</p>
<p>如果 <code>PRODUCT_USE_VNDK_OVERRIDE</code> 为 <code>false</code>,则 <code>ro.vndk.lite</code> 属性将自动添加到 <code>/vendor/default.prop</code>,且其值将为 <code>true</code>。因此,动态链接器将加载 <code>/system/etc/ld.config.vndk_lite.txt</code> 中的链接器命名空间配置,这仅会隔离 SP-HAL 和 VNDK-SP。</p>
-<p>如果要将搭载 Android 7.0(或更低版本)的设备升级到 Android P,请将 <code>PRODUCT_TREBLE_LINKER_NAMESPACES_OVERRIDE := false</code> 添加到 <code>BoardConfig.mk</code>。</p>
+<p>
+要将 Android 7.0 或更低版本的设备升级到 Android 9,请将 <code>PRODUCT_TREBLE_LINKER_NAMESPACES_OVERRIDE := false</code> 添加到 <code>BoardConfig.mk</code>。
+</p>
<h3 id="vendor-test-suite">供应商测试套件 (VTS)</h3>
-<p>Android P 供应商测试套件 (VTS) 强制要求存在非空 <code>ro.vndk.version</code> 属性。新发布的设备和升级设备都必须定义 <code>ro.vndk.version</code>。一些 VNDK 测试用例(例如 <code>VtsVndkFilesTest</code> 和 <code>VtsVndkDependencyTest</code>)依赖于 <code>ro.vndk.version</code> 属性来加载符合条件且匹配的 VNDK 库数据集。</p>
+<p>
+Android 9 供应商测试套件 (VTS) 强制要求存在非空 <code>ro.vndk.version</code> 属性。新发布的设备和升级设备都必须定义 <code>ro.vndk.version</code>。一些 VNDK 测试用例(例如 <code>VtsVndkFilesTest</code> 和 <code>VtsVndkDependencyTest</code>)依赖于 <code>ro.vndk.version</code> 属性来加载符合条件且匹配的 VNDK 库数据集。
+</p>
-<p>如果 <code>ro.product.first_api_level</code> 属性大于 27,则不能定义 <code>ro.vndk.lite</code> 属性。
-如果在新推出的 Android P 设备中定义了 <code>ro.vndk.lite</code>,则 <code>VtsTreblePlatformVersionTest</code> 将失败。</p>
+<p>
+如果 <code>ro.product.first_api_level</code> 属性大于 27,则不能定义 <code>ro.vndk.lite</code> 属性。
+ 如果在新推出的 Android 9 设备中定义了 <code>ro.vndk.lite</code>,则 <code>VtsTreblePlatformVersionTest</code> 将失败。
+</p>
<h2 id="document-history">文档历史记录</h2>
<p>本部分跟踪了对 VNDK 文档进行的更改。</p>
-<h3 id="changes-p">Android P 的变化</h3>
+<h3 id="changes-p">Android 9 的变化</h3>
<ul>
<li>添加了“VNDK 版本编号”部分。</li>
diff --git a/zh-cn/devices/architecture/vndk/linker-namespace.html b/zh-cn/devices/architecture/vndk/linker-namespace.html
index 41d4585b..37ae688c 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}/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]/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>
@@ -46,82 +46,295 @@
<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>首先,<code>ld.config.txt</code> 的开头有几个 <code>dir.${section}</code> 属性:</p>
+<p>配置文件包含以下内容:</p>
-<pre class="prettyprint">
-dir.${section} = /path/to/bin/directory
-</pre>
+<ul>
+ <li>多个“目录-区段”映射属性(位于动态链接器的开头),用于选择有效的区段。</li>
-<p>这些属性决定了将应用于相应进程的一系列规则。例如,如果主可执行文件位于 <code>/system/bin</code> 中,则会应用 <code>[system]</code> 中的规则。<em></em>同样,如果主可执行文件位于 <code>/vendor/bin</code> 中,则会应用 <code>[vendor]</code> 中的规则。<em></em></p>
+ <li>多个链接器命名空间配置区段:<ul>
+ <li>每个区段都包含多个命名空间(圆形顶点)以及各命名空间之间的多个回退链接(图形弧)。</li>
-<p>其次,除了 <code>default</code> 链接器命名空间外,<code>addition.namespaces</code> 还为每个部分指定了将由动态链接器创建的额外链接器命名空间(用英文逗号分隔):</p>
+ <li>每个命名空间都具有自己的隔离、搜索路径、允许的路径以及可见性设置。</li>
+ </ul>
+ </li>
+</ul>
-<pre class="prettyprint">
-additional.namespaces = namespace1,namespace2,namespace3
-</pre>
+<p>下表详细介绍了各属性的含义。</p>
-<p>在上述示例中,动态链接器为 <code>/system/bin</code> 中的可执行文件创建了两个链接器命名空间(<code>default</code> 和 <code>sphal</code>)。</p>
+<h3 id="directory-section-mapping-property">“目录-区段”映射属性</h3>
-<p>再次,对于每个链接器命名空间,可以配置以下属性:</p>
+<table>
+ <tbody><tr>
+ <th>属性</th>
+ <th>说明</th>
+ <th>示例</th>
+ </tr>
-<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>
+ <tr>
+ <td><p><code>dir.<var>name</var></code></p></td>
-<p><code>namespace.${name}.search.paths</code> 表示将附加到库名称前面的目录。各目录之间用英文冒号隔开。
-<code>${LIB}</code> 是一个特殊的占位符。如果相应进程正在运行 32 位可执行文件,则 <code>${LIB}</code> 将被替换为 <code>lib</code>。同样,如果相应进程正在运行 64 位可执行文件,则 <code>${LIB}</code> 将被替换为 <code>lib64</code>。</p>
+ <td>
+ <p>指向 <code>[<var>name</var>]</code> 区段所应用到的目录的路径。</p>
-<p>在上述示例中,如果 <code>/system/bin</code> 中的 64 位可执行文件与 <code>libexample.so</code> 相关联,则动态链接器会首先搜索 <code>/system/lib64/libexample.so</code>。如果找不到 <code>/system/lib64/libexample.so</code>,则动态链接器会搜索 <code>/vendor/lib64/libexample.so</code>。</p>
+ <p>每个属性都会将目录下的可执行文件映射到链接器命名空间配置区段。可能会有 2 个(或多个)属性具有相同的 <code><var>name</var></code>,却指向不同的目录。</p>
+ </td>
-<p>如果 <code>namespace.${name}.isolated</code> 为 <code>true</code>,则动态链接器仅会加载 <code>namespace.${name}.search.paths</code> 中指定目录下的共享库,或 <code>namespace.${name}.permitted.paths</code> 中指定目录下的共享库。</p>
+ <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>在上述示例中,在 <code>sphal</code> 链接器命名空间中加载的共享库将无法关联到 <code>/system/lib[64]</code> 中的共享库,因为 <code>namespace.sphal.isolated</code> 为 <code>true</code> 并且 <code>/system/lib[64]</code> 既不在 <code>namespace.sphal.permitted.paths</code> 中也不在 <code>namespace.sphal.search.paths</code> 中。</p>
+ <p>这表示在 <code>[system]</code> 区段中指定的配置适用于从 <code>/system/bin</code> 或 <code>/system/xbin</code> 加载的可执行文件。</p>
-<p><code>namespace.${name}.links</code> 指定了 <code>${name}</code> 链接器命名空间关联到的链接器命名空间列表(以英文逗号分隔)。</p>
+ <p>在 <code>[vendor]</code> 区段中指定的配置适用于从 <code>/vendor/bin</code> 加载的可执行文件。</p>
+ </td>
+ </tr>
+</tbody></table>
-<p>在上述示例中,<code>namespace.sphal.links</code> 指定 <code>sphal</code> 链接器命名空间关联到 <code>default</code> 链接器命名空间。</p>
+<h3 id="relation-properties">关系属性</h3>
-<p><code>namespace.${name}.link.${other}.shared_libs</code> 会指定可能会利用后备链接的共享库名称(用英文冒号分隔)。如果某个共享库无法加载到 <code>${name}</code> 链接器命名空间中,并且其名称位于 <code>namespace.${name}.link.${other}.shared_libs</code> 中,则动态链接器会尝试从 <code>${other}</code> 链接器命名空间导入该库。</p>
+<table>
+ <tbody><tr>
+ <th>属性</th>
+ <th>说明</th>
+ <th>示例</th>
+ </tr>
-<p>在上述示例中,<code>namespace.sphal.link.default.shared_libs</code> 指定 <code>libc.so</code> 和 <code>libm.so</code> 可以由 <code>default</code> 链接器命名空间导出。如果在 <code>sphal</code> 链接器命名空间中加载的共享库关联到 <code>libc.so</code>,并且动态链接器在 <code>/vendor/lib[64]</code> 中找不到 <code>libc.so</code>,则动态链接器会遍历后备链接,并查找由 <code>default</code> 链接器命名空间导出的 <code>libc.so</code>。</p>
+ <tr>
+ <td><code>additional.<wbr></wbr>namespaces</code></td>
-<p>如果 <code>namespace.${name}.link.${other}.allow_all_shared_libs</code> 为 <code>true</code>,则所有共享库名称均可以利用后备链接。如果某个共享库无法加载到 <code>${name}</code> 链接器命名空间中,则动态链接器会尝试从 <code>${other}</code> 链接器命名空间导入该库。</p>
+ <td>
+ <p>相应区段的其他命名空间的逗号分隔列表(<code>default</code> 命名空间除外)。</p>
+ </td>
-<p>如果 <code>namespace.${name}.visible</code> 为 <code>true</code>,该程序将能够获取链接器命名空间句柄,该句柄随后可传递到 <code>android_dlopen_ext()</code>。</p>
+ <td>
+ <p><code>additional.<wbr></wbr>namespaces = sphal,<wbr></wbr>vndk</code></p>
-<p>在上述示例中,<code>namespace.sphal.visible</code> 为 <code>true</code>,以便 <code>android_load_sphal_library()</code> 可以明确要求动态链接器加载 <code>sphal</code> 链接器命名空间中的共享库。</p>
+ <p>这表示 <code>[system]</code> 配置中有 3 个命名空间(<code>default</code>、<code>sphal</code> 和 <code>vndk</code>)。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>links</code></td>
+
+ <td>
+ <p>回退命名空间的逗号分隔列表。</p>
+
+ <p>如果在当前命名空间中找不到共享库,则动态链接器会尝试从回退命名空间加载共享库。在列表开头指定的命名空间优先级较高。</p>
+
+ <aside class="note">注意:回退命名空间没有传递特性。例如,命名空间 A 链接到命名空间 B,命名空间 B 链接到命名空间 C。如果动态链接器在命名空间 A 中找不到相应的库,则它仅会搜索命名空间 B,而不会搜索命名空间 C。<em></em><em></em><em></em><em></em><em></em><em></em><em></em></aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>sphal.<wbr></wbr>links = default,<wbr></wbr>vndk</code></p>
+
+ <p>如果某个共享库或可执行文件请求另一个共享库,而后者无法加载到 <code>sphal</code> 命名空间,则动态链接器会尝试从 <code>default</code> 命名空间加载此共享库。</p>
+
+ <p>然后,如果此共享库也无法从 <code>default</code> 命名空间加载,则动态链接器会尝试从 <code>vndk</code> 命名空间加载此共享库。</p>
+
+ <p>最后,如果所有尝试都失败,则动态链接器会返回一个错误。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>link.<wbr></wbr><var>other</var>.<wbr></wbr>shared_libs</code></td>
+
+ <td>
+ <p>用冒号分隔的共享库列表(如果在 <code>name</code> 命名空间中找不到这些共享库,则可以在 <code>other</code> 命名空间中搜索)。</p>
+
+ <p>此属性无法与 <code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>link.<wbr></wbr><var>other</var>.<wbr></wbr>allow_all_shared_libs</code> 一起使用。</p>
+
+ <aside class="note"><p>注意:此属性与 <a href="/devices/tech/config/namespaces_libraries">public.libraries.txt</a> 文件在底层实现上是相同的。这两种机制都通过使用库名称过滤器指定链接的方式来控制导入的共享库。</p>
+
+ <p>不同之处在于,<code>ld.config.txt</code> 由动态链接器进行加载,并且所有命名空间都是在程序启动时创建的。相反,<code>libnativeloader</code> 会在 Zygote 进程针对某个应用进行分岔和专门化操作时创建链接器命名空间。应用原生库的命名空间具有一个仅允许使用在 <code>public.libraries.txt</code> 中指定的库名称的链接。</p></aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>sphal.<wbr></wbr>link.<wbr></wbr>default.<wbr></wbr>shared_libs = libc.so:<wbr></wbr>libm.so</code></p>
+
+ <p>这表示回退链接仅接受 <code>libc.so</code> 或 <code>libm.so</code> 作为请求的库名称。如果请求的库名称不是 <code>libc.so</code> 或 <code>libm.so</code>,则动态链接器会忽略从 <code>sphal</code> 到 <code>default</code> 命名空间的回退链接。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>link.<wbr></wbr><var>other</var>.<wbr></wbr>allow_all_shared_libs</code></td>
+
+ <td>
+ <p>一个布尔值,用于指示在 <code><var>name</var></code> 命名空间中找不到共享库时,是否所有共享库都可以在 <code><var>other</var></code> 命名空间中搜索。</p>
+
+ <p>此属性无法与 <code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>link.<wbr></wbr><var>other</var>.<wbr></wbr>shared_libs</code> 一起使用。</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>vndk.<wbr></wbr>link.<wbr></wbr>sphal.<wbr></wbr>allow_all_shared_libs = true</code></p>
+
+ <p>这表示所有库名称都可以遍历从 <code>vndk</code> 到 <code>sphal</code> 命名空间的回退链接。</p>
+ </td>
+ </tr>
+</tbody></table>
+
+<h3 id="namespace-properties">命名空间属性</h3>
+
+<table>
+ <tbody><tr>
+ <th>属性</th>
+ <th>说明</th>
+ <th>示例</th>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>isolated</code></td>
+
+ <td>
+ <p>一个布尔值,用于指示动态链接器是否应该检查共享库在什么位置。</p>
+
+ <p>如果 <code>isolated</code> 为 <code>true</code>,则只有某个 <code>search.paths</code> 目录(不包含子目录)中或 <code>permitted.paths</code>(包含子目录)下的共享库才能加载。<em></em><em></em></p>
+
+ <p>如果 <code>isolated</code> 为 <code>false</code>,则动态链接器不会检查共享库的路径。</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>sphal.<wbr></wbr>isolated = true</code></p>
+
+ <p>这表示只有 <code>search.paths</code> 中或 <code>permitted.paths</code> 下的共享库才能加载到 <code>sphal</code> 命名空间。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>search.paths</code></td>
+
+ <td>
+ <p>以冒号分隔的目录列表,用于搜索共享库。</p>
+
+ <p>如果函数调用 <code>dlopen()</code> 或 <code>DT_NEEDED</code> 条目时未指定完整路径,则在 <code>search.paths</code> 中指定的目录将附加到请求的库名称前面。在列表开头指定的目录优先级较高。</p>
+
+ <p>如果 <code>isolated</code> 为 <code>true</code>,则任一 <code>search.paths</code> 目录(不包含子目录)中的共享库都可以加载,无论 <code>permitted.paths</code> 属性如何设置。<em></em></p>
+
+ <p>例如,如果 <code>search.paths</code> 为 <code>/system/${LIB}</code>,并且 <code>permitted.paths</code> 为空,则 <code>/system/${LIB}/libc.so</code> 可以加载,但 <code>/system/${LIB}/vndk/libutils.so</code> 无法加载。</p>
+
+ <aside class="note">注意:<code>${LIB}</code> 是内置占位符。对于 32 位进程,此占位符将替换为 <code>lib</code>;对于 64 位进程,此占位符将替换为 <code>lib64</code>。</aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>default.<wbr></wbr>search.paths = /system/${LIB}</code></p>
+
+ <p>这表示动态链接器会在 <code>/system/${LIB}</code> 中搜索共享库。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>asan.search.paths</code></td>
+
+ <td>
+ <p>以冒号分隔的目录列表,用于在启用 <a href="/devices/tech/debug/asan">Address Sanitizer</a> 后搜索共享库。</p>
+
+ <p>在启用 <a href="/devices/tech/debug/asan">Address Sanitizer</a> 后,系统会忽略 <code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>search.paths</code>。</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>default.<wbr></wbr>asan.search.paths = /data/asan/system/${LIB}:<wbr></wbr>/system/${LIB}</code></p>
+
+ <p>这表示在启用 <a href="/devices/tech/debug/asan">Address Sanitizer</a> 后,动态链接器会先搜索 <code>/data/asan/system/${LIB}</code>,然后再搜索 <code>/system/${LIB}</code>。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>permitted.paths</code></td>
+
+ <td>
+ <p>以冒号分隔的目录列表(包含子目录),当 <code>isolated</code> 为 <code>true</code> 时,动态链接器可在其中加载共享库(除了 <code>search.paths</code> 以外)。</p>
+
+ <p><code>permitted.paths</code> 的子目录下的共享库也可以加载。例如,如果 <code>permitted.paths</code> 为 <code>/system/${LIB}</code>,则 <code>/system/${LIB}/libc.so</code> 和 <code>/system/${LIB}/vndk/libutils.so</code> 均可加载。</p>
+
+ <p>如果 <code>isolated</code> 为 <code>false</code>,则系统会忽略 <code>permitted.paths</code> 并发出相应警告。</p>
+
+ <aside class="note">注意:在动态链接器搜索共享库时,<code>permitted.paths</code> 不会附加到请求的库名称前面。其主要目的是让程序员能够通过指定共享库的完整路径将共享库加载到隔离的命名空间。</aside>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>default.<wbr></wbr>permitted.paths = /system/${LIB}/hw</code></p>
+
+ <p>这表示 <code>/system/${LIB}/hw</code> 下的共享库可以加载到隔离的 <code>default</code> 命名空间。</p>
+
+ <p>例如,如果没有 <code>permitted.paths</code>,则 <code>libaudiohal.so</code> 无法将 <code>/system/${LIB}/hw/audio.a2dp.default.so</code> 加载到 <code>default</code> 命名空间。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>asan.permitted.paths</code></td>
+
+ <td>
+ <p>以冒号分隔的目录列表,在启用 <a href="/devices/tech/debug/asan">Address Sanitizer</a> 后,动态链接器可在其中加载共享库。</p>
+
+ <p>在启用 <a href="/devices/tech/debug/asan">Address Sanitizer</a> 后,系统会忽略 <code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>permitted.paths</code>。</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>default.<wbr></wbr>asan.permitted.paths = /data/asan/system/${LIB}/hw:<wbr></wbr>/system/${LIB}/hw</code></p>
+
+ <p>这表示在启用 <a href="/devices/tech/debug/asan">Address Sanitizer</a> 后,<code>/data/asan/system/${LIB}/hw</code> 或 <code>/system/${LIB}/hw</code> 下的共享库可以加载到隔离的 <code>default</code> 命名空间。</p>
+ </td>
+ </tr>
+
+ <tr>
+ <td><code>namespace.<wbr></wbr><var>name</var>.<wbr></wbr>visible</code></td>
+
+ <td>
+ <p>一个布尔值,用于指示程序(不包括 <code>libc</code>)是否可以包含带有 <code>android_get_exported_namespace()</code> 的链接器命名空间句柄,以及通过将此句柄传递到 <code>android_dlopen_ext()</code> 打开链接器命名空间中的共享库。</p>
+
+ <p>如果 <code>visible</code> 为 <code>true</code>,则 <code>android_get_exported_namespace()</code> 在命名空间存在时始终返回此句柄。</p>
+
+ <p>如果 <code>visible</code> 为 <code>false</code>(默认值),则无论命名空间是否存在,<code>android_get_exported_namespace()</code> 始终返回 <code>NULL</code>。仅当符合以下条件时,共享库才能加载到此命名空间:(1) 具有指向此命名空间的回退链接的其他链接器命名空间请求这些共享库,或者 (2) 此命名空间中的其他共享库或可执行文件请求这些共享库。</p>
+ </td>
+
+ <td>
+ <p><code>namespace.<wbr></wbr>sphal.<wbr></wbr>visible = true</code></p>
+
+ <p>这表示 <code>android_get_exported_namespace("sphal")</code> 可以返回有效的链接器命名空间句柄。</p>
+ </td>
+ </tr>
+</tbody></table>
<h2 id="linker-namespace-isolation">链接器命名空间隔离</h2>
-<p><code>${android-src}/system/core/rootdir/etc</code> 中有三种配置。系统会根据 <code>BoardConfig.mk</code> 中 <code>PRODUCT_TREBLE_LINKER_NAMESPACES</code>、<code>BOARD_VNDK_VERSION</code> 和 <code>BOARD_VNDK_RUNTIME_DISABLE</code> 的值选择不同的配置:</p>
+<p><code>${android-src}/system/core/rootdir/etc</code> 中有 3 个配置文件。系统会根据 <code>BoardConfig.mk</code> 中 <code>PRODUCT_TREBLE_LINKER_NAMESPACES</code>、<code>BOARD_VNDK_VERSION</code> 和 <code>BOARD_VNDK_RUNTIME_DISABLE</code> 的值选择不同的配置:</p>
<table>
<tbody><tr>
@@ -305,8 +518,8 @@ BOARD_VNDK_RUNTIME_DISABLE := true
<code>/product/app</code><br />
<code>/product/priv-app</code><br />
<code>/data</code><br />
- <code>/mnt/expand
- </code></td>
+ <code>/mnt/expand</code>
+ </td>
</tr>
<tr>
diff --git a/zh-cn/devices/audio/terminology.html b/zh-cn/devices/audio/terminology.html
index 9cf44d30..7b82163c 100644
--- a/zh-cn/devices/audio/terminology.html
+++ b/zh-cn/devices/audio/terminology.html
@@ -302,7 +302,8 @@ Sony/Philips 数字接口格式,用于未压缩的 PCM 音频的互连。如
<dt>TOSLINK</dt>
<dd>
-<a href="https://en.wikipedia.org/wiki/TOSLINK">TOSLINK</a> 是一种配合 S/PDIF 使用的光纤音频数据线。<em></em></dd>
+<a href="https://en.wikipedia.org/wiki/TOSLINK">TOSLINK</a> 是一种配合 S/PDIF 使用的光纤音频数据线。<em></em>
+</dd>
<dt>USB</dt>
<dd>
@@ -328,7 +329,8 @@ Sony/Philips 数字接口格式,用于未压缩的 PCM 音频的互连。如
<li><a href="http://mipi.org/specifications/soundwire">SoundWire</a></li>
</ul>
-<p>在 <a href="http://www.alsa-project.org/main/index.php/ASoC">ALSA 系统芯片 (ASoC)</a> 中,以上各项统称为<a href="https://www.kernel.org/doc/Documentation/sound/soc/dai.rst">数字音频接口</a> (DAI)。
+<p>
+在 <a href="http://www.alsa-project.org/main/index.php/ASoC">ALSA 系统芯片 (ASoC)</a> 中,以上各项统称为<a href="https://www.kernel.org/doc/Documentation/sound/soc/dai.rst">数字音频接口</a> (DAI)。
</p>
<h3 id="signalTerms">音频信号路径</h3>
@@ -436,8 +438,7 @@ Android 专用术语包括仅在 Android 音频框架中使用的术语,以及
<dt>AudioEffect</dt>
<dd>
-用于输出(处理后)音效与输入(处理前)音效的 API 和实现框架。该 API 在
-<a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">android.media.audiofx.AudioEffect</a> 中定义。
+用于输出(处理后)音效与输入(处理前)音效的 API 和实现框架。该 API 在 <a href="http://developer.android.com/reference/android/media/audiofx/AudioEffect.html">android.media.audiofx.AudioEffect</a> 中定义。
</dd>
<dt>AudioFlinger</dt>
@@ -462,8 +463,7 @@ AudioFlinger 中的模块,负责合并多个音轨以及应用衰减(音量
<dt>AudioRecord</dt>
<dd>
-用于从麦克风等音频输入设备接收数据的主要低级别客户端 API。相应数据通常为 PCM 格式。该 API 在
-<a href="http://developer.android.com/reference/android/media/AudioRecord.html">android.media.AudioRecord</a> 中定义。
+用于从麦克风等音频输入设备接收数据的主要低级别客户端 API。相应数据通常为 PCM 格式。该 API 在 <a href="http://developer.android.com/reference/android/media/AudioRecord.html">android.media.AudioRecord</a> 中定义。
</dd>
<dt>AudioResampler</dt>
@@ -478,8 +478,7 @@ AudioFlinger 中的模块,负责<a href="src.html">采样率转换</a>。
<dt>AudioTrack</dt>
<dd>
-用于向音响设备等音频输出设备发送数据的主要低级别客户端 API。相应数据通常为 PCM 格式。该 API 在
-<a href="http://developer.android.com/reference/android/media/AudioTrack.html">android.media.AudioTrack</a> 中定义。
+用于向音响设备等音频输出设备发送数据的主要低级别客户端 API。相应数据通常为 PCM 格式。该 API 在 <a href="http://developer.android.com/reference/android/media/AudioTrack.html">android.media.AudioTrack</a> 中定义。
</dd>
<dt>audio_utils</dt>
@@ -549,8 +548,7 @@ AudioFlinger 中的线程,可用于大部分功能完善的 AudioTrack 客户
<dt>SoundPool</dt>
<dd>
-比 AudioTrack 级别更高的客户端 API,可播放通过采样得到的音频片段,适用于触发界面反馈、游戏音效等。该 API 在
-<a href="http://developer.android.com/reference/android/media/SoundPool.html">android.media.SoundPool</a> 中定义。
+比 AudioTrack 级别更高的客户端 API,可播放通过采样得到的音频片段,适用于触发界面反馈、游戏音效等。该 API 在 <a href="http://developer.android.com/reference/android/media/SoundPool.html">android.media.SoundPool</a> 中定义。
</dd>
<dt>Stagefright</dt>
@@ -570,8 +568,7 @@ AudioFlinger 中的模块,负责同步线程之间的状态。NBAIO 用于传
<dt>音频流类型</dt>
<dd>
-表示音频输出使用情形的枚举。音频政策的实现用例会根据音频流类型以及其他参数来确定音量和路由决策。要查看音频流类型的列表,请参阅
-<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a>。
+表示音频输出使用情形的枚举。音频政策的实现用例会根据音频流类型以及其他参数来确定音量和路由决策。要查看音频流类型的列表,请参阅 <a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a>。
</dd>
<dt>tee sink</dt>
@@ -601,8 +598,7 @@ ALSA 内核之上采用 BSD 许可的小型用户模式 API。建议用于实现
<dt>音量指数</dt>
<dd>
-表示某个音频流的目标相对音量的整数(没有单位)。
-<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a> 的音量相关 API 在运行时采用音量指数(而非绝对的衰减因数)。
+表示某个音频流的目标相对音量的整数(没有单位)。<a href="http://developer.android.com/reference/android/media/AudioManager.html">android.media.AudioManager</a> 的音量相关 API 在运行时采用音量指数(而非绝对的衰减因数)。
</dd>
</dl>
diff --git a/zh-cn/devices/automotive/audio/index.html b/zh-cn/devices/automotive/audio/index.html
index f362db27..e70dfbb8 100644
--- a/zh-cn/devices/automotive/audio/index.html
+++ b/zh-cn/devices/automotive/audio/index.html
@@ -56,8 +56,8 @@ Android 负责来自 Android 应用的声音,同时控制这些应用,并根
</p>
<ul>
- <li><strong>逻辑</strong>声音流:在核心音频命名法中称为声源,<em></em>使用<a href="/devices/audio/attributes">音频属性</a>进行标记。</li>
- <li><strong>物理</strong>声音流:在核心音频命名法中称为设备,<em></em>在混音后没有上下文信息。</li>
+ <li><strong>逻辑</strong>声音流:在核心音频命名法中称为声源,使用<a href="/devices/audio/attributes">音频属性</a>进行标记。<em></em></li>
+ <li><strong>物理</strong>声音流:在核心音频命名法中称为设备,在混音后没有上下文信息。<em></em></li>
</ul>
<p>
@@ -71,7 +71,7 @@ HAL 实现和外部混音器负责确保对保障安全至关重要的外部声
<h3 id="android-sounds">Android 声音</h3>
<p>
-应用可以有一个或多个通过标准 Android API(如用于控制焦点的 <a href="https://developer.android.com/reference/android/media/AudioManager.html" class="external">AudioManager</a> 或用于流式播放的 <a href="https://developer.android.com/reference/android/media/MediaPlayer.html" class="external">MediaPlayer</a>)交互的播放器,以便发出一个或多个音频数据逻辑流。这些数据可能是单声道声音,也可能是 7.1 环绕声,但都会作为单个声源进行路由和处理。应用声音流与 <a href="/devices/audio/attributes">AudioAttributes</a>(可向系统提供有关如何表达音频的提示)相关联。
+应用可以有一个或多个通过标准 Android API(如用于控制焦点的 <a href="https://developer.android.com/reference/android/media/AudioManager.html" class="external">AudioManager</a> 或用于流式播放的 <a href="https://developer.android.com/reference/android/media/MediaPlayer.html" class="external">MediaPlayer</a>)交互的播放器,以便发出一个或多个音频数据逻辑音源。这些数据可能是单声道声音,也可能是 7.1 环绕声,但都会作为单个声源进行路由和处理。应用声音流与 <a href="/devices/audio/attributes">AudioAttributes</a>(可向系统提供有关如何表达音频的提示)相关联。
</p>
<p>
diff --git a/zh-cn/devices/bootloader/flashing-updating.html b/zh-cn/devices/bootloader/flashing-updating.html
index 61aa0493..b6e5d47a 100644
--- a/zh-cn/devices/bootloader/flashing-updating.html
+++ b/zh-cn/devices/bootloader/flashing-updating.html
@@ -71,9 +71,7 @@
<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 895768dd..f18b3404 100644
--- a/zh-cn/devices/bootloader/partitions-images.html
+++ b/zh-cn/devices/bootloader/partitions-images.html
@@ -22,21 +22,21 @@
<h2 id="partitions">分区</h2>
<p>
-Android 设备包含若干个分区,这些分区在启动过程中发挥不同的作用。为了支持 <a href="/devices/tech/ota/ab/">A/B 更新</a>,设备的 <code>boot</code>、<code>system</code>、<code>vendor</code> 和 <code>radio</code> 分区各自需要一个槽位。
+Android 设备包含若干个分区,这些分区在启动过程中发挥不同的作用。为了支持 <a href="/devices/tech/ota/ab/">A/B 更新</a>,设备需要为 <code>boot</code>、<code>system</code>、<code>vendor</code> 和 <code>radio</code> 中的每个分区单独配置一个槽位。
</p>
<ul>
<li><strong>boot</strong>:<code>boot</code> 分区包含通过 <code>mkbootimg</code> 组合在一起的内核映像和 RAM 磁盘。为了直接刷写内核而不刷写新的 boot 分区,可以使用虚拟分区:<ul>
- <li><strong>kernel</strong>:<code>kernel</code> 虚拟分区会将新映像写入旧磁盘,以便仅覆盖内核(zImage、zImage-dtb 和 Image.gz-dtb)。为此,它会确定 eMMC 中现有内核映像的起始位置并将新内核映像复制到该位置。请记住,新内核映像可能会大于现有内核映像。引导加载程序可以通过移动其后的任何数据来腾出空间或放弃出错的操作。如果提供的开发内核不兼容,则可能需要使用相关的内核模块更新 dtb 分区(如果存在)、vendor 分区或 system 分区。
- </li><li><strong>ramdisk</strong>:<code>ramdisk</code> 虚拟分区会将新映像写入旧磁盘,以便仅覆盖 RAM 磁盘。为此,它会确定 eMMC 中现有 <code>ramdisk.img</code> 的起始位置并将新 RAM 磁盘映像复制到该位置。请记住,新 RAM 磁盘映像可能会大于现有 RAM 磁盘映像。引导加载程序可以通过移动其后的任何数据来腾出空间或放弃出错的操作。</li></ul>
+ <li><strong>kernel</strong>:<code>kernel</code> 虚拟分区会写入新映像来覆盖旧映像,且仅覆盖内核(zImage、zImage-dtb 和 Image.gz-dtb)。为此,它会确定 eMMC 中现有内核映像的起始位置并将新内核映像复制到该位置。请记住,新内核映像可能会大于现有内核映像。引导加载程序可以通过移动其后的任何数据来腾出空间或放弃出错的操作。如果提供的开发内核不兼容,则可能需要使用相关的内核模块更新 dtb 分区(如果存在)、vendor 分区或 system 分区。
+ </li><li><strong>ramdisk</strong>:<code>ramdisk</code> 虚拟分区会写入新映像来覆盖旧映像,且仅覆盖 RAM 磁盘。为此,它会确定 eMMC 中现有 <code>ramdisk.img</code> 的起始位置并将新 RAM 磁盘映像复制到该位置。请记住,新 RAM 磁盘映像可能会大于现有 RAM 磁盘映像。引导加载程序可以通过移动其后的任何数据来腾出空间或放弃出错的操作。</li></ul>
</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>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>userdata</strong>:<code>userdata</code> 分区包含用户安装的应用和数据,包括自定义数据。
-</li><li><strong>metadata</strong>:当设备已加密且存储空间为 16MB 或更大时,便会使用 <code>metadata</code> 分区。
+</li><li><strong>metadata</strong>:如果设备被加密,则需要使用 <code>metadata</code> 分区,该分区的存储空间不能小于 16MB。
</li><li><strong>vendor</strong>:<code>vendor</code> 分区包含所有不可分发给 Android 开源项目 (AOSP) 的二进制文件。如果没有专有信息,则可以省略此分区。
</li><li><strong>radio</strong>:<code>radio</code> 分区包含无线装置映像。只有包含无线装置且在专用分区中包含无线装置专用软件的设备才需要此分区。
-</li><li><strong>tos</strong>:<code>tos</code> 分区会存储 Trusty 操作系统的二进制映像,且仅在设备包含 Trusty 时使用。</li>
+</li><li><strong>tos</strong>:<code>tos</code> 分区用于存储 Trusty 操作系统的二进制映像文件,仅在设备包含 Trusty 时使用。</li>
</ul>
<h2 id="flow">流程</h2>
<p>
@@ -68,16 +68,13 @@ RAM 磁盘应包含适合作为 rootfs 装载的根文件系统。RAM 磁盘映
<p>
启动映像应包含通过未经修改的 <code>mkbootimg</code> 组合在一起的内核和 RAM 磁盘。
</p>
-<p>
-您可以在以下位置找到 <code>mkbootimg</code> 实现:<code><a href="https://android.googlesource.com/platform/system/core/+/master/mkbootimg">system/core/mkbootimg</a></code>
+<p>您可以在以下位置找到 <code>mkbootimg</code> 实现:<code><a href="https://android.googlesource.com/platform/system/core/+/master/mkbootimg">system/core/mkbootimg</a></code>
</p>
-<p>
-引导加载程序会读取由 mkbootimg 生成的 <code><a href="https://android.googlesource.com/platform/system/core/+/master/mkbootimg/bootimg.h">bootimg.h</a></code> 标头文件,并更新内核标头,使其包含正在被刷写的 RAM 磁盘的正确位置和大小、内核基址、命令行参数等。然后,引导加载程序会将启动映像中指定的命令行附加到引导加载程序生成的命令行的末尾。
+<p>引导加载程序会读取由 mkbootimg 生成的 <code><a href="https://android.googlesource.com/platform/system/core/+/master/mkbootimg/bootimg.h">bootimg.h</a></code> 标头文件,并更新内核标头,使其包含被刷写的 RAM 磁盘的正确位置和大小、内核基址、命令行参数以及其他内容。然后,引导加载程序会将启动映像中指定的命令行附加到引导加载程序生成的命令行的末尾。
</p><h3 id="file-system-images-system-userdata-recovery">文件系统映像(系统、用户数据和恢复映像)</h3>
<h4 id="sparse-image-format">YAFFS2 映像格式</h4>
-<p>
-如果使用原始 NAND 存储空间,则这些映像必须是由未经修改的 mkyaffs2image 生成的 YAFFS2(相关 Android 开源项目 (AOSP) 源代码位于以下位置:<a href="https://android.googlesource.com/platform/external/yaffs2/+/master/yaffs2/utils/" class="external"><code>external/yaffs2/yaffs2/utils</code></a>)。它们采用以下格式:
+<p>如果使用原始 NAND 存储空间,则这些映像必须是由未经修改的 mkyaffs2image 生成的 YAFFS2(可以在 Android 开源项目 (AOSP) 的 <a href="https://android.googlesource.com/platform/external/yaffs2/+/master/yaffs2/utils/" class="external"><code>external/yaffs2/yaffs2/utils</code></a> 中找到)。它们采用以下格式:
</p><pre>
<code>
| 2k bytes of data| yaffs extra data | padding | | 0 2048 | 0 64 | variable|
@@ -88,7 +85,7 @@ RAM 磁盘应包含适合作为 rootfs 装载的根文件系统。RAM 磁盘映
</p>
<h4 id="sparse-image-format">稀疏映像格式</h4>
<p>
-稀疏映像格式应受支持。“ext4 压缩映像”文档和 <code><a href="https://android.googlesource.com/platform/system/core/+/master/libsparse/sparse_format.h">system/core/libsparse/sparse_format.h</a></code> 对这种格式进行了说明,该格式的实现位置为:<code><a href="https://android.googlesource.com/platform/system/core/+/master/libsparse/sparse_read.cpp">system/core/libsparse/sparse_read.cpp</a></code>。
+应支持稀疏映像格式。“ext4 压缩映像”文档以及 <code><a href="https://android.googlesource.com/platform/system/core/+/master/libsparse/sparse_format.h">system/core/libsparse/sparse_format.h</a></code> 中都对这种格式进行了说明,该格式的实现位置为:<code><a href="https://android.googlesource.com/platform/system/core/+/master/libsparse/sparse_read.cpp">system/core/libsparse/sparse_read.cpp</a></code>。
</p>
<p>
如果使用基于块的存储设备,则应支持 ext4 或 f2fs。要快速传输并刷写大型空 ext4 文件系统 (userdata),应以稀疏格式存储映像,映像中包含有关文件系统的哪些区域可以保留不写的信息。文件格式由 <code>mke2fs</code> 实用程序编写,该实用程序还用于创建文件格式由引导加载程序读取和刷写的映像。有关属性,请参见下面几部分:
diff --git a/zh-cn/devices/bootloader/product-partitions.html b/zh-cn/devices/bootloader/product-partitions.html
index 09063df9..4f51f156 100644
--- a/zh-cn/devices/bootloader/product-partitions.html
+++ b/zh-cn/devices/bootloader/product-partitions.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>构建 product 分区</title>
+ <title>编译 product 分区</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -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>
@@ -100,7 +100,7 @@
<ul>
<li><strong>将模块安装到特定目标分区中</strong>。
<code>custom_images</code> 支持将软件工件复制到映像中,但无法将模块安装到特定分区中(通过将其目标分区指定为编译规则的一部分)。</li>
- <li><strong>Soong 支持</strong>。无法使用 Soong 编译系统构建 <code>custom_images</code>。</li>
+ <li><strong>Soong 支持</strong>。无法使用 Soong 编译系统编译 <code>custom_images</code>。</li>
<li>OTA 更新支持。<code>custom_images</code> 用作出厂 ROM 映像,无法执行 OTA 更新。</li>
</ul>
@@ -110,7 +110,7 @@
Android 9 中的 <code>/product</code> 分区是 <code>/system</code> 分区的扩展。由于 <code>/product</code> 和 <code>/system</code> 分区之间的 ABI 稳定性较弱,因此必须同时升级这两者,而且 ABI 应基于系统 SDK。如果系统 SDK 不涵盖 <code>/product</code> 和 <code>/system</code> 之间的所有 API 表面,则 OEM 负责在这两个分区之间维护自己的 ABI。
</p>
-<p><code>/product</code> 分区和 <code>/system</code> 分区可以相互依赖。不过,在没有 <code>/product</code> 分区的情况下,对<a href="/setup/build/gsi">常规系统映像 (GSI) </a>的测试必须能够正常运行。
+<p><code>/product</code> 分区和 <code>/system</code> 分区可以相互依赖。但是,在没有 <code>/product</code> 分区的情况下,对<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 的测试必须能够正常运行。
</p>
<p><code>/product</code> 分区不能对 <code>/vendor</code> 分区有任何依赖,而且 <code>/product</code> 分区和 <code>/vendor</code> 分区之间不允许有任何直接交互(由 SEpolicy 强制执行)。
@@ -119,7 +119,7 @@ Android 9 中的 <code>/product</code> 分区是 <code>/system</code> 分区的
<h2 id="implementing-product-partitions">实现 product 分区</h2>
<p>
-实现新 product 分区之前,请查阅 <a href="https://android-review.googlesource.com/q/topic:product_partition+(status:open+OR+status:merged)" class="external">AOSP 中的相关 product 分区变化</a>。然后,为了设置 <code>/product</code>,请添加以下板或产品编译标记:
+在实现新 product 分区之前,请查阅 <a href="https://android-review.googlesource.com/q/topic:product_partition+(status:open+OR+status:merged)" class="external">AOSP 中的相关 product 分区变化</a>。然后,为了设置 <code>/product</code>,请添加以下开发板或产品编译标记:
</p>
<ul>
@@ -133,7 +133,7 @@ Android 9 中的 <code>/product</code> 分区是 <code>/system</code> 分区的
<h3 id="enabling-verified-boot">启用验证启动</h3>
<p>
-为了防止 <code>/product</code> 分区被恶意软件篡改,您应该为该分区启用 <a href="https://android.googlesource.com/platform/external/avb/" class="external">Android 验证启动 (AVB)</a>(就像为 <code>/vendor</code> 和 <code>/system</code> 分区启用一样)。要启用 AVB,请添加以下编译标记:<code>BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS</code>
+为防止 <code>/product</code> 分区被恶意软件篡改,您应该为该分区启用 <a href="https://android.googlesource.com/platform/external/avb/" class="external">Android 验证启动 (AVB)</a>(就像为 <code>/vendor</code> 和 <code>/system</code> 分区启用一样)。要启用 AVB,请添加以下编译标记:<code>BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS</code>
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/bootloader/system-as-root.html b/zh-cn/devices/bootloader/system-as-root.html
index 6729e1da..ad9180b6 100644
--- a/zh-cn/devices/bootloader/system-as-root.html
+++ b/zh-cn/devices/bootloader/system-as-root.html
@@ -33,7 +33,7 @@
<li>在非 A/B 分区架构中,<code>/boot</code> 分区中的 <code>ramdisk.img</code> 会被加载到内存中(反过来再作为 rootfs 进行装载),而 <code>system</code> 分区则在 <code>/system</code> 中装载。</li>
</ul>
- <p>在 Android 8.0 中进行的架构更改(在 <a href="/devices/architecture/#hidl">Project Treble</a> 项目中)支持系统专用 OTA(其中 <code>system.img</code> 可在不更改其他分区的情况下跨主要 Android 版本进行更新)。不过,对于非 A/B 设备来说,由于 <code>ramdisk.img</code> 位于 <code>/boot</code> 分区中,因此它无法使用 Android 8.x 架构通过系统专用 OTA 进行更新。这样一来,旧的 <code>ramdisk.img</code> 可能不适用于新的 <code>system.img</code>,具体原因如下:</p>
+ <p>在 Android 8.0 中进行的架构更改(在<a href="/devices/architecture/#hidl">项目 Treble</a> 中)支持系统专用 OTA。在系统专用 OTA 中,可以在不更改其他分区的情况下跨主要 Android 版本更新 <code>system.img</code>。不过,对于非 A/B 设备来说,由于 <code>ramdisk.img</code> 位于 <code>/boot</code> 分区中,因此它无法使用 Android 8.x 架构通过系统专用 OTA 进行更新。这样一来,旧的 <code>ramdisk.img</code> 可能不适用于新的 <code>system.img</code>,具体原因如下:</p>
<ul>
<li><code>ramdisk.img</code> 中较旧的 <code>/init</code> 可能无法解析 <code>/system</code> 上的 *.rc 文件。</li>
@@ -94,7 +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">Android 9 之前</a>的设备中那样)。</p>
+ <p>不同于将 <code>/boot</code> 改为 <a href="/devices/tech/ota/ab_implement#recovery">recovery</a> 分区的 A/B 设备,<strong>非 A/B 设备由于没有后备插槽分区</strong>(例如,从 <code>boot_a</code> 到 <code>boot_b</code>),必须保留单独的 <code>/recovery</code> 分区。如果在非 A/B 设备上移除 <code>/recovery</code> 并使其与 A/B 架构类似,那么在 <code>/boot</code> 分区更新失败时,恢复模式可能会遭到破坏。因此,在非 A/B 设备上,<strong>必须</strong>将 <code>/recovery</code> 分区与 <code>/boot</code> 分区分开,这意味着将继续延迟更新恢复映像(即和 <a href="/devices/tech/ota/nonab/#life-ota-update">Android 9 之前</a>的设备一样)。</p>
<p>非 A/B 设备在使用 Android 9 前后的分区布局差异:</p>
@@ -207,12 +207,12 @@ system.img
<ol>
<li>对于 <a href="/security/verifiedboot/">vboot 1.0</a>,内核必须在 <code>/system</code> 上解析 Android 专用<a href="/security/verifiedboot/dm-verity#metadata">元数据</a>,然后转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>以设置 dm-verity。需要这些<a href="/devices/tech/ota/ab_implement#kernel">内核补丁程序</a>。</li>
- <li>对于 vboot 2.0 (<a href="https://android.googlesource.com/platform/external/avb/" class="external">AVB</a>),引导加载程序必须先整合 <a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/" class="external">external/avb/libavb</a>,external/avb/libavb 随后会解析 <code>/system</code> 的<a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/avb_hashtree_descriptor.h" class="external">哈希树描述符</a>),然后将其转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>,最后再通过内核命令行将这些参数传递给内核(<code>/system</code> 的哈希树描述符可能位于 <code>/vbmeta</code> 或 <code>/system</code> 本身上)。<br />
+ <li>对于 vboot 2.0 (<a href="https://android.googlesource.com/platform/external/avb/" class="external">AVB</a>),引导加载程序必须先整合 <a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/" class="external">external/avb/libavb</a>,然后 external/avb/libavb 会解析 <code>/system</code> 的<a href="https://android.googlesource.com/platform/external/avb/+/master/libavb/avb_hashtree_descriptor.h" class="external">哈希树描述符</a>,再将解析结果转换为 <a href="https://www.kernel.org/doc/Documentation/device-mapper/verity.txt" class="external">dm-verity 参数</a>,最后通过内核命令行将这些参数传递给内核。(<code>/system</code> 的哈希树描述符可能位于 <code>/vbmeta</code> 或 <code>/system</code> 本身上)。<br />
<br />需要下列内核补丁程序:<ul>
<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 等)/* 上找到上述 AVB 专用内核补丁程序文件。
</aside>
</li>
</ul>
@@ -246,8 +246,8 @@ PARTUUID=00000016-0000-0000-0000-000000000000 fec_roots 2 fec_blocks
<h2 id="device-specific-folders">特定于设备的根文件夹</h2>
-<p>借助 system-as-root,在设备上刷写<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 之后(以及在运行<a href="/compatibility/vts/">供应商测试套件</a>测试之前),任何通过 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 添加的特定于设备的根文件夹都将消失,因为整个根目录内容已被 system-as-root GSI 取而代之。如果存在对特定于设备的根文件夹的依赖性(例如此类文件夹用作装载点),则移除这些文件夹可能会导致设备无法启动。</p>
+<p>使用 system-as-root 时,在设备上刷写<a href="/setup/build/gsi">常规系统映像 (GSI)</a> 之后(以及在运行<a href="/compatibility/vts/">供应商测试套件</a>测试之前),任何通过 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 添加的特定于设备的根文件夹都会消失,因为整个根目录内容已被 system-as-root GSI 取而代之。如果对特定于设备的根文件夹有依赖性(例如将此类文件夹用作装载点),则移除这些文件夹可能会导致设备无法启动。</p>
- <p>要避免出现此问题,请不要使用 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 来添加特定于设备的根文件夹(此类文件夹将来可能会被弃用)。如果您需要指定特定于设备的装载点,请使用 <code>/mnt/vendor/&lt;mount point&gt;</code>(已在这些<a href="https://android-review.googlesource.com/q/topic:vmount" class="external">更改列表</a>中添加)。这些特定于供应商的装载点可在 <code>fstab</code> 设备树(适用于第一阶段的装载)和 <code>/vendor/etc/fstab.{ro.hardware}</code> 文件中直接指定,而无需进行额外设置(因为 <code>fs_mgr</code> 将在 <code>/mnt/vendor/*</code> 下自动创建它们)。</p>
+ <p>要避免出现此问题,请不要使用 <code>BOARD_ROOT_EXTRA_FOLDERS</code> 来添加特定于设备的根文件夹(此类文件夹将来可能会被弃用)。如果需要指定特定于设备的装载点,请使用 <code>/mnt/vendor/&lt;mount point&gt;</code>(已添加到这些<a href="https://android-review.googlesource.com/q/topic:vmount" class="external">更改列表</a>中)。这些特定于供应商的装载点可在 <code>fstab</code> 设备树(适用于第一阶段的装载)和 <code>/vendor/etc/fstab.{ro.hardware}</code> 文件中直接指定,而无需进行额外设置(因为 <code>fs_mgr</code> 将在 <code>/mnt/vendor/*</code> 下自动创建它们)。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/bootloader/unlock-trusty.html b/zh-cn/devices/bootloader/unlock-trusty.html
index eb2d0689..af02af43 100644
--- a/zh-cn/devices/bootloader/unlock-trusty.html
+++ b/zh-cn/devices/bootloader/unlock-trusty.html
@@ -27,7 +27,7 @@
flashing unlock</code> 设置此解锁模式,设置后,此模式在系统重新启动后应保留。
</p>
<p>
-除非<code> fastboot flashing get_unlock_ability </code>为“1”,否则设备应拒绝 <code>fastboot flashing unlock</code> 命令。如果 <code>get_unlock_ability</code> 为“0”,则用户需要启动进入主屏幕,依次转到<em></em>“设置”&gt;“系统”&gt; <a href="https://developer.android.com/studio/debug/dev-options.html">开发者选项</a>菜单并启用 <strong>OEM 解锁</strong>选项,将 <code>unlock_ability</code> 设置为“1”。该标记在重新启动后以及恢复出厂设置后应保持不变。
+除非<code> fastboot flashing get_unlock_ability </code>为“1”,否则设备应拒绝 <code>fastboot flashing unlock</code> 命令。如果 <code>get_unlock_ability</code> 为“0”,则用户需要启动进入主屏幕,然后依次转到<em></em>“设置”&gt;“系统”&gt; <a href="https://developer.android.com/studio/debug/dev-options.html">开发者选项</a>菜单,并启用 <strong>OEM 解锁</strong>选项以将 <code>unlock_ability</code> 设置为“1”。该标记在重新启动后以及恢复出厂设置后应保持不变。
</p>
<p>
发送 <code>fastboot flashing unlock</code> 命令后,设备应提示用户,警告他们非官方映像可能会有问题。确认后,应恢复出厂设置,以防止未经授权的数据访问。即使引导加载程序无法正确重新格式化设备,也应将设备恢复出厂设置。只有在恢复出厂设置后,才能设置持久性标记,以便重新刷写设备。
diff --git a/zh-cn/devices/camera/external-usb-cameras.html b/zh-cn/devices/camera/external-usb-cameras.html
index ca46ac55..80074398 100644
--- a/zh-cn/devices/camera/external-usb-cameras.html
+++ b/zh-cn/devices/camera/external-usb-cameras.html
@@ -23,7 +23,7 @@
<h1 id="external_usb_cameras" class="page-title">外接 USB 摄像头</h1>
-<p>Android 平台支持使用即插即用的 USB 摄像头(例如网络摄像头),但前提是这些摄像头采用标准的 <a href="https://developer.android.com/reference/android/hardware/camera2/package-summary.html">Android Camera2 API</a> 和摄像头 <a href="/reference/hidl/android/hardware/camera/provider/2.4/ICameraProvider">HIDL</a> 接口。网络摄像头通常支持 <a href="https://en.wikipedia.org/wiki/USB_video_device_class">USB 视频类 (UVC)</a> 驱动程序,并且在 Linux 上,系统采用标准的 <a href="https://en.wikipedia.org/wiki/Video4Linux">Video4Linux (V4L)</a> 驱动程序控制 UVC 摄像头。</p>
+<p>Android 平台支持使用即插即用的 USB 摄像头(例如网络摄像头),但前提是这些摄像头采用标准的 <a href="https://developer.android.com/reference/android/hardware/camera2/package-summary.html" class="external">Android Camera2 API</a> 和摄像头 <a href="/reference/hidl/android/hardware/camera/provider/2.4/ICameraProvider" class="external">HIDL</a> 接口。网络摄像头通常支持 <a href="https://en.wikipedia.org/wiki/USB_video_device_class" class="external">USB 视频类 (UVC)</a> 驱动程序,并且在 Linux 上,系统采用标准的 <a href="https://en.wikipedia.org/wiki/Video4Linux" class="external">Video4Linux (V4L)</a> 驱动程序控制 UVC 摄像头。</p>
<p>如果系统支持网络摄像头,设备便可用于视频聊天和照片冲印机等轻量级用例。此功能并不是为了替代 Android 手机上典型的内部摄像头 HAL,也不是为了协助执行涉及高分辨率和高速流式传输、AR 以及手动 ISP/传感器/智能镜头控制的性能密集型复杂任务。</p>
@@ -31,16 +31,16 @@
<h2 id="examples_and_sources">示例和源代码</h2>
-<p>要详细了解如何实现 USB 摄像头,请参阅 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/provider/2.4/default/"><code>ExternalCameraProvider</code></a> 中的外接摄像头提供程序参考实现。外接摄像头设备和会话实现包含在 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/"><code>ExternalCameraDevice</code></a> 和 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/"><code>ExternalCameraDeviceSession</code></a> 中。Java 客户端 API 包含一个新的 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata?authuser=3#INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL"><code>EXTERNAL</code></a> 硬件级别。</p>
+<p>要详细了解如何实现 USB 摄像头,请参阅 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/provider/2.4/default/CameraProvider.cpp" class="external"><code>ExternalCameraProvider</code></a> 中的外接摄像头提供程序参考实现。外接摄像头设备和会话实现包含在 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/3.4/default/ExternalCameraDevice.cpp" class="external"><code>ExternalCameraDevice</code></a> 和 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/3.4/default/ExternalCameraDeviceSession.cpp" class="external"><code>ExternalCameraDeviceSession</code></a> 中。Java 客户端 API 包含一个新的 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata?authuser=3#INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL" class="external"><code>EXTERNAL</code></a> 硬件级别。</p>
<h2 id="implementation">实现</h2>
-<p>实现必须支持 <a href="https://developer.android.com/guide/topics/connectivity/usb/host"><code>android.hardware.usb.host</code></a> 系统功能。</p>
+<p>实现必须支持 <a href="https://developer.android.com/guide/topics/connectivity/usb/host" class="external"><code>android.hardware.usb.host</code></a> 系统功能。</p>
<p>此外,还必须启用对 UVC 设备的内核支持。您可以通过将以下内容添加到相应的内核 <code>deconfig</code> 文件来启用该支持。</p>
<pre class="prettyprint"><code>+CONFIG_USB_VIDEO_CLASS=y
+CONFIG_MEDIA_USB_SUPPORT=y
-</code></pre><aside class="note"><strong>注意</strong>:<span>请确保您还针对 uvcvideo 安装了这个<a href="https://patchwork.kernel.org/patch/6874491/">补丁程序</a>。</span></aside>
+</code></pre><aside class="note"><strong>注意</strong>:<span>请确保您还针对 uvcvideo 安装了这个<a href="https://patchwork.kernel.org/patch/6874491/" class="external">补丁程序</a>。</span></aside>
<p>要在相应的设备细分版本中启用外接摄像头提供程序,以便添加必要的 SELinux 权限、外接摄像头配置以及外接摄像头提供程序依赖项,请完成以下步骤:</p>
<ul>
@@ -120,7 +120,7 @@
<p>除了这些参数之外,您还可以添加自己的参数或开发自己的配置。</p>
-<h3 id="device_specific_optimizations">设备专用的优化</h3>
+<h3 id="device-specific_optimizations">设备专用的优化</h3>
<p>您还可以通过添加设备专用的优化来提升性能。</p>
@@ -142,6 +142,6 @@
<h2 id="validation">验证</h2>
<p>支持外接摄像头的设备必须通过摄像头 CTS 测试。在整个测试运行期间,外接 USB 网络摄像头必须始终插入到特定设备,否则某些测试用例会失败。</p>
-<aside class="note"><strong>注意</strong>:<span><code>media_profiles</code> 条目不适用于外接 USB 网络摄像头,因此没有 <a href="https://developer.android.com/reference/android/media/CamcorderProfile">camcorder 配置文件</a>。</span></aside>
+<aside class="note"><strong>注意</strong>:<span><code>media_profiles</code> 条目不适用于外接 USB 网络摄像头,因此没有 <a href="https://developer.android.com/reference/android/media/CamcorderProfile" class="external">camcorder 配置文件</a>。</span></aside>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/camera/motion-tracking.html b/zh-cn/devices/camera/motion-tracking.html
index 74021029..503617bf 100644
--- a/zh-cn/devices/camera/motion-tracking.html
+++ b/zh-cn/devices/camera/motion-tracking.html
@@ -24,27 +24,27 @@
<h1 id="motion_tracking" class="page-title">运动跟踪</h1>
-<p>在 Android 9 中,摄像头设备可以支持<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING">运动跟踪功能</a>。支持此功能的摄像头本身不会生成运动跟踪数据,而是供 ARCore 或图像稳定算法以及其他传感器用于进行场景分析。要支持此功能,设备必须支持 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#CONTROL_CAPTURE_INTENT_MOTION_TRACKING"><code>CONTROL_CAPTURE_INTENT_MOTION_TRACKING</code></a>。如果该 intent 是捕获请求的一部分,则摄像头必须将曝光时间限制为不超过 20 毫秒,以减少运动模糊。</p>
+<p>在 Android 9 中,摄像头设备可以支持<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING" class="external">运动跟踪功能</a>。支持此功能的摄像头本身不会生成运动跟踪数据,而是供 ARCore 或图像稳定算法以及其他传感器用于进行场景分析。要支持此功能,设备必须支持 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#CONTROL_CAPTURE_INTENT_MOTION_TRACKING" class="external"><code>CONTROL_CAPTURE_INTENT_MOTION_TRACKING</code></a>。如果该 intent 是捕获请求的一部分,则摄像头必须将曝光时间限制为不超过 20 毫秒,以减少运动模糊。</p>
<h2 id="examples_and_source">示例和源代码</h2>
-<p>HAL 端的参考运动跟踪实现是<a href="https://android.googlesource.com/platform/hardware/qcom/camera/+/master/msm8998/QCamera2/HAL3/QCamera3HWI.cpp">摄像头 HAL</a> 的一部分。</p>
+<p>HAL 端的参考运动跟踪实现是<a href="https://android.googlesource.com/platform/hardware/qcom/camera/+/master/msm8998/QCamera2/HAL3/QCamera3HWI.cpp" class="external">摄像头 HAL</a> 的一部分。</p>
<h2 id="implementation">实现</h2>
<p>要在摄像头设备上启用运动跟踪功能,请确保:</p>
<ul>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/"><code>ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING</code></a> 功能处于启用状态。</li>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/"><code>ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING</code></a> intent 受支持,并且当该 intent 包含在捕获请求中时,将摄像头曝光时间限制为不超过 20 毫秒。</li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#231" class="external"><code>ANDROID_REQUEST_AVAILABLE_CAPABILITIES_MOTION_TRACKING</code></a> 功能处于启用状态。</li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#207" class="external"><code>ANDROID_CONTROL_CAPTURE_INTENT_MOTION_TRACKING</code></a> intent 受支持,并且当该 intent 包含在捕获请求中时,将摄像头曝光时间限制为不超过 20 毫秒。</li>
<li><p>在静态信息和动态元数据字段中准确报告以下列表中的镜头校准数据:</p>
<ul>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#747"><code>ANDROID_LENS_POSE_ROTATION</code></a></li>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#753"><code>ANDROID_LENS_POSE_TRANSLATION</code></a></li>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#773"><code>ANDROID_LENS_INTRINSIC_CALIBRATION</code></a></li>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#780"><code>ANDROID_LENS_RADIAL_DISTORTION</code></a></li>
-<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/"><code>ANDROID_LENS_POSE_REFERENCE</code></a></li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#747" class="external"><code>ANDROID_LENS_POSE_ROTATION</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#753" class="external"><code>ANDROID_LENS_POSE_TRANSLATION</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#773" class="external"><code>ANDROID_LENS_INTRINSIC_CALIBRATION</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#780" class="external"><code>ANDROID_LENS_RADIAL_DISTORTION</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#79" class="external"><code>ANDROID_LENS_POSE_REFERENCE</code></a> </li>
</ul></li>
</ul>
diff --git a/zh-cn/devices/camera/session-parameters.html b/zh-cn/devices/camera/session-parameters.html
index 96e8751c..6e6fbd33 100644
--- a/zh-cn/devices/camera/session-parameters.html
+++ b/zh-cn/devices/camera/session-parameters.html
@@ -27,13 +27,13 @@
<h2 id="examples_and_source">示例和来源</h2>
-<p>参考会话参数实现已经是 <a href="https://android.googlesource.com/platform/hardware/qcom/camera/+/master/msm8998/QCamera2/HAL3/QCamera3HWI.cpp">CameraHal</a> 的一部分。此 HAL 使用旧版 Hal API。实现 Camera HIDL API 的<a href="https://source.android.com/devices/architecture/hal-types">绑定式</a> CameraHal 必须使用相应的 HIDL <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/">sessionParams</a> 条目在流配置期间访问所有新的传入会话参数。</p>
+<p>参考会话参数实现已经是 <a href="https://android.googlesource.com/platform/hardware/qcom/camera/+/master/msm8998/QCamera2/HAL3/QCamera3HWI.cpp" class="external">CameraHal</a> 的一部分。此 HAL 使用旧版 Hal API。实现 Camera HIDL API 的<a href="/devices/architecture/hal-types">绑定式</a> CameraHal 必须使用相应的 HIDL <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/device/3.4/types.hal#111" class="external">sessionParams</a> 条目在流配置期间访问所有新的传入会话参数。</p>
-<p>相机客户端可以通过调用 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#getAvailableSessionKeys()"><code>getAvaiableSessionKeys()</code></a> 来查询所有受支持的会话参数的键,并最终通过 <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration#setSessionParameters(android.hardware.camera2.CaptureRequest)"><code>setSessionParameters()</code></a> 设置它们的初始值。</p>
+<p>相机客户端可以通过调用 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics#getAvailableSessionKeys()%7B:%20.external%7D"><code>getAvailableSessionKeys()</code></a> 来查询所有受支持的会话参数的键,并最终通过 <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration#setSessionParameters(android.hardware.camera2.CaptureRequest)%7B:%20.external%7D"><code>setSessionParameters()</code></a> 设置它们的初始值。</p>
<h2 id="implementation">实现</h2>
-<p>您的 CameraHal 实现必须在相应的静态相机元数据中填充 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/"><code>ANDROID_REQUEST_AVAILABLE_SESSION_KEYS</code></a>,并提供一部分 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#1016"><code>ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS</code></a>(其中包含难以按帧应用的键的列表,如果在捕获会话生命周期内修改这些键,则可能会导致意外延迟)。</p>
+<p>您的 CameraHal 实现必须在相应的静态相机元数据中填充 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.3/types.hal#99" class="external"><code>ANDROID_REQUEST_AVAILABLE_SESSION_KEYS</code></a>,并提供一部分 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/camera/metadata/3.2/types.hal#1016" class="external"><code>ANDROID_REQUEST_AVAILABLE_REQUEST_KEYS</code></a>(其中包含难以按帧应用的键的列表,如果在捕获会话生命周期内修改这些键,则可能会导致意外延迟)。</p>
<p>典型示例包括:需要耗费时间重新配置硬件或更改内部相机流水线的参数。控制会话参数仍然可以在捕获请求中发挥作用,不过,客户端应意识到并预料到其应用会出现延迟。</p>
@@ -48,10 +48,10 @@
<p>CTS 提供以下用于测试会话参数的新用例:</p>
<ul>
-<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/CameraDeviceTest.java#795"><code>CameraDeviceTest#testSessionConfiguration</code></a></li>
-<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/CameraDeviceTest.java#1038"><code>CameraDeviceTest#testCreateSessionWithParameters</code></a></li>
-<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/CameraDeviceTest.java#870"><code>CameraDeviceTest#testSessionParametersStateLeak</code></a></li>
-<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/libctscamera2jni/native-camera-jni.cpp#2140"><code>NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters</code></a></li>
+<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/CameraDeviceTest.java#795" class="external"><code>CameraDeviceTest#testSessionConfiguration</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/CameraDeviceTest.java#1038" class="external"><code>CameraDeviceTest#testCreateSessionWithParameters</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/CameraDeviceTest.java#870" class="external"><code>CameraDeviceTest#testSessionParametersStateLeak</code></a> </li>
+<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/libctscamera2jni/native-camera-jni.cpp#2140" class="external"><code>NativeCameraDeviceTest#testCameraDevicePreviewWithSessionParameters</code></a> </li>
</ul>
<p>通常,一旦某个参数成为会话键列表的一部分,其当前值就会添加到在流配置期间在 HAL 层传递的会话参数中。</p>
diff --git a/zh-cn/devices/camera/singleprod-multiconsum.html b/zh-cn/devices/camera/singleprod-multiconsum.html
index 85dce7e2..b18fd7cc 100644
--- a/zh-cn/devices/camera/singleprod-multiconsum.html
+++ b/zh-cn/devices/camera/singleprod-multiconsum.html
@@ -24,7 +24,7 @@
<h1 id="single_producer_multiple_consumer_camera_buffer_transport" class="page-title">“单个生产者-多个消费者”摄像头缓冲区传输</h1>
-<p>该功能引入了一组方法,当拍摄会话处于活动状态且摄像头流式传输正在进行时,摄像头客户端可通过该功能动态添加和移除输出 Surface。新的输出可以映射到用户选择的特定<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#enableSurfaceSharing()">共享摄像头</a>信息流。Surface 添加后,您可以随时将其移除。</p>
+<p>该功能引入了一组方法,当拍摄会话处于活动状态且摄像头流式传输正在进行时,摄像头客户端可通过该功能动态添加和移除输出 Surface。新的输出可以映射到用户选择的特定<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#enableSurfaceSharing()" class="external">共享摄像头</a>信息流。Surface 添加后,您可以随时将其移除。</p>
<p>总的想法是,在多个输出 Surface 中共享与特定摄像头信息流关联的缓冲区。当缓冲区准备好在消费者端进行进一步处理时,内部引用计数器便开始跟踪缓冲区。当所有消费者完成各自的任务后,缓冲区便会离开队列,并可供摄像头使用。</p>
@@ -36,12 +36,12 @@
<h2 id="examples_and_source">示例和源代码</h2>
-<p>可在 <a href="https://android.googlesource.com/platform/frameworks/av/+/master/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp"><code>Camera3StreamSplitter</code></a> 模块中找到该功能的核心实现,并可在面向开发者的参考资料中找到关于该功能的文档:</p>
+<p>可在 <a href="https://android.googlesource.com/platform/frameworks/av/+/master/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp" class="external"><code>Camera3StreamSplitter</code></a> 模块中找到该功能的核心实现,并可在面向开发者的参考资料中找到关于该功能的文档:</p>
<ul>
-<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.html#updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration)"><code>updateOutputConfiguration()</code></a></li>
-<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#addSurface(android.view.Surface)"><code>addSurface()</code></a></li>
-<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#removeSurface(android.view.Surface)"><code>removeSurface()</code></a></li>
+<li><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.html#updateOutputConfiguration(android.hardware.camera2.params.OutputConfiguration)" class="external"><code>updateOutputConfiguration()</code></a> </li>
+<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#addSurface(android.view.Surface)" class="external"><code>addSurface()</code></a> </li>
+<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration#removeSurface(android.view.Surface)" class="external"><code>removeSurface()</code></a> </li>
</ul>
<h2 id="implementation">实现</h2>
@@ -50,6 +50,6 @@
<h2 id="validation">验证</h2>
-<p>您的实现必须通过 <a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java">MultiViewTest</a> 模块中以及本机 API 的<a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/libctscamera2jni/native-camera-jni.cpp">本机 JNI 库</a>中涵盖该功能的 CTS 测试。</p>
+<p>您的实现必须通过 <a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/src/android/hardware/camera2/cts/MultiViewTest.java" class="external">MultiViewTest</a> 模块中以及本机 API 的<a href="https://android.googlesource.com/platform/cts/+/master/tests/camera/libctscamera2jni/native-camera-jni.cpp" class="external">本机 JNI 库</a>中涵盖该功能的 CTS 测试。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/camera/versioning.html b/zh-cn/devices/camera/versioning.html
index c37a21c6..527967b8 100644
--- a/zh-cn/devices/camera/versioning.html
+++ b/zh-cn/devices/camera/versioning.html
@@ -1,5 +1,5 @@
<html devsite><head>
- <title>相机版本支持</title>
+ <title>摄像头版本支持</title>
<meta name="project_path" value="/_project.yaml"/>
<meta name="book_path" value="/_book.yaml"/>
</head>
@@ -29,7 +29,7 @@
<dl>
<dt>Camera API1</dt>
-<dd>Android 4.4 或更低版本设备上的应用级相机框架,通过 <code>android.hardware.Camera</code> 类提供。</dd>
+<dd>Android 4.4 或更低版本设备上的应用级摄像头框架,通过 <code>android.hardware.Camera</code> 类提供。</dd>
<dt>Camera API2</dt>
<dd>Android 5.0 及更高版本设备上的应用级相机框架,通过<code> android.hardware.camera2</code> 包提供。</dd>
@@ -143,7 +143,7 @@
<p>为增强媒体和相机框架安全性而进行的架构更改包括以下附加设备要求。</p>
<ul>
-<li><strong>常规</strong>。由于 IPC,设备需要额外带宽,这可能会影响对时间敏感的相机使用情况,例如高速视频录制。供应商可以运行 <code>android.hardware.camera2.cts.PerformanceTest</code> 和 Google 相机应用,以进行 120/240 FPS 高速视频录制,从而衡量实际影响。设备还需要少量额外的 RAM 来创建新进程。</li>
+<li><strong>常规</strong>。由于 IPC,设备需要额外带宽,这可能会影响对时间敏感的相机使用情况,例如高速视频录制。供应商可以运行 <code>android.hardware.camera2.cts.PerformanceTest</code> 和 Google 摄像头应用,以进行 120/240 FPS 高速视频录制,从而衡量实际影响。设备还需要少量额外的 RAM 来创建新进程。</li>
<li><strong>在视频缓冲区中传递元数据</strong>(仅限 HAL1)。<em></em>如果 HAL1 在视频缓冲区中存储元数据而非实际的 YUV 帧数据,则 HAL 必须使用 <code>kMetadataBufferTypeNativeHandleSource</code> 作为元数据缓冲区类型,并在视频缓冲区中传递 <code>VideoNativeHandleMetadata</code>(<code>kMetadataBufferTypeCameraSource</code> 在 Android 7.0 中不再受支持)。通过 <code>VideoNativeHandleMetadata</code>,相机和媒体框架能够正确地对原生句柄进行序列化和反序列化,从而在进程之间传递视频缓冲区。</li>
<li><strong>缓冲区句柄地址并不总是存储相同的缓冲区</strong>(仅限 HAL3)。<em></em>对于每个捕获请求,HAL3 会获取缓冲区句柄的地址。HAL 不能使用地址来识别缓冲区,因为地址可能会在 HAL 返回缓冲区之后存储另一个缓冲区句柄。您必须更新 HAL,以便使用缓冲区句柄来标识缓冲区。例如:HAL 接收缓冲区句柄地址 A,该地址存储缓冲区句柄 A。在 HAL 返回缓冲区句柄 A 之后,缓冲区句柄地址 A 可能在 HAL 下次接收到它时存储缓冲区句柄 B。</li>
<li><strong>更新用于 cameraserver 的 SELinux 策略</strong>。如果设备特定的 SELinux 策略向 mediaserver 授予运行相机的权限,则您必须更新 SELinux 策略,以授予 cameraserver 正确的权限。我们建议不要为 cameraserver 复制 mediaserver 的 SELinux 策略(因为 mediaserver 和 cameraserver 通常需要系统中的不同资源)。Cameraserver 应仅具有执行相机功能所需的权限,并且 mediaserver 中任何不必要的相机相关权限均应被移除。</li>
@@ -187,22 +187,22 @@ Android 8.0 版本引入了 Treble。引入 Treble 后,供应商相机 HAL 实
<h4 id="system-api-for-custom-camera-modes">适用于自定义相机模式的系统 API</h4>
<p>
-公共相机 API 定义了两种操作模式:正常模式和受限高速录制模式。这两种模式的语义截然不同;高速模式受限于一次最多只能有两个具体输出等。各个原始设备制造商 (OEM) 已表现出极大的兴趣想要针对特定于硬件的功能定义其他自定义模式。说白了,该模式只是一个传递到 <code>configure_streams</code> 的整数。请参阅:<a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#configurestreams"><code>hardware/camera/device/3.2/ICameraDeviceSession#configurestreams</code></a>。
+公共相机 API 定义了两种操作模式:正常模式和受限高速录制模式。这两种模式的语义截然不同;高速模式受限于一次最多只能有两个具体输出等。各个原始设备制造商 (OEM) 已表现出极大的兴趣想要针对特定于硬件的功能定义其他自定义模式。说白了,该模式只是一个传递到 <code>configure_streams</code> 的整数。请参阅 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#configurestreams"><code>hardware/camera/device/3.2/ICameraDeviceSession#configurestreams</code></a>。
</p>
<p>
-此功能包括一个系统 API 调用,OEM 相机应用可以使用该调用来启用自定义模式。这些自定义模式必须以整数值 0x8000 开头,以避免与未来添加到公共 API 的模式发生冲突。
+此功能包括一个系统 API 调用,OEM 摄像头应用可以使用该调用来启用自定义模式。这些自定义模式必须以整数值 0x8000 开头,以避免与未来添加到公共 API 的模式发生冲突。
</p>
<p>
要支持这一功能,OEM 只需将新模式添加到其 HAL 即可,传递至 HAL 的这一整数会在 configure_streams 上触发该模式,然后 OEM 就可以让其自定义相机应用使用系统 API。</p>
<p>
-此方法的名称是 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.StateCallback.html#onCaptureQueueEmpty(android.hardware.camera2.CameraCaptureSession)" class="external">
+方法名称是 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCaptureSession.StateCallback.html#onCaptureQueueEmpty(android.hardware.camera2.CameraCaptureSession)" class="external">
android.hardware.camera2.CameraDevice#createCustomCaptureSession</a></code>。
请参阅:<a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/hardware/camera2/CameraDevice.java#805" class="external"><code>frameworks/base/core/java/android/hardware/camera2/CameraDevice.java#805</code></a>。</p>
-<aside class="note"><strong>注意</strong>:在 Android 8.1 版本中,应用必须预安装到系统映像上才能访问此 API。
+<aside class="note"><strong>注意</strong>:在 Android 8.1 版本中,应用必须预安装到系统映像上,才能访问此 API。
</aside>
<h4 id="oncapturequeueempty">onCaptureQueueEmpty</h4>
@@ -341,6 +341,6 @@ Android 8.0 版本引入了 Treble。引入 Treble 后,供应商相机 HAL 实
<h3 id="10">1_0</h3>
-<p>报告这些版本号的相机模块实现了初始相机模块 HAL 接口。可通过此模块打开的所有相机设备仅支持版本 1 的相机设备 HAL。<code>camera_info</code> 的 <code>device_version</code> 和 <code>static_camera_characteristics</code> 字段无效。只有 <code>android.hardware.Camera</code> API 受该模块及其设备的支持。</p>
+<p>报告这些版本号的相机模块实现了初始相机模块 HAL 接口。可通过此模块打开的所有相机设备仅支持版本 1 的相机设备 HAL。<code>camera_info</code> 的 <code>device_version</code> 和 <code>static_camera_characteristics</code> 字段无效。只有 <code>android.hardware.Camera</code> API 可以受该模块及其设备的支持。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/graphics/arch-vulkan.html b/zh-cn/devices/graphics/arch-vulkan.html
index 37b7db7f..1f795bfc 100644
--- a/zh-cn/devices/graphics/arch-vulkan.html
+++ b/zh-cn/devices/graphics/arch-vulkan.html
@@ -35,9 +35,9 @@
<p class="img-caption"><strong>图 1.</strong> Vulkan 组件</p>
<ul>
-<li><strong>Vulkan 验证层</strong><em></em>(在 Android NDK 中提供)。这是开发者在开发 Vulkan 应用期间使用的一组库。图形供应商提供的 Vulkan 运行时库和 Vulkan 驱动程序不包含使 Vulkan 运行时保持高效的运行时错误检查功能,而是使用验证库(仅在开发过程中)来查找应用在使用 Vulkan API 时出现的错误。Vulkan 验证库在开发过程中关联到应用并执行此错误检查。在找出所有 API 使用问题之后,该应用将不再需要包含这些库。</li>
-<li><strong>Vulkan 运行时</strong><em></em>(由 Android 提供)。这是一个原生库 (<code>(libvulkan.so</code>),提供称为 <a href="https://www.khronos.org/vulkan">Vulkan</a> 的新公共原生 API。大多数功能由 GPU 供应商提供的驱动程序实现;运行时会封装驱动程序、提供 API 拦截功能(针对调试和其他开发者工具)以及管理驱动程序与平台依赖项(如 BufferQueue)之间的交互。</li>
-<li><strong>Vulkan 驱动程序</strong><em></em>(由 SoC 提供)。将 Vulkan API 映射到特定于硬件的 GPU 命令以及与内核图形驱动程序的交互。</li>
+<li><strong>Vulkan 验证层</strong>(在 Android NDK 中提供)。<em></em>这是开发者在开发 Vulkan 应用期间使用的一组库。图形供应商提供的 Vulkan 运行时库和 Vulkan 驱动程序不包含使 Vulkan 运行时保持高效的运行时错误检查功能,而是使用验证库(仅在开发过程中)来查找应用在使用 Vulkan API 时出现的错误。Vulkan 验证库在开发过程中关联到应用并执行此错误检查。在找出所有 API 使用问题之后,该应用将不再需要包含这些库。</li>
+<li><strong>Vulkan 运行时</strong>(由 Android 提供)。<em></em>这是一个原生库 (<code>(libvulkan.so</code>),提供称为 <a href="https://www.khronos.org/vulkan">Vulkan</a> 的新公共原生 API。大多数功能由 GPU 供应商提供的驱动程序实现;运行时会封装驱动程序、提供 API 拦截功能(针对调试和其他开发者工具)以及管理驱动程序与平台依赖项(如 BufferQueue)之间的交互。</li>
+<li><strong>Vulkan 驱动程序</strong>(由 SoC 提供)。<em></em>将 Vulkan API 映射到特定于硬件的 GPU 命令以及与内核图形驱动程序的交互。</li>
</ul>
<h2 id="modified_components">已修改的组件</h2>
@@ -60,7 +60,7 @@
<li>
位于 <code>platform/frameworks/native/vulkan</code> 的 <a href="https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/#">Vulkan 加载程序 </a>(libvulkan.so)。包含 Android 的 Vulkan 加载程序,以及一些对平台开发者十分有用的 Vulkan 相关工具。</li>
-<li><a href="https://android.googlesource.com/platform/frameworks/native/+/master/vulkan/doc/implementors_guide/implementors_guide.html">Vulkan 实现人员指南</a>:旨在帮助 GPU IHV 编写适用于 Android 的 Vulkan 驱动程序,以及指导原始设备制造商 (OEM) 为特定设备集成这些驱动程序。该指南介绍了 Vulkan 驱动程序如何与系统进行交互、应如何安装特定于 GPU 的工具,以及特定于 Android 的要求。</li>
+<li><a href="/devices/graphics/implement-vulkan.html">Vulkan 实现人员指南</a>:旨在帮助 GPU IHV 编写适用于 Android 的 Vulkan 驱动程序,以及指导原始设备制造商 (OEM) 为特定设备集成这些驱动程序。该指南介绍了 Vulkan 驱动程序如何与系统进行交互、应如何安装特定于 GPU 的工具,以及特定于 Android 的要求。</li>
<li><a href="https://developer.android.com/ndk/guides/graphics/index.html">Vulkan Graphics API 指南</a>:介绍了如何开始在 Android 应用中使用 Vulkan、Android 平台上的 Vulkan 设计指南详情、如何使用 Vulkan 的着色程序编译器,以及如何使用验证层来帮助确保使用 Vulkan 的应用的稳定性。</li>
diff --git a/zh-cn/devices/graphics/build-tests.html b/zh-cn/devices/graphics/build-tests.html
index 936eaeca..afe7ea12 100644
--- a/zh-cn/devices/graphics/build-tests.html
+++ b/zh-cn/devices/graphics/build-tests.html
@@ -28,9 +28,9 @@
<p>CMake 是一个开放源代码编译系统,支持多种平台和工具链。CMake 从与目标无关的配置文件生成原生 Makefile 或 IDE 项目文件。要详细了解 CMake,请参阅 <a href="http://www.cmake.org/cmake/help/documentation.html">CMake</a> 文档。</p>
-<p>CMake 支持且建议在源代码树之外进行编译,也就是说,您应该始终在源代码树之外的独立编译目录中创建 Makefile 或项目文件。CMake 没有任何类型的“distclean”目标,因此,您必须手动移除 CMake 生成的任何文件。</p>
+<p>CMake 支持且建议在源代码树之外进行编译,也就是说,您应该始终在源代码树之外的独立编译目录中创建 Makefile 或项目文件。CMake 没有任何类型的“distclean”目标,因此,您必须手动移除 CMake 生成的所有文件。</p>
-<p>配置选项会通过 <code>-D<var>OPTION_NAME</var>=<var>VALUE</var></code> 语法提供给 CMake。deqp 的一些常用选项如下所示。</p>
+<p>可以使用 <code>-D<var>OPTION_NAME</var>=<var>VALUE</var></code> 语法为 CMake 提供配置选项。deqp 的一些常用选项如下所示。</p>
<table>
<tbody><tr>
@@ -46,7 +46,7 @@
</tr>
<tr>
<td><code>CMAKE_TOOLCHAIN_FILE</code></td>
-<td><p>CMake 工具链文件的路径。用于交叉编译。</p></td>
+<td><p>CMake 的工具链文件路径。用于交叉编译。</p></td>
</tr>
<tr>
<td><code>CMAKE_BUILD_TYPE</code></td>
@@ -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>
@@ -182,7 +182,7 @@ cmake path\to\src\deqp -G "Visual Studio 12 Win64"
<p>要使用提供的编译脚本编译 Android 的 deqp 测试程序,您需要:</p>
<ul>
- <li>最新版本的 <a href="http://developer.android.com/tools/sdk/ndk/index.html">Android NDK</a>;<code>android/scripts/common.py</code> 文件列有所需的版本
+ <li>最新版本的 <a href="http://developer.android.com/tools/sdk/ndk/index.html">Android NDK</a>;<code>android/scripts/common.py</code> 文件中列出了所需的版本
</li><li>Android 独立 SDK(已安装 API 13、SDK 工具、SDK 平台工具和 SDK 编译工具<a href="http://developer.android.com/sdk/index.html#Other">软件包</a>)
</li><li><a href="http://ant.apache.org/bindownload.cgi">Apache Ant 1.9.4</a>(Java 代码编译所需)
</li><li><a href="http://www.cmake.org/download/">CMake 2.8.12</a> 或更高版本
@@ -198,7 +198,7 @@ cmake path\to\src\deqp -G "Visual Studio 12 Win64"
<p>NDK 目录必须为 <code>~/android-ndk-<var>VERSION</var></code> 或 <code>C:/android/android-ndk-<var>VERSION</var></code>,或者通过 <code>ANDROID_NDK_PATH</code> 环境变量进行定义。</p>
-<p>Deqp 设备组件、测试执行服务和测试程序均通过执行 <code>android/scripts/build.py</code> 脚本进行编译。最终 .apk 在 <code>android/package/bin</code> 中创建,并可通过 <code>install.py</code> 脚本进行安装。如果使用<a href="port-tests.html#test_execution_service">命令行执行程序</a>,则可以在设备上通过 ADB 使用 <code>launch.py</code> 脚本启动 ExecService。这些脚本可以从任何目录执行。</p>
+<p>Deqp 设备组件、测试执行服务和测试程序都是通过执行 <code>android/scripts/build.py</code> 脚本进行编译的。最终 .apk 在 <code>android/package/bin</code> 中创建,并可通过 <code>install.py</code> 脚本进行安装。如果使用<a href="port-tests.html#test_execution_service">命令行执行程序</a>,则可以在设备上通过 ADB 使用 <code>launch.py</code> 脚本启动 ExecService。可以从任何目录执行这些脚本。</p>
<h2 id="linux_build">Linux 编译</h2>
diff --git a/zh-cn/devices/graphics/implement-vulkan.html b/zh-cn/devices/graphics/implement-vulkan.html
index 3b5a4766..12faddec 100644
--- a/zh-cn/devices/graphics/implement-vulkan.html
+++ b/zh-cn/devices/graphics/implement-vulkan.html
@@ -234,7 +234,7 @@ VkResult VKAPI vkQueueSignalReleaseImageANDROID(
<h2 id="validation">验证</h2>
<p>OEM 可以使用 CTS 测试其 Vulkan 实现,其中包括:</p>
<ul>
-<li><code>CtsDeqpTestCases</code> 模块中的 <a href="/devices/graphics/cts-integration.html">drawElements Quality Program (dEQP)</a> 测试,其中包括针对 Vulkan 1.0 和 1.1 的功能 API 测试。</li>
+<li><code>CtsDeqpTestCases</code> 模块中的 <a href="/devices/graphics/cts-integration.html">drawElements 质量计划 (dEQP)</a> 测试,其中包括针对 Vulkan 1.0 和 1.1 的函数式 API 测试。</li>
<li><code>CtsGraphicsTestCases</code> 模块,用于测试设备是否针对所支持的 Vulkan 功能进行了正确的配置。</li>
</ul>
diff --git a/zh-cn/devices/graphics/run-tests.html b/zh-cn/devices/graphics/run-tests.html
index 9bd0a29d..841be789 100644
--- a/zh-cn/devices/graphics/run-tests.html
+++ b/zh-cn/devices/graphics/run-tests.html
@@ -254,6 +254,6 @@ python android/scripts/debug.py \
<p class="note"><strong>注意</strong>:在 Windows 上,GDB 二进制文件需要使用 <code>libpython2.7.dll</code>。在启动 <code>debug.py</code> 前,请将 <code>&lt;path-to-ndk&gt;/prebuilt/windows/bin</code> 添加到 PATH 变量中。</p>
-<p class="note"><strong>注意</strong>:本机代码调试不适用于原生 Android 4.3。有关解决方法,请参考<a href="https://issuetracker.google.com/issues/36976703">此公开 Bug</a>。Android 4.4 及更高版本不包含此 Bug。</p>
+<p class="note"><strong>注意</strong>:本机代码调试不适用于 Android 4.3 及之前的所有版本。有关解决方法,请参考<a href="https://issuetracker.google.com/issues/36976703">此公开 Bug</a>。Android 4.4 及更高版本不包含此 Bug。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/input/validate-keymaps.html b/zh-cn/devices/input/validate-keymaps.html
index de11f093..eb8a1a56 100644
--- a/zh-cn/devices/input/validate-keymaps.html
+++ b/zh-cn/devices/input/validate-keymaps.html
@@ -65,7 +65,7 @@ Error -22 parsing key layout file.
Failed!
</pre>
<h2 id="automation">自动化</h2>
-<p><em></em>最好先在所有配置文件上运行 <code>validatekeymaps</code>,然后再将这些文件安装到设备中。</p>
+<p>最好先对所有配置文件运行 <code>validatekeymaps</code>,然后再将这些文件安装到设备中。<em></em></p>
<p>通过使用脚本或 makefile,该过程可以作为编译系统的一部分轻松地自动执行。</p>
<p>以下示例 Makefile 基于 <code>frameworks/base/data/keyboards/Android.mk</code> 的内容。</p>
<pre class="devsite-click-to-copy">
diff --git a/zh-cn/devices/media/oem.html b/zh-cn/devices/media/oem.html
index 108f13cb..07b97d90 100644
--- a/zh-cn/devices/media/oem.html
+++ b/zh-cn/devices/media/oem.html
@@ -91,7 +91,7 @@ following codecs' concurrent instances limit in /etc/media_codecs.xml:
</li></ol>
<h2 id="2_achievable_frame_rates_for_video_codecs">2. 视频编解码器可实现的帧速率</h2>
-<p><code>VideoCapabilities.getAchievableFrameRatesFor</code> 接口针对某个视频大小返回可实现的视频帧率的范围。此信息必须由 OEM 通过位于 <code>/etc/media_codecs_performance.xml</code> 的 XML 文件为每个设备提供。这些设置由 <code>com.android.cts.videoperf.VideoEncoderDecoderTest</code> 和 <code>android.media.cts.VideoDecoderPerfTest</code> CTS 测试进行测试。</p>
+<p><code>VideoCapabilities.getAchievableFrameRatesFor</code> 接口针对某个视频大小返回可实现的视频帧率的范围。此信息必须由 OEM 通过位于 <code>/etc/media_codecs_performance.xml</code> 的 XML 文件为每个设备提供。这些设置通过 <code>com.android.cts.videoperf.VideoEncoderDecoderTest</code> 和 <code>android.media.cts.VideoDecoderPerfTest</code> CTS 测试进行测试。</p>
<p>OEM 可以使用 CTS 测试来生成可通过测试的 XML 文件。具体操作步骤如下:</p>
<ol>
diff --git a/zh-cn/devices/sensors/batching.html b/zh-cn/devices/sensors/batching.html
index c9915ced..ce52693f 100644
--- a/zh-cn/devices/sensors/batching.html
+++ b/zh-cn/devices/sensors/batching.html
@@ -22,7 +22,7 @@
<h2 id="what_is_batching">什么是批处理?</h2>
<p>“批处理”是指将传感器事件存储在硬件 FIFO 中,然后通过 <a href="hal-interface.html">HAL</a> 报告它们,而非立即进行报告。</p>
-<p>批处理不会唤醒 SoC 来接收每个事件,而会将事件分组到一起进行处理,从而节省大量电量。</p>
+<p>实施批处理,系统就不会唤醒 SoC 来接收每个事件,而会将事件分组到一起进行处理,从而节省大量电量。</p>
<p>FIFO 越大,节省的电量也越多。实施批处理是一种以牺牲硬件内存来降低功耗的做法。</p>
<p>当传感器配有硬件 FIFO (<code>sensor_t.fifoMaxEventCount &gt; 0</code>) 时,便会进行批处理,并且会出现以下两种情况之一:</p>
<ul>
@@ -30,7 +30,7 @@
<li>或 SoC 处于挂起模式且该传感器为非唤醒传感器,这意味着在等待 SoC 唤醒时必须存储事件。</li>
</ul>
<p>有关详情,请参阅 <a href="hal-interface.html#batch_sensor_flags_sampling_period_maximum_report_latency">HAL 批处理函数</a>一节。</p>
-<p>与批处理相对的是轮询操作,其中事件不经过缓冲而立即被报告。轮询操作对应于以下情况:</p>
+<p>与批处理相对的是连续操作,这时,事件不会经过缓冲,而是会被立即报告。连续操作对应于以下情况:</p>
<ul>
<li>当 <code>max_report_latency = 0</code> 且可将事件传递给应用时,这意味着:
<ul>
@@ -67,7 +67,7 @@
<p>当非唤醒 FIFO 存满时,它必须环绕并像环形缓冲区一样运作,覆盖较旧的事件:即新事件替换旧事件。
在挂起模式下,<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>在这两种情况下(唤醒和非唤醒),只要 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>
<h2 id="precautions_to_take_when_batching_wake-up_sensors">批处理唤醒传感器时的注意事项</h2>
<p>根据设备不同,SoC 可能需要几毫秒才能完全退出挂起模式并开始刷新 FIFO。因此必须在 FIFO 中分配足够的头空间,才能让设备完全退出挂起状态,而不造成唤醒 FIFO 溢出。不得丢失任何事件,并且必须遵照 <code>max_report_latency</code>。</p>
@@ -75,7 +75,7 @@
<p>采用 On-change 触发方式的传感器仅在测量值发生变化时才会生成事件。如果测量值在 SoC 处于挂起模式时发生变化,则应用预计会在 SoC 唤醒时立即收到事件。因此,如果采用 On-change 触发方式的<a href="suspend-mode.html#non-wake-up_sensors">非唤醒</a>传感器与其他传感器共用 FIFO,则在执行该传感器事件的批处理时,必须小心。每个采用 On-change 触发方式的传感器所生成的最后一个事件都必须保存在共享 FIFO 之外,使其永远不会被其他事件覆盖。当 SoC 唤醒时,在报告 FIFO 中的所有事件后,还必须报告最后一个采用 On-change 触发方式的传感器事件。</p>
<p>以下是我们希望避免的情况:</p>
<ol>
- <li>应用同时注册到共用同一个 FIFO 的非唤醒计步器(采用 On-change 触发方式)和非唤醒加速度计(轮询模式)</li>
+ <li>应用同时注册到共用同一个 FIFO 的非唤醒计步器(采用 On-change 触发方式)和非唤醒加速度计(连续模式)</li>
<li>应用收到一个计步器事件“step_count = 1000 步”</li>
<li>SoC 转至挂起状态</li>
<li>用户步行 20 步,导致计步器和加速度计事件交错存储,最后的计步器事件为“step_count = 1020 步”</li>
@@ -101,12 +101,12 @@
<p>批处理此类数据,可在 SoC 处于挂起模式时执行行人航位推算。</p>
<h3 id="high_value_medium_power_intermittent_activity_gesture_recognition">高值:中等功率间歇性动作/手势识别</h3>
<p>目标批处理时间:3 秒</p>
-<p>带批处理的传感器:非唤醒加速度计(频率 50 Hz)</p>
-<p>批处理此类数据,可定期识别任意动作和手势,而无需在收集数据时保持 SoC 处于唤醒状态。</p>
+<p>待批处理的传感器:非唤醒加速度计(频率 50 Hz)</p>
+<p>批处理此类数据,可定期识别任意动作和手势,而无需在收集数据时让 SoC 保持唤醒状态。</p>
<h3 id="medium_value_medium_power_continuous_activity_gesture_recognition">中等值:中等功率连续动作/手势识别</h3>
<p>目标批处理时间:1 到 3 分钟</p>
<p>待批处理的传感器:唤醒加速度计(频率 50Hz)</p>
-<p>批处理此类数据,可持续识别任意动作和手势,而无需在收集数据时保持 SoC 处于唤醒状态。</p>
+<p>批处理此类数据,可持续识别任意动作和手势,而无需在收集数据时让 SoC 保持唤醒状态。</p>
<h3 id="medium-high_value_interrupt_load_reduction">中高值:减少中断负载</h3>
<p>目标批处理时间:小于 1 秒</p>
<p>待批处理的传感器:任意高频传感器(通常为非唤醒传感器)。</p>
diff --git a/zh-cn/devices/sensors/hal-interface.html b/zh-cn/devices/sensors/hal-interface.html
index 994c55be..b1a8e108 100644
--- a/zh-cn/devices/sensors/hal-interface.html
+++ b/zh-cn/devices/sensors/hal-interface.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中声明的 HAL 接口表示 Android <a href="sensor-stack.html#framework">框架</a>与特定于硬件的软件之间的接口。HAL 实现必须定义 sensors.h 中声明的每个函数。主要函数如下:</p>
+<p><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中声明的 HAL 接口表示 Android <a href="sensor-stack.html#framework">框架</a>与特定硬件专用软件之间的接口。HAL 实现必须定义 sensors.h 中声明的每个函数。主要函数如下:</p>
<ul>
<li><code>get_sensors_list</code> - 返回所有传感器的列表。</li>
<li><code>activate</code> - 启动或停止传感器。</li>
@@ -49,7 +49,7 @@
<pre class="prettyprint">int (*activate)(struct sensors_poll_device_t *dev, int sensor_handle, int
enabled);</pre>
<p>激活或禁用传感器。</p>
-<p><code>sensor_handle</code> 是要激活/禁用的传感器的句柄。传感器的句柄由其 <a href="#sensor_t">sensor_t</a> 结构的 <code>handle</code> 字段定义。</p>
+<p><code>sensor_handle</code> 是要激活/禁用的传感器的句柄。传感器的句柄是通过其 <a href="#sensor_t">sensor_t</a> 结构的 <code>handle</code> 字段定义的。</p>
<p><code>enabled</code> 设为 1 时启用传感器,设为 0 时则停用传感器。</p>
<p>单次传感器在接收到事件后会自动自行禁用,并且必须仍接受通过调用 <code>activate(...,
enabled=0)</code> 进行禁用。</p>
@@ -81,7 +81,7 @@ int (*batch)(
<li>单次模式:<code>sampling_period_ns</code> 会被忽略。该参数没有任何作用。</li>
<li>特殊模式:要详细了解 <code>sampling_period_ns</code> 如何用于特殊的传感器,请参阅具体的<a href="sensor-types.html">传感器类型说明</a>。</li>
</ul>
-<p>要详细了解 <code>sampling_period_ns</code> 在不同模式下造成的影响,请参阅<a href="report-modes.html">报告模式</a>。</p>
+<p>要详细了解 <code>sampling_period_ns</code> 在不同模式下的影响,请参阅<a href="report-modes.html">报告模式</a>。</p>
<p>对于连续和变化传感器:</p>
<ul>
<li>如果 <code>sampling_period_ns</code> 小于 <code>sensor_t.minDelay</code>,则 HAL 实现必须静默地将其限制到 <code>max(sensor_t.minDelay, 1ms)</code>。Android 不支持以高于 1000Hz 的频率生成事件。</li>
@@ -149,7 +149,7 @@ int (*setDelay)(
<h2 id="sensors_module_t">sensors_module_t</h2>
<p><code>sensors_module_t</code> 是用于为传感器创建 Android 硬件模块的类型。HAL 的实现必须定义一个该类型的对象 <code>HAL_MODULE_INFO_SYM</code>,以提供 <a href="#get_sensors_list_list">get_sensors_list</a> 函数。要了解详情,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 中 <code>sensors_module_t</code> 的定义以及 <code>hw_module_t</code> 的定义。</p>
<h2 id="sensors_poll_device_t_sensors_poll_device_1_t">sensors_poll_device_t/sensors_poll_device_1_t</h2>
-<p><code>sensors_poll_device_1_t</code> 包含上文定义的方法的剩余部分:<code>activate</code>、<code>batch</code>、<code>flush</code> 和 <code>poll</code>。它的 <code>common</code> 字段(类型为 <a href="/devices/halref/structhw__device__t.html">hw_device_t</a>)定义了 HAL 的版本号。</p>
+<p><code>sensors_poll_device_1_t</code> 包含上文定义的方法的剩余部分:<code>activate</code>、<code>batch</code>、<code>flush</code> 和 <code>poll</code>。它的 <code>common</code> 字段(类型为 <a href="/devices/halref/structhw__device__t.html">hw_device_t</a>)用于定义 HAL 的版本号。</p>
<h2 id="sensor_t">sensor_t</h2>
<p><code>sensor_t</code> 表示 <a href="index.html">Android 传感器</a>。以下是 sensor_t 的一些重要字段:</p>
<p><strong>name</strong>:表示传感器的用户可见字符串。该字符串通常包括底层传感器的部件名称、传感器的类型以及是否为唤醒传感器。例如,“LIS2HH12 Accelerometer”、“MAX21000 Uncalibrated Gyroscope”、“BMP280 Wake-up Barometer”、“MPU6515 Game Rotation Vector”。</p>
@@ -161,19 +161,19 @@ int (*setDelay)(
<p><strong>flags</strong>:传感器的标记,用于定义传感器的报告模式以及传感器是否为唤醒传感器。例如,对于单次唤醒传感器,标记为 <code>flags = SENSOR_FLAG_ONE_SHOT_MODE | SENSOR_FLAG_WAKE_UP</code>。当前版本的 HAL 中未使用的标记位必须等于 0。</p>
<p><strong>maxRange</strong>:传感器可报告的最大值,单位与已报告值单位相同。传感器必须能够报告 <code>[-maxRange; maxRange]</code> 范围内(未过载)的值。请注意,这意味着从常规意义上来说传感器的总范围是 <code>2*maxRange</code>。当传感器报告几条轴上的值时,该范围适用于每条轴。例如,“+/- 2g”加速度计会报告 <code>maxRange = 2*9.81 = 2g</code>。</p>
<p><strong>resolution</strong>:传感器可测量出的最小差值。该字段通常基于 <code>maxRange</code> 和测量值的位数计算得出。</p>
-<p><strong>power</strong>:启用传感器的功耗成本,以毫安为单位。该字段值几乎始终大于底层传感器的相关数据表中报告的功耗。要了解详情,请参阅<a href="sensor-types.html#base_sensors_=_not_equal_to_physical_sensors">基础传感器不等于物理传感器</a>这篇文章;要详细了解如何测量传感器的功耗,请参阅<a href="power-use.html#power_measurement_process">功耗测量过程</a>。如果传感器的功耗取决于设备是否正在移动,则 <code>power</code> 字段中报告的值是移动时的功耗。</p>
+<p><strong>power</strong>:启用传感器的功耗成本,以毫安为单位。该字段值几乎始终大于底层传感器的相关数据表中报告的功耗。要了解详情,请参阅<a href="sensor-types.html#base_sensors_=_not_equal_to_physical_sensors">基础传感器不等于物理传感器</a>;要详细了解如何测量传感器的功耗,请参阅<a href="power-use.html#power_measurement_process">功耗测量过程</a>。如果传感器的功耗取决于设备是否正在移动,则 <code>power</code> 字段中报告的值是移动时的功耗。</p>
<p><strong>minDelay</strong>:对于连续传感器,指对应于传感器支持的最快速率的采样周期(以微秒为单位)。要详细了解该值是如何使用的,请参阅 <a href="#sampling_period_ns">sampling_period_ns</a>。请注意,<code>minDelay</code> 以微秒为单位,而 <code>sampling_period_ns</code> 以纳秒为单位。对于变化和特殊报告模式传感器,除非另行指定,否则 <code>minDelay</code> 必须为 0。对于单次传感器,该值必须为 -1。</p>
<p><strong>maxDelay</strong>:对于连续和变化模式传感器,指对应于传感器支持的最慢速率的采样周期(以微秒为单位)。要详细了解该值是如何使用的,请参阅 <a href="#sampling_period_ns">sampling_period_ns</a>。请注意,<code>maxDelay</code> 以微秒为单位,而 <code>sampling_period_ns</code> 以纳秒为单位。对于特殊和单次传感器,<code>maxDelay</code> 必须为 0。</p>
-<p><strong>fifoReservedEventCount</strong>:在硬件 FIFO 中为该传感器保留的事件数。如果该传感器具有专属的 FIFO,则 <code>fifoReservedEventCount</code> 是该专属 FIFO 的大小。如果该传感器与其他传感器共用 FIFO,则 <code>fifoReservedEventCount</code> 是为该传感器保留的 FIFO 部分的大小。对于大多数共享 FIFO 的系统以及没有硬件 FIFO 的系统,该值为 0。</p>
+<p><strong>fifoReservedEventCount</strong>:在硬件 FIFO 中为该传感器保留的事件数。如果该传感器具有专用的 FIFO,则 <code>fifoReservedEventCount</code> 是该专用 FIFO 的大小。如果该传感器与其他传感器共用 FIFO,则 <code>fifoReservedEventCount</code> 是为该传感器保留的 FIFO 部分的大小。对于大多数共享 FIFO 的系统以及没有硬件 FIFO 的系统,该值为 0。</p>
<p><strong>fifoMaxEventCount</strong>:FIFO 中可为该传感器存储的最大事件数。该值总是大于或等于 <code>fifoReservedEventCount</code>。该值用于估计在假设不激活任何其他传感器的情况下,以特定速率注册到传感器时 FIFO 多快会被填满。对于没有硬件 FIFO 的系统,<code>fifoMaxEventCount</code> 为 0。要了解详情,请参阅<a href="batching.html">批量处理</a>。</p>
<p>对于官方传感器类型的传感器,一些字段会被框架覆盖。例如,强制要求<a href="sensor-types.html#accelerometer">加速度计</a>传感器使用连续报告模式,并强制要求<a href="sensor-types.html#heart_rate">心率</a>监测器受 <code>SENSOR_PERMISSION_BODY_SENSORS</code> 权限的保护。</p>
<h2 id="sensors_event_t">sensors_event_t</h2>
<p>由 Android 传感器生成并通过 <a href="#poll">poll</a> 函数报告的传感器事件属于 <code>type sensors_event_t</code>。以下是 <code>sensors_event_t</code> 的一些重要字段:</p>
<p><strong>version</strong>:必须是 <code>sizeof(struct sensors_event_t)</code>。</p>
-<p><strong>sensor</strong>:生成事件的传感器的句柄,由 <code>sensor_t.handle</code> 定义。</p>
-<p><strong>type</strong>:生成事件的传感器的类型,由 <code>sensor_t.type</code> 定义。</p>
+<p><strong>sensor</strong>:生成相应事件的传感器的句柄,如 <code>sensor_t.handle</code> 所定义。</p>
+<p><strong>type</strong>:生成相应事件的传感器的类型,如 <code>sensor_t.type</code> 所定义。</p>
<p><strong>timestamp</strong>:事件的时间戳,以纳秒为单位。这是事件发生(采取了步骤,或是进行了加速度计测量)的时间,而不是报告事件的时间。<code>timestamp</code> 必须与 <code>elapsedRealtimeNano</code> 时钟同步,并且对于连续传感器,抖动必须很小。有时需要进行时间戳过滤以满足 CDD 要求,因为仅使用 SoC 中断时间来设置时间戳会导致抖动过大,而仅使用传感器芯片时间来设置时间戳又会由于传感器时钟漂移而无法与 <code>elapsedRealtimeNano</code> 时钟同步。</p>
-<p><strong>数据和重叠字段</strong>:由传感器测量的值。这些字段的含义和单位特定于每种传感器类型。要了解数据字段的说明,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 和不同<a href="sensor-types.html">传感器类型</a>的定义。对于某些传感器,也可以通过 <code>status</code> 字段在数据中同时报告读取精度。该字段只能针对选定传感器类型通过管道传递,作为精度值出现在 SDK 层。对于这类传感器,其<a href="sensor-types.html">传感器类型</a>定义中会提及必须设置 status 字段。</p>
+<p><strong>数据和重叠字段</strong>:由传感器测量的值。这些字段的含义和单位特定于每种传感器类型。要了解数据字段的说明,请参阅 <a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware/sensors.h">sensors.h</a> 以及不同<a href="sensor-types.html">传感器类型</a>的定义。对于某些传感器,也可以通过 <code>status</code> 字段在数据中同时报告读取精度。该字段只能针对选定传感器类型通过管道传递,作为精度值出现在 SDK 层。对于这类传感器,其<a href="sensor-types.html">传感器类型</a>定义中会提及必须设置 status 字段。</p>
<h3 id="metadata_flush_complete_events">元数据刷写完成事件</h3>
<p>元数据事件的类型与常规传感器事件的类型相同:<code>sensors_event_meta_data_t = sensors_event_t</code>。元数据事件通过 poll 与其他传感器事件一起返回,且拥有如下字段:</p>
<p><strong>version</strong>:必须是 <code>META_DATA_VERSION</code></p>
diff --git a/zh-cn/devices/sensors/power-use.html b/zh-cn/devices/sensors/power-use.html
index e7b8a022..47d2c8d8 100644
--- a/zh-cn/devices/sensors/power-use.html
+++ b/zh-cn/devices/sensors/power-use.html
@@ -31,12 +31,12 @@
</ul>
<p>在<a href="sensor-types.html#composite_sensor_type_summary">复合传感器类型汇总</a>表中,这些传感器都带有低功耗 (<img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/>) 图标。</p>
<p>您无法将这些传感器类型实现为高功耗传感器,因为它们的主要优势就是耗电量低。这些传感器会长期处于启用状态,并且很可能是全天候启用。宁愿不实现低功耗传感器,也不要将其实现为高功耗传感器,否则会导致过度耗电。</p>
-<p>对于低功耗复合传感器类型(如步测器),必须使其在硬件中执行处理流程。</p>
+<p>对于低功耗复合传感器类型(如步测器),必须在硬件中处理传感器。</p>
<p>有关具体的功耗要求,请参阅 CDD。建议进行 CTS 测试,以便验证这些功耗要求。</p>
<h2 id="power_measurement_process">功耗测量过程</h2>
-<p>功耗的测量对象是电池。对于以毫瓦计的值,我们使用电池的额定电压,这意味着电压为 4 伏且电流为 1 毫安时必须计为 4 毫瓦。</p>
-<p>在 SoC 处于休眠状态时测量功耗,并且计算 SoC 处于休眠状态时几秒钟内的平均值,以便将来自传感器芯片的周期性功耗峰值考虑在内。</p>
-<p>对于单次唤醒传感器,在传感器未触发时测量功耗(因此不会唤醒 SoC)。同样,对于其他传感器,在传感器数据存储在硬件 FIFO 中时测量功耗,因此 SoC 不会被唤醒。</p>
+<p>功耗的测量对象是电池。对于以毫瓦计的值,我们使用电池的额定电压,这意味着电压为 4 伏、电流为 1 毫安时,必须计为 4 毫瓦。</p>
+<p>在 SoC 处于休眠状态时测量功耗,并且计算 SoC 处于休眠状态的几秒钟内的平均值,以便将传感器芯片所产生的周期性功耗峰值考虑在内。</p>
+<p>对于单次唤醒传感器,会在传感器未触发时测量功耗(以免唤醒 SoC)。同样,对于其他传感器,在传感器数据存储在硬件 FIFO 中时测量功耗,以免唤醒 SoC。</p>
<p>当没有传感器处于启用状态时,通常以增量形式测量功耗。当有多个传感器处于启用状态时,功耗增量不得大于各个已启用传感器的功耗之和。如果加速度计的电流为 0.5 毫安,步测器的电流也为 0.5 毫安,则同时启用这两者所消耗的电流必须小于 0.5 + 0.5 = 1 毫安。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/sensors/sensor-stack.html b/zh-cn/devices/sensors/sensor-stack.html
index 9acbac27..22cfef75 100644
--- a/zh-cn/devices/sensors/sensor-stack.html
+++ b/zh-cn/devices/sensors/sensor-stack.html
@@ -57,7 +57,7 @@
<li>没有将数据从应用向下发送至传感器或其驱动程序的机制。这样可以确保某个应用无法修改传感器的行为,从而不会对其他应用造成破坏。</li>
</ul>
<h3 id="sensor_fusion">传感器融合</h3>
-<p>Android 框架为部分复合传感器提供默认实现。如果设备上有<a href="sensor-types.html#gyroscope">陀螺仪</a>、<a href="sensor-types.html#accelerometer">加速度计</a>和<a href="sensor-types.html#magnetic_field_sensor">磁力计</a>,但没有<a href="sensor-types.html#rotation_vector">旋转矢量</a>、<a href="sensor-types.html#gravity">重力</a>和<a href="sensor-types.html#linear_acceleration">线性加速度</a>传感器,则该框架会实现这些传感器,以便应用仍可以使用它们。</p>
+<p>Android 框架为部分复合传感器提供默认实现。如果设备上有<a href="sensor-types.html#gyroscope">陀螺仪</a>、<a href="sensor-types.html#accelerometer">加速度计</a>和<a href="sensor-types.html#magnetic_field_sensor">磁力计</a>,但没有<a href="sensor-types.html#rotation_vector">旋转矢量</a>传感器、<a href="sensor-types.html#gravity">重力</a>传感器和<a href="sensor-types.html#linear_acceleration">线性加速度</a>传感器,则该框架会实现这些传感器,以便应用仍可以使用它们。</p>
<p>默认实现无法访问其他实现可以访问的所有数据,并且必须在 SoC 上运行,因此它不像其他实现那样精准和省电。设备制造商应尽可能定义自己的融合传感器(旋转矢量传感器、重力传感器和线性加速度传感器,以及<a href="sensor-types.html#game_rotation_vector">游戏旋转矢量</a>传感器等较新的复合传感器),而非依赖该默认实现。此外,设备制造商也可以要求传感器芯片供应商为其提供实现。</p>
<p>默认的传感器融合实现没有相关的维护,且可能导致依赖它的设备无法通过 CTS 验证。</p>
<h3 id="under_the_hood">深入了解</h3>
diff --git a/zh-cn/devices/sensors/sensor-types.html b/zh-cn/devices/sensors/sensor-types.html
index 5845e43b..9b245e19 100644
--- a/zh-cn/devices/sensors/sensor-types.html
+++ b/zh-cn/devices/sensors/sensor-types.html
@@ -214,7 +214,7 @@
</tr>
<tr>
<td><p><a href="#linear_acceleration">线性加速器</a></p></td>
- <td><p>运动类</p></td>
+ <td><p>动作类</p></td>
<td><p>加速度计、陀螺仪(如有)或磁力计(如果陀螺仪不存在)</p></td>
<td><p>连续模式</p></td>
</tr>
@@ -239,29 +239,29 @@
<tr>
<td><p><a href="#rotation_vector">旋转矢量传感器</a></p></td>
<td><p>姿势类</p></td>
- <td><p>加速度计、磁力计和(如有)陀螺仪<em></em></p></td>
+ <td><p>加速度计、磁力计和陀螺仪(如有)<em></em></p></td>
<td><p>连续模式</p></td>
</tr>
<tr>
<td><p><a href="#significant_motion">大幅度动作传感器</a> <img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/></p></td>
- <td><p>运动类</p></td>
+ <td><p>动作类</p></td>
<td><p>加速度计(或其他功耗极低的传感器)</p></td>
<td><p>单次模式</p></td>
</tr>
<tr>
<td><p><a href="#step_counter">计步器</a> <img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/></p></td>
- <td><p>运动类</p></td>
+ <td><p>动作类</p></td>
<td><p>加速度计</p></td>
<td><p>变化模式</p></td>
</tr>
<tr>
- <td><p><a href="#step_detector">步测器</a> <img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/></p></td> <td><p>运动类</p></td>
+ <td><p><a href="#step_detector">步测器</a> <img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/></p></td> <td><p>动作类</p></td>
<td><p>加速度计</p></td>
<td><p>特殊模式</p></td>
</tr>
<tr>
<td><p><a href="#tilt_detector">倾斜检测器</a> <img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/></p></td>
- <td><p>运动类</p></td>
+ <td><p>动作类</p></td>
<td><p>加速度计</p></td>
<td><p>特殊模式</p></td>
</tr>
@@ -273,7 +273,7 @@
</tr>
</tbody></table>
<p><img src="images/battery_icon.png" width="20" height="20" alt="低功耗传感器"/> = 低功耗传感器</p>
-<h2 id="activity_composite_sensors">活动复合传感器</h2>
+<h2 id="activity_composite_sensors">动作复合传感器</h2>
<h3 id="linear_acceleration">线性加速器</h3>
<p>底层物理传感器:加速度计和陀螺仪(如有的话;如果陀螺仪不存在,则使用磁力计)</p>
<p>报告模式:<em><a href="report-modes.html#continuous">连续模式</a></em></p>
@@ -310,7 +310,7 @@
<p>每个传感器事件在 <code>sensors_event_t.data[0]</code> 中报告 1</p>
<h3 id="step_detector">步测器</h3>
<p>底层物理传感器:加速度计(可能还有其他低功耗计量器)</p>
-<p><em></em>报告模式:<a href="report-modes.html#special">特殊模式</a>(一步触发一个事件)</p>
+<p>报告模式:<a href="report-modes.html#special">特殊模式</a>(一步触发一个事件)<em></em></p>
<p>低功耗</p>
<p><code>getDefaultSensor(SENSOR_TYPE_STEP_DETECTOR)</code> 会返回一个非唤醒传感器<em></em></p>
<p>用户每走一步,步测器就触发一个事件。</p>
diff --git a/zh-cn/devices/sensors/versioning.html b/zh-cn/devices/sensors/versioning.html
index 261259fa..cb90660e 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/admin/enterprise-telephony.html b/zh-cn/devices/tech/admin/enterprise-telephony.html
index 28e7bab4..7fd7462d 100644
--- a/zh-cn/devices/tech/admin/enterprise-telephony.html
+++ b/zh-cn/devices/tech/admin/enterprise-telephony.html
@@ -40,8 +40,8 @@ Android 开放源代码项目 (AOSP) 在拨号器、通讯录和短信应用的
<p>
例如:
</p><ul>
-<li><strong>为工作联系人添加标记</strong>:请参阅 <code>packages/apps/ContactsCommon</code> <em>f3eb5a207bfe0ff3b4ed2350ae5865ed8bc59798</em>
-</li><li><strong>跨资料搜索</strong>:请参阅 <code>packages/apps/ContactsCommon</code> <em>cd0b29ddbf3648e48f048196c62245d545bc6122</em></li>
+<li><strong>为工作联系人添加标记</strong>:请参阅 <code>packages/apps/ContactsCommon</code> f3eb5a207bfe0ff3b4ed2350ae5865ed8bc59798<em></em>
+</li><li><strong>跨资料搜索</strong>:请参阅 <code>packages/apps/ContactsCommon</code> cd0b29ddbf3648e48f048196c62245d545bc6122<em></em></li>
</ul>
<h2 id="implementation">实现</h2>
diff --git a/zh-cn/devices/tech/admin/managed-profiles.html b/zh-cn/devices/tech/admin/managed-profiles.html
index f78ab433..23bec8b3 100644
--- a/zh-cn/devices/tech/admin/managed-profiles.html
+++ b/zh-cn/devices/tech/admin/managed-profiles.html
@@ -36,7 +36,7 @@
<h3 id="applications">应用</h3>
-<p>当同一应用同时存在于主用户和受管理资料中时,应用使用自己的隔离数据限定范围。通常,应用彼此独立地进行操作,并且彼此之间不能跨越资料-用户边界直接通信。</p>
+<p>当同一应用同时存在于主用户和受管理资料中时,应用使用自己的隔离数据限定范围。通常,应用的操作相互独立,彼此之间不能跨越资料-用户边界直接通信。</p>
<h3 id="accounts">帐号</h3>
@@ -46,7 +46,7 @@
<h3 id="intents">Intent</h3>
-<p>管理员可以控制是否在/不在受管理资料中解析 Intent。在默认情况下,受管理资料中的应用的范围被限定到受管理资料内,但 Device Policy API 除外。</p>
+<p>管理员可以控制是否在/不在受管理资料中解析 Intent。在默认情况下,受管理资料中应用的范围被限定到受管理资料内,但 Device Policy API 除外。</p>
<h3 id="settings">设置</h3>
@@ -117,15 +117,15 @@ uid = 100000 * userid + appid
<h3 id="dpm_api">DevicePolicyManager API</h3>
-<p>Android 5.0 及更高版本大幅改进了 DevicePolicyManager,其中包含数十个新的 API,可同时支持企业所有和自带设备 (BYOD) 的管理用例。示例包括应用限制、证书静默安装和跨资料共享 intent 访问控制。可以从示例 Device Policy Client (DPC) 应用 <a href="https://developer.android.com/samples/BasicManagedProfile/index.html" class="external">BasicManagedProfile.apk</a> 着手使用。有关详情,请参阅<a href="https://developer.android.com/training/enterprise/work-policy-ctrl.html" class="external">构建工作政策控制器</a>。</p>
+<p>Android 5.0 及更高版本大幅改进了 DevicePolicyManager,其中包含数十个新的 API,可同时支持企业所有和自带设备 (BYOD) 的管理用例,例如应用限制、证书静默安装和跨资料共享 intent 访问控制。可以从示例 Device Policy Client (DPC) 应用 <a href="https://developer.android.com/samples/BasicManagedProfile/index.html" class="external">BasicManagedProfile.apk</a> 着手使用。有关详情,请参阅<a href="https://developer.android.com/training/enterprise/work-policy-ctrl.html" class="external">构建工作政策控制器</a>。</p>
<h2 id="user-experience">受管理资料用户体验</h2>
<p>
-Android 9 在受管理资料和平台之间建立了更紧密的集成,使用户可以在其设备上更轻松地将工作信息和个人信息隔离开来。这些受管理资料用户体验变化会体现在启动器中。通过实现这些变化,可在受管理设备间打造一致的用户体验。
+Android 9 在受管理资料和平台之间建立了更紧密的集成,使用户可以在其设备上更轻松地将工作信息和个人信息隔离开来。受管理资料的这些用户体验变化会体现在启动器中。通过实现这些变化,可在受管理设备间打造一致的用户体验。
</p>
- <h3 id="ux-changes-app-try">具有应用托盘的设备上的用户体验变化</h3>
+ <h3 id="ux-changes-app-tray">具有应用托盘的设备上的用户体验变化</h3>
<p>
Android 9 中 Launcher 3 的受管理资料用户体验变化有助于用户维护单独的个人资料和受管理资料。应用抽屉提供了一个标签式视图,用于区分个人资料应用。当用户首次查看受管理资料标签时,系统会显示一个指导视图,以协助用户浏览受管理资料。用户还可以使用启动器工作标签中的切换开关来开启和关闭受管理资料。
@@ -188,7 +188,7 @@ Android 9 中 Launcher 3 的受管理资料用户体验变化有助于用户维
<p>
如果工作文件夹无法正确填充,并且新安装的应用未添加到该文件夹,请在 <a href="https://android.googlesource.com/platform/packages/apps/Launcher3/+/master/src/com/android/launcher3/util/ManagedProfileHeuristic.java" class="external"><code>ManagedProfileHeuristic</code></a> 类中的 <code>onAllAppsLoaded</code> 方法内应用以下更改:
- </p>
+</p>
<pre class="prettyprint">for (LauncherActivityInfo app : apps) {
// Queue all items which should go in the work folder.
diff --git a/zh-cn/devices/tech/admin/ota-updates.html b/zh-cn/devices/tech/admin/ota-updates.html
index ef691bf6..b362f3c9 100644
--- a/zh-cn/devices/tech/admin/ota-updates.html
+++ b/zh-cn/devices/tech/admin/ota-updates.html
@@ -78,7 +78,7 @@ Android 9 引入了专为系统更新客户端设计的 @SystemApi <code>SystemU
</ul>
<p>
-系统更新客户端可以查询 <code>SystemUpdatePolicy.InstallationOption</code>,方法是使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code>,其中“when”表示查询安装选项的时间(从公元纪年开始计算的毫秒数)。<var></var>系统更新客户端可以使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code> 方法在有效时间结束前针对返回的选项执行操作。在返回的选项失效后,客户端可以使用新的时间戳为最近的选项执行另一次查询。
+系统更新客户端可以查询 <code>SystemUpdatePolicy.InstallationOption</code>,方法是使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code>,其中“when”表示查询安装选项的时间(从公元纪年开始计算的毫秒数)<var></var>。系统更新客户端可以使用 <code>SystemUpdatePolicy.getInstallationOptionAt(long <var>when</var>)</code> 方法在有效时间结束前针对返回的选项执行操作。在返回的选项失效后,客户端可以使用新的时间戳为最近的选项执行另一次查询。
</p>
<p>
diff --git a/zh-cn/devices/tech/admin/provision.html b/zh-cn/devices/tech/admin/provision.html
index c8bc21e9..47db9a4b 100644
--- a/zh-cn/devices/tech/admin/provision.html
+++ b/zh-cn/devices/tech/admin/provision.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>
@@ -30,7 +30,7 @@
<p>托管配置是一个框架式界面流程,用于确保用户充分了解设置设备所有者或受管理资料的含义。它旨在充当受管理资料的设置向导。</p>
-<p class="note"><strong>注意</strong>:只能为未配置的设备设置设备所有者。如果 <code>Settings.Secure.USER_SETUP_COMPLETE</code> 已设置,则设备会被视为已配置,不能再设置设备所有者。</p>
+<p class="note"><strong>注意</strong>:只能为未配置的设备设置所有者。如果之前曾设置过 <code>Settings.Secure.USER_SETUP_COMPLETE</code>,则设备会被视为已配置,并且不能再设置所有者。</p>
<p>如果启用设备的默认加密功能,则设备的管理配置流程会相当简单和快速。受管理配置组件会:</p>
diff --git a/zh-cn/devices/tech/admin/testing-provision.html b/zh-cn/devices/tech/admin/testing-provision.html
index 3058f646..b6604db1 100644
--- a/zh-cn/devices/tech/admin/testing-provision.html
+++ b/zh-cn/devices/tech/admin/testing-provision.html
@@ -20,15 +20,17 @@
limitations under the License.
-->
-<p>Android for Work (AfW) 自动化测试框架是一个用于验证 Android 设备的 AfW 兼容性的测试套件。该套件包括配套应用、测试用例、配置文件和一个基于 <code>cts-tradefed</code> 的测试运行程序 (<code>afw-test-tradefed</code>)。您应在完成<a href="/devices/tech/admin/provision.html">设备管理配置</a>后再设置并运行 AfW 自动化测试框架。</p>
+<p>Android Enterprise (AE) 自动化测试框架是一个用于验证 Android 设备的企业级兼容性的测试套件。该套件包括配套应用、测试用例、配置文件和一个基于 <code>afw-test-tradefed</code> 的测试运行程序 (<code>cts-tradefed</code>)。您应在完成<a href="/devices/tech/admin/provision.html">设备管理配置</a>后再设置并运行 AE 自动化测试框架。</p>
-<p class="note"><strong>注意</strong>:AfW 自动化测试框架的编译和运行步骤与 Android <a href="/compatibility/cts/index.html">兼容性测试套件 (CTS)</a> 类似。</p>
+<p class="note"><strong>注意</strong>:AE 自动化测试框架的编译和运行步骤与 Android <a href="/compatibility/cts/index.html">兼容性测试套件 (CTS)</a> 类似。</p>
+
+<p>很多工具、目录和分支名称都包含 AfW 标签。<em></em>Android for Work (AfW) 是 Android 企业级功能之前的名字。</p>
<h2 id="setup_env">设置开发环境</h2>
-<p>AfW 自动化测试框架的开发环境类似于 Android 操作系统的开发环境。请按照相关<a href="/setup/requirements.html">要求</a>中的步骤设置开发设备。</p>
+<p>AE 自动化测试框架的开发环境类似于 Android 操作系统的开发环境。请按照相关<a href="/setup/requirements.html">要求</a>中的步骤设置开发设备。</p>
<h2 id="download_source">下载源代码</h2>
-<p>按照<a href="/setup/downloading.html">下载源代码</a>中的步骤下载 AfW 自动化测试框架源代码。AfW 自动化测试框架源代码位于 <code>./test/AfwTestHarness</code> 项目中。要下载的 AfW 自动化测试框架版本取决于分支名称(每个 Android 平台都具有单独的 AfW 自动化测试框架版本)。Android 7.0 的分支名称为 <code>afw-test-harness-nougat-dev</code>。要初始化该分支的 Repo 并下载源代码,请使用:</p>
+<p>按照<a href="/setup/downloading.html">下载源代码</a>中的步骤下载 AE 自动化测试框架源代码。AE 自动化测试框架源代码位于 <code>./test/AfwTestHarness</code> 项目中。要下载的 AE 自动化测试框架版本取决于分支名称(每个 Android 平台都有一个单独的 AE 自动化测试框架版本)。Android 7.0 的分支名称为 <code>afw-test-harness-nougat-dev</code>。要初始化该分支的 Repo 并下载源代码,请使用:</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">mkdir WORKING_DIRECTORY</code>
@@ -67,7 +69,7 @@
<p>编译自动化测试框架所需的其他依赖项目也会随源代码一并下载。</p>
<h3 id="view_studio">在 Android Studio 中查看</h3>
-<p>要在 Android Studio 中查看和修改 AfW 源代码,请执行以下操作:</p>
+<p>要在 Android Studio 中查看和修改源代码,请执行以下操作:</p>
<ol>
<li>运行以下命令:<pre class="devsite-click-to-copy">
<code class="devsite-terminal">make idegen</code>
@@ -77,12 +79,12 @@
<li>在 Android Studio 中打开 <code>android.ipr</code>。</li>
</ol>
-<p>AfW 自动化测试框架源代码位于 <code>test/AfwTestHarness</code> 中。</p>
+<p>AE 自动化测试框架源代码位于 <code>test/AfwTestHarness</code> 中。</p>
-<h2 id="config_harness">配置 AfW 自动化测试框架</h2>
+<h2 id="config_harness">配置 AE 自动化测试框架</h2>
<p>通过配置 <code>test/AfwTestHarness/afw-test.props</code>,您可以自定义自动化测试框架。要成功运行自动化测试框架,请按照以下步骤操作:</p>
<ol>
-<li>使用以下属性在 <code>afw-test.props</code> 中配置 WLAN 网络:<pre class="devsite-click-to-copy">
+<li>使用以下属性在 <code>afw-test.props</code> 中配置 Wi-Fi 网络:<pre class="devsite-click-to-copy">
wifi_ssid
wifi_password (optional)
wifi_security_type (optional, available options are: NONE, WEP or WPA)
@@ -93,11 +95,11 @@ wifi_security_type (optional, available options are: NONE, WEP or WPA)
work_account_username
work_account_password
</pre>
-<p>AfW 自动化测试框架使用 Test DPC 来测试配置流程。因此,帐号<strong>必须</strong>与 Test DPC 绑定才能运行自动化测试框架。</p>
+<p>AE 自动化测试框架使用 Test DPC 来测试配置流程。因此,帐号<strong>必须</strong>与 Test DPC 绑定才能运行自动化测试框架。</p>
</li>
</ol>
-<h2 id="build_harness">编译 AfW 自动化测试框架</h2>
+<h2 id="build_harness">编译 AE 自动化测试框架</h2>
<p>使用以下命令初始化编译配置:</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">source build/envsetup.sh</code>
@@ -112,8 +114,8 @@ make afw-test-harness -j32
</pre>
<p>该操作将创建一个目录 (<code>out/host/linux-x86/afw-th/android-cts</code>),该目录包含运行自动化测试框架所需的全部二进制文件、配置文件和工具。该目录还会被压缩成一个文件 (<code>out/host/linux-x86/afw-th/android-afw-test-harness.zip</code>) 以供分发。</p>
-<h2 id="run_harness">运行 AfW 自动化测试框架</h2>
-<p>请按照以下步骤运行 AfW 自动化测试框架:</p>
+<h2 id="run_harness">运行 AE 自动化测试框架</h2>
+<p>请按照以下步骤运行 AE 自动化测试框架:</p>
<ol>
<li>在您的编译环境中使用以下命令启动测试运行程序:
<pre class="devsite-terminal devsite-click-to-copy">
@@ -124,7 +126,7 @@ afw-test-tradefed
<pre class="devsite-click-to-copy">
cts-tf&gt; ./android‐cts/tools/afw-test‐tradefed
</pre>
-该操作将从 <code>android-cts</code> 目录中加载测试方案、测试用例和 <code>afw-test.props</code>。请确保 <code>./android‐cts/repository/testcases/afw-test.props</code> 包含工作帐号和 WLAN 配置信息。</li>
+该操作将从 <code>android-cts</code> 目录中加载测试方案、测试用例和 <code>afw-test.props</code>。请确保 <code>./android‐cts/repository/testcases/afw-test.props</code> 包含工作帐号和 Wi-Fi 配置信息。</li>
<li>运行测试方案。每个测试方案都是一个 XML 文件,其中包含从 <code>AfwTestHarness/tests</code> 测试包目录中获取的一组测试包。常见方案包括:
@@ -146,7 +148,7 @@ cts-tf&gt; run cts --package com.android.afwtest.NfcProvisioning
要查看所有测试包,请使用命令 <code>list packages</code>。要查看更多选项,请使用命令 <code>run cts --help</code>。</li>
</ol>
-<h2 id="debug_harness">调试 AfW 自动化测试框架</h2>
+<h2 id="debug_harness">调试 AE 自动化测试框架</h2>
<p>您可以通过运行 <code>afw-test-tradefed</code> 来启动 afw-test-tradefed 控制台 (<code>cts-tf</code>),从而在该控制台中运行所有命令。</p>
<ul>
@@ -177,7 +179,7 @@ cts-tf&gt; run cts ‐‐plan afw-userdebug-build -l DEBUG --all-devices
<li>使用 <code>afwtest</code> 借助过滤器监控实时 logcat,然后打开另一个终端,并使用 <code>adb logcat | grep afwtest</code> 启动 logcat。测试完成后,请执行以下操作:
<ul>
-<li>在 <code>out/host/linux-x86/afw-th/android-cts/repository/logs/<em>start-time</em></code> 中查看日志。完整的设备 logcat 和主机日志(<code>afw-test-tradefed</code> 日志)会保存在单独的 ZIP 文件中。</li>
+<li>查看 <code>out/host/linux-x86/afw-th/android-cts/repository/logs/<em>start-time</em></code> 中的日志。完整的设备 logcat 和主机日志(<code>afw-test-tradefed</code> 日志)会保存在单独的 ZIP 文件中。</li>
<li>通过搜索设备 logcat,查看与 <strong>afwtest</strong> 相关的信息。例如:<code>zless
out/host/linux-x86/afw-th/android-cts/repository/logs/<em>start-time</em>/device_logcat_<em>random-number</em>.zip
@@ -188,7 +190,8 @@ out/host/linux-x86/afw-th/android-cts/repository/logs/<em>start-time</em>/host_l
</li>
</ul>
</li>
-<li>测试包通过以下方式将 AfW 的配置流程自动化:访问界面页面,并将导航日志记录在每个页面的设备 logcat 文件中。例如:<code>afwtest.AutomationDriver:
+<li>测试包通过以下方式将企业配置流程自动化:访问界面页面,并将导航日志记录在每个页面的设备 logcat 文件中。
+例如:<code>afwtest.AutomationDriver:
Navigating:com.android.afwtest.uiautomator.pages.gms.AddAccountPage</code>
<br />用于测试包 <code>com.android.afwtest.NfcProvisioning</code> 的界面页面包括:<ul>
<li>
@@ -201,7 +204,7 @@ Navigating:com.android.afwtest.uiautomator.pages.gms.AddAccountPage</code>
<li>如果测试在配置过程中失败,logcat 将包含类似于以下内容的错误消息:<pre class="devsite-click-to-copy">
TestRunner: java.lang.RuntimeException: Failed to load page: com.android.afwtest.uiautomator.pages.packageinstaller.DeviceAccessPage
</pre>
-这类错误通常是由之前的界面网页或加载失败的网页中的错误所导致,因此,请尝试在 logcat 中找到出现该错误之前的其他错误消息,然后按照配置流程手动重现该错误。</li>
+这类错误通常是由之前的界面页面或加载失败的页面中的错误所导致,因此,请尝试在 logcat 中找到出现该错误之前的其他错误消息,然后按照配置流程手动重现该错误。</li>
<li>如果测试包运行失败:
<ul>
<li>系统会使用下列语法将屏幕截图保存到 <code>out/host/linux-x86/afw-th/android-cts/repository/logs/<em>start-time</em></code>:<code>screenshot-test_<em>test_class_full_name</em>_<em>test_case_name</em>-<em>random_number</em>.png</code>。该信息也会记录在主机日志中。</li>
diff --git a/zh-cn/devices/tech/config/carrier.html b/zh-cn/devices/tech/config/carrier.html
index 998425ba..d2d08ef2 100644
--- a/zh-cn/devices/tech/config/carrier.html
+++ b/zh-cn/devices/tech/config/carrier.html
@@ -175,7 +175,7 @@ android:permission="android.permission.BIND_CARRIER_SERVICES"&gt;
<ul>
<li>包含有效证书签名的 SIM 卡
- </li><li>运行 Android 6.0 或更高版本的设备(例如 Nexus 设备)
+ </li><li>运行 Android 6.0 及更高版本的设备(例如 Nexus 设备)
</li></ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/config/filesystem.html b/zh-cn/devices/tech/config/filesystem.html
index cd7bc8be..da34adca 100644
--- a/zh-cn/devices/tech/config/filesystem.html
+++ b/zh-cn/devices/tech/config/filesystem.html
@@ -22,7 +22,7 @@
-->
<p>
- 添加到编译环境中的文件系统对象和服务通常需要您为其分别指定唯一 ID,称为 Android ID (AID)。目前,文件和服务等很多资源并非必须使用 Android 定义的核心 AID;在很多情况下,您可以改为使用 OEM 定义的 AID。
+ 添加到编译环境的文件系统对象和服务通常需要单独的专属 ID,称为 Android ID (AID)。目前,文件和服务等很多资源并非必须使用 Android 定义的核心 AID;在很多情况下,您可以改为使用 OEM 定义的 AID。
</p>
<p>
@@ -45,13 +45,13 @@
</p>
<aside class="note">
- <strong>注意</strong>:虽然您仍可以使用<a href="#older">旧版 Android 中的文件系统替换方法</a>,但不能同时再使用新的 AID 机制。建议您尽可能使用新的机制。
+ <strong>注意</strong>:虽然您仍可以使用<a href="#older">旧版 Android 中的文件系统替换方法</a>,但在使用该方法时,不能同时使用新的 AID 机制。建议您尽可能使用新的机制。
</aside>
<h2 id="adding-android-aids">添加 Android ID (AID)</h2>
<p>
- Android 8.0 从 Android 开源项目 (AOSP) 中移除了 <code>android_ids[]</code> 数组。所有好记的 AID 名称都改为在生成 Bionic <code>android_ids[]</code> 数组时从 <code>system/core/include/private/android_filesystem_config.h</code> 标头文件生成。这种机制会发现与 <code>AID_*</code> 匹配的所有 <code>define</code>,且 <strong>*</strong> 会变为小写名称。
+ Android 8.0 从 Android 开源项目 (AOSP) 中移除了 <code>android_ids[]</code> 数组。所有好记的 AID 名称都改为在生成 Bionic <code>android_ids[]</code> 数组时从 <code>system/core/include/private/android_filesystem_config.h</code> 标头文件生成。这种机制会发现与 <code>define</code> 匹配的所有 <code>AID_*</code>,且 <strong>*</strong> 会变为小写名称。
</p>
<p>
@@ -81,25 +81,25 @@
</p>
<aside class="caution">
- <strong>注意</strong>:请勿将 <code>TARGET_FS_CONFIG_GEN</code> 与旧版 Android 中早期的 <code>TARGET_ANDROID_FILESYSTEM_CONFIG_H</code> 方法结合使用!否则,您会收到错误提示。
+ <strong>注意</strong>:请勿将 <code>TARGET_FS_CONFIG_GEN</code> 与更低版本 Android 中较旧的 <code>TARGET_ANDROID_FILESYSTEM_CONFIG_H</code> 方法结合使用!否则,您会收到错误提示。
</aside>
<p>
- 按照惯例,配置文件使用名称 <code>config.fs</code>,但在实际使用中,您可以使用任何名称。<code>config.fs</code> 文件采用 <a href="https://docs.python.org/2/library/configparser.html" class="external">Python ConfigParser ini 格式</a>,并包含 caps 部分(用于配置文件系统权能)和 AID 部分(用于配置 OEM AID)。
+ 按照惯例,配置文件使用名称 <code>config.fs</code>,但在实际中,您可以使用任意名称。<code>config.fs</code> 文件采用 <a href="https://docs.python.org/2/library/configparser.html" class="external">Python ConfigParser ini 格式</a>,并包含 caps 部分(用于配置文件系统权能)和 AID 部分(用于配置 OEM AID)。
</p>
<h3 id="configuring-the-caps-section">配置 caps 部分</h3>
<aside class="note">
- <strong>注意</strong>:<a href="/devices/tech/config/ambient">Ambient 权能</a>是为 <code>init</code> 所启动的服务设置权能的首选机制(此方法将服务配置的所有方面保存在单个 <code>.rc</code> 文件中)。我们建议您对这些服务使用 Ambient 权能,而不是在 <code>config.fs</code> 文件中使用 caps 部分配置文件系统权能。在为<strong>并非 <code>init</code> 所启动</strong>的服务设置权能时,请继续使用 <code>fs_config.c</code> 配置文件系统权能。
+ <strong>注意</strong>:<a href="/devices/tech/config/ambient">Ambient 权能</a>是为由 <code>init</code> 启动的服务设置权能的首选机制(此方法会将服务配置的所有方面保存在单个 <code>.rc</code> 文件中)。建议您对这些服务使用 Ambient 权能,而不是在 <code>config.fs</code> 文件中使用 caps 部分配置文件系统权能。在为<strong>不是由 <code>init</code> 启动</strong>的服务设置权能时,请继续使用 <code>fs_config.c</code> 配置文件系统权能。
</aside>
<p>
- 利用 caps 部分,您可以在编译环境中对文件系统对象设置<a href="http://man7.org/linux/man-pages/man7/capabilities.7.html" class="external">文件系统权能</a>(文件系统本身也必须支持此功能)。
+ caps 部分支持在编译环境中对文件系统对象设置<a href="http://man7.org/linux/man-pages/man7/capabilities.7.html" class="external">文件系统权能</a>(文件系统本身也必须支持此功能)。
</p>
<p>
- 由于在 Android 中以 Root 身份运行稳定的服务会导致无法通过<a href="/compatibility/cts/index.html">兼容性测试套件 (CTS)</a> 测试,因此在之前有关在运行进程或服务时保留权能的要求中,您在运行进程或服务时需要先设置权能,然后使用 <code>setuid</code>/<code>setgid</code> 设置适当的 AID。借助 caps 部分,您可以跳过这些要求,让内核为您代劳。当控制权交给 <code>main()</code> 时,您的进程已拥有其所需的权能,因此您的服务可以使用非 Root 用户和群组(这是启动特权服务的首选方式)。
+ 由于在 Android 中以 Root 身份运行稳定的服务会导致无法通过<a href="/compatibility/cts/index.html">兼容性测试套件 (CTS)</a> 测试,因此之前有关在运行进程或服务时必须保留权能的要求中规定,必须先设置权能,然后再使用 <code>setuid</code>/<code>setgid</code> 设置适当的 AID。借助 caps 部分,您可以跳过这些要求,让内核为您代劳。当控制权交给 <code>main()</code> 时,您的进程已拥有其所需的权能,因此您的服务可以使用非 Root 用户和群组(这是启动特权服务的首选方式)。
</p>
<p>
@@ -173,7 +173,7 @@
<td><code>value</code></td>
<td>&lt;number&gt;</td>
<td>有效的 C 样式的数字字符串(十六进制、八进制、二进制和十进制)。
- <br /><br />使用同一值选项指定多个部分<strong>或</strong>指定超出收录的 OEM 范围(在 <code>system/core/include/private/android_filesystem_config.h</code> 中指定)的值都是错误的做法:
+ <br /><br />无论是使用同一个值选项指定多个部分,<strong>还是</strong>指定超出收录的 OEM 范围(在 <code>system/core/include/private/android_filesystem_config.h</code> 中指定)的值,都是错误的做法:
<ul>
<li>AID_OEM_RESERVED_START(2900) - AID_OEM_RESERVED_END(2999)</li>
<li>AID_OEM_RESERVED_2_START(5000) - AID_OEM_RESERVED_2_END(5999)</li>
@@ -285,17 +285,17 @@ caps: SYS_ADMIN | SYS_NICE
</aside>
<p>
- 创建好文件后,设置 <code>TARGET_FS_CONFIG_GEN</code> 并在 <code>BoardConfig.mk</code> 中指向该文件。例如,在 <code>device/x/y/BoardConfig.mk</code> 中设置以下内容:
+ 创建好文件后,在 <code>BoardConfig.mk</code> 中设置 <code>TARGET_FS_CONFIG_GEN</code>,以指向该文件。例如,在 <code>device/x/y/BoardConfig.mk</code> 中设置以下内容:
</p>
<pre>
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>
+<h2 id="older">配置替换(Android 6.x 到 7.x)</h2>
<p>
Android 6.0 将 <code>fs_config</code> 和关联的结构定义 (<code>system/core/include/private/android_filesystem_config.h</code>) 转移到了 <code>system/core/libcutils/fs_config.c</code>。在此处,可使用安装在 <code>/system/etc/fs_config_dirs</code> 和 <code>/system/etc/fs_config_files</code> 中的二进制文件更新或替换它们。针对目录和文件分别采用单独的匹配和解析规则(可能会使用其他全局表达式),这样一来,Android 就能够在两个不同的表格中处理目录和文件。<code>system/core/libcutils/fs_config.c</code> 中的结构定义不仅可让系统在运行时读取目录和文件,而且主机在编译时也可以使用相同的文件将文件系统映像构建为 <code>${OUT}/system/etc/fs_config_dirs</code> 和 <code>${OUT}/system/etc/fs_config_files</code>。
@@ -307,9 +307,9 @@ TARGET_FS_CONFIG_GEN += device/x/y/config.fs
<h3 id="older-generate">生成替换文件</h3>
-<p>您可以使用 <code>build/tools/fs_config</code> 中的 <code>fs_config_generate</code> 工具生成相应的二进制文件 <code>/system/etc/fs_config_dirs</code> 和 <code>/system/etc/fs_config_files</code>。该工具使用 <code>libcutils</code> 库函数 (<code>fs_config_generate()</code>) 管理放入缓冲区内的 DAC 需求,并为头文件定义规则来规定 DAC 规则的用法。</p>
+<p>您可以使用 <code>build/tools/fs_config</code> 中的 <code>fs_config_generate</code> 工具生成相应的二进制文件 <code>/system/etc/fs_config_dirs</code> 和 <code>/system/etc/fs_config_files</code>。该工具使用 <code>libcutils</code> 库函数 (<code>fs_config_generate()</code>) 将 DAC 要求放入一个缓冲区内,并为包含文件定义规则,以规定 DAC 规则的用法。</p>
-<p>要使用该工具,请在 <code>device/<em>vendor</em>/<em>device</em>/android_filesystem_config.h</code> 中创建头文件作为替换文件。该文件必须使用 <code>system/core/include/private/android_filesystem_config.h</code> 中定义的 <code>structure fs_path_config</code> 格式,并对目录和文件符号进行以下结构初始化:</p>
+<p>要使用该工具,请在 <code>device/<em>vendor</em>/<em>device</em>/android_filesystem_config.h</code> 中创建用作替换文件的包含文件。该文件必须使用 <code>system/core/include/private/android_filesystem_config.h</code> 中定义的 <code>structure fs_path_config</code> 格式,并对目录和文件符号进行以下结构初始化:</p>
<ul>
<li>对于目录,请使用 <code>android<strong>_device</strong>_dirs[]</code>。</li>
<li>对于文件,请使用 <code>android<strong>_device</strong>_files[]</code>。</li>
@@ -339,7 +339,7 @@ TARGET_FS_CONFIG_GEN += device/x/y/config.fs
<h3 id="older-example">替换示例</h3>
<p>
- 此示例展示了用于替换 <code>system/bin/glgps</code> 守护进程以在 <code>device/<em>vendor</em>/<em>device</em></code> 目录中添加唤醒锁定支持的补丁程序。请注意以下几点:
+ 以下示例展示了一个补丁程序,该程序用于替换 <code>system/bin/glgps</code> 守护进程,以在 <code>device/<em>vendor</em>/<em>device</em></code> 目录中添加唤醒锁定支持。请注意以下几点:
</p>
<ul>
@@ -417,10 +417,10 @@ index 0c71d21..235c1a7 100644
<ul>
<li>Android 6.x 移除了部分头文件、结构和内嵌定义。</li>
- <li>Android 6.x 需要引用 <code>libcutils</code>,而不是直接从 <code>system/core/include/private/android_filesystem_config.h</code> 运行。依赖于 <code>system/code/include/private_filesystem_config.h</code> 的文件/目录结构或者 <code>fs_config</code> 的设备制造商私密可执行文件必须添加 <code>libcutils</code> 库依赖项。</li>
- <li>Android 6.x 需要 <code>system/core/include/private/android_filesystem_config.h</code> 的设备制造商专有分支副本,该副本应包含有关现有目标的附加内容,以便移至 <code>device/<em>vendor</em>/<em>device</em>/android_filesystem_config.h</code>。
+ <li>Android 6.x 需要引用 <code>libcutils</code>,而不是直接从 <code>system/core/include/private/android_filesystem_config.h</code> 运行。文件/目录结构依赖于 <code>system/code/include/private_filesystem_config.h</code> 的设备制造商专属可执行文件或者 <code>fs_config</code> 必须添加 <code>libcutils</code> 库依赖项。</li>
+ <li>Android 6.x 需要 <code>system/core/include/private/android_filesystem_config.h</code> 的设备制造商专属分支副本,该副本应包含有关现有目标的附加内容,以便移至 <code>device/<em>vendor</em>/<em>device</em>/android_filesystem_config.h</code>。
</li>
- <li>由于 Android 6.x 保留将 SELinux 强制访问控制 (MAC) 应用于目标系统中配置文件的权利,因此包含使用 <code>fs_config()</code> 的自定义目标可执行文件的实现必须确保具有访问权限。</li>
+ <li>由于 Android 6.x 保留将 SELinux 强制访问控制 (MAC) 应用于目标系统中的配置文件的权利,因此如果实现包含使用 <code>fs_config()</code> 的自定义目标可执行文件,则必须确保具有访问权限。</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/config/namespaces_libraries.html b/zh-cn/devices/tech/config/namespaces_libraries.html
index 6aef47f8..afab4d68 100644
--- a/zh-cn/devices/tech/config/namespaces_libraries.html
+++ b/zh-cn/devices/tech/config/namespaces_libraries.html
@@ -41,11 +41,31 @@ Android 7.0 推出了针对原生库的命名空间,旨在限制内部 API 可
<h2 id="adding-additional-native-libraries">添加其他原生库</h2>
<p>
-除了标准的公共原生库之外,供应商还可以选择提供可供应用访问的其他原生库,方法是将它们放在 <code>/vendor</code> 库文件夹(如果是 32 位的库,则为 /vendor/lib;如果是 64 位的库,则为 /vendor/lib64)下,并将其列于 <code>/vendor/etc/public.libraries.txt</code> 中
+除了标准的公共原生库之外,芯片供应商(从 Android 7.0 起)和设备制造商(从 Android 9 起)还可以选择提供可供应用访问的其他原生库,方法是将它们放在相应的库文件夹中,并在 .txt 文件中明确列出它们。
+</p>
+
+<p>库文件夹是:</p>
+<ul>
+ <li><code>/vendor/lib</code>(对于芯片供应商的 32 位库)和 <code>/vendor/lib64</code>(对于芯片供应商的 64 位库)</li>
+ <li><code>/system/lib</code>(对于设备制造商的 32 位库)和 <code>/system/lib64</code>(对于设备制造商的 64 位库)</li>
+</ul>
+
+<p>.txt 文件是:</p>
+<ul>
+ <li><code>/vendor/etc/public.libraries.txt</code>(对于芯片供应商的库)</li>
+ <li><code>/system/etc/public.libraries-COMPANYNAME.txt</code>(对于设备制造商的库),其中 <code>COMPANYNAME</code> 指的是制造商的名称(例如 <code>awesome.company</code>)。<code>COMPANYNAME</code> 应该匹配 <code>[A-Za-z0-9_.-]+</code>; 字母数字字符、_、.(点)和 -。如果某些库来自外部解决方案提供商,则可以在设备中包含多个此类 .txt 文件。
+</li></ul>
+
+<p>
+<strong>必须</strong>将 <code>system</code> 分区内由设备制造商公开的原生库命名为 <code>lib*COMPANYNAME.so</code>,例如 <code>libFoo.awesome.company.so</code>。换句话说,没有公司名称后缀的 <code>libFoo.so</code> 不得公开。库文件名中的 <code>COMPANYNAME</code> 必须与列出库名称的 txt 文件的名称中的 <code>COMPANYNAME</code> 匹配。
+</p>
+
+<p>
+作为 AOSP 一部分的原生库不得公开(默认情况下公开的标准公共原生库除外)。只有芯片供应商或设备制造商添加的其他库可供应用访问。
</p>
<p>
-从 Android 8.0 开始,供应商的公共库需要遵循以下额外限制,并需要进行相应的设置:
+从 Android 8.0 开始,供应商的公共库需要遵循以下额外限制,并需要进行设置:
</p>
<ol>
@@ -60,7 +80,7 @@ Android 7.0 推出了针对原生库的命名空间,旨在限制内部 API 可
<h2 id="updating-app-non-public">将应用更新为不使用非公共原生库</h2>
<p>
-该功能仅适用于 SDK 版本为 24 或更高版本的应用;要了解向后兼容性,请参阅<a href="http://android-developers.blogspot.com/2016/06/improving-stability-with-private-cc.html">表 1. 当您的应用链接到私有原生库时会发生什么情况</a>。可供应用访问的 Android 原生库(又称为公共原生库)列表列于 CDD 部分 3.1.1。适用于版本 24 或更高版本且使用任何非公共库的应用应进行更新。如需了解详情,请参阅<a href="https://developer.android.com/preview/behavior-changes.html#ndk">链接到平台库的 NDK 应用</a>。
+仅针对 SDK 版本为 24 或更高版本的应用启用此功能;要了解向后兼容性,请参阅<a href="http://android-developers.blogspot.com/2016/06/improving-stability-with-private-cc.html">表 1. 当应用关联到私有原生库时会发生什么情况</a>。可供应用访问的 Android 原生库(又称为公共原生库)列表列于 CDD 部分 3.1.1。适用于版本 24 或更高版本且使用任何非公共库的应用应进行更新。要了解详情,请参阅<a href="https://developer.android.com/preview/behavior-changes.html#ndk">关联到平台库的 NDK 应用</a>。
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/config/uicc.html b/zh-cn/devices/tech/config/uicc.html
index 95eec020..86bd9f2d 100644
--- a/zh-cn/devices/tech/config/uicc.html
+++ b/zh-cn/devices/tech/config/uicc.html
@@ -83,7 +83,7 @@ E243 &lt;= 43 is value length in hex
<li>用于允许运营商应用向 UICC 请求质询/响应的 API:<a href="https://developer.android.com/reference/android/telephony/TelephonyManager.html#getIccAuthentication(int,%20int,%20java.lang.String)"><code>getIccAuthentication</code></a>。
</li>
-<li>用于检查发起呼叫的应用是否已获得运营商权限的 API:<a href="http://developer.android.com/reference/android/telephony/TelephonyManager.html#hasCarrierPrivileges()"><code>hasCarrierPrivileges</code></a>。
+<li>用于检查调用应用是否已获得运营商权限的 API:<a href="http://developer.android.com/reference/android/telephony/TelephonyManager.html#hasCarrierPrivileges()"><code>hasCarrierPrivileges</code></a>。
</li>
<li>用于覆盖品牌和号码的 API:<ul>
diff --git a/zh-cn/devices/tech/connect/block-numbers.html b/zh-cn/devices/tech/connect/block-numbers.html
index a9886c21..2976b303 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,8 +172,7 @@ 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/call-notification.html b/zh-cn/devices/tech/connect/call-notification.html
index bf69325b..2e99f1a4 100644
--- a/zh-cn/devices/tech/connect/call-notification.html
+++ b/zh-cn/devices/tech/connect/call-notification.html
@@ -96,6 +96,6 @@
</ul>
<h2 id="implement">实现</h2>
-<p>设备实现人员可能需要更新通讯系统/电话组件(公开可供默认拨号器使用的 API)。</p>
+<p>设备实现人员可能需要更新通讯系统/电话组件,这些组件表明可供默认拨号器使用的 API。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/connect/connect_tests.html b/zh-cn/devices/tech/connect/connect_tests.html
index aca43af2..85ed2ca5 100644
--- a/zh-cn/devices/tech/connect/connect_tests.html
+++ b/zh-cn/devices/tech/connect/connect_tests.html
@@ -46,7 +46,7 @@
<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>
diff --git a/zh-cn/devices/tech/connect/esim-modem-requirements.html b/zh-cn/devices/tech/connect/esim-modem-requirements.html
index 4ebdb08a..e61bff93 100644
--- a/zh-cn/devices/tech/connect/esim-modem-requirements.html
+++ b/zh-cn/devices/tech/connect/esim-modem-requirements.html
@@ -27,7 +27,7 @@
<h2 id="general_requirements">常规要求</h2>
-<p>以下是针对常规 eSIM 支持的调制解调器要求。只有在调制解调器满足下列所有要求时,LPA 才可正常发挥作用。</p>
+<p>以下是针对常规 eSIM 支持的调制解调器要求。只有在调制解调器满足下列所有要求时,本地配置文件助理程序 (LPA) 才可正常发挥作用。</p>
<h3 id="handle_the_default_boot_profile_correctly">正确处理默认启动配置文件</h3>
@@ -35,7 +35,17 @@
<h3 id="send_terminal_capabilities_correctly">正确发送终端功能</h3>
-<p>在打开 ISD-R 的逻辑信道时,调制解调器应向 eSIM 卡发送正确的终端功能。终端功能必须根据 ETSI TS 102 221 进行编码,以便支持 eUICC 卡功能:“本地配置文件管理”和“配置文件下载”。</p>
+<p>接通电源后,调制解调器应向 eSIM 卡发送正确的终端功能。终端功能必须进行编码以支持 eUICC 卡功能:“本地配置文件管理”和“配置文件下载”。</p>
+
+<p>请参阅 <a href="https://www.etsi.org/deliver/etsi_ts/102200_102299/102221/15.00.00_60/ts_102221v150000p.pdf">ETSI TS 102 221 第 11.1.19.2.4 节</a>:“Additional Terminal capability indications related to eUICC”。字节 [1-3] 应为:‘83’(代码)‘01’(长度)‘07’(eUICC 功能)。</p>
+
+<h3 id="optional_support_esim_os_ota_updates">(可选)支持 eSIM 卡操作系统 OTA 更新</h3>
+<aside class="note"><strong>注意:</strong><span>由于 eSIM 卡操作系统无线下载 (OTA) 更新未标准化,因此是否提供此更新取决于提供 eSIM 卡操作系统的供应商。</span></aside>
+<p>调制解调器应该支持 eSIM 卡操作系统 OTA 更新的所有要求,例如切换到直通模式并确保 eSIM 卡在 OTA 更新过程中一直处于通电状态。</p>
+
+<h2 id="hal_requirements">HAL 要求</h2>
+
+<p>以下是常规 eSIM 卡支持所需的 API 实现。</p>
<h3 id="implement_setsimpower_api_in_radio_hal_v11">在 Radio HAL v1.1 中实现 setSimPower API</h3>
@@ -47,23 +57,23 @@
<h3 id="implement_geticccardstatus_api_in_iradio_hal_v12">在 IRadio HAL v1.2 中实现 getIccCardStatus API</h3>
-<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>
+<p>调制解调器应在 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.0/IRadioResponse#geticccardstatusresponse">getIccCardStatusResponse</a> API 中提供卡状态的复位应答 (ATR) 和插槽 ID。在 v1.0 中引入了此 API,并且在 v1.2 中,对 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/1.2/types.hal#341" class="external">CardStatus</a> 进行了更改以纳入 <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>
+<h3 id="set_cardstaterestricted_on_sim_lock_subsidy_lock">在 SIM 卡锁定功能(subsidy 锁)上设置 CardState:RESTRICTED</h3>
-<p>由于 eSIM 卡操作系统 OTA 未进行标准化,因此这项要求取决于提供 eSIM 卡操作系统的供应商。调制解调器应该支持 eSIM 卡操作系统 OTA 的所有要求,例如切换到直通模式并确保 eSIM 卡在 OTA 过程中一直处于通电状态。</p>
+<p>如果 eSIM 卡处于 SIM 锁定(subsidy 锁定)状态,则调制解调器应在 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.0/IRadioResponse#geticccardstatusresponse">getIccCardStatusResponse</a> API 中将卡状态设置为 <a href="https://source.android.com/reference/hidl/android/hardware/radio/1.0/types#cardstate"><code>CardState:RESTRICTED</code></a>。</p>
-<h2 id="logging_requirements">日志记录要求</h2>
-
-<p>以下是正确调试 eSIM 卡问题的一般调制解调器日志记录要求。</p>
+<h3 id="optional_implement_setsimslotsmapping_api_in_iradioconfig_hal_v10">(可选)在 IRadioConfig HAL v1.0 中实现 setSimSlotsMapping API</h3>
+<aside class="note"><strong>注意</strong>:<span>仅在需要切换插槽的设备配置中需要执行此操作,例如,设备具有一个 eSIM 卡插槽和一个实体/可移除的 SIM (pSIM) 卡插槽,并且一次只有一个插槽可处于有效状态。</span></aside>
+<p>调制解调器应支持 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/radio/config/1.0/IRadioConfig.hal#81" class="external">setSimSlotsMapping API</a>,此 API 能够设置从实体插槽到逻辑插槽的映射。LPA 使用此 API 来选择处于有效状态的 SIM 卡插槽。</p>
-<h3 id="provide_pc_based_tools_to_capture_detailed_modem_logs">提供基于 PC 的工具以捕获详细的调制解调器日志</h3>
+<h2 id="logging_requirements">日志记录要求</h2>
-<p>日志记录应捕获移动数据网络 RAT(4G、3G、2G)和 IMS(SIP、RTP、RTCP、XCAP)的所有 OTA 数据包。受 ESP 保护的 SIP 数据包应在没有 ESP 的情况下记录。OTA 解析器应符合 3GPP 规范的要求。</p>
+<p>以下是用于调试 eSIM 卡问题的一般调制解调器日志记录要求。</p>
-<p>日志记录应该支持捕获所有网络接口上的 IP 数据包。</p>
+<h3 id="log_capture">日志捕获</h3>
-<p>日志记录应该支持捕获调试日志和协议层信息,包括协议层状态、无线装置功率测量、网络单元信息、数据包 TX/RX 统计信息、层间消息传递、处理器间通信、SIM 卡功能和 APDU 日志记录,以及 RIL 日志记录。</p>
+<p>日志记录应捕获处理器间通信、SIM 卡功能、无线接口层 (RIL) 日志记录以及应用协议数据单元 (APDU) 日志记录。</p>
<h3 id="on-device_logging">设备上的日志记录</h3>
diff --git a/zh-cn/devices/tech/connect/esim-overview.html b/zh-cn/devices/tech/connect/esim-overview.html
index 63914f74..9b5aca7f 100644
--- a/zh-cn/devices/tech/connect/esim-overview.html
+++ b/zh-cn/devices/tech/connect/esim-overview.html
@@ -44,7 +44,7 @@
<h3 id="euiccmanager">EuiccManager</h3>
-<p><code>EuiccManager</code> 是应用与 LPA 交互的主入口点。这包括可下载、删除及切换到运营商所拥有的订阅的运营商应用。此外,这还包括 LUI 系统应用,该应用可提供用于管理所有嵌入式订阅的中心位置/界面,且可以是与提供 <code>EuiccService</code> 的应用不同的应用。<em></em></p>
+<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 = (EuiccManager) context.getSystemService(Context.EUICC_SERVICE);
@@ -132,7 +132,7 @@ 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,%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>在这些情况下,调用程序使用 <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" class="external"><code>EuiccService</code></a> 中定义了 LUI 应处理的上述可修正的错误:</p>
<pre class="prettyprint"><code>/**
@@ -225,8 +225,8 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
<p>要实现 LUI,您必须为以下操作提供操作组件:</p>
<ul>
-<li><code>android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS</code></li>
-<li><code>android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION</code></li>
+<li><code>android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS</code></li>
+<li><code>android.service.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" class="external"><code>EuiccService</code></a> 实现所使用的逻辑是类似的。例如:</p>
@@ -234,10 +234,8 @@ public static final String ACTION_RESOLVE_CONFIRMATION_CODE =
android:exported="true"
android:permission="android.permission.BIND_EUICC_SERVICE"&gt;
&lt;intent-filter android:priority="100"&gt;
- &lt;action android:name=
- "android.telephony.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" /&gt;
- &lt;action android:name=
- "android.telephony.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" /&gt;
+ &lt;action android:name="android.service.euicc.action.MANAGE_EMBEDDED_SUBSCRIPTIONS" /&gt;
+ &lt;action android:name="android.service.euicc.action.PROVISION_EMBEDDED_SUBSCRIPTION" /&gt;
&lt;category android:name="android.intent.category.DEFAULT" /&gt;
&lt;category android:name="android.service.euicc.category.EUICC_UI" /&gt;
&lt;/intent-filter&gt;
diff --git a/zh-cn/devices/tech/connect/rtt.html b/zh-cn/devices/tech/connect/rtt.html
index 37e3331d..d7a3813e 100644
--- a/zh-cn/devices/tech/connect/rtt.html
+++ b/zh-cn/devices/tech/connect/rtt.html
@@ -22,7 +22,7 @@
limitations under the License.
-->
-<h1 id="implementing_real_time_text" class="page-title">实现实时信息</h1>
+<h1 id="implementing_real-time_text" class="page-title">实现实时信息</h1>
<p>本页介绍如何在 Android 9 中实现实时信息 (RTT)。RTT 这项功能面向失聪用户或听障用户提供,可替代文本电话 (TTY) 技术。借助此功能,设备可以使用同一电话号码进行语音通话和 RTT 通话,即时传输信息(信息是逐个字符输入的),支持拨打 911,并且向后兼容 TTY。</p>
@@ -30,13 +30,13 @@
<h2 id="examples_and_source">示例和源代码</h2>
-<p>AOSP 的 <a href="https://developer.android.com/reference/android/telecom/Call.RttCall">Call.RttCall</a> 和 <a href="https://developer.android.com/reference/android/telecom/Connection.RttTextStream">Connection.RttTextStream</a> 中提供框架组件。IMS/调制解调器组件是专有的,应由 IMS/调制解调器供应商提供。您还可以使用拨号器 RTT 的参考实现。</p>
+<p>框架组件可从 AOSP 的 <a href="https://developer.android.com/reference/android/telecom/Call.RttCall" class="external">Call.RttCall</a> 和 <a href="https://developer.android.com/reference/android/telecom/Connection.RttTextStream" class="external">Connection.RttTextStream</a> 中获得。IMS/调制解调器组件是专有的,应由 IMS/调制解调器供应商提供。您还可以使用拨号器 RTT 的参考实现。</p>
<p>RTT 的 AOSP 拨号器代码:</p>
<ul>
-<li>通话中:<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/incallui/rtt">/java/com/android/incallui/rtt</a></li>
-<li>通话记录:<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/dialer/rtt">/java/com/android/dialer/rtt</a></li>
+<li>通话中:<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/incallui/rtt" class="external">/java/com/android/incallui/rtt</a> </li>
+<li>通话记录:<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/dialer/rtt" class="external">/java/com/android/dialer/rtt</a> </li>
</ul>
<h2 id="implementation">实现</h2>
@@ -68,7 +68,7 @@
<h2 id="customization">自定义</h2>
-<p>您可以启用或停用此功能,方法是使用 <code>packages/services/Telephony</code> 的设备配置叠加层中的设备配置 <code>config_support_rtt</code>,以及运营商配置文件中的运营商配置标记 <code>CarrierConfigManager.RTT_SUPPORTED_BOOL</code>。根据配置,该功能可通过“无障碍功能”设置提供,也可以不通过该设置提供。您可以使用设备配置来更改默认设置。默认情况下,该功能设置为关闭。</p>
+<p>您可以启用或停用此功能,方法是使用 <code>config_support_rtt</code> 的设备配置叠加层中的设备配置 <code>packages/services/Telephony</code>,以及运营商配置文件中的运营商配置标记 <code>CarrierConfigManager.RTT_SUPPORTED_BOOL</code>。根据配置,该功能可通过“无障碍功能”设置提供,也可以不通过该设置提供。您可以使用设备配置来更改默认设置。默认情况下,该功能设置为关闭。</p>
<h2 id="validation">验证</h2>
diff --git a/zh-cn/devices/tech/connect/wifi-debug.html b/zh-cn/devices/tech/connect/wifi-debug.html
index 1cae3751..f3a493a7 100644
--- a/zh-cn/devices/tech/connect/wifi-debug.html
+++ b/zh-cn/devices/tech/connect/wifi-debug.html
@@ -22,9 +22,9 @@
limitations under the License.
-->
-<h1 id="testing_and_debugging" class="page-title">测试和调试</h1>
+<h1 id="testing_debugging_and_tuning_wi-fi" class="page-title">测试、调试和调整 WLAN</h1>
-<p>本文将介绍如何使用 ASOP 中提供的工具测试和调试 WLAN 实现。</p>
+<p>本文将介绍如何使用 ASOP 中提供的工具测试、调试和调整 WLAN 实现。</p>
<h2 id="testing">测试</h2>
@@ -62,7 +62,7 @@
<p><a href="/compatibility/cts/">兼容性测试套件</a> (CTS) 包括针对 WLAN 框架的测试。这些测试位于以下位置:<code>cts/tests/tests/net/src/android/net/wifi</code>。WLAN CTS 测试要求在测试开始运行时将受测设备与接入点相关联。</p>
-<h2 id="enhanced_logging_options">增强型日志记录选项</h2>
+<h2 id="enhanced_logging_options_for_debugging">针对调试的增强型日志记录选项</h2>
<p>Android 9 改进了 WLAN 日志记录功能,以便更轻松地调试 WLAN 问题。在 Android 9 中,驱动程序/固件环形缓冲区可以始终处于开启状态。在检测到错误状态时,可能会自动触发错误报告(仅限 userdebug 和 eng 版本)。如果您使用的是最新 WLAN HAL(1.2 版),则固件调试缓冲区存储在 HAL 中而不是框架内,以节省 IPC 费用。</p>
@@ -89,4 +89,31 @@
<li>检查 bugreport zip 文件并验证 <code>/lshal-debug/android.hardware.wifi@1.2__IWifi_default.txt</code> 中是否包含已归档的固件日志。</li>
</ol>
+<h2 id="configuration_tuning">配置调整</h2>
+
+<p>为了控制设备在与网络建立关联和取消关联时采用的信号强度,WLAN 框架使用了“entry”和“exit”RSSI 阈值。<em></em><em></em></p>
+
+<p>系统会将“entry”和“exit”阈值存储为可过载的配置参数,并使用以下名称(其中 <code>bad</code> 参数是指“exit”RSSI 阈值):<em></em><em></em><em></em></p>
+
+<ul>
+<li><code>config_wifi_framework_wifi_score_bad_rssi_threshold_5GHz</code></li>
+<li><code>config_wifi_framework_wifi_score_entry_rssi_threshold_5GHz</code></li>
+<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>
+
+<p>系统会将这些参数存储在 <code>&lt;root&gt;/frameworks/base/core/res/res/values/config.xml</code> 中,并可能会使用叠加层文件 <code>&lt;root&gt;/device/&lt;dev_dir&gt;/overlay/frameworks/base/core/res/res/values/config.xml</code> 对其进行过载。</p>
+<aside class="note"><strong>注意</strong>:<span><code>bad</code> 配置参数(适用于 2.4GHz 和 5GHz 的频段)已在 Android 8.1 之前的版本中引入。<code>entry</code> 配置参数已在 Android 8.1 中引入,其默认值等于对应的 bad 参数。这些默认值会导致出现 Android 8.1 之前的版本中的行为,即系统在选择网络时不使用迟滞功能。要充分利用 Android 8.1 中引入的迟滞功能,请使用上文中指定的叠加层文件将 <code>entry</code> 参数设为 3dB 或比 <code>bad</code> 参数更高的值。</span></aside>
+<p>您可以使用 adb 命令来配置设备,从而测试新的阈值(或者,您也可以使用新的叠加层来创建编译,但使用 adb 命令可以加快测试周期)。</p>
+<pre class="prettyprint"><code>% adb shell settings put global wifi_score_params \
+ [rssi2|rssi5]=&lt;bad&gt;:&lt;entry&gt;:&lt;low&gt;:&lt;good&gt;
+</code></pre>
+<p>例如,以下命令可以配置新的阈值参数(此示例命令中使用的值是 AOSP 代码库中配置的默认值):</p>
+<pre class="prettyprint"><code>% adb shell settings put global wifi_score_params \
+ rssi2=-85:-85:-73:-60,rssi5=-82:-82:-70:-57
+</code></pre>
+<p>要恢复内置的参数值(即移除替换),请使用以下 abd 命令:</p>
+<pre class="prettyprint"><code>% adb shell settings delete global wifi_score_params
+</code></pre>
+
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/connect/wifi-mac-randomization.html b/zh-cn/devices/tech/connect/wifi-mac-randomization.html
index 16817a31..de4066db 100644
--- a/zh-cn/devices/tech/connect/wifi-mac-randomization.html
+++ b/zh-cn/devices/tech/connect/wifi-mac-randomization.html
@@ -40,10 +40,9 @@
<li><p>与 WLAN 芯片供应商合作实现 <code>IWifiStaIface.setMacAddress()</code> HAL 方法。</p>
<ul>
-<li>AOSP 参考实现会关闭接口、更改 MAC 地址并备份接口。这种参考实现行为可能不适用于某些芯片供应商。
-</li>
+<li>AOSP 参考实现会关闭接口、更改 MAC 地址并备份接口。这种参考实现行为可能不适用于某些芯片供应商。</li>
</ul></li>
-<li><p>在“设置”<code>config.xml</code> 中,将 <a href="https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/values/config.xml#49"><code>config_wifi_support_connected_mac_randomization</code></a> 设置为 <strong>true</strong>(该步骤可在设备自定义叠层中完成)。</p>
+<li><p>在“设置”<code>config.xml</code> 中,将 <a href="https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/values/config.xml#46" class="external"><code>config_wifi_support_connected_mac_randomization</code></a> 设置为 <strong>true</strong>(该步骤可在设备自定义叠层中完成)。</p>
<ul>
<li>此标记用于控制参考“设置”实现的开发者选项中是否显示“连接时随机选择 MAC 网址”切换开关。<em></em>如果设置为 <strong>true</strong>,则显示该切换开关;如果设置为 <strong>false</strong>,则不显示该切换开关。</li>
@@ -58,7 +57,7 @@
<li>如果启用了随机选择 MAC 地址功能,则在系统显示 WLAN 接口 MAC 地址时显示生成的随机 MAC 地址。</li>
</ul>
-<p>使用设置界面的<a href="https://android.googlesource.com/platform/packages/apps/Settings/+/master/src/com/android/settings/development/">参考实现</a>来实现新提示。</p>
+<p>使用设置界面的<a href="https://android.googlesource.com/platform/packages/apps/Settings/+/master/src/com/android/settings/development/WifiConnectedMacRandomizationPreferenceController.java" class="external">参考实现</a>来实现新提示。</p>
<h2 id="validation">验证</h2>
diff --git a/zh-cn/devices/tech/connect/wifi-passpoint.html b/zh-cn/devices/tech/connect/wifi-passpoint.html
index 1247d85d..4790d789 100644
--- a/zh-cn/devices/tech/connect/wifi-passpoint.html
+++ b/zh-cn/devices/tech/connect/wifi-passpoint.html
@@ -124,7 +124,7 @@ application/x-pkcs12
<li><p><code>SIM</code>:对于 EAP-SIM、EAP-AKA 和 EAP-AKA' 是必需的。<code>EAPType</code> 字段必须设置为适当的 EAP 类型,而 <code>IMSI</code> 必须与进行配置时设备中已安装的 SIM 卡之一的 IMSI 相匹配。IMSI 字符串可以完全由十进制数字组成以强制执行完全对等匹配,也可以包含零个或更多个十进制数字,后跟星号 (*) 以将 IMSI 匹配要求放宽为仅匹配前缀。例如,IMSI 字符串 123* 将匹配 IMSI 以 123 开头的任何 SIM 卡。</p></li>
</ul>
-<h1 id="example_profile_oma_dm_xml" class="page-title">示例配置文件 OMA-DM XML</h1>
+<h2 id="example_profile_oma-dm_xml">示例配置文件 OMA-DM XML</h2>
<pre class="prettyprint lang-xml"><code>&lt;MgmtTree xmlns="syncml:dmddf1.2"&gt;
&lt;VerDTD&gt;1.2&lt;/VerDTD&gt;
&lt;Node&gt;
@@ -184,5 +184,76 @@ application/x-pkcs12
&lt;/Node&gt;
&lt;/MgmtTree&gt;
</code></pre>
+<h2 id="auth_advisory">身份验证建议</h2>
+
+<p>搭载 Android 8.0 或更高版本且装有 Passpoint R1 EAP-SIM、EAP-AKA 或 EAP-AKA 配置文件的设备将无法自动连接到 Passpoint 网络。此问题会减少 WLAN 分流,从而对用户、运营商和服务造成影响。</p>
+
+<table>
+ <tbody><tr>
+ <th><strong>细分</strong>
+ </th>
+ <th><strong>影响</strong>
+ </th>
+ <th><strong>影响大小</strong>
+ </th>
+ </tr>
+ <tr>
+ <td>运营商和 Passpoint 服务提供商
+ </td>
+ <td>增加移动网络的负载。
+ </td>
+ <td>使用 Passpoint R1 的任何运营商。
+ </td>
+ </tr>
+ <tr>
+ <td>用户
+ </td>
+ <td>错过了自动连接到运营商 WLAN 接入点 (AP) 的机会,从而增加流量费用。
+ </td>
+ <td>在支持 Passpoint R1 的运营商网络上运行设备的任何用户。
+ </td>
+ </tr>
+</tbody></table>
+
+<h3 id="cause_of_failure">失败原因</h3>
+
+<p>Passpoint 会指定一种机制,将广告 (ANQP) 服务提供商与设备上安装的配置文件进行匹配。以下针对 EAP-SIM、EAP-AKA 和 EAP-AKA 的匹配规则是侧重于 EAP-SIM/AKA/AKA 失败的部分规则:</p>
+<pre class="prettyprint"><code>If the FQDN (Fully Qualified Domain Name) matches
+ then the service is a Home Service Provider.
+Else: If the PLMN ID (3GPP Network) matches
+ then the service is a Roaming Service Provider.
+</code></pre>
+<p>第二个条件在 Android 8.0 中进行了修改:</p>
+<pre class="prettyprint"><code>Else: If the PLMN ID (3GPP Network) matches AND the NAI Realm matches
+ then the service is a Roaming Service Provider.
+</code></pre>
+<p>此修改后的条件意味着系统检测不到任何与以前正常工作的服务提供商匹配的项目,因此 Passpoint 设备未自动连接。</p>
+
+<h3 id="workarounds">解决方法</h3>
+
+<p>要解决修改后的匹配条件存在的问题,运营商和服务提供商需要将 <code>NAI Realm</code> 添加到由 Passpoint AP 发布的信息中。</p>
+
+<p>推荐的解决方案是让网络服务提供商实施网络端解决方法,这种方法部署速度最快。设备端解决方法依赖于原始设备制造商 (OEM) 从 Android 开源项目 (AOSP) 获取变更列表 (CL),然后更新在实际应用中的设备。</p>
+
+<h4 id="network_fix_for_carriers_and_passpoint_service_providers">针对运营商和 Passpoint 服务提供商的网络修复</h4>
+
+<p>网络端解决方法需要重新配置网络以添加 <code>NAI
+Realm</code> ANQP 元素(如下文所述)。Passpoint 规范不需要 <code>NAI Realm</code> ANQP 元素,但添加此属性符合 Passpoint 规范,因此符合规范的客户端实现应该不会发生中断。</p>
+
+<ol>
+<li>添加 <code>NAI Realm</code> ANQP 元素。</li>
+<li>设置 <code>NAI Realm</code> 子字段以匹配设备上安装所配置文件的 <code>Realm</code>。</li>
+</ol>
+
+<h4 id="deviceaosp_fix_for_oems">针对原始设备制造商 (OEM) 的设备/AOSP 修复</h4>
+
+<p>要实现设备端解决方法,原始设备制造商 (OEM) 需要选择补丁程序 CL <a href="https://android-review.googlesource.com/c/platform/frameworks/opt/net/wifi/+/718508">aosp/718508</a>。此补丁程序可以在以下系统版本上应用:</p>
+
+<ul>
+<li>Android 8.x</li>
+<li>Android 9</li>
+</ul>
+
+<p>挑选补丁程序后,原始设备制造商 (OEM) 需要更新在实际应用中的设备。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/dalvik/gc-debug.html b/zh-cn/devices/tech/dalvik/gc-debug.html
index 2ed78408..d784208a 100644
--- a/zh-cn/devices/tech/dalvik/gc-debug.html
+++ b/zh-cn/devices/tech/dalvik/gc-debug.html
@@ -22,7 +22,7 @@
<p>本文档介绍如何调试 Android 运行时 (ART) 垃圾回收 (GC) 的正确性和性能问题,并解释了如何使用 GC 验证选项、确定 GC 验证失败的解决方案,以及测量并解决 GC 性能问题。</p>
-<p>有关处理 ART 的说明,请参阅 <a href="index.html">ART 和 Dalvik</a>、<a href="dex-format.html">Dalvik 可执行文件格式</a>以及此 <a href="index.html">ART 和 Dalvik</a> 部分的其他页面。有关验证应用行为的其他帮助信息,请参阅<a href="http://developer.android.com/guide/practices/verifying-apps-art.html">在 Android Runtime (ART) 上验证应用行为</a>。</p>
+<p>有关处理 ART 的说明,请参阅 <a href="index.html">ART 和 Dalvik</a>、<a href="dex-format.html">Dalvik 可执行文件格式</a>以及此 <a href="index.html">ART 和 Dalvik</a> 部分的其他页面。有关验证应用行为的其他帮助信息,请参阅<a href="http://developer.android.com/guide/practices/verifying-apps-art.html">通过 Android 运行时 (ART) 验证应用行为</a>。</p>
<h2 id="art_gc_overview">ART GC 概述</h2>
@@ -36,8 +36,7 @@
<ul>
<li>与 Dalvik 相比,暂停次数从 2 次减少到 1 次。Dalvik 的第一次暂停主要是为了进行根标记,即在 ART 中进行并发标记,让线程标记自己的根,然后马上恢复运行。
- </li><li>与 Dalvik 类似,ART GC 在清除过程开始之前也会暂停 1 次。
-两者在这方面的主要差异在于:在此暂停期间,某些 Dalvik 环节在 ART 中并发进行。这些环节包括 <code>java.lang.ref.Reference</code> 处理、系统弱清除(例如,jni 弱全局等)、重新标记非线程根和卡片预清理。在 ART 暂停期间仍进行的阶段包括扫描脏卡片以及重新标记线程根,这些操作有助于缩短暂停时间。
+ </li><li>与 Dalvik 类似,ART GC 在清除过程开始之前也会暂停 1 次。两者在这方面的主要差异在于:在此暂停期间,某些 Dalvik 环节在 ART 中并发进行。这些环节包括 <code>java.lang.ref.Reference</code> 处理、系统弱清除(例如,jni 弱全局等)、重新标记非线程根和卡片预清理。在 ART 暂停期间仍进行的阶段包括扫描脏卡片以及重新标记线程根,这些操作有助于缩短暂停时间。
</li><li>相对于 Dalvik,ART GC 改进的最后一个方面是粘性 CMS 回收器增加了 GC 吞吐量。不同于普通的分代 GC,粘性 CMS 不移动。系统会将年轻对象保存在一个分配堆栈(基本上是 <code>java.lang.Object</code> 数组)中,而非为其设置一个专属区域。这样可以避免移动所需的对象以维持低暂停次数,但缺点是容易在堆栈中加入大量复杂对象图像而使堆栈变长。
</li></ul>
@@ -209,7 +208,7 @@ adb shell setprop dalvik.vm.checkjni true
adb shell setprop dalvik.vm.jniopts forcecopy
</pre>
-<p>CheckJNI 应捕获错误的一个示例是超出从 <code>GetPrimitiveArrayCritical</code> 获取的数组末端的写入。该操作很可能会破坏 Java 堆。如果写入位于 CheckJNI 红色区域内,则在调用相应 <code>ReleasePrimitiveArrayCritical</code> 时,CheckJNI 将会捕获该问题。否则,写入将最终损坏 Java 堆中的一些随机对象,并可能会导致之后出现 GC 崩溃。<em></em>如果崩溃的内存是引用字段,则 GC 可能会捕获错误并输出“Tried to mark <ptr>not contained by any spaces</ptr>”这一错误消息。</p>
+<p>CheckJNI 应捕获错误的一个示例是超出从 <code>GetPrimitiveArrayCritical</code> 获取的数组末端的写入。该操作很可能会破坏 Java 堆。如果写入位于 CheckJNI 红色区域内,则在调用相应 <code>ReleasePrimitiveArrayCritical</code> 时,CheckJNI 将会捕获该问题。否则,写入将最终损坏 Java 堆中的一些随机对象,并可能会导致之后出现 GC 崩溃。如果崩溃的内存是引用字段,则 GC 可能会捕获错误并输出“<em></em>Tried to mark <ptr> not contained by any spaces</ptr>”这一错误消息。</p>
<p>当 GC 尝试标记无法找到空间的对象时,就会发生此错误。在此检查失败后,GC 会遍历根,并尝试查看无效对象是否为根。结果共有两个选项:对象为根或非根。</p>
diff --git a/zh-cn/devices/tech/dalvik/improvements.html b/zh-cn/devices/tech/dalvik/improvements.html
index 9a7e8f22..6558832b 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/datausage/ebpf-traffic-monitor.html b/zh-cn/devices/tech/datausage/ebpf-traffic-monitor.html
index dfec87fe..fd9a80bf 100644
--- a/zh-cn/devices/tech/datausage/ebpf-traffic-monitor.html
+++ b/zh-cn/devices/tech/datausage/ebpf-traffic-monitor.html
@@ -58,6 +58,7 @@
<li><code>CONFIG_BPF=y</code></li>
<li><code>CONFIG_BPF_SYSCALL=y</code></li>
<li><code>CONFIG_NETFILTER_XT_MATCH_BPF=y</code></li>
+<li><code>CONFIG_INET_UDP_DIAG=y</code></li>
</ol>
<p>验证是否已开启正确配置时,<a href="https://android.googlesource.com/platform/test/vts-testcase/kernel/+/master/config/VtsKernelConfigTest.py" class="external">VTS 内核配置测试</a>非常有用。</p></li>
@@ -88,16 +89,19 @@
<h4 id="manual-testing">手动测试</h4>
-<p><code>system/netd/</code> 中有一些单元测试(<a href="https://android.googlesource.com/platform/system/netd/+/master/server/TrafficControllerTest.cpp" class="external"><code>netd_unit_test</code></a>、<a href="https://android.googlesource.com/platform/system/netd/+/master/tests/bpf_base_test.cpp" class="external"><code>netd_integration_test</code></a> 和 <a href="https://android.googlesource.com/platform/system/netd/+/master/libbpf/BpfNetworkStatsTest.cpp" class="external"><code>libbpf_test</code></a>)。系统支持 dumpsys,以便手动检查状态。命令 <strong><code>dumpsys netd</code></strong> 可显示 <code>trafficController</code> 模块的基本状态以及 eBPF 是否已正确开启。如果 eBPF 处于开启状态,命令 <strong><code>dumpsys netd trafficcontroller</code></strong> 会显示每个 eBPF 映射的详细内容,包括带标记套接字信息、每个标记的统计数据、UID 和 iface,以及所有者 UID 匹配项。</p>
+<p><code>system/netd/</code> 中有一些单元测试(<a href="https://android.googlesource.com/platform/system/netd/+/master/server/TrafficControllerTest.cpp" class="external"><code>netd_unit_test</code></a>、<a href="https://android.googlesource.com/platform/system/netd/+/master/tests/bpf_base_test.cpp" class="external"><code>netd_integration_test</code></a> 和 <a href="https://android.googlesource.com/platform/system/netd/+/master/libbpf/BpfNetworkStatsTest.cpp" class="external"><code>libbpf_test</code></a>)。系统支持 dumpsys,以便手动检查状态。使用命令 <strong><code>dumpsys netd</code></strong> 可显示 <code>trafficController</code> 模块的基本状态以及 eBPF 是否已正确开启。如果 eBPF 处于开启状态,命令 <strong><code>dumpsys netd trafficcontroller</code></strong> 会显示每个 eBPF 映射的详细内容,包括带标记套接字信息、每个标记的统计数据、UID 和 iface,以及所有者 UID 匹配项。</p>
<h3 id="test-locations">测试所在位置</h3>
<p>CTS 测试位于以下位置:</p>
<ul>
-<li class="external"><a href="https://android.googlesource.com/platform/cts/+/master/tests/tests/net/src/android/net/cts/TrafficStatsTest.java">https://android.googlesource.com/platform/cts/+/master/tests/tests/net/src/android/net/cts/TrafficStatsTest.java</a></li>
-<li class="external"><a href="https://android.googlesource.com/platform/cts/+/master/tests/tests/app.usage/src/android/app/usage/cts/NetworkUsageStatsTest.java">https://android.googlesource.com/platform/cts/+/master/tests/tests/app.usage/src/android/app/usage/cts/NetworkUsageStatsTest.java</a></li>
-<li class="external"><a href="https://android.googlesource.com/platform/system/netd/+/master/tests/bpf_base_test.cpp">https://android.googlesource.com/platform/system/netd/+/master/tests/bpf_base_test.cpp</a></li>
+<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/tests/net/src/android/net/cts/TrafficStatsTest.java">https://android.googlesource.com/platform/cts/+/master/tests/tests/net/src/android/net/cts/TrafficStatsTest.java</a>
+{: .external} </li>
+<li><a href="https://android.googlesource.com/platform/cts/+/master/tests/tests/app.usage/src/android/app/usage/cts/NetworkUsageStatsTest.java">https://android.googlesource.com/platform/cts/+/master/tests/tests/app.usage/src/android/app/usage/cts/NetworkUsageStatsTest.java</a>
+{: .external} </li>
+<li><a href="https://android.googlesource.com/platform/system/netd/+/master/tests/bpf_base_test.cpp">https://android.googlesource.com/platform/system/netd/+/master/tests/bpf_base_test.cpp</a>
+{: .external} </li>
</ul>
<p>VTS 测试位于以下位置:<a href="https://android.googlesource.com/kernel/tests/+/master/net/test/bpf_test.py" class="external">https://android.googlesource.com/kernel/tests/+/master/net/test/bpf_test.py</a>。</p>
@@ -105,8 +109,10 @@
<p>单元测试位于以下位置:</p>
<ul>
-<li class="external"><a href="https://android.googlesource.com/platform/system/netd/+/master/libbpf/BpfNetworkStatsTest.cpp">https://android.googlesource.com/platform/system/netd/+/master/libbpf/BpfNetworkStatsTest.cpp</a></li>
-<li class="external"><a href="https://android.googlesource.com/platform/system/netd/+/master/server/TrafficControllerTest.cpp">https://android.googlesource.com/platform/system/netd/+/master/server/TrafficControllerTest.cpp</a></li>
+<li><a href="https://android.googlesource.com/platform/system/netd/+/master/libbpf/BpfNetworkStatsTest.cpp">https://android.googlesource.com/platform/system/netd/+/master/libbpf/BpfNetworkStatsTest.cpp</a>
+{: .external} </li>
+<li><a href="https://android.googlesource.com/platform/system/netd/+/master/server/TrafficControllerTest.cpp">https://android.googlesource.com/platform/system/netd/+/master/server/TrafficControllerTest.cpp</a>
+{: .external} </li>
</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/datausage/kernel-overview.html b/zh-cn/devices/tech/datausage/kernel-overview.html
index d63bb05e..44f71164 100644
--- a/zh-cn/devices/tech/datausage/kernel-overview.html
+++ b/zh-cn/devices/tech/datausage/kernel-overview.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/datausage/tags-explained.html b/zh-cn/devices/tech/datausage/tags-explained.html
index 814136e8..e97b4a43 100644
--- a/zh-cn/devices/tech/datausage/tags-explained.html
+++ b/zh-cn/devices/tech/datausage/tags-explained.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/debug/gdb.html b/zh-cn/devices/tech/debug/gdb.html
index 67e0e5ac..d708a448 100644
--- a/zh-cn/devices/tech/debug/gdb.html
+++ b/zh-cn/devices/tech/debug/gdb.html
@@ -20,7 +20,18 @@
limitations under the License.
-->
-<p>GNU 项目调试程序 (GDB) 是常用的 Unix 调试程序。本页详细介绍了如何使用 <code>gdb</code> 调试 Android 应用和进程(面向平台开发者)。对于第三方应用开发,请参阅<a href="https://developer.android.com/studio/debug/index.html">调试您的应用</a>。</p>
+<p>GNU 项目调试程序 (GDB) 是常用的 Unix 调试程序。本页详细介绍了如何使用 <code>gdb</code> 调试 Android 应用和进程(面向平台开发者)。对于第三方应用开发,请参阅<a class="external" href="https://developer.android.com/studio/debug/index.html">调试应用</a>。</p>
+
+<h2 id="prerequisites">前提条件</h2>
+
+<p>要使用 GDB 调试应用和进程,请执行以下操作:</p>
+
+ <ul>
+ <li>使用 <code>envsetup.sh</code> 设置环境
+ </li><li>运行 <code>lunch</code> 命令</li>
+ </ul>
+
+<p>如需获得环境设置方面的更多帮助,请参阅<a href="/setup/build/building#initialize">编译准备工作</a>。</p>
<h2 id="running">调试运行中的应用或进程</h2>
@@ -30,7 +41,7 @@
gdbclient.py -p 1234
</pre>
-<p>此脚本会设置端口转发,在设备上启动相应的 <code>gdbserver</code>,在主机上启动相应的 <code>gdb</code>,配置 <code>gdb</code> 以找出符号,然后将 <code>gdb</code> 连接到远程 <code>gdbserver</code>。</p>
+<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>
@@ -62,7 +73,7 @@ gdbclient.py -p <var>APP_PID</var>
<p>最后,在 <code>gdb</code> 提示处输入 <strong>continue</strong>。</p>
-<p class="note"><strong>注意</strong>:如果您指定了错误的 <code>gdbserver</code>,将会收到没任何帮助的错误消息(例如“<code>Reply contains invalid hex digit 59</code>”)。</p>
+<p class="note"><strong>注意</strong>:如果您指定了错误的 <code>gdbserver</code>,将会收到没有任何帮助的错误消息(例如“<code>Reply contains invalid hex digit 59</code>”)。</p>
<h2 id="app-startup">调试应用启动</h2>
@@ -75,7 +86,7 @@ gdbclient.py -p <var>APP_PID</var>
<li><em></em>依次转到“设置”&gt;“开发者选项”&gt;“选择调试应用”,并从列表中选择您的应用,然后按<strong>等待调试程序</strong>。</li>
<li>启动应用,您可以从启动器启动,也可以在命令行中运行以下命令来启动:<pre class="devsite-terminal devsite-click-to-copy">
-am start -a android.intent.action.MAIN -n <var>APP_NAME</var>/.<var>APP_ACTIVITY</var>
+adb shell am start -a android.intent.action.MAIN -n <var>APP_NAME</var>/.<var>APP_ACTIVITY</var>
</pre></li>
<li>等待应用加载,然后等待系统显示一个对话框提示您应用正在等待附加调试程序。</li>
diff --git a/zh-cn/devices/tech/debug/index.html b/zh-cn/devices/tech/debug/index.html
index 2fd55911..f6ce152e 100644
--- a/zh-cn/devices/tech/debug/index.html
+++ b/zh-cn/devices/tech/debug/index.html
@@ -24,7 +24,7 @@
<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">RAM</a> 使用情况,如何使用 <a href="/devices/tech/debug/asan.html">AddressSanitizer</a> 检测原生代码中的内存错误,如何评估<a href="/devices/tech/debug/eval_perf.html">性能问题</a>(包括 <a href="/devices/tech/debug/systrace">systrace</a>),以及如何使用 <a href="/devices/tech/debug/gdb.html">GNU 调试程序 (GDB)</a> 和其他调试工具。</p>
<h2 id="debuggerd">崩溃转储</h2>
diff --git a/zh-cn/devices/tech/debug/intsan.html b/zh-cn/devices/tech/debug/intsan.html
index c8fcb65d..24b5d4b2 100644
--- a/zh-cn/devices/tech/debug/intsan.html
+++ b/zh-cn/devices/tech/debug/intsan.html
@@ -24,7 +24,7 @@
如果发生意外的整数溢出,可能会导致内存损坏,或导致与内存访问或内存分配关联的变量中出现信息披露漏洞。为了解决这个问题,我们在 Android 7.0 中添加了 Clang 的 <a href="https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html">UndefinedBehaviorSanitizer</a> (UBSan) 有符号和无符号整数溢出排错程序,以<a href="https://android-developers.googleblog.com/2016/05/hardening-media-stack.html">强化媒体框架</a>。在 Android 9 中,我们<a href="https://android-developers.googleblog.com/2018/06/compiler-based-security-mitigations-in.html">将 UBSan 扩展为涵盖更多组件</a>,并改进了对它的编译系统支持。
</p>
<p>
-如果发生有符号或无符号整数溢出,溢出排错功能可以检测可能溢出的算术指令,从而安全地中止进程。这些排错程序可以缓解根本原因是整数溢出的各种内存损坏和信息披露漏洞问题,例如原始 Stagefright 漏洞。
+这旨在增加对算术运算/指令(可能溢出)的检查,以便在实际发生溢出时安全地终止进程。这些排错程序可以减少主要是由整数溢出导致的各种内存损坏和信息披露漏洞,例如原始 Stagefright 漏洞。
</p>
<h2 id="examples-and-source">示例和源代码</h2>
<p>
@@ -63,7 +63,7 @@ LOCAL_SANITIZE_DIAG := signed-integer-overflow, unsigned-integer-overflow</pre>
<h3 id="intsan-in-bp">在蓝图文件中支持 IntSan</h3>
<p>
-要在蓝图文件(例如 <a href="https://android.googlesource.com/platform/external/libnl/+/master/Android.bp#64"><code>/platform/external/libnl/Android.bp</code></a>)中启用整数溢出排错功能,请添加以下代码:
+要在 Blueprint 文件(例如 <a href="https://android.googlesource.com/platform/external/libnl/+/master/Android.bp#64"><code>/platform/external/libnl/Android.bp</code></a>)中启用整数溢出排错功能,请添加以下代码:
</p>
<pre class="prettyprint"> sanitize: {
@@ -94,7 +94,7 @@ LOCAL_SANITIZE_DIAG := signed-integer-overflow, unsigned-integer-overflow</pre>
},
blacklist: "modulename_blacklist.txt",
},</pre>
-<aside class="caution"><strong>注意</strong>:在 Android 9 中,<strong>必须</strong>按照上文所述为静态二进制文件/库指定各个排错程序;<code>integer_overflow</code> 标志不支持静态二进制文件/库。在逐个指定时,请同时使用有符号和无符号排错程序。</aside>
+<aside class="caution"><strong>注意</strong>:在 Android 9 中,<strong>必须</strong>按照上文所述为静态二进制文件/库指定各个排错程序;<code>integer_overflow</code> 标记不支持静态二进制文件/库。在逐个指定时,请同时使用有符号和无符号排错程序。</aside>
<h3 id="troubleshooting">问题排查</h3>
<p>
@@ -122,7 +122,7 @@ Abort message: 'ubsan: sub-overflow'</pre>
<ul>
<li>重构代码以避免溢出(<a href="https://android-review.googlesource.com/c/platform/frameworks/av/+/572808">示例</a>)
</li><li>通过 Clang 的 <a href="https://clang.llvm.org/docs/LanguageExtensions.html#checked-arithmetic-builtins">__builtin_*_overflow</a> 函数实现显式溢出(<a href="https://android-review.googlesource.com/c/platform/frameworks/av/+/588160">示例</a>)
-</li><li>通过属性来禁止对函数进行排错(<a href="https://android-review.googlesource.com/c/platform/frameworks/base/+/531720">示例</a>)
+</li><li>通过指定 <code>no_sanitize</code> 属性来停用函数中的排错功能(<a href="https://android-review.googlesource.com/c/platform/frameworks/base/+/531720">示例</a>)
</li><li>通过黑名单文件来禁止对函数或源文件进行排错(<a href="https://android-review.googlesource.com/c/platform/frameworks/base/+/574222">示例</a>)
</li></ul>
<p>
@@ -130,11 +130,11 @@ Abort message: 'ubsan: sub-overflow'</pre>
</p>
<p>
可能导致良性溢出的常见模式包括:
-</p><ul>
-<li>在转换为有符号类型之前发生无符号溢出的隐式类型转换(<a href="https://android-review.googlesource.com/c/platform/frameworks/av/+/574011">示例</a>)
+</p>
+<ul>
+<li>在转换为有符号类型之前发生无符号溢出的<a href="http://www.cplusplus.com/doc/tutorial/typecasting/" class="external">隐式类型转换</a>(<a href="https://android-review.googlesource.com/c/platform/frameworks/av/+/574011">示例</a>)
</li><li>删除关联的列表,且删除时循环索引会递减(<a href="https://android-review.googlesource.com/c/platform/frameworks/base/+/588158">示例</a>)
-</li><li>将无符号类型指定为 -1,作为最大值的简写形式(<a href="https://android-review.googlesource.com/c/platform/frameworks/native/+/574088/1/services/surfaceflinger/Layer.cpp">示例</a>)
-</li><li>在条件中使无符号整数递减的循环(<a href="https://android-review.googlesource.com/c/platform/frameworks/native/+/573763/1/services/inputflinger/InputReader.cpp">示例</a>、<a href="https://android-review.googlesource.com/c/platform/frameworks/rs/+/572756">示例</a>)</li></ul>
+</li><li>将无符号类型指定为 -1,而不是指定实际最大值(<a href="https://android-review.googlesource.com/c/platform/frameworks/native/+/574088/1/services/surfaceflinger/Layer.cpp">示例</a>)</li><li>在条件中使无符号整数递减的循环(<a href="https://android-review.googlesource.com/c/platform/frameworks/native/+/573763/1/services/inputflinger/InputReader.cpp">示例</a>、<a href="https://android-review.googlesource.com/c/platform/frameworks/rs/+/572756">示例</a>)</li></ul>
<p>
在停用排错功能之前,开发者最好是确保排错程序检测到的溢出确实是良性的,并且没有意外的副作用或安全隐患。
</p>
diff --git a/zh-cn/devices/tech/debug/native_stack_dump.html b/zh-cn/devices/tech/debug/native_stack_dump.html
new file mode 100644
index 00000000..c18aa767
--- /dev/null
+++ b/zh-cn/devices/tech/debug/native_stack_dump.html
@@ -0,0 +1,164 @@
+<html devsite><head>
+
+ <meta name="book_path" value="/_book.yaml"/>
+
+ <meta name="project_path" value="/_project.yaml"/>
+</head>
+<body>
+<!--
+ Copyright 2019 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="dumping_user_and_kernel_stacks_on_kernel_events" class="page-title">发生内核事件时转储用户和内核堆栈</h1>
+
+<p>如果在系统执行内核中的特定代码路径时转储本机内核和用户空间堆栈,将有助于您在调试特定行为(例如在日志中发现的错误)时了解代码流。一种此类情况是:您在日志中发现了 SELinux 拒绝事件消息,但想知道哪个路径触发了这些消息,以便更好地了解为什么发生这种情况。</p>
+
+<p>在本文中,我们将向您介绍如何使用内核工具和 BPF 编译器集合 (BCC) 在 Android 系统中发生内核事件时转储用户和内核堆栈。BCC 是一个用于创建高效内核跟踪功能的工具包。</p>
+
+<h2 id="installing_adeb">安装 adeb</h2>
+
+<p><a href="https://android.googlesource.com/platform/external/adeb">adeb</a> 项目会在您的 Android 设备上安装 chroot 环境。我们将在文章的后续步骤中使用 adeb。</p>
+
+<p>按照 <a href="https://android.googlesource.com/platform/external/adeb/+/master/README.md">adeb 自述文件</a>中的说明安装 adeb。</p>
+
+<p>运行以下命令,在目标 Android 设备上安装 adeb:
+</p><pre class="devsite-terminal devsite-click-to-copy">
+adeb prepare --full
+</pre>
+adeb 预封装了 BCC,因此上一步还会安装 BCC 的 <code>trace</code> 实用程序,在后续步骤中我们需要使用该程序。<p></p>
+
+<h2 id="example_understanding_which_path_triggered_an_selinux_denial">示例:了解哪个路径触发了 SELinux 拒绝事件</h2>
+
+<h3 id="adding_a_tracepoint_to_the_kernel">向内核添加跟踪点</h3>
+
+<p>下面的 diff 会在内核中记录了 SELinux 拒绝事件的位置添加一个跟踪点。在本文的后续部分,我们需要将它与 BCC 配合使用。您可以将该 diff 应用于内核源代码,以便添加 SELinux 拒绝事件跟踪点。如果该 diff 不是非常适用,您可以将其作为参考来手动对其进行修补。</p>
+
+<pre class="prettyprint">
+diff --git a/include/trace/events/selinux.h b/include/trace/events/selinux.h
+new file mode 100644
+index 000000000000..dac185062634
+--- /dev/null
++++ b/include/trace/events/selinux.h
+@@ -0,0 +1,34 @@
++#undef TRACE_SYSTEM
++#define TRACE_SYSTEM selinux
++
++#if !defined(_TRACE_SELINUX_H) || defined(TRACE_HEADER_MULTI_READ)
++#define _TRACE_SELINUX_H
++
++#include &lt;linux/ktime.h&gt;
++#include &lt;linux/tracepoint.h&gt;
++
++TRACE_EVENT(selinux_denied,
++
++ TP_PROTO(int cls, int av),
++
++ TP_ARGS(cls, av),
++
++ TP_STRUCT__entry(
++ __field( int, cls )
++ __field( int, av )
++ ),
++
++ TP_fast_assign(
++ __entry-&gt;cls = cls;
++ __entry-&gt;av = av;
++ ),
++
++ TP_printk("denied %d %d",
++ __entry-&gt;cls,
++ __entry-&gt;av)
++);
++
++#endif /* _TRACE_SELINUX_H */
++
++/* This part ust be outside protection */
++#include &lt;trace/define_trace.&gt;
+diff --git a/security/selinux/avc.c b/security/selinux/avc.c
+index 84d9a2e2bbaf..ab04b7c2dd01 100644
+--- a/security/selinux/avc.c
++++ b/security/selinux/avc.c
+@@ -34,6 +34,9 @@
+ #include "avc_ss.h"
+ #include "classmap.h"
+
++#define CREATE_TRACE_POINTS
++#include &lt;trace/events/selinux.h&gt;
++
+ #define AVC_CACHE_SLOTS 512
+ #define AVC_DEF_CACHE_THRESHOLD 512
+ #define AVC_CACHE_RECLAIM 16
+@@ -713,6 +716,12 @@ static void avc_audit_pre_callback(struct audit_buffer *ab, void *a)
+ struct common_audit_data *ad = a;
+ audit_log_format(ab, "avc: %s ",
+ ad-&gt;selinux_audit_data-&gt;denied ? "denied" : "granted");
++
++ if (ad-&gt;selinux_audit_data-&gt;denied) {
++ trace_selinux_denied(ad-&gt;selinux_audit_data-&gt;tclass,
++ ad-&gt;selinux_audit_data-&gt;audited);
++ }
++
+ avc_dump_av(ab, ad-&gt;selinux_audit_data-&gt;tclass,
+ ad-&gt;selinux_audit_data-&gt;audited);
+ audit_log_format(ab, " for ");
+</pre>
+
+<h3 id="tracing_the_user_and_kernel_stacks">跟踪用户和内核堆栈</h3>
+
+<p>要在命中 SELinux 拒绝事件跟踪点时跟踪堆栈,请运行以下命令:
+</p><pre class="prettyprint">
+<code class="devsite-terminal">adeb shell</code>
+<code class="devsite-terminal">trace -K -U 't:selinux:selinux_denial'</code>
+</pre><p></p>
+
+<p>当拒绝事件被触发时,您应该会看到诸如以下内容:
+</p><pre class="prettyprint">
+2286 2434 Binder:2286_4 selinux_denied
+ avc_audit_pre_callback+0xd8 [kernel]
+ avc_audit_pre_callback+0xd8 [kernel]
+ common_lsm_audit+0x64 [kernel]
+ slow_avc_audit+0x74 [kernel]
+ avc_has_perm+0xb8 [kernel]
+ selinux_binder_transfer_file+0x158 [kernel]
+ security_binder_transfer_file+0x50 [kernel]
+ binder_translate_fd+0xcc [kernel]
+ binder_transaction+0x1b64 [kernel]
+ binder_ioctl+0xadc [kernel]
+ do_vfs_ioctl+0x5c8 [kernel]
+ sys_ioctl+0x88 [kernel]
+ __sys_trace_return+0x0 [kernel]
+ __ioctl+0x8 [libc.so]
+ android::IPCThreadState::talkWithDriver(bool)+0x104 [libbinder.so]
+ android::IPCThreadState::waitForResponse(android::Parcel<em>, int</em>)+0x40
+ [libbinder.so]
+ android::IPCThreadState::executeCommand(int)+0x460 [libbinder.so]
+ android::IPCThreadState::getAndExecuteCommand()+0xa0 [libbinder.so]
+ android::IPCThreadState::joinThreadPool(bool)+0x40 [libbinder.so]
+ [unknown] [libbinder.so]
+ android::Thread::_threadLoop(void<em>)+0x12c [libutils.so]
+ android::AndroidRuntime::javaThreadShell(void</em>)+0x90 [libandroid_runtime.so]
+ __pthread_start(void*)+0x28 [libc.so]
+ __start_thread+0x48 [libc.so]
+</pre><p></p>
+
+<p>上面的调用链是一个统一的内核和用户原生调用链,可让您更好地查看从用户空间直到内核中发生拒绝事件的位置的代码流。在上面的示例调用链中,从用户空间启动的 Binder 事务涉及传递文件描述符。由于文件描述符没有所需的 SELinux 政策设置,因此 SELinux 拒绝了它并且 Binder 事务失败了。</p>
+
+<p>在大多数情况下,通过更改传递给 <code>trace</code> 命令的参数,可以使用相同的跟踪技术在发生系统调用、内核函数输入等事件时转储堆栈。</p>
+
+<h2 id="additional_references">其他参考资料</h2>
+
+<p>要详细了解 <code>trace</code>,请参阅 <a href="https://android.googlesource.com/platform/external/bcc/+/master/tools/trace_example.txt">BCC 跟踪工具文档</a>。要详细了解如何在 Android 设备上运行 BCC,请参阅 <a href="https://android.googlesource.com/platform/external/adeb/+/master/BCC.md">adeb 项目的 BCC 指南</a>。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/debug/sanitizers.html b/zh-cn/devices/tech/debug/sanitizers.html
index 6568f93c..da390a94 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#addresssanitizer_in_the_apps">应用级别</a>通过 asanwrapper 进行 <a href="/devices/tech/debug/asan">ASan 插桩</a>。
+Android 允许在完整编译级别和在<a href="/devices/tech/debug/asan">应用级别</a>通过 asanwrapper 进行 <a href="/devices/tech/debug/asan#addresssanitizer_in_the_apps">ASan 插桩</a>。
</p>
<p>
AddressSanitizer 对所有与内存相关的函数调用(包括 alloca、malloc 和 free)进行插桩,并使用被读取或写入时会触发 ASan 回调的内存填充所有变量和已分配的内存区域。
diff --git a/zh-cn/devices/tech/display/adaptive-icons.html b/zh-cn/devices/tech/display/adaptive-icons.html
index 2c025a60..9b62b552 100644
--- a/zh-cn/devices/tech/display/adaptive-icons.html
+++ b/zh-cn/devices/tech/display/adaptive-icons.html
@@ -96,7 +96,7 @@
要验证实现,请在替换其需要的遮罩后,查看图标是否可以在 Launcher3、设置、概览和设置中正确呈现。此外,您还可以在图形 CTS TestCase 中运行 AdaptiveIconDrawableTest.java 和 AdaptiveIconMaskTest.java 来测试实现。
</p>
<p>
-推荐的手动测试用例可以在以下位置找到:platform/development/samples/AdaptiveIconSample/。
+可以在以下位置找到推荐的手动测试用例:platform/development/samples/AdaptiveIconSample/。
</p>
<h2>已知问题</h2>
<p>
@@ -106,6 +106,6 @@
<p>
这些问题可以通过以下方式解决:</p><ul>
<li>应在 [0,100] x [0,100] 坐标系中定义遮罩。
- </li><li>确保用于自适应图标(启动器图标、快捷方式)的图片的四边均保留了充足的内边距 (25%)。</li></ul>
+ </li><li>确保用于自适应图标(启动器图标、快捷方式)的图片在四侧均保留了充足的内边距 (25%)。</li></ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/display/color-mgmt.html b/zh-cn/devices/tech/display/color-mgmt.html
index f6c3bcf9..d4e92ea2 100644
--- a/zh-cn/devices/tech/display/color-mgmt.html
+++ b/zh-cn/devices/tech/display/color-mgmt.html
@@ -46,10 +46,9 @@
<p>Android 还提供以下可选的扩展程序:</p>
<ul>
<li>
-<a href="https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt" class="external">EGL_EXT_colorspace_scrgb_linear</a>。该扩展程序可提供一个新的颜色空间选项 (scRGB),供应用在创建 EGLSurface 时进行选择。scRGB 颜色空间可定义与 sRGB 具有相同白点和颜色基准(以便与 sRGB 向后兼容)的线性显示引用空间。此扩展程序应该不需要驱动程序支持,而且可以在 Android EGL 封装容器中实现。为了正常发挥作用,此扩展程序需支持 16 位浮点 (FP16)。</li>
+<a href="https://www.khronos.org/registry/egl/extensions/EXT/EGL_EXT_gl_colorspace_scrgb_linear.txt" class="external">EGL_EXT_colorspace_scrgb_linear</a>。该扩展程序可提供一个新的颜色空间选项 (scRGB),供应用在创建 EGLSurface 时进行选择。scRGB 颜色空间可定义与 sRGB 具有相同白点和颜色基准(以便与 sRGB 向后兼容)的线性显示引用空间。此扩展程序应该不需要驱动程序支持,而且可以在 Android EGL 封装容器中实现。为了正常发挥作用,此扩展程序需支持 16 位浮点数 (FP16)。</li>
<li>
-<a href="https://github.com/KhronosGroup/EGL-Registry/pull/10/files" class="external">EGL_KHR_gl_colorspace_display_p3
-和 EGL_EXT_gl_colorspace_display_p3_linear</a>。对于需要使用 Display-P3 格式默认帧缓冲区来轻松实现显示设备的 sRGB 渲染的应用,此扩展程序允许创建将由支持该功能的 OpenGL 上下文采用 Display-P3 格式进行渲染的 EGLSurface。此扩展程序可以在 EGL 驱动程序封装容器中实现。</li>
+<a href="https://www.khronos.org/registry/EGL/extensions/EXT/EGL_EXT_gl_colorspace_display_p3.txt" class="external">EGL_EXT_gl_colorspace_display_p3 和 EGL_EXT_gl_colorspace_display_p3_linear</a>。对于需要使用 Display-P3 格式默认帧缓冲区来轻松实现显示设备的 sRGB 渲染的应用,此扩展程序允许创建将由支持该功能的 OpenGL 上下文采用 Display-P3 格式进行渲染的 EGLSurface。此扩展程序可以在 EGL 驱动程序封装容器中实现。</li>
<li>
<a href="https://www.khronos.org/registry/vulkan/specs/1.0-extensions/html/vkspec.html#VK_EXT_swapchain_colorspace" class="external">VK_EXT_swapchain_colorspace</a> (Vulkan)。可让应用通过它们正在使用的颜色空间来标记交换链。包括一些常见颜色空间,例如 DCI-P3、Display-P3、AdobeRGB、BT2020 等。</li>
</ul>
@@ -65,14 +64,14 @@
<h2>测试</h2>
<p>要测试颜色管理,请使用 <code>opengl/tests</code> 中的以下资源:</p>
<ul>
-<li><code>gl2_basic</code>。用于请求 Display-P3 颜色空间的简单 OpenGL 演示。</li>
+<li><code>gl2_basic</code>。请求 Display-P3 颜色空间的简单 OpenGL 演示。</li>
<li><code>
<a href="https://android.googlesource.com/platform/frameworks/native/+/master/opengl/tests/EGLTest/EGL_test.cpp">EGL_test</a></code>。测试必要的扩展程序和配置支持(10:10:10:2 和 FP16)。</li>
<li><code>test_wide_color</code>。以与 SurfaceFlinger 创建 surface 的方式相同的方式创建 surface(例如配置、颜色空间、像素格式)。</li>
</ul>
<h2>参考实现</h2>
-<p>有关参考实现,请参阅 <code>frameworks/native</code>。有关标题,请参阅:</p>
+<p>有关参考实现,请参阅 <code>frameworks/native</code>。对于标题,请参阅:</p>
<ul>
<li>
<code><a href="https://android.googlesource.com/platform/system/core/+/master/libsystem/include/system/graphics.h">system/core/include/system/graphics.h</a></code></li>
diff --git a/zh-cn/devices/tech/display/night-light.html b/zh-cn/devices/tech/display/night-light.html
index 43fa9aa3..ab90ec98 100644
--- a/zh-cn/devices/tech/display/night-light.html
+++ b/zh-cn/devices/tech/display/night-light.html
@@ -28,8 +28,7 @@
</p>
<h2 id="implementation">实现</h2>
<p>
-设备制造商可以使用以下路径中定义的下列标记来启用该功能的默认实现:
-<code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml">
+设备制造商可以使用以下文件中定义的下列标记来启用该功能的默认实现:<code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/res/res/values/config.xml">
/android/frameworks/base/core/res/res/values/config.xml</a></code>
</p><pre class="devsite-click-to-copy">
diff --git a/zh-cn/devices/tech/display/pip.html b/zh-cn/devices/tech/display/pip.html
index b9f6824e..81dccc22 100644
--- a/zh-cn/devices/tech/display/pip.html
+++ b/zh-cn/devices/tech/display/pip.html
@@ -34,13 +34,11 @@ Android 8.0 中新增了更多方法,包括 <code>setPictureInPictureParams()<
</p>
<h2 id="device-requirements">设备要求</h2>
<p>
-要支持画中画功能,请在 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/pm/PackageManager.java">/android/frameworks/base/core/java/android/content/pm/PackageManager.java</a></code> 中启用 <code>PackageManager#FEATURE_PICTURE_IN_PICTURE</code> 系统功能。
-支持画中画功能的设备的最小屏幕宽度必须大于 220dp。与分屏多窗口类似,画中画支持多个 Activity 同时在屏幕上运行。因此,设备的 CPU 和 RAM 要足以支持这类使用情形。
+要支持画中画功能,请在 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/content/pm/PackageManager.java">/android/frameworks/base/core/java/android/content/pm/PackageManager.java</a></code> 中启用 <code>PackageManager#FEATURE_PICTURE_IN_PICTURE</code> 系统功能。支持画中画功能的设备的最小屏幕宽度必须大于 220dp。与分屏多窗口类似,画中画支持多个 Activity 同时在屏幕上运行。因此,设备的 CPU 和 RAM 要足以支持这类使用情形。
</p>
<h2 id="implementation">实现</h2>
<p>
-大多数 Activity 生命周期管理都是由系统的 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/am/">ActivityManager</a></code> 和 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/wm/">WindowManager</a></code> 组件协作完成的。
-相应的参考界面实现位于 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/">SystemUI</a></code> 软件包中。
+大多数 Activity 生命周期管理都是由系统的 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/am/">ActivityManager</a></code> 和 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/wm/">WindowManager</a></code> 组件协作完成的。相应的参考界面实现位于 <code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/">SystemUI</a></code> 软件包中。
</p>
<p>
@@ -52,7 +50,7 @@ Android 8.0 中新增了更多方法,包括 <code>setPictureInPictureParams()<
<li><strong><code>ActivityStackSupervisor</code></strong>:从 <code>ActivityManagerService</code> 调用,以向置顶堆栈移入任务或从中移出任务,必要时会更新 <code>WindowManager</code>。</li>
<li><strong><code>PinnedStackWindowController</code></strong>:来自 <code>ActivityManager</code> 的 <code>WindowManager</code> 接口。</li>
<li><strong><code>PinnedStackController</code></strong>:将系统中的变化告知 <code>SystemUI</code>,例如 IME 显示/隐藏、宽高比变化、操作变化。</li>
- <li><strong><code>BoundsAnimationController</code></strong>:以调整大小时不触发配置更改的方式,对画中画 Activity 窗口进行动画处理。</li>
+ <li><strong><code>BoundsAnimationController</code></strong>:以在调整大小的过程中不触发配置更改的方式,对画中画 Activity 窗口进行动画处理。</li>
<li><strong><code>PipSnapAlgorithm</code></strong>:系统和 SystemUI 中使用的共享类,可控制屏幕边缘附近的画中画窗口的贴靠行为。</li>
</ul>
@@ -61,12 +59,12 @@ Android 8.0 中新增了更多方法,包括 <code>setPictureInPictureParams()<
设备制造商可以在该实现的基础上做进一步的开发,只要所做更改不影响 CDD 所定义的内在行为即可。以下是对相关类的简单介绍:</p>
<ul>
<li><strong><code>PipManager</code></strong>:随 <code>SystemUI</code> 启动的 <code>SystemUI</code> 组件。</li>
- <li><strong><code>PipTouchHandler</code></strong>:触摸处理程序,用于控制操纵画中画窗口的手势。仅在画中画的输入使用方处于活动状态时使用(请参阅 <code>InputConsumerController</code>)。在此处理程序中可添加新手势。</li>
- <li><strong><code>PipMotionHelper</code></strong>:一个辅助类,用于跟踪画中画位置和屏幕上允许的区域。通过这个类调用 <code>ActivityManagerService</code> 可更新或调整画中画的位置和大小。</li>
+ <li><strong><code>PipTouchHandler</code></strong>:触摸处理程序,用于控制操纵画中画窗口的手势。仅在画中画的输入使用方处于活动状态时使用(请参阅 <code>InputConsumerController</code>)。可在此处理程序中添加新手势。</li>
+ <li><strong><code>PipMotionHelper</code></strong>:一个辅助类,用于跟踪画中画的位置和屏幕上允许的区域。通过这个类调用 <code>ActivityManagerService</code> 可更新或调整画中画的位置和大小。</li>
<li><strong><code>PipMenuActivityController</code></strong>:用于启动一个 Activity,以便显示当前画中画中的 Activity 提供的操作。所启动的 Activity 属于任务叠加层 Activity,会移除上层的输入使用方,以使自身进入可互动状态。</li>
<li><strong><code>PipMenuActivity</code></strong>:菜单 Activity 的实现。</li>
- <li><strong><code>PipMediaController</code></strong> :当媒体会话的变化可能会影响画中画上的默认操作时更新 <code>SystemUI</code> 的侦听器。</li>
- <li><strong><code>PipNotificationController</code></strong>:确保在用户使用画中画功能时显示一条处于活动状态的通知的控制器。</li>
+ <li><strong><code>PipMediaController</code></strong>:当媒体会话的变化可能会影响画中画上的默认操作时更新 <code>SystemUI</code> 的侦听器。</li>
+ <li><strong><code>PipNotificationController</code></strong>:确保在用户使用画中画功能时显示一条有效通知的控制器。</li>
<li><strong><code>PipDismissViewController</code></strong>:当用户开始与画中画进行互动时向用户显示的叠加层,提示用户可以关闭画中画。</li>
</ul>
<h2 id="default-placement">默认显示位置</h2>
diff --git a/zh-cn/devices/tech/display/rotate-suggestions.html b/zh-cn/devices/tech/display/rotate-suggestions.html
index 8ba60951..3b6f4fe7 100644
--- a/zh-cn/devices/tech/display/rotate-suggestions.html
+++ b/zh-cn/devices/tech/display/rotate-suggestions.html
@@ -27,7 +27,7 @@
当设备处于旋转锁定模式时,用户可以将其屏幕锁定为顶层的可见 Activity 支持的任何旋转方式(假设当前存在系统限制)。如果顶层 Activity 可以在自动屏幕旋转模式下以多种旋转方式呈现,则应在旋转锁定模式下提供相同的选项(根据 Activity 的 <code>screenOrientation</code> 设置,会有一些例外情况)。
</p>
<p>
-旋转锁定模式的工作原理是:当设备旋转方式发生变化时,在导航栏中显示一个按钮。为此,即使自动屏幕旋转模式处于关闭状态,设备的屏幕方向传感器也必须一直保持启用状态。点按此按钮可有效设定用户旋转偏好设置:<code>Settings.System.USER_ROTATION</code>。WindowManager 会使用此偏好设置以及有关顶层 Activity 和系统状态的其他详细信息来更改系统的旋转方式。移动到另一个 Activity 时,在确定以何种旋转方式呈现系统时,WindowManager 会继续使用用户旋转偏好设置。
+旋转锁定模式的工作原理是:当设备旋转方式发生变化时,在导航栏中显示一个按钮。为此,即使自动屏幕旋转模式处于关闭状态,设备的屏幕方向传感器也必须一直保持启用状态。点按此按钮可有效设定用户旋转偏好设置 (<code>Settings.System.USER_ROTATION</code>)。WindowManager 会使用此偏好设置以及有关顶层 Activity 和系统状态的其他详细信息来更改系统的旋转方式。移动到另一个 Activity 时,在确定以何种旋转方式呈现系统时,WindowManager 会继续使用用户旋转偏好设置。
</p>
<figure>
@@ -61,7 +61,7 @@ Android P 中已添加对旋转建议的支持。大部分更改都包含在下
<li>处理按钮超时,包括导航栏处于隐藏状态时(通常在全屏模式下)的特殊情况</li>
<li>在返回到设备的自然屏幕方向时重置用户偏好设置 (<code>mRotationWatcher</code>)</li>
<li>为 <code>NavigationBarView</code> 中应用的导航栏按钮动画选择适当样式(请参见 <code>onRotationProposal()</code>)</li>
- <li>添加介绍模式逻辑,包括专门的动画(请参见对 <code>Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED</code> 的引用)</li>
+ <li>添加了介绍模式逻辑,包括专门的动画(请参见对 <code>Settings.Secure.NUM_ROTATION_SUGGESTIONS_ACCEPTED</code> 的引用)</li>
<li>实现 disable2 旋转标记(请参见 <code>disable()</code>)</li>
</ul>
</li>
@@ -96,7 +96,7 @@ Android P 包含了所有必要的更改,以获取适用于使用软件导航
使用此功能的硬件要求与使用自动屏幕旋转的要求相同。
</p>
<p>
-为确保实现的一致性,当自动屏幕旋转处于关闭状态时,如果系统出于任何原因更改为设备的自然旋转,则用户旋转偏好设置 (<code>Settings.System.USER_ROTATION</code>) 需重置为设备的自然旋转。提供的实现就是这样做的(请参见 <code>NavigationBarFragment.mRotationWatcher</code>)。
+为确保实现的一致性,当自动屏幕旋转设置处于关闭状态时,如果系统出于任何原因将设备设置更改为自然旋转,则用户旋转偏好设置 (<code>Settings.System.USER_ROTATION</code>) 需重置为设备的自然旋转。提供的实现就是这样做的(请参见 <code>NavigationBarFragment.mRotationWatcher</code>)。
</p>
<p>
<code>StatusBarManager.disable2</code> 中有一个新标记,可暂时阻止旋转建议显示。请参见 <code>StatusBarManager.DISABLE2_ROTATE_SUGGESTIONS</code>。所有实现都必须有此标记,因为关键系统应用(包括设置向导)需要用到此标记。提供的实现支持此标记(请参见 <code>NavigationBarFragment.disable()</code>)。
@@ -123,7 +123,7 @@ Android P 包含了所有必要的更改,以获取适用于使用软件导航
将 x 设置为 <code>0</code>,表示关闭该功能;将其设置为 <code>1</code>,表示开启该功能。
</p><p>
-对于测试,您可以通过更改关联的 <code>Settings.Secure</code> 值来重置引入模式。要想实现这一点,最简单的方法是从特权 adb 实例运行以下命令:</p>
+对于测试,您可以通过更改关联的 <code>Settings.Secure</code> 值来重置介绍模式。要想实现这一点,最简单的方法是从特权 adb 实例运行以下命令:</p>
<pre class="prettyprint">adb shell settings put secure num_rotation_suggestions_accepted 0</pre>
diff --git a/zh-cn/devices/tech/ota/ab/ab_implement.html b/zh-cn/devices/tech/ota/ab/ab_implement.html
index bb96e487..988f072d 100644
--- a/zh-cn/devices/tech/ota/ab/ab_implement.html
+++ b/zh-cn/devices/tech/ota/ab/ab_implement.html
@@ -139,7 +139,7 @@ wait,verify=&lt;path-to-block-device&gt;/metadata,slotselect
<ul>
<li><code>--slot <var>SLOT</var></code>:替换默认行为,并提示 fastboot 刷写以参数形式传入的插槽。</li>
- <li><code>--set-active [<var>SLOT</var>]</code>:将指定插槽设为活动插槽。如果未指定可选参数,则将当前插槽设为活动插槽。</li>
+ <li><code>--set-active [<var>SLOT</var>]</code>:将插槽设为活动插槽。如果未指定可选参数,则将当前插槽设为活动插槽。</li>
<li><code>fastboot --help</code>:获取有关命令的详细信息。</li>
</ul>
diff --git a/zh-cn/devices/tech/ota/index.html b/zh-cn/devices/tech/ota/index.html
index c7f9627e..a720216d 100644
--- a/zh-cn/devices/tech/ota/index.html
+++ b/zh-cn/devices/tech/ota/index.html
@@ -20,23 +20,22 @@
limitations under the License.
-->
- <p>
- 正常使用的 Android 设备可以接收和安装系统和应用软件的无线 (OTA) 更新。本部分介绍了更新包的结构以及构建更新包时所用的工具。它适用于希望将 OTA 更新系统用于新的 Android 设备以及正在编译更新软件包以用于已发布设备的开发者。<em></em>OTA 更新旨在升级基础操作系统和系统分区上安装的只读应用;这些更新不会影响用户从 Google Play 安装的应用。
+ <p>正常使用的 Android 设备可以接收和安装系统、应用软件和时区规则的无线下载 (OTA) 更新。本部分介绍了更新包的结构以及所提供的用于编译更新包的工具。这些内容专供有以下需求的开发者参考:要将 OTA 更新用于新的 Android 设备以及要为已发布的设备编译更新软件包。
</p>
- <p>Android 开源项目 (AOSP) 包含 <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/" class="external">SystemUpdaterSample</a> 应用,该应用可提供关于如何使用 Android 系统更新 API 来安装 OTA 更新的示例。示例应用提供了关于如何使用 <code>update_engine</code> 进行 A/B 更新的示例。有关详情,请参阅 <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/README.md" class="external"><code>updater_sample/README.md</code></a>。
+ <p><em></em>OTA 更新旨在升级基础操作系统、系统分区上安装的只读应用和/或时区规则;这些更新不会影响用户从 Google Play 安装的应用。
</p>
<h2 id="ab_updates">A/B(无缝)系统更新</h2>
-
- <p>
- 现代 A/B 设备中的每个分区都有两个副本(A 和 B)。当系统运行但处于空闲状态时,设备会将更新应用到当前未使用的分区。A/B 设备不需要空间来下载更新软件包,因为它们可以在从网络中读取更新时应用该更新。这被称为“流式传输 A/B”。A/B 更新也被称为“无缝更新”。<em></em><em></em>要详细了解有关 A/B 设备的 OTA 更新,请参阅 <a href="/devices/tech/ota/ab/index.html">A/B(无缝)系统更新</a>一文。
- </p>
+ <p>在现代 Android 设备中,每个分区都存在两个副本(A 和 B)。当系统运行但处于空闲状态时,设备会将更新应用到当前未使用的分区。<em></em>A/B 设备不需要空间来下载更新软件包,因为它们可以在从网络中读取更新的同时应用更新;这称之为“流式传输 A/B”。如需详细了解 A/B 设备的 OTA 更新,请参阅 <a href="/devices/tech/ota/ab/index.html">A/B(无缝)系统更新</a>。如需查看示例应用以了解如何使用 Android 系统更新 API(即 <code>update_engine</code>)安装 A/B 更新,请参阅 <a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/" class="external">SystemUpdaterSample</a>(<a href="https://android.googlesource.com/platform/bootable/recovery/+/master/updater_sample/README.md" class="external"><code>updater_sample/README.md</code></a> 中提供了应用详情)。
+ </p>
<h2 id="nonab_updates">非 A/B 系统更新</h2>
+ <p>老款 Android 设备可在专用的恢复分区中使用软件解压下载的更新包并将更新应用到其他分区。有关详细信息,请参阅<a href="/devices/tech/ota/nonab/index.html">非 A/B 系统更新</a>。
+ </p>
- <p>
- 老款设备可在特殊的恢复分区中使用软件解压缩下载的更新包并将其应用于其他分区。有关详细信息,请参阅<a href="/devices/tech/ota/nonab/index.html">非 A/B 系统更新</a>一文。
+ <h2 id="time-zone-updates">时区规则更新</h2>
+ <p>从 Android 8.1 开始,OEM 可以将更新的时区规则数据推送至设备,而不必进行系统更新。此机制使用户能够及时获得更新(从而延长 Android 设备的使用期限),并且使 OEM 能够独立于系统映像更新来测试时区更新。有关详细信息,请参阅<a href="/devices/tech/config/timezone-rules">时区规则</a>。
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/ota/nonab/device_code.html b/zh-cn/devices/tech/ota/nonab/device_code.html
index ec2d49e8..11635e2c 100644
--- a/zh-cn/devices/tech/ota/nonab/device_code.html
+++ b/zh-cn/devices/tech/ota/nonab/device_code.html
@@ -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() {
@@ -695,12 +695,12 @@ def IncrementalOTA_InstallEnd(info):
<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>
+</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>
+<li><b>info.script</b>:可以附加命令的目标脚本对象。调用 <code>info.script.AppendExtra(<i>script_text</i>)</code>) 以将文本输出到脚本中。请确保输出文本以英文分号结尾,这样就不会遇到随后发出 (emit) 的命令。</li>
</ul>
<p>有关 info 对象的详细信息,请参阅<a href="http://docs.python.org/library/zipfile.html">针对 ZIP 归档的 Python 软件基础文档</a>。</p>
diff --git a/zh-cn/devices/tech/ota/nonab/inside_packages.html b/zh-cn/devices/tech/ota/nonab/inside_packages.html
index 251a9890..0b9ab20b 100644
--- a/zh-cn/devices/tech/ota/nonab/inside_packages.html
+++ b/zh-cn/devices/tech/ota/nonab/inside_packages.html
@@ -74,13 +74,13 @@ tgt_size</i>, <i>patch1_sha1</i>, <i>patch1_blob</i>, [...])</code></dt>
<dt><code>apply_patch_check(<i>filename</i>, <i>sha1</i>[, <i>sha1</i>, ...])
</code></dt>
<dd>如果 filename 的内容或缓存分区中临时副本(如果存在)的内容具有与指定的 sha1 值之一相等的 SHA1 校验和,则返回 True。sha1 值指定为 40 位十六进制数字。<i></i><i></i><i></i>该函数不同于 <code>sha1_check(read_file(<i>filename</i>),
-<i>sha1</i> [, ...])</code>,因为它知道要检查缓存分区副本,因此即使文件被中断的 <code>apply_patch() update</code> 损坏,<code>apply_patch_check()</code> 也将成功。</dd>
+<i>sha1</i> [, ...])</code>,因为它知道要检查缓存分区副本,因此即使文件因 <code>apply_patch() update</code> 中断而损坏,<code>apply_patch_check()</code> 也会成功。</dd>
<dt><code>apply_patch_space(<i>bytes</i>)</code></dt>
<dd>如果至少有 bytes 个字节的暂存空间可用于应用二进制补丁程序,则返回 True。<i></i></dd>
<dt><code>concat(<i>expr</i>[, <i>expr</i>, ...])</code></dt>
<dd>评估每个表达式并将它们连接起来。在只有两个参数的特殊情况下,+ 运算符就是该函数的语法糖(但该函数形式可以包含任意数量的表达式)。表达式必须为字符串;该函数不能连接 Blob。</dd>
<dt><code>file_getprop(<i>filename</i>, <i>key</i>)</code></dt>
-<dd>读取给定的 filename,将其解释为属性文件(例如:<code>/system/build.prop</code>/system/build.prop),并返回给定 key 的值,如果 key 不存在,则返回空字符串。<i></i><i></i><i></i></dd>
+<dd>读取给定的 filename,将其解释为属性文件(例如:<code>/system/build.prop</code>),并返回给定 key 的值,如果 key 不存在,则返回空字符串。<i></i><i></i><i></i></dd>
<dt><code>format(<i>fs_type</i>, <i>partition_type</i>, <i>location</i>, <i>
fs_size</i>, <i>mount_point</i>)</code></dt>
<dd>重新格式化给定的分区。支持的分区类型如下:
@@ -122,7 +122,7 @@ partition_type<i></i> 必须为以下类型之一:<ul>
<dt><code>set_progress(<i>frac</i>)</code></dt>
<dd>在最近的 <code>show_progress()</code> 调用所定义的块内设置进度条的位置。frac 必须在 [0.0, 1.0] 范围内。<i></i>进度条从不向后移动;向后移动的尝试会被忽略。</dd>
<dt><code>sha1_check(<i>blob</i>[, <i>sha1</i>])</code></dt>
-<dd>blob 参数是<code>
+<dd>blob 参数是 <code>
read_file()</code> 返回的 blob 类型或 <code>package_extract_file()
</code> 的单参数形式 blob。<i></i>在没有 sha1 参数的情况下,此函数返回 blob 的 SHA1 哈希值(作为 40 位十六进制字符串)。<i></i>在提供了一个或多个 sha1 参数的情况下,如果 SHA1 哈希值等于其中一个参数,则该函数返回此 SHA1 哈希值;如果与任何一个参数都不相等,则返回空字符串。<i></i></dd>
<dt><code>show_progress(<i>frac</i>, <i>secs</i>)</code></dt>
diff --git a/zh-cn/devices/tech/ota/sign_builds.html b/zh-cn/devices/tech/ota/sign_builds.html
index c76fc016..445ef16b 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>
@@ -119,8 +119,7 @@ LOCAL_CERTIFICATE := device/yoyodyne/security/special
</code> 密钥来对 SpecialApp.apk 进行签名。此版本仅可使用不受<i></i>密码保护的私钥。</p>
<h2 id="advanced-signing-options">高级签名选项</h2>
-<p>运行 <code>sign_target_files_apks</code> 脚本时,必须在命令行中指定在编译版本中使用的每个密钥的替换密钥。
-<code>-k <i>src_key</i>=<i>
+<p>运行 <code>sign_target_files_apks</code> 脚本时,必须在命令行中指定在编译版本中使用的每个密钥的替换密钥。<code>-k <i>src_key</i>=<i>
dest_key</i></code> 标记每次指定一个替换密钥。<code>-d <i>dir</i></code> 标记可让您指定一个包含四个密钥(以替换 <code>build/target/product/security</code> 中的所有密钥)的目录;这相当于使用四次 <code>-k</code> 来指定映射关系:</p>
<pre class="devsite-click-to-copy">
diff --git a/zh-cn/devices/tech/power/component.html b/zh-cn/devices/tech/power/component.html
index 3b9eccf8..9e4725a3 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”,这样会每隔几秒钟执行一次接入点扫描,而且扫描过程中功耗会明显上升,但您必须从这些测量值中减去屏幕功耗。</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/settings/info-architecture.html b/zh-cn/devices/tech/settings/info-architecture.html
index 7d308917..72558c76 100644
--- a/zh-cn/devices/tech/settings/info-architecture.html
+++ b/zh-cn/devices/tech/settings/info-architecture.html
@@ -73,7 +73,7 @@ Android 9 引入了一些改进,以提供更多设置功能并简化实现。
<h3 id="dashboard-fragment">DashboardFragment</h3>
<p>
-<code>DashboardFragment</code> 是插件式偏好设置控制器的托管方。该片段继承自 <code>PreferenceFragment</code>,并具有用于扩大和更新静态偏好设置列表与动态偏好设置列表的钩子。
+<code>DashboardFragment</code> 是插件式偏好设置控制器的托管方。该片段继承自 <code>PreferenceFragment</code>,并具有用于扩展和更新静态偏好设置列表与动态偏好设置列表的钩子。
</p>
<h3 id="static-preferences">静态偏好设置</h3>
@@ -279,7 +279,7 @@ displayPreference()</code>、<code>handlePreferenceTreeClicked()</code> 等 API
<ul>
<li>在“设置”部分运行 robolectric 测试。应通过所有现有测试和新测试。
-</li><li>编译并安装“设置”,然后手动打开正在修改的页面。该页面应立即更新。</li>
+</li><li>编译并安装“设置”,然后手动打开正在修改的页面。该页面应该会立即更新。</li>
</ul>
</body></html> \ No newline at end of file
diff --git a/zh-cn/devices/tech/settings/patterns-components.html b/zh-cn/devices/tech/settings/patterns-components.html
index 13f72f1a..7a1a93e4 100644
--- a/zh-cn/devices/tech/settings/patterns-components.html
+++ b/zh-cn/devices/tech/settings/patterns-components.html
@@ -116,7 +116,7 @@
<li>allowDividerAfterLastItem</li>
</ul>
</li>
-<li>ActionBar 主题背景颜色。Activity 应使用 <code>Theme.DeviceDefault.Settings</code> 作为其主题背景,或使用 <code>Theme.DeviceDefault.Settings</code> 创建自定义主题背景作为父级。
+<li>ActionBar 主题背景颜色。Activity 应使用 <code>Theme.DeviceDefault.Settings</code> 作为其主题背景,或使用 <code>Theme.DeviceDefault.Settings</code> 作为父级创建自定义主题背景。
</li>
<li>应用标头微件。在 AppHeaderController 中使用设置器来自定义每个字段,并在设置所有字段后调用 build()。
</li>
diff --git a/zh-cn/devices/tech/settings/universal-search.html b/zh-cn/devices/tech/settings/universal-search.html
index da7c78bc..ae0df460 100644
--- a/zh-cn/devices/tech/settings/universal-search.html
+++ b/zh-cn/devices/tech/settings/universal-search.html
@@ -88,7 +88,7 @@ public List&lt;SearchIndexableRaw&gt; getRawDataToIndex(Context context, boolean
<h3 id="getRawDataToIndex">getNonIndexableKeys</h3>
<ul>
<li>如果您的片段为 <code>DashboardFragment</code>,则很少需要替换该方法。</li>
- <li>返回不应针对给定用户、设备、配置等显示的结果相对应的键列表。此处提供的键应与 <code>SearchIndexableResource</code> 和 <code>SearchIndexableRaw</code> 中的 KEY 字段匹配。<em></em></li>
+ <li>返回满足以下条件的键列表:对应的结果不应显示给定用户、设备、配置等内容。此处提供的键应与 <code>SearchIndexableResource</code> 和 <code>SearchIndexableRaw</code> 中的 KEY 字段匹配。<em></em></li>
<li>例如:不应向从未在其设备中使用 SIM 卡的用户显示“流量消耗”。</li>
</ul>
diff --git a/zh-cn/devices/tv/reference-tv-app.html b/zh-cn/devices/tv/reference-tv-app.html
index a92a2e05..498bbb42 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>参考电视应用</title>
+ <title>参考 TV 应用</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 后,您需要测试该应用是否已正确集成。除了对该电视应用运行<a href="/compatibility/cts/index.html">兼容性测试套件</a>和 <a href="/compatibility/cts/verifier.html">CTS 验证程序测试</a>外,您还可以使用以下这些测试:</p>
+<p>在设备上安装 Live TV 后,您需要测试该应用是否已正确集成。除了对该 TV 应用运行<a href="/compatibility/cts/index.html">兼容性测试套件</a>和 <a href="/compatibility/cts/verifier.html">CTS 验证程序测试</a>外,您还可以使用以下这些测试:</p>
<h3 id="unit_tests">单元测试</h3>
diff --git a/zh-cn/legal.html b/zh-cn/legal.html
index a7534dff..1477c025 100644
--- a/zh-cn/legal.html
+++ b/zh-cn/legal.html
@@ -32,7 +32,7 @@
<p>“Android”名称、<img src="/setup/assets/images/sac_logo.png" alt="Android" style="margin:0;padding:0 2px;vertical-align:baseline"/> 徽标及<a href="http://www.google.com/permissions/">其他商标</a>均为 Google LLC 的财产。</p>
-<p>要了解更多详情,请参阅<a href="/setup/brands.html">品牌推广指南</a>。</p>
+<p>要了解更多详情,请参阅<a href="/setup/start/brands.html">品牌推广指南</a>。</p>
<h2 id="WebSite">网站内容</h2>
diff --git a/zh-cn/license.html b/zh-cn/license.html
index 5bae14fc..563af41c 100644
--- a/zh-cn/license.html
+++ b/zh-cn/license.html
@@ -4,6 +4,11 @@
<meta name="book_path" value="/_book.yaml"/>
</head>
<body>
+ <style>devsite-content-footer {
+ display: none;
+}
+</style>
+
<!--
Copyright 2017 The Android Open Source Project
@@ -63,7 +68,7 @@
如果您的在线作品原样复制本网站中的全部或部分文字或图片,请在网页底部附上以下这段内容:<em></em>
</p>
<p style="margin-left:20px;font-style:italic">
-本网页的部分内容是从 <a href="https://code.google.com/p/android/">Android 开源项目</a>原创及共享作品中复制的,须遵照 <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 许可</a>所述条款进行使用。
+本网页的部分内容是从 <a href="https://code.google.com/p/android/">Android 开源项目</a>原创及共享作品中复制的,使用时须遵循 <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 许可</a>中所述条款。
</p>
<p>此外,请提供指向原始来源网页的链接,以便读者参阅相应网页,了解更多信息。
@@ -72,7 +77,7 @@
<p>
如果您的在线作品会显示在本网站内容的基础上<em>修改的</em>文字或图片,请在您的网页底部附上以下这段内容:</p>
<p style="margin-left:20px;font-style:italic">
-本网页的部分内容是在 <a href="https://code.google.com/p/android/">Android 开源项目</a>原创及共享作品的基础上修改而成的,须遵照 <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 许可</a>所述条款进行使用。
+本网页的部分内容是在 <a href="https://code.google.com/p/android/">Android 开源项目</a>原创及共享作品的基础上修改而成的,使用时须遵循 <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 许可</a>中所述条款。
</p>
<p>同样,请提供指向原始来源网页的链接,以便读者参阅相应网页,了解更多信息。在对相应内容做过修改后,尤其要谨记这一点。
</p>
@@ -121,7 +126,7 @@
</li>
<li>附上任何现有的知识产权免责声明、声明或条款及条件。如果没有这类内容,则应附上 W3C 软件和文档简短声明。
</li>
-<li>在针对新代码或文档的版权声明中注明所做的任何更改或修改,例如“本软件或文档中包含从 [W3C 文档的名称或 URI] 复制的内容或根据 [W3C 文档的名称或 URI] 得出的内容。版权所有 © [YEAR] W3C®(MIT、ERCIM、Keio、Beihang)”。
+<li>在针对新代码或文档的版权声明中注明所做的任何更改或修改,例如“本软件或文档中包含从 [W3C 文档的名称或 URI] 复制的内容或根据 [W3C 文档的名称或 URI] 得出的内容。版权所有 © [年份] W3C®(MIT、ERCIM、Keio、Beihang)”。
</li>
</ul>
<h5>免责声明</h5>
diff --git a/zh-cn/security/advisory/index.html b/zh-cn/security/advisory/index.html
index c2cd0b1d..4aa067f6 100644
--- a/zh-cn/security/advisory/index.html
+++ b/zh-cn/security/advisory/index.html
@@ -39,8 +39,8 @@
<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/apksigning/index.html b/zh-cn/security/apksigning/index.html
index 4efa15bb..45d0fe42 100644
--- a/zh-cn/security/apksigning/index.html
+++ b/zh-cn/security/apksigning/index.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>通过应用签名,开发者可以标识应用创作者并更新其应用,而无需创建复杂的接口和权限。在 Android 平台上运行的每个应用都必须要有<a href="https://developer.android.com/studio/publish/app-signing.html">开发者的签名</a>。Google Play 或 Android 设备上的软件包安装程序会拒绝没有获得签名就尝试安装的应用。
+<p>通过应用签名,开发者可以标识应用创作者并更新其应用,而无需创建复杂的接口和权限。在 Android 平台上运行的每个应用都必须<a class="external" href="https://developer.android.com/studio/publish/app-signing">有开发者的签名</a>。Google Play 或 Android 设备上的软件包安装程序会拒绝没有获得签名就尝试安装的应用。
</p>
<p>在 Google Play 上,应用签名可以将 Google 对开发者的信任和开发者对自己的应用的信任联系在一起。这样一来,开发者就知道自己的应用是以未经修改的形式提供给 Android 设备,并且可以对其应用的行为负责。
</p>
@@ -29,27 +29,27 @@
</p>
<p>应用可以由第三方(OEM、运营商、其他应用市场)签名,也可以自行签名。Android 提供了使用自签名证书进行代码签名的功能,而开发者无需外部协助或许可即可生成自签名证书。应用并非必须由核心机构签名。Android 目前不对应用证书进行 CA 认证。
</p>
-<p>应用还可以在“签名”保护级别声明安全权限,以便只有使用同一个密钥签名的应用可以获得此仅限,同时让这些应用可以各自维持单独的 UID 和应用沙盒。通过<a href="https://developer.android.com/guide/topics/manifest/manifest-element.html#uid">共用 UID 功能</a>,多个应用可以共用一个应用沙盒,从而建立起更紧密的联系。在该功能中,使用同一个开发者密钥签名的两个或更多应用可以在其清单中声明共用的 UID。</p>
+<p>应用还可以在“签名”保护级别声明安全权限,以便仅限使用同一个密钥签名的应用访问它们,同时维持单独的 UID 和应用沙盒。通过<a class="external" href="https://developer.android.com/guide/topics/manifest/manifest-element#uid">共用 UID 功能</a>,可以与共用的应用沙盒建立更紧密的联系,这是因为借助该功能,使用同一个开发者密钥签名的两个或更多应用可以在其清单中声明共用的 UID。</p>
<h2 id="schemes">APK 签名方案</h2>
<p>
Android 支持以下三种应用签名方案:</p>
<ul>
<li>v1 方案:基于 JAR 签名。</li>
- <li>v2 方案:<a href="/security/apksigning/v2.html">APK 签名方案 v2</a>(在 Android 7.0 中引入)。</li>
- <li>v3 方案:<a href="/security/apksigning/v3.html">APK 签名方案 v3</a>(在 Android 9 中引入)。</li>
+ <li>v2 方案:<a href="/security/apksigning/v2">APK 签名方案 v2</a>(在 Android 7.0 中引入)。</li>
+ <li>v3 方案:<a href="/security/apksigning/v3">APK 签名方案 v3</a>(在 Android 9 中引入)。</li>
</ul>
<p>
为了最大限度地提高兼容性,请按照 v1、v2、v3 的先后顺序采用所有方案对应用进行签名。与只通过 v1 方案签名的应用相比,还通过 v2+ 方案签名的应用能够更快速地安装到 Android 7.0 及更高版本的设备上。更低版本的 Android 平台会忽略 v2+ 签名,这就需要应用包含 v1 签名。
</p>
<h3 id="v1">JAR 签名(v1 方案)</h3>
-<p>从一开始,APK 签名就是 Android 的一个有机部分。该方案基于<a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Signed_JAR_File">签名的 JAR</a>。如要详细了解如何使用该方案,请参阅介绍如何<a href="https://developer.android.com/studio/publish/app-signing.html">为您的应用签名</a>的 Android Studio 文档。
+<p>从一开始,APK 签名就是 Android 的一个有机部分。该方案基于<a class="external" href="https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Signed_JAR_File">签名的 JAR</a>。如要详细了解如何使用该方案,请参阅介绍如何<a class="external" href="https://developer.android.com/studio/publish/app-signing">为您的应用签名</a>的 Android Studio 文档。
</p>
<p>v1 签名不保护 APK 的某些部分,例如 ZIP 元数据。APK 验证程序需要处理大量不可信(尚未经过验证)的数据结构,然后会舍弃不受签名保护的数据。这会导致相当大的受攻击面。此外,APK 验证程序必须解压所有已压缩的条目,而这需要花费更多时间和内存。为了解决这些问题,Android 7.0 中引入了 APK 签名方案 v2。
</p>
<h3 id="v2">APK 签名方案 v2 和 v3(v2+ 方案)</h3>
<p>
-搭载 Android 7.0 及更高版本的设备支持 APK 签名方案 v2(v2 方案)及更高版本的方案(在 Android P 中,v2 方案已更新为 v3 方案,以便在签名分块中包含其他信息,但在其他方面保持相同的工作方式)。该方案会对 APK 的内容进行哈希处理和签名,然后将生成的“APK 签名分块”插入到 APK 中。要详细了解如何在应用中使用 v2+ 方案,请参阅 <a href="https://developer.android.com/about/versions/nougat/android-7.0.html#apk_signature_v2">APK 签名方案 v2</a>。
+搭载 Android 7.0 及更高版本的设备支持 APK 签名方案 v2(v2 方案)及更高版本的方案(在 Android P 中,v2 方案已更新为 v3 方案,以便在签名分块中包含其他信息,但在其他方面保持相同的工作方式)。该方案会对 APK 的内容进行哈希处理和签名,然后将生成的“APK 签名分块”插入到 APK 中。要详细了解如何在应用中使用 v2+ 方案,请参阅 <a class="external" href="https://developer.android.com/about/versions/nougat/android-7.0#apk_signature_v2">APK 签名方案 v2</a>。
</p>
<p>
在验证期间,v2+ 方案会将 APK 文件视为 Blob,并对整个文件进行签名检查。对 APK 进行的任何修改(包括对 ZIP 元数据进行的修改)都会使 APK 签名作废。这种形式的 APK 验证不仅速度要快得多,而且能够发现更多种未经授权的修改。
@@ -57,7 +57,7 @@ Android 支持以下三种应用签名方案:</p>
<p>新的签名格式向后兼容,因此,使用这种新格式签名的 APK 可在更低版本的 Android 设备上进行安装(会直接忽略添加到 APK 的额外数据),但前提是这些 APK 还带有 v1 签名。
</p>
<p>
- <img src="../images/apk-validation-process.png" alt="APK 签名验证过程" id="figure1"/>
+ <img src="/security/images/apk-validation-process.png" alt="APK 签名验证过程" id="figure1"/>
</p>
<p class="img-caption"><strong>图 1.</strong> APK 签名验证过程</p>
@@ -65,6 +65,6 @@ Android 支持以下三种应用签名方案:</p>
验证程序会对照存储在“APK 签名分块”中的 v2+ 签名对 APK 的全文件哈希进行验证。该哈希涵盖除“APK 签名分块”(其中包含 v2+ 签名)之外的所有内容。在“APK 签名分块”以外对 APK 进行的任何修改都会使 APK 的 v2+ 签名作废。v2+ 签名被删除的 APK 也会被拒绝,因为 v1 签名指明相应 APK 带有 v2 签名,所以 Android 7.0 及更高版本会拒绝使用 v1 签名验证 APK。
</p>
-<p>如需关于 APK 签名验证过程的详细信息,请参阅 APK 签名方案 v2 的<a href="v2.html#verification">“验证”部分</a>。</p>
+<p>如需关于 APK 签名验证过程的详细信息,请参阅 APK 签名方案 v2 的<a href="/security/apksigning/v2#verification">“验证”部分</a>。</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/app.html b/zh-cn/security/best-practices/app.html
new file mode 100644
index 00000000..80f95d5f
--- /dev/null
+++ b/zh-cn/security/best-practices/app.html
@@ -0,0 +1,137 @@
+<html devsite><head>
+ <title>应用安全性最佳做法</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 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>本部分包含可确保 Android 设备上应用安全性的建议。</p>
+
+<h2 id="source-code-review">源代码审核</h2>
+
+<p>进行源代码审核可以发现大量安全问题,包括本文档中指出的问题。Android 强烈建议采用手动和自动两种方式审核源代码。</p>
+
+<ul>
+ <li>在进行审核时,应遵循全面的安全指导以确保覆盖率。利用相关的内部或外部标准来确保一致且全面的审核。</li>
+ <li>对所有使用 Android SDK 的应用代码运行 Linter(例如 <a href="https://developer.android.com/studio/write/lint" class="external">Android Studio Liner</a>),并更正发现的所有问题。</li>
+ <li>使用可以发现内存管理问题(例如,缓冲区溢出和差一错误)的自动工具分析本机代码。</li>
+ <li>Android 编译系统支持很多 LLVM 清理程序,例如可用于对内存相关问题进行运行时分析的 <a href="/devices/tech/debug/asan">AddressSanitizer</a> 和 <a href="/devices/tech/debug/sanitizers#undefinedbehaviorsanitizer">UndefinedBehaviorSanitizer</a>。如果与模糊测试配合使用(在 Android 中通过 <a href="/devices/tech/debug/libfuzzer">libFuzzer</a> 来实现),则清理程序可以发现需要进一步调查的异常极端情况。</li>
+ <li>经验丰富的安全评估员应审核风险较高的代码,例如加密、付款处理和 PII 处理。</li>
+</ul>
+
+<h2 id="automated-testing">自动测试</h2>
+
+<p>自动测试功能有助于发现大量安全问题,且应定期执行。</p>
+
+<ul>
+ <li>在整个开发流程中定期运行最新版 <a href="/compatibility/cts/">CTS</a>,以便尽早发现问题并缩短解决问题所需的时间。在自动编译流程(每天会编译多次)的连续集成期间,Android 会使用 CTS。</li>
+ <li>使接口的安全性测试实现自动化,包括使用格式有误的输入内容进行测试(模糊测试)。Android 编译系统支持使用 <a href="/devices/tech/debug/libfuzzer">libFuzzer</a> 来编写模糊测试。</li>
+</ul>
+
+<h2 id="vulnerability-scanning">漏洞扫描</h2>
+
+<p>漏洞扫描有助于确保预安装的应用不存在已知的安全漏洞。高级检测可以减少解决这些漏洞以及防止用户和设备面临风险所需的时间和成本。</p>
+
+<ul>
+ <li>使用行业认可的应用漏洞扫描工具扫描所有预安装的应用,并解决检测到的漏洞。</li>
+</ul>
+
+<h2 id="phas">潜在有害应用</h2>
+
+<p>请务必确保设备上的预安装应用不是<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">潜在有害应用</a> (PHA)。您要为设备上安装的所有应用的行为负责。</p>
+
+<h3 id="hostile-downloaders">恶意下载程序</h3>
+
+<p>恶意下载程序是指虽未被直接视为有害但会下载其他潜在有害应用的应用。</p>
+
+<ul>
+ <li>确保针对所有使用 <code>INSTALL_PACKAGES</code> 权限的预安装应用提供用户披露功能。</li>
+ <li>确保开发者遵守合同规定,未将任何应用作为 UID 0 进行安装。</li>
+ <li>评估在通过开发者网络安装的所有应用清单中声明的权限。</li>
+ <li>确保开发者遵守合同规定,在将应用提供给设备之前,使用 <a href="https://developers.google.com/safe-browsing/" class="external">Google Safe Browsing API</a> 扫描自动更新程序和安装程序应用的所有下载网址。</li>
+ <li>从 Android 9 开始,要求所有开发者使用 <code>UPDATE_PACKAGES</code> 权限而非 <code>INSTALL_PACKAGES</code> 权限。与 <code>INSTALL_SELF_UPDATES</code> 结合使用时,使用 <code>UPDATE_PACKAGES</code> 可以根据特权应用的预期用途为其授予精细范围的安装权限(而不是更广泛的 <code>INSTALL_PACKAGES</code> 权限)。</li>
+</ul>
+
+<h3 id="cryptomining">挖矿</h3>
+
+<p>挖矿应用是指试图利用设备的硬件或云计算以“硬币”的形式生成货币(通常是通过区块链技术来实现)的应用。如果您打算将此服务作为货币的替代形式提供或使用这项服务交换其他服务,请确保在利用设备的硬件运行此服务之前请求获得用户的许可(包括明确同意这会影响电池运行时间)。</p>
+
+<h3 id="imposter-apps">冒牌应用</h3>
+
+<p>冒牌应用是指试图将自己伪装成知名应用(例如 YouTube 或 Facebook)的应用。</p>
+
+<ul>
+ <li>在设备发布之前,扫描所有预加载的应用以查找漏洞。</li>
+</ul>
+
+<h2 id="app-permissions">应用权限</h2>
+
+<p>为预安装应用授予过多权限可能会带来安全风险。尽可能减少为预安装应用授予的必要权限数量,并确保这些应用无法获取不必要的权限。</p>
+
+<ul>
+ <li>不要为预安装的应用授予不必要的权限。仔细检查具有系统权限的应用,因为它们可能具有非常敏感的权限。</li>
+ <li>确保请求的所有权限都是相关的,并且是使用该特定应用的功能所必需的。</li>
+</ul>
+
+<h2 id="app-signing">应用签名</h2>
+
+<p>应用签名在保障设备安全方面发挥着重要作用,可用于进行权限检查以及软件更新。在选择为应用签名使用的密钥时,请务必考虑应用是仅在一台设备上使用,还是供多台设备共用。</p>
+
+<ul>
+ <li>确保不使用众所周知的密钥(例如 AOSP 开发者密钥)为设备签名。</li>
+ <li>确保按照与处理敏感密钥方面的业界标准做法一致的方式管理用于为应用签名的密钥,包括使用能够提供有限、可审核访问权限的硬件安全模块 (HSM)。</li>
+ <li>确保不使用平台密钥为应用签名。这样做可以向应用授予平台签名权限,这些权限非常强大,只能由操作系统的一些组件使用。系统应用应使用特许权限。</li>
+ <li>确保不使用不同的密钥为软件包名称相同的应用签名。在针对不同的设备开发应用时,经常会出现这种情况,尤其是在使用平台密钥时。如果应用独立于设备,则在多台设备之间使用相同的密钥。如果应用是特定设备专用的,则按设备和密钥创建独一无二的软件包名称。</li>
+</ul>
+
+<h2 id="isolating-apps-and-processes">隔离应用和进程</h2>
+
+ <p>如果使用得当,Android <a href="/security/app-sandbox">沙盒模型</a>可为应用和进程提供额外的安全性。</p>
+
+<h3 id="isolating-root-processes">隔离 Root 进程</h3>
+
+<p>Root 进程是最常受到提权攻击的目标,因此减少 Root 进程数量有助于降低提权风险。</p>
+
+<ul>
+ <li>确保尽可能减少设备上作为 Root 代码运行的必要代码的数量。尽可能使用常规 Android 进程而非 Root 进程。如果某个进程必须要在设备上作为 Root 进程运行,请将该进程记录在 AOSP 功能请求中,以便对其进行公开审核。</li>
+ <li>应尽可能将 root 代码与不可信数据隔离开来,并尽可能通过进程间通信 (IPC) 访问 Root 代码。例如,将 Root 功能缩减成可通过 Binder 访问的小型服务,并将这个具有签名权限的服务提供给网络流量处理权限很小或没有此类权限的应用。</li>
+ <li>Root 进程不得通过网络套接字进行监听。</li>
+ <li>Root 进程不得包含通用运行时(例如 Java 虚拟机)。</li>
+</ul>
+
+<h3 id="isolating-system-apps">隔离系统应用</h3>
+
+<p>一般而言,预先安装的应用不应使用共用系统唯一标识符 (UID) 运行。如果某个应用必须使用共用系统 UID 或其他特权服务(例如,电话服务),那么该应用不应导出由用户安装的第三方应用可访问的任何服务、广播接收器或内容提供程序。</p>
+
+<ul>
+ <li>确保尽可能减少设备上作为系统代码运行的必要代码的数量。尽可能通过 Android 进程自身的 UID 使用此类进程,而非重复使用系统 UID。</li>
+ <li>应尽可能将系统代码与不可信数据隔离开来,并且系统代码应尽可能仅向其他可信进程提供 IPC。</li>
+ <li>系统进程不得通过网络套接字进行监听。这是 CTS 要求。</li>
+</ul>
+
+<h3 id="isolating-processes">隔离进程</h3>
+
+<p>Android 应用沙盒要求应用与系统中的其他进程(包括 Root 进程和调试程序)隔离开来。除非应用或用户特意启用了调试功能,否则任何应用都不得违反这一要求。</p>
+
+<ul>
+ <li>确保 root 进程无法访问各个应用数据文件夹内的数据,使用已记录的 Android 调试方法时除外。</li>
+ <li>确保 root 进程无法访问应用内存,使用已记录的 Android 调试方法时除外。</li>
+ <li>确保设备上没有任何会访问其他应用/进程的数据或内存的应用。</li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/hardware.html b/zh-cn/security/best-practices/hardware.html
new file mode 100644
index 00000000..fbd1950d
--- /dev/null
+++ b/zh-cn/security/best-practices/hardware.html
@@ -0,0 +1,41 @@
+<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
+
+ //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 id="hardware-security">此页面包含的建议可确保 Android 设备上的硬件有助于提高设备的整体安全性,而不会影响设备的安全性。</p>
+
+<h2 id="device-memory">设备内存</h2>
+
+<p>在为 Android 设备选择内存时,请务必了解可能的安全权衡。例如,某些类型的内存可能允许执行 <a href="https://en.wikipedia.org/wiki/Row_hammer" class="external">Rowhammer</a> 式攻击。</p>
+
+<ul>
+ <li>Android 设备使用的内存应该包含针对 Rowhammer 式攻击的缓解措施。设备制造商应与其内存制造商密切合作,以了解更多详情。</li>
+</ul>
+
+<h2 id="strongbox-keymaster">StrongBox Keymaster</h2>
+
+<p>请务必安全存储和处理设备上可用的加密密钥。在 Android 设备上,通过利用在隔离环境(例如可信执行环境 (TEE))中实现的硬件支持 Keymaster 通常可实现此目的。此外,还建议支持 <a href="https://developer.android.com/preview/features/security#hardware-security-module" class="external">StrongBox Keymaster</a>(这是在防篡改硬件中实现的)。</p>
+
+<ul>
+ <li>确保 StrongBox Keymaster 在具有独立 CPU、安全存储、高品质的真随机数生成器、防篡改包装和防旁路攻击功能的环境中运行,以符合成为 StrongBox Keymaster 的要求。要详细了解这些要求,请参阅 Android 9 CDD 第 9.11.2 节。</li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/index.html b/zh-cn/security/best-practices/index.html
new file mode 100644
index 00000000..c7549e43
--- /dev/null
+++ b/zh-cn/security/best-practices/index.html
@@ -0,0 +1,37 @@
+<html devsite><head>
+ <title>Android 安全性最佳做法</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>本主题包含设备制造商向所有 Android 用户寄送安全设备的最佳做法。收集的最佳做法涵盖以下方面:
+</p>
+
+<ul>
+ <li><strong>组织和运营安全性</strong> - 在您的团队和组织内制定可靠的安全做法。</li>
+ <li><strong>系统安全性</strong> - 审核并改进核心操作系统和设备安全性。</li>
+ <li><strong>应用安全性</strong> - 审核并提高设备上应用的安全性。</li>
+ <li><strong>网络安全性</strong> - 审核和提高在设备中进行的网络通信的安全性。</li>
+ <li><strong>硬件安全性</strong> - 审核硬件选择以提升设备安全性。</li>
+ <li><strong>隐私</strong> - 允许用户控制其数据的处理方式。</li>
+</ul>
+
+<p><a href="/compatibility/cdd">Android 兼容性定义文档</a> (CDD) 中也详细介绍了本部分中的许多建议。在很多情况下,这些建议是通过 <a href="/compatibility/cts/">Android 兼容性测试套件</a> (CTS) 等工具检测到的。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/network.html b/zh-cn/security/best-practices/network.html
new file mode 100644
index 00000000..125f6365
--- /dev/null
+++ b/zh-cn/security/best-practices/network.html
@@ -0,0 +1,52 @@
+<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
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+<p>本部分包含可确保 Android 设备上网络通信安全性的建议。</p>
+
+<h2 id="securing-listening-sockets">保护监听套接字</h2>
+
+<p>请谨慎使用监听套接字。通常情况下,设备上不应该有任何打开的监听套接字,因为它们可以让远程攻击者访问设备。</p>
+
+<ul>
+ <li>Android 设备应尽量减少它们公开的互联网监听套接字的数量(尤其是在启动时或默认情况下)。默认情况下,启动时不应在互联网上监听任何套接字。
+ <ul>
+ <li>Root 进程和归系统唯一标识符 (UID) 所有的进程不应公开任何监听套接字。</li>
+ </ul>
+ </li>
+ <li>必须能够在不使用 OTA 更新的情况下停用监听套接字的功能。这种停用行为可以通过更改服务器或用户设备配置来实现。</li>
+ <li>对于使用套接字的本地 IPC,应用必须使用只有某个组可以访问的 UNIX 域套接字。为 IPC 创建文件描述符,并允许特定 UNIX 组对其执行 +RW 操作。所有客户端应用都必须在该 UNIX 组内。</li>
+ <li>有些拥有多个处理器的设备(例如,无线装置/调制解调器从应用处理器中分离出来)会借助网络套接字在处理器之间进行通信。在这种情况下,处理器间通信所用的网络套接字必须使用单独的网络接口,以防止设备上未经授权的应用访问(例如,使用 iptables 防止设备上的其他应用访问)。</li>
+ <li>负责处理监听端口的守护进程必须能够防范格式有误的数据。您应该使用未经授权的客户端(在可能的情况下,也可以使用已获授权的客户端)针对端口进行模糊测试。提交错误以跟进崩溃。</li>
+</ul>
+
+ <p><a href="/compatibility/tests/">Android 兼容性测试套件</a> (CTS) 包括检查是否存在开放监听端口的测试。</p>
+
+<h3 id="disable-adb">停用 ADB</h3>
+
+<p>Android 调试桥 (ADB) 是一款非常实用的开发和调试工具,但它只适合在受控的安全环境中使用,不得针对一般使用情况启用该工具。</p>
+
+<ul>
+ <li>确保 ADB 默认处于停用状态。</li>
+ <li>确保 ADB 会要求用户先将其开启,然后再接受连接。</li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/ops.html b/zh-cn/security/best-practices/ops.html
new file mode 100644
index 00000000..e64a50bc
--- /dev/null
+++ b/zh-cn/security/best-practices/ops.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 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+ <p>从您的组织内部开始为良好的安全做法奠定基础。</p>
+
+<h3 id="create-a-team">组建安全与隐私权团队</h3>
+
+<p>组建一个专门的安全和隐私权团队,并为该组织安排一位领导者。</p>
+
+<ul>
+ <li><strong>组建安全团队。</strong>
+ <ul>
+ <li>确保至少有一名员工负责安全、隐私权和事件响应。</li>
+ <li>为这个团队指定任务和职责范围。</li>
+ <li>为以下人员制定组织结构图和职位描述:安全经理、安全工程师、事件管理员。</li>
+ <li>雇用员工或外部承包商来担任这些角色。</li>
+ </ul>
+ </li>
+ <li><strong>定义安全开发生命周期 (SDL)</strong>。您的 SDL 应涵盖以下方面:
+ <ul>
+ <li>产品的安全要求。</li>
+ <li>风险分析和威胁建模。</li>
+ <li>对应用和代码的<a href="/devices/tech/debug/fuzz-sanitize">静态和动态分析</a>。</li>
+ <li>产品的最终安全审核流程。</li>
+ <li>事件响应。</li>
+ </ul>
+ </li>
+ <li><strong>评估组织风险</strong>。创建风险评估并制定计划以消除或化解这些风险。</li>
+</ul>
+
+<h3 id="build-verification">创建验证流程</h3>
+
+<p>评审现有内部构建验证和批准流程中的问题。</p>
+
+<ul>
+ <li>指出当前构建验证流程中可能导致在构建中引入<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">潜在有害应用</a> (PHA) 的所有问题。</li>
+ <li>确保您制定了代码审核和批准流程,即使是对 <a href="https://android.googlesource.com/" class="external">AOSP</a> 的内部修补也是如此。</li>
+ <li>通过在以下方面实施控制来提高构建完整性:
+ <ul>
+ <li><strong>跟踪更改</strong>。跟踪软件工程师;保留更改日志。</li>
+ <li><strong>评估风险</strong>。评估应用使用的权限;需要对代码更改进行手动审核。</li>
+ <li><strong>监控</strong>。评估对特权代码所做的更改。</li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="source-code-change-tracking">源代码更改跟踪</h3>
+
+<p>监控源代码或第三方应用/二进制文件/SDK 的意外修改行为。</p>
+
+<ul>
+ <li><strong>评估合作伙伴关系</strong>。按照以下步骤评估与技术合作伙伴进行合作的风险:
+
+ <ul>
+ <li>针对如何评估与特定供应商合作的风险制定相关标准。</li>
+ <li>制作一个表单,询问供应商如何解决事件并管理安全性和隐私权。</li>
+ <li>通过定期审核验证他们的声明。</li>
+ </ul>
+ </li>
+ <li><strong>跟踪更改</strong>。记录哪些公司和员工修改了源代码并定期进行审核,以确保只进行适当的更改。</li>
+ <li><strong>保留记录</strong>。记录哪些公司将第三方二进制文件添加到您的版本中,并记录这些应用执行的功能及其收集的数据。</li>
+ <li><strong>计划更新</strong>。确保您的供应商按照要求在产品的整个生命周期内提供软件更新。不可预见的漏洞问题可能需要供应商提供支持才能解决。</li>
+</ul>
+
+<h3 id="validate-source-code">验证源代码完整性和起源</h3>
+
+<p>检查并验证原始设备制造商 (ODM)、无线下载更新 (OTA) 或运营商提供的源代码。</p>
+
+<ul>
+ <li><strong>管理签名证书</strong>。
+ <ul>
+ <li>将密钥存储在硬件安全模块 (HSM) 或安全云服务中(不要共享它们)。</li>
+ <li>确保控制和审核对签名证书的访问权限。</li>
+ <li>要求在编译系统中完成所有代码签名。</li>
+ <li>撤消丢失的密钥。</li>
+ <li>使用最佳做法生成密钥。</li>
+ </ul>
+ </li>
+ <li><strong>分析新代码</strong>。使用安全代码分析工具测试新添加的代码,以检查是否引入了新漏洞。此外,还要分析整体功能以检测新漏洞的表现形式。</li>
+ <li><strong>在发布前进行审核</strong>。在将源代码和第三方应用推送到生产环境之前,查找其中的安全漏洞。例如:
+ <ul>
+ <li>要求应用使用安全通信。</li>
+ <li>遵循最小权限原则并授予应用运行所需的最小权限集。</li>
+ <li>确保通过安全通道存储和传输数据。</li>
+ <li>确保服务依赖项保持最新状态。</li>
+ <li>将安全补丁程序应用于 SDK 和开源库。</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="incident-response">事件响应</h2>
+
+<p>Android 相信可以借助强大的安全社区发现问题。您应该为外部各方创建并公布一种方法,方便相应人员可以就设备特有的安全问题与您联系。</p>
+
+<ul>
+ <li><strong>建立联系</strong>。创建一个电子邮件地址(例如 security@<var>your-company</var>.com)或制作一个网站,并清晰地说明如何报告与您的产品相关的潜在安全问题(<a href="https://security.samsungmobile.com/securityReporting.smsb" class="external">示例</a>)。</li>
+ <li><strong>向上游贡献更改</strong>。如果您发现某个安全问题会影响 Android 平台或多个设备制造商的设备,请通过提交<a href="g.co/AndroidSecurityReport" class="external">安全错误报告</a>与 Android 安全团队联系。
+ </li>
+ <li><strong>宣传良好的安全做法</strong>。主动评估为您的设备提供服务、组件和/或代码的硬件和软件供应商的安全做法。让供应商负责维持良好的安全态势。</li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/privacy.html b/zh-cn/security/best-practices/privacy.html
new file mode 100644
index 00000000..4a134aa1
--- /dev/null
+++ b/zh-cn/security/best-practices/privacy.html
@@ -0,0 +1,74 @@
+<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
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p>本页面包含一系列数据收集指南和建议,可确保 Android 用户能够控制其数据的处理方式。</p>
+
+<h2 id="logging-data">记录数据</h2>
+
+<p>记录数据的做法会增加数据遭泄露的风险并降低系统性能。之前曾发生过多起因记录敏感用户数据而导致的公共安全事件。</p>
+
+<ul>
+ <li>请勿登录 SD 卡。</li>
+ <li>应用或系统服务不得记录第三方应用提供的可能包含敏感信息的数据。</li>
+ <li>应用不得在正常操作过程中记录任何个人身份信息 (PII),除非绝对有必要提供应用的核心功能。</li>
+</ul>
+
+<p>CTS 中有些测试可以检查日志中是否存在可能敏感的信息。</p>
+
+<h2 id="metrics-collection">指标收集</h2>
+
+<p>为了了解应用使用情况以及改善整体用户体验,收集指标可以是很关键的一环。但是,指标收集如果过于宽泛,也会导致用户隐私面临风险。</p>
+
+<ul>
+ <li>尽量不要收集指标。
+ <ul>
+ <li>如果您必须收集指标,请首先征求用户的明确同意,告知用户收集指标的意义所在。</li>
+ </ul>
+ </li>
+ <li>请仅收集支持服务可靠性所需的指标(个别情况除外)。</li>
+ <li>尽可能避免收集可识别用户身份或可能敏感的数据,例如<a href="https://developer.android.com/training/articles/user-data-ids" class="external">硬件标识符</a>。</li>
+ <li>尽可能确保所有数据都得到聚合与匿名处理。</li>
+</ul>
+
+<h2 id="spyware">间谍软件</h2>
+
+<p>间谍软件指聚焦于以下目的的软件:在用户或设备不知情的情况下收集其相关信息,并可能未经用户同意将其信息发送给其他实体。</p>
+
+<ul>
+ <li>在未经公开声明的情况下或以用户不知情的方式传输以下用户或设备数据的软件被视为间谍软件(例如下表所示,但不限于此):
+ <ul>
+ <li>用户联系人的相关信息(姓名、电话号码、电子邮件)</li>
+ <li>照片或其他文件</li>
+ <li>用户电子邮件中的内容</li>
+ <li>通话记录</li>
+ <li>短信日志</li>
+ <li>网络历史记录</li>
+ <li>浏览器书签</li>
+ <li>其他应用(不公开 <code>/data/</code> 目录)中的个人信息</li>
+ <li>音频或通话录音</li>
+ <li>密码</li>
+ <li>OAuth 令牌</li>
+ <li>位置</li>
+ </ul>
+ </li><li>确保所有应用都会在用户安装应用之前向他们提供合理的披露说明。</li>
+</ul>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/best-practices/system.html b/zh-cn/security/best-practices/system.html
new file mode 100644
index 00000000..1566fae7
--- /dev/null
+++ b/zh-cn/security/best-practices/system.html
@@ -0,0 +1,198 @@
+<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
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p>本部分包含可确保核心 Android 操作系统和设备的安全性的建议。</p>
+
+<h2 id="biometric-authentication">生物识别身份验证</h2>
+
+<p>仔细获取、存储和处理<a href="/security/biometric">生物识别数据</a>以进行用户身份验证。您应该:
+</p>
+
+<ul>
+ <li>在使用任何其他形式的身份验证(包括生物识别)之前,指定主要的身份验证方法。</li>
+ <li>在使用被动生物识别模式(例如面部识别)进行涉及身份验证绑定密钥的交易(例如,付款)时,必须提供明确的确认以指明 intent。</li>
+ <li>必须每 72 小时使用一次主要身份验证方法。</li>
+ <li>为所有生物识别数据和处理使用完全安全的管道。</li>
+ <li>切勿在设备外发送生物识别数据(包括原始传感器测量和衍生特征)。如果可能,请将此数据保存在安全的隔离环境(例如<a href="/security/trusty">可信执行环境 (TEE)</a> 或安全元件)中。</li>
+</ul>
+
+<p>具有生物识别技术的设备应该支持 <a href="https://developer.android.com/preview/features/security#fingerprint-auth" class="external">BiometricPrompt API</a>,此 API 为应用开发者提供了一个通用且一致的接口,以便在他们的应用中利用基于生物识别的身份验证。只有<a href="/security/biometric/#strong-weak-unlocks" class="external">极为安全的生物识别技术</a>才能与 <code>BiometricPrompt</code> 集成,并且集成必须遵循 <a href="/compatibility/cdd">Android 兼容性定义文档</a> (CDD) 指南。</p>
+
+<p>有关更多生物识别指南,请参阅<a href="/security/biometric#hal-implementation">生物识别 HAL 实施准则</a>。</p>
+
+<h2 id="selinux">SELinux</h2>
+
+<p>SELinux 提供了 Android 大部分安全模型的定义和强制执行。正确使用 SELinux 对于 Android 设备的安全性至关重要,并有助于减轻安全漏洞的影响。出于此原因,所有 Android 设备都应该实现<a href="/security/selinux/device-policy#granting_the_dac_override_capability">可靠的 SELinux 政策</a>。</p>
+
+<ul>
+ <li>实现最小特权政策。</li>
+ <li>避免授予 <code>CAP_DAC_OVERRIDE</code>、<code>CAP_SYS_ADMIN</code> 和 <code>CAP_NET_ADMIN</code> 权限。</li>
+ <li>不要将系统数据记录到 SD 卡。</li>
+ <li>使用提供的类型访问驱动程序,例如 <code>gpu_device</code>、<code>audio_device</code> 等。</li>
+ <li>对进程、文件和 SELinux 类型使用有意义的名称。
+ <ul>
+ <li>确保未使用默认标签,并且没有向其授予访问权限。</li>
+ </ul>
+ </li>
+ <li>设备专用政策应占设备上运行的所有政策的 5-10%。如果自定义政策所占的比例超过 20%,则几乎肯定会包含超特权域和 Dead 政策。过大的政策会浪费内存,因需要较大的启动映像而浪费磁盘空间,并对运行时政策查询时间产生负面影响。
+ </li>
+</ul>
+
+<h3 id="dynamic-loading-selinux-policy">动态加载 SELinux 政策</h3>
+
+<p>请勿在 Android 设备上动态加载 SELinux 政策。这样做可能会导致出现问题,例如:</p>
+
+<ul>
+ <li>阻止接受重要的安全补丁程序。</li>
+ <li>通过重新加载政策公开对设备进行 Root 操作的功能。</li>
+ <li>公开针对政策更新程序的中间人攻击的矢量。</li>
+ <li>由于政策更新错误导致砖砌设备。</li>
+</ul>
+
+<h2 id="backdoors">后门程序</h2>
+
+<p>Android 应用不得通过任何后门或其他方式来访问可绕过正常安全机制的系统或数据。这包括由开发者已知的密钥把关的诊断、调试、开发或保修修复特殊权限。要阻止后门程序,请执行以下操作:</p>
+
+<ul>
+ <li>使用行业认可的应用漏洞扫描工具来扫描所有第三方应用。</li>
+ <li>对具有敏感访问权限的所有代码(包括第三方库)执行代码审核。</li>
+ <li>通过将要扫描的应用上传到 Google Play 来利用 Google Play 保护机制。您可以上传要扫描的应用,而无需发布到 Google Play。</li>
+ <li>请勿在发布版本上预加载侧重于诊断或修复的工具。仅按需安装这些工具以解决特定问题。此外,这些工具不得处理或上传任何特定于帐号的数据。</li>
+</ul>
+
+<h2 id="development-tools">开发工具</h2>
+
+<p>开发工具(如调试、测试和诊断工具)通常可以揭示所收集的数据的处理方式,从而在设备上产生意外的安全漏洞。要确保开发工具不会进入正式版,请执行以下操作:</p>
+
+<ul>
+ <li>在使用系统映像之前,制作内部调试和测试工具哈希的黑名单并扫描这些 APK 的构建。</li>
+ <li>使用行业认可的应用漏洞扫描工具扫描所有第一方应用。</li>
+ <li>雇用第三方应用安全测试公司在任何重大更新之前评估设备上的所有关键诊断应用,尤其是应用是由第三方开发时。</li>
+ <li>确保只有用户可以在支持会话期间以口头或聊天方式启用该工具。存储同意的软件工件并在收集必要的诊断信息后停用该工具。</li>
+ <li>将此工具的使用记录存储在用户可通过其运营商帐号访问的日志中。</li>
+ <li>确保该工具收集的任何个人身份信息 (PII) 或设备遥测数据受到与相应国家/地区相关的匿名、保留和删除惯例的约束。只能收集与支持服务相关的数据。每次致电后都应删除这些数据。</li>
+ <li>确保未经用户明确同意,不得使用可用于间谍软件的技术(例如击键记录、麦克风使用或相机使用)。应将利用这些可能侵犯隐私的方法的应用以及用户必须同意的隐私权政策明确告知用户。未经用户明确同意,不得启用此类应用。</li>
+</ul>
+
+<p>以下是在实现披露和同意时要参考的一些其他建议:</p>
+
+<h3 id="in-app-disclosure">应用内披露</h3>
+
+<ul>
+ <li>直接在应用内显示应用的正常使用情况。无需用户打开任何菜单或设置就能查看。</li>
+ <li>向用户说明所收集数据的类型以及数据的使用方式。</li>
+ <li>理想情况下,请勿将此信息嵌入隐私权政策或服务条款中。请勿将其包含在其他与个人数据或敏感数据收集无关的披露声明中。</li>
+</ul>
+
+<h3 id="request-consent">征求用户同意</h3>
+
+<ul>
+ <li>同意必须是明确的。请勿将用户离开披露页面的操作(包括点按其他位置离开或者按返回或主屏幕按钮)视为同意。</li>
+ <li>征求同意的对话框必须以清楚明确的方式呈现。</li>
+ <li>必须要求用户执行明确的确认操作(例如点按接受或说出命令)来给予授权。</li>
+ <li>在征得用户明确同意之前,请勿收集个人或敏感数据。</li>
+ <li>请勿使用会自动关闭或设有期限的消息。</li>
+</ul>
+
+<h2 id="embedded-functionality-in-aosp">AOSP 中的嵌入式功能</h2>
+
+<p>在 AOSP 中嵌入其他功能往往会产生意外行为和后果;因此请谨慎行事。</p>
+
+<ul>
+ <li>确保用户在要使用其他默认应用(例如,搜索引擎、网络浏览器、启动器)并披露从设备外发送数据时会收到提示。</li>
+ <li>确保 AOSP APK 使用 AOSP 证书进行签名。</li>
+ <li>运行回归测试并保留更改日志以确定 AOSP APK 是否已添加代码。</li>
+</ul>
+
+<h2 id="security-updates">安全更新</h2>
+
+<p>Android 设备应在至少两年(从发布之日算起)内获得持续的安全支持。这包括接收可解决已知安全漏洞的定期更新。</p>
+
+<ul>
+ <li>与硬件合作伙伴(如 SoC 供应商)合作,针对 Android 设备上的所有组件制定适当的支持协议。</li>
+ <li>确保可以在用户交互最少的情况下安装安全更新,以提高用户在其 Android 设备上接受和安装更新的可能性。强烈建议实现<a href="/devices/tech/ota/ab/">无缝系统更新</a>或等效的安全功能。</li>
+ <li>确保您了解 <a href="/security/bulletin/">Android 安全公告</a>中声明的 Android 安全补丁程序级别 (SPL) 的累积要求。如果设备使用的是 2018-02-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
+</ul>
+
+<h3 id="dynamic-kernel-updates">动态内核更新</h3>
+
+<p>请勿动态修改关键系统组件。虽然有一些研究表明动态内核更新有助于防范紧急威胁,但收益目前赶不上评估费。建议创建一个强大的 OTA 更新方法来快速分发漏洞保护。</p>
+
+<h2 id="key-management">密钥管理</h2>
+
+<p>保持良好的密钥管理政策和做法,以确保签名密钥的安全性。</p>
+
+<ul>
+ <li>不要与外部方共享签名密钥。</li>
+ <li>如果签名密钥受到攻击,请生成新密钥并在以后对所有应用进行双重签名。</li>
+ <li>将所有密钥存储在需要多重认证才能访问的高度安全的模块硬件或服务中。</li>
+</ul>
+
+<h2 id="system-image-signing">系统映像签名</h2>
+
+<p>系统映像的签名对于确定设备的完整性至关重要。</p>
+
+<ul>
+ <li>请勿使用已公开的密钥对设备进行签名。</li>
+ <li>按照与处理敏感密钥方面的业界标准做法一致的方式管理用于为设备签名的密钥,包括使用能够提供有限、可审核访问权限的硬件安全模块 (HSM)。</li>
+</ul>
+
+<h2 id="unlockable-bootloaders">可解锁的引导加载程序</h2>
+
+<p>许多 Android 设备都支持解锁引导加载程序。解锁引导加载程序后,设备所有者将能够修改系统分区和/或安装自定义操作系统。常见用例包括在设备上安装第三方只读存储器 (ROM) 以及进行系统级开发。例如,Google Nexus 设备所有者可以运行 <code>fastboot oem unlock</code> 来启动解锁过程,该过程会向用户显示以下消息:</p>
+
+<aside class="caution">
+ <p><strong>解锁引导加载程序吗?</strong></p>
+
+ <p>如果您解锁引导加载程序,则可以在此手机上安装自定义操作系统软件。</p>
+
+ <p>自定义操作系统未经过与原始操作系统相同的测试,可能会导致您的手机和已安装的应用停止正常工作。</p>
+
+ <p>为防止未经授权访问您的个人数据,解锁引导加载程序还将删除您手机上的所有个人数据(“恢复出厂设置”)。</p>
+
+ <p>按音量调高按钮/音量调低按钮可选择“是”或“否”,然后按电源按钮即可继续。</p>
+
+ <p><strong>是</strong>:解锁引导程序(可能会使保修无效)</p>
+
+ <p><strong>否</strong>:不解锁引导加载程序并重启手机。</p>
+</aside>
+
+<p>作为最佳做法,在解锁之前,可解锁的 Android 设备必须先安全地清除所有用户数据。如果未能适当删除所有数据便进行解锁,能够接触到这些设备的攻击者便可以在未经授权的情况下获取机密的 Android 用户数据。为了防止用户数据泄露,支持解锁的设备必须正确实现解锁。</p>
+
+<ul>
+ <li>在用户确认解锁命令后,设备必须立即开始擦除数据。在安全删完数据之前,不得设置 <code>unlocked</code> 标记。</li>
+ <li>如果无法安全删完数据,则设备必须保持锁定状态。</li>
+ <li>如果底层块设备支持 <code>ioctl(BLKSECDISCARD)</code> 或等同命令,则应使用此类命令。对于嵌入式 MultiMediaCard (eMMC) 设备,这意味着使用 Secure Erase 或 Secure Trim 命令。对于 eMMC 4.5 及更高版本,这意味着先使用常规的 Erase 或 Trim 命令,然后再执行 Sanitize 操作。</li>
+ <li>如果底层块设备不支持 <code>BLKSECDISCARD</code>,则必须改用 <code>ioctl(BLKDISCARD)</code>。在 eMMC 设备上,这是一个常规的 Trim 操作。</li>
+ <li>如果 <code>BLKDISCARD</code> 不受支持,可以将块设备中的数据重写为全零。</li>
+ <li>用户必须能够要求在刷写分区之前先清除用户数据。例如,Nexus 设备使用 <code>fastboot oem lock</code> 命令擦除用户数据。</li>
+ <li>无论设备处于解锁还是重新锁定状态,都可以通过 eFuses 或类似机制进行记录。不过,我们强烈建议重新锁定引导加载程序并随后恢复出厂设置,这样应该能恢复完整的设备功能。</li>
+</ul>
+
+<p>这些要求旨在确保在完成解锁操作时所有数据都已被销毁。未能实现这些保护措施会被视为存在<a href="/security/overview/updates-resources#severity">中级安全漏洞</a>。</p>
+
+<p>将设备解锁后,可以使用 <code>fastboot oem lock</code> 命令重新将其锁定。使用新的自定义操作系统时,锁定引导加载程序能够为用户数据提供的保护与原始设备制造商操作系统提供的保护相同(例如,如果设备被再次解锁,用户数据将会被清除)。</p>
+
+<h2 id="device-pentesting">设备测试</h2>
+
+<p>设备应在装运前由具备资质的测试员进行审核。测试应确认设备是否遵循此处提供的安全指导以及内部 OEM 安全指导。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2018-07-01.html b/zh-cn/security/bulletin/2018-07-01.html
index 30d9f190..c8b3f335 100644
--- a/zh-cn/security/bulletin/2018-07-01.html
+++ b/zh-cn/security/bulletin/2018-07-01.html
@@ -28,7 +28,7 @@
Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中,并在本公告中提供了相应链接。本公告中还提供了指向 AOSP 之外的补丁程序的链接。
</p>
<p>
-这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用特制的文件通过特权进程执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
+这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<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 保护机制。
@@ -51,7 +51,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</p>
<h3 id="framework">框架</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用特制的 pac 文件通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -136,7 +136,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="system">系统</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用特制的文件通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -187,7 +187,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</p>
<h3 id="kernel-components">内核组件</h3>
-<p>这一部分中最严重的漏洞可让本地恶意应用通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让本地恶意应用在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -236,7 +236,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="qualcomm-components">Qualcomm 组件</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>
@@ -552,7 +552,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">Google Developers 网站</a>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers">Google Developers 网站</a>上针对 Pixel/ Nexus 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
</p>
<p>
<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel/Nexus 公告)中?</strong>
diff --git a/zh-cn/security/bulletin/2018-08-01.html b/zh-cn/security/bulletin/2018-08-01.html
index 39eec1b6..10588708 100644
--- a/zh-cn/security/bulletin/2018-08-01.html
+++ b/zh-cn/security/bulletin/2018-08-01.html
@@ -28,7 +28,7 @@
Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中,并在本公告中提供了相应链接。本公告中还提供了指向 AOSP 之外的补丁程序的链接。
</p>
<p>
-这些问题中危险性最高的是一个严重程度为“严重”的漏洞,该漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
+这些问题中危险性最高的是一个严重程度为“严重”的漏洞,该漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<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 保护机制。
@@ -43,11 +43,11 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</p>
<ul>
<li>较高版本的 Android 平台中提供的增强功能让攻击者更加难以利用 Android 上存在的许多问题。我们建议所有用户都尽可能更新到最新版 Android。</li>
-<li>Android 安全团队会积极利用 <a href="https://www.android.com/play-protect" class="external">Google Play 保护机制</a>监控滥用行为,并会在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">可能有害的应用</a>时向用户发出警告。在安装有 <a href="http://www.android.com/gms" class="external">Google 移动服务</a>的设备上,Google Play 保护机制会默认处于启用状态,对于从 Google Play 以外的来源安装应用的用户来说,该功能尤为重要。</li>
+<li>Android 安全团队会积极利用 <a href="https://www.android.com/play-protect" class="external">Google Play 保护机制</a>监控滥用行为,并会在发现<a href="/security/reports/Google_Android_Security_PHA_classifications.pdf">潜在有害应用</a>时向用户发出警告。在安装有 <a href="http://www.android.com/gms" class="external">Google 移动服务</a>的设备上,Google Play 保护机制会默认处于启用状态,对于从 Google Play 以外的来源安装应用的用户来说,该功能尤为重要。</li>
</ul>
<h2 id="2018-08-01-details">2018-08-01 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2018-08-01 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2018-08-01 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="framework">框架</h3>
@@ -62,7 +62,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -70,9 +70,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<tr>
<td>CVE-2018-9445</td>
<td>
- <a href="https://android.googlesource.com/platform/external/e2fsprogs/+/9a2d95e4ed9ec5ab76998654b1c2fba9cc139e50">A-80436257</a>
- [<a href="https://android.googlesource.com/platform/system/vold/+/940a1ff70cfc5f2e4de83da9ad84cd9734faadf6">2</a>]
- </td>
+ <a href="https://android.googlesource.com/platform/external/e2fsprogs/+/9a2d95e4ed9ec5ab76998654b1c2fba9cc139e50">A-80436257</a> [<a href="https://android.googlesource.com/platform/system/vold/+/940a1ff70cfc5f2e4de83da9ad84cd9734faadf6">2</a>]</td>
<td>EoP</td>
<td>高</td>
<td>6.0、6.0.1、7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -80,11 +78,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<tr>
<td>CVE-2018-9438</td>
<td>
-<a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b552ebf70913cc79085bcc4212235ea45e036d3b">A-78644887</a>
-[<a href="https://android.googlesource.com/platform/frameworks/base/+/e3854655e75d97552140d77cca5d20c121a17ef9">2</a>]
-[<a href="https://android.googlesource.com/platform/frameworks/opt/telephony/+/d1ce32b059bed774b41f11413c1d83a1bc412964">3</a>]
-[<a href="https://android.googlesource.com/platform/frameworks/base/+/97e1cd61d3040dd366ac9e25cdb6f134c7490846">4</a>]
-</td>
+<a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/b552ebf70913cc79085bcc4212235ea45e036d3b">A-78644887</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/e3854655e75d97552140d77cca5d20c121a17ef9">2</a>] [<a href="https://android.googlesource.com/platform/frameworks/opt/telephony/+/d1ce32b059bed774b41f11413c1d83a1bc412964">3</a>] [<a href="https://android.googlesource.com/platform/frameworks/base/+/97e1cd61d3040dd366ac9e25cdb6f134c7490846">4</a>]</td>
<td>DoS</td>
<td>高</td>
<td>8.1</td>
@@ -101,9 +95,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<tr>
<td>CVE-2018-9451</td>
<td>
-<a href="https://android.googlesource.com/platform/frameworks/base/+/a409aa1214d6483efe129a4966f09aa4fdc097ad">A-79488511</a>
-[<a href="https://android.googlesource.com/platform/frameworks/base/+/1de25074adb5d9ed572d6a85e77d3df5ac3a7e9e">2</a>]
-</td>
+<a href="https://android.googlesource.com/platform/frameworks/base/+/a409aa1214d6483efe129a4966f09aa4fdc097ad">A-79488511</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/1de25074adb5d9ed572d6a85e77d3df5ac3a7e9e">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>
@@ -111,7 +103,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="media-framework">媒体框架</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -122,7 +114,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -130,9 +122,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<tr>
<td>CVE-2018-9427</td>
<td>
-<a href="https://android.googlesource.com/platform/frameworks/av/+/08d392085c095e227c029f64644bc08ef5a544de">A-77486542</a>
-[<a href="https://android.googlesource.com/platform/frameworks/av/+/c9909e5a980f941a5b72477755e09fb4dc57c478">2</a>]
-</td>
+<a href="https://android.googlesource.com/platform/frameworks/av/+/08d392085c095e227c029f64644bc08ef5a544de">A-77486542</a> [<a href="https://android.googlesource.com/platform/frameworks/av/+/c9909e5a980f941a5b72477755e09fb4dc57c478">2</a>]</td>
<td>RCE</td>
<td>严重</td>
<td>8.0、8.1</td>
@@ -156,7 +146,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="system">系统</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -166,7 +156,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -228,9 +218,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<tr>
<td>CVE-2018-9448</td>
<td>
-<a href="https://android.googlesource.com/platform/system/bt/+/13294c70a66347c9e5d05b9f92f8ceb6fe38d7f6">A-79944113</a>
-[<a href="https://android.googlesource.com/platform/system/bt/+/f1f1c3e00f8d1baad0215b057e6d894517eeaddb">2</a>]
- </td>
+<a href="https://android.googlesource.com/platform/system/bt/+/13294c70a66347c9e5d05b9f92f8ceb6fe38d7f6">A-79944113</a> [<a href="https://android.googlesource.com/platform/system/bt/+/f1f1c3e00f8d1baad0215b057e6d894517eeaddb">2</a>]</td>
<td>ID</td>
<td>高</td>
<td>8.0、8.1</td>
@@ -248,11 +236,11 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<h2 id="2018-08-05-details">2018-08-05 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2018-08-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2018-08-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="kernel-components">内核组件</h3>
-<p>这一部分中最严重的漏洞可让本地恶意应用通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让本地恶意应用在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -262,7 +250,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -296,15 +284,14 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
</tr>
<tr>
<td>CVE-2018-5383</td>
- <td>A-79421580<a href="#asterisk">*</a><br />
- QC-CR#2209635</td>
+ <td>A-79421580<a href="#asterisk">*</a><br />QC-CR#2209635</td>
<td>ID</td>
<td>高</td>
<td>蓝牙</td>
@@ -346,7 +333,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -515,14 +502,14 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<li>如果安全补丁程序级别是 2018-08-01 或更新,则意味着已解决 2018-08-01 安全补丁程序级别涵盖的所有问题。</li>
<li>如果安全补丁程序级别是 2018-08-05 或更新,则意味着已解决 2018-08-05 以及之前的所有安全补丁程序级别涵盖的所有问题。</li>
</ul>
-<p>预装这些更新的设备制造商应将补丁程序字符串级别设为</p>
+<p>预装这些更新的设备制造商应将补丁程序字符串级别设为:</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-08-01]</li>
<li>[ro.build.version.security_patch]:[2018-08-05]</li>
</ul>
<p><strong>2. 为何本公告有 2 个安全补丁程序级别?</strong></p>
<p>
-本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中列出的所有问题并使用最新的安全补丁程序级别。
</p>
<ul>
<li>如果设备使用的是 2018-08-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
@@ -566,17 +553,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>
@@ -600,10 +587,10 @@ 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>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
</p>
<p>
<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel/Nexus 公告)中?</strong>
diff --git a/zh-cn/security/bulletin/2018-09-01.html b/zh-cn/security/bulletin/2018-09-01.html
index 95faa0d8..b1cc8eac 100644
--- a/zh-cn/security/bulletin/2018-09-01.html
+++ b/zh-cn/security/bulletin/2018-09-01.html
@@ -27,7 +27,7 @@
<p>
Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中,并在本公告中提供了相应链接。本公告中还提供了指向 AOSP 之外的补丁程序的链接。</p>
<p>
-这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
+这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<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 保护机制。
@@ -42,7 +42,7 @@ 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>
@@ -82,7 +82,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="framework">框架</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件通过非特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在非特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -628,14 +628,14 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<li>如果安全补丁程序级别是 2018-09-01 或更新,则意味着已解决 2018-09-01 安全补丁程序级别涵盖的所有问题。</li>
<li>如果安全补丁程序级别是 2018-09-05 或更新,则意味着已解决 2018-09-05 以及之前的所有安全补丁程序级别涵盖的所有问题。</li>
</ul>
-<p>预装这些更新的设备制造商应将补丁程序字符串级别设为</p>
+<p>预装这些更新的设备制造商应将补丁程序字符串级别设为:</p>
<ul>
<li>[ro.build.version.security_patch]:[2018-09-01]</li>
<li>[ro.build.version.security_patch]:[2018-09-05]</li>
</ul>
<p><strong>2. 为何本公告有 2 个安全补丁程序级别?</strong></p>
<p>
-本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中列出的所有问题并使用最新的安全补丁程序级别。
</p>
<ul>
<li>如果设备使用的是 2018-09-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
@@ -716,7 +716,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>
diff --git a/zh-cn/security/bulletin/2018-10-01.html b/zh-cn/security/bulletin/2018-10-01.html
index 0f97e60e..5a51b08f 100644
--- a/zh-cn/security/bulletin/2018-10-01.html
+++ b/zh-cn/security/bulletin/2018-10-01.html
@@ -27,7 +27,7 @@
<p>
Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中,并在本公告中提供了相应链接。本公告中还提供了指向 AOSP 之外的补丁程序的链接。</p>
<p>
-这些问题中危险性最高的是框架中严重程度为“严重”的安全漏洞。这样的漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
+这些问题中危险性最高的是框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<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 保护机制。
@@ -42,15 +42,15 @@ 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-10-01-details">2018-10-01 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2018-10-01 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2018-10-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>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -60,15 +60,14 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
</tr>
<tr>
<td>CVE-2018-9490</td>
- <td><a href="https://android.googlesource.com/platform/external/chromium-libpac/+/948d4753664cc4e6b33cc3de634ac8fd5f781382">A-111274046</a>
- [<a href="https://android.googlesource.com/platform/external/v8/+/a24543157ae2cdd25da43e20f4e48a07481e6ceb">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/external/chromium-libpac/+/948d4753664cc4e6b33cc3de634ac8fd5f781382">A-111274046</a> [<a href="https://android.googlesource.com/platform/external/v8/+/a24543157ae2cdd25da43e20f4e48a07481e6ceb">2</a>]</td>
<td>EoP</td>
<td>严重</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -89,17 +88,14 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9493</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/462aaeaa616e0bb1342e8ef7b472acc0cbc93deb">A-111085900</a>
- [<a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/e7364907439578ce5334bce20bb03fef2e88b107">2</a>]
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/ebc250d16c747f4161167b5ff58b3aea88b37acf">3</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/462aaeaa616e0bb1342e8ef7b472acc0cbc93deb">A-111085900</a> [<a href="https://android.googlesource.com/platform/packages/providers/DownloadProvider/+/e7364907439578ce5334bce20bb03fef2e88b107">2</a>] [<a href="https://android.googlesource.com/platform/frameworks/base/+/ebc250d16c747f4161167b5ff58b3aea88b37acf">3</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-9452</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/54f661b16b308cf38d1b9703214591c0f83df64d">A-78464361</a>
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/3b6f84b77c30ec0bab5147b0cffc192c86ba2634">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/54f661b16b308cf38d1b9703214591c0f83df64d">A-78464361</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/3b6f84b77c30ec0bab5147b0cffc192c86ba2634">2</a>]</td>
<td>DoS</td>
<td>中</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -107,7 +103,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="media-framework">媒体框架</h3>
-<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -117,7 +113,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -160,7 +156,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tbody></table>
<h3 id="system">系统</h3>
-<p>这一部分中最严重的漏洞可让邻近区域内的攻击者通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让邻近区域内的攻击者在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -170,7 +166,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -205,18 +201,14 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</tr>
<tr>
<td>CVE-2018-9502</td>
- <td><a href="https://android.googlesource.com/platform/system/bt/+/92a7bf8c44a236607c146240f3c0adc1ae01fedf">A-111936792</a>
- [<a href="https://android.googlesource.com/platform/system/bt/+/d4a34fefbf292d1e02336e4e272da3ef1e3eef85">2</a>]
- [<a href="https://android.googlesource.com/platform/system/bt/+/9fe27a9b445f7e911286ed31c1087ceac567736b">3</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/92a7bf8c44a236607c146240f3c0adc1ae01fedf">A-111936792</a> [<a href="https://android.googlesource.com/platform/system/bt/+/d4a34fefbf292d1e02336e4e272da3ef1e3eef85">2</a>] [<a href="https://android.googlesource.com/platform/system/bt/+/9fe27a9b445f7e911286ed31c1087ceac567736b">3</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-9503</td>
- <td><a href="https://android.googlesource.com/platform/system/bt/+/92a7bf8c44a236607c146240f3c0adc1ae01fedf">A-80432928</a>
- [<a href="https://android.googlesource.com/platform/system/bt/+/d4a34fefbf292d1e02336e4e272da3ef1e3eef85">2</a>]
- [<a href="https://android.googlesource.com/platform/system/bt/+/9fe27a9b445f7e911286ed31c1087ceac567736b">3</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/92a7bf8c44a236607c146240f3c0adc1ae01fedf">A-80432928</a> [<a href="https://android.googlesource.com/platform/system/bt/+/d4a34fefbf292d1e02336e4e272da3ef1e3eef85">2</a>] [<a href="https://android.googlesource.com/platform/system/bt/+/9fe27a9b445f7e911286ed31c1087ceac567736b">3</a>]</td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -274,11 +266,11 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<h2 id="2018-10-05-details">2018-10-05 安全补丁程序级别漏洞详情</h2>
<p>
-我们在下面提供了 2018-10-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+我们在下面提供了 2018-10-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考编号、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
</p>
<h3 id="kernel-components">内核组件</h3>
-<p>这一部分中最严重的漏洞可让本地恶意应用通过特权进程执行任意代码。</p>
+<p>这一部分中最严重的漏洞可让本地恶意应用在特权进程环境中执行任意代码。</p>
<table>
<colgroup><col width="21%" />
@@ -288,7 +280,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -331,7 +323,7 @@ Android 合作伙伴在本公告发布前至少一个月就已收到关于所有
</ul>
<p><strong>2. 为何本公告有 2 个安全补丁程序级别?</strong></p>
<p>
-本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中列出的所有问题并使用最新的安全补丁程序级别。
</p>
<ul>
<li>如果设备使用的是 2018-10-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
@@ -375,17 +367,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>
@@ -409,10 +401,10 @@ 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>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
</p>
<p>
<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel/Nexus 公告)中?</strong>
diff --git a/zh-cn/security/bulletin/2018-11-01.html b/zh-cn/security/bulletin/2018-11-01.html
index 876f5043..7778f5f6 100644
--- a/zh-cn/security/bulletin/2018-11-01.html
+++ b/zh-cn/security/bulletin/2018-11-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-11-01">2018 年 11 月的 Pixel / Nexus 安全公告</a>。
@@ -46,7 +46,7 @@ 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-11-01-details">2018-11-01 安全补丁程序级别漏洞详情</h2>
<p>
@@ -501,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>上针对 Pixel/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>
diff --git a/zh-cn/security/bulletin/2018-12-01.html b/zh-cn/security/bulletin/2018-12-01.html
index 8fccebbc..d552a234 100644
--- a/zh-cn/security/bulletin/2018-12-01.html
+++ b/zh-cn/security/bulletin/2018-12-01.html
@@ -19,17 +19,17 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>发布时间:2018 年 12 月 3 日</em></p>
+<p><em>发布时间:2018 年 12 月 3 日 | 更新时间:2018 年 12 月 5 日</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>Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 Android 开源项目 (AOSP) 代码库中,并在本公告中提供了相应链接。本公告中还提供了指向 AOSP 之外的补丁程序的链接。</p>
<p>
-这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者使用特制文件通过特许进程执行任意代码。<a href="/security/overview/updates-resources.html#severity">严重程度评估</a>的依据是漏洞被利用后可能会对受影响的设备造成的影响(假设相关平台和服务缓解措施被成功规避或出于开发目的而被停用)。
+这些问题中危险性最高的是媒体框架中的一个严重程度为“严重”的安全漏洞,该漏洞可让远程攻击者利用蓄意创建的文件在特权进程环境中执行任意代码。<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-12-01">2018 年 12 月的 Pixel / Nexus 安全公告</a>。
@@ -42,7 +42,7 @@
</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-12-01-details">2018-12-01 安全补丁程序级别漏洞详情</h2>
<p>
@@ -68,14 +68,14 @@
</tr>
<tr>
<td>CVE-2018-9547</td>
- <td>A-114223584</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/e6eb42cb2e57747e52e488d54da314bc6eabb546" class="external">A-114223584</a></td>
<td>EoP</td>
<td>高</td>
- <td>8.1, 9</td>
+ <td>8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9548</td>
- <td>A-112555574</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c97efaa05124e020d7cc8c6e08be9c3b55ac4ea7" class="external">A-112555574</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -100,49 +100,49 @@
</tr>
<tr>
<td>CVE-2018-9549</td>
- <td>A-112160868</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/6f6d220a3255e7cbd31bcd1220ffb83af0a2779a" class="external">A-112160868</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-9550</td>
- <td>A-112660981</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/ce97e7d55e1f69683b5bc8f19cc8da8c85bc2cd4" class="external">A-112660981</a></td>
<td>RCE</td>
<td>严重</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9551</td>
- <td>A-112891548</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/0e5db9fee912d367a572b88f0d86f9a33006fa29" class="external">A-112891548</a></td>
<td>RCE</td>
<td>严重</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9552</td>
- <td>A-113260892</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/d15da6f960dd2d5b77faced4e799f8bf53785d9c" class="external">A-113260892</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-9553</td>
- <td>A-116615297</td>
+ <td><a href="https://android.googlesource.com/platform/external/libvpx/+/c4c92b2c6ed72a78ea430c3cdce564ec11866a24" class="external">A-116615297</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-9538</td>
- <td>A-112181526</td>
+ <td><a href="https://android.googlesource.com/platform/external/v4l2_codec2/+/0a7d252adb774338c2c69a17651aceca3aec1b23" class="external">A-112181526</a></td>
<td>EoP</td>
<td>高</td>
- <td>8.1, 9</td>
+ <td>8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9554</td>
- <td>A-114770654</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/16f9b39c69626093ae9225b458739707c9a3b4e7" class="external">A-114770654</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -167,56 +167,56 @@
</tr>
<tr>
<td>CVE-2018-9555</td>
- <td>A-112321180</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/02fc52878d8dba16b860fbdf415b6e4425922b2c" class="external">A-112321180</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-9556</td>
- <td>A-113118184</td>
+ <td><a href="https://android.googlesource.com/platform/system/update_engine/+/840a7eae5a6d8250490e8ea430193531f0c4ccd6" class="external">A-113118184</a></td>
<td>RCE</td>
<td>严重</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9557</td>
- <td>A-35385357</td>
+ <td>A-35385357<a href="#asterisk">*</a></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><a href="https://android.googlesource.com/platform/system/nfc/+/ce7fcb95d5111ad8c554e7ec8ff02f9b40196cdc" class="external">A-112161557</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-9559</td>
- <td>A-112731440</td>
+ <td><a href="https://android.googlesource.com/platform/system/vold/+/c2e37da22aadcdb4a5b7f61a61f824ab8e9b8af9" class="external">A-112731440</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-9560</td>
- <td>A-79946737</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/9009da96e00434501d9398bbfbc636902c757632" class="external">A-79946737</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9562</td>
- <td>A-113164621</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/1bb14c41a72978c6075c5753a8301ddcbb10d409" class="external">A-113164621</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9566</td>
- <td>A-74249842</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/314336a22d781f54ed7394645a50f74d6743267d" class="external">A-74249842</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -226,7 +226,7 @@
<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 后面的数字链接到更多参考信息。
+我们在下面提供了 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>
@@ -248,7 +248,7 @@
</tr>
<tr>
<td>CVE-2018-9565</td>
- <td>A-16680558</td>
+ <td>A-16680558<a href="#asterisk">*</a></td>
<td>ID</td>
<td>高</td>
<td>OMA-DM</td>
@@ -274,7 +274,7 @@
</tr>
<tr>
<td>CVE-2018-9567</td>
- <td>A-65543936</td>
+ <td>A-65543936<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>高</td>
<td>引导加载程序</td>
@@ -337,7 +337,7 @@
<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>N/A</td>
<td>高</td>
<td>HWEngines</td>
</tr>
@@ -345,7 +345,7 @@
<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>N/A</td>
<td>高</td>
<td>GPS_AP_LINUX</td>
</tr>
@@ -353,7 +353,7 @@
<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>N/A</td>
<td>高</td>
<td>汽车多媒体</td>
</tr>
@@ -379,203 +379,203 @@
<tr>
<td>CVE-2017-8248</td>
<td>A-78135902<a href="#asterisk">*</a></td>
- <td>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</td>
+ <td>N/A</td>
<td>高</td>
<td>闭源组件</td>
</tr>
<tr>
- <td>CVE-2017-18324 </td>
+ <td>CVE-2017-18324</td>
<td>A-78284517<a href="#asterisk">*</a></td>
- <td>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</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>无</td>
+ <td>N/A</td>
<td>高</td>
<td>闭源组件</td>
</tr>
@@ -595,16 +595,16 @@
<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><strong>2. 为何本公告有 2 个安全补丁程序级别?</strong></p>
<p>
-本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+本公告之所以有 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>
@@ -678,7 +678,7 @@
<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 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 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>
@@ -703,6 +703,11 @@
<td>2018 年 12 月 3 日</td>
<td>发布了本公告</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 12 月 5 日</td>
+ <td>在本公告中添加了 AOSP 链接。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2018.html b/zh-cn/security/bulletin/2018.html
index 9c252aab..e1c2648f 100644
--- a/zh-cn/security/bulletin/2018.html
+++ b/zh-cn/security/bulletin/2018.html
@@ -33,6 +33,32 @@
<th>发布日期</th>
<th>安全补丁程序级别</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-01<br />2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">2018 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 11 月 5 日</td>
+ <td>2018-11-01<br />2018-11-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-cn/security/bulletin/2019-01-01.html b/zh-cn/security/bulletin/2019-01-01.html
new file mode 100644
index 00000000..f759960f
--- /dev/null
+++ b/zh-cn/security/bulletin/2019-01-01.html
@@ -0,0 +1,501 @@
+<html devsite><head>
+ <title>Android 安全公告 - 2019 年 1 月</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>发布时间:2019 年 1 月 7 日 | 更新时间:2019 年 1 月 7 日</em></p>
+
+<p>
+本 Android 安全公告详细介绍了会影响 Android 设备的安全漏洞。安全补丁程序级别为 2019-01-05 或更新的 Android 系统都已解决本公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
+</p>
+<p>
+Android 合作伙伴在本公告发布前至少一个月就已收到关于所有问题的通知。我们已将针对这些问题的源代码补丁程序发布到 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/2019-01-01">2019 年 1 月的 Pixel 更新公告</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="2019-01-01-details">2019-01-01 安全补丁程序级别漏洞详情</h2>
+<p>
+我们在下面提供了 2019-01-01 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>和已更新的 AOSP 版本(如果适用)。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+</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-9582</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/ab39f6cb7afc48584da3c59d8e2a5e1ef121aafb" class="external">A-112031362</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.0、8.1、9</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-9583</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/94d718eb61cbb1e6fd08288039d7e62913735c6c" class="external">A-112860487</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-9584</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/5f0f0cc6a10f710dea7e1ddd4ba19acb877a7081" class="external">A-114047681</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-9585</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/71764b791f262491e3f628c14ce3949863dd6058" class="external">A-117554809</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-9586</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/ManagedProvisioning/+/fe4c71a7a3a8a2184b3096203aa9240e01af621e" class="external">A-116754444</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-9587</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Contacts/+/66abad90093df5231f24654a64cf90d9b70ab228" class="external">A-113597344</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-9588</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/bf9ff0c5215861ab673e211cd06e009f3157aab2" class="external">A-111450156</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-9589</td>
+ <td><a href="https://android.googlesource.com/platform/external/wpa_supplicant_8/+/38af82c5ca615f56febcebde714c7cba653fd5ec" class="external">A-111893132</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-9590</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/297598898683b81e921474e6e74c0ddaedbb8bb5" class="external">A-115900043</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-9591</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e1685cfa533db4155a447c405d7065cc17af2ae9" class="external">A-116108738</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-9592</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/8679463ade0ee029ef826ed4fb7a847e2a981375" class="external">A-116319076</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-9593</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/8bc53213110fed8360d3e212dd61fbc0218e0b1e" class="external">A-116722267</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-9594</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/494cd888eb2c5cfda05584dd598815c9268ff3c2" class="external">A-116791157</a></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="2019-01-05-details">2019-01-05 安全补丁程序级别漏洞详情</h2>
+
+<p>
+我们在下面提供了 2019-01-05 补丁程序级别涵盖的每个安全漏洞的详细信息。漏洞列在所影响的组件下,内容包括 CVE、相关参考内容、<a href="#type">漏洞类型</a>、<a href="/security/overview/updates-resources.html#severity">严重程度</a>、组件(如果适用)和已更新的 AOSP 版本(如果适用)等详细信息。如果有解决相应问题的公开更改记录(例如 AOSP 代码更改列表),我们会将 Bug ID 链接到该记录。如果某个 Bug 有多条相关的代码更改记录,我们还会通过 Bug ID 后面的数字链接到更多参考内容。
+</p>
+
+<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-10876</td>
+ <td>A-116406122<br />
+ <a href="http://patchwork.ozlabs.org/patch/929239/">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 文件系统</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10880</td>
+ <td>A-116406509<br />
+ <a href="http://patchwork.ozlabs.org/patch/930639/">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 文件系统</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10882</td>
+ <td>A-116406626<br />
+ <a href="https://bugzilla.kernel.org/show_bug.cgi?id=200069">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 文件系统</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13405</td>
+ <td>A-113452403<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>文件系统</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-18281</td>
+ <td>A-118836219<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb66ae030829605d61fbef1909ce310e29f78821">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>TLB</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-17182</td>
+ <td>A-117280327<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a9cdebdcc17e426fb5287e4a82db1dfe86339b2">上游内核</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>内存管理器</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10877</td>
+ <td>A-116406625<br />
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10877">上游内核</a></td>
+ <td>ID</td>
+ <td>高</td>
+ <td>ext4 文件系统</td>
+ </tr>
+</tbody></table>
+
+<h3 id="nvidia-components">NVIDIA 组件</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-6241</td>
+ <td>A-62540032<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>Dragon BSP</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-11962</td>
+ <td>A-117118292<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/frameworks/av/commit?id=217604d69ce4dcf7c6433a9eafdfceefe25e8fd3">
+QC-CR#2267916</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>音频</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-12014</td>
+ <td>A-117118062<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=545e03e8420164506457367959ccf01bd055e1aa">
+QC-CR#2278688</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>数据 HLOS - LNX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13889</td>
+ <td>A-117118677<br />
+ <a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=03885c6896a88d993dd49c64ada02bec52af08a1">
+QC-CR#2288358</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>GPS</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-2018-11847</td>
+ <td>A-111092812<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>严重</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11888</td>
+ <td>A-111093241<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>高</td>
+ <td>闭源组件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13888</td>
+ <td>A-117119136<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>如果安全补丁程序级别是 2019-01-01 或更新,则意味着已解决 2019-01-01 安全补丁程序级别涵盖的所有问题。</li>
+<li>如果安全补丁程序级别是 2019-01-05 或更新,则意味着已解决 2019-01-05 以及之前的所有安全补丁程序级别涵盖的所有问题。</li>
+</ul>
+<p>预装这些更新的设备制造商应将补丁程序字符串级别设为:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2019-01-01]</li>
+ <li>[ro.build.version.security_patch]:[2019-01-05]</li>
+</ul>
+<p><strong>2. 为何本公告有 2 个安全补丁程序级别?</strong></p>
+<p>
+本公告之所以有 2 个安全补丁程序级别,是为了让 Android 合作伙伴能够灵活地、更快速地修复在各种 Android 设备上类似的一系列漏洞。我们建议 Android 合作伙伴修复本公告中的所有问题并使用最新的安全补丁程序级别。
+</p>
+<ul>
+<li>如果设备使用的是 2019-01-01 这一安全补丁程序级别,则必须包含该安全补丁程序级别涵盖的所有问题以及之前的安全公告中报告的所有问题的修复程序。</li>
+<li>如果设备使用的是 2019-01-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 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
+</p>
+<p>
+<strong>6. 为什么要将安全漏洞拆分到本公告和设备 / 合作伙伴安全公告(如 Pixel 公告)中?</strong>
+</p>
+<p>
+要在 Android 设备上声明最新的安全补丁程序级别,必须修复本安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复设备/合作伙伴安全公告中记录的其他安全漏洞。我们建议 Android 设备和芯片组制造商通过自己的安全网站(例如 <a href="https://security.samsungmobile.com/securityUpdate.smsb" class="external">Samsung</a>、<a href="https://lgsecurity.lge.com/security_updates.html" class="external">LGE</a> 或 <a href="/security/bulletin/pixel/" class="external">Pixel</a> 安全公告)记录其设备上存在的其他修复程序。
+</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>2019 年 1 月 7 日</td>
+ <td>发布了本公告</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>2019 年 1 月 7 日</td>
+ <td>在本公告中添加了 AOSP 链接。</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/2019.html b/zh-cn/security/bulletin/2019.html
new file mode 100644
index 00000000..25f4843f
--- /dev/null
+++ b/zh-cn/security/bulletin/2019.html
@@ -0,0 +1,210 @@
+<html devsite><head>
+ <title>2019 年 Android 安全公告</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>本页中列出了我们在 2019 年发布的所有 Android 安全公告。如需所有公告的列表,请访问 <a href="/security/bulletin/index.html">Android 安全公告</a>首页。</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>语言</th>
+ <th>发布日期</th>
+ <th>安全补丁程序级别</th>
+ </tr>
+ <tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-01<br>
+ 2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-01<br>
+ 2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-01<br>
+ 2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-01<br>
+ 2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-01<br>
+ 2019-08-05</td>
+ </tr>
+
+ <tr>
+ <td><a href="/security/bulletin/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-01<br>
+ 2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-01<br>
+ 2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-01<br>
+ 2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-01<br>
+ 2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-01<br>
+ 2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-01<br>
+ 2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
+ <td>即将发布<!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019 年 1 月 7 日</td>
+ <td>2019-01-01<br />
+ 2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/index.html b/zh-cn/security/bulletin/index.html
index 1e565664..139c0a09 100644
--- a/zh-cn/security/bulletin/index.html
+++ b/zh-cn/security/bulletin/index.html
@@ -29,17 +29,13 @@
<li><a href="https://security.samsungmobile.com/securityUpdate.smsb">三星</a></li>
</ul>
-<h3 id="notification">通知</h3>
-<p>要在新的 Android 公告发布时收到通知,请加入 <a href="https://groups.google.com/forum/#!forum/android-security-updates">Android 安全更新网上论坛</a>,并调整您的电子邮件递送偏好设置以接收所有更新。
-</p>
-
<h3 id="sources">来源</h3>
<p>公告中列出的修复程序来自各种不同的来源:Android 开源项目 (AOSP)、上游 Linux 内核,以及系统芯片 (SOC) 制造商。面向设备制造商的说明:</p>
<ul>
<li>Android 平台修复程序会在安全公告发布后的 24 到 48 小时内合并到 AOSP 中,您可以直接从 AOSP 获取这些修复程序。</li>
<li>发布的公告中会提供直接指向上游 Linux 内核修复程序的链接,您可以通过这些链接获取相应的修复程序。</li>
- <li>您可以直接从 SOC 制造商处获取它们提供的修复程序。</li>
+ <li>由 SOC 制造商提供的修正程序可直接从制造商处获取。</li>
</ul>
<h3 id="bulletins">公告</h3>
@@ -54,6 +50,31 @@
<th>发布日期</th>
<th>安全补丁程序级别</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td><td>2018 年 12 月 3 日</td>
+ <td>2018-12-01<br />2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">2018 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 11 月 5 日</td>
+ <td>2018-11-01<br />2018-11-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-cn/security/bulletin/pixel/2018-01-01.html b/zh-cn/security/bulletin/pixel/2018-01-01.html
index c9950317..09aeb174 100644
--- a/zh-cn/security/bulletin/pixel/2018-01-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-01-01.html
@@ -25,12 +25,12 @@
本 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 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-01-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<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>
@@ -56,8 +56,7 @@
</tr>
<tr>
<td>CVE-2017-0846</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/93d77b07c34077b6c403c459b7bb75933446a502">A-64934810</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/395e162a0bf21c7e67923b9ae5fc9aded2d128a7">2</a>]
- </td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/93d77b07c34077b6c403c459b7bb75933446a502">A-64934810</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/395e162a0bf21c7e67923b9ae5fc9aded2d128a7">2</a>]</td>
<td>ID</td>
<td>中</td>
<td>5.1.1、6.0、6.0.1、7.0、7.1.1、7.1.2、8.0</td>
@@ -704,13 +703,13 @@
<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>
</p>
<p>
-要在 Android 设备上声明最新的安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
+要声明 Android 设备的最新安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
</p>
<h2 id="versions">版本</h2>
<table>
diff --git a/zh-cn/security/bulletin/pixel/2018-02-01.html b/zh-cn/security/bulletin/pixel/2018-02-01.html
index db890aba..01571e1a 100644
--- a/zh-cn/security/bulletin/pixel/2018-02-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-02-01.html
@@ -23,14 +23,14 @@
<p><em>发布时间:2018 年 2 月 5 日 | 更新时间:2018 年 4 月 30 日</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-02-05 或更新,则意味着已解决本公告以及 <a href="/security/bulletin/2018-02-01">2018 年 2 月的 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-02-05 或更新,则意味着已解决本公告以及 <a href="/security/bulletin/2018-02-01">2018 年 2 月的 Android 安全公告</a>中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看和更新 Android 版本</a>。</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-02-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-02-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<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>
@@ -419,7 +419,7 @@
</tr>
<tr>
<td>A-69797895</td>
- <td>移动数据网络</td>
+ <td>移动数据</td>
<td>针对 Telus 用户改进了在某些网络环境中的移动数据网络性能。</td>
<td>Pixel 2</td>
</tr>
@@ -520,13 +520,13 @@
<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>
</p>
<p>
-要在 Android 设备上声明最新的安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
+要声明 Android 设备的最新安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
</p>
<h2 id="versions">版本</h2>
<table>
diff --git a/zh-cn/security/bulletin/pixel/2018-03-01.html b/zh-cn/security/bulletin/pixel/2018-03-01.html
index 90eb3e02..1154f0bb 100644
--- a/zh-cn/security/bulletin/pixel/2018-03-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-03-01.html
@@ -23,17 +23,16 @@
<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 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-03-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/nexus/images">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
-<h2 id="announcements">公告</h2>
-<p>
-除了 <a href="/security/bulletin/2018-03-01">2018 年 3 月的 Android 安全公告</a>中所述的安全漏洞外,Google 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。</p>
+<h2 id="announcements">通告</h2>
+<p>除了 <a href="/security/bulletin/2018-03-01">2018 年 3 月的 Android 安全公告</a>中所述的安全漏洞外,Google 设备中还包含针对下述安全漏洞的补丁程序。合作伙伴在至少一个月前就已收到关于这些问题的通知,并可以选择将针对这些问题的补丁程序纳入到其设备更新中。</p>
<h2 id="security-patches">安全补丁程序</h2>
<p>
@@ -588,13 +587,13 @@
<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>
</p>
<p>
-要在 Android 设备上声明最新的安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
+要声明 Android 设备的最新安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
</p>
<h2 id="versions">版本</h2>
<table>
diff --git a/zh-cn/security/bulletin/pixel/2018-04-01.html b/zh-cn/security/bulletin/pixel/2018-04-01.html
index 96a8142a..342e5bab 100644
--- a/zh-cn/security/bulletin/pixel/2018-04-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-04-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>和已更新的 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,15 +49,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-13294</td>
- <td><a href="https://android.googlesource.com/platform/packages/apps/Email/+/c3e0aba2a604ce7c3807d65df1e6a2b848287019">A-71814449</a>
- [<a href="https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/e00598532bbfc8618b7c051cbf6bd15491f61f27">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Email/+/c3e0aba2a604ce7c3807d65df1e6a2b848287019">A-71814449</a> [<a href="https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/e00598532bbfc8618b7c051cbf6bd15491f61f27">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>
@@ -81,7 +80,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -153,15 +152,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-13301</td>
- <td><a href="https://android.googlesource.com/platform/frameworks/base/+/384689934d293acf532e3fea3e72ef78df4f2d1e">A-66498711</a>
- [<a href="https://android.googlesource.com/platform/frameworks/base/+/d52b215f82e464705373d794748325298f0a1f9a">2</a>]</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/384689934d293acf532e3fea3e72ef78df4f2d1e">A-66498711</a> [<a href="https://android.googlesource.com/platform/frameworks/base/+/d52b215f82e464705373d794748325298f0a1f9a">2</a>]</td>
<td>DoS</td>
<td>中</td>
<td>8.0</td>
@@ -185,7 +183,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -209,7 +207,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -264,7 +262,7 @@
<a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=df80cd9b28b9ebaa284a41df611dbf3a2d05ca74">上游内核</a></td>
<td>EoP</td>
<td>中</td>
- <td>SCTP</td>
+ <td>sctp</td>
</tr>
</tbody></table>
@@ -278,7 +276,7 @@
<col width="33%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -293,7 +291,7 @@
</tr>
<tr>
<td>CVE-2018-5826</td>
- <td>A-69128800<a href="#asterisk">*</a><br />QC-CR#2157283</td>
+ <td>A-69128800<a href="#asterisk">*</a><br /> QC-CR#2157283</td>
<td>ID</td>
<td>中</td>
<td>qcacld-3.0 硬盘驱动器</td>
@@ -307,16 +305,14 @@
</tr>
<tr>
<td>CVE-2018-3584</td>
- <td>A-64610600<a href="#asterisk">*</a><br />
- QC-CR#2142046</td>
+ <td>A-64610600<a href="#asterisk">*</a><br />QC-CR#2142046</td>
<td>ID</td>
<td>中</td>
<td>rmnet_usb</td>
</tr>
<tr>
<td>CVE-2017-8269</td>
- <td>A-33967002<a href="#asterisk">*</a><br />
- QC-CR#2013145<br />QC-CR#2114278</td>
+ <td>A-33967002<a href="#asterisk">*</a><br />QC-CR#2013145<br />QC-CR#2114278</td>
<td>ID</td>
<td>中</td>
<td>IPA 驱动程序</td>
@@ -339,9 +335,7 @@
<tr>
<td>CVE-2018-5825</td>
<td>A-72957269<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=5ae227670444cf8ea7b8a8d98eab41404a03332f">QC-CR#2151146</a>
- [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cf0f031ffbb6a8e08e517f653045c3f81d7f2663">2</a>]
- [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=09a34b7878a732187f9138900667d8abb2b1c39c">3</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=5ae227670444cf8ea7b8a8d98eab41404a03332f">QC-CR#2151146</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cf0f031ffbb6a8e08e517f653045c3f81d7f2663">2</a>] [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=09a34b7878a732187f9138900667d8abb2b1c39c">3</a>]</td>
<td>EoP</td>
<td>中</td>
<td>IPA 驱动程序</td>
@@ -349,8 +343,7 @@
<tr>
<td>CVE-2018-5824</td>
<td>A-72957235<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=b34f6f3afe229e32a32418f75889279f6e00d157">QC-CR#2149399</a>
- [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=d3a92a1656a3ee2fc44d4ff98614a4f5b70f1893">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=b34f6f3afe229e32a32418f75889279f6e00d157">QC-CR#2149399</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=d3a92a1656a3ee2fc44d4ff98614a4f5b70f1893">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
@@ -413,8 +406,7 @@
<tr>
<td>CVE-2018-3567</td>
<td>A-72956997<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=f2627fca43bc4403a445c2b84481383ac0249364">QC-CR#2147119</a>
- [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=25c131e8a807894e04f95bdeb1cbd0376eda3bea">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=f2627fca43bc4403a445c2b84481383ac0249364">QC-CR#2147119</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=25c131e8a807894e04f95bdeb1cbd0376eda3bea">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
@@ -422,8 +414,7 @@
<tr>
<td>CVE-2017-15855</td>
<td>A-72957336<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=75c0ea8622bb07716d2a82247e6dd1597980f223">
-QC-CR#2149501</a></td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=75c0ea8622bb07716d2a82247e6dd1597980f223">QC-CR#2149501</a></td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
@@ -431,8 +422,7 @@ QC-CR#2149501</a></td>
<tr>
<td>CVE-2018-5828</td>
<td>A-71501691<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=6299a6bf166a60a47e9108ae2119027e787432d0">
-QC-CR#2115207</a></td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=6299a6bf166a60a47e9108ae2119027e787432d0">QC-CR#2115207</a></td>
<td>EoP</td>
<td>中</td>
<td>QC WLAN</td>
@@ -456,8 +446,7 @@ QC-CR#2115207</a></td>
<tr>
<td>CVE-2017-14894</td>
<td>A-71501694<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=dfca3d8173c1548a97e558cb8abd1ffd2483f8b7">
-QC-CR#2120424</a></td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=dfca3d8173c1548a97e558cb8abd1ffd2483f8b7">QC-CR#2120424</a></td>
<td>EoP</td>
<td>中</td>
<td>QC WLAN</td>
@@ -465,9 +454,7 @@ QC-CR#2120424</a></td>
<tr>
<td>CVE-2017-14880</td>
<td>A-68992477<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cbf3702ae1c5e2cacd6f15a5eb7a799e2f1ed96f">
-QC-CR#2078734</a>
- [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=d72e444dce0b9d20fdcdc4daeb6227e3536eebf7">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cbf3702ae1c5e2cacd6f15a5eb7a799e2f1ed96f">QC-CR#2078734</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.10/commit/?id=d72e444dce0b9d20fdcdc4daeb6227e3536eebf7">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>IPA WAN 驱动程序</td>
@@ -484,12 +471,12 @@ QC-CR#2078734</a>
<h2 id="functional-updates">功能更新</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -675,13 +662,7 @@ QC-CR#2078734</a>
<td>Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
- <td>A-69017578<br />
- A-68138080<br />
- A-68205105<br />
- A-70731000<br />
- A-69574837<br />
- A-68474108<br />
- A-70406781</td>
+ <td>A-69017578<br />A-68138080<br />A-68205105<br />A-70731000<br />A-69574837<br />A-68474108<br />A-70406781</td>
<td>连接、性能</td>
<td>改进部分运营商网络的连接性和性能</td>
<td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL</td>
@@ -711,8 +692,7 @@ QC-CR#2078734</a>
<td>Nexus 5X、Pixel、Pixel XL、Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
- <td>A-69261367<br />
- A-70512352</td>
+ <td>A-69261367<br />A-70512352</td>
<td>短信</td>
<td>改进部分运营商的彩信性能</td>
<td>Nexus 5X、Pixel、Pixel XL、Pixel 2、Pixel 2 XL</td>
@@ -760,8 +740,7 @@ QC-CR#2078734</a>
<td>Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
- <td>A-70094083<br />
- A-70094701</td>
+ <td>A-70094083<br />A-70094701</td>
<td>电池</td>
<td>改进 Pixel 2 和 Pixel 2 XL 的电池性能</td>
<td>Pixel 2、Pixel 2 XL</td>
@@ -886,17 +865,17 @@ QC-CR#2078734</a>
</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>
@@ -920,10 +899,10 @@ QC-CR#2078734</a>
</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-05-01.html b/zh-cn/security/bulletin/pixel/2018-05-01.html
index 1695d50d..dc577202 100644
--- a/zh-cn/security/bulletin/pixel/2018-05-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-05-01.html
@@ -26,7 +26,7 @@
本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-05-05 或更新,则意味着已解决本公告以及 2018 年 5 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。
</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-05-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-05-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/nexus/images">Google Developers 网站</a>上找到 Google 设备固件映像。
@@ -35,7 +35,7 @@
<p>除了 2018 年 5 月的 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="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -72,7 +72,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -127,7 +127,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -165,7 +165,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -198,7 +198,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -229,7 +229,7 @@
<col width="39%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -245,8 +245,7 @@
<tr>
<td>CVE-2018-5851</td>
<td>A-72957505<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=103f385783f368cc5cd3c125390e6dfd43c36096">QC-CR#2146869</a>
-[<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=a9068fbb6bad55c9ecc80b9c3935969c8820c425">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=103f385783f368cc5cd3c125390e6dfd43c36096">QC-CR#2146869</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=a9068fbb6bad55c9ecc80b9c3935969c8820c425">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
@@ -254,8 +253,7 @@
<tr>
<td>CVE-2018-5842</td>
<td>A-72957257<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=f05883b3d442a7eb9df46a6bde08f1d5cdfc8133">QC-CR#2113219</a>
-[<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=21b91d4faa275d7b1ae58ad6a549cfa801066dfe">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=f05883b3d442a7eb9df46a6bde08f1d5cdfc8133">QC-CR#2113219</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=21b91d4faa275d7b1ae58ad6a549cfa801066dfe">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
@@ -270,7 +268,7 @@
</tr>
<tr>
<td>CVE-2018-5853</td>
- <td>A-71714212<a href="#asterisk">*</a><br />QC-CR#2178082<br />QC-CR#2043277</td>
+ <td>A-71714212<a href="#asterisk">*</a><br /> QC-CR#2178082<br /> QC-CR#2043277</td>
<td>EoP</td>
<td>中</td>
<td>网络子系统</td>
@@ -310,8 +308,7 @@
<tr>
<td>CVE-2018-3581</td>
<td>A-72957725<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=becb9c5aaa05137ce1002f77f8a7d9e7e0799268">QC-CR#2150359</a>
- [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=43c8a7f083c56b2f6aeac6d77721f5a70bdba99c">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=becb9c5aaa05137ce1002f77f8a7d9e7e0799268">QC-CR#2150359</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=43c8a7f083c56b2f6aeac6d77721f5a70bdba99c">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>WLAN</td>
@@ -327,8 +324,7 @@
<tr>
<td>CVE-2018-3572</td>
<td>A-72957724<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=b11e3a50197e73e397c36d335d56d905b99eb02c">QC-CR#2145996</a>
- [<a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=fbf66aa0c6ae84db64bdf0b8f3c3a32370c70c67">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=b11e3a50197e73e397c36d335d56d905b99eb02c">QC-CR#2145996</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=fbf66aa0c6ae84db64bdf0b8f3c3a32370c70c67">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>音频</td>
@@ -339,7 +335,7 @@
<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=db41c9cc35d82238a4629e5ff29ba0c6b80b2cd6">QC-CR#2132332</a></td>
<td>EoP</td>
<td>中</td>
- <td>KGSL</td>
+ <td>Kgsl</td>
</tr>
<tr>
<td>CVE-2017-18153</td>
@@ -361,7 +357,7 @@
<td>A-65122765<a href="#asterisk">*</a><br />QC-CR#2111672<br />QC-CR#2152401<br />QC-CR#2152399<br />QC-CR#2153841</td>
<td>EoP</td>
<td>中</td>
- <td>相机</td>
+ <td>摄像头</td>
</tr>
<tr>
<td>CVE-2017-15854</td>
@@ -374,8 +370,7 @@
<tr>
<td>CVE-2017-15843</td>
<td>A-72956941<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=a549abd08f3a52593d9602128c63c1212e90984b">QC-CR#2032076</a>
-[<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=e05adec18cbc3c9213cc293441a2be8683339b4a">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=a549abd08f3a52593d9602128c63c1212e90984b">QC-CR#2032076</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=e05adec18cbc3c9213cc293441a2be8683339b4a">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>Floor_vote 驱动程序</td>
@@ -383,8 +378,7 @@
<tr>
<td>CVE-2017-15842</td>
<td>A-72957040<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=c4ab75dfc22f644fb5ee70bd515aaf633761cd3b">QC-CR#2123291</a>
- [<a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=6d42b0e51ed7f8e51397d89af66c1453beba51cd">2</a>]</td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=c4ab75dfc22f644fb5ee70bd515aaf633761cd3b">QC-CR#2123291</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=6d42b0e51ed7f8e51397d89af66c1453beba51cd">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>Qdsp6v2</td>
@@ -416,11 +410,11 @@
<h2 id="functional-patches">功能补丁程序</h2>
<p>
-我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考内容、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
+我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙或移动数据网络)、改进以及受影响设备。
</p>
<table>
<tbody><tr>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类别</th>
<th>改进</th>
<th>设备</th>
@@ -485,17 +479,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>
@@ -519,10 +513,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>上针对 Pixel/ Nexus 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
@@ -548,7 +542,7 @@
<tr>
<td>1.1</td>
<td>2018 年 5 月 9 日</td>
- <td>修订了本公告,添加了 AOSP 链接。</td>
+ <td>在本公告中添加了 AOSP 链接。</td>
</tr>
</tbody></table>
diff --git a/zh-cn/security/bulletin/pixel/2018-06-01.html b/zh-cn/security/bulletin/pixel/2018-06-01.html
index cdad74c2..2ac41a6e 100644
--- a/zh-cn/security/bulletin/pixel/2018-06-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-06-01.html
@@ -26,12 +26,12 @@
本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-06-05 或更新,则意味着已解决本公告以及 2018 年 6 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705">查看并更新 Android 版本</a>。
</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-06-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-06-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<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>
@@ -707,10 +707,8 @@
<td>Pixel、Pixel XL、Pixel 2、Pixel 2 XL</td>
</tr>
<tr>
- <td>A-68114567<br />
-
-A-74058011</td>
- <td>显示屏</td>
+ <td>A-68114567<br />A-74058011</td>
+ <td>显示</td>
<td>改进了“显示屏始终保持开启状态”的一致性</td>
<td>Pixel 2 XL</td>
</tr>
@@ -805,13 +803,13 @@ A-74058011</td>
<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>上针对 Pixel/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>
</p>
<p>
-要在 Android 设备上声明最新的安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
+要声明 Android 设备的最新安全补丁程序级别,必须修复 Android 安全公告中记录的安全漏洞。但在声明安全补丁程序级别时,并不是必须要修复其他安全漏洞(如本公告中记录的漏洞)。
</p>
<h2 id="versions">版本</h2>
<table>
diff --git a/zh-cn/security/bulletin/pixel/2018-07-01.html b/zh-cn/security/bulletin/pixel/2018-07-01.html
index 81c84549..ae88ab4f 100644
--- a/zh-cn/security/bulletin/pixel/2018-07-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-07-01.html
@@ -26,7 +26,7 @@
本 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>。
</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-07-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-07-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images">Google Developers 网站</a>上找到 Google 设备固件映像。
@@ -426,7 +426,7 @@
<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>上针对 Pixel/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-08-01.html b/zh-cn/security/bulletin/pixel/2018-08-01.html
index c76f1576..937d0f74 100644
--- a/zh-cn/security/bulletin/pixel/2018-08-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-08-01.html
@@ -26,7 +26,7 @@
本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-08-05 或更新,则意味着已解决本公告以及 2018 年 8 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-08-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-08-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developers 网站</a>上找到 Google 设备固件映像。
@@ -37,7 +37,7 @@
<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>
@@ -50,7 +50,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -76,7 +76,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -120,9 +120,7 @@
<tr>
<td>CVE-2018-9441</td>
<td>
-<a href="https://android.googlesource.com/platform/system/bt/+/c3c69bed0f76178c640dd8e726967b9cdea5dece">A-74075873</a>
-[<a href="https://android.googlesource.com/platform/system/bt/+/3a2799939b2da543ed3a62f29db658cb05f8ad3b">2</a>]
-</td>
+<a href="https://android.googlesource.com/platform/system/bt/+/c3c69bed0f76178c640dd8e726967b9cdea5dece">A-74075873</a> [<a href="https://android.googlesource.com/platform/system/bt/+/3a2799939b2da543ed3a62f29db658cb05f8ad3b">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>
@@ -157,7 +155,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -189,7 +187,7 @@
<a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b71812168571fa55e44cdd0254471331b9c4c4c6">上游内核</a></td>
<td>EoP</td>
<td>中</td>
- <td>防火墙</td>
+ <td>Netfilter</td>
</tr>
<tr>
<td>CVE-2018-9464</td>
@@ -210,7 +208,7 @@
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -232,10 +230,7 @@
<tr>
<td>CVE-2018-5910</td>
<td>A-79422277<br />
-<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=b67e04e3696f05411b7434c8b194895d273b00c5">
-QC-CR#2175499</a>
-[<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=d9344c2f4b60cf5d4c747c11f3cb0b6f1558db78">2</a>]
-</td>
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=b67e04e3696f05411b7434c8b194895d273b00c5">QC-CR#2175499</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=d9344c2f4b60cf5d4c747c11f3cb0b6f1558db78">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>MDSS</td>
@@ -251,10 +246,7 @@ QC-CR#2175499</a>
<tr>
<td>CVE-2018-5908</td>
<td>A-79422409<br />
-<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=28e5918c60b832091c6b3618747258803cbd3302">
-QC-CR#2171758</a>
-[<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=4689d03e5db548d263232c274bf307956207da27">2</a>]
-</td>
+<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=28e5918c60b832091c6b3618747258803cbd3302">QC-CR#2171758</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=4689d03e5db548d263232c274bf307956207da27">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>MDSS</td>
@@ -270,10 +262,7 @@ QC-CR#2171758</a>
<tr>
<td>CVE-2018-5904</td>
<td>A-79421260<br />
- <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=88b838c8952ec6414c72449ae15768d15d2606dd">
-QC-CR#2184702</a>
-[<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=8e82c0d84ccee87309fd22f8208915f0ba502b26">2</a>]
-</td>
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=88b838c8952ec6414c72449ae15768d15d2606dd">QC-CR#2184702</a> [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=8e82c0d84ccee87309fd22f8208915f0ba502b26">2</a>]</td>
<td>EoP</td>
<td>中</td>
<td>电源驱动程序</td>
@@ -281,8 +270,7 @@ QC-CR#2184702</a>
<tr>
<td>CVE-2018-5903</td>
<td>A-79421737<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=20365fa599f42f6e1f175d9d5d60d964927c2160">
-QC-CR#2185477</a></td>
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=20365fa599f42f6e1f175d9d5d60d964927c2160">QC-CR#2185477</a></td>
<td>EoP</td>
<td>中</td>
<td>qcacld 3.0</td>
@@ -296,24 +284,21 @@ QC-CR#2185477</a></td>
</tr>
<tr>
<td>CVE-2017-18307</td>
- <td>A-73888283<a href="#asterisk">*</a><br />
- QC-CR#2026045</td>
+ <td>A-73888283<a href="#asterisk">*</a><br />QC-CR#2026045</td>
<td>ID</td>
<td>中</td>
<td>qcacld-3.0</td>
</tr>
<tr>
<td>CVE-2017-9711</td>
- <td>A-36367253<a href="#asterisk">*</a><br />
- QC-CR#2046006</td>
+ <td>A-36367253<a href="#asterisk">*</a><br />QC-CR#2046006</td>
<td>EoP</td>
<td>中</td>
<td>IPA</td>
</tr>
<tr>
<td>CVE-2018-3587</td>
- <td>A-65542521<a href="#asterisk">*</a><br />
- QC-CR#2120605</td>
+ <td>A-65542521<a href="#asterisk">*</a><br />QC-CR#2120605</td>
<td>EoP</td>
<td>中</td>
<td>qcacld-2.0</td>
@@ -330,7 +315,7 @@ QC-CR#2185477</a></td>
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -338,9 +323,7 @@ QC-CR#2185477</a></td>
<tr>
<td>CVE-2017-13295</td>
<td>
-<a href="https://android.googlesource.com/platform/frameworks/base/+/da24aa45a8b65a7b9adbe12ff94bf891bdd38825">A-62537081</a>
-[<a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/3af01bd93513d902dbb5382b10109fdf3ab29d2d">2</a>]
-</td>
+<a href="https://android.googlesource.com/platform/frameworks/base/+/da24aa45a8b65a7b9adbe12ff94bf891bdd38825">A-62537081</a> [<a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/3af01bd93513d902dbb5382b10109fdf3ab29d2d">2</a>]</td>
<td>DoS</td>
<td>中</td>
<td>6.0、6.0.1、7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -357,7 +340,7 @@ QC-CR#2185477</a></td>
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>已更新的 AOSP 版本</th>
@@ -383,7 +366,7 @@ QC-CR#2185477</a></td>
<col width="30%" />
</colgroup><tbody><tr>
<th>CVE</th>
- <th>参考内容</th>
+ <th>参考编号</th>
<th>类型</th>
<th>严重程度</th>
<th>组件</th>
@@ -391,9 +374,7 @@ QC-CR#2185477</a></td>
<tr>
<td>CVE-2017-15817</td>
<td>A-68992394<br />
- <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/prima/commit/?id=fe43c2b64ac81199de17efc258e95546cb0546f1">QC-CR#2076603</a>
-[<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/prima/commit/?id=8ba78e506e5002cdae525dd544dbf1df0ccce1ef">2</a>]
-<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/prima/commit/?id=fe43c2b64ac81199de17efc258e95546cb0546f1">QC-CR#2076603</a> [<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/prima/commit/?id=8ba78e506e5002cdae525dd544dbf1df0ccce1ef">2</a>]<br />
<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=343a3f28338788c5c91289f53171c1f71f293cd7">QC-CR#2084599</a>
<br />
<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=0c21aaa2fefa6c5919813fdd287436dddda54227">QC-CR#2096512</a>
@@ -450,17 +431,17 @@ QC-CR#2185477</a></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>
@@ -484,10 +465,10 @@ QC-CR#2185477</a></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" 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-09-01.html b/zh-cn/security/bulletin/pixel/2018-09-01.html
index c0b86523..6b0db633 100644
--- a/zh-cn/security/bulletin/pixel/2018-09-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-09-01.html
@@ -26,7 +26,7 @@
本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-09-05 或更新,则意味着已解决本公告以及 2018 年 9 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-09-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-09-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developers 网站</a>上找到 Google 设备固件映像。
@@ -308,7 +308,7 @@
<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-10-01.html b/zh-cn/security/bulletin/pixel/2018-10-01.html
index cebc1593..61e1a43d 100644
--- a/zh-cn/security/bulletin/pixel/2018-10-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-10-01.html
@@ -26,10 +26,10 @@
本 Pixel/Nexus 安全公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">受支持的 Google Pixel 和 Nexus 设备</a>(Google 设备)的安全漏洞和功能改进。对于 Google 设备,如果安全补丁程序级别是 2018-10-05 或更新,则意味着已解决本公告以及 2018 年 10 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
</p>
<p>
-所有受支持的 Google 设备都将会收到 2018-10-05 补丁程序级别的更新。我们建议所有用户都在自己的设备上接受这些更新。
+所有受支持的 Google 设备都将会收到 2018-10-05 补丁程序级别的更新。建议所有用户都在自己的设备上接受这些更新。
</p>
<p class="note">
-<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developer 网站</a>上找到 Google 设备固件映像。
+<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
<h2 id="announcements">通告</h2>
@@ -57,7 +57,7 @@
</tr>
<tr>
<td>A-112529920</td>
- <td>电耗</td>
+ <td>电源</td>
<td>改进了 Pixel 设备的快速充电行为</td>
<td>Pixel、Pixel XL</td>
</tr>
@@ -158,7 +158,7 @@
<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-11-01.html b/zh-cn/security/bulletin/pixel/2018-11-01.html
index bd6cfaf7..4000e3e4 100644
--- a/zh-cn/security/bulletin/pixel/2018-11-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-11-01.html
@@ -245,7 +245,7 @@
<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>上针对 Pixel/ 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
index 22f14669..e5740aab 100644
--- a/zh-cn/security/bulletin/pixel/2018-12-01.html
+++ b/zh-cn/security/bulletin/pixel/2018-12-01.html
@@ -32,14 +32,14 @@
<strong>注意</strong>:可在 <a href="https://developers.google.com/android/images" class="external">Google Developers 网站</a>上找到 Google 设备固件映像。
</p>
-<h2 id="announcements">通知</h2>
+<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 后面的数字链接到更多参考信息。
+漏洞列在所影响的组件下,内容包括问题描述和一个表,该表中包含 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>
@@ -84,6 +84,12 @@ QC-CR#2258691</a></td>
<th>改进</th>
<th>设备</th>
</tr>
+ <tr>
+ <td>A-112646910</td>
+ <td>安全</td>
+ <td>改进了重置后的图案解锁识别效果</td>
+ <td>Pixel、Pixel XL</td>
+ </tr>
<tr>
<td>A-117522738</td>
<td>性能</td>
@@ -92,8 +98,8 @@ QC-CR#2258691</a></td>
</tr>
<tr>
<td>A-110969183</td>
- <td>相机</td>
- <td>改进了相机捕获性能</td>
+ <td>摄像头</td>
+ <td>改进了摄像头捕获性能</td>
<td>Pixel 2、Pixel 2 XL、Pixel 3、Pixel 3 XL</td>
</tr>
<tr>
@@ -110,7 +116,7 @@ QC-CR#2258691</a></td>
</tr>
<tr>
<td>A-115666282</td>
- <td>相机</td>
+ <td>摄像头</td>
<td>调整了自动对焦行为</td>
<td>Pixel 3、Pixel 3 XL</td>
</tr>
@@ -122,7 +128,7 @@ QC-CR#2258691</a></td>
</tr>
<tr>
<td>A-116758282</td>
- <td>显示</td>
+ <td>显示屏</td>
<td>改进了“显示屏始终保持开启状态”的触发性能</td>
<td>Pixel 3、Pixel 3 XL</td>
</tr>
@@ -152,8 +158,8 @@ QC-CR#2258691</a></td>
</tr>
<tr>
<td>A-113151604</td>
- <td>相机</td>
- <td>改进了相机快门性能</td>
+ <td>摄像头</td>
+ <td>改进了摄像头快门性能</td>
<td>Pixel 3、Pixel 3 XL</td>
</tr>
<tr>
@@ -247,7 +253,7 @@ QC-CR#2258691</a></td>
<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 设备提供的最新二进制驱动程序中通常包含旨在解决相应问题的更新。
+如果问题尚未公开发布,则在“参考编号”列中,相应 Android Bug ID 旁边会显示 *。<em></em><a href="https://developers.google.com/android/drivers" class="external">Google Developers 网站</a>上针对 Pixel/Nexus 设备提供的最新二进制驱动程序中通常包含用于解决相应问题的更新。
</p>
<p>
<strong>5. 为什么要将安全漏洞拆分到本公告和 Android 安全公告中?</strong>
diff --git a/zh-cn/security/bulletin/pixel/2018.html b/zh-cn/security/bulletin/pixel/2018.html
index 243614a2..16d7cf88 100644
--- a/zh-cn/security/bulletin/pixel/2018.html
+++ b/zh-cn/security/bulletin/pixel/2018.html
@@ -33,6 +33,32 @@
<th>发布日期</th>
<th>安全补丁程序级别</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-05</td>
+ </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> /
+ <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>
+ </tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-cn/security/bulletin/pixel/2019-01-01.html b/zh-cn/security/bulletin/pixel/2019-01-01.html
new file mode 100644
index 00000000..679209a4
--- /dev/null
+++ b/zh-cn/security/bulletin/pixel/2019-01-01.html
@@ -0,0 +1,209 @@
+<html devsite><head>
+ <title>Pixel 更新公告 - 2019 年 1 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>发布时间:2019 年 1 月 7 日</em></p>
+
+<p>
+本 Pixel 更新公告详细介绍了会影响<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">受支持的 Google Pixel 设备</a>(Google 设备)的安全漏洞和功能改进。
+对于 Google 设备,如果安全补丁程序级别是 2019-01-05 或更新,则意味着已解决本公告以及 2019 年 1 月的 Android 安全公告中所述的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅<a href="https://support.google.com/pixelphone/answer/4457705" class="external">查看并更新 Android 版本</a>。
+</p>
+<p>
+所有受支持的 Google 设备都将会收到 2019-01-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/2019-01-01">2019 年 1 月的 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="kernel-components">内核组件</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-13098</td>
+ <td>A-113148387<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2">上游内核</a></td>
+ <td>ID</td>
+ <td>中</td>
+ <td>文件系统</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13099</td>
+ <td>A-113148515<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dbe38dc386910c668c75ae616b99b823b59f3eb">上游内核</a></td>
+ <td>ID</td>
+ <td>中</td>
+ <td>文件系统</td>
+ </tr>
+</tbody></table>
+
+<h3 id="functional-patches">功能补丁程序</h3>
+<p>我们针对受影响的 Pixel 设备纳入了以下更新,以解决与 Pixel 设备的安全性无关的功能问题。下表中包含相关参考编号、受影响的类别(例如蓝牙和移动数据网络)、改进功能以及受影响设备。
+</p>
+
+<table>
+ <tbody><tr>
+ </tr></tbody><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-113776612、A-118022272</td>
+ <td>音频</td>
+ <td>改进了录制视频时的音频质量</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">常见问题和解答</h2>
+<p>
+这一部分解答了用户在阅读本公告后可能会提出的常见问题。
+</p>
+<p>
+<strong>1. 如何确定我的设备是否已通过更新解决这些问题?
+</strong>
+</p>
+<p>如果安全补丁程序级别是 2019-01-05 或更新,则意味着已解决 2019-01-05 以及之前的所有安全补丁程序级别涵盖的所有问题。要了解如何查看设备的安全补丁程序级别,请参阅 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel 更新时间表</a>中的说明。
+</p>
+<p id="type">
+<strong>2. “类型”列中的条目表示什么意思?<em></em></strong>
+</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>上针对 Pixel 设备的最新二进制驱动程序中通常包含用于解决相应问题的更新。
+</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>2019 年 1 月 7 日</td>
+ <td>公告已发布。</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/2019.html b/zh-cn/security/bulletin/pixel/2019.html
new file mode 100644
index 00000000..d7298a12
--- /dev/null
+++ b/zh-cn/security/bulletin/pixel/2019.html
@@ -0,0 +1,197 @@
+<html devsite><head>
+ <title>2019 年 Pixel 更新公告</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>本页中列出了我们在 2019 年发布的所有 Pixel 更新公告。如需所有公告的列表,请访问 <a href="/security/bulletin/pixel/index.html">Pixel 更新公告</a>首页。</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>语言</th>
+ <th>发布日期</th>
+ <th>安全补丁程序级别</th>
+ </tr>
+<tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/pixel/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
+ <td>即将发布<!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019 年 1 月 7 日</td>
+ <td>2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/bulletin/pixel/index.html b/zh-cn/security/bulletin/pixel/index.html
index 40717bd0..b98fd3ba 100644
--- a/zh-cn/security/bulletin/pixel/index.html
+++ b/zh-cn/security/bulletin/pixel/index.html
@@ -42,6 +42,32 @@
<th>发布日期</th>
<th>安全补丁程序级别</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-05</td>
+ </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> /
+ <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>
+ </tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-cn/security/encryption/adiantum.html b/zh-cn/security/encryption/adiantum.html
new file mode 100644
index 00000000..cf35db3a
--- /dev/null
+++ b/zh-cn/security/encryption/adiantum.html
@@ -0,0 +1,188 @@
+<html devsite><head>
+ <title>启用 Adiantum</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>
+<a href="https://eprint.iacr.org/2018/720.pdf" class="external">Adiantum</a> 是一种加密方法,专为搭载 Android 9 及更高版本且其 CPU 缺少 <a href="https://en.wikipedia.org/wiki/Advanced_Encryption_Standard" class="external">AES</a> 指令的设备而设计。如果您要寄送启用 ARMv8 加密扩展程序的基于 ARM 的设备或启用 AES-NI 的 x86 设备,则<strong>不得</strong>使用 Adiantum。AES 在这些平台上的运行速度更快。
+</p>
+<p>对于缺少这些 AES CPU 指令的设备,Adiantum 在您的设备上提供了加密功能,且性能开销非常少。要查看基准数据,请参阅 <a href="https://eprint.iacr.org/2018/720.pdf" class="external">Adiantum 论文</a>。要查看在您的硬件上运行的基准源代码,请参阅 <a href="https://github.com/google/adiantum" class="external">GitHub 上的 Adiantum 源代码</a>。
+</p>
+<p>要在搭载 Android 9 或更高版本的设备上启用 Adiantum,您需要更改内核和用户空间。
+</p>
+
+<h2 id="kernel-changes">内核变更</h2>
+<p>择优挑选对内核进行的 Adiantum 更改并应用其他 <code>dm-crypt</code> 补丁程序。如果您在择优挑选时遇到了问题,使用<a href="https://source.android.com/security/encryption/full-disk" class="external">全盘加密</a> (FDE) 的设备可以排除“fscrypt:”补丁程序。
+</p>
+
+<table>
+ <tbody><tr>
+ <th>内核版本</th>
+ <th>内核变更</th>
+ <th><code>dm-crypt</code> 补丁程序</th>
+ </tr>
+ <tr>
+ <td>4.19
+ </td>
+ <td><a href="https://android-review.googlesource.com/q/topic:%22adiantum-4.19%22+(status:open%20OR%20status:merged)" class="external">4.19 内核</a>
+ </td>
+ <td><a href="https://android-review.googlesource.com/c/kernel/common/+/851273" class="external"><code>dm-crypt</code> 补丁程序</a>
+ </td>
+ </tr>
+ <tr>
+ <td>4.14
+ </td>
+ <td><a href="https://android-review.googlesource.com/q/topic:%22adiantum-4.14%22+(status:open%20OR%20status:merged)" class="external">4.14 内核</a>
+ </td>
+ <td><a href="https://android-review.googlesource.com/c/kernel/common/+/851275" class="external"><code>dm-crypt</code> 补丁程序</a>
+ </td>
+ </tr>
+ <tr>
+ <td>4.9
+ </td>
+ <td><a href="https://android-review.googlesource.com/q/topic:%22adiantum-4.9%22+(status:open%20OR%20status:merged)" class="external">4.9 内核</a>
+ </td>
+ <td><a href="https://android-review.googlesource.com/c/kernel/common/+/851278" class="external"><code>dm-crypt</code> 补丁程序</a>
+ </td>
+ </tr>
+</tbody></table>
+
+<h3 id="enable-adiantum-kernel">在内核中启用 Adiantum</h3>
+
+<p>
+在集成内核更改后,通过添加以下行来更改内核配置:
+</p>
+
+<pre class="devsite-click-to-copy">CONFIG_CRYPTO_ADIANTUM=y
+CONFIG_DM_CRYPT=y
+</pre>
+
+<p>
+如果您的设备使用 4.4 内核,还要添加:
+</p>
+
+<pre class="devsite-click-to-copy">CONFIG_CRYPTO_SEQIV=y
+</pre>
+<p>
+如果您的设备使用文件级加密 (FBE),还要添加:
+</p>
+
+<pre class="devsite-click-to-copy">CONFIG_F2FS_FS_ENCRYPTION=y
+</pre>
+<p>
+要确保在 32 位 ARM 内核上实现良好的性能,请为该内核启用 NEON 指令:
+</p>
+
+<pre class="devsite-click-to-copy">CONFIG_CRYPTO_AES_ARM=y
+CONFIG_CRYPTO_CHACHA20_NEON=y
+CONFIG_CRYPTO_NHPOLY1305_NEON=y
+CONFIG_KERNEL_MODE_NEON=y
+</pre>
+
+<h2 id="userspace-changes">用户空间更改</h2>
+<p>对于搭载 Android 9 的设备,请在 AOSP 中 <code>pie-platform-release</code> 分支上的 <code>userspace_adiantum_support_pie</code> 主题中择优挑选 <a href="https://android-review.googlesource.com/q/topic:%22userspace_adiantum_support_pie%22+(status:open%20OR%20status:merged)" class="external">Adiantum 用户空间更改</a>。</p>
+<p>
+<a href="https://android-review.googlesource.com/q/topic:%22userspace_adiantum_support%22+(status:open%20OR%20status:merged)" class="external">AOSP 的 master 分支</a>中也包含这些更改。
+</p>
+
+<h2 id="enable-adiantum-device">在您的设备中启用 Adiantum</h2>
+<p>
+这些设置适用于设备上的 userdata,也适用于可合并的存储设备。
+</p>
+
+<h3 id="fbe-devices">支持文件级加密的设备</h3>
+<p>
+要启用 Adiantum 并提高其性能,请在 <code>PRODUCT_PROPERTY_OVERRIDES</code> 中设置以下属性:
+</p>
+
+<pre class="devsite-click-to-copy">ro.crypto.fde_algorithm=adiantum
+ro.crypto.fde_sector_size=4096
+ro.crypto.volume.contents_mode=adiantum
+ro.crypto.volume.filenames_mode=adiantum
+</pre>
+
+<aside class="caution"><strong>重要提示</strong>:此设置会引用 FDE,但在 FBE 设备上也需要这么做;它会影响可合并的存储设备。
+</aside>
+
+<p>
+将 <code>fde_sector_size</code> 设置为 4096 可以提高性能,但 Adiantum 无需此设置也可正常运行。设置扇区大小要求为 userdata 分区设置偏移量和对齐方式,且可合并的存储设备必须实现 4096 字节对齐。
+</p>
+<p>
+ 在 <code>fstab</code> 中,对 userdata 使用以下选项:
+</p>
+
+<pre class="devsite-click-to-copy">fileencryption=adiantum
+</pre>
+<p>
+要验证您的实现是否有效,请生成错误报告或运行:
+</p>
+
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">adb root</code>
+<code class="devsite-terminal">adb shell dmesg</code>
+</pre>
+<p>
+如果正确启用了 Adiantum,您应该会在内核日志中看到以下内容:
+</p>
+
+<pre class="devsite-click-to-copy">fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
+</pre>
+
+<aside class="note">
+<strong>注意</strong>:对于基于 ARM 的设备,实现名称应完全匹配。如果您没有看到对 <code>neon</code> 的引用,则您的设备也将无法执行。要详细了解如何启用 NEON 指令,请参阅<em><a href="#enable-adiantum-kernel">在内核中启用 Adiantum</a></em> 部分。
+</aside>
+
+<h3 id="fde-devices">支持全盘加密的设备</h3>
+<p>
+要启用 Adiantum 并提高其性能,请在 <code>PRODUCT_PROPERTY_OVERRIDES</code> 中设置以下属性:
+</p>
+
+<pre class="devsite-click-to-copy">ro.crypto.fde_algorithm=adiantum
+ro.crypto.fde_sector_size=4096
+</pre>
+<p>
+将 <code>fde_sector_size</code> 设置为 4096 可以提高性能,但 Adiantum 无需此设置也可正常运行。设置扇区大小要求为 userdata 分区设置偏移量和对齐方式,且可合并的存储设备必须实现 4096 字节对齐。
+</p>
+<p>
+在 <code>fstab</code> 中,对 userdata 设置以下选项:
+</p>
+
+<pre class="devsite-click-to-copy">forceencrypt
+</pre>
+<p>
+要验证您的实现是否有效,请生成错误报告或运行:
+</p>
+
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">adb root</code>
+<code class="devsite-terminal">adb shell dmesg</code>
+</pre>
+
+<p>
+如果正确启用了 Adiantum,您应该会在内核日志中看到以下内容:
+</p>
+
+<pre class="devsite-click-to-copy">device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
+</pre>
+<aside class="note">
+<strong>注意</strong>:对于基于 ARM 的设备,实现名称应完全匹配。如果您没有看到对 <code>neon</code> 的引用,则您的设备也将无法执行。要详细了解如何启用 NEON 指令,请参阅<em><a href="#enable-adiantum-kernel">在内核中启用 Adiantum</a></em> 部分。
+</aside>
+
+</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 8186f380..fb433a4a 100644
--- a/zh-cn/security/encryption/file-based.html
+++ b/zh-cn/security/encryption/file-based.html
@@ -50,7 +50,7 @@ Android 7.0 及更高版本支持文件级加密 (FBE)。采用文件级加密
这种区分能够使工作资料更加安全,因为这样一来,加密不再只基于启动密码,从而能够同时保护多位用户。
</p>
<p>
-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 存储空间将始终处于解锁状态。
+Direct Boot API 允许加密感知型应用访问上述任何一个存储空间。应用生命周期会发生一些变化,以便系统在用户的 CE 存储空间因用户在锁定屏幕上首次输入凭据而解锁时,或者在工作资料提供<a href="https://developer.android.com/about/versions/nougat/android-7.0.html#android_for_work">工作资料安全验证</a>时,通知应用。<em></em>无论是否实现了 FBE,运行 Android 7.0 的设备都必须要支持这些新的 API 和生命周期。不过,如果没有启用 FBE,DE 和 CE 存储空间将始终处于解锁状态。
</p>
<p>
Android 开源项目 (AOSP) 中提供了 Ext4 和 F2FS 文件系统中的文件级加密的完整实现。在满足相关要求的设备上,只需启用该实现即可使用该功能。选择使用 FBE 的制造商可能想要了解基于所用系统芯片 (SoC) 优化该功能的方法。
@@ -70,7 +70,7 @@ Android 提供了文件级加密的参考实现,其中 vold (<a href="https://
<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> 命令,可以找到更多加密感知型应用和服务的示例。
@@ -80,8 +80,7 @@ Android 提供了文件级加密的参考实现,其中 vold (<a href="https://
要安全地使用 AOSP 提供的 FBE 实现,设备需要满足以下依赖关系:</p>
<ul>
-<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>对 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>
@@ -244,7 +243,7 @@ AOSP 实现会用到内核中的“fscrypt”加密(受 ext4 和 f2fs 支持
</p><ul>
<li>身份验证令牌</li><li>扩展凭据</li><li>secdiscardable hash</li></ul>
<p>
-身份验证令牌是一个经过加密和身份验证的令牌<em></em>,由 <a href="/security/authentication/gatekeeper.html">Gatekeeper</a> 在用户成功登录时生成。除非用户提供的身份验证令牌正确无误,否则 TEE 将拒绝用户使用该密钥。如果用户没有任何凭据,则不使用也不需要使用身份验证令牌。
+<em></em>身份验证令牌是一个经过加密和身份验证的令牌,由 <a href="/security/authentication/gatekeeper.html">Gatekeeper</a> 在用户成功登录时生成。除非用户提供的身份验证令牌正确无误,否则 TEE 将拒绝用户使用该密钥。如果用户没有任何凭据,则不使用也不需要使用身份验证令牌。
</p>
<p>
扩展凭据是使用 <code>scrypt</code> 算法进行加盐和扩展处理后的用户凭据。<em></em>实际上,凭据在被传递到 <code>vold</code>(以便传递到 <code>scrypt</code>)之前,会在锁定设置服务中接受一次哈希处理。扩展凭据会以加密形式绑定到 TEE 中的相应密钥,并享有适用于 <code>KM_TAG_APPLICATION_ID</code> 的所有保证。如果用户没有凭据,则不使用也不需要使用扩展凭据。
diff --git a/zh-cn/security/encryption/index.html b/zh-cn/security/encryption/index.html
index 8c3f9d7c..b4564ccf 100644
--- a/zh-cn/security/encryption/index.html
+++ b/zh-cn/security/encryption/index.html
@@ -47,7 +47,7 @@ Android P 引入了对存在硬件支持的<a href="/security/encryption/metadat
Android 5.0 及更高版本支持<a href="/security/encryption/full-disk.html">全盘加密</a>。全盘加密是使用单个密钥(由用户的设备密码加以保护)来保护设备的整个用户数据分区。设备启动后,用户必须提供其凭据才能访问磁盘的任何部分。
</p>
<p>
-虽然这种加密方式非常有利于确保安全性,但这也意味着当重新启动设备时,用户无法立即使用手机的大多数核心功能。由于对用户数据的访问受单个用户凭据的保护,因此闹钟等功能将无法运行,无障碍服务将无法使用,并且手机也无法接听电话。
+虽然这种加密方式非常有利于确保安全性,但这也意味着当重新启动设备时,用户无法立即使用手机的大多数核心功能。由于此单个用户凭据的保护,系统无法访问用户的数据,所以闹钟等功能将无法运行,无障碍服务将无法使用,并且手机也无法接听电话。
</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/enhancements/enhancements42.html b/zh-cn/security/enhancements/enhancements42.html
index c0444910..6ac92fd9 100644
--- a/zh-cn/security/enhancements/enhancements42.html
+++ b/zh-cn/security/enhancements/enhancements42.html
@@ -29,7 +29,7 @@ Android 提供了一个多层安全模型,<a href="/security/index.html">Andro
<li><strong>始终开启的 VPN</strong> - 可以配置 VPN,以确保在建立 VPN 连接之前应用无法访问网络。这有助于防止应用跨其他网络发送数据。</li>
-<li><strong>证书锁定</strong> - Android 的核心库现在支持<a href="https://developer.android.com/reference/android/net/http/X509TrustManagerExtensions.html">证书锁定</a>。如果证书未关联到一组应关联的证书,锁定的域将会收到证书验证失败消息。这有助于防范证书授权中心免遭可能的入侵。</li>
+<li><strong>锁住证书</strong> - Android 的核心库现在支持<a href="https://developer.android.com/reference/android/net/http/X509TrustManagerExtensions.html">锁住证书</a>。如果证书未关联到一组应关联的证书,锁住的域将会收到证书验证失败消息。这有助于防范证书授权中心免遭可能的入侵。</li>
<li><strong>改进后的 Android 权限显示方式</strong> - 权限划分到了多个对用户来说更清晰明了的组中。在审核权限时,用户可以点击权限来查看关于相应权限的更多详细信息。</li>
@@ -39,11 +39,11 @@ Android 提供了一个多层安全模型,<a href="/security/index.html">Andro
<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> - 默认情况下,对于每个<a href="https://developer.android.com/reference/android/content/ContentProvider.html">内容提供方</a>,选择 API 17 级的应用都会将“export”设为“false”,以缩小应用的默认受攻击面。</li>
<li><strong>加密</strong> - 修改了 SecureRandom 和 Cipher.RSA 的默认实现,以便使用 OpenSSL。为使用 OpenSSL 1.0.1 的 TLSv1.1 和 TLSv1.2 添加了安全套接字支持</li>
-<li><strong>安全漏洞修复程序</strong> - 升级了开放源代码库,新增了一些安全漏洞修复程序,其中包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,搭载更低版本 Android 的某些设备可能也会包含这些修复程序。</li>
+<li><strong>安全漏洞修复程序</strong> - 升级了开放源代码库,新增了一些安全漏洞修复程序,其中包括 WebKit、libpng、OpenSSL 和 LibXML。Android 4.2 中还包含针对 Android 特有漏洞的修复程序。有关这些漏洞的信息已提供给“开放手机联盟”(Open Handset Alliance) 成员,并且 Android 开放源代码项目中提供了相应的修复程序。为了提高安全性,搭载更低 Android 版本的某些设备可能也会包含这些修复程序。</li>
</ul>
diff --git a/zh-cn/security/index.html b/zh-cn/security/index.html
index 5d699c58..e946acfd 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>
@@ -85,7 +85,7 @@ Google 的主要安全服务包括:
<ul>
<li><strong>Google Play</strong>:Google Play 是一系列服务的总称。借助这些服务,用户可以通过自己的 Android 设备或网络发现、安装和购买应用。Google Play 可让开发者轻松覆盖 Android 用户和潜在客户。此外,Google Play 还提供社区审核、应用<a href="https://developer.android.com/guide/publishing/licensing.html">许可验证</a>、应用安全扫描以及其他安全服务。</li>
<li><strong>Android 更新</strong>:Android 更新服务可为某些 Android 设备提供新功能和安全更新,其中包括通过网络或无线下载 (OTA) 方式提供的更新。</li>
- <li><strong>应用服务</strong>:可让 Android 应用使用云端功能(例如,应用数据和设置<a href="https://developer.android.com/guide/topics/data/backup.html">备份</a>功能,以及用于推送消息的“云端至设备消息传递”(<a href="https://developers.google.com/cloud-messaging/">C2DM</a>) 功能)的框架。</li>
+ <li><strong>应用服务</strong>:一种框架,可让 Android 应用使用云端功能,例如应用数据和设置<a href="https://developer.android.com/guide/topics/data/backup.html">备份</a>功能,以及用于推送消息的“云端至设备消息传递”(<a href="https://developers.google.com/cloud-messaging/">C2DM</a>) 功能。</li>
<li><strong>验证应用</strong>:在用户安装有害应用时发出警告或自动阻止安装;持续扫描设备上的应用,并在发现<a href="https://support.google.com/accounts/answer/2812853">有害应用</a>时发出警告或将其移除。
</li>
<li><strong>SafetyNet</strong>:一款旨在保护隐私的入侵检测系统,能够帮助 Google 跟踪和降低已知的安全威胁,并能够发现新的安全威胁。</li>
diff --git a/zh-cn/security/keystore/attestation.html b/zh-cn/security/keystore/attestation.html
index 844dbfcd..ecc042e6 100644
--- a/zh-cn/security/keystore/attestation.html
+++ b/zh-cn/security/keystore/attestation.html
@@ -140,8 +140,7 @@ Keystore 提供了一个更安全的位置,让您能够以可控方式创建
</tr>
<tr>
<td><code>validity</code></td>
- <td>两个日期的序列,包含 <a href="/security/keystore/tags#active_datetime">Tag::ACTIVE_DATETIME</a> 和 <a href="/security/keystore/tags#usage_expire_datetime">Tag::USAGE_EXPIRE_DATETIME</a> 的值。
- 这些值是自 1970 年 1 月 1 日以来的毫秒数。
+ <td>两个日期的序列,包含 <a href="/security/keystore/tags#active_datetime">Tag::ACTIVE_DATETIME</a> 和 <a href="/security/keystore/tags#usage_expire_datetime">Tag::USAGE_EXPIRE_DATETIME</a> 的值。这两个值是自 1970 年 1 月 1 日以来的毫秒数。
有关证书中的正确日期表示法,请参阅 <a href="https://tools.ietf.org/html/rfc5280">RFC 5280</a>。<br />
如果 <code>Tag::ACTIVE_DATETIME</code> 不存在,则使用 <code>Tag::CREATION_DATETIME</code> 的值。如果 <code>Tag::USAGE_EXPIRE_DATETIME</code> 不存在,则使用批量认证密钥证书的失效日期。</td>
</tr>
@@ -170,8 +169,7 @@ Keystore 提供了一个更安全的位置,让您能够以可控方式创建
<h3 id="attestation-extension">认证扩展</h3>
<p>
认证扩展包含对与密钥相关联的密钥 Keymaster 授权的完整描述,其所采用的结构直接对应于 Android 和 Keymaster HAL 中使用的授权列表。授权列表中的各个标记分别由一个 ASN.1 SEQUENCE 条目表示,通过 Keymaster 标记编号进行显式标记,而类型描述符(4 个高值位)则采用掩码处理。</p>
-<p>例如,在 Keymaster 3 中,<code>Tag::PURPOSE</code> 在 types.hal 中被定义为 <code>ENUM_REP | 1</code>。对于认证扩展,<code>ENUM_REP</code> 值会被移除,但留下标记 <code>1</code>。
-(对于 Keymaster 2 及更低版本,<code>KM_TAG_PURPOSE</code> 在 keymaster_defs.h 中定义。)
+<p>例如,在 Keymaster 3 中,<code>Tag::PURPOSE</code> 在 types.hal 中被定义为 <code>ENUM_REP | 1</code>。对于认证扩展,<code>ENUM_REP</code> 值会被移除,但留下标记 <code>1</code>。(对于 Keymaster 2 及更低版本,<code>KM_TAG_PURPOSE</code> 在 keymaster_defs.h 中定义。)
</p>
<p>
根据下表所示,值通过一种简单的方式转换为 ASN.1 类型:</p>
@@ -350,8 +348,7 @@ keymasterVersion 和 attestationChallenge 字段通过位置(而非标记)
<p>
AuthorizationList 字段均为可选字段并通过 Keymaster 标记值来标识,类型位则采用掩码处理。此类字段使用显式标记,因此还包含一个可指明其 ASN.1 类型的标记,这样更易于解析。
</p>
-<p>
-要详细了解各个字段的值,如果是 Keymaster 3,请参阅 types.hal,如果是 Keymaster 2 及更低版本,请参阅 keymaster_defs.h。通过省略 KM_TAG 前缀并将其余部分更改为驼峰式大小写形式,Keymaster 标记名称被转换为了字段名称,因此 <code>Tag::KEY_SIZE</code> 变成了 <code>keySize</code>。
+<p>要详细了解各个字段的值,如果是 Keymaster 3,请参阅 types.hal,如果是 Keymaster 2 及更低版本,请参阅 keymaster_defs.h。通过省略 KM_TAG 前缀并将其余部分更改为驼峰式大小写形式,Keymaster 标记名称被转换为了字段名称,因此 <code>Tag::KEY_SIZE</code> 变成了 <code>keySize</code>。
</p>
<p class="note">
<strong>注意</strong>:types.hal 和 keymaster_defs.h 中的很多标记都未包含在该架构中。因为一些标记不适用于不对称密钥,还有一些标记在设备外没有意义,等等。
@@ -516,8 +513,7 @@ ID 认证的主要 API 表面基于 Keymaster 2 中引入的现有密钥认证
<li><code>ID<sub>1</sub>...ID<sub>n</sub></code> 是原始 ID 值;特定值与特定索引之间的关联取决于实现,因为不同设备将具有不同数量的标识符</li>
<li><code>||</code> 表示连接</li>
</ul>
-<p>
-由于 HMAC 输出具有固定大小,因此不需要标头或其他结构就能够查找单个 ID 哈希或 D 结构的 HMAC。除了检查所提供的值以执行认证之外,实现还需要验证 S,具体方法如下:从 S 中提取 D,计算 HMAC(HBK、D)并将其与 S 中的值进行比较,从而确认没有任何单个 ID 遭到修改/损坏。此外,实现必须对所有单个 ID 元素进行常数时间比较,并对 S 进行验证。比较时间必须是常量,不考虑所提供的 ID 数量以及测试的任何部分是否正确匹配。
+<p>由于 HMAC 输出的大小是固定的,因此不需要标头或其他结构就能够查找单个 ID 哈希或 D 结构的 HMAC。实现不仅需要检查所收到的值以执行认证,还需要验证 S。验证 S 的方法是从 S 中提取 D,计算 HMAC(HBK、D),然后将计算结果与 S 中的值进行比较,从而确认没有任何单个 ID 遭到修改/损坏。此外,实现必须对所有单个 ID 元素进行常数时间比较,并对 S 进行验证。比较时间必须是常量,不考虑所提供的 ID 数量以及测试的任何部分是否正确匹配。
</p>
<h3 id="hardware-identifiers">硬件标识符</h3>
<p>
@@ -558,8 +554,7 @@ ID 认证支持以下硬件标识符:
<p>
如果该设备支持 ID 认证,并且密钥认证请求中包含以上一个或多个标记,TEE 会验证带有各个标记的标识符是否与其硬件标识符的副本相匹配。如果有一个或多个标识符不匹配,则整个认证都会失败并显示 <code>ErrorCode::CANNOT_ATTEST_IDS</code>。这种情况也适用于多次带有同一标记的标识符。这在证明 IMEI 时会非常实用(举例而言):一个设备可以配备多个具有多个 IMEI 的无线装置。如果带有每个 <code>ATTESTATION_ID_IMEI</code> 标记的值与设备的其中一个无线装置相匹配,则认证请求有效。这同样适用于所有其他标记。
</p>
-<p>
-如果认证成功,则使用<a href="#schema">上述架构</a>将经过认证的 ID 添加到已颁发认证证书的<a href="#attestation-extension">认证扩展</a> (OID 1.3.6.1.4.1.11129.2.1.17)。Keymaster 2 认证架构发生的变更以<strong>粗体</strong>显示,并带有注释。
+<p>如果认证成功,则会使用<a href="#attestation-extension">上述架构</a>将经过认证的 ID 添加到所颁发的认证证书的<a href="#schema">认证扩展</a>中 (OID 1.3.6.1.4.1.11129.2.1.17)。Keymaster 2 认证架构发生的变更以<strong>粗体</strong>显示,并带有注释。
</p>
<h2 id="java-api">Java API</h2>
diff --git a/zh-cn/security/keystore/implementer-ref.html b/zh-cn/security/keystore/implementer-ref.html
index 9d42e636..56c1493f 100644
--- a/zh-cn/security/keystore/implementer-ref.html
+++ b/zh-cn/security/keystore/implementer-ref.html
@@ -81,7 +81,7 @@ getHardwareFeatures()
<p><strong>版本</strong>:2</p>
<p>该函数在 Keymaster 2 中引入,并在 Keymaster 3 中被弃用,因为这些信息已在系统属性文件中提供,制造商实现会在启动期间读取这些文件。</p>
-<p>配置 Keymaster。该方法在打开设备之后、使用设备之前被调用一次。它用于向 Keymaster 提供 <a href="/security/keystore/tags#os_version">KM_TAG_OS_VERSION</a> 和 <a href="/security/keystore/tags#os_patchlevel">KM_TAG_OS_PATCHLEVEL</a>。
+<p>配置 Keymaster。该方法在打开设备之后、使用设备之前被调用一次。可使用此方法向 Keymaster 提供 <a href="/security/keystore/tags#os_version">KM_TAG_OS_VERSION</a> 和 <a href="/security/keystore/tags#os_patchlevel">KM_TAG_OS_PATCHLEVEL</a>。
在该方法被调用之前,所有其他方法会返回 <code>KM_ERROR_KEYMASTER_NOT_CONFIGURED</code>。该方法提供的值仅在每次启动时被 Keymaster 接受一次。之后的调用都会返回 <code>KM_ERROR_OK</code>,但不执行任何操作。</p>
<p>
如果 Keymaster 实现在安全的硬件中进行,且提供的操作系统版本和补丁程序级别的值与引导加载程序向安全硬件提供的值不匹配(或者引导加载程序未提供任何值),则该方法会返回 <code>KM_ERROR_INVALID_ARGUMENT</code>,所有其他方法仍然返回 <code>KM_ERROR_KEYMASTER_NOT_CONFIGURED</code>。</p>
@@ -146,8 +146,7 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<li><code>Tag::PADDING</code> 用于指定可以使用的填充模式。此参数仅与 ECB 和 CBC 模式相关。</li>
</ul>
-<p>如果指定的是 GCM 分块模式,则提供 <a href="/security/keystore/tags#min_mac_length">Tag::MIN_MAC_LENGTH</a>。
-如果缺少此参数,该方法会返回 <code>ErrorCode::MISSING_MIN_MAC_LENGTH</code>。标记的值为 8 的倍数且介于 96 和 128 之间。</p>
+<p>如果指定的是 GCM 分块模式,则提供 <a href="/security/keystore/tags#min_mac_length">Tag::MIN_MAC_LENGTH</a>。如果缺少此参数,该方法会返回 <code>ErrorCode::MISSING_MIN_MAC_LENGTH</code>。该标记的值为 8 的倍数且介于 96 和 128 之间。</p>
<h4 id="generate_key_hmac_keys">HMAC 密钥</h4>
@@ -163,13 +162,13 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<h4 id="key_characteristics">密钥特性</h4>
<p>如果特性参数为非 NULL 值,<code>generateKey</code> 会返回新生成密钥的特性(相应划分到由硬件强制执行的列表和由软件强制执行的列表中)。
-要了解哪些特性会划分到哪个列表中,请参阅 <a href="#get_key_characteristics">getKeyCharacteristics</a>。返回的特性包含为生成密钥而指定的所有参数,<a href="/security/keystore/tags#application_id">Tag::APPLICATION_ID</a> 和 <a href="/security/keystore/tags#application_data">Tag::APPLICATION_DATA</a> 除外。如果这两个标记包含在密钥参数中,则将其从返回的特性中移除,以确保无法通过查看返回的密钥 Blob 找出这两个标记的值。不过,这两个标记以加密形式绑定到密钥 Blob,以便在使用相应密钥时,如果未提供正确的值,使用会失败。<a href="/security/keystore/tags#root_of_trust">Tag::ROOT_OF_TRUST</a> 同样会以加密形式绑定到相应密钥,但在生成或导入密钥期间可以不指定此标记,并且在任何情况下都不会返回此标记。</p>
+要了解哪些特性会划分到哪个列表中,请参阅 <a href="#get_key_characteristics">getKeyCharacteristics</a>。返回的特性包含为生成密钥而指定的所有参数,但 <a href="/security/keystore/tags#application_id">Tag::APPLICATION_ID</a> 和 <a href="/security/keystore/tags#application_data">Tag::APPLICATION_DATA</a> 除外。如果密钥参数中包含这两个标记,为确保无法通过查看返回的密钥 Blob 找到这两个标记的值,系统会将这两个标记从返回的特性中移除。不过,这两个标记以加密形式绑定到密钥 Blob,以便在使用相应密钥时,如果未提供正确的值,使用会失败。<a href="/security/keystore/tags#root_of_trust">Tag::ROOT_OF_TRUST</a> 同样会以加密形式绑定到相应密钥,但在生成或导入密钥期间可以不指定此标记,并且在任何情况下都不会返回此标记。</p>
-<p>除了收到的标记外,Trustlet 还会添加 <a href="/security/keystore/tags#origin">Tag::ORIGIN</a>(值为 <code>KeyOrigin::GENERATED</code>);如果相应密钥可抗回滚,还要添加 <a href="/security/keystore/tags#rollback_resistant">Tag::ROLLBACK_RESISTANT</a>。</p>
+<p>除了收到的标记外,Trustlet 还会添加 <a href="/security/keystore/tags#origin">Tag::ORIGIN</a>(值为 <code>KeyOrigin::GENERATED</code>);如果相应密钥可抗回滚,则还会添加 <a href="/security/keystore/tags#rollback_resistant">Tag::ROLLBACK_RESISTANT</a>。</p>
<h4 id="rollback_resistance">抗回滚</h4>
-<p>抗回滚意味着,密钥在通过 <a href="#delete_key">deleteKey</a> 或 <a href="#delete_all_keys">deleteAllKeys</a> 删除后,安全硬件会保证它绝对无法再使用。不具抗回滚功能的实现通常会将生成或导入的密钥材料作为密钥 Blob(一种经过加密和身份验证的形式)返回给调用程序。当 Keystore 删除密钥 Blob 后,相应密钥将会消失,但之前已设法获取密钥材料的攻击者可能能够将相应密钥材料恢复到设备上。</p>
+<p>抗回滚意味着,在使用 <a href="#delete_key">deleteKey</a> 或 <a href="#delete_all_keys">deleteAllKeys</a> 删除密钥后,可以通过安全硬件保证绝对无法再使用该等密钥。不具抗回滚功能的实现通常会将生成或导入的密钥材料作为密钥 Blob(一种经过加密和身份验证的形式)返回给调用程序。当 Keystore 删除密钥 Blob 后,相应密钥将会消失,但之前已设法获取密钥材料的攻击者可能能够将相应密钥材料恢复到设备上。</p>
<p>如果安全硬件保证被删除的密钥以后无法被恢复,那么相应密钥便可抗回滚。安全硬件通常是通过将额外的密钥元数据存储在攻击者无法操控的可信位置来做到这一点。在移动设备上,用于实现这一点的机制通常为 Replay Protected Memory Block (RPMB)。由于可创建的密钥数量基本上没有限制,而用于抗回滚的可信存储空间的大小则可能有限制,因此,该方法需要在即使无法为新密钥提供抗回滚功能的情况下同样取得成功。在这种情况下,不得将 <a href="/security/keystore/tags#rollback_resistant">Tag::ROLLBACK_RESISTANT</a> 添加到密钥特性中。</p>
@@ -190,7 +189,7 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<li><a href="/security/keystore/tags#algorithm">Tag::ALGORITHM</a>、<a href="/security/keystore/tags#key_size">Tag::KEY_SIZE</a> 和 <a href="/security/keystore/tags#rsa_public_exponent">Tag::RSA_PUBLIC_EXPONENT</a> 是密钥的固有属性。对于任何由硬件来保障安全的密钥,这些标记都将位于由硬件强制执行的列表中。</li>
<li>由安全硬件支持的 <a href="/security/keystore/tags#digest">Tag::DIGEST</a> 值位于由硬件支持的列表中。不受支持的摘要则位于由软件支持的列表中。</li>
<li><a href="/security/keystore/tags#padding">Tag::PADDING</a> 的值通常位于由硬件支持的列表中,除非存在这样一种可能性,某种特定的填充模式必须要由软件来执行,在这种情况下,这些值将位于由软件强制执行的列表中。如果 RSA 密钥允许使用不是由安全硬件支持的摘要算法进行 PSS 或 OAEP 填充,则存在这种可能性。</li>
- <li><a href="/security/keystore/tags#user_secure_id">Tag::USER_SECURE_ID</a> 和 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a> 仅在用户身份验证由硬件强制执行时,才由硬件强制执行。要让用户身份验证由硬件强制执行,Keymaster Trustlet 和相关的身份验证 Trustlet 都必须是安全的,且共用一个用于签署和验证身份验证令牌的 HMAC 密钥。要了解详情,请参阅<a href="/security/authentication/">身份验证</a>页面。</li>
+ <li><a href="/security/keystore/tags#user_secure_id">Tag::USER_SECURE_ID</a> 和 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a> 仅在用户身份验证是由硬件强制执行时才会由硬件强制执行。要让用户身份验证由硬件强制执行,Keymaster Trustlet 和相关的身份验证 Trustlet 都必须是安全的,且共用一个用于签署和验证身份验证令牌的 HMAC 密钥。要了解详情,请参阅<a href="/security/authentication/">身份验证</a>页面。</li>
<li><a href="/security/keystore/tags#active_datetime">Tag::ACTIVE_DATETIME</a>、<a href="/security/keystore/tags#origination_expire_datetime">Tag::ORIGINATION_EXPIRE_DATETIME</a> 和 <a href="/security/keystore/tags#usage_expire_datetime">Tag::USAGE_EXPIRE_DATETIME</a> 标记要求能够访问可验证的正确时钟。大多数安全硬件只能访问由非安全操作系统提供的时间信息,这意味着这些标记由软件强制执行。</li>
<li>对于绑定到硬件的密钥,<a href="/security/keystore/tags#origin">Tag::ORIGIN</a> 始终位于硬件列表中。如果此标记出现在硬件列表中,更高的层级便可据此确定相应密钥是由硬件支持的。</li>
</ul>
@@ -232,8 +231,7 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<h3 id="destroy_attestation_ids">destroyAttestationIds</h3>
<p><strong>版本</strong>:3</p>
-<p>
-<code>destroyAttestationIds()</code> 方法用于永久停用新的<a href="/security/keystore/attestation#id-attestation">ID 认证</a>功能(该功能是可选功能,但我们强烈推荐)。如果 TEE 无法确保在调用此方法后永久停用相应的 ID 认证,则一定不得实现 ID 认证,在这种情况下,此方法不执行任何操作并返回 <code>ErrorCode::UNIMPLEMENTED</code>。如果支持 ID 认证,则需要实现此方法且必须永久停用未来尝试进行 ID 认证的所有操作。此方法的调用次数不受限制。如果已永久停用 ID 认证,则此方法不会执行任何操作并返回 <code>ErrorCode::OK</code>。</p>
+<p>可以使用 <code>destroyAttestationIds()</code> 方法永久停用新的 <a href="/security/keystore/attestation#id-attestation">ID 认证</a>功能。该功能是一项可选功能,但我们强烈建议您启用该功能。如果 TEE 无法确保在调用此方法后永久停用相应的 ID 认证,则一定不得实现 ID 认证,在这种情况下,此方法不执行任何操作并返回 <code>ErrorCode::UNIMPLEMENTED</code>。如果支持 ID 认证,则需要实现此方法且必须永久停用未来尝试进行 ID 认证的所有操作。此方法的调用次数不受限制。如果已永久停用 ID 认证,则此方法不会执行任何操作并返回 <code>ErrorCode::OK</code>。</p>
<p>
此方法只可能返回以下错误代码:<code>ErrorCode::UNIMPLEMENTED</code>(如果不支持 ID 认证)、<code>ErrorCode:OK</code>、<code>ErrorCode::KEYMASTER_NOT_CONFIGURED</code> 或指示无法与安全硬件通信的错误代码之一。
</p>
@@ -242,7 +240,7 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<p><strong>版本</strong>:1、2、3</p>
-<p>使用指定的密钥和参数(视情况而定)针对指定的目的开始执行加密操作,并返回用于与 <a href="#update">update</a> 和 <a href="#finish">finish</a> 配合使用以完成操作的操作句柄。该操作句柄还会在经过身份验证的操作中用作“质询”令牌,并且对于此类操作,该操作句柄包含在身份验证令牌的 <code>challenge</code> 字段中。</p>
+<p>使用指定的密钥和参数(视情况而定)针对指定的目的开始执行加密操作,并返回用于与 <a href="#update">update</a> 和 <a href="#finish">finish</a> 配合使用来完成操作的操作句柄。该操作句柄还会在经过身份验证的操作中用作“质询”令牌,并且对于此类操作,该操作句柄包含在身份验证令牌的 <code>challenge</code> 字段中。</p>
<p>Keymaster 实现支持至少 16 个并行操作。Keystore 最多使用 15 个,留一个给 vold 用于对密码进行加密。当 Keystore 有 15 个操作正在进行(已调用 <code>begin</code>,但尚未调用 <code>finish</code> 或 <code>abort</code>)时,如果 Keystore 收到开始第 16 个操作的请求,它会对最近使用最少的操作调用 <code>abort</code>,以便将进行中的操作减少到 14 个,然后再调用 <code>begin</code> 来开始执行新请求的操作。</p>
@@ -253,20 +251,20 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<p>在执行此方法期间,如果实现将以下密钥授权放入到了“由硬件强制执行的”特性中,并且相应操作不是公钥操作,那么这些密钥授权将由 Trustlet 来强制执行。即使不符合授权要求,也会允许公钥操作(即使用 RSA 或 EC 密钥进行的 <code>KeyPurpose::ENCRYPT</code> 和 <code>KeyPurpose::VERIFY</code>)成功完成。</p>
<ul>
- <li><a href="/security/keystore/tags#purpose">Tag::PURPOSE</a>:除非请求的操作是公钥操作,否则 <code>begin()</code> 调用中指定的目的必须与密钥授权中的某个目的一致。如果指定的目的不一致且操作并非公钥操作,则 <code>begin</code> 会返回 <code>ErrorCode::UNSUPPORTED_PURPOSE</code>。公钥操作是不对称加密或验证操作。</li>
+ <li><a href="/security/keystore/tags#purpose">Tag::PURPOSE</a>:除非请求的操作是公钥操作,否则在 <code>begin()</code> 调用中指定的目的必须与密钥授权中的某个目的一致。如果指定的目的不一致且操作并非公钥操作,则 <code>begin</code> 会返回 <code>ErrorCode::UNSUPPORTED_PURPOSE</code>。公钥操作是不对称加密或验证操作。</li>
<li>只有可信 UTC 时间源可用时才能强制执行 <a href="/security/keystore/tags#active_datetime">Tag::ACTIVE_DATETIME</a>。如果当前日期和时间早于此标记的值,该方法会返回 <code>ErrorCode::KEY_NOT_YET_VALID</code>。</li>
<li>只有可信 UTC 时间源可用时才能强制执行 <a href="/security/keystore/tags#origination_expire_datetime">Tag::ORIGINATION_EXPIRE_DATETIME</a>。如果当前日期和时间晚于此标记的值,并且目的是 <code>KeyPurpose::ENCRYPT</code> 或 <code>KeyPurpose::SIGN</code>,该方法会返回 <code>ErrorCode::KEY_EXPIRED</code>。</li>
<li>只有可信 UTC 时间源可用时才能强制执行 <a href="/security/keystore/tags#usage_expire_datetime">Tag::USAGE_EXPIRE_DATETIME</a>。如果当前日期和时间晚于此标记的值,并且目的是 <code>KeyPurpose::DECRYPT</code> 或 <code>KeyPurpose::VERIFY</code>,该方法会返回 <code>ErrorCode::KEY_EXPIRED</code>。</li>
- <li><a href="/security/keystore/tags#min_seconds_between_ops">Tag::MIN_SECONDS_BETWEEN_OPS</a> 会与指明相应密钥上次使用时间的可信相对计时器进行比较。如果上次使用时间加上此标记的值后小于当前时间,该方法会返回 <code>ErrorCode::KEY_RATE_LIMIT_EXCEEDED</code>。要查看重要的实现详情,请参阅<a href="/security/keystore/tags#min_seconds_between_ops">标记说明</a>。</li>
+ <li><a href="/security/keystore/tags#min_seconds_between_ops">Tag::MIN_SECONDS_BETWEEN_OPS</a> 会与指明相应密钥上次使用时间的可信相对计时器进行比较。如果上次使用时间加上此标记的值小于当前时间,该方法会返回 <code>ErrorCode::KEY_RATE_LIMIT_EXCEEDED</code>。要查看重要的实现详情,请参阅<a href="/security/keystore/tags#min_seconds_between_ops">标记说明</a>。</li>
<li><a href="/security/keystore/tags#max_uses_per_boot">Tag::MAX_USES_PER_BOOT</a> 会与用于跟踪自系统启动以来相应密钥使用次数的安全计数器进行比较。如果之前的使用次数已超过此标记的值,该方法会返回 <code>ErrorCode::KEY_MAX_OPS_EXCEEDED</code>。</li>
- <li>仅当相应密钥还有 <a href="/security/keystore/tags#auth_timeout">Tag::AUTH_TIMEOUT</a> 时,<a href="/security/keystore/tags#user_secure_id">Tag::USER_SECURE_ID</a>才会由此方法强制执行。如果相应密钥同时具有这两个标记,此方法必须在 <code>inParams</code> 中收到有效的 <a href="/security/keystore/tags#auth_token">Tag::AUTH_TOKEN</a>。要使身份验证令牌有效,必须满足以下所有条件:
+ <li>仅当相应密钥还具有 <a href="/security/keystore/tags#auth_timeout">Tag::AUTH_TIMEOUT</a> 时,此方法才会强制执行 <a href="/security/keystore/tags#user_secure_id">Tag::USER_SECURE_ID</a>。如果相应密钥同时具有这两个标记,此方法必须在 <code>inParams</code> 中收到有效的 <a href="/security/keystore/tags#auth_token">Tag::AUTH_TOKEN</a>。要使身份验证令牌有效,必须满足以下所有条件:
<ul>
<li>HMAC 字段可正确验证。</li>
<li>相应密钥中有至少一个 <a href="/security/keystore/tags#user_secure_id">Tag::USER_SECURE_ID</a> 值与令牌中至少一个安全 ID 值一致。</li>
<li>相应密钥具有与令牌中的身份验证类型一致的 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a>。</li>
</ul>
<p>如果上述条件中有任何一个不满足,该方法就会返回 <code>ErrorCode::KEY_USER_NOT_AUTHENTICATED</code>。</p></li>
- <li><a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a> 允许调用程序指定随机数或初始化矢量 (IV)。如果相应密钥没有此标记,但调用程序为此方法提供了 <a href="/security/keystore/tags#nonce">Tag::NONCE</a>,则返回 <code>ErrorCode::CALLER_NONCE_PROHIBITED</code>。</li>
+ <li><a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a> 允许调用程序指定随机数或初始化矢量 (IV)。如果相应密钥没有此标记,但调用程序向此方法提供了 <a href="/security/keystore/tags#nonce">Tag::NONCE</a>,则返回 <code>ErrorCode::CALLER_NONCE_PROHIBITED</code>。</li>
<li><a href="/security/keystore/tags#bootloader_only">Tag::BOOTLOADER_ONLY</a> 用于指定相应密钥只能由引导加载程序使用。如果在引导加载程序执行完毕后调用此方法,并且提供的是仅限引导加载程序使用的密钥,则返回 <code>ErrorCode::INVALID_KEY_BLOB</code>。</li>
</ul>
@@ -309,8 +307,8 @@ keymaster_error_t (*configure)(const struct keymaster2_device* dev,
<p>如果分块模式是 <code>BlockMode::GCM</code> 或 <code>BlockMode::CTR</code>,那么指定的填充模式必须是 <code>PaddingMode::NONE</code>。如果分块模式是 <code>BlockMode::ECB</code> 或 <code>BlockMode::CBC</code>,那么指定的填充模式可以是 <code>PaddingMode::NONE</code> 或 <code>PaddingMode::PKCS7</code>。如果填充模式不符合这些条件,则返回 <code>ErrorCode::INCOMPATIBLE_PADDING_MODE</code>。</p>
<p>如果分块模式是 <code>BlockMode::CBC</code>、<code>BlockMode::CTR</code> 或 <code>BlockMode::GCM</code>,则需要初始化矢量或随机数。
-在大多数情况下,调用程序都不应提供 IV 或随机数。在这种情况下,Keymaster 实现会生成一个随机 IV 或随机数,并通过 <code>outParams</code> 中的 <a href="/security/keystore/tags#nonce">Tag::NONCE</a> 将其返回。
-CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密钥授权包含 <a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a>,那么调用程序可以通过 <code>inParams</code> 中的 <a href="/security/keystore/tags#nonce">Tag::NONCE</a> 提供 IV/随机数。如果在 <a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a> 未获得授权时提供了随机数,则返回 <code>ErrorCode::CALLER_NONCE_PROHIBITED</code>。如果在 <a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a> 获得了授权的情况下未提供随机数,则生成一个随机 IV/随机数。</p>
+在大多数情况下,调用程序都不应提供 IV 或随机数。在这种情况下,Keymaster 实现会生成一个随机 IV 或随机数,并通过 <a href="/security/keystore/tags#nonce">outParams</a> 中的 <code>outParams</code> 将其返回。
+CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密钥授权包含 <a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a>,调用程序可能会通过 <code>inParams</code> 中的 <a href="/security/keystore/tags#nonce">Tag::NONCE</a> 提供 IV/随机数。如果在 <a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a> 未获得授权的情况下提供了随机数,则会返回 <code>ErrorCode::CALLER_NONCE_PROHIBITED</code>。如果在 <a href="/security/keystore/tags#caller_nonce">Tag::CALLER_NONCE</a> 获得授权的情况下未提供随机数,则会生成随机 IV/随机数。</p>
<h4 id="begin_hmac_keys">HMAC 密钥</h4>
@@ -332,7 +330,7 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<h4 id="error_handling">错误处理</h4>
-<p>如果此方法返回除 <code>ErrorCode::OK</code> 之外的错误代码,那么相应操作会被中止,操作句柄也会变为无效。如果以后再将该句柄与此方法、<a href="#finish">finish</a> 或 <a href="#abort">abort</a> 配合使用,都会返回 <code>ErrorCode::INVALID_OPERATION_HANDLE</code>。</p>
+<p>如果此方法返回除 <code>ErrorCode::OK</code> 之外的错误代码,那么相应操作会被中止,操作句柄也会变为无效。如果以后再将该句柄与此方法、<a href="#finish">finish</a> 或 <a href="#abort">abort</a> 配合使用,则都会返回 <code>ErrorCode::INVALID_OPERATION_HANDLE</code>。</p>
<h4 id="update_authorization_enforcement">密钥授权强制执行</h4>
@@ -344,7 +342,7 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<li>没有 <a href="/security/keystore/tags#auth_timeout">Tag::AUTH_TIMEOUT</a></li>
</ul>
-<p>在这种情况下,密钥需要针对各项操作的授权,并且 update 方法会在 <code>inParams</code> 参数中收到 <a href="/security/keystore/tags#auth_token">Tag::AUTH_TOKEN</a>。HMAC 会验证该令牌有效且包含匹配的安全用户 ID,与密钥的 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a> 匹配,并且包含质询字段中当前操作的操作句柄。如果不符合这些条件,则返回 <code>ErrorCode::KEY_USER_NOT_AUTHENTICATED</code>。</p>
+<p>在这种情况下,对于每一项操作,密钥都会要求提供授权,并且 update 方法会在 <code>inParams</code> 参数中收到 <a href="/security/keystore/tags#auth_token">Tag::AUTH_TOKEN</a>。HMAC 会验证该令牌有效且包含匹配的安全用户 ID,与密钥的 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a> 匹配,并且包含质询字段中当前操作的操作句柄。如果不符合这些条件,则返回 <code>ErrorCode::KEY_USER_NOT_AUTHENTICATED</code>。</p>
<p>调用程序会在每次调用 <a href="#update">update</a> 和 <a href="#finish">finish</a> 时提供身份验证令牌。实现只需对该令牌验证一次(如果它倾向于这么做)。</p>
@@ -361,7 +359,7 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<h4 id="update_aes_keys">AES 密钥</h4>
-<p>AES GCM 模式支持通过 <code>inParams</code> 参数中的 <a href="/security/keystore/tags#associated_data">Tag::ASSOCIATED_DATA</a> 标记提供的“相关身份验证数据”。
+<p>AES GCM 模式支持通过 <code>inParams</code> 参数的中的 <a href="/security/keystore/tags#associated_data">Tag::ASSOCIATED_DATA</a> 标记提供的“相关身份验证数据”。
可以在重复调用(如果数据太大而无法在单个分块中发送,那么重复调用非常重要)中提供相关数据,但始终先于要加密或解密的数据提供。update 调用可以同时接收相关数据以及要加密/解密的数据,但后续 update 中不会包含相关数据。如果调用程序已在某次调用 update 时提供了要加密/解密的数据,若再次向 update 调用提供相关数据,则返回 <code>ErrorCode::INVALID_TAG</code>。</p>
<p>对于 GCM 加密,此标记会通过 <a href="#finish">finish</a> 附加到密文中。在解密期间,向上一次 update 调用提供的数据的最后 <code>Tag::MAC_LENGTH</code> 个字节就是此标记。由于 <a href="#update">update</a> 的指定调用无法得知自己是否为最后一次调用,因此它会处理除标记长度之外的所有数据,并缓冲调用 <a href="#finish">finish</a> 期间可能用到的标记数据。</p>
@@ -370,11 +368,11 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<p><strong>版本</strong>:1、2、3</p>
-<p>用于完成通过 <a href="#begin">begin</a> 开始且正在进行的操作,负责处理通过 <a href="#update">update</a> 提供的所有尚未处理的数据。</p>
+<p>用于完成通过 <a href="#begin">begin</a> 开始且正在进行的操作,负责处理 <a href="#update">update</a> 所提供的所有尚未处理的数据。</p>
<p>此方法是操作期间调用的最后一个方法,因此会返回所有处理后的数据。</p>
-<p>无论是成功完成还是返回错误,此方法都会结束相应操作,从而使收到的操作句柄无效。如果以后再将该句柄与此方法、<a href="#update">update</a> 或 <a href="#abort">abort</a> 配合使用,都会返回 <code>ErrorCode::INVALID_OPERATION_HANDLE</code>。</p>
+<p>无论是成功完成还是返回错误,此方法都会结束相应操作,从而使收到的操作句柄无效。如果以后再将该句柄与此方法、<a href="#update">update</a> 或 <a href="#abort">abort</a> 配合使用,则都会返回 <code>ErrorCode::INVALID_OPERATION_HANDLE</code>。</p>
<p>签名操作将返回签名作为输出。验证操作将接受 <code>signature</code> 参数中的签名,并且不会返回任何输出。</p>
@@ -387,7 +385,7 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<li>没有 <a href="/security/keystore/tags#auth_timeout">Tag::AUTH_TIMEOUT</a></li>
</ul>
-<p>在这种情况下,密钥需要针对各项操作的授权,并且 update 方法会在 <code>inParams</code> 参数中收到 <a href="/security/keystore/tags#auth_token">Tag::AUTH_TOKEN</a>。HMAC 会验证该令牌有效且包含匹配的安全用户 ID,与密钥的 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a> 匹配,并且包含质询字段中当前操作的操作句柄。如果不符合这些条件,则返回 <code>ErrorCode::KEY_USER_NOT_AUTHENTICATED</code>。</p>
+<p>在这种情况下,对于每一项操作,密钥都会要求提供授权,并且 update 方法会在 <code>inParams</code> 参数中收到 <a href="/security/keystore/tags#auth_token">Tag::AUTH_TOKEN</a>。HMAC 会验证该令牌有效且包含匹配的安全用户 ID,与密钥的 <a href="/security/keystore/tags#mac_length">Tag::USER_AUTH_TYPE</a> 匹配,并且包含质询字段中当前操作的操作句柄。如果不符合这些条件,则返回 <code>ErrorCode::KEY_USER_NOT_AUTHENTICATED</code>。</p>
<p>调用程序会在每次调用 <a href="#update">update</a> 和 <a href="#finish">finish</a> 时提供身份验证令牌。实现只需对该令牌验证一次(如果它倾向于这么做)。</p>
@@ -398,9 +396,8 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<ul>
<li><code>PaddingMode::NONE</code>:对于非填充式签名和加密操作,如果收到的数据比密钥短,那么在签名/加密之前,在数据左侧填充零来补齐。如果数据与密钥一样长度,但数值较大,则返回 <code>ErrorCode::INVALID_ARGUMENT</code>。对于验证和解密操作,数据必须与密钥一样长。否则返回 <code>ErrorCode::INVALID_INPUT_LENGTH.</code></li>
<li><code>PaddingMode::RSA_PSS</code>:对于 PSS 填充式签名操作,PSS 盐不得短于 20 个字节,并且是随机生成的。
- 盐可以更长;参考实现使用的是长度最大的盐。
- 调用 <a href="#begin">begin</a> 时在 <code>inputParams</code> 中使用 <a href="/security/keystore/tags#digest">Tag::DIGEST</a> 指定的摘要会用作 PSS 摘要算法,而 SHA1 会用作 MGF1 摘要算法。</li>
- <li><code>PaddingMode::RSA_OAEP</code>:调用 <a href="#begin">begin</a> 时在 <code>inputParams</code> 中使用 <a href="/security/keystore/tags#digest">Tag::DIGEST</a> 指定的摘要会用作 OAEP 摘要算法,而 SHA1 会用作 MGF1 摘要算法。</li>
+ 盐可以更长;参考实现使用的是长度最大的盐。调用 <a href="/security/keystore/tags#digest">begin</a> 时使用 <code>inputParams</code> 中的 <a href="#begin">Tag::DIGEST</a> 指定的摘要会用作 PSS 摘要算法,而 SHA1 会用作 MGF1 摘要算法。</li>
+ <li><code>PaddingMode::RSA_OAEP</code>:调用 <a href="/security/keystore/tags#digest">begin</a> 时使用 <code>inputParams</code> 中的 <a href="#begin">Tag::DIGEST</a> 指定的摘要会用作 OAEP 摘要算法,而 SHA1 会用作 MGF1 摘要算法。</li>
</ul>
<h4 id="finish_ecdsa_keys">ECDSA 密钥</h4>
@@ -414,14 +411,14 @@ CBC 和 CTR IV 均为 16 个字节。GCM 随机数为 12 个字节。如果密
<ul>
<li><code>BlockMode::ECB</code> 或 <code>BlockMode::CBC</code>:如果填充模式是 <code>PaddingMode::NONE</code>,并且数据长度不是 AES 分块大小的倍数,则返回 <code>ErrorCode::INVALID_INPUT_LENGTH</code>。如果填充模式是 <code>PaddingMode::PKCS7</code>,则按照 PKCS#7 规范填充数据。
请注意,PKCS#7 建议,如果数据长度是分块长度的倍数,则添加一个额外的填充分块。</li>
- <li><code>BlockMode::GCM</code>:在加密期间,处理所有明文之后,会计算此标记(<a href="/security/keystore/tags#mac_length">Tag::MAC_LENGTH</a> 个字节)并将其附加到返回的密文。在解密期间,会将最后 <a href="/security/keystore/tags#mac_length">Tag::MAC_LENGTH</a> 个字节作为标记处理。如果标记验证失败,则返回 <code>ErrorCode::VERIFICATION_FAILED</code>。</li>
+ <li><code>BlockMode::GCM</code>:在加密期间,处理所有明文之后,会计算此标记(<a href="/security/keystore/tags#mac_length">Tag::MAC_LENGTH</a> 个字节)并将其附加到返回的密文中。在解密期间,会将最后 <a href="/security/keystore/tags#mac_length">Tag::MAC_LENGTH</a> 个字节作为标记处理。如果标记验证失败,则返回 <code>ErrorCode::VERIFICATION_FAILED</code>。</li>
</ul>
<h3 id="abort">abort</h3>
<p><strong>版本</strong>:1、2、3</p>
-<p>用于中止正在进行的操作。在调用 abort 之后,如果后续再将收到的操作句柄与 <a href="#update">update</a>、<a href="#finish">finish</a> 或 <a href="#abort">abort</a> 配合使用,则返回 <code>ErrorCode::INVALID_OPERATION_HANDLE</code>。</p>
+<p>用于中止正在进行的操作。调用 abort 之后,如果后续再将收到的操作句柄与 <a href="#update">update</a>、<a href="#finish">finish</a> 或 <a href="#abort">abort</a> 配合使用,则返回 <code>ErrorCode::INVALID_OPERATION_HANDLE</code>。</p>
<h3 id="get_supported_algorithms">get_supported_algorithms</h3>
diff --git a/zh-cn/security/keystore/index.html b/zh-cn/security/keystore/index.html
index 131decc8..6d842805 100644
--- a/zh-cn/security/keystore/index.html
+++ b/zh-cn/security/keystore/index.html
@@ -65,8 +65,7 @@ ID 认证提供了一种受限且可选的机制来严格认证硬件标识符
<p>
<strong>AndroidKeystore</strong> 是供应用访问 Keystore 功能的 Android Framework API 和组件。它是作为 Java Cryptography Architecture API 的扩展程序实现的,包含在应用自己的进程空间中运行的 Java 代码。<code>AndroidKeystore</code> 通过将与 Keystore 行为有关的应用请求转发到 Keystore 守护进程来执行这些请求。
</p>
-<p>
-<strong>Keystore 守护进程</strong>是一个 Android 系统守护进程,可通过 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/security/IKeystoreService.aidl" class="external">Binder API</a> 提供对所有 Keystore 功能的访问权限。它负责存储“密钥 Blob”,后者包含已加密的实际密钥材料,因此 Keystore 可以存储但不能使用或显示这些材料。
+<p><strong>Keystore 守护进程</strong>是 Android 系统中的一个守护进程,该进程通过 <a href="https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/security/IKeystoreService.aidl" class="external">Binder API</a> 提供对所有 Keystore 功能的访问权限。Keystore 守护进程负责存储“密钥 Blob”。密钥 Blob 中包含已加密的实际密钥材料,因此 Keystore 可以存储这些材料,但无法使用或显示这些材料。
</p>
<p>
<strong>keymasterd</strong> 是一个 HIDL 服务器,可提供对 Keymaster TA 的访问权限。(此名称未进行标准化,仅用于说明概念。)
diff --git a/zh-cn/security/keystore/tags.html b/zh-cn/security/keystore/tags.html
index 2a9dcec4..362f1968 100644
--- a/zh-cn/security/keystore/tags.html
+++ b/zh-cn/security/keystore/tags.html
@@ -21,7 +21,7 @@
-->
<p>本页提供了一些对 Keymaster HAL 实现人员很有帮助的详细信息。
-其中介绍了 HAL 中的每个标记、提供相应标记的 Keymaster 版本以及相应标记是否可重复使用。除非标记说明中另有注明,否则以下所有标记都是在密钥生成期间用于指定密钥特性。</p>
+其中介绍了 HAL 中的每个标记、提供相应标记的 Keymaster 版本以及相应标记是否可重复使用。除非标记说明中另有注明,否则以下所有标记都会在密钥生成期间用于指定密钥特性。</p>
<p>对于 Keymaster 4,标记是在 <code>platform/hardware/interfaces/keymaster/<var>keymaster-version</var>/types.hal</code> 中定义的;例如,如果是 Keymaster 3,则在 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/keymaster/3.0/types.hal" class="external">3.0/types.hal</a> 中定义,如果是 Keymaster 4,则在 <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/keymaster/4.0/types.hal" class="external">4.0/types.hal</a> 中定义。对于 Keymaster 2 及更低版本,标记是在 <code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware" class="external">
platform/hardware/libhardware/include/hardware/keymaster_defs.h</a></code> 中定义的。</p>
@@ -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>
@@ -204,9 +204,9 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于指定授权在多长时间内使用相应密钥(以秒数计,从通过身份验证开始算起)。如果 <a href="#user_secure_id">Tag::USER_SECURE_ID</a> 存在而此标记不存在,那么每次使用相应密钥时都需要通过身份验证(要详细了解各项操作的身份验证流程,请参阅 <a href="/security/keystore/implementer-ref#begin">begin</a>)。</p>
+<p>用于指定授权在多长时间内使用相应密钥(以秒数计,从通过身份验证开始算起)。如果 <a href="#user_secure_id">Tag::USER_SECURE_ID</a> 存在而此标记不存在,那么每次使用相应密钥时都需要进行身份验证(要详细了解按操作进行身份验证的流程,请参阅 <a href="/security/keystore/implementer-ref#begin">begin</a>)。</p>
-<p>此标记的值是一个 32 位的整数,用于指定可在多长时间内使用相应密钥(以秒数计,从使用通过 <a href="#user_secure_id">Tag::USER_AUTH_TYPE</a> 指定的身份验证方法对通过 <a href="#mac_length">Tag::USER_SECURE_ID</a> 指定的用户成功进行身份验证后开始算起)。</p>
+<p>此标记的值是一个 32 位的整数,用于指定可在多长时间内使用相应密钥(以秒计,从使用由 <a href="#mac_length">Tag::USER_AUTH_TYPE</a> 指定的身份验证方法对由 <a href="#user_secure_id">Tag::USER_SECURE_ID</a> 指定的用户成功进行身份验证后开始算起)。</p>
<h2 id="auth_token">Tag::AUTH_TOKEN</h2>
@@ -242,7 +242,7 @@ typedef enum {
} keymaster_key_blob_usage_requirements_t;
</pre>
-<p>可以在密钥生成期间指定此标记,以便要求在指定条件下才可以使用生成的密钥。此标记需要和密钥特性一起通过 <a href="/security/keystore/implementer-ref#generate_key">generateKey</a> 和 <a href="/security/keystore/implementer-ref#get_key_characteristics">getKeyCharacteristics</a> 返回。
+<p>可以在密钥生成期间指定此标记,以便要求在指定条件下才可以使用生成的密钥。此标记需要和密钥特性一起从 <a href="/security/keystore/implementer-ref#generate_key">generateKey</a> 和 <a href="/security/keystore/implementer-ref#get_key_characteristics">getKeyCharacteristics</a> 返回。
如果调用程序指定了值为 <code>KeyBlobUsageRequirements::STANDALONE</code> 的 <code>Tag::BLOB_USAGE_REQUIREMENTS</code>,则 Trustlet 会返回一个可在没有文件系统支持的情况下使用的密钥 Blob。这对于具有已加密磁盘的设备至关重要:在使用 Keymaster 密钥解密磁盘之前,此类设备的文件系统可能一直无法使用。</p>
<h2 id="block_mode">Tag::BLOCK_MODE</h2>
@@ -310,7 +310,7 @@ typedef enum {
<p>此标记为布尔值,因此可能的值为 true(如果此标记存在)和 false(如果此标记不存在)。</p>
-<p>此标记仅用于 AES 密钥,并且仅与 CBC、CTR 和 GCM 分块模式有关。如果此标记不存在,则实现应拒绝执行向 <a href="/security/keystore/implementer-ref#begin">begin</a> 提供 <a href="#nonce">Tag::NONCE</a> 的所有操作并显示 <code>ErrorCode::CALLER_NONCE_PROHIBITED</code>。</p>
+<p>此标记仅用于 AES 密钥,并且仅与 CBC、CTR 和 GCM 分块模式有关。如果此标记不存在,则实现应拒绝执行任何向 <a href="/security/keystore/implementer-ref#begin">begin</a> 提供 <a href="#nonce">Tag::NONCE</a> 的操作并显示 <code>ErrorCode::CALLER_NONCE_PROHIBITED</code>。</p>
<h2 id="creation_datetime">Tag::CREATION_DATETIME</h2>
@@ -449,7 +449,7 @@ P_521 = 3,
<p>此标记的值是一个 32 位的整数,表示允许的操作之间间隔的秒数。</p>
-<p>当有操作使用带有此标记的某个密钥时,请在 <a href="/security/keystore/implementer-ref#finish">finish</a> 或 <a href="/security/keystore/implementer-ref#abort">abort</a> 调用期间启动定时器。在定时器表明通过 <code>Tag::MIN_SECONDS_BETWEEN_OPS</code> 指定的间隔时间已过去之前,收到的所有 <a href="/security/keystore/implementer-ref#begin">begin</a> 调用都会失败并显示 <code>ErrorCode::KEY_RATE_LIMIT_EXCEEDED</code>。这意味着 Trustlet 会为带有此标记的密钥维护一份使用次数计数器表格。由于 Keymaster 内存的大小通常有限制,因此该表格可以具有固定的最大大小,并且当该表格被占满时,如果有操作尝试使用带有此标记的密钥,Keymaster 可以使这些操作失败。该表格需要容纳至少 32 个使用中的密钥,而且当密钥最小使用间隔到期时,需要主动重复使用该表格中的位置。如果某项操作因该表格已被占满而失败,则 Keymaster 会返回 <code>ErrorCode::TOO_MANY_OPERATIONS</code>。</p>
+<p>当有操作使用某个带有此标记的密钥时,请在 <a href="/security/keystore/implementer-ref#finish">finish</a> 或 <a href="/security/keystore/implementer-ref#abort">abort</a> 调用期间启动计时器。在计时器表明由 <code>Tag::MIN_SECONDS_BETWEEN_OPS</code> 指定的间隔时间已过去之前收到的所有 <a href="/security/keystore/implementer-ref#begin">begin</a> 调用都会失败并显示 <code>ErrorCode::KEY_RATE_LIMIT_EXCEEDED</code>。这意味着 Trustlet 会为带有此标记的密钥维护一份使用次数计数器表格。由于 Keymaster 内存的大小通常有限制,因此该表格可以具有固定的最大大小,并且当该表格被占满时,如果有操作尝试使用带有此标记的密钥,Keymaster 可以使这些操作失败。该表格需要容纳至少 32 个使用中的密钥,而且当密钥最小使用间隔到期时,需要主动重复使用该表格中的位置。如果某项操作因该表格已被占满而失败,则 Keymaster 会返回 <code>ErrorCode::TOO_MANY_OPERATIONS</code>。</p>
<h2 id="no_auth_required">Tag::NO_AUTH_REQUIRED</h2>
@@ -465,7 +465,7 @@ P_521 = 3,
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于提供或返回进行 AES GCM、CBC 或 CTR 加密/解密时使用的随机数或初始化矢量 (IV)。在加密和解密操作期间,可以将此标记提供给 <a href="/security/keystore/implementer-ref#begin">begin</a>。仅当相应密钥带有 <a href="#caller_nonce">Tag::CALLER_NONCE</a> 时,此标记才会提供给 <a href="/security/keystore/implementer-ref#begin">begin</a>。如果未提供此标记,Keymaster 将随机生成适当的随机数或 IV 并通过 begin 将其返回。</p>
+<p>用于提供或返回进行 AES GCM、CBC 或 CTR 加密/解密时使用的随机数或初始化矢量 (IV)。在加密和解密操作期间,可以将此标记提供给 <a href="/security/keystore/implementer-ref#begin">begin</a>。仅当相应密钥带有 <a href="#caller_nonce">Tag::CALLER_NONCE</a> 时,此标记才会提供给 <a href="/security/keystore/implementer-ref#begin">begin</a>。如果未提供此标记,Keymaster 将会随机生成并通过 begin 返回一个适当的随机数或 IV。</p>
<p>此标记的值是一个 Blob(任意长度的字节数数组)。所允许的长度取决于模式:GCM 随机数的长度为 12 个字节;CBC IV 和 CTR IV 的长度为 16 个字节。</p>
@@ -515,7 +515,7 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于指定相应密钥无法再用于签名和加密目的的过期日期和时间。在此之后,如果尝试使用提供给 <a href="/security/keystore/implementer-ref#begin">begin</a> 的带 <a href="#purpose">KeyPurpose::SIGN</a> 或 <a href="#purpose">KeyPurpose::ENCRYPT</a> 的密钥,操作会失败并显示 <code>ErrorCode::KEY_EXPIRED</code>。</p>
+<p>用于指定相应密钥无法再用于签名和加密目的的过期日期和时间。在此之后,如果尝试使用向 <a href="/security/keystore/implementer-ref#begin">begin</a> 提供 <a href="#purpose">KeyPurpose::SIGN</a> 或 <a href="#purpose">KeyPurpose::ENCRYPT</a> 的密钥,操作都会失败并显示 <code>ErrorCode::KEY_EXPIRED</code>。</p>
<p>此标记的值是一个 64 位的整数,表示距 1970 年 1 月 1 日的毫秒数。</p>
@@ -630,7 +630,7 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于表明相应密钥可抗回滚,也就是说,当通过 <a href="/security/keystore/implementer-ref#delete_key">deleteKey</a> 或 <a href="/security/keystore/implementer-ref#delete_all_keys">deleteAllKeys</a> 删除相应密钥后,可保证相应密钥已被永久删除且无法再使用。如果密钥不带此标记,那么在被删除后,可能能够从备份中恢复。</p>
+<p>用于表明相应密钥可抗回滚,也就是说,当通过 <a href="/security/keystore/implementer-ref#delete_key">deleteKey</a> 或 <a href="/security/keystore/implementer-ref#delete_all_keys">deleteAllKeys</a> 删除相应密钥后,可保证该密钥已被永久删除且无法再使用。如果密钥不带此标记,那么在被删除后,可能能够从备份中恢复。</p>
<p>此标记为布尔值,因此可能的值为 true(如果此标记存在)和 false(如果此标记不存在)。</p>
@@ -663,7 +663,7 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于指定相应密钥无法再用于验证和解密目的的过期日期和时间。在此之后,如果尝试使用提供给 <a href="/security/keystore/implementer-ref#begin">begin</a> 的带 <a href="#purpose">KeyPurpose::VERIFY</a> 或 <a href="#purpose">KeyPurpose::DECRYPT</a> 的密钥,操作会失败并显示 <code>ErrorCode::KEY_EXPIRED</code>。</p>
+<p>用于指定相应密钥无法再用于验证和解密目的的过期日期和时间。在此之后,如果尝试使用向 <a href="/security/keystore/implementer-ref#begin">begin</a> 提供 <a href="#purpose">KeyPurpose::VERIFY</a> 或 <a href="#purpose">KeyPurpose::DECRYPT</a> 的密钥,操作都会失败并显示 <code>ErrorCode::KEY_EXPIRED</code>。</p>
<p>此标记的值是一个 64 位的整数,表示距 1970 年 1 月 1 日的毫秒数。</p>
@@ -672,7 +672,7 @@ typedef enum {
<p><strong>版本</strong>:1、2、3、4</p>
<p><strong>是否可重复使用</strong>?否</p>
-<p>用于指定可以使用哪些类型的用户身份验证程序来授权使用相应密钥。请求 Keymaster 执行所用密钥带有此标记的操作时,要为 Keymaster 提供一个身份验证令牌,并且该令牌的 <code>authenticator_type</code> 字段需与此标记中的值一致。例如,<code>(ntoh(token.authenticator_type) &amp; auth_type_tag_value) != 0</code>,其中 <code>ntoh</code> 是一个函数,用于将按网络字节序保存的整数转换成按主机字节序保存的整数,而 <code>auth_type_tag_value</code> 是此标记的值。</p>
+<p>用于指定可以使用哪些类型的用户身份验证程序来授权使用相应密钥。请求 Keymaster 执行所用密钥带有此标记的操作时,要为 Keymaster 提供一个身份验证令牌,并且该令牌的 <code>authenticator_type</code> 字段需与此标记中的值一致。例如,<code>(ntoh(token.authenticator_type) &amp; auth_type_tag_value) != 0</code>,其中 <code>ntoh</code> 是一个函数,用于将按网络字节序保存的整数转换成按主机字节序保存的整数,<code>auth_type_tag_value</code> 是此标记的值。</p>
<p>此标记的值是以下枚举值的位掩码(32 位整数):</p>
diff --git a/zh-cn/security/overview/acknowledgements.html b/zh-cn/security/overview/acknowledgements.html
index a9694d39..ed42547e 100644
--- a/zh-cn/security/overview/acknowledgements.html
+++ b/zh-cn/security/overview/acknowledgements.html
@@ -20,11 +20,111 @@
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>计划条件的代码)。</p>
-<h2 id="2018">2018 年</h2>
+<h2 id="2019">2019</h2>
+<p>从 2018 年起,安全致谢信息按月列出,2019 年还会继续如此。过去几年的致谢信息是列在一起的。
+</p>
+
+<h4 id="jan-2019">1 月</h4>
+
+<table>
+ <colgroup><col width="85%" />
+ <col width="15%" />
+ </colgroup><tbody><tr>
+ <th>研究人员</th>
+ <th>CVE</th>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有限公司成都安全响应中心的 Chong Wang (<a href="https://www.weibo.com/csddl" class="external">weibo.com/csddl</a>)</td>
+ <td>CVE-2018-9589</td>
+ </tr>
+ <tr>
+ <td>D2.Y.P(属于 NON 团队)</td>
+ <td>CVE-2018-9594</td>
+ </tr>
+ <tr>
+ <td><a href="https://www.linkedin.com/in/dzima" class="external">Dzmitry Lukyanenka</a></td>
+ <td>CVE-2018-9587</td>
+ </tr>
+ <tr>
+ <td><a href="http://c0reteam.org/" class="external">C0RE</a> 团队的 <a href="mailto:arnow117@gmail.com" class="external">Hanxiang Wen</a> 和周明建 (<a href="https://twitter.com/Mingjian_Zhou" class="external">@Mingjian_Zhou</a>)</td>
+ <td>CVE-2018-6241</td>
+ </tr>
+ <tr>
+ <td>Google Project Zero 的 Jann Horn</td>
+ <td>CVE-2018-17182、CVE-2018-18281</td>
+ </tr>
+ <tr>
+ <td>Google 的 Maddie Stone</td>
+ <td>CVE-2018-9586</td>
+ </tr>
+ <tr>
+ <td>Niky1235 (<a href="https://twitter.com/jiych_guru" class="external">@jiych_guru</a>)</td>
+ <td>CVE-2018-9584</td>
+ </tr>
+ <tr>
+ <td>Google 的 Ricky Wai</td>
+ <td>CVE-2018-9582</td>
+ </tr>
+ <tr>
+ <td><a href="https://xlab.tencent.com/en/" class="external">腾讯安全玄武实验室</a>的王永科 (<a href="https://twitter.com/rudykewang" class="external">@Rudykewang</a>) 和张向前 (<a href="https://twitter.com/h3rb0x" class="external">@h3rb0x</a>)</td>
+ <td>CVE-2018-9585、CVE-2018-9588</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有限公司成都安全响应中心的韩子诺 (<a href="http://weibo.com/ele7enxxh" class="external">weibo.com/ele7enxxh</a>)</td>
+ <td>CVE-2018-9583、CVE-2018-9590、CVE-2018-9591、CVE-2018-9592、CVE-2018-9593</td>
+ </tr>
+</tbody></table>
+
+<h2 id="2018">2018</h2>
<p>2018 年的安全致谢信息将按月列出。过去几年的致谢信息是列在一起的。</p>
+<h4 id="dec-2018">12 月</h4>
+
+<table>
+ <tbody><tr>
+ <th>研究人员</th>
+ <th>CVE</th>
+ </tr>
+ <tr>
+ <td>丁保增 (<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>奇虎 360 科技有限公司 Alpha 团队的陈豪和龚广</td>
+ <td>CVE-2018-9557</td>
+ </tr>
+ <tr>
+ <td>美国堪萨斯州立大学 Ghera 项目团队的 Joydeep Mitra 和 Venkatesh-Prasad Ranganath</td>
+ <td>CVE-2018-9548</td>
+ </tr>
+ <tr>
+ <td><a href="http://c0reteam.org/" class="external">C0RE 团队</a>的周明建 (<a href="https://twitter.com/Mingjian_Zhou" class="external">@Mingjian_Zhou</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>阿里巴巴的王勇 (<a href="https://twitter.com/ThomasKing2014" class="external">@ThomasKing2014</a>)</td>
+ <td>CVE-2018-9568</td>
+ </tr>
+ <tr>
+ <td>奇虎 360 科技有限公司成都安全响应中心的韩子诺 (<a href="http://weibo.com/ele7enxxh" class="external">weibo.com/ele7enxxh</a>)</td>
+ <td>CVE-2018-9549、CVE-2018-9552、CVE-2018-9553、CVE-2018-9562</td>
+ </tr>
+</tbody></table>
+
<h4 id="nov-2018">11 月</h4>
<table>
@@ -61,7 +161,7 @@
<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><a href="https://xlab.tencent.com/en/" class="external">腾讯安全玄武实验室</a>的王永科 (<a href="https://twitter.com/rudykewang" class="external">@Rudykewang</a>) 和张向前 (<a href="https://twitter.com/h3rb0x" class="external">@h3rb0x</a>)</td>
<td>CVE-2018-9540、CVE-2018-9541</td>
</tr>
<tr>
@@ -126,7 +226,7 @@
<td>CVE-2018-9499</td>
</tr>
<tr>
- <td><a href="xlab.tencent.com">腾讯安全玄武实验室</a>的王永科 (<a href="https://twitter.com/rudykewang">@Rudykewang</a>) 和 Xiangqian Zhang (<a href="https://twitter.com/h3rb0x">@h3rb0x</a>)</td>
+ <td><a href="xlab.tencent.com">腾讯安全玄武实验室</a>的王永科 (<a href="https://twitter.com/rudykewang">@Rudykewang</a>) 和张向前 (<a href="https://twitter.com/h3rb0x">@h3rb0x</a>)</td>
<td>CVE-2018-9502、CVE-2018-9508、CVE-2018-9509、CVE-2018-9510</td>
</tr>
<tr>
@@ -331,7 +431,7 @@
<td>CVE-2018-9411</td>
</tr>
<tr>
- <td>Tencent Blade 团队</td>
+ <td>Tencent Blade Team</td>
<td>CVE-2018-9421、CVE-2018-9420</td>
</tr>
<tr>
@@ -649,7 +749,7 @@
<td>CVE-2017-13249、CVE-2017-13248、CVE-2017-13264</td>
</tr>
<tr>
- <td>蚂蚁金服巴斯光年安全实验室的<a href=" https://twitter.com/wish_wu">吴潍浠</a> (<a href="http://www.weibo.com/wishlinux">@wish_wu</a>)</td>
+ <td>蚂蚁金服巴斯光年安全实验室的<a href="http://www.weibo.com/wishlinux">吴潍浠</a> (<a href=" https://twitter.com/wish_wu">@wish_wu</a>)</td>
<td>CVE-2017-13259、CVE-2017-13272</td>
</tr>
<tr>
@@ -974,7 +1074,7 @@
<td>CVE-2016-8413、CVE-2016-8477、CVE-2017-0392、CVE-2017-0521、CVE-2017-0531、CVE-2017-0576、CVE-2017-8260</td>
</tr>
<tr>
- <td>腾讯科恩实验室 (<a href="https://twitter.com/keen_lab">@keen_lab</a>) 的 Di Shen (<a href="https://twitter.com/returnsme">@returnsme</a>)</td>
+ <td>腾讯科恩实验室 (<a href="https://twitter.com/keen_lab">@keen_lab</a>) 的沈迪 (<a href="https://twitter.com/returnsme">@returnsme</a>)</td>
<td>CVE-2016-8412、CVE-2016-8427、CVE-2016-8444、CVE-2016-10287、CVE-2017-0334、CVE-2017-0403、CVE-2017-0427、CVE-2017-0456、CVE-2017-0457、CVE-2017-0525、CVE-2017-8265</td>
</tr>
<tr>
@@ -1593,7 +1693,7 @@
<p><a href="http://jaq.alibaba.com">阿里巴巴移动安全团队</a>的 Dawei Peng (<a href="http://weibo.com/u/5622360291">Vinc3nt4H</a>)</p>
-<p>腾讯科恩实验室 (<a href="https://twitter.com/keen_lab">@keen_lab</a>) 的 Di Shen (<a href="https://twitter.com/returnsme">@returnsme</a>)</p>
+<p>腾讯科恩实验室 (<a href="https://twitter.com/keen_lab">@keen_lab</a>) 的沈迪 (<a href="https://twitter.com/returnsme">@returnsme</a>)</p>
<p>Google 的 Dianne Hackborn</p>
@@ -1619,7 +1719,7 @@
<p><a href="http://www.ms509.com">MS509Team</a> 的 En He (<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>)</p>
-<p>Gal Beniamini (<a href="https://twitter.com/@laginimaineb">@laginimaineb</a>、<a href="http://bits-please.blogspot.com/">http://bits-please.blogspot.com</a>)</p>
+<p>Gal Beniamini(<a href="https://twitter.com/@laginimaineb">@laginimaineb</a>、<a href="http://bits-please.blogspot.com/">http://bits-please.blogspot.com</a>)</p>
<p>奇虎 360 科技有限公司 0x031E 实验室的陈耿佳 (<a href="https://twitter.com/@chengjia4574">@chengjia4574</a>)</p>
@@ -1821,7 +1921,7 @@
<p><a href="http://www.trendmicro.com">趋势科技</a><a href="http://blog.trendmicro.com/trendlabs-security-intelligence/category/mobile/">移动威胁响应团队</a>的<a href="http://weibo.com/wishlinux">吴潍浠</a> (<a href="https://twitter.com/wish_wu">@wish_wu</a>)</p>
-<p><a href="http://c0reteam.org">C0RE 团队</a>的 <a href="mailto:wisedd@gmail.com">Xiaodong Wang</a></p>
+<p><a href="http://c0reteam.org">C0RE 团队</a>的<a href="mailto:wisedd@gmail.com"> Xiaodong Wang</a></p>
<p>印第安纳大学布卢明顿分校的 <a href="mailto:xw7@indiana.edu">Xiaofeng Wang</a></p>
@@ -1934,7 +2034,7 @@
<p>奇虎 360 C0RE 团队的 Lei Wu</p>
-<p><a href="http://k33nteam.org/">碁震安全研究团队</a> (<a href="https://twitter.com/k33nteam">@K33nTeam</a>) 的 Marco Grassi (<a href="https://twitter.com/marcograss">@marcograss</a>)</p>
+<p><a href="https://twitter.com/k33nteam">碁震安全研究团队</a> (<a href="http://k33nteam.org/">@K33nTeam</a>) 的 Marco Grassi (<a href="https://twitter.com/marcograss">@marcograss</a>)</p>
<p>EmberMitre Ltd 的 Mark Carter (<a href="https://twitter.com/hanpingchinese">@hanpingchinese</a>)</p>
@@ -2007,8 +2107,7 @@
<p><a href="http://www.search-lab.hu/">Search-Lab Ltd.</a> 的 Imre Rad</p>
-<p><a href="http://thejh.net/">Jann Horn</a>
-<a href="https://android-review.googlesource.com/#/c/98197/">
+<p><a href="http://thejh.net/">Jann Horn</a><a href="https://android-review.googlesource.com/#/c/98197/">
<img style="vertical-align:middle;" src="../images/tiny-robot.png" alt="绿色机器人补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/>
</a></p>
@@ -2030,8 +2129,7 @@
<p>犹他大学的 <a href="http://www.cs.utah.edu/~rsas/">Raimondas Sasnauskas</a></p>
-<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Robert Craig
-<a href="https://android-review.googlesource.com/#/q/owner:%22Robert+Craig+%253Crpcraig%2540tycho.ncsc.mil%253E%22+status:merged">
+<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Robert Craig<a href="https://android-review.googlesource.com/#/q/owner:%22Robert+Craig+%253Crpcraig%2540tycho.ncsc.mil%253E%22+status:merged">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
<p><a href="http://www.samsung.com">Samsung Mobile</a></p>
@@ -2040,15 +2138,13 @@
<p>Sebastian Brenza</p>
-<p>EC SPRIDE 达姆施塔特工业大学<a href="https://blogs.uni-paderborn.de/sse/">安全软件工程团队</a>的 Siegfried Rasthofer <a href="mailto:siegfried.rasthofer@gmail.com">siegfried.rasthofer@gmail.com</a>)</p>
+<p>EC SPRIDE 达姆施塔特工业大学<a href="https://blogs.uni-paderborn.de/sse/">安全软件工程团队</a>的 Siegfried Rasthofer (<a href="mailto:siegfried.rasthofer@gmail.com">siegfried.rasthofer@gmail.com</a>)</p>
<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">
+<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">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
<p>EC SPRIDE 达姆施塔特工业大学<a href="http://sseblog.ec-spride.de/">安全软件工程团队</a>的 Steven Arzt (<a href="mailto:Steven.Arzt@ec-spride.de">Steven.Arzt@ec-spride.de</a>)</p>
@@ -2069,9 +2165,7 @@
<p><a href="https://www.facebook.com">Facebook</a> 的 <a href="http://www.shackleton.io/">Will Shackleton</a></p>
-<p><a href="http://www.linkedin.com/in/billcroberts">
-William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gmail.com</a>)
-<a href="https://android-review.googlesource.com/#/q/owner:bill.c.roberts%2540gmail.com+status:merged">
+<p><a href="http://www.linkedin.com/in/billcroberts">William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gmail.com</a>)<a href="https://android-review.googlesource.com/#/q/owner:bill.c.roberts%2540gmail.com+status:merged">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
<p>印第安纳大学布卢明顿分校的 <a href="http://www.informatics.indiana.edu/xw7/">Xiaofeng Wang</a> (<a href="mailto:xw7@indiana.edu">xw7@indiana.edu</a>)</p>
@@ -2096,8 +2190,7 @@ William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gm
<p><a href="http://appliedcybersecurity.com/">Applied Cybersecurity LLC</a> 的 Jon Sawyer (<a href="mailto:jon@cunninglogic.com">jon@cunninglogic.com</a>)</p>
-<p><a href="http://www.accuvant.com/">Accuvant LABS</a> 的 Joshua J. Drake of (<a href="https://twitter.com/jduck">@jduck</a>)
-<a href="https://android-review.googlesource.com/#/q/change:72228+OR+change:72229">
+<p><a href="http://www.accuvant.com/">Accuvant LABS</a> 的 Joshua J. Drake (<a href="https://twitter.com/jduck">@jduck</a>)<a href="https://android-review.googlesource.com/#/q/change:72228+OR+change:72229">
<img style="vertical-align:middle" src="../images/patchreward.png" alt="补丁程序奖励符号" title="此人符合参加补丁程序奖励计划的条件!"/></a></p>
<p>Kan Yuan</p>
@@ -2116,19 +2209,15 @@ William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gm
<p><a href="https://securityresear.ch/">Roee Hay</a>(<a href="https://twitter.com/roeehay">@roeehay</a>、<a href="mailto:roeehay@gmail.com">roeehay@gmail.com</a>)</p>
-<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Robert Craig
-<a href="https://android-review.googlesource.com/#/q/owner:%22Robert+Craig+%253Crpcraig%2540tycho.ncsc.mil%253E%22+status:merged">
+<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Robert Craig<a href="https://android-review.googlesource.com/#/q/owner:%22Robert+Craig+%253Crpcraig%2540tycho.ncsc.mil%253E%22+status:merged">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
<p>IOActive 的 Ruben Santamarta (<a href="https://twitter.com/reversemode">@reversemode</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">
+<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">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
-<p><a href="http://www.linkedin.com/in/billcroberts">
-William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gmail.com</a>)
-<a href="https://android-review.googlesource.com/#/q/owner:bill.c.roberts%2540gmail.com+status:merged">
+<p><a href="http://www.linkedin.com/in/billcroberts">William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gmail.com</a>)<a href="https://android-review.googlesource.com/#/q/owner:bill.c.roberts%2540gmail.com+status:merged">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
<p>印第安纳大学布卢明顿分校的 Xiaorui Pan (<a href="mailto:eagle200467@gmail.com">eagle200467@gmail.com</a>)</p>
@@ -2147,19 +2236,15 @@ William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gm
<p>柏林工业大学的 Ravishankar Borgaonkari (<a href="https://twitter.com/raviborgaonkar">@raviborgaonkar</a>)</p>
-<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Robert Craig
-<a href="https://android-review.googlesource.com/#/q/owner:%22Robert+Craig+%253Crpcraig%2540tycho.ncsc.mil%253E%22+status:merged">
+<p>美国国家安全局<a href="https://www.nsa.gov/research/ia_research/">可信系统研究团队</a>的 Robert Craig<a href="https://android-review.googlesource.com/#/q/owner:%22Robert+Craig+%253Crpcraig%2540tycho.ncsc.mil%253E%22+status:merged">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
<p><a href="https://securityresear.ch/">Roee Hay</a>(<a href="https://twitter.com/roeehay">@roeehay</a>、<a href="mailto:roeehay@gmail.com">roeehay@gmail.com</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">
+<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">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
-<p><a href="http://www.linkedin.com/in/billcroberts">
-William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gmail.com</a>)
-<a href="https://android-review.googlesource.com/#/q/owner:bill.c.roberts%2540gmail.com+status:merged">
+<p><a href="http://www.linkedin.com/in/billcroberts">William Roberts</a> (<a href="mailto:bill.c.roberts@gmail.com">bill.c.roberts@gmail.com</a>)<a href="https://android-review.googlesource.com/#/q/owner:bill.c.roberts%2540gmail.com+status:merged">
<img style="vertical-align:middle" src="../images/tiny-robot.png" alt="补丁程序符号" title="此人贡献了有助于提高 Android 安全性的代码"/></a></p>
</div>
diff --git a/zh-cn/security/overview/app-security.html b/zh-cn/security/overview/app-security.html
index a0393120..d0d60c07 100644
--- a/zh-cn/security/overview/app-security.html
+++ b/zh-cn/security/overview/app-security.html
@@ -21,26 +21,26 @@
-->
<h2 id="elements-of-applications">应用元素</h2>
-<p>Android 提供了一个适用于移动设备的开放源代码平台和应用环境。核心操作系统基于 Linux 内核。Android 应用通常都是使用 Java 编程语言编写的,并在 Dalvik 虚拟机中运行。不过,也可以使用本机代码编写应用。应用是通过文件扩展名为 .apk 的单个文件安装的。</p>
-<p>Android 应用的主要构造块包括:</p>
+<p>Android 提供了一个适用于移动设备的开放源代码平台和应用环境。核心操作系统基于 Linux 内核。Android 应用通常都是使用 Java 编程语言编写的,并在 Dalvik 虚拟机中运行。不过,也可以使用原生代码编写应用。应用是通过文件扩展名为 .apk 的单个文件安装的。</p>
+<p>Android 应用的主要构造模块包括:</p>
<ul>
<li>
<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 就从不显示界面。通常情况下,应用的入口点是应用的其中一个 Activity。</p>
</li>
<li>
- <p><strong>服务</strong>:<a href="https://developer.android.com/guide/topics/fundamentals/services.html">服务</a>是指在后台运行的一段代码。服务可以在自己的进程中运行,也可以在其他应用的进程中运行。其他组件会“绑定”到某项服务,并通过远程过程调用来调用该服务的方法。比如媒体播放器就是一项服务:即使用户退出媒体选择界面,也可能仍然希望音乐继续播放。即使界面已关闭,服务也可使音乐继续播放。</p>
+ <p><strong>服务</strong>:<a href="https://developer.android.com/guide/topics/fundamentals/services.html">Service</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">BroadcastReceiver</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>
+<h2 id="the-android-permission-model-accessing-protected-apis">Android 权限模型:访问受保护的 API</h2>
<p>Android 上的所有应用均在<a href="/security/app-sandbox">应用沙盒</a>内运行。
默认情况下,Android 应用只能访问有限的系统资源。系统负责管理 Android 应用对资源的访问权限。如果资源使用不当或被恶意使用,可能会给用户体验、网络或设备上的数据带来不利影响。</p>
-<p>这些限制是通过多种不同的形式实现的。有些功能会因 Android 有意未提供针对敏感功能的 API(例如,Android 中没有用于直接操控 SIM 卡的 Android API)而受到限制。在某些情况下,角色分离能够提供一种安全措施,就像按应用隔离存储空间一样。在其他情况下,敏感 API 旨在供可信应用使用,并由一种称为“权限”的安全机制进行保护。</p>
+<p>这些限制是通过多种不同的形式实现的。有些功能会因 Android 有意未提供敏感功能的 API(例如,Android 中没有用于直接操控 SIM 卡的 API)而受到限制。在某些情况下,角色分离能够提供一种安全措施,就像按应用隔离存储空间一样。在其他情况下,敏感 API 旨在供可信应用使用,并由一种称为“权限”的安全机制进行保护。</p>
<p>这些受保护的 API 包括:</p>
<ul>
<li>摄像头功能</li>
@@ -50,19 +50,19 @@
<li>短信/彩信功能</li>
<li>网络/数据连接</li>
</ul>
-<p>这些资源只能通过操作系统进行访问。要使用设备上受保护的 API,应用必须在其清单中定义所需的功能。在准备安装应用时,系统会向用户显示一个对话框,其中会注明应用请求的权限并询问是否继续安装。如果用户选择继续安装,系统会认定用户已授予应用请求的所有权限。用户不能单独授予或拒绝个别权限,而是必须要一起授予或拒绝应用请求的所有权限。</p>
-<p>获得授权后,应用只要安装在设备上,便会一直拥有这些权限。为了避免用户混淆,系统不会再次通知用户向应用授予的权限,而核心操作系统中包含的应用或由原始设备制造商 (OEM) 绑定的应用不会向用户请求权限。应用卸载后,权限也会被移除,因此如果用户之后重新安装卸载的应用,系统会再次显示应用请求的权限。</p>
+<p>这些资源只能通过操作系统进行访问。要使用设备上受保护的 API,应用必须在其清单中定义所需的功能。在准备安装应用时,系统会向用户显示一个对话框,其中会注明应用申请的权限并询问是否继续安装。如果用户选择继续安装,系统会认定用户已授予应用申请的所有权限。用户不能单独授予或拒绝个别权限,而是必须要一起授予或拒绝应用申请的所有权限。</p>
+<p>获得授权后,应用只要安装在设备上,便会一直拥有这些权限。为了避免用户混淆,系统不会再次通知用户向应用授予的权限,而核心操作系统中包含的应用或由原始设备制造商 (OEM) 预装的应用不会向用户申请权限。应用卸载后,权限也会被移除,因此如果用户之后重新安装卸载的应用,系统会再次显示应用申请的权限。</p>
<p>在设备设置中,用户可以查看之前安装的应用的权限。此外,用户还可以根据需要在全局范围内停用某些功能,例如停用 GPS、无线功能或 WLAN。</p>
-<p>如果应用尝试使用未在其清单中声明的受保护功能,权限失败通常会导致系统向应用抛回一个安全异常。受保护 API 权限检查会在最底层被强制执行,以防止出现规避行为。<em></em>图 2 中显示了如果应用在安装时请求获得受保护 API 的访问权限,会导致系统向用户显示的消息示例。</p>
-<p>如需关于系统默认权限的说明,请访问:<a href="https://developer.android.com/reference/android/Manifest.permission.html">https://developer.android.com/reference/android/Manifest.permission.html</a>。应用可以声明自己的权限以供其他应用使用。上述位置中未列出此类权限。</p>
-<p>在定义权限时,protectionLevel 属性用于告诉系统如何让用户知道哪些应用需要或可以获得相应权限。如需关于如何创建和使用应用特有权限的详细信息,请访问:<a href="https://developer.android.com/guide/topics/security/security.html">https://developer.android.com/guide/topics/security/security.html</a>。</p>
-<p>有些设备功能(例如,发送短信广播 Intent 的功能)不会供第三方应用使用,但可供原始设备制造商 (OEM) 预先安装的应用使用。这些应用使用 signatureOrSystem 权限。</p>
+<p>如果应用尝试使用未在其清单中声明的受保护功能,权限失败通常会导致系统向应用抛回一个安全异常。受保护 API 权限检查会在最底层被强制执行,以防止出现规避行为。<em></em>图 2 中显示了如果应用在安装时申请受保护 API 的访问权限,会导致系统向用户显示的消息示例。</p>
+<p>如需关于系统默认权限的说明,请访问:<a href="https://developer.android.com/reference/android/Manifest.permission.html">https://developer.android.com/reference/android/Manifest.permission.html</a>。应用可以声明自己提供的权限,以供其他应用使用。上述页面中未列出此类权限。</p>
+<p>在定义权限时,protectionLevel 属性用于告诉系统如何让用户知道哪些应用需要或可以获得相应权限。如需详细了解如何创建和使用应用特有权限,请访问:<a href="https://developer.android.com/guide/topics/security/security.html">https://developer.android.com/guide/topics/security/security.html</a>。</p>
+<p>有些设备功能(例如,发送短信广播 Intent 的功能)不会供第三方应用使用,但可供原始设备制造商 (OEM) 预装的应用使用。这些应用使用 signatureOrSystem 权限。</p>
<h2 id="how-users-understand-third-party-applications">用户如何了解第三方应用</h2>
-<p>当用户与第三方应用互动时,Android 会尽力让用户清楚这一情况,并让用户知道这些应用具备的功能。在安装任何应用之前,系统都会向用户显示一条明晰的消息,让用户知道要安装的应用请求获得的各项权限。安装完毕后,系统不会再次提示用户确认任何权限。</p>
+<p>当用户与第三方应用互动时,Android 会尽力让用户清楚这一情况,并让用户知道这些应用具备的功能。在安装任何应用之前,系统都会向用户显示一条明晰的消息,让用户知道要安装的应用申请获得的各项权限。安装完毕后,系统不会再次提示用户确认任何权限。</p>
<p>在安装前一刻显示权限的原因有很多。这时用户正在主动查看应用、开发者和功能方面的信息,以确定其是否符合自己的需求和期望。同样非常重要的一点是,他们尚未对要安装的应用做出心理或财务方面的承诺,并且可以轻松地将要安装的应用与其他替代应用进行比较。</p>
-<p>有些其他平台会使用不同的方式通知用户,即在每个会话开始时或用户正在使用应用时请求权限。Android 的愿景是让用户能够随意在应用之间无缝切换。每次都要求用户确认会拖慢用户的操作速度,而且会导致 Android 无法提供良好的用户体验。如果让用户在安装应用时查看权限,用户便可以在不愿意授予权限时选择不予安装。</p>
-<p>此外,许多界面研究表明,过度提示用户会导致用户在看到任何对话框时都选择“确定”。Android 的安全目标之一是向用户有效地传达重要的安全信息,而使用让用户习惯性忽略的对话框则无法做到这一点。如果只向用户提供一次重要信息并且仅在重要时刻提供,用户更有可能慎重思考他们要同意的是什么。</p>
-<p>有些平台会选择完全不显示与应用功能有关的任何信息。这种方式会导致用户无法轻松了解和讨论应用功能。尽管无法使所有用户都是在充分了解相关信息的情况下做出决定,但 Android 权限模式可让众多用户轻松获取与应用相关的信息。例如,如果遇到意外的权限请求,经验更丰富的用户可能会询问有关应用功能的关键问题,并在 <a href="htts://play.google.com">Google Play</a> 等所有用户都可以看到的位置分享他们的疑问。</p>
+<p>有些其他平台会使用不同的方式通知用户,即在每个会话开始时或用户正在使用应用时申请权限。Android 的愿景是让用户能够随意在应用之间无缝切换。每次都要求用户确认会拖慢用户的操作速度,而且会导致 Android 无法提供良好的用户体验。如果让用户在安装应用时查看权限,用户便可以在不愿意授予权限时选择不予安装。</p>
+<p>此外,许多人机界面研究表明,过度提示用户会导致用户在看到任何对话框时都选择“确定”。Android 的安全目标之一是向用户有效地传达重要的安全信息,而使用让用户习惯性忽略的对话框则无法做到这一点。如果只向用户提供一次重要信息并且仅在重要时刻提供,用户更有可能慎重思考他们要同意的是什么。</p>
+<p>有些平台会选择完全不显示与应用功能有关的任何信息。这种方式会导致用户无法轻松了解和讨论应用功能。尽管无法使所有用户都是在充分了解相关信息的情况下做出决定,但 Android 权限模式可让众多用户轻松获取与应用相关的信息。例如,如果遇到意外的权限申请,经验更丰富的用户可能会提出有关应用功能的质问,并在 <a href="htts://play.google.com">Google Play</a> 等所有用户都可以看到的位置分享他们的疑问。</p>
<table>
<tbody><tr>
<td><strong>应用安装时显示权限 - Google 地图</strong></td>
@@ -94,7 +94,7 @@
</ul>
<p>虽然可以使用其他机制(例如,网络套接字或全局可写文件)来实现 IPC,但上面这些都是建议使用的 Android IPC 框架。建议 Android 开发者遵循保护用户数据及避免引入安全漏洞方面的最佳做法。</p>
<h2 id="cost-sensitive-apis">费用敏感 API</h2>
-<p>费用敏感 API 指可能会给用户或网络带来费用的任何功能。Android 平台已将费用敏感 API 放入由操作系统控制的受保护 API 列表中。如果有第三方应用请求使用费用敏感 API,必须要由用户授予明确的权限,它们才能使用这些 API。这些 API 包括:</p>
+<p>费用敏感 API 指可能会给用户或网络带来费用的任何功能。Android 平台已将费用敏感 API 放入由操作系统控制的受保护 API 列表中。如果有第三方应用申请使用这些 API,必须要由用户明确授权,它们才能使用这些 API。这些 API 包括:</p>
<ul>
<li>电话</li>
<li>短信/彩信</li>
@@ -102,7 +102,7 @@
<li>应用内结算</li>
<li>NFC 访问</li>
</ul>
-<p>Android 4.2 进一步增强了对使用短信的控制。如果有应用尝试向使用付费服务的短代码发送短信(可能会产生额外的费用),Android 将会通知用户。用户可以选择是允许还是阻止该应用发送短信。</p>
+<p>Android 4.2 进一步增强了对使用短信的控制。如果有应用尝试向使用付费服务的短码发送短信(可能会产生额外的费用),Android 将会通知用户。用户可以选择是允许还是阻止该应用发送短信。</p>
<h2 id="sim-card-access">SIM 卡访问</h2>
<p>第三方应用无法对 SIM 卡进行底层访问。操作系统负责处理与 SIM 卡之间的所有通信,包括访问 SIM 卡内存中的个人信息(通讯录)。应用也无法访问 AT 命令,因为这些命令完全由无线接口层 (RIL) 进行管理。RIL 不会为这些命令提供任何高层 API。</p>
<h2 id="personal-information">个人信息</h2>
@@ -110,19 +110,19 @@
<img alt="只能通过受保护的 API 访问敏感用户数据" src="../images/permissions_check.png" id="figure2"/>
<p class="img-caption">
<strong>图 2.</strong> 只能通过受保护的 API 访问敏感的用户数据</p>
-<p>可能包含个人信息或个人身份信息(例如,通讯录和日历)的系统内容提供程序在创建时便已拥有明确确定的权限。这种精细的设计可让用户清楚地知道哪些类型的信息可能会提供给相应应用。在安装过程中,第三方应用可能会请求获得访问这些资源的权限。获得授权后,应用便可以进行安装,并且只要安装在设备上,便会一直有权访问请求的数据。</p>
+<p>可能包含个人信息或个人身份信息(例如,通讯录和日历)的系统内容提供程序在创建时便已拥有明确确定的权限。这种精细的设计可让用户清楚地知道哪些类型的信息可能会提供给相应应用。在安装过程中,第三方应用可能会申请这些资源的访问权限。获得授权后,应用便可以进行安装,并且只要安装在设备上,便会一直有权访问最初申请访问的数据。</p>
<p>默认情况下,收集个人信息的所有应用都会仅限特定应用访问这些数据。如果某个应用选择通过 IPC 将数据提供给其他应用,那么这个授予访问权限的应用便可以限制由操作系统强制执行的 IPC 机制的权限。</p>
<h2 id="sensitive-data-input-devices">敏感数据输入设备</h2>
-<p>Android 设备经常会提供可让应用与周围环境进行互动的敏感数据输入设备(例如,摄像头、麦克风或 GPS)。对于要使用这些设备的第三方应用,必须先由用户通过使用 Android 操作系统权限向其明确提供使用权限。安装应用时,安装程序会以提供名称的方式请求用户授予使用相应传感器的权限。</p>
+<p>Android 设备经常会提供可让应用与周围环境进行互动的敏感数据输入设备(例如,摄像头、麦克风或 GPS)。对于要使用这些设备的第三方应用,必须先由用户通过使用 Android 操作系统权限向其明确提供使用权限。安装应用时,安装程序会以提供名称的方式请用户授予使用相应传感器的权限。</p>
<p>如果某个应用想要知道用户所在的位置,则需要获得获取用户位置信息的权限。安装应用时,安装程序会询问用户是否允许该应用获取用户的位置信息。如果用户不希望任何应用获取其位置信息,可以随时运行“设置”应用,转到“位置和安全”,然后取消选中“使用无线网络”和“启用 GPS 卫星”。这将针对用户设备上的所有应用停用需要使用位置信息的服务。</p>
<h2 id="device-metadata">设备元数据</h2>
<p>Android 还会尽力限制访问本身并不属于敏感数据,但可能会间接透露用户特征、用户偏好以及设备使用方式的数据。</p>
-<p>默认情况下,应用无权访问操作系统日志、浏览器历史记录、电话号码以及硬件/网络标识信息。如果应用在安装时请求获得访问此类信息的权限,安装程序会询问用户是否允许该应用访问此类信息。如果用户没有授予该权限,系统将不会安装应用。</p>
-<h2 id="certificate-authorities">证书授权中心</h2>
-<p>Android 中收录了一组已安装的系统证书授权中心,这些授权中心在整个系统范围内均可信。在 Android 7.0 之前的版本中,设备制造商可以修改其设备上搭载的 CA 组。不过,运行 7.0 及更高版本的设备将具有一组统一的系统 CA,并且不再允许设备制造商对其进行修改。
+<p>默认情况下,应用无权访问操作系统日志、浏览器历史记录、电话号码以及硬件/网络标识信息。如果应用在安装时申请此类信息的访问权限,安装程序会询问用户是否允许该应用访问此类信息。如果用户没有授予该权限,系统将不会安装应用。</p>
+<h2 id="certificate-authorities">证书授权机构</h2>
+<p>Android 中收录了一组预载的系统证书授权机构 (CA),这些授权机构在整个系统范围内受到信任。在 Android 7.0 之前的版本中,设备制造商可以修改其设备上搭载的 CA 组。不过,运行 7.0 及更高版本的设备将具有一组统一的系统 CA,并且不再允许设备制造商对其进行修改。
</p>
<p>
-要作为新的公共 CA 添加到 Android 收录的 CA 组中,相应 CA 必须完成 <a href="https://wiki.mozilla.org/CA:How_to_apply">Mozilla CA 收录流程</a>,然后提交一项针对 Android 的功能请求 (<a href="https://code.google.com/p/android/issues/entry">https://code.google.com/p/android/issues/entry</a>),以便请求添加到 <a href="https://android.googlesource.com/">Android 开源项目</a> (AOSP) 收录的 Android CA 组中。
+要作为新的公共 CA 添加到 Android 收录的 CA 组中,相应 CA 必须完成 <a href="https://wiki.mozilla.org/CA:How_to_apply">Mozilla CA 收录流程</a>,然后提交一项针对 Android 的功能请求 (<a href="https://code.google.com/p/android/issues/entry">https://code.google.com/p/android/issues/entry</a>),以便申请将其添加到 <a href="https://android.googlesource.com/">Android 开源项目</a> (AOSP) 收录的 Android CA 组中。
</p>
<p>
此外还有一些设备专用 CA,这些 CA 不应被收录到 AOSP CA 核心组中,例如,安全访问运营商基础架构组件(例如,短信/彩信网关)时可能需要的运营商私有 CA。建议设备制造商将私有 CA 仅收录在需要信任这些 CA 的组件/应用中。如需了解详情,请参阅<a href="https://developer.android.com/training/articles/security-config">网络安全配置</a>。
diff --git a/zh-cn/security/overview/reports.html b/zh-cn/security/overview/reports.html
index 16eb3b73..3685f7ad 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>
diff --git a/zh-cn/security/selinux/compatibility.html b/zh-cn/security/selinux/compatibility.html
index 227d14e0..763fee84 100644
--- a/zh-cn/security/selinux/compatibility.html
+++ b/zh-cn/security/selinux/compatibility.html
@@ -24,7 +24,7 @@
本文介绍 Android 如何处理与平台 OTA 相关的政策兼容性问题,其中新平台 SELinux 设置可能与旧供应商 SELinux 设置有所不同。
</p>
<p>
-基于 Treble 的 SELinux 政策设计考虑到平台和供应商政策之间的二进制文件区别;如果供应商分区生成依赖项(例如 <code>platform</code> &lt; <code>vendor</code> &lt; <code>oem</code>),则该方案会变得更加复杂。<em></em><em></em>
+基于 Treble 的 SELinux 政策设计会考虑平台政策和供应商政策之间的二进制文件区别;如果供应商分区生成依赖项(例如 <code>platform</code> &lt; <code>vendor</code> &lt; <code>oem</code>),则架构会更加复杂。<em></em><em></em>
</p>
<p>
在 Android 8.0 及更高版本中,SELinux 全局政策划分为私有和公共组件。公共组件包含政策和相关基础架构,保证可用于平台版本。
@@ -153,7 +153,7 @@ AOSP SELinux 政策已经为平台与之交互的 <code>vendor</code> 分区部
<h4 id="procfs">Procfs (/proc)</h4>
<p>
-<code>/proc</code> 中的文件可以仅使用 <code>genfscon</code> 标签进行标记。在 Android 7.0 中,<a href="https://android.googlesource.com/platform/system/sepolicy/+/nougat-dr1-release/genfs_contexts" class="external">平台</a>和<a href="https://android.googlesource.com/device/google/marlin/+/nougat-dr1-release/sepolicy/genfs_contexts" class="external">供应商</a>政策都使用 <code>genfscon</code> 来标记 <code>procfs</code> 中的文件。
+<code>/proc</code> 中的文件可以仅使用 <code>genfscon</code> 标签进行标记。在 Android 7.0 中,<a href="https://android.googlesource.com/platform/system/sepolicy/+/nougat-dr1-release/genfs_contexts" class="external">平台</a>政策和<a href="https://android.googlesource.com/device/google/marlin/+/nougat-dr1-release/sepolicy/genfs_contexts" class="external">供应商</a>政策都使用 <code>genfscon</code> 来标记 <code>procfs</code> 中的文件。
</p>
<p>
<strong>建议</strong>:只有平台政策标记 <code>/proc</code>。如果 <code>vendor</code> 进程需要访问 <code>/proc</code> 中当前使用默认标签 (<code>proc</code>) 标记的文件,则供应商政策不应明确标记它们,而应使用常规 <code>proc</code> 类型为供应商域添加规则。这样,平台更新可以适应通过 <code>procfs</code> 公开的未来内核接口,并根据需要进行明确标记。
@@ -177,7 +177,7 @@ AOSP SELinux 政策已经为平台与之交互的 <code>vendor</code> 分区部
<code>/sys</code> 中的文件可以使用 <code>file_contexts</code> 和 <code>genfscon</code> 进行标记。在 Android 7.0 中,平台和供应商都使用 <code>file_contexts</code> 和 <code>genfscon</code> 来标记 <code>sysfs</code> 中的文件。
</p>
<p>
-<strong>建议</strong>:平台可以标记非特定于设备的 <code>sysfs</code> 节点。否则,只有供应商可以标记文件。
+<strong>建议</strong>:平台可以标记不是针对特定设备的 <code>sysfs</code> 节点。否则,只有供应商可以标记文件。
</p>
<h4 id="tmpfs">tmpfs (/dev)</h4>
<p>
@@ -241,10 +241,10 @@ 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 形式存在(可以据此构建平台和供应商政策,以使两个分区之间的接口保持稳定)。平台和供应商政策写入程序都可以像当前那样继续写入政策。
+公共政策中的属性未采用版本编号,而是以 API 形式存在(可以在上面构建平台和供应商政策,以使两个分区之间的接口保持稳定)。平台和供应商政策写入程序都可以像当前那样继续写入政策。
</p>
<p>
以 <code>allow source_foo target_bar:<em>class
@@ -257,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>
@@ -513,15 +513,15 @@ Android 9 包含以下与域相关的属性:
<h3 id="file-attribute-tests">文件属性测试</h3>
<p>
-Android 9 包含<a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tests/sepolicy_tests.py" class="external">编译时测试</a>,可确保特定位置的所有文件都具有适当的属性(例如,<code>sysfs</code> 中的所有文件都具有所需的 <code>sysfs_type</code> 属性)。
+Android 9 包含一些<a href="https://android.googlesource.com/platform/system/sepolicy/+/master/tests/sepolicy_tests.py" class="external">编译时测试</a>,旨在确保特定位置的所有文件都具有适当的属性(例如,<code>sysfs</code> 中的所有文件都具有必需的 <code>sysfs_type</code> 属性)。
</p>
<h2 id="platform-public-policy">平台公共政策</h2>
<p>
-平台公共政策是遵循 Android 8.0 架构模型的核心所在,而不是简单地将 v1 和 v2 中的平台政策结合起来。供应商可以看到平台政策的一部分(包含可用类型和属性以及关于这些类型和属性的规则),这部分随后会包含在供应商政策中(即 <code>vendor_sepolicy.cil</code>)。
+平台公共政策是遵循 Android 8.0 架构模型的核心所在,而不是简单地将 v1 和 v2 中的平台政策结合起来。供应商可以看到一部分平台政策(包含可用类型和属性以及关于这些类型和属性的规则),这部分政策随后会包含在供应商政策中(即 <code>vendor_sepolicy.cil</code>)。
</p>
<p>
-类型和规则会在供应商生成的政策中自动转换为 <code>attribute_v<em>N</em></code>,以便所有平台提供的类型都是版本化属性(但属性不是版本化属性)。平台负责将其提供的具体类型映射到适当的属性,以确保供应商政策继续有效,并将为特定版本提供的规则包括在内。将平台公共政策和供应商政策相结合可满足 Android 8.0 架构模型目标,即允许独立平台和供应商构建。
+类型和规则会在供应商生成的政策中自动转换为 <code>attribute_v<em>N</em></code>,以便所有由平台提供的类型都是带有版本编号的属性(但属性不带版本编号)。平台负责将其提供的具体类型映射到适当的属性,以确保供应商政策继续有效,并将为特定版本提供的规则包括在内。将平台公共政策和供应商政策相结合可满足 Android 8.0 架构模型目标,即允许独立平台和供应商构建。
</p>
<h3 id="mapping-to-attribute-chains">映射到属性链</h3>
diff --git a/zh-cn/security/selinux/concepts.html b/zh-cn/security/selinux/concepts.html
index 40e5143a..aeb50f50 100644
--- a/zh-cn/security/selinux/concepts.html
+++ b/zh-cn/security/selinux/concepts.html
@@ -81,7 +81,7 @@ allow domain null_device:chr_file { open };
</pre>
<p>
-该规则允许具有与 <code>domain</code> 属性关联的任何域的进程对 target_type 标签为 <code>null_device</code> 的 <code>chr_file</code> 类(字符设备文件)的对象执行 <code>open</code> 权限所描述的操作。<em></em><em></em><em></em><em></em>在实践中,该规则可能会扩展为包含其他权限:</p>
+<em></em><em></em><em></em><em></em>该规则允许具有与 <code>domain</code> 属性关联的任何 domain 的进程对 target_type 标签为 <code>null_device</code> 的 class <code>chr_file</code>(字符设备文件)的对象执行 permission <code>open</code> 所描述的操作。在实践中,该规则可能会扩展为包含其他权限:</p>
<pre class="devsite-click-to-copy">
allow domain null_device:chr_file { getattr open read ioctl lock append write};
diff --git a/zh-cn/security/selinux/customize.html b/zh-cn/security/selinux/customize.html
index fa4414f2..a6148f14 100644
--- a/zh-cn/security/selinux/customize.html
+++ b/zh-cn/security/selinux/customize.html
@@ -44,7 +44,7 @@
<li>不得添加后门程序</li>
</ul>
-<p><em></em>要查看具体要求,请参阅 <a href="/compatibility/android-cdd#9_7_kernel_security_features">Android 兼容性定义文档</a>中的“内核安全功能”部分。</p>
+<p>要查看具体要求,请参阅 <a href="/compatibility/android-cdd#9_7_kernel_security_features">Android 兼容性定义文档</a>中的“内核安全功能”部分。<em></em></p>
<p>SELinux 采用白名单方法,这意味着只能授予政策中明确允许的访问权限。由于 Android 的默认 SELinux 政策已经支持 Android 开放源代码项目,因此您无需以任何方式修改 SELinux 设置。如果您要自定义 SELinux 设置,则应格外谨慎,以免破坏现有应用。要开始使用,请按下列步骤操作:</p>
@@ -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> 文件(te 是 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>
@@ -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>device/manufacturer/device-name/sepolicy<strong></strong><var></var><var></var>。包含设备专用政策,以及对政策进行的设备自定义(在 Android 8.0 及更高版本中,该政策对应于供应商映像组件的相关政策)。</li>
+ <li><strong>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</strong>。包含设备专用政策,以及对政策进行的设备自定义(在 Android 8.0 及更高版本中,该政策对应于供应商映像组件的相关政策)。</li>
</ul>
<h3 id="supported-policy-scenarios">支持的政策场景</h3>
<p>
@@ -262,14 +262,14 @@ audit_control setfcap</pre>
<strong>示例</strong>:从支持相关进程的供应商映像向 <code>vndservicemanager</code> 添加新服务。
</p>
<p>
-与搭载之前 Android 版本的设备一样,请在 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中添加专门针对特定设备的自定义配置。用于管控供应商组件如何与其他供应商组件(仅限这些组件)交互的新政策<strong>应涉及仅存在于 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中的类型</strong>。此处编写的政策允许运行供应商的代码,不会在仅针对框架的 OTA 期间更新,并且将存在于具有参考 AOSP 系统映像的设备上的组合政策中。
+与搭载旧版 Android 的设备一样,请在 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中添加针对特定设备的自定义配置。用于管控供应商组件如何与其他供应商组件(仅限这些组件)交互的新政策<strong>应涉及仅存在于 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中的类型</strong>。此处编写的政策允许运行供应商的代码,不会在仅针对框架的 OTA 期间更新,并且将存在于具有参考 AOSP 系统映像的设备上的组合政策中。
</p><h4 id="vendor-image-support-to-work-with-aosp">支持使用 AOSP 的供应商映像</h4>
<p>
<strong>示例</strong>:添加用于实现 AOSP 定义的 HAL 的新进程(通过供应商映像中的 <code>hwservicemanager</code> 注册)。
</p>
<p>
-与搭载之前 Android 版本的设备一样,请在 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中执行专门针对特定设备的自定义配置。作为 <code>system/sepolicy/public/</code> 的一部分导出的政策可供使用,并且包含在供应商政策中。公共政策中的类型和属性可以用在新规则中,指示与供应商特有新位的互动,但要遵守所提供的 <code>neverallow</code> 限制。与 vendor-only 情形一样,此处的新政策不会在仅针对框架的 OTA 期间更新,并且将存在于具有参考 AOSP 系统映像的设备上的组合政策中。
+与搭载旧版 Android 的设备一样,请在 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 中执行针对特定设备的自定义配置。作为 <code>system/sepolicy/public/</code> 的一部分导出的政策可供使用,并且包含在供应商政策中。公共政策中的类型和属性可以用在新规则中,指示与供应商特有新位的互动,但要遵守所提供的 <code>neverallow</code> 限制。与 vendor-only 情形一样,此处的新政策不会在仅针对框架的 OTA 期间更新,并且将存在于具有参考 AOSP 系统映像的设备上的组合政策中。
</p>
<h4 id="system-image-only-extensions">仅含系统映像的扩展</h4>
<p>
@@ -280,7 +280,7 @@ audit_control setfcap</pre>
</p>
<h4 id="vendor-image-extensions-that-serve-extended-aosp-components">提供扩展 AOSP 组件的供应商映像扩展</h4>
<p>
-<strong>示例</strong>:供同样存在于 AOSP 系统映像中的扩展客户端(例如扩展的 system_server)使用且新增的非 AOSP HAL。
+<strong>示例</strong>:供同样存在于 AOSP 系统映像中的扩展客户端(例如扩展的 system_server)使用的新增非 AOSP HAL。
</p>
<p>
系统与供应商之间的交互政策必须纳入供应商分区上的 <code>device/<var>manufacturer</var>/<var>device-name</var>/sepolicy</code> 目录中。这类似于上述添加供应商映像支持以使用参考 AOSP 映像的情景,不同之处在于修改后的 AOSP 组件可能还需要其他政策才能正确使用系统分区的其余部分(只要这些组件仍具有公开 AOSP 类型标签就可以)。
@@ -294,17 +294,17 @@ audit_control setfcap</pre>
<strong>示例</strong>:新的非 AOSP 系统进程必须访问 AOSP 所依赖的 HAL。
</p>
<p>
-这与<a href="#system-image-only-extensions">仅含系统映像的扩展示例</a>类似,不同之处在于新的系统组件可能在 <code>system/vendor</code> 接口进行交互。新系统组件的相关政策必须位于 <code>system/sepolicy/private</code>,只要它是通过 AOSP 已在 <code>system/sepolicy/public</code> 中建立的接口发挥作用就可以接受(即,该目录中包含功能正常运行所需的类型和属性)。虽然可以在设备专用政策中添加政策,但无法在仅针对框架的更新中使用其他 <code>system/sepolicy/private</code> 类型或进行更改(以任何影响政策的方式)。此政策可以在仅针对框架的 OTA 中更改,但在使用 AOSP 系统映像时,此政策将不出现(也不会有新的系统组件)。
+这与<a href="#system-image-only-extensions">仅含系统映像的扩展示例</a>类似,不同之处在于新的系统组件可能会通过 <code>system/vendor</code> 接口进行交互。新系统组件的相关政策必须位于 <code>system/sepolicy/private</code>,只要它是通过 AOSP 已在 <code>system/sepolicy/public</code> 中建立的接口发挥作用就可以接受(即,该目录中包含功能正常运行所需的类型和属性)。虽然可以在设备专用政策中添加政策,但无法在仅针对框架的更新中使用其他 <code>system/sepolicy/private</code> 类型或进行更改(以任何影响政策的方式)。此政策可以在仅针对框架的 OTA 中更改,但在使用 AOSP 系统映像时,此政策将不出现(也不会有新的系统组件)。
</p>
<h4 id="vendor-image-extensions-that-serve-new-system-components">提供新系统组件的供应商映像扩展</h4>
<p>
<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> 政策中的对象添加标签。
+请注意,每次向 <code>system/sepolicy/public</code> 添加内容都会增加复杂程度,因为这会增加必须在映射文件中跟踪的新兼容性保证(会受到其他限制的约束)。只有新类型和相关项允许在 <code>system/sepolicy/public</code> 中添加规则;属性和其他政策声明不受支持。此外,新的公共类型不能用于直接为 <code>/vendor</code> 政策中的对象添加标签。
</p>
<h3 id="unsupported-policy-scenarios">不受支持的政策场景</h3>
<p>
diff --git a/zh-cn/security/selinux/validate.html b/zh-cn/security/selinux/validate.html
index f154945b..f6479868 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>
@@ -61,9 +61,9 @@ tcontext=u:object_r:kmem_device:s0 tclass=chr_file
<ul>
<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><li><em></em>操作方 - <code>scontext</code>(来源上下文)条目表示操作方;在此例中为<code> rmt_storage</code> 守护进程。
+ </li><li><em></em>对象 - <code>tcontext</code>(目标上下文)条目表示对哪个对象执行操作;在此例中为 kmem。
+ </li><li><em></em>结果 - <code>tclass</code>(目标类别)条目表示操作对象的类型;在此例中为 <code>chr_file</code>(字符设备)。
</li></ul>
<h2 id="switching_to_permissive">切换到宽容模式</h2>
diff --git a/zh-cn/security/trusty/download-and-build.html b/zh-cn/security/trusty/download-and-build.html
new file mode 100644
index 00000000..ed3f415c
--- /dev/null
+++ b/zh-cn/security/trusty/download-and-build.html
@@ -0,0 +1,59 @@
+<html devsite><head>
+ <title>下载和编译</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2017 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><a href="https://android-review.googlesource.com/admin/repos/q/filter:trusty" class="external">Trusty 代码库</a>可在 Android 开源项目 (AOSP) 中获取。</p>
+
+<p>点击以下链接可在 AOSP 中找到相应的 Trusty 内核分支:</p>
+
+<ul>
+ <li><a class="external" href="https://android.googlesource.com/kernel/common/+/android-trusty-4.4">4.4</a></li>
+ <li><a class="external" href="https://android.googlesource.com/kernel/common/+/android-trusty-4.9">4.9</a></li>
+ <li><a class="external" href="https://android.googlesource.com/kernel/common/+/android-trusty-4.14">4.14</a></li>
+</ul>
+
+ <h2 id="installing_repo">安装 Repo</h2>
+<p>要下载 Trusty,请先<a href="/setup/build/downloading#installing-repo">下载并安装 Repo</a>。</p>
+
+<p>成功安装 Repo 后,您可以克隆 Android Trusty 代码库。</p>
+<pre class="prettyprint">
+<code class="devsite-terminal">mkdir trusty</code>
+<code class="devsite-terminal">cd trusty</code>
+<code class="devsite-terminal">repo init -u https://android.googlesource.com/trusty/manifest -b master</code>
+<code class="devsite-terminal">repo sync -j32</code>
+</pre>
+
+<h3 id="build">编译</h3>
+<p>请使用以下代码为 Trusty 编译通用 arm64 映像。
+
+</p><pre class="devsite-terminal devsite-click-to-copy">
+./trusty/vendor/google/aosp/scripts/build.py generic-arm64
+</pre>
+
+<p>编译结果位于 <code>build-root/build-generic-arm64/.</code> 下。请查找 lk.bin,这是一个 TEE 映像,其中包含在以下位置编译的所有应用:</p>
+
+<pre class="devsite-terminal devsite-click-to-copy">
+ls build-root/build-generic-arm64/lk.bin
+</pre>
+
+<h3 id="install">安装</h3>
+ <p>您可以将 lk.bin 汇编到固件映像中,然后将其刷入设备。生成的固件映像因所使用的开发板而异。如需了解相关说明,请与开发板制造商联系。</p>
+
+</body></html> \ No newline at end of file
diff --git a/zh-cn/security/trusty/index.html b/zh-cn/security/trusty/index.html
index 2ed7dda1..0634765c 100644
--- a/zh-cn/security/trusty/index.html
+++ b/zh-cn/security/trusty/index.html
@@ -19,77 +19,59 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+<p>Trusty 是一种安全的操作系统 (OS),可为 Android 提供可信执行环境 (TEE)。Trusty 操作系统与 Android 操作系统在同一处理器上运行,但 Trusty 通过硬件和软件与系统的其余组件隔离开来。Trusty 与 Android 彼此并行运行。Trusty 可以访问设备主处理器和内存的全部功能,但完全隔离。隔离可以保护 Trusty 免受用户安装的恶意应用以及可能在 Android 中发现的潜在漏洞的侵害。
+</p>
-<p>Trusty 是一组在移动设备上支持可信执行环境 (TEE) 的软件组件。</p>
+ <p>Trusty 与 ARM 和 Intel 处理器兼容。在 ARM 系统中,Trusty 使用 ARM 的 Trustzone™ 虚拟化主处理器,并创建安全的可信执行环境。使用 Intel 虚拟化技术的 Intel x86 平台也提供类似的支持。
+</p>
-<p>Trusty 包含以下组件:</p>
-
-<ul>
- <li>一个在用于提供 TEE 的处理器上运行的操作系统(Trusty 操作系统)</li><li>适用于 Android 内核 (Linux) 的驱动程序,旨在促进与在 Trusty 操作系统下运行的应用之间的通信</li><li>一组适用于 Android 系统软件的库,旨在使用内核驱动程序促进与在 Trusty 操作系统中执行的可信应用之间的通信</li></ul>
-
-<p><strong>重要提示</strong>:Trusty 和 Trusty API 随时可能发生变化。</p>
-
-<p>如需关于 Trusty API 的信息,请参阅 <a href="/security/trusty/trusty-ref">API 参考</a>。</p>
-
-<h2 id="uses_examples">使用和示例</h2>
-
-<p>所有 TEE 操作系统(不仅仅是 Trusty)均可用于 TEE 实现。</p>
-
-<p>TEE 处理器通常是系统内的单独微处理器,或是主处理器的虚拟化实例。TEE 处理器与系统的其余部分之间使用由硬件支持的内存和 I/O 保护机制隔离开来。</p>
-
-<p>TEE 处理器如今已成为移动设备的基本组成部分。这些设备上的主处理器会被视为“不可信”,它们无法访问制造商用于存储机密数据(例如,设备专用加密密钥)的特定 RAM、硬件寄存器和 Fuse 区域。在主处理器上运行的软件会将所有需要使用机密数据的操作委派给 TEE 处理器。</p>
-
-<p>在 Android 生态系统中,最广为人知的不可信主处理器示例是用于受保护内容的 <a href="/devices/drm.html">DRM 框架</a>。在 TEE 处理器上运行的软件可以访问解密受保护内容所需的设备专用密钥。主处理器只能看到已加密的内容,这样一来,就可以针对基于软件的攻击提供高级别的安全保障和保护。</p>
-
-<p>TEE 还有许多其他用法,例如移动支付、安全银行、全盘加密、多因素身份验证、设备重置保护、抗重放攻击的持久存储、无线显示(“投射”)受保护的内容、安全的 PIN 码和指纹处理,甚至还有恶意软件检测。</p>
-
-<p>Trusty 提供用于开发以下两类应用的 API:</p>
+<img style="display: block;margin-left: auto;margin-right: auto;" src="/security/images/trustyOverview_900w.png"/>
+<p class="img-caption">
+<strong>图 1</strong>. Trusty 概览图
+</p>
+<p>Trusty 包含以下组件:</p>
<ul>
- <li>在 TEE 处理器上运行的可信应用或服务</li><li>在主处理器上运行并使用可信应用提供的服务的普通/不可信应用</li></ul>
+ <li>由 <a href="https://github.com/littlekernel/lk" class="external">Little Kernel</a> 衍生的小型操作系统内核</li>
+ <li>Linux 内核驱动程序,用于在安全环境和 Android 之间传输数据</li>
+ <li>Android <a href="https://android.googlesource.com/trusty/lib/" class="external">用户空间库</a>,用于通过内核驱动程序与可信应用(即安全任务/服务)通信</li>
+</ul>
-<p>在主处理器上运行的软件可以使用 Trusty API 连接到可信应用并与它们交换任意消息,就像通过 IP 提供的网络服务一样。应用负责使用应用级协议确定这些消息的数据格式和语义。消息传递的可靠性由底层 Trusty 基础架构(采用在主处理器上运行的驱动程序的形式)来保证,并且通信完全是异步进行的。</p>
+<p class="note"><strong>注意</strong>:Trusty 和 Trusty API 随时可能发生变化。如需了解 Trusty API,请参阅 <a href="/security/trusty/trusty-ref">API 参考</a>。</p>
-<h2 id="trusted_applications_and_services">可信应用和服务</h2>
+<h2 id="whyTrusty">为什么使用 Trusty?</h2>
-<p>可信应用会以单独进程的形式在 Trusty 操作系统内核下运行。每个进程都会利用 TEE 处理器的 MMU 功能在各自的虚拟内存沙盒中运行。内核会使用由安全计时器驱动且按优先级进行调度的轮询调度程序安排这些进程。在最新版本的 Trusty 中,所有 Trusty 应用均具有相同的优先级。</p>
+<p>其他 TEE 操作系统历来都是由第三方供应商以二进制 Blob 的形式提供,或由内部开发。对系统芯片 (SoC) 供应商和 OEM 来说,开发内部 TEE 系统或从第三方获取 TEE 许可的成本可能很高。资金成本加上不可靠的第三方系统会导致 Android 生态系统不稳定。我们将 Trusty 作为一种可靠且免费的开源替代方案提供给合作伙伴,用于替代其可信执行环境。Trusty 可提供通过封闭源代码系统无法实现的透明性。
+</p>
-<p>可以使用 C/C++(对 C++ 的支持有限)编写适用于 Trusty 操作系统的应用,此类应用可以访问小型的 C 库。<code>main()</code> 函数目前不接受任何参数。系统调用存根是作为该库的一部分在本机汇编代码中提供的,因此可按名称访问系统调用。</p>
+ <p>Android 支持各种 TEE 实现,因此您并非只能使用 Trusty。每一种 TEE 操作系统都会通过一种独特的方式部署可信应用。对试图确保应用能够在所有 Android 设备上正常运行的可信应用开发者来说,这种不统一性可能是一个问题。使用 Trusty 作为标准,可以帮助应用开发者轻松地创建和部署应用,而不用考虑有多个 TEE 系统的不统一性。借助 Trusty TEE,开发者和合作伙伴能够实现透明化、进行协作、检查代码并轻松地进行调试。可信应用的开发者可以集中利用各种常见的工具和 API,以降低引入安全漏洞的风险。这些开发者可以确信自己能够开发应用并让此应用在多个设备上重复使用,而不需要进一步进行开发。
+</p>
-<h3 id="language_threading">语言和线程支持</h3>
+<h2 id="application_services">应用和服务</h2>
-<p>所有 Trusty 应用均为单线程应用;目前不支持在 Trusty 用户空间中使用多线程。</p>
+<p>Trusty 应用定义为二进制文件(可执行文件和资源文件)、二进制清单和加密签名的集合。在运行时,Trusty 应用在 Trusty 内核下以隔离进程的形式在非特权模式下运行。每个进程都会利用 TEE 处理器的内存管理单元功能在各自的虚拟内存沙盒中运行。硬件构建会改变 Trusty 遵循的确切过程,但是,举例来说,内核会使用由安全计时器驱动且按优先级进行调度的循环调度程序安排这些进程。所有 Trusty 应用均具有相同的优先级。
+</p>
-<h3 id="application_structure">应用结构</h3>
-
-<p>Trusty 应用会在加载期间初始化一次,并且在 TEE 处理器重置之前,会一直保留在内存中。Trusty 目前不支持动态加载和取消加载应用。</p>
-
-<p>可信应用是作为<strong>事件驱动型服务器</strong>编写的,会等待其他应用或主处理器上运行的应用发出的命令。此外,可信应用也可以作为其他可信服务器应用的客户端。以下 API 部分中介绍的事件将由 Trusty 内核传送到可信应用。</p>
+<img style="display: block;margin-left: auto;margin-right: auto;" src="/security/images/trustyApps_900w.png"/>
+<p class="img-caption">
+<strong>图 2</strong>. Trusty 应用概览。</p>
<h2 id="third-party_trusty_applications">第三方 Trusty 应用</h2>
-<p>目前,所有 Trusty 应用都是由一个开发方开发的,并封装了 Trusty 内核映像。整个映像会由引导加载程序在启动过程中进行签名并验证。该版本的 Trusty 中不支持第三方应用开发。</p>
-
-<p>尽管 Trusty 操作系统支持开发新应用,但在开发新应用时务必要万分谨慎;每个新应用都会使系统可信计算基 (TCB) 的范围增大。可信应用可以访问设备机密数据,并且可以利用这些数据进行计算或数据转换。</p>
-
-<p>能够开发在 TEE 中运行的新应用为进行创新提供了多种可能性。不过,根据 TEE 的定义,如果这些应用没有附带某种形式的证明其<strong>可信</strong>的凭据,则无法分发。这种凭据通常采用数字签名的形式,即由应用运行时所在产品的用户信任的实体提供的数字签名。</p>
+<p>目前,所有 Trusty 应用都是由一个开发方开发的,并用 Trusty 内核映像进行封装。整个映像都经过签名并在启动过程中由引导加载程序进行验证。目前,Trusty 不支持第三方应用开发。尽管 Trusty 支持开发新应用,但在开发新应用时务必要万分谨慎;每个新应用都会使系统可信计算基 (TCB) 的范围增大。可信应用可以访问设备机密数据,并且可以利用这些数据进行计算或数据转换。能够开发在 TEE 中运行的新应用为创新带来了多种可能性。不过,根据 TEE 的定义,如果这些应用没有附带某种形式的可信凭据,则无法分发。这种凭据通常采用数字签名的形式,即由应用运行时所在产品的用户信任的实体提供的数字签名。
+</p>
-<h2 id="downloading_building">下载和编译 Trusty</h2>
+<h2 id="uses_examples">用途和示例</h2>
-<p>您可以通过以下网址找到 Android 开放源代码项目 (AOSP) 中的 Trusty 实现:<br />
-<a href="https://android-review.googlesource.com/#/admin/projects/?filter=trusty">https://android-review.googlesource.com/#/admin/projects/?filter=trusty</a></p>
+<p>可信执行环境正迅速成为移动设备领域的一项标准。用户的日常生活越来越依赖移动设备,安全需求也在不断增长。具有 TEE 的移动设备比没有 TEE 的设备更安全。</p>
-<p>要查看 AOSP 上的 Trusty 内核分支,请访问:<br />
-<a href="https://android.googlesource.com/kernel/common/+/android-trusty-3.10">https://android.googlesource.com/kernel/common/+/android-trusty-3.10</a><br />
-<a href="https://android.googlesource.com/kernel/common/+/android-trusty-3.18">https://android.googlesource.com/kernel/common/+/android-trusty-3.18</a></p>
+<p>在具有 TEE 实现的设备上,主处理器通常称为“不可信”处理器,这意味着它无法访问制造商用于存储机密数据(例如设备专用加密秘钥)的特定 RAM、硬件寄存器和一次写入 Fuse 区域。在主处理器上运行的软件会将所有需要使用机密数据的操作委派给 TEE 处理器。
+</p>
-<p>要实现 Trusty,请运行以下命令(假设 Android 工具链已位于路径中):</p>
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">repo init -u https://android.googlesource.com/trusty/manifest</code>
-<code class="devsite-terminal">repo sync</code>
-<code class="devsite-terminal">make -j24 generic-arm64</code>
-</pre>
+<p>在 Android 生态系统中,最广为人知的示例是受保护内容的 <a href="/devices/drm.html">DRM 框架</a>。在 TEE 处理器上运行的软件可以访问解密受保护内容所需的设备专用密钥。主处理器只能看到已加密的内容,这样一来,就可以针对软件类攻击提供高级别的安全保障和保护。
+</p>
-<p>您可以从 <code>device/*/*/project/*</code> 中选择其他受支持的编译目标</p>
+<p>TEE 还有许多其他用途,例如移动支付、安全银行、多重身份验证、设备重置保护、抗重放攻击的持久存储、安全的 PIN 码和指纹处理,甚至包括恶意软件检测。
+</p>
</body></html> \ No newline at end of file
diff --git a/zh-cn/security/trusty/trusty-ref.html b/zh-cn/security/trusty/trusty-ref.html
index 4d0277cb..a22673e5 100644
--- a/zh-cn/security/trusty/trusty-ref.html
+++ b/zh-cn/security/trusty/trusty-ref.html
@@ -20,17 +20,27 @@
limitations under the License.
-->
-<p><a href="index.html">Trusty</a> API 描述了 Trusty 进程间通信 (IPC) 系统,包括与非安全域的通信。本页中提供了相关术语的定义以及关于 API 调用的参考内容。</p>
+<p>Trusty 提供用于开发以下两类应用/服务的 API:</p>
+ <ul>
+ <li>在 TEE 处理器上运行的可信应用或服务</li>
+ <li>在主处理器上运行并使用可信应用提供的服务的普通/不可信应用</li>
+ </ul>
+<p><a href="/security/index.html">Trusty</a> API 描述了 Trusty 进程间通信 (IPC) 系统,包括与非安全域的通信。在主处理器上运行的软件可以使用 Trusty API 连接到可信应用/服务并与它们交换任意消息,就像通过 IP 提供的网络服务一样。应用负责使用应用级协议确定这些消息的数据格式和语义。消息传递的可靠性由底层 Trusty 基础架构(采用在主处理器上运行的驱动程序的形式)来保证,并且通信完全是异步进行的。
+</p>
<h2 id="ports_and_channels">端口和通道</h2>
-<p>Trusty 应用使用端口以具名路径的形式显示客户端连接到的服务端点。这可以提供一个非常简单且采用字符串形式的服务 ID 供客户端使用。端口采用反向 DNS 式命名惯例,例如 <code>com.google.servicename</code>。</p>
+<p>Trusty 应用使用端口以具名路径的形式显示客户端连接到的服务端点。这可以提供一个非常简单且采用字符串形式的服务 ID 供客户端使用。端口采用反向 DNS 式命名惯例,例如 <code>com.google.servicename</code>。
+</p>
-<p>当客户端连接到端口时,会收到一个用于与相应服务交互的通道。相应服务必须接受外来连接;并且在接受后,也会收到一个通道。实质上,端口会被用来查找服务,以便通过一对已连接的通道(即端口上的连接实例)进行通信。当客户端连接到端口时,客户端和服务器之间会建立一个对称的双向连接。借助这种全双工路径,客户端和服务器可以交换任意消息,直到任一方决定断开连接为止。</p>
+<p>当客户端连接到端口时,会收到一个用于与相应服务交互的通道。相应服务必须接受外来连接;并且在接受后,也会收到一个通道。实质上,端口会被用来查找服务,以便通过一对已连接的通道(即端口上的连接实例)进行通信。当客户端连接到端口时,客户端和服务器之间会建立一个对称的双向连接。借助这种全双工路径,客户端和服务器可以交换任意消息,直到任一方决定断开连接为止。
+</p>
-<p>只有安全端可信应用或 Trusty 内核模块可以创建端口。在非安全端(普通域)运行的应用只能连接到安全端发布的服务。</p>
+<p>只有安全端可信应用或 Trusty 内核模块可以创建端口。在非安全端(普通域)运行的应用只能连接到安全端发布的服务。
+</p>
-<p>可信应用可以同时是客户端和服务器,具体取决于相关要求。发布服务的可信应用(作为服务器)可能需要连接到其他服务(作为客户端)。</p>
+<p>可信应用可以同时是客户端和服务器,具体取决于相关要求。发布服务的可信应用(作为服务器)可能需要连接到其他服务(作为客户端)。
+</p>
<h2 id="handle_api">Handle API</h2>
@@ -58,7 +68,7 @@ long set_cookie(uint32_t handle, void *cookie)
<p>处理在句柄创建一段时间后发生的事件时,此调用非常有用。事件处理机制会将相应句柄及其 Cookie 返回给事件处理程序。</p>
-<p>通过使用 <code>wait()</code> 或 <code>wait_any()</code> 调用,可以等待句柄上发生事件。</p>
+<p>通过使用 <code>wait()</code> 调用,可以等待句柄上发生事件。</p>
<h4 id="wait">wait()</h4>
@@ -76,21 +86,7 @@ long wait(uint32_t handle_id, uevent_t *event, unsigned long timeout_msecs)
<p>[返回值]:如果在指定的超时间隔内发生了有效事件,则为 <code>NO_ERROR</code>;如果指定的超时时间已过,但未发生任何事件,则为 <code>ERR_TIMED_OUT</code>;如果是其他错误,则为 <code>&lt; 0</code></p>
-<h4 id="wait_any">wait_any()</h4>
-
-<p>用于在指定时间段内等待应用句柄表格中的任意句柄上发生任意事件。</p>
-
-<pre class="prettyprint">
-long wait_any(uevent_t *event, unsigned long timeout_msecs);
-</pre>
-
-<p>[输出] <code>event</code>:一个指针,指向表示相应句柄上所发生事件的结构</p>
-
-<p>[输入] <code>timeout_msecs</code>:超时值(以毫秒计)。-1 表示无限制超时</p>
-
-<p>[返回值]:如果在指定的超时间隔内发生了有效事件,则为 <code>NO_ERROR</code>;如果指定的超时时间已过,但未发生任何事件,则为 <code>ERR_TIMED_OUT</code>;如果是其他错误,则为 <code>&lt; 0</code></p>
-
-<p>如果操作成功了 (<code>retval == NO_ERROR</code>),<code>wait()</code> 和 <code>wait_any()</code> 调用会在指定的 <code>uevent_t</code> 结构内填入与发生的事件相关的信息。</p>
+<p>如果操作成功了 (<code>retval == NO_ERROR</code>),<code>wait()</code> 调用会在指定的 <code>uevent_t</code> 结构内填入与发生的事件相关的信息。</p>
<pre class="prettyprint">
typedef struct uevent {
@@ -177,7 +173,7 @@ uint32_t flags)
<p>[返回值]:如果是非负数,则为所创建端口的句柄;如果是负数,则为具体错误</p>
-<p>然后,服务器会使用 <code>wait()</code> 或 <code>wait_any()</code> 调用轮询端口句柄列表,以查看是否有外来连接。收到连接请求(由 <code>uevent_t</code> 结构的 <code>event</code> 字段中设置的 <code>IPC_HANDLE_POLL_READY</code> 位来指明)时,服务器应调用 <code>accept()</code> 来完成连接建立过程,并创建一个通道(由另一个句柄表示),然后该通道即可被轮询,以查看是否有外来消息。</p>
+<p>然后,服务器会使用 <code>wait()</code> 调用轮询端口句柄列表,以查看是否有外来连接。收到连接请求(由 <code>uevent_t</code> 结构的 <code>event</code> 字段中设置的 <code>IPC_HANDLE_POLL_READY</code> 位来指明)时,服务器应调用 <code>accept()</code> 来完成连接建立过程,并创建一个通道(由另一个句柄表示),然后该通道即可被轮询,以查看是否有外来消息。</p>
<h4 id="accept">accept()</h4>
@@ -226,7 +222,7 @@ IPC_CONNECT_ASYNC = 0x2,
<p><code>IPC_CONNECT_WAIT_FOR_PORT</code> - 如果指定的端口在连接操作执行时没有立即存在,则强制 <code>connect()</code> 调用开始等待,而不是立即使连接失败。</p>
-<p><code>IPC_CONNECT_ASYNC</code> - 如果设置了此项,则会发起异步连接。在开始正常操作之前,应用必须先针对连接完成事件(由 <code>uevent_t</code> 结构的 event 字段中设置的 <code>IPC_HANDLE_POLL_READY</code> 位来指明)轮询是否有返回的句柄(通过调用 <code>wait()</code> 或 <code>wait_any()</code>)。</p>
+<p><code>IPC_CONNECT_ASYNC</code> - 如果设置了此项,则会发起异步连接。在开始正常操作之前,应用必须先针对连接完成事件(由 <code>uevent_t</code> 结构的 event 字段中设置的 <code>IPC_HANDLE_POLL_READY</code> 位来指明)轮询是否有返回的句柄(通过调用 <code>wait()</code>)。</p>
<h2 id="messaging_api">Messaging API</h2>
@@ -274,7 +270,7 @@ long send_msg(uint32_t handle, ipc_msg_t *msg);
<p>[返回值]:如果操作成功了,则为发送的字节总数;否则为表示错误的负数</p>
-<p>如果客户端(或服务器)尝试通过相应通道发送消息,但目标对端消息队列中没有空间,相应通道可能会进入所发消息被屏蔽的状态(对于简单的同步请求/回复协议,这种事情应该绝对不会发生,但在更复杂的情况下,则可能会发生)。如果返回 <code>ERR_NOT_ENOUGH_BUFFER</code> 错误代码,则表示相应通道进入了这种状态。在这种情况下,调用程序必须等待,直到对端通过以下方式释放其接收队列中的部分空间为止:检索处理情况并停用一些消息(由 <code>wait()</code> 或 <code>wait_any()</code> 调用返回的 <code>uevent_t</code> 结构的 <code>event</code> 字段中设置的 <code>IPC_HANDLE_POLL_SEND_UNBLOCKED</code> 位来指明)。</p>
+<p>如果客户端(或服务器)尝试通过相应通道发送消息,但目标对端消息队列中没有空间,相应通道可能会进入所发消息被屏蔽的状态(对于简单的同步请求/回复协议,这种事情应该绝对不会发生,但在更复杂的情况下,则可能会发生)。如果返回 <code>ERR_NOT_ENOUGH_BUFFER</code> 错误代码,则表示相应通道进入了这种状态。在这种情况下,调用程序必须等待,直到对端通过以下方式释放其接收队列中的部分空间为止:检索处理情况并停用一些消息(由 <code>wait()</code> 调用返回的 <code>uevent_t</code> 结构的 <code>event</code> 字段中设置的 <code>IPC_HANDLE_POLL_SEND_UNBLOCKED</code> 位来指明)。</p>
<h4 id="get_msg">get_msg()</h4>
@@ -441,61 +437,57 @@ long nanosleep(uint32_t clock_id, uint32_t flags, uint64_t sleep_time)
<p>以下示例应用展示了上述 API 的用法。该示例会创建一项“回传”服务,该服务可处理多个外来连接,并会将从位于安全端或非安全端的客户端收到的所有消息回传给调用程序。</p>
<pre class="prettyprint">
-#include &lt;assert.h&gt;
-#include &lt;err.h&gt;
-#include &lt;stddef.h&gt;
-#include &lt;stdio.h&gt;
-#include &lt;stdlib.h&gt;
-#include &lt;string.h&gt;
-#include &lt;trusty_std.h&gt;
-
-#include &lt;app/echo/uuids.h&gt;
-
+#include &lt; stddef.h &gt;
+#include &lt; stdio.h &gt;
+#include &lt; stdlib.h &gt;
+#include &lt; string.h &gt;
+#include &lt; trusty_std.h &gt;
+#include &lt; app / echo / uuids.h &gt;
#define LOG_TAG "echo_srv"
+#define TLOGE(fmt, ...)\
+fprintf(stderr, "%s: %d: "
+ fmt, LOG_TAG, __LINE__, ##__VA_ARGS__)
-#define TLOGE(fmt, ...) \
- fprintf(stderr, "%s: %d: " fmt, LOG_TAG, __LINE__, ## __VA_ARGS__)
-
-#define MAX_ECHO_MSG_SIZE 64
+# define MAX_ECHO_MSG_SIZE 64
-static const char *srv_name = "com.android.echo.srv.echo";
+static
+const char * srv_name = "com.android.echo.srv.echo";
static uint8_t msg_buf[MAX_ECHO_MSG_SIZE];
/*
* Message handler
*/
-static int handle_msg(handle_t chan)
-{
+static int handle_msg(handle_t chan) {
int rc;
iovec_t iov;
ipc_msg_t msg;
ipc_msg_info_t msg_inf;
iov.base = msg_buf;
- iov.len = sizeof(msg_buf);
+ iov.len = sizeof(msg_buf);
msg.num_iov = 1;
- msg.iov = &amp;iov;
+ msg.iov = &amp; iov;
msg.num_handles = 0;
- msg.handles = NULL;
+ msg.handles = NULL;
/* get message info */
- rc = get_msg(chan, &amp;msg_inf);
+ rc = get_msg(chan, &amp; msg_inf);
if (rc == ERR_NO_MSG)
return NO_ERROR; /* no new messages */
if (rc != NO_ERROR) {
TLOGE("failed (%d) to get_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
/* read msg content */
- rc = read_msg(chan, msg_inf.id, 0, &amp;msg);
+ rc = read_msg(chan, msg_inf.id, 0, &amp; msg);
if (rc &lt; 0) {
TLOGE("failed (%d) to read_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
@@ -503,18 +495,18 @@ static int handle_msg(handle_t chan)
iov.len = (size_t) rc;
/* send message back to the caller */
- rc = send_msg(chan, &amp;msg);
+ rc = send_msg(chan, &amp; msg);
if (rc &lt; 0) {
TLOGE("failed (%d) to send_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
/* retire message */
rc = put_msg(chan, msg_inf.id);
- if ( rc != NO_ERROR) {
+ if (rc != NO_ERROR) {
TLOGE("failed (%d) to put_msg for chan (%d)\n",
- rc, chan);
+ rc, chan);
return rc;
}
@@ -524,23 +516,22 @@ static int handle_msg(handle_t chan)
/*
* Channel event handler
*/
-static void handle_channel_event(const uevent_t *ev)
-{
+static void handle_channel_event(const uevent_t * ev) {
int rc;
- if (ev-&gt;event &amp; IPC_HANDLE_POLL_MSG) {
- rc = handle_msg(ev-&gt;handle);
+ if (ev - &gt; event &amp; IPC_HANDLE_POLL_MSG) {
+ rc = handle_msg(ev - &gt; handle);
if (rc != NO_ERROR) {
/* report an error and close channel */
TLOGE("failed (%d) to handle event on channel %d\n",
- rc, ev-&gt;handle);
- close(ev-&gt;handle);
+ rc, ev - &gt; handle);
+ close(ev - &gt; handle);
}
return;
}
- if (ev-&gt;event &amp; IPC_HANDLE_POLL_HUP) {
+ if (ev - &gt; event &amp; IPC_HANDLE_POLL_HUP) {
/* closed by peer. */
- close(ev-&gt;handle);
+ close(ev - &gt; handle);
return;
}
}
@@ -548,107 +539,83 @@ static void handle_channel_event(const uevent_t *ev)
/*
* Port event handler
*/
-static void handle_port_event(const uevent_t *ev)
-{
- uuid_t peer_uuid;
-
- if ((ev-&gt;event &amp; IPC_HANDLE_POLL_ERROR) ||
- (ev-&gt;event &amp; IPC_HANDLE_POLL_HUP) ||
- (ev-&gt;event &amp; IPC_HANDLE_POLL_MSG) ||
- (ev-&gt;event &amp; IPC_HANDLE_POLL_SEND_UNBLOCKED)) {
- /* should never happen with port handles */
- TLOGE("error event (0x%x) for port (%d)\n",
- ev-&gt;event, ev-&gt;handle);
- abort();
- }
- if (ev-&gt;event &amp; IPC_HANDLE_POLL_READY) {
- /* incoming connection: accept it */
- int rc = accept(ev-&gt;handle, &amp;peer_uuid);
- if (rc &lt; 0) {
- TLOGE("failed (%d) to accept on port %d\n",
- rc, ev-&gt;handle);
- return;
+static void handle_port_event(const uevent_t * ev) {
+ uuid_t peer_uuid;
+
+ if ((ev - &gt; event &amp; IPC_HANDLE_POLL_ERROR) ||
+ (ev - &gt; event &amp; IPC_HANDLE_POLL_HUP) ||
+ (ev - &gt; event &amp; IPC_HANDLE_POLL_MSG) ||
+ (ev - &gt; event &amp; IPC_HANDLE_POLL_SEND_UNBLOCKED)) {
+ /* should never happen with port handles */
+ TLOGE("error event (0x%x) for port (%d)\n",
+ ev - &gt; event, ev - &gt; handle);
+ abort();
}
- }
-}
-
-/*
- * Main application entry point
- */
-int main(void)
-{
- int rc;
- handle_t port;
-
- /* Initialize service */
- rc = port_create(srv_name, 1, MAX_ECHO_MSG_SIZE,
- IPC_PORT_ALLOW_NS_CONNECT |
- IPC_PORT_ALLOW_TA_CONNECT );
- if (rc &lt; 0) {
- TLOGE("Failed (%d) to create port %s\n",
- rc, srv_name);
- abort();
- }
- port = (handle_t)rc;
-
- /* enter main event loop */
- while (true) {
- uevent_t ev;
-
- ev.handle = INVALID_IPC_HANDLE;
- ev.event = 0;
- ev.cookie = NULL;
-
- /* wait forever */
- rc = wait_any(&amp;ev, -1);
- if (rc == NO_ERROR) {
- /* got an event */
- if (ev.handle == port) {
- handle_port_event(&amp;ev);
- } else {
- handle_channel_event(&amp;ev);
+ if (ev - &gt; event &amp; IPC_HANDLE_POLL_READY) {
+ /* incoming connection: accept it */
+ int rc = accept(ev - &gt; handle, &amp;peer_uuid);
+ if (ev - &gt; event &amp; IPC_HANDLE_POLL_READY) {
+ /* incoming connection: accept it */
+ int rc = accept(ev - &gt; handle, &amp;peer_uuid);
+ if (rc &lt; 0) {
+ TLOGE("failed (%d) to accept on port %d\n",
+ rc, ev - &gt; handle);
+ return;
+ }
+ handle_t chan = rc;
+ while (true){
+ struct uevent cev;
+
+ rc = wait(handle, &amp;cev, -1);
+ if (rc &lt; 0) {
+ TLOGE("wait returned (%d)\n", rc);
+ abort();
+ }
+ handle_channel_event(&amp;cev);
+ if (cev.event &amp; IPC_HANDLE_POLL_HUP) {
+ return;
+ }
}
- } else {
- TLOGE("wait_any returned (%d)\n", rc);
- abort();
}
- }
- return 0;
-}
-</pre>
-
-<h2 id="example_of_a_trusted_application_client">可信应用客户端示例</h2>
-
-<p>以下代码段展示了如何使用 Trusty Messaging API 来实现“回传”服务(请参见上述代码)的客户端。<code>sync_connect()</code> 方法显示了如何在异步 <code>connect()</code> 调用之上实现设有超时的同步连接。</p>
-<pre class="prettyprint">
-/*
- * Local wrapper on top of an async connect that provides a
- * synchronous connect with timeout.
- */
-int sync_connect(const char *path, uint timeout)
-{
- int rc;
- uevent_t evt;
- handle_t chan;
-
- rc = connect(path, IPC_CONNECT_ASYNC | IPC_CONNECT_WAIT_FOR_PORT);
- if (rc &gt;= 0) {
- chan = (handle_t) rc;
- rc = wait(chan, &amp;evt, timeout);
- if (rc == 0) {
- rc = ERR_BAD_STATE;
- if (evt.handle == chan) {
- if (evt.event &amp; IPC_HANDLE_POLL_READY)
- return chan;
- if (evt.event &amp; IPC_HANDLE_POLL_HUP)
- rc = ERR_CHANNEL_CLOSED;
+ /*
+ * Main application entry point
+ */
+ int main(void) {
+ int rc;
+ handle_t port;
+
+ /* Initialize service */
+ rc = port_create(srv_name, 1, MAX_ECHO_MSG_SIZE,
+ IPC_PORT_ALLOW_NS_CONNECT |
+ IPC_PORT_ALLOW_TA_CONNECT);
+ if (rc &lt; 0) {
+ TLOGE("Failed (%d) to create port %s\n",
+ rc, srv_name);
+ abort();
+ }
+ port = (handle_t) rc;
+
+ /* enter main event loop */
+ while (true) {
+ uevent_t ev;
+
+ ev.handle = INVALID_IPC_HANDLE;
+ ev.event = 0;
+ ev.cookie = NULL;
+
+ /* wait forever */
+ rc = wait(port, &amp;ev, -1)
+ if (rc == NO_ERROR) {
+ /* got an event */
+ handle_port_event(&amp;ev);
+ } else {
+ TLOGE("wait returned (%d)\n", rc);
+ abort();
+ }
}
+ return 0;
}
- close(chan);
- }
- return rc;
-}
</pre>
<p><code>run_end_to_end_msg_test()</code> 方法可向“回传”服务异步发送 10000 条消息并处理回复。</p>
diff --git a/zh-cn/setup/build/building-kernels.html b/zh-cn/setup/build/building-kernels.html
index ba49ca14..c21736a0 100644
--- a/zh-cn/setup/build/building-kernels.html
+++ b/zh-cn/setup/build/building-kernels.html
@@ -27,7 +27,7 @@
<p>本部分中的所有示例均使用 <a href="devices.html#hikey-boards">hikey</a> 内核。</p>
<h2 id="figuring-out-which-kernel-to-build">选择内核</h2>
-<p>此表列出了内核源代码和二进制文件的名称及所在位置:<table>
+<p>此表列出了内核源代码和二进制文件的名称及所在位置:</p><table>
<tbody><tr>
<th>设备</th>
<th>二进制文件所在的位置</th>
@@ -198,7 +198,7 @@
</tr>
</tbody></table>
-</p><p>确定要使用的设备项目之后,请查看内核二进制文件的 Git 日志。设备项目采用 <code>device/<var>VENDOR</var>/<var>NAME</var></code> 形式。</p>
+<p>确定要使用的设备项目之后,请查看内核二进制文件的 Git 日志。设备项目采用 <code>device/<var>VENDOR</var>/<var>NAME</var></code> 形式。</p>
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">git clone https://android.googlesource.com/kernel/hikey-linaro</code>
diff --git a/zh-cn/setup/build/building.html b/zh-cn/setup/build/building.html
index 5da6d10e..274f8afd 100644
--- a/zh-cn/setup/build/building.html
+++ b/zh-cn/setup/build/building.html
@@ -20,7 +20,7 @@
limitations under the License.
-->
-<p>以下关于编译 Android 源代码树的说明适用于所有分支,<code>master</code> 除外。编译命令的基本顺序如下:</p>
+<p>以下关于编译 Android 源代码树的说明适用于所有分支,包括 <code>master</code>。编译命令的基本顺序如下:</p>
<h2 id="obtaining-proprietary-binaries">下载专有二进制文件</h2>
@@ -30,7 +30,7 @@
<h3 id="downloading-proprietary-binaries">下载专有二进制文件</h3>
-<p>对于运行带标记的 AOSP 版本分支的受支持设备,您可以从 <a href="https://developers.google.com/android/drivers" class="external">Google 的驱动程序</a>下载相关的官方二进制文件。有了这些二进制文件,您将有权使用采用非开源代码的其他硬件功能。在针对某种设备编译 <code>master</code> 分支时,请使用位于 Android 源代码树的 <code>vendor/</code> 层次结构中的二进制文件。</p>
+<p>对于运行带标记的 AOSP 版本分支的受支持设备,您可以从 <a href="https://developers.google.com/android/drivers" class="external">Google 的驱动程序</a>下载相关的官方二进制文件。有了这些二进制文件,您将有权使用采用非开源代码的其他硬件功能。要编译 AOSP 的 master 分支,请使用<a href="https://developers.google.com/android/blobs-preview" class="external">二进制文件预览</a>。在针对某种设备编译 master 分支时,请使用适用于<a href="/setup/start/build-numbers.html">最新编号版本</a>的二进制文件或具有最新日期的二进制文件。</p>
<h3 id="extracting-proprietary-binaries">解压专有二进制文件</h3>
diff --git a/zh-cn/setup/build/dashboard.html b/zh-cn/setup/build/dashboard.html
new file mode 100644
index 00000000..86de96cd
--- /dev/null
+++ b/zh-cn/setup/build/dashboard.html
@@ -0,0 +1,43 @@
+<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>通过<a href="https://en.wikipedia.org/wiki/Continuous_integration" class="external">持续集成</a>信息中心 (<a href="https://ci.android.com/" class="external">ci.android.com</a>),您可以清楚了解 Android 开源项目 (AOSP) 所使用的系统。</p>
+
+<p>AOSP 的贡献者可以通过此信息中心来监控其提交的内容何时会集成到源代码树中。状态颜色可以显示集成的更改是否已在我们的所有编译类型中编译成功。为方便起见,每个编译版本中的编译软件工件都可供下载。</p>
+
+<p>每一行表示在 Android 的自动编译器中完成的一个编译。每一列表示一个编译目标/编译类型组合。网格中会显示正在进行的编译和已完成的编译。系统会使用黄色背景来标识正在进行的编译,使用红色背景来标识失败的编译,使用绿色背景来标识成功的编译。完成编译后,您可以下载相应的编译软件工件,只需点击 <span class="material-icons">get_app</span>(<strong>查看软件工件</strong>)图标即可(此图标可链接到可下载软件工件的页面)。选择一个方形即可在屏幕底部打开一个面板,其中包含“详细信息”标签(相关日志记录会保留在这里)、“更改”标签(其中会列出已纳入相应编译的更改)以及另一个指向编译软件工件的链接。新编译完成后,此信息中心会自动刷新。</p>
+
+<p>此信息中心可以在 <a href="https://ci.android.com" class="external">ci.android.com</a> 上找到</p>
+
+<figure><img src="../images/dashboard.png" alt="信息中心图片"/><figcaption><b>图 1</b>:持续集成信息中心</figcaption></figure>
+
+<p>此信息中心的属性包括:</p><p>
+</p><ul>
+ <li><b>分支名称</b>:出现编译的 git 分支的名称</li>
+ <li><b>编译软件工件</b>:用于查看和下载此编译版本中的软件工件的链接</li>
+ <li><b>版本号</b>:每个编译版本的唯一 ID</li>
+ <li><b>编译目标</b>:设备配置</li>
+ <li><b>编译类型</b>:目标的确切配置,可以是 user、userdebug 或 eng。如需了解详情,请参阅<a href="/setup/build/building#choose-a-target">选择目标</a></li>
+ <li><b>更改链接</b>:链接到此版本中包含的更改</li>
+ <li><b>永久链接</b>:指向此编译版本在 <a href="https://ci.android.com" class="external">ci.android.com</a> 上的页面的永久链接</li>
+
+</ul></body></html> \ No newline at end of file
diff --git a/zh-cn/setup/build/gsi.html b/zh-cn/setup/build/gsi.html
index 262d2da7..056d6827 100644
--- a/zh-cn/setup/build/gsi.html
+++ b/zh-cn/setup/build/gsi.html
@@ -21,17 +21,20 @@
limitations under the License.
-->
-<p>常规系统映像 (GSI) 是包含已针对 Android 设备调整配置的系统映像。这种映像被视为所有 Android 设备应该都能顺利运行且包含未经修改的 Android 开源项目 (AOSP) 代码的“纯 Android”实现。
+<p>常规系统映像 (GSI) 是指已针对 Android 设备调整配置的系统映像。GSI 包含未经修改的 Android 开源项目 (AOSP) 代码,任何运行 Android 8.1 及以上版本的 Android 设备都可以顺利运行这种代码,因此我们将 GSI 视为“纯 Android”实现。
</p>
-<p>GSI 中的内容不依赖于供应商映像。为了验证 GSI 的独立性,Android 设备的系统映像会被替换为 GSI,然后通过<a href="/compatibility/vts/">供应商测试套件 (VTS)</a> 和<a href="/compatibility/cts/">兼容性测试套件 (CTS)</a> 进行全面测试。同样,您可以使用 GSI 替换自己的系统映像,以验证 Android 设备能够正确实现供应商接口。
+<p>GSI 合规性是 <a href="/compatibility/overview">Android 兼容性计划</a>的一部分。为确保运行最新版 Android 的设备能够正确实现供应商接口,我们将 Android 设备的系统映像替换为 GSI,然后使用<a href="/compatibility/vts/">供应商测试套件 (VTS)</a> 和<a href="/compatibility/cts/">兼容性测试套件 (CTS)</a> 对设备进行测试。
</p>
-<h2 id="gsi-configuration-and-variances">GSI 配置和差异</h2>
+<aside class="note"><strong>注意</strong>:本文介绍的 GSI 内容面向的是 Android OEM 和 ROM 开发者;Android 应用开发者应该参考 <a href="https://developer.android.com/topic/generic-system-image/">developer.android.com</a>,了解面向开发者的 GSI 详细信息。
+</aside>
-<p>GSI 的目标是为所有 Android 设备提供特定的通用配置,同时允许不同的供应商设备之间存在差异。当前的 GSI 基于 Android 9。
+<p>开始使用 GSI 之前,请先阅读下面几节内容,详细了解 <a href="#gsi-configuration-and-variances">GSI 配置</a>(和允许的差异)、<a href="#gsi-types">类型</a>(Android GSI 和旧版 GSI)以及<a href="#vendor-binaries-and-vndk-dependencies">供应商二进制文件和 VNDK 依赖项</a>。准备好使用 GSI 后,请为设备目标<a href="#building-gsis">下载并编译 GSI</a>,然后<a href="#flashing-gsis">将 GSI 刷写</a>到 Android 设备。
</p>
+<h2 id="gsi-configuration-and-variances">GSI 配置和差异</h2>
+
<p>当前的 GSI 具有以下配置:</p>
<ul>
@@ -52,7 +55,7 @@
<h2 id="gsi-types">GSI 类型</h2>
-<p>GSI 类型取决于设备搭载的 Android 版本。Android 9 支持以下 GSI:</p>
+<p>用于合规性测试的 GSI 取决于设备搭载的 Android 版本。Android 9 支持以下 GSI:</p>
<table>
<tbody><tr>
@@ -72,22 +75,18 @@
</tr>
</tbody></table>
-<aside class="note">
- <strong>注意</strong>:要为某个设备确定合适的 GSI,请将此设备连接到工作站,然后运行 <code>adb shell getprop ro.product.first_api_level</code>。如果 API 级别为 28,则使用 Android GSI;如果 API 级别为 27,则使用旧版 GSI。如果没有系统属性,则说明此设备可能不受支持。
-</aside>
-
-<p>所有 GSI 都是从 Android 9 代码库编译的。是否支持旧版 GSI 取决于设备的供应商接口实现,并非所有搭载 Android 8.0 或 Android 8.1 的设备都能使用旧版 GSI。有关详情,请参阅<a href="#vendor-binaries-and-vndk-dependencies">供应商二进制文件和 VNDK 依赖项</a>。
+<p>所有 GSI 都是从 Android 9 代码库编译的。
</p>
<h3 id="changes-in-p-gsis">Android 9 GSI 变更</h3>
-<p>搭载 Android 9 的设备必须使用 Android 9 GSI,Android 9 GSI 与早期 GSI 相比存在以下主要变化:</p>
+<p>搭载 Android 9 的设备必须使用 Android 9 GSI 测试合规性,Android 9 GSI 与早期 GSI 相比存在以下主要变化:</p>
<ul>
<li><strong>合并 GSI 和模拟器</strong>。GSI 是根据模拟器产品(例如,<code>aosp_arm64</code>、<code>aosp_x86</code> 等)的系统映像编译的。</li>
<li><strong>System-as-root</strong>。在以前的 Android 版本中,不支持 A/B 更新的设备可以在 <code>/system</code> 目录下装载系统映像。在 Android 9 中,系统映像的 root 作为设备的 root 装载。</li>
<li><strong>64 位 binder 接口</strong>。在 Android 8.x 中,32 位 GSI 使用 32 位 binder 接口。Android 9 不支持 32 位 binder 接口,因此 32 位 GSI 和 64 位 GSI 都使用 64 位 binder 接口。</li>
- <li><strong>强制执行 VNDK</strong>。在 Android 8.1 中,VNDK 是可选的。在 Android 9 中,VNDK 是强制性的,这意味着 <code>BOARD_VNDK_RUNTIME_DISABLE</code> <strong>不可</strong>设置 (<code>BOARD_VNDK_RUNTIME_DISABLE := # must not be set</code>)。</li>
+ <li><strong>强制执行 VNDK</strong>。在 Android 8.1 中,VNDK 是可选的。在 Android 9 中,VNDK 是强制性的,这意味着<strong>不得</strong>设置 <code>BOARD_VNDK_RUNTIME_DISABLE</code> (<code>BOARD_VNDK_RUNTIME_DISABLE := # must not be set</code>)。</li>
<li><strong>兼容的系统属性</strong>。Android 9 支持对兼容的系统属性进行访问检查:<code>PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true</code>。</li>
</ul>
@@ -95,7 +94,7 @@
<h3 id="changes-in-legacy-gsis">Android 9 旧版 GSI 变更</h3>
-<p>升级到 Android 9 的设备可以使用名称带后缀 <code>_ab</code> 或 <code>_a</code> 的旧版 GSI 产品(例如,<code>aosp_arm64_ab</code>、<code>aosp_x86_a</code>)。此 GSI 支持以下升级用例:</p>
+<p>升级到 Android 9 的设备可以使用名称带有 <code>_ab</code> 或 <code>_a</code> 后缀的旧版 GSI 产品(例如,<code>aosp_arm64_ab</code>、<code>aosp_x86_a</code>)测试合规性。此 GSI 支持以下升级用例:</p>
<ul>
<li>具有 Android 8.1 供应商接口实现的设备</li>
@@ -132,11 +131,11 @@
<table>
<tbody><tr>
<th>用例</th>
- <th>供应商二进制文件版本</th>
+ <th>供应商<br />二进制文件<br />版本</th>
<th><code>BOARD_VNDK_VERSION</code></th>
<th><code>BOARD_VNDK_RUNTIME_DISABLE</code></th>
- <th>旧版 GSI 系统二进制文件版本</th>
- <th>旧版 GSI 支持</th>
+ <th>旧版 GSI<br />系统二进制文件版本</th>
+ <th>旧版 GSI 支持情况</th>
</tr>
<tr>
<td>0</td>
@@ -191,9 +190,7 @@
<p>最常见的受支持用例是 2,其中旧版 GSI 支持运行 Android 8.1 且使用 <code>BOARD_VNDK_VERSION</code> 进行编译(而未通过设置 <code>BOARD_VNDK_RUNTIME_DISABLE</code> 进行编译,即,未停用运行时强制执行)的设备。
</p>
-<p>两个不受支持的用例是 1.a 和 1.b,其中旧版 GSI 不支持运行 Android 8.1 且未使用 <code>BOARD_VNDK_VERSION</code> 或通过设置 <code>BOARD_VNDK_RUNTIME_DISABLE</code> 进行编译(即,运行时强制执行已停用)的设备。这些设备不受支持,因为它们的供应商二进制文件依赖于 Android 8.1 非 VNDK 共享库,这些库未包含在旧版 GSI 中。</p>
-
-<p>要使这些设备与旧版 GSI 兼容,供应商必须执行以下操作之一:</p>
+<p>两个不受支持的用例是 1.a 和 1.b,其中旧版 GSI 不支持运行 Android 8.1 且未使用 <code>BOARD_VNDK_VERSION</code> 或通过设置 <code>BOARD_VNDK_RUNTIME_DISABLE</code> 进行编译(即,运行时强制执行已停用)的设备。之所以不支持这些设备,是因为这些设备的供应商二进制文件依赖于 Android 8.1 非 VNDK 共享库,而旧版 GSI 中不包含这些库。要使这些设备与旧版 GSI 兼容,供应商必须执行以下操作之一:</p>
<ul>
<li>启用 <code>BOARD_VNDK_VERSION</code>,但未设置 <code>BOARD_VNDK_RUNTIME_DISABLE</code>(用例 2)<br /><br />或<br /><br /></li>
@@ -202,13 +199,13 @@
<h2 id="building-gsis">编译 GSI</h2>
-<p>自 Android 9 开始,每个 Android 版本都在 AOSP 上拥有一个名为 <code><var>DESSERT</var>-gsi</code> 的 GSI 分支(例如,<code>pie-gsi</code> 是 Android 9 的 GSI 分支)。GSI 分支包含应用了所有<a href="/security/bulletin/">安全补丁程序</a>和 <a href="#contributing-to-a-gsi">GSI 补丁程序</a> 的 Android 内容。
+<p>从 Android 9 开始,每个 Android 版本都在 AOSP 上拥有一个名为 <code><var>DESSERT</var>-gsi</code> 的 GSI 分支(例如,<code>pie-gsi</code> 是 Android 9 的 GSI 分支)。GSI 分支包含应用了所有<a href="/security/bulletin/">安全补丁程序</a>和 <a href="#contributing-to-gsis">GSI 补丁程序</a>的 Android 内容。
</p>
-<p>要编译 GSI,请从 GSI 分支进行<a href="/setup/build/downloading">下载</a>,然后<a href="/setup/build/building#choose-a-target">选择 GSI 编译目标</a>,从而设置 Android 源代码树。请根据以下编译目标表确定设备应使用哪个 GSI 版本。编译完成后,GSI 便会成为系统映像(例如 <code>system.img</code>)并显示在输出文件夹 <code>out/target/product/<strong>generic_arm64_ab</strong></code> 中。编译还会输出 <code>vbmeta.img</code>;对于使用 <a href="/security/verifiedboot/avb">Android 验证启动</a>的设备,您可以将其用于停用验证启动。
+<p>要编译 GSI,请从 GSI 分支进行<a href="/setup/build/downloading">下载</a>,然后<a href="/setup/build/building#choose-a-target">选择 GSI 编译目标</a>,从而设置 Android 源代码树。请根据以下编译目标表确定设备应使用哪个 GSI 版本。编译完成后,GSI 便会成为系统映像(例如 <code>system.img</code>)并显示在输出文件夹 <code>out/target/product/<strong>generic_arm64_ab</strong></code> 中。编译还会输出 <code>vbmeta.img</code>;您可以利用此映像在使用 <a href="/security/verifiedboot/avb">Android 验证启动</a>的设备上停用验证启动。
</p><p>
-</p><p>示例:以下命令可在 GSI 分支 <code>pie-gsi</code> 上编译旧版 GSI 编译目标 <code>aosp_arm64_ab-userdebug</code>:</p>
+</p><p>例如,要在 GSI 分支 <code>pie-gsi</code> 上编译旧版 GSI 编译目标 <code>aosp_arm64_ab-userdebug</code>,请运行以下命令:</p>
<pre class="prettyprint">
$ repo init -u https://android.googlesource.com/platform/manifest -b pie-gsi
@@ -362,12 +359,12 @@ $ make -j4
<em>**可以根据要求添加</em>
<aside class="aside">
- <strong>注意</strong>:在未来的 Android 版本中可能会移除这些编译目标。
+ <strong>注意:</strong>在未来的 Android 版本中可能会移除这些编译目标。
</aside>
-<h2 id="flashing-gsis">刷写 GSI</h2>
+<h2 id="flashing-gsis">刷写 GSI 的要求</h2>
-<p>Android 设备可能具有不同的设计,因此不可能通过单个命令或单组指令将 GSI 刷写到特定设备上。请使用以下常规步骤作为指南:</p>
+<p>Android 设备可能具有不同的设计,因此不可能通过单个命令或单组指令将 GSI 刷写到特定设备上。您可以向 Android 设备的制造商索要详细的刷写说明,也可以参考以下常规步骤:</p>
<ol>
<li>确保设备具备以下条件:
@@ -375,9 +372,7 @@ $ make -j4
<li>支持 HIDL-HAL 接口。</li>
<li>用于解锁设备的方法(以便能够使用 <code>fastboot</code> 对其进行刷写)。</li>
<li>用于停用验证启动的方法(例如 <a href="/security/verifiedboot/">vboot 1.0</a>、<a href="/security/verifiedboot/avb">AVB</a> 等)。</li>
- <li>解锁设备,使其可通过 <code>fastboot</code> 进行刷写。</li>
- <aside class="note">
- <strong>注意</strong>:请通过 Android 源代码树来编译 <code>fastboot</code>,以确保您拥有其最新版本。</aside>
+ <li>解锁设备,使其可通过 <code>fastboot</code> 刷写。(为确保您拥有最新版本的 <code>fastboot</code>,请从 Android 源代码树进行编译。)</li>
</ul>
</li>
<li>停用验证启动。</li>
@@ -386,7 +381,7 @@ $ make -j4
<li>重新启动设备。</li>
</ol>
-<p>例如,要将 GSI 刷写到 Pixel 2 设备,请执行以下操作:</p>
+<p>例如,要将 GSI 刷写到任何 Pixel 设备,请执行以下操作:</p>
<ol>
<li><a href="/setup/build/running#booting-into-fastboot-mode">启动到引导加载程序模式</a>,然后<a href="/setup/build/running#unlocking-the-bootloader">解锁引导加载程序</a>。</li>
diff --git a/zh-cn/setup/build/jack.html b/zh-cn/setup/build/jack.html
index 50696dce..56e5e7a9 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>
@@ -34,7 +34,7 @@
<h3 id="jack_library">Jack 库格式</h3>
-<p>Jack 具有自己的 .jack 文件格式,其中包含相应库的预编译 dex 代码,可实现更快速的编译(dex 预处理)。</p>
+<p>Jack 有自己的 .jack 文件格式,其中包含相应库的预编译 dex 代码,可实现更快速的编译(dex 预处理)。</p>
<img src="../images/jack_library.png" alt="Jack 库文件内容"/>
<figcaption><strong>图 2.</strong> Jack 库文件内容</figcaption>
@@ -87,7 +87,7 @@
</tr>
<tr>
<td>编译因“Cannot launch background server”(无法启动后台服务器)而失败</td>
-<td>最可能的原因是您计算机上的 TCP 端口都被占用了。您可以通过修改 <code>$HOME/.jack</code>(<code>SERVER_PORT_SERVICE</code> 和 <code>SERVER_PORT_ADMIN</code> 变量)来更改端口。要解决这种问题,请通过修改 <code>$HOME/.jack</code> 并将 <code>SERVER</code> 更改为 false 来停用 Jack 编译服务器。遗憾的是,这将大大降低编译速度,并可能会迫使您使用加载控制(<code>make</code> 的选项 <code>-l</code> )启动 <code>make -j</code>。</td>
+<td>最可能的原因是您计算机上的 TCP 端口都被占用了。您可以通过修改 <code>$HOME/.jack</code>(<code>SERVER_PORT_SERVICE</code> 和 <code>SERVER_PORT_ADMIN</code> 变量)来更改端口。要解决这种问题,请通过修改 <code>$HOME/.jack</code> 并将 <code>SERVER</code> 更改为 false 来停用 Jack 编译服务器。但是,这将大大降低编译速度,并可能会迫使您使用加载控制(<code>make</code> 的选项 <code>-l</code> )启动 <code>make -j</code>。</td>
</tr>
<tr>
<td>编译卡住了,没有任何进展</td>
diff --git a/zh-cn/setup/build/running.html b/zh-cn/setup/build/running.html
index 06dc2f6e..d8df1fbd 100644
--- a/zh-cn/setup/build/running.html
+++ b/zh-cn/setup/build/running.html
@@ -258,7 +258,7 @@
<p><code>lunch</code> 菜单中提供了建议的设备编译系统,在不使用任何参数的情况下运行 <code>lunch</code> 命令即可查看。
您可以从 developers.google.com 下载 Nexus 设备的出厂映像和二进制文件。请参阅<a href="requirements#binaries">设备二进制文件</a>进行下载。有关详情以及其他资源,请参阅<a href="building.html#obtaining-proprietary-binaries">下载专有二进制文件</a>。
-<table>
+</p><table>
<thead>
<tr>
<th>设备</th>
@@ -395,7 +395,7 @@
</tbody>
</table>
-</p><aside class="note"><strong>注意</strong>:请不要在原本搭载 Android 4.1.2 或更高版本的 Nexus 7 上使用 Android 4.1.1。</aside>
+<aside class="note"><strong>注意</strong>:请不要在原本搭载 Android 4.1.2 或更高版本的 Nexus 7 上使用 Android 4.1.1。</aside>
<h2 id="flashing-a-device">刷写设备</h2>
diff --git a/zh-cn/setup/community.html b/zh-cn/setup/community.html
index 0bb9f7fc..08a30697 100644
--- a/zh-cn/setup/community.html
+++ b/zh-cn/setup/community.html
@@ -181,35 +181,35 @@
<p><em>使用明确、相关的内容主题。</em> 这对每个人都会有所帮助,包括那些尝试回答您问题的人,以及可能在日后查找相关信息的人。</p>
</li>
<li>
-<p><em>在您的帖子中提供充足的详细信息。</em> 提供代码或日志片段、屏幕截图标注以及类似的详细信息有助于获得更理想的结果,并能促成更有效的讨论。如需在提问时如何措辞方面的实用指导,请参阅<a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html">提问的智慧</a>。</p>
+<p><em>在您的帖子中提供充足的详细信息。</em> 提供代码或日志片段、屏幕截图标注以及类似的详细信息有助于获得更理想的结果,并能促成更有效的讨论。要查看有关在提问时如何措辞的实用指导,请参阅<a href="http://www.catb.org/%7Eesr/faqs/smart-questions.html">提问的智慧</a>。</p>
</li>
</ul>
<h3 id="mailing">论坛规则</h3>
-<p>我们喜欢简单,讨厌各种限制,因此我们的政策极其简要。以下规则说明了我们对 Android 论坛订阅者的要求。
+<p>我们喜欢简单,讨厌各种限制,因此我们的规则极其简要。我们在以下规则中说明了我们对 Android 论坛订阅者的要求。
</p><ul>
-<li>请保持友善的态度:对他人保持礼貌和尊重是 Android 文化的重要组成部分,我们希望参与 Android 社区的每个人都和我们一样毫无保留地接受这一点。<em></em>保持礼貌并不意味着我们彼此之间不能以具有建设性的方式表达异议,但我们在表达异议时必须要有礼貌。无论出于任何原因,都不能敌视或轻视任何人;如果您认为自己有这种情绪,那么在发帖之前请三思。移动开发是一项非常严肃的业务,但也有很多乐趣。让我们保持这种状态,努力打造最友善的开放源代码社区之一。
+<li>请保持友善的态度:对他人保持礼貌和尊重是 Android 文化的重要组成部分,我们希望参与 Android 社区活动的每个人都和我们一样毫无保留地接受这一点。<em></em>保持礼貌并不意味着我们相互之间不能提出有建设性的异议,但我们在表达异议时必须要有礼貌。无论出于何种原因,都不能对任何人表现出轻视或敌意;如果您认为自己有这种情绪,发帖之前请三思。移动开发是一项非常严肃的工作,但同时也充满着乐趣。让我们保持这种状态,努力打造最友善的开源社区之一。
</li>
-<li>允许讨论的主题:我们的大多数论坛都用于讨论与 Android 相关的技术话题或方便用户互相帮助。<em></em>一般情况下,我们不会对在论坛中讨论的主题进行严格限制:只要主题在某种程度上与 Android 相关,都可以在我们的论坛中进行讨论。我们欢迎大家公布和讨论与 Android 相关的产品、库、出版物和其他有趣的新闻,但请不要同时在多个论坛中发帖。请仅在与您的内容最相关的论坛中发帖。我们甚至欢迎讨论批判 Android 的文章和想法(但请保持礼貌!)- 毕竟,如果我们不听取意见,就无法改进。
+<li>允许讨论的主题:我们的大多数论坛都用于讨论与 Android 相关的技术话题或方便用户互相帮助。<em></em>一般情况下,我们不会对在论坛中讨论的主题进行严格限制:只要主题在某种程度上与 Android 相关,都可以在我们的论坛中进行讨论。我们欢迎大家公布和讨论与 Android 相关的产品、库、出版物和其他有趣的新闻,但请不要同时在多个论坛中发帖。请仅在与您的内容最相关的论坛中发帖。我们甚至欢迎讨论批判 Android 的文章和想法(但要保持礼貌态度!)- 毕竟,如果我们不听取意见,就无法改进。
</li>
<li>工作论坛:我们的某些论坛被视为“工作论坛”(旨在为完成特定任务提供支持)。<em></em>在这些论坛中,我们不欢迎与主题无关的讨论。如果您要进行一般讨论,我们通常会要求您使用其他论坛。由于人们会利用这些论坛来完成相关工作,因此我们会采取积极的举措来减少无关的内容。我们希望您能够尊重贡献者们的宝贵时间,并使用适当的论坛进行一般讨论。
</li>
-<li>垃圾内容:我们非常讨厌垃圾内容,这种心情正如我们崇尚礼貌和尊重一样强烈,因此我们保留限制垃圾讨论内容的权利。<em></em>如果有人发布纯属垃圾的内容,我们会立即并永久禁止发布者使用相应论坛。
+<li>垃圾内容:我们非常讨厌垃圾内容,这种心情和我们崇尚礼貌和尊重一样强烈,因此我们保留限制讨论垃圾内容的权利。<em></em>如果有人发布纯粹的垃圾内容,我们会立即并永久禁止发布者使用相应论坛。
</li>
</ul>
-<p>友善是最重要的规则。请谨记:在任何情况下,我们的社区都不欢迎不尊重他人和粗鲁的行为。我们没有制定正式的政策来对付捣乱者,也希望永远都不需要制定这样的政策。不过,我们承诺会尽最大努力保证公平,并且始终会先尝试警告对方,警告无果后再禁止其使用相应论坛。</p>
+<p>友善是最重要的规则。请记住:在任何情况下,我们的社区都不欢迎不尊重他人和粗鲁的行为。我们并没有制定正式的规则来处理捣乱者,也希望永远都不需要制定这样的规则。不过,我们承诺会尽最大努力保证公平公正,并且我们始终会先尝试警告对方,警告无果后再禁止其使用相应论坛。</p>
<h3 id="contacting">与管理员联系</h3>
-<p>如果您发现有人言行粗鲁,请制止他们。您也是相应论坛的一份子,因此您不必因为他人的无礼行为不是针对您而予以容忍。切记要有礼有节!请勿火上浇油。</p>
-<p>不过,如果您发现难以容忍的违规行为,想要举报垃圾内容,有强烈意见或想与管理员交流,请随时与论坛所有者联系。这是我们的职责所在!</p>
+<p>如果您发现有人言行粗鲁,请制止他们。您也是论坛的一份子,不必因为无礼行为不是针对您而采取容忍态度。切记要有礼有节!请勿火上浇油。</p>
+<p>不过,如果您发现有出格的违规行为,想要举报垃圾内容,有重要意见或想与管理员交流,请随时与论坛所有者联系。这是我们的职责所在!</p>
-<h3 id="using-email-with-google-groups">通过电子邮件参与 Google 网上论坛</h3>
-<p>您可以使用任意电子邮件客户端参与论坛交流,而不必使用 <a href="https://groups.google.com/">Google 网上论坛</a>网站。要在不使用 Google 网上论坛网站的情况下订阅某个论坛,请使用上文列表中“通过电子邮件订阅”后的链接。</p>
+<h3 id="using-email-with-google-groups">通过电子邮件参与 Google 网上论坛交流</h3>
+<p>您可以不通过 <a href="https://groups.google.com/">Google 网上论坛</a>网站,而使用电子邮件客户端参与论坛交流。如果不想通过 Google 网上论坛网站订阅某个论坛,可以使用上文列表中“通过电子邮件订阅”下的链接订阅。</p>
<p>要设置如何通过电子邮件接收论坛帖子,请执行以下操作:</p>
<ol>
<li>
-<p>通过 Google 网上论坛网站登录到相应论坛。例如,对于 android-platform 论坛,请使用 <a href="https://groups.google.com/forum/?fromgroups#!forum/android-platform">https://groups.google.com/forum/?fromgroups#!forum/android-platform</a>。</p>
+<p>通过 Google 网上论坛网站登录论坛。例如,要访问 android-platform 论坛,请使用 <a href="https://groups.google.com/forum/?fromgroups#!forum/android-platform">https://groups.google.com/forum/?fromgroups#!forum/android-platform</a>。</p>
</li>
<li>
<p>点击右侧的“我的成员资格”。</p>
@@ -219,7 +219,7 @@
</li>
</ol>
<h2 id="android-on-irc">在 IRC 上讨论 Android</h2>
-<p>Android 在 <a href="http://freenode.net/">freenode</a> 上有 IRC 频道。我们在 <a href="irc://irc.freenode.net/">irc.freenode.net</a> 上维护着两个官方 IRC 频道(通过该网站的 <a href="http://webchat.freenode.net/">freenode webchat</a> 访问)</p>
+<p>Android 在 <a href="http://freenode.net/">freenode</a> 上有 IRC 频道。我们在 <a href="irc://irc.freenode.net/">irc.freenode.net</a> 上开设了两个官方 IRC 频道(通过该网站的 <a href="http://webchat.freenode.net/">freenode webchat</a> 访问)</p>
<ul>
<li>
<p><a href="irc://irc.freenode.net/android">#android</a> - 用于讨论一般性 Android 问题和移植问题</p>
@@ -246,7 +246,7 @@
</ul>
<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>请通过 <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>
diff --git a/zh-cn/setup/contribute/code-style.html b/zh-cn/setup/contribute/code-style.html
index 6e72c8f3..41a1623a 100644
--- a/zh-cn/setup/contribute/code-style.html
+++ b/zh-cn/setup/contribute/code-style.html
@@ -20,127 +20,176 @@
limitations under the License.
-->
-<p>以下代码样式是向 Android 开源项目 (AOSP) 贡献 Java 代码时必须严格遵守的规则。如果向 Android 平台贡献的代码没有遵守这些规则,则通常不会被接受。<em></em>我们知道,并非所有现有的代码都遵守这些规则,但我们希望所有新代码都遵守这些规则。</p>
+<p>以下代码样式是向 Android 开源项目 (AOSP) 贡献 Java 代码时必须严格遵守的规则。如果向 Android 平台贡献的代码没有遵守这些规则,则通常不会被接受。<em></em>我们知道,并非所有现有的代码都遵守这些规则,但我们希望所有新代码都遵守这些规则。
+</p>
-<p class="note"><strong>注意</strong>:这些规则针对的是 Android 平台,Android 应用开发者可以不遵守这些规则。应用开发者可以遵守他们选择的标准,如 <a href="https://google.github.io/styleguide/javaguide.html">Google Java 样式指南</a>。</p>
+<aside class="note">
+ <strong>注意</strong>:这些规则针对的是 Android 平台,Android 应用开发者可以不遵守这些规则。应用开发者可以遵守他们选择的标准,如 <a href="https://google.github.io/styleguide/javaguide.html" class="external">Google Java 样式指南</a>。
+</aside>
<h2 id="java-language-rules">Java 语言规则</h2>
-<p>Android 遵循标准 Java 编码规范以及下文所述的其他规则。</p>
-<h3 id="dont-ignore-exceptions">请勿忽略异常</h3>
-<p>开发者可能会倾向于编写完全忽略异常的代码,例如:</p>
-<pre><code>void setServerPort(String value) {
+ <p>Android 遵循标准 Java 编码规范以及下文所述的其他规则。
+ </p>
+
+ <h3 id="dont-ignore-exceptions">请勿忽略异常</h3>
+
+ <p>开发者可能会倾向于编写完全忽略异常的代码,例如:</p>
+
+<pre class="prettyprint">
+ void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) { }
-}
-</code></pre>
-<p>千万不要这样做。虽然您可能认为自己的代码永远不会遇到这种错误,或者无需费心处理这种错误,但像上例那样忽略异常会在您的代码中埋下隐患,这种错误总有一天会被他人触发。您必须有原则地处理代码中的每个异常;具体处理方式因情况而异。</p>
-<p><em>无论何时,只要遇到空的 catch 子句,就应该保持警惕。当然,在某些时候,空的 catch 语句确实没什么问题,但至少你得想一想。在 Java 中,无论怎么小心都不为过。- <a href="http://www.artima.com/intv/solid4.html">James Gosling</a></em></p>
-<p>可接受的替代方案(按优先顺序排列)包括:</p>
-<ul>
-<li>将异常抛给方法调用者。
-<pre><code>void setServerPort(String value) throws NumberFormatException {
- serverPort = Integer.parseInt(value);
-}
-</code></pre>
-</li>
-<li>抛出一个适合您的抽象级别的新异常。
-<pre><code>void setServerPort(String value) throws ConfigurationException {
+ }
+</pre>
+
+ <p>千万不要这样做。虽然您可能认为自己的代码永远不会遇到这种错误,或者无需费心处理这种错误,但像上例那样忽略异常会在您的代码中埋下隐患,这种错误总有一天会被他人触发。您必须有原则地处理代码中的每个异常;具体处理方式因情况而异。
+ </p>
+
+ <p class="inline-block">“无论何时,只要遇到空的 catch 子句,就应该保持警惕。<em>当然,在某些时候,空的 catch 语句确实没什么问题,但至少你得想一想。</em>在 Java 中,无论怎么小心都不为过。- <a href="http://www.artima.com/intv/solid4.html" class="external">James Gosling</a>
+ </p>
+
+ <p>可接受的替代方案(按优先顺序排列)包括:</p>
+
+ <ul>
+ <li>将异常抛给方法调用者。
+<pre class="prettyprint">
+ void setServerPort(String value) throws NumberFormatException {
+ serverPort = Integer.parseInt(value);
+ }
+</pre>
+ </li>
+ <li>抛出一个适合您的抽象级别的新异常。
+<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>妥善处理错误,并替换 catch {} 块中的相应值。
-<pre><code>/** Set port. If value is not a valid number, 80 is substituted. */
-
-void setServerPort(String value) {
+ }
+</pre>
+ </li>
+ <li>妥善处理错误,并替换 <code>catch {}</code> 块中的相应值。
+<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>捕获异常并抛出一个新的 <code>RuntimeException</code>。这样做比较危险,因此请仅在下述情况下采用这种方案:您确定,如果发生此错误,最适当的处理方式就是让应用崩溃。
-<pre><code>/** Set port. If value is not a valid number, die. */
+ }
+</pre>
+ </li>
+ <li>捕获异常并抛出一个新的 <code>RuntimeException</code>。这样做比较危险,因此请仅在下述情况下采用这种方案:您确定,如果发生此错误,最适当的处理方式就是让应用崩溃。
+
+<pre class="prettyprint">
+ /** Set port. If value is not a valid number, die. */
-void setServerPort(String value) {
+ 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>注意</strong>:原始异常会传递到 RuntimeException 的构造函数。如果您的代码必须采用 Java 1.3 进行编译,则必须忽略表示原因的异常。</p>
-</li>
-<li>最后一种方案:如果您确信忽略异常是合适的处理方式,那么您可以忽略异常,但您必须添加备注以充分说明理由:
-<pre><code>/** If value is not a valid number, original port number is used. */
-void setServerPort(String value) {
+ }
+</pre>
+ <aside class="note">
+ <strong>注意</strong>:原始异常会传递到 RuntimeException 的构造函数。如果您的代码必须采用 Java 1.3 进行编译,则必须忽略表示原因的异常。
+ </aside>
+ </li>
+ <li>最后一种方案:如果您确信忽略异常是合适的处理方式,那么您可以忽略异常,但您必须添加备注以充分说明理由:<pre class="prettyprint">
+ /** If value is not a valid number, original port number is used. */
+
+ void setServerPort(String value) {
try {
serverPort = Integer.parseInt(value);
} catch (NumberFormatException e) {
// Method is documented to just ignore invalid user input.
// serverPort will just be unchanged.
}
-}
-</code></pre>
-</li>
-</ul>
-
-<h3 id="dont-catch-generic-exception">请勿捕获常规异常</h3>
-<p>在捕获异常时,开发者可能会为了偷懒而倾向于采用以下处理方式:</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>千万不要这样做。几乎所有情况下都不适合捕获常规异常或 Throwable(最好不要捕获 Throwable,因为它包含 Error 异常)。这样做非常危险,因为这意味着系统会在处理应用级错误期间捕获到您从未预料到的异常(包括 ClassCastException 之类的 RuntimeException)。它掩盖了代码的故障处理属性,也就是说,如果有人在您所调用的代码中添加了一种新类型的异常,编译器不会帮助您意识到您需要采取不同的方式来处理该错误。在大多数情况下,您不应以相同的方式处理不同类型的异常。</p>
-<p>这条规则的特例是:在测试代码和顶级代码中,您希望捕获所有类型的错误(以防它们显示在界面中或者以便一直进行批处理作业)。在这些情况下,您可以捕获常规异常(或 Throwable)并适当地处理错误。但在这样做之前,请务必三思,然后添加备注以说明为何在此处执行这类操作是安全之举。</p>
-<p>捕获常规异常的替代方案:</p>
-<ul>
-<li>
-<p>在单个 try 之后将每个异常作为单独的 catch 块分别进行捕获。这样做可能显得比较笨拙,但仍比捕获所有异常更可取。请注意,不要在 catch 块中过多地重复使用代码。</p></li><p></p>
-
-<li>
-<p>通过多个 try 块重构您的代码,使得错误处理过程更精细。从解析中分离出 IO,然后分别处理每种情况下的错误。</p>
-</li>
-<li>
-<p>重新抛出异常。很多时候,您无需在该级别捕获异常,只需让相应方法抛出异常即可。</p>
-</li>
-</ul>
-<p>请谨记:异常是您的朋友!当编译器抱怨您没有捕获异常时,别闷闷不乐!您应该微笑:因为编译器让您能够更加轻松地捕获代码中的运行时错误。</p>
-<h3 id="dont-use-finalizers">请勿使用终结器</h3>
-<p>终结器可以在对象被垃圾回收器回收时执行一段代码。虽然终结器非常便于进行资源清理(尤其是外部资源),但并不能保证终结器何时被调用(甚至根本不会被调用)。</p>
-<p>Android 不使用终结器。在大多数情况下,您可以通过良好的异常处理流程实现终结器功能。如果您的确需要终结器,请定义一个 close() 方法(或类似方法),并注明需要调用该方法的确切时间(有关示例,请参阅 InputStream)。这种情况下,可以(但并非必须)在终结器中输出简短的日志消息,前提是不会输出大量日志消息。</p>
-
-<h3 id="fully-qualify-imports">完全合格的导入</h3>
-<p>当您想要使用 foo 包中的 Bar 类时,可以使用以下两种方式导入:</p>
-<ul>
-<li><code>import foo.*;</code>
-<p>可能会减少 import 语句的数量。</p></li>
-<li><code>import foo.Bar;</code>
-<p>明确指出实际使用了哪些类,而且代码对于维护者来说更易读。</p></li></ul>
-<p>使用 <code>import foo.Bar;</code> 导入所有 Android 代码。对于 Java 标准库(<code>java.util.*</code>、<code>java.io.*</code> 等)和单元测试代码 (<code>junit.framework.*</code>),确立了一种明确的例外情况。</p>
+ }
+</pre>
+ </li>
+ </ul>
+
+ <h3 id="dont-catch-generic-exception">请勿捕获常规异常</h3>
+
+ <p>在捕获异常时,开发者可能会为了偷懒而倾向于采用以下处理方式:</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>千万不要这样做。几乎所有情况下都不适合捕获常规异常或 Throwable(最好不要捕获 Throwable,因为它包含 Error 异常)。这样做非常危险,因为这意味着系统会在处理应用级错误期间捕获到您从未预料到的异常(包括 ClassCastException 之类的 RuntimeException)。它掩盖了代码的故障处理属性,也就是说,如果有人在您所调用的代码中添加了一种新类型的异常,编译器不会帮助您意识到您需要采取不同的方式来处理该错误。在大多数情况下,您不应以相同的方式处理不同类型的异常。
+ </p>
+
+ <p>这条规则的特例是:在测试代码和顶级代码中,您希望捕获所有类型的错误(以防它们显示在界面中或者以便一直进行批处理作业)。在这些情况下,您可以捕获常规异常(或 Throwable)并适当地处理错误。但在这样做之前,请务必三思,然后添加备注以说明为何在此处执行这类操作是安全之举。
+ </p>
+
+ <p>捕获常规异常的替代方案:</p>
+
+ <ul>
+ <li>在单次 try 操作之后将每个异常作为单独的 catch 块分别进行捕获。这样做可能显得比较笨拙,但仍比捕获所有异常更可取。请注意,不要在 catch 块中过多地重复使用代码。
+ </li>
+ <li>通过多个 try 块重构您的代码,使得错误处理过程更精细。从解析中分离出 IO,然后分别处理每种情况下的错误。
+ </li>
+ <li>重新抛出异常。很多时候,您无需在该级别捕获异常,只需让相应方法抛出异常即可。
+ </li>
+ </ul>
+
+ <p>请谨记:异常是您的朋友!当编译器抱怨您没有捕获异常时,别闷闷不乐!您应该微笑:因为编译器让您能够更加轻松地捕获代码中的运行时错误。
+ </p>
+
+ <h3 id="dont-use-finalizers">请勿使用终结器</h3>
+
+ <p>终结器可以在对象被垃圾回收器回收时执行一段代码。虽然终结器非常便于进行资源清理(尤其是外部资源),但并不能保证终结器何时被调用(甚至根本不会被调用)。
+ </p>
+
+ <p>Android 不使用终结器。在大多数情况下,您可以通过良好的异常处理流程实现终结器功能。如果您的确需要终结器,请定义一个 close() 方法(或类似方法),并注明需要调用该方法的确切时机(有关示例,请参阅 InputStream)。这种情况下,可以(但并非必须)在终结器中输出简短的日志消息,前提是不会输出大量日志消息。
+ </p>
+
+ <h3 id="fully-qualify-imports">完全合格的导入</h3>
+
+ <p>当您想要使用 foo 包中的 Bar 类时,可以使用以下两种方式导入:</p>
+
+ <ul>
+ <li><code>import foo.*;</code>
+ <p>可能会减少 import 语句的数量。</p>
+ </li>
+ <li><code>import foo.Bar;</code>
+ <p>明确指出实际使用了哪些类,而且代码对于维护者来说更清晰易读。
+ </p>
+ </li>
+ </ul>
+
+ <p>使用 <code>import foo.Bar;</code> 导入所有 Android 代码。对于 Java 标准库(<code>java.util.
+ </code>、<code>java.io.*</code> 等)和单元测试代码 (<code>junit.framework.*</code>),确立了一种明确的例外情况。
+ </p>
<h2 id="java-library-rules">Java 库规则</h2>
-<p>使用 Android 的 Java 库和工具需要遵守相关规范。在某些情况下,具体规范发生了一些重大变化,旧代码可能使用的是已弃用的模式或库。使用此类代码时,可以继续遵循现有样式。不过,在创建新组件时,请不要再使用已弃用的库。</p>
+
+ <p>使用 Android 的 Java 库和工具需要遵守相关规范。在某些情况下,具体规范发生了一些重大变化,旧代码使用的可能是已弃用的模式或库。使用此类代码时,可以继续遵循现有样式。不过,在创建新组件时,请不要再使用已弃用的库。
+ </p>
<h2 id="java-style-rules">Java 样式规则</h2>
-<h3 id="use-javadoc-standard-comments">使用 Javadoc 标准备注</h3>
-<p>每个文件都应该在顶部放置版权声明,其后是 package 和 import 语句(各个块之间用空行分隔),最后是类或接口声明。在 Javadoc 备注中说明类或接口的作用。</p>
-<pre><code>/*
+ <h3 id="use-javadoc-standard-comments">使用 Javadoc 标准备注</h3>
+
+ <p>每个文件都应该在顶部放置版权声明,其后是 package 和 import 语句(各个块之间用空行分隔),最后是类或接口声明。在 Javadoc 备注中说明类或接口的作用。
+ </p>
+<pre class="prettyprint">
+/*
* Copyright 2018 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -171,37 +220,62 @@ import java.sql.SQLException;
public class Foo {
...
}
-</code></pre>
-<p>您编写的每个类和重要的公开方法都必须包含 Javadoc 备注,至少用一句话说明类或方法的用途。<em></em>句式应以第三人称描述性动词开头。</p>
-<p>示例:</p>
-<pre><code>/** Returns the correctly rounded positive square root of a double value. */
+</pre>
+
+ <p>您编写的每个类和重要的公共方法都必须包含 Javadoc 备注,至少用一句话说明类或方法的用途。<em></em>句式应以第三人称描述性动词开头。
+ </p>
+
+ <p><strong>示例</strong></p>
+
+<pre class="prettyprint">
+/** Returns the correctly rounded positive square root of a double value. */
+
static double sqrt(double a) {
...
}
-</code></pre>
-<p>或</p>
-<pre><code>/**
+</pre>
+
+ <p>或</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>对于普通的 get 和 set 方法(如 <code>setFoo()</code>),您无需编写 Javadoc,要写也不过是“设置 Foo”。如果该方法执行更复杂的操作(例如强制实施约束条件或具有重大副作用),那么您必须添加备注。如果属性“Foo”的意思不明确,您也应该添加备注。
-</p><p>您所编写的每一种方法(无论是公开方法还是其他方法)都将受益于 Javadoc。公开方法是 API 的一部分,因此需要 Javadoc。Android 目前并不强制要求采用特定样式来编写 Javadoc 备注,但建议您参照<a href="http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html">如何为 Javadoc 工具编写文档备注</a>中的说明。</p>
+</pre>
+
+ <p>对于普通的 get 和 set 方法(如 <code>setFoo()</code>),您无需编写 Javadoc 备注,要写也不过是“sets Foo”。如果该方法执行更复杂的操作(例如强制实施约束条件或具有重大副作用),那么您必须添加备注。如果属性“Foo”的意思不明确,您也应该添加备注。
+ </p>
+
+ <p>您所编写的每一种方法(无论是公共方法还是其他方法)都将受益于 Javadoc 备注。公共方法是 API 的一部分,因此需要添加 Javadoc 备注。Android 目前并不强制要求采用特定样式来编写 Javadoc 备注,但建议您参照<a href="http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html" class="external">如何为 Javadoc 工具编写文档备注</a>一文中的说明。
+ </p>
+
+ <h3 id="write-short-methods">编写简短方法</h3>
+
+ <p>在可行的情况下,尽量编写短小精炼的方法。我们了解,有些情况下较长的方法是恰当的,因此对方法的代码长度没有做出硬性限制。如果某个方法的代码超出 40 行,请考虑是否可以在不破坏程序结构的前提下对其拆解。
+ </p>
+
+ <h3 id="define-fields-in-standard-places">在标准位置定义字段</h3>
-<h3 id="write-short-methods">编写简短方法</h3>
-<p>在可行的情况下,尽量编写短小精炼的方法。我们了解,有些情况下较长的方法是恰当的,因此对方法的代码长度没有做出硬性限制。如果某个方法的代码超出 40 行,请考虑是否可以在不破坏程序结构的前提下对其拆解。</p>
+ <p>在文件的顶部或者在使用它们的方法之前定义字段。
+ </p>
-<h3 id="define-fields-in-standard-places">在标准位置定义字段</h3>
-<p>在文件的顶部或者在使用它们的方法之前定义字段。</p>
+ <h3 id="limit-variable-scope">限制变量的作用域</h3>
+
+ <p>尽可能缩小局部变量的作用域。这样做有助于提高代码的可读性和可维护性,并降低出错的可能性。每个变量都应该在包含变量所有使用场合的最内层的块中进行声明。
+ </p>
+
+ <p>局部变量应该在首次使用时声明。几乎每个局部变量声明都应该包含一个初始化程序。如果您还没有足够的信息来合理地初始化某个变量,请推迟到信息充足时再进行声明。
+ </p>
+
+ <p>try-catch 语句是一种例外情况。如果通过一个会抛出受检异常的方法的返回值来初始化变量,则必须在 try 块中进行初始化。如果该值必须在 try 块之外使用,那么您必须在 try 块之前对其进行声明,因为它在 try 块中尚无法合理地初始化:</p>
+
+<pre class="prettyprint">
+// Instantiate class cl, which represents some sort of Set
-<h3 id="limit-variable-scope">限制变量的作用域</h3>
-<p>尽可能缩小局部变量的作用域。这样做有助于提高代码的可读性和可维护性,并降低出错的可能性。每个变量应该在包含变量所有使用场合的最内层的块中进行声明。</p>
-<p>局部变量应该在首次使用时声明。几乎每个局部变量声明都应该包含一个初始化程序。如果您还没有足够的信息来合理地初始化某个变量,请推迟到信息充足时再进行声明。</p>
-<p>try-catch 语句是例外情况。如果通过一个会抛出受检异常的方法的返回值来初始化变量,则必须在 try 块中进行初始化。如果该值必须在 try 块之外使用,那么您必须在 try 块之前对其进行声明,因为它在 try 块中尚无法合理地初始化:</p>
-<pre><code>// Instantiate class cl, which represents some sort of Set
Set s = null;
try {
s = (Set) cl.newInstance();
@@ -213,9 +287,12 @@ try {
// Exercise the set
s.addAll(Arrays.asList(args));
-</code></pre>
-<p>不过,即使是这种情况,也可以通过将 try-catch 块封装在某个方法中来避免:</p>
-<pre><code>Set createSet(Class cl) {
+</pre>
+
+ <p>不过,即使是这种情况,也可以通过将 try-catch 块封装在某个方法中来避免:</p>
+
+<pre class="prettyprint">
+Set createSet(Class cl) {
// Instantiate class cl, which represents some sort of Set
try {
return (Set) cl.newInstance();
@@ -231,86 +308,102 @@ s.addAll(Arrays.asList(args));
// Exercise the set
Set s = createSet(cl);
s.addAll(Arrays.asList(args));
-</code></pre>
-<p>循环变量应该在 for 语句本身中进行声明,除非有令人信服的理由不这么做:</p>
-<pre><code>for (int i = 0; i &lt; n; i++) {
+</pre>
+
+ <p>循环变量应该在 for 语句本身中进行声明,除非有令人信服的理由不这么做:</p>
+
+<pre class="prettyprint">
+for (int i = 0; i &lt; n; i++) {
doSomething(i);
}
-</code></pre>
-<p>和</p>
-<pre><code>for (Iterator i = c.iterator(); i.hasNext(); ) {
+</pre>
+
+ <p>和</p>
+
+<pre class="prettyprint">
+for (Iterator i = c.iterator(); i.hasNext(); ) {
doSomethingElse(i.next());
}
-</code></pre>
-
-<h3 id="order-import-statements">为 import 语句排序</h3>
-<p>import 语句的顺序为:</p>
-<ol>
-<li>
-<p>导入 Android 包</p>
-</li>
-<li>
-<p>导入第三方包(<code>com</code>、<code>junit</code>、<code>net</code>、<code>org</code>)</p>
-</li>
-<li>
-<p><code>java</code> 和 <code>javax</code></p>
-</li>
-</ol>
-<p>要完全符合 IDE 设置,导入顺序应为:</p>
-<ul>
-<li>
-<p>每个分组内按字母顺序排序,其中大写字母开头的语句位于小写字母开头的语句前面(例如 Z 在 a 前面)。</p>
-</li>
-<li>
-<p>每个主要分组(<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>最初对于语句顺序并没有样式要求,这意味着 IDE 经常会改变顺序,或者 IDE 开发者必须停用自动导入管理功能并手动维护导入语句。这样相当不方便。当提及 Java 样式时,开发者们喜欢的样式五花八门,最终针对 Android 简单归结为“选择一种兼容一致的排序方式”。因此我们选择了一种样式,更新了样式指南,并让 IDE 遵循该指南。我们希望 IDE 用户在编写代码时,系统对所有软件包的导入都符合此模式,无需再进行额外的工程处理。</p>
-<p>这种样式是按以下原则选取的:</p>
-<ul>
-<li>
-<p>用户希望先看到的导入往往位于顶部 (<code>android</code>)。</p>
-</li>
-<li>
-<p>用户最不希望看到的导入往往位于底部 (<code>java</code>)。</p>
-</li>
-<li>
-<p>用户可以轻松遵循的样式。</p>
-</li>
-<li>
-<p>IDE 可以遵循的样式。</p>
-</li>
-</ul>
-<p>将静态导入置于所有其他导入之上(与常规导入一样的排序方式)。</p>
-
-<h3 id="use-spaces-for-indentation">使用空格缩进</h3>
-<p>我们使用四 (4) 个空格来缩进块,而不要使用制表符。如果您有疑问,请与周围的代码保持一致。</p>
-<p>我们使用八 (8) 个空格来缩进自动换行,包括函数调用和赋值。正确示例如下:</p>
-<pre><code>Instrument i =
+</pre>
+
+ <h3 id="order-import-statements">为 import 语句排序</h3>
+
+ <p>import 语句的顺序为:</p>
+
+ <ol>
+ <li>导入 Android 包</li>
+ <li>导入第三方包(<code>com</code>、<code>junit</code>、<code>net</code>、<code>org</code>)</li>
+ <li>
+ <code>java</code> 和 <code>javax</code>
+ </li>
+ </ol>
+
+ <p>要完全符合 IDE 设置,导入顺序应为:</p>
+
+ <ul>
+ <li>每个分组内按字母顺序排序,其中大写字母开头的语句位于小写字母开头的语句前面(例如 Z 在 a 前面)。
+ </li>
+ <li>每个主要分组(<code>android</code>、<code>com</code>、<code>junit</code>、<code>net</code>、<code>org</code>、<code>java</code>、<code>javax</code>)之间用空行隔开。
+ </li>
+ </ul>
+
+ <p>最初对于语句顺序并没有样式要求,这意味着 IDE 经常会改变顺序,或者 IDE 开发者必须停用自动导入管理功能并手动维护导入语句。这样相当不方便。当提及 Java 样式时,开发者们喜欢的样式五花八门,最终针对 Android 简单归结为“选择一种兼容一致的排序方式”。因此我们选择了一种样式,更新了样式指南,并让 IDE 遵循该指南。我们希望 IDE 用户在编写代码时,使系统对所有软件包的导入都符合此模式,无需再进行额外的工程处理。
+ </p>
+
+ <p>这种样式是按以下原则选取的:</p>
+
+ <ul>
+ <li>用户希望先看到的导入往往位于顶部 (<code>android</code>)。
+ </li>
+ <li>用户最不希望看到的导入往往位于底部 (<code>java</code>)。
+ </li>
+ <li>用户可以轻松遵循的样式。
+ </li>
+ <li>IDE 可以遵循的样式。
+ </li>
+ </ul>
+
+ <p>将静态导入置于所有其他导入之上(与常规导入一样的排序方式)。
+ </p>
+
+ <h3 id="use-spaces-for-indentation">使用空格缩进</h3>
+
+ <p>我们使用四 (4) 个空格来缩进块,绝不要使用制表符。如果您有疑问,请与周围的代码保持一致。
+ </p>
+
+ <p>我们使用八 (8) 个空格来缩进自动换行,包括函数调用和赋值。
+ </p>
+
+ <p><span class="compare-better">推荐</span></p>
+
+<pre class="prettyprint">
+Instrument i =
someLongExpression(that, wouldNotFit, on, one, line);
-</code></pre>
-<p>错误示例如下:</p>
-<pre><code>Instrument i =
+</pre>
+
+ <p><span class="compare-worse">不推荐</span></p>
+
+<pre class="prettyprint">
+Instrument i =
someLongExpression(that, wouldNotFit, on, one, line);
-</code></pre>
-
-<h3 id="follow-field-naming-conventions">遵循字段命名规范</h3>
-<ul>
-<li>
-<p>非公开且非静态字段的名称以 m 开头。</p>
-</li>
-<li>
-<p>静态字段的名称以 s 开头。</p>
-</li>
-<li>
-<p>其他字段以小写字母开头。</p>
-</li>
-<li>
-<p>公开静态 final 字段(常量)为全部大写并用下划线连接 (ALL_CAPS_WITH_UNDERSCORES)。</p>
-</li>
-</ul>
-<p>例如:</p>
-<pre><code>public class MyClass {
+</pre>
+
+ <h3 id="follow-field-naming-conventions">遵循字段命名规范</h3>
+
+ <ul>
+ <li>非公共且非静态字段的名称以 m 开头。
+ </li>
+ <li>静态字段的名称以 s 开头。
+ </li>
+ <li>其他字段以小写字母开头。
+ </li>
+ <li>公共静态 final 字段(常量)要全部大写并用下划线连接 (ALL_CAPS_WITH_UNDERSCORES)。</li>
+ </ul>
+
+ <p>例如:</p>
+
+<pre class="prettyprint">
+public class MyClass {
public static final int SOME_CONSTANT = 42;
public int publicField;
private static MyClass sSingleton;
@@ -318,10 +411,14 @@ s.addAll(Arrays.asList(args));
private int mPrivate;
protected int mProtected;
}
-</code></pre>
-<h3 id="use-standard-brace-style">使用标准大括号样式</h3>
-<p>左大括号不单独占一行,与其前面的代码位于同一行:</p>
-<pre><code>class MyClass {
+</pre>
+
+ <h3 id="use-standard-brace-style">使用标准大括号样式</h3>
+
+ <p>左大括号不单独占一行,与其前面的代码位于同一行:</p>
+
+<pre class="prettyprint">
+class MyClass {
int func() {
if (something) {
// ...
@@ -332,133 +429,204 @@ s.addAll(Arrays.asList(args));
}
}
}
-</code></pre>
-<p>我们需要在条件语句周围添加大括号。例外情况:如果整个条件语句(条件和主体)适合放在同一行,那么您可以(但不是必须)将其全部放在一行上。例如,我们接受以下样式:</p>
-<pre><code>if (condition) {
+</pre>
+
+ <p>我们需要在条件语句周围添加大括号。例外情况:如果整个条件语句(条件和主体)适合放在同一行,那么您可以(但不是必须)将其全部放在一行上。例如,我们接受以下样式:</p>
+
+<pre class="prettyprint">
+if (condition) {
body();
}
-</code></pre>
-<p>同样也接受以下样式:</p>
-<pre><code>if (condition) body();
-</code></pre>
-<p>但不接受以下样式:</p>
-<pre><code>if (condition)
+</pre>
+
+ <p>同样也接受以下样式:</p>
+
+<pre class="prettyprint">if (condition) body();</pre>
+
+ <p>但不接受以下样式:</p>
+
+<pre class="prettyprint">
+if (condition)
body(); // bad!
-</code></pre>
-
-<h3 id="limit-line-length">限制代码行长度</h3>
-<p>您的代码中每一行文本的长度都应该不超过 100 个字符。虽然关于此规则存在很多争论,但最终决定仍是以 100 个字符为上限,不过存在以下例外情况:<em></em></p>
-<ul>
-<li>如果备注行包含长度超过 100 个字符的示例命令或文字网址,那么为了便于剪切和粘贴,该行可以超过 100 个字符。</li>
-<li>导入语句行可以超出此限制,因为用户很少会看到它们(这也简化了工具编写流程)。</li>
-</ul>
-
-<h3 id="use-standard-java-annotations">使用标准 Java 注释</h3>
-<p>注释应该位于同一语言元素的其他修饰符之前。简单的标记注释(例如 @Override)可以与语言元素列在同一行。如果有多个注释或参数化注释,则应各占一行并按字母顺序排列。</p>
-<p>Java 中 3 个预定义注释的 Android 标准做法如下:</p>
-<ul>
-<li><code>@Deprecated</code>:在不建议使用注释元素时,必须使用 @Deprecated 注释。如果您使用 @Deprecated 注释,则还必须为其添加 @deprecated Javadoc 标记,并且该标记应该指定一个替代实现方案。另外请注意,@Deprecated 方法应该仍然可以使用。<em></em>如果您看到带有 @deprecated Javadoc 标记的旧代码,请添加 @Deprecated 注释。
-</li>
-<li><code>@Override</code>:当某个方法替换了超类中的声明或实现时,必须使用 @Override 注释。例如,如果您使用 @inheritdocs Javadoc 标记,并且派生于某个类(而非接口),则必须再为方法添加 @Override 注释,说明该方法替换了父类的方法。</li>
-<li><code>@SuppressWarnings</code>:@SuppressWarnings 注释应该仅在无法消除警告的情况下使用。如果某个警告通过了“无法消除”测试,则必须使用 @SuppressWarnings 注释,以确保所有警告都会反映出代码中的实际问题。<em></em>
-<p>当需要 @SuppressWarnings 注释时,必须在前面添加一个 TODO 备注,用于说明“无法消除”情况。这通常会标识出是哪个违规类使用了糟糕的接口。例如:</p>
-<pre><code>// TODO: The third-party class com.third.useful.Utility.rotate() needs generics
+</pre>
+
+ <h3 id="limit-line-length">限制代码行长度</h3>
+
+ <p>您的代码中每一行文本的长度都不应超过 100 个字符。虽然关于此规则存在很多争论,但最终决定仍是以 100 个字符为上限,不过存在以下例外情况:<em></em></p>
+
+ <ul>
+ <li>如果备注行包含长度超过 100 个字符的示例命令或文字网址,那么为了便于剪切和粘贴,该行可以超过 100 个字符。
+ </li>
+ <li>导入语句行可以超出此限制,因为用户很少会看到它们(这也简化了工具编写流程)。
+ </li>
+ </ul>
+
+ <h3 id="use-standard-java-annotations">使用标准 Java 注释</h3>
+
+ <p>注释应该位于同一语言元素的其他修饰符之前。简单的标记注释(例如 @Override)可以与语言元素列在同一行。如果有多个注释或参数化注释,则应各占一行并按字母顺序排列。
+ </p>
+
+ <p>Java 中 3 个预定义注释的 Android 标准做法如下:</p>
+
+ <ul>
+ <li>
+ <code>@Deprecated</code>:在不建议使用注释元素时,必须使用 @Deprecated 注释。如果您使用 @Deprecated 注释,则还必须为其添加 @deprecated Javadoc 标记,并且该标记应该指定一个替代实现方案。另外请注意,@Deprecated 方法应该仍然可以使用。<em></em>如果您看到带有 @deprecated Javadoc 标记的旧代码,请添加 @Deprecated 注释。
+ </li>
+ <li>
+ <code>@Override</code>:当某个方法替换了超类中的声明或实现时,必须使用 @Override 注释。例如,如果您使用 @inheritdocs Javadoc 标记,并且派生于某个类(而非接口),则必须再为方法添加 @Override 注释,说明该方法替换了父类的方法。
+ </li>
+ <li>
+ <code>@SuppressWarnings</code>:@SuppressWarnings 注释应该仅在无法消除警告的情况下使用。如果某个警告通过了“无法消除”测试,则必须使用 @SuppressWarnings 注释,以确保所有警告都会反映出代码中的实际问题。<em></em>
+
+ <p>当需要 @SuppressWarnings 注释时,必须在前面添加一个 TODO 备注,用于说明“无法消除”情况。这通常会标识出是哪个违规类使用了糟糕的接口。例如:
+ </p>
+
+<pre class="prettyprint">
+// TODO: The third-party class com.third.useful.Utility.rotate() needs generics
@SuppressWarnings("generic-cast")
List&lt;String&gt; blix = Utility.rotate(blax);
-</code></pre>
-<p>当需要 @SuppressWarnings 注释时,您应该重构代码以分离出需要使用该注释的软件元素。</p>
-</li>
-</ul>
-
-<h3 id="treat-acronyms-as-words">将首字母缩写词视为字词</h3>
-<p>在为变量、方法和类命名时,请将首字母缩写词和缩写形式视为字词,使名称更具可读性:</p>
-<table>
-<thead>
-<tr>
-<th>良好</th>
-<th>不佳</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>由于 JDK 和 Android 代码库在首字母缩写词上非常不一致,几乎也不可能与周围的代码保持一致。因此,请务必将首字母缩写词视为字词。</p>
-
-<h3 id="use-todo-comments">使用 TODO 备注</h3>
-<p>为代码使用 TODO 备注是短期的临时解决方案,或者说足够好但并不完美。TODO 备注应该以全部大写的字符串 TODO 开头,后跟一个冒号:</p>
-<pre><code>// TODO: Remove this code after the UrlTable2 has been checked in.
-</code></pre>
-<p>和</p>
-<pre><code>// TODO: Change this to use a flag instead of a constant.
-</code></pre>
-<p>如果您的 TODO 采用“在未来的某个日期做某事”的形式,请确保在其中包含一个非常具体的日期(“在 2005 年 11 月前修复”)或者一个非常具体的事件(“在所有生产环境合成器都可处理 V7 协议后移除此代码”)。</p>
-
-<h3 id="log-sparingly">谨慎使用日志记录</h3>
-<p>虽然日志记录非常有必要,但对性能却有明显的负面影响,如果不能保持一定程度的简洁性,就会迅速失去其实用性。日志记录工具提供以下 5 种不同级别的日志记录:</p>
-<ul>
-<li><code>ERROR</code>:在出现极其严重的情况时使用。例如,某些事件会导致用户可见的后果,如果不明确删除某些数据、卸载应用、清除数据分区或重写整个设备(或更糟),则无法恢复。系统一直会记录此级别的日志。一般情况下,最好向统计信息收集服务器报告能够说明 ERROR 级别的一些日志记录情况的问题。</li>
-<li><code>WARNING</code>:在出现比较严重和意外的情况时使用。例如,某些事件会导致用户可见的后果,但是通过执行某些明确的操作(从等待或重启应用,一直到重新下载新版应用或重新启动设备)可在不丢失数据的情况下恢复。系统一直会记录此级别的日志。可以考虑向统计信息收集服务器报告能够说明 WARNING 级别的一些日志记录情况的问题。</li>
-<li><code>INFORMATIVE:</code>用于记录大多数人感兴趣的信息。例如,当检测到某种情况会造成广泛的影响时,尽管不一定是错误,系统也会记录下来。这种情况应该仅由一个被视为该领域最具权威性的模块来记录(避免由非权威组件重复记录)。系统一直会记录此级别的日志。
-</li>
-<li><code>DEBUG</code>:用于进一步记录设备上发生的可能与调查和调试意外行为相关的情况。您应该只记录收集有关组件的足够信息所需的信息。如果您的调试日志是主要日志,那么您可能应采用 VERBOSE 级别的日志记录。
-<p>系统会记录此级别的日志(即使在发布版本中),并且周围要有 <code>if (LOCAL_LOG)</code> 或 <code>if (LOCAL_LOGD)</code> 块,其中 <code>LOCAL_LOG[D]</code> 在您的类或子组件中定义。这样一来,系统有可能停用所有此类日志记录。因此,<code>if (LOCAL_LOG)</code> 块中不得包含有效逻辑。为日志编译的所有字符串也需要放在 <code>if
-(LOCAL_LOG)</code> 块中。如果日志记录调用会导致字符串编译在 <code>if (LOCAL_LOG)</code> 块之外发生,则不应将其重构为方法调用。</p>
-<p>有些代码仍然在使用 <code>if (localLOGV)</code>。虽然名称并不规范,但也可接受。</p>
-</li>
-<li><code>VERBOSE</code>:用于记录其他所有信息。系统仅针对调试版本记录此级别的日志,并且周围要有 <code>if (LOCAL_LOGV)</code> 块(或同类块),以便能够默认编译。所有字符串编译都将从发布版本中删除,并且需要在 <code>if (LOCAL_LOGV)</code> 块中显示。
-</li>
-</ul>
-<p><em>注意事项:</em> </p>
-<ul>
-<li>在指定模块中,除了 VERBOSE 级别之外,一个错误应该只报告一次(如果可能的话)。在模块内的单个函数调用链中,只有最内层的函数应当返回错误,同一模块中的调用者只能添加一些明显有助于隔离问题的日志记录。</li>
-<li>在一个模块链中,除了 VERBOSE 级别之外,当较低级别的模块检测到来自较高级别模块的无效数据时,低级模块应该只在 DEBUG 日志中记录该情况,并且仅当该日志提供的信息对调用者来说无法获取时进行记录。具体来说,当抛出异常(异常中应该会包含所有相关信息)或者所记录的所有信息都包含在错误代码中时,则不需要记录此类情况。这在框架和应用之间的交互中尤为重要,而且由第三方应用造成的情况经过框架妥善处理后,不应该触发高于 DEBUG 级别的日志记录。应该触发 INFORMATIVE 级别或更高级别日志记录的唯一情况是,模块或应用在其自身级别或更低级别检测到错误。</li>
-<li>当事实证明某些日志记录可能会发生多次时,最好实施一种频率限制机制来防止出现具有相同(或非常相似)信息的大量重复日志副本。</li>
-<li>失去网络连接属于完全在预期之内的常见情况,没必要记录下来。如果失去网络连接后导致在应用内出现某种后果,则应该记录为 DEBUG 或 VERBOSE 级别(具体取决于后果是否足够严重以及足够意外,足以记录在发布版本中)。</li>
-<li>如果在第三方应用可访问或代表第三方应用的文件系统上拥有完整的文件系统,则不应该记录高于 INFORMATIVE 级别的日志。</li>
-<li>来自任何不受信任来源(包括共享存储空间中的任何文件或通过任何网络连接获取的数据)的无效数据被视为符合预期,在被检测到无效时不应触发高于 DEBUG 级别的任何日志记录(甚至应该尽可能地限制日志记录)。</li>
-<li>请注意,在对 String 使用 <code>+</code> 运算符时,它会隐式创建一个具有默认缓冲区(大小为 16 个字符)的 <code>StringBuilder</code>,还可能会创建其他临时 String 对象。例如,显式创建 StringBuilder 并不比依赖默认的“+”运算符成本更高(实际上可能更高效)。请注意,即使没有读取日志信息,调用 <code>Log.v()</code> 的代码也会在发布版本中进行编译和执行,包括编译字符串。</li>
-<li>任何供其他人阅读并且在发布版本中提供的日志记录都应当简洁明了、合理易懂。这包括一直到 DEBUG 级别的所有日志记录。</li>
-<li>在内容有意义的情况下尽可能使日志记录在一行之内。一行长度在 80 到 100 个字符内是完全可以接受的,应当尽可能避免长度超过 130 或 160 个字符(包括标记的长度)。</li>
-<li>绝不能使用高于 VERBOSE 级别的日志记录报告成功事件。</li>
-<li>用于诊断难以重现的问题的临时日志记录应采用 DEBUG 或 VERBOSE 级别,并且应当包裹在 if 块中,以便在编译期间将其完全停用。</li>
-<li>请务必谨慎,避免在日志中泄露安全方面的信息。应避免提供个人信息,且必须避免提供有关受保护内容的信息。这在编写框架代码时尤为重要,因为事先无法轻易得知哪些是个人信息或受保护的内容,哪些不是。</li>
-<li>请勿使用 <code>System.out.println()</code>(或针对原生代码使用 <code>printf()</code>)。System.out 和 System.err 会重定向到 /dev/null,因此您的 print 语句不会产生可见效果。不过,为这些调用编译的所有字符串仍会得以执行。</li>
-<li><em>日志记录的黄金法则是,您的日志不一定要将其他日志排挤出缓冲区,正如其他日志不会这样对您的日志一样。</em></li>
-</ul>
-
-<h3 id="be-consistent">保持一致</h3>
-<p>总而言之:保持一致。如果您正在修改代码,请花几分钟时间看一下周围的代码并确定其样式。如果该代码在 if 语句周围使用空格,那么您也应该这样做。如果代码备注的周围是用星号组成的小方框,您也应该将备注放在这样的小方框内。</p>
-<p>制定样式规范的目的是整理出通用的编码词汇表,以便人们可以专注于您所说的内容,而不是您表达的方式。我们在此提出整体样式规则,让用户都知道这一词汇表,但局部样式也很重要。如果您添加到文件的代码看起来与其周围的现有代码明显不同,那么当读者读到此处时,这些代码会打乱他们的节奏。请尽量避免这种情况。</p>
+</pre>
+
+ <p>当需要 @SuppressWarnings 注释时,您应该重构代码以分离出需要使用该注释的软件元素。
+ </p>
+ </li>
+ </ul>
+
+ <h3 id="treat-acronyms-as-words">将首字母缩写词视为字词</h3>
+
+ <p>在为变量、方法和类命名时,请将首字母缩写词和缩写形式视为字词,使名称更具可读性:</p>
+
+ <table>
+ <thead>
+ <tr>
+ <th>良好</th>
+ <th>不佳</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>由于 JDK 和 Android 代码库在首字母缩写词上非常不一致,几乎也不可能与周围的代码保持一致。因此,请务必将首字母缩写词视为字词。
+ </p>
+
+ <h3 id="use-todo-comments">使用 TODO 备注</h3>
+
+ <p>为代码使用 TODO 备注是短期的临时解决方案,或者说足够好但并不完美。TODO 备注应包含全部大写的字符串 TODO,后跟一个冒号。</p>
+
+<pre class="prettyprint">
+// TODO: Remove this code after the UrlTable2 has been checked in.
+</pre>
+
+ <p>和</p>
+
+<pre class="prettyprint">
+// TODO: Change this to use a flag instead of a constant.
+</pre>
+
+ <p>如果您的 TODO 采用“在未来的某个日期做某事”的形式,请确保在其中包含一个非常具体的日期(“在 2005 年 11 月前修复”)或者一个非常具体的事件(“在所有生产环境合成器都可处理 V7 协议后移除此代码”)。
+ </p>
+
+ <h3 id="log-sparingly">谨慎使用日志记录</h3>
+
+ <p>虽然日志记录非常有必要,但对性能却有明显的负面影响,如果不能保持一定程度的简洁性,就会迅速失去其实用性。日志记录工具提供以下 5 种不同级别的日志记录:</p>
+
+ <ul>
+ <li>
+ <code>ERROR</code>:在出现极其严重的情况时使用。例如,某些事件会导致用户可见的后果,如果不明确删除某些数据、卸载应用、擦除数据分区或重写刷写整个设备(或更糟),则无法恢复。系统一直会记录此级别的日志。一般情况下,最好向统计信息收集服务器报告能够说明 ERROR 级别的一些日志记录情况的问题。
+ </li>
+ <li>
+ <code>WARNING</code>:在出现比较严重和意外的情况时使用。例如,某些事件会导致用户可见的后果,但是通过执行某些明确的操作(从等待或重启应用,一直到重新下载新版应用或重新启动设备)可在不丢失数据的情况下恢复。系统一直会记录此级别的日志。可以考虑向统计信息收集服务器报告能够说明 WARNING 级别的一些日志记录情况的问题。
+ </li>
+ <li>
+ <code>INFORMATIVE:</code>用于记录大多数人感兴趣的信息。例如,当检测到某种情况会造成广泛的影响时,尽管不一定是错误,系统也会记录下来。这种情况应该仅由一个被视为该领域最具权威性的模块来记录(避免由非权威组件重复记录)。系统一直会记录此级别的日志。
+ </li>
+ <li>
+ <code>DEBUG</code>:用于进一步记录设备上发生的可能与调查和调试意外行为相关的情况。您应该只记录收集有关组件的足够信息所需的信息。如果您的调试日志是主要日志,那么您可能应采用 VERBOSE 级别的日志记录。
+
+ <p>系统会记录此级别的日志(即使在发布版本中),并且周围要有 <code>if (LOCAL_LOG)</code> 或 <code>if
+ LOCAL_LOGD)</code> 块,其中 <code>LOCAL_LOG[D]</code> 在您的类或子组件中定义。这样一来,系统有可能停用所有此类日志记录。因此,<code>if (LOCAL_LOG)</code> 块中不得包含有效逻辑。为日志编译的所有字符串也需要放在 <code>if (LOCAL_LOG)</code> 块中。如果日志记录调用会导致字符串编译在 <code>if (LOCAL_LOG)</code> 块之外发生,则不应将其重构为方法调用。
+ </p>
+
+ <p>有些代码仍然在使用 <code>if (localLOGV)</code>。虽然名称并不规范,但也可接受。
+ </p>
+ </li>
+ <li>
+ <code>VERBOSE</code>:用于记录其他所有信息。系统仅针对调试版本记录此级别的日志,并且周围要有 <code>if (LOCAL_LOGV)</code> 块(或同类块),以便能够默认编译。所有字符串编译都将从发布版本中删除,并且需要在 <code>if (LOCAL_LOGV)</code> 块中显示。
+ </li>
+ </ul>
+
+ <h4="log-sparingly-notes">注意:<ul>
+ <li>在指定模块中,除了 VERBOSE 级别之外,一个错误应该只报告一次(如果可能的话)。在模块内的单个函数调用链中,只有最内层的函数应当返回错误,同一模块中的调用者只能添加一些明显有助于隔离问题的日志记录。
+ </li>
+ <li>在一个模块链中,除了 VERBOSE 级别之外,当较低级别的模块检测到来自较高级别模块的无效数据时,较低级别的模块应该只在 DEBUG 日志中记录该情况,并且仅当该日志提供的信息对调用者来说无法获取时进行记录。具体来说,当抛出异常(异常中应该会包含所有相关信息)或者所记录的所有信息都包含在错误代码中时,则不需要记录此类情况。这在框架和应用之间的交互中尤为重要,而且由第三方应用造成的情况经过框架妥善处理后,不应该触发高于 DEBUG 级别的日志记录。应该触发 INFORMATIVE 级别或更高级别日志记录的唯一情况是,模块或应用在其自身级别或更低级别检测到错误。
+ </li>
+ <li>当事实证明某些日志记录可能会发生多次时,最好实施一种频率限制机制来防止出现具有相同(或非常相似)信息的大量重复日志副本。
+ </li>
+ <li>失去网络连接属于完全在预期之内的常见情况,没必要记录下来。如果失去网络连接后导致在应用内出现某种后果,则应该记录为 DEBUG 或 VERBOSE 级别(具体取决于后果是否足够严重以及足够意外,足以记录在发布版本中)。
+ </li>
+ <li>如果在第三方应用可访问或代表第三方应用的文件系统上拥有完整的文件系统,则不应该记录高于 INFORMATIVE 级别的日志。</li>
+ <li>来自任何不受信任来源(包括共享存储空间中的任何文件或通过任何网络连接获取的数据)的无效数据被视为符合预期,在被检测到无效时不应触发高于 DEBUG 级别的任何日志记录(甚至应该尽可能地限制日志记录)。
+ </li>
+ <li>请注意,在对 String 使用 <code>+</code> 运算符时,它会隐式创建一个具有默认缓冲区(大小为 16 个字符)的 <code>StringBuilder</code>,还可能会创建其他临时 String 对象。例如,显式创建 StringBuilder 并不比依赖默认的“+”运算符成本更高(实际上可能更高效)。请注意,即使没有读取日志信息,调用 <code>Log.v()</code> 的代码也会在发布版本中进行编译和执行,包括编译字符串。
+ </li>
+ <li>任何供其他人阅读并且在发布版本中提供的日志记录都应当简洁明了、合理易懂。这包括一直到 DEBUG 级别的所有日志记录。
+ </li>
+ <li>在内容有意义的情况下尽可能使日志记录在一行之内。一行长度在 80 到 100 个字符内是完全可以接受的,应当尽可能避免长度超过 130 或 160 个字符(包括标记的长度)。
+ </li>
+ <li>绝不能使用高于 VERBOSE 级别的日志记录报告成功事件。</li>
+ <li>用于诊断难以重现的问题的临时日志记录应采用 DEBUG 或 VERBOSE 级别,并且应当包裹在 if 块中,以便在编译期间将其完全停用。
+ </li>
+ <li>请务必谨慎,避免在日志中泄露安全方面的信息。应避免提供个人信息,且必须避免提供有关受保护内容的信息。这在编写框架代码时尤为重要,因为事先无法轻易得知哪些是个人信息或受保护的内容,哪些不是。
+ </li>
+ <li>
+ 请勿使用 <code>System.out.println()</code>(或针对原生代码使用 <code>printf()</code>)。System.out 和 System.err 会重定向到 /dev/null,因此您的 print 语句不会产生可见效果。不过,为这些调用编译的所有字符串仍会得以执行。
+ </li>
+ <li>
+ <em>日志记录的黄金法则是,您的日志不一定要将其他日志排挤出缓冲区,正如其他日志不会这样对您的日志一样。</em>
+ </li>
+ </ul>
+
+ <h3 id="be-consistent">保持一致</h3>
+
+ <p>总而言之:保持一致。如果您正在修改代码,请花几分钟时间看一下周围的代码并确定其样式。如果该代码在 if 语句周围使用空格,那么您也应该这样做。如果代码备注的周围是用星号组成的小方框,您也应该将备注放在这样的小方框内。
+ </p>
+
+ <p>制定样式规范的目的是整理出通用的编码词汇表,以便人们可以专注于您所说的内容,而不是您表达的方式。我们在此提出整体样式规则,让用户都知道这一词汇表,但局部样式也很重要。如果您添加到文件的代码看起来与其周围的现有代码明显不同,那么当读者读到此处时,这些代码会打乱他们的节奏。请尽量避免这种情况。
+ </p>
<h2 id="javatests-style-rules">Javatests 样式规则</h2>
-<p>请遵循测试方法的命名规范,并使用下划线将被测试的内容与被测试的具体情况区分开来。这种样式可让您更容易看出正在测试的情况。例如:</p>
-<pre><code>testMethod_specificCase1 testMethod_specificCase2
+
+ <p>请遵循测试方法的命名规范,并使用下划线将被测试的内容与被测试的具体情况区分开来。这种样式可让您更容易看出正在测试的情况。例如:</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> \ No newline at end of file
+</h4="log-sparingly-notes"></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 e8ebb997..34e0c618 100644
--- a/zh-cn/setup/contribute/read-bug-reports.html
+++ b/zh-cn/setup/contribute/read-bug-reports.html
@@ -267,7 +267,7 @@ DALVIK THREADS (12):
</section>
<h2 id="activities">Activity</h2>
-<p><a href="http://developer.android.com/guide/components/activities.html">Activity</a> 是一种应用组件,可为用户提供一个可交互的屏幕,用来执行某些操作(例如拨打电话号码、拍照、发送电子邮件等)。从错误报告的角度来看,<a href="http://developer.android.com/reference/android/app/Activity.html">Activity</a> 是用户可以执行的一项明确具体的操作,这使得查找在崩溃期间处于聚焦状态的 Activity 变得非常重要。Activity 通过 ActivityManager 运行进程,因此找出指定 Activity 的所有进程停止和启动事件也有助于进行问题排查。</p>
+<p><a href="http://developer.android.com/guide/components/activities.html">Activity</a> 是一种应用组件,可为用户提供一个可交互的屏幕,用来执行某些操作(例如拨号、拍照、发送电子邮件等)。从错误报告的角度来看,<a href="http://developer.android.com/reference/android/app/Activity.html">Activity</a> 是用户可以执行的一项明确具体的操作,这使得查找在崩溃期间处于聚焦状态的 Activity 变得非常重要。Activity 通过 ActivityManager 运行进程,因此找出指定 Activity 的所有进程停止和启动事件也有助于进行问题排查。</p>
<h3 id="history-focused-activities">查看处于聚焦状态的 Activity</h3>
<p>要查看记录的处于聚焦状态的 Activity,请搜索 <code>am_focused_activity</code>。</p>
@@ -744,7 +744,7 @@ Packages:
</section>
<h2 id="processes">进程</h2>
-<p>错误报告中含有大量进程数据,其中包括启动和停止时间、运行时时长、相关服务、<code>oom_adj</code> 得分等。要详细了解 Android 如何管理进程,请参阅<a href="http://developer.android.com/guide/components/processes-and-threads.html">进程和线程</a>。</p>
+<p>错误报告中含有大量进程数据,包括启动和停止时间、运行时时长、相关服务、<code>oom_adj</code> 得分等。要详细了解 Android 如何管理进程,请参阅<a href="http://developer.android.com/guide/components/processes-and-threads.html">进程和线程</a>。</p>
<h3 id="process-runtime">确定进程运行时</h3>
<p><code>procstats</code> 部分包含有关进程及相关服务已运行时长的完整统计信息。要快速获得便于用户阅读的摘要,请搜索 <code>AGGREGATED OVER</code> 以查看最近 3 个小时或 24 个小时的数据,然后搜索 <code>Summary:</code> 以查看进程列表、这些进程已以各种优先级运行的时长,以及它们使用 RAM 的情况(格式为“最小-平均-最大 PSS”/“最小-平均-最大 USS”)。</p>
diff --git a/zh-cn/setup/develop/64-bit-builds.html b/zh-cn/setup/develop/64-bit-builds.html
index 0c967e11..46fc03f0 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 1366b4ed..01f13e1f 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/build-numbers.html b/zh-cn/setup/start/build-numbers.html
index 745c0d84..49683545 100644
--- a/zh-cn/setup/start/build-numbers.html
+++ b/zh-cn/setup/start/build-numbers.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>
@@ -209,6 +209,18 @@
</thead>
<tbody>
<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</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>
@@ -307,6 +319,18 @@
<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/zh-cn/setup/start/p-release-notes.html b/zh-cn/setup/start/p-release-notes.html
index 8a7cab6e..dedb7cad 100644
--- a/zh-cn/setup/start/p-release-notes.html
+++ b/zh-cn/setup/start/p-release-notes.html
@@ -346,7 +346,7 @@
<h4 id="vendor_init">Vendor_init</h4>
-<p><a href="/security/selinux/vendor-init">供应商初始化</a>中介绍了相关更新,这些更新旨在弥补通过使用单独的 SELinux 域拆分的 Treble system/vendor 分区(以便利用供应商专属权限运行 <code>/vendor</code> 命令)中存在的 init 进程访问漏洞。</p>
+<p><a href="/security/selinux/vendor-init">供应商 init</a> 中介绍了相关更新,这些更新旨在使用单独的 SELinux 域,利用供应商专属权限运行 <code>/vendor</code> 命令来填补 Treble 系统/供应商拆分中存在的 init 进程访问漏洞。</p>
<h4 id="system_properties">系统属性</h4>
@@ -528,11 +528,11 @@
<h3 id="gnss_satellite_selection">GNSS 卫星选择</h3>
-<p>使用新的全球导航卫星系统 (GNSS) HAL(1.1 版及更高版本)时,Android 框架会监控 Android 设置。合作伙伴可以通过 Google Play 服务或其他系统更新来这些设置。这些设置可告知 GNSS HAL 是否不应使用某些 GNSS 卫星。在持续出现 GNSS 卫星或星群错误时,或者为了更快地响应使用不同的时制和外部事件(例如闰秒和/或日或周数滚动增加)混合星群时可能发生的 GNSS HAL 实现问题时,这些设置非常有用。</p>
+<p>使用新的全球导航卫星系统 (GNSS) HAL(1.1 版及更高版本)时,Android 框架会监控 Android 设置。合作伙伴可以通过 Google Play 服务或其他系统更新来更改这些设置。这些设置可告知 GNSS HAL 是否不应使用某些 GNSS 卫星。在持续出现 GNSS 卫星或星群错误时,或者为了更快地响应使用不同的时制和外部事件(例如闰秒和/或日或周数滚动增加)混合星群时可能发生的 GNSS HAL 实现问题时,这些设置非常有用。</p>
<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,7 +550,7 @@
<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>
@@ -577,7 +577,7 @@
<li><p><strong>SystemBackupAgent</strong>:在此版本及更高版本的 Android 中,<code>restoreAnyVersion = false</code>。不支持从更高版本的 API 进行恢复。</p></li>
<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>
diff --git a/zh-cn/setup/start/site-updates.html b/zh-cn/setup/start/site-updates.html
index 6a5ede13..db00447b 100644
--- a/zh-cn/setup/start/site-updates.html
+++ b/zh-cn/setup/start/site-updates.html
@@ -39,22 +39,22 @@
<h3 id="set-up">“设置”(Setup) 更名为“设置”(Set up)</h3>
<p>主“设置”(Setup) 标签的名称略微做了一点改动,改成了<strong>设置</strong> (Set up),以便与用于后续主要标签的动词保持一致。<em></em>
-<strong>下载</strong>和<strong>编译</strong>内容已拆分为不同的子标签,以便于访问其中包含的页面。“开发”子部分已更名为<strong>创建</strong>子标签,以避免与新增的顶级同名<strong>开发</strong>标签混淆。<em></em></p>
+<strong>下载</strong>和<strong>编译</strong>内容已拆分为不同的子标签,以便于访问其中包含的页面。“开发”子部分已更名为<strong>创建</strong>子标签,以避免与新增的顶级同名标签<strong>开发</strong>相混淆。<em></em></p>
-<p>之前在“兼容性”&gt;“与我们联系”页面上提供的信息现已合并到主<strong>设置 &gt; 联系方式(社区)</strong>列表中。<em></em>
+<p>以前在“兼容性”&gt;“与我们联系”页面上提供的信息现已合并到主<strong>设置 &gt; 联系方式(社区)</strong>列表中。<em></em>
</p>
<h3 id="design">“兼容性”更名为“设计”</h3>
-<p>以前在“兼容性”顶级标签中提供的信息现位于<strong>设计</strong>下。<em></em>要大致了解该计划以及指向新的《Android 兼容性定义文档》(CDD) 的链接,请参阅<strong>兼容性</strong>子标签。<em></em></p>
+<p>以前在“兼容性”顶级标签中提供的信息现位于<strong>设计</strong>下。<em></em>要大致了解该计划以及新版《Android 兼容性定义文档》(CDD) 的链接,请参阅<strong>兼容性</strong>子标签。<em></em></p>
-<p>在相关更改中,关于《Android 兼容性测试套件》(CTS) 的说明以及常规的调试信息已移至新的<strong>测试</strong>子标签。<em></em><strong>显示</strong>和<strong>设置</strong>菜单指南已转移到专用子标签。</p>
+<p>在相关更改中,将关于《Android 兼容性测试套件》(CTS) 的说明以及常规的调试信息移到了新的<strong>测试</strong>子标签中。<em></em><strong>显示</strong>和<strong>设置</strong>菜单指南已转移到专用子标签。</p>
<h3 id="develop">“移植”更名为“开发”</h3>
-<p>“移植”标签已更名为<strong>开发</strong>,以更好地体现此标签中包含的说明。<em></em>本文档主要侧重于实现各个接口,可帮助您编写将设备连接到 Android 操作系统所需的驱动程序。</p>
+<p>为了更好地体现标签中包含的说明,已将“移植”标签更名为<strong>开发</strong>。<em></em>本文档主要侧重于实现各个接口,可帮助您编写将设备连接到 Android 操作系统所需的驱动程序。</p>
-<p>因此,描述总体 HIDL 格式的<strong>架构</strong>部分已移至<strong>设计</strong>标签,以便在开发周期早期的规划阶段予以考虑。<em></em><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>“微调”标签已更名为<strong>配置</strong>,因为除了自定义和优化步骤之外,还会包含其他信息。<em></em>现在,您可以在<strong>企业</strong>下方找到以前的“设备管理”子部分。<em></em>ART 和 Dalvik 内容位于 <strong>ART</strong> 下方,无线下载 (OTA) 更新信息位于<strong>更新</strong>下方。<em></em><em></em></p>
+<p>“微调”标签已更名为<strong>配置</strong>,因为除了自定义和优化步骤之外,还会包含其他信息。<em></em>现在,您可以在<strong>企业</strong>下方找到以前的“设备管理”子部分,<em></em>在 <strong>ART</strong> 下方找到 ART 和 Dalvik 内容,在<strong>更新</strong>下方找到无线下载 (OTA) 更新信息。<em></em><em></em></p>
<h2 id="Dec-2017">2017 年 12 月</h2>
<p>
@@ -127,8 +127,7 @@ Android 8.1 中的 WLAN 感知功能支持多个设备直接通过 WLAN 进行
</p>
<h2 id="Nov-2017">2017 年 11 月</h2>
-<p>
-“源代码”部分已更名为<a href="/setup"><em>设置</em></a>。<em></em>我们设置了重定向,以确保旧网址仍可正常运行。
+<p>“源代码”部分已更名为<a href="/setup"><em>设置</em></a>。<em></em>我们设置了重定向,以确保旧网址仍可正常运行。
</p>
<h2 id="Sept-2017">2017 年 9 月</h2>
@@ -173,9 +172,8 @@ SquashFS 是一个面向 Linux 且经过压缩的只读文件系统,适合在
<h4>模糊测试</h4>
<p>
-AOSP 提供了用于测试 <a href="/devices/tech/dalvik/">Android Runtime (ART)</a> 基础架构的全新模糊测试套件。全新的工具包 JFuzz 以及经过改进的 DexFuzz 现在可以直接在 AOSP 中获得,并且随附了相关文档。请参阅:
- <a href="https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md">https://android.googlesource.com/platform/art/+/master/tools/jfuzz/README.md</a>
- <a href="https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README">https://android.googlesource.com/platform/art/+/master/tools/dexfuzz/README</a>
+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>
无需执行任何操作,即可实现或使用这些新工具。必要时您可以对这些工具进行更改,就像您可以更改运行时/编译器一样。
@@ -337,8 +335,7 @@ Android 8.0 包含一个新的清单属性 <a href="https://developer.android.co
</p>
<ul>
<li>如果 Activity 或应用的<a href="https://developer.android.com/guide/topics/ui/multi-window.html#configuring" class="external">大小可调整</a>,则允许 Activity 填充屏幕。
- </li><li>
-如果 Activity 或应用的大小不可调整,或者平台会强制调整 Activity 的大小,则允许应用窗口根据 <a href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio" class="external">maxAspectRatio</a> 值,以不超过此值的宽高比显示。
+ </li><li>如果 Activity 或应用的大小不可调整,或者平台会强制调整 Activity 的大小,则允许应用窗口根据 <a href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio" class="external">maxAspectRatio</a> 值,以不超过此值的宽高比显示。
<ul>
<li>对于在搭载 Android 8.0 的设备上运行的应用,默认值为当前设备的宽高比。</li>
<li>对于在搭载较低版本 Android 的设备上运行的应用,默认值为 16:9。</li>
@@ -380,8 +377,7 @@ Android 8.0 中的一个新 API 使应用开发者可以从应用内添加快捷
<p>
他们必须确保自己的代码不含未定义的行为(通过使用 UBSan 等工具),以使之不易受到新工具链带来的问题的影响。所有工具链都始终在 AOSP 中直接更新。远远在 OC 发布之前,所有功能便都已可用,因此 OEM 应已遵循相关规定。
</p>
-<p>
-如需常规说明,请参阅<a href="https://llvm.org/" class="external">公开的 Clang/LLVM</a> 文档;如需 Android 专属指南,请参阅 AOSP 中的 <a href="https://android.googlesource.com/platform/external/clang/+/master/ReadmeAndroid.md" class="external">Android Clang/LLVM</a> 文档集。最后,请加入 <a href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a> 公开论坛,以获取帮助和参与开发。
+<p>如需常规说明,请参阅<a href="https://llvm.org/" class="external">公开的 Clang/LLVM</a> 文档;如需 Android 专属指南,请参阅 AOSP 中的 <a href="https://android.googlesource.com/platform/external/clang/+/master/ReadmeAndroid.md" class="external">Android Clang/LLVM</a> 文档集。最后,请加入 <a href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a> 公开论坛,以获取帮助和参与开发。
</p>
<h3 id="drm-kms">DRM/KMS</h3>
@@ -441,12 +437,11 @@ cts-tradefed run cts -m CtsLibcoreOkHttpTestCases</pre>
<p>
<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>中所示)。
+<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>中所示)。
</p><h3 id="reference">参考资料更新</h3>
<p>
-顶级导航菜单中添加了<a href="/reference/">参考资料</a>部分。它属于 <a href="/devices/architecture/treble">Treble</a> 版本的一部分,其中添加了 <a href="/reference/hidl/">HIDL 参考资料</a>部分。<a href="/reference/tradefed/">Trade Federation</a> 和<a href="/reference/hal/">旧版 HAL</a> 参考文档已更新。
+顶级导航菜单中添加了<a href="/reference/">参考资料</a>部分。在 <a href="/devices/architecture/treble">Treble</a> 版本中,添加了 <a href="/reference/hidl/">HIDL 参考资料</a>部分。更新了 <a href="/reference/tradefed/">Trade Federation</a> 和<a href="/reference/hal/">旧版 HAL</a> 参考文档。
</p>
<h3 id="settings-menu">“设置”菜单</h3>
@@ -496,8 +491,7 @@ Android 8.0 利用 EXT4 文件系统的“配额”支持,近乎即时地提
<figcaption><strong>图 1</strong> 网站的新移动视图</figcaption>
<h3 id="top-tabs">新的顶级标签</h3>
-<p>
-<em></em>之前的“设备”标签已更名为<a href="/devices/">移植</a>,同时之前的“核心技术”子标签已更名为<em></em><a href="/devices/tech/">微调</a>,并移到了网站顶部,以便更好地显示给用户。
+<p>之前的“设备”标签已更名为<a href="/devices/">移植</a>,同时之前的“核心技术”子标签已更名为<a href="/devices/tech/">微调</a>,并移到了网站顶部,以便更好地显示给用户。<em></em><em></em>
</p>
<h3 id="security-forefront">“安全性”标签排在了前列</h3>
@@ -511,8 +505,7 @@ Android 8.0 利用 EXT4 文件系统的“配额”支持,近乎即时地提
</p>
<h3 id="code-links">每页都有的代码链接</h3>
-<p>
-只需点击每个页面右上角的<strong>转到源代码</strong>按钮,即可访问 <a href="https://android.googlesource.com/" class="external">AOSP 代码库</a>。
+<p>只需点击每个页面右上角的<strong>转到源代码</strong>按钮,即可访问 <a href="https://android.googlesource.com/" class="external">AOSP 代码库</a>。
</p>
<h3 id="comprehensive-footers">包罗广泛的页脚</h3>
diff --git a/zh-tw/security/bulletin/2018-08-01.html b/zh-tw/security/bulletin/2018-08-01.html
index 9be6ebf5..56053595 100644
--- a/zh-tw/security/bulletin/2018-08-01.html
+++ b/zh-tw/security/bulletin/2018-08-01.html
@@ -49,7 +49,7 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
下列各節針對 2018-08-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>
+<p>本節中最嚴重的漏洞可能會讓本機惡意應用程式得以規避使用者互動要求,藉此取得其他權限。</p>
<table>
<colgroup><col width="21%" />
@@ -323,7 +323,7 @@ QC-CR#2133033</a></td>
QC-CR#856388</a></td>
<td>ID</td>
<td>高</td>
- <td>影片</td>
+ <td>視訊</td>
</tr>
<tr>
<td>CVE-2018-11260</td>
@@ -604,7 +604,7 @@ QC-CR#2204872</a></td>
<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>下載這些驅動程式。
+在「參考資料」<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>
diff --git a/zh-tw/security/bulletin/2018-09-01.html b/zh-tw/security/bulletin/2018-09-01.html
index 37449f75..13e9302d 100644
--- a/zh-tw/security/bulletin/2018-09-01.html
+++ b/zh-tw/security/bulletin/2018-09-01.html
@@ -719,7 +719,7 @@ QC-CR#2119840<a href="#asterisk">*</a></td>
<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>下載這些驅動程式。
+在「參考資料」<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>
diff --git a/zh-tw/security/bulletin/2018-10-01.html b/zh-tw/security/bulletin/2018-10-01.html
index 57534330..f301d1bd 100644
--- a/zh-tw/security/bulletin/2018-10-01.html
+++ b/zh-tw/security/bulletin/2018-10-01.html
@@ -296,7 +296,7 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
<td>A-111081202<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>高</td>
- <td>Fork</td>
+ <td>分支</td>
</tr>
<tr>
<td>CVE-2018-9514</td>
@@ -320,7 +320,7 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
<p>請參閱<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。</p>
<ul>
<li>2018-10-01 之後的安全性修補程式等級已解決了所有與 2018-10-01 安全性修補程式等級相關的問題。</li>
-<li>2018-10-05 之後的安全修補等級完全解決了與 2018-10-05 安全性修補程式等級及所有先前修補等級相關的問題。</li>
+<li>2018-10-05 之後的安全性修補程式等級完全解決了與 2018-10-05 安全性修補程式等級及所有先前修補程式等級相關的問題。</li>
</ul>
<p>提供這些更新的裝置製造商應將修補程式字串等級設定為:</p>
<ul>
@@ -410,7 +410,7 @@ Android 的合作夥伴至少會提前一個月收到公告中所有問題的相
<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>下載這些驅動程式。
+在「參考資料」<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>
diff --git a/zh-tw/security/bulletin/2018-11-01.html b/zh-tw/security/bulletin/2018-11-01.html
index 8b36c8e7..a88cafd1 100644
--- a/zh-tw/security/bulletin/2018-11-01.html
+++ b/zh-tw/security/bulletin/2018-11-01.html
@@ -502,7 +502,7 @@ QC-CR#2090797</a></td>
<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>下載這些驅動程式。
+在「參考資料」<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>
diff --git a/zh-tw/security/bulletin/2018-12-01.html b/zh-tw/security/bulletin/2018-12-01.html
index ccf5c113..20611118 100644
--- a/zh-tw/security/bulletin/2018-12-01.html
+++ b/zh-tw/security/bulletin/2018-12-01.html
@@ -19,12 +19,13 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<p><em>發佈日期:2018 年 12 月 3 日</em></p>
+<p><em>發佈日期:2018 年 12 月 3 日 | 更新日期:2018 年 12 月 5 日</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>
+Android 的合作夥伴至少會提前一個月收到公告中所有問題的相關通知。這些問題的原始碼修補程式已發佈到 Android 開放原始碼計劃 (AOSP) 存放區中,且公告中亦提供相關連結。此外,本公告也提供 Android 開放原始碼計劃以外的修補程式連結。</p>
<p>
在這些問題中,最嚴重的就是媒體架構中嚴重程度「最高」的安全性漏洞。遠端攻擊者可利用這類漏洞,在獲得授權的程序環境內透過特製檔案執行任何程式碼。<a href="/security/overview/updates-resources.html#severity">嚴重程度評定標準</a>是假設平台與服務的因應防護措施基於開發作業的需求而被關閉,或是遭到有心人士破解,然後推算當有人惡意運用漏洞時,使用者的裝置會受到多大的影響,據此評定漏洞的嚴重程度。
</p>
@@ -67,14 +68,14 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
</tr>
<tr>
<td>CVE-2018-9547</td>
- <td>A-114223584</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/native/+/e6eb42cb2e57747e52e488d54da314bc6eabb546" class="external">A-114223584</a></td>
<td>EoP</td>
<td>高</td>
<td>8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9548</td>
- <td>A-112555574</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/c97efaa05124e020d7cc8c6e08be9c3b55ac4ea7" class="external">A-112555574</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -99,49 +100,49 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
</tr>
<tr>
<td>CVE-2018-9549</td>
- <td>A-112160868</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/6f6d220a3255e7cbd31bcd1220ffb83af0a2779a" class="external">A-112160868</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-9550</td>
- <td>A-112660981</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/ce97e7d55e1f69683b5bc8f19cc8da8c85bc2cd4" class="external">A-112660981</a></td>
<td>RCE</td>
<td>最高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9551</td>
- <td>A-112891548</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/0e5db9fee912d367a572b88f0d86f9a33006fa29" class="external">A-112891548</a></td>
<td>RCE</td>
<td>最高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9552</td>
- <td>A-113260892</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/d15da6f960dd2d5b77faced4e799f8bf53785d9c" class="external">A-113260892</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-9553</td>
- <td>A-116615297</td>
+ <td><a href="https://android.googlesource.com/platform/external/libvpx/+/c4c92b2c6ed72a78ea430c3cdce564ec11866a24" class="external">A-116615297</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-9538</td>
- <td>A-112181526</td>
+ <td><a href="https://android.googlesource.com/platform/external/v4l2_codec2/+/0a7d252adb774338c2c69a17651aceca3aec1b23" class="external">A-112181526</a></td>
<td>EoP</td>
<td>高</td>
<td>8.1、9</td>
</tr>
<tr>
<td>CVE-2018-9554</td>
- <td>A-114770654</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/16f9b39c69626093ae9225b458739707c9a3b4e7" class="external">A-114770654</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1</td>
@@ -166,56 +167,56 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
</tr>
<tr>
<td>CVE-2018-9555</td>
- <td>A-112321180</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/02fc52878d8dba16b860fbdf415b6e4425922b2c" class="external">A-112321180</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-9556</td>
- <td>A-113118184</td>
+ <td><a href="https://android.googlesource.com/platform/system/update_engine/+/840a7eae5a6d8250490e8ea430193531f0c4ccd6" class="external">A-113118184</a></td>
<td>RCE</td>
<td>最高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9557</td>
- <td>A-35385357</td>
+ <td>A-35385357<a href="#asterisk">*</a></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><a href="https://android.googlesource.com/platform/system/nfc/+/ce7fcb95d5111ad8c554e7ec8ff02f9b40196cdc" class="external">A-112161557</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-9559</td>
- <td>A-112731440</td>
+ <td><a href="https://android.googlesource.com/platform/system/vold/+/c2e37da22aadcdb4a5b7f61a61f824ab8e9b8af9" class="external">A-112731440</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-9560</td>
- <td>A-79946737</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/9009da96e00434501d9398bbfbc636902c757632" class="external">A-79946737</a></td>
<td>EoP</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9562</td>
- <td>A-113164621</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/1bb14c41a72978c6075c5753a8301ddcbb10d409" class="external">A-113164621</a></td>
<td>ID</td>
<td>高</td>
<td>9</td>
</tr>
<tr>
<td>CVE-2018-9566</td>
- <td>A-74249842</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/314336a22d781f54ed7394645a50f74d6743267d" class="external">A-74249842</a></td>
<td>ID</td>
<td>高</td>
<td>7.0、7.1.1、7.1.2、8.0、8.1、9</td>
@@ -246,7 +247,7 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
</tr>
<tr>
<td>CVE-2018-9565</td>
- <td>A-16680558</td>
+ <td>A-16680558<a href="#asterisk">*</a></td>
<td>ID</td>
<td>高</td>
<td>OMA-DM</td>
@@ -272,7 +273,7 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
</tr>
<tr>
<td>CVE-2018-9567</td>
- <td>A-65543936</td>
+ <td>A-65543936<a href="#asterisk">*</a></td>
<td>EoP</td>
<td>高</td>
<td>系統啟動載入程式</td>
@@ -302,7 +303,7 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
<a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10840">上游程式庫核心</a></td>
<td>EoP</td>
<td>高</td>
- <td>ext4 filesystem</td>
+ <td>ext4 檔案系統</td>
</tr>
<tr>
<td>CVE-2018-9568</td>
@@ -676,7 +677,7 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
<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>下載這些驅動程式。
+在「參考資料」<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>
@@ -701,6 +702,11 @@ Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,
<td>2018 年 12 月 3 日</td>
<td>發佈公告</td>
</tr>
+ <tr>
+ <td>1.1</td>
+ <td>2018 年 12 月 5 日</td>
+ <td>修訂公告內容 (加入 Android 開放原始碼計劃連結)。</td>
+ </tr>
</tbody></table>
</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/2018.html b/zh-tw/security/bulletin/2018.html
index 4c0a5c76..df74caec 100644
--- a/zh-tw/security/bulletin/2018.html
+++ b/zh-tw/security/bulletin/2018.html
@@ -33,6 +33,34 @@
<th>發佈日期</th>
<th>安全性修補程式等級</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">2018 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 11 月 5 日</td>
+ <td>2018-11-01<br />
+ 2018-11-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-tw/security/bulletin/2019-01-01.html b/zh-tw/security/bulletin/2019-01-01.html
new file mode 100644
index 00000000..bd4d9dfe
--- /dev/null
+++ b/zh-tw/security/bulletin/2019-01-01.html
@@ -0,0 +1,502 @@
+<html devsite><head>
+ <title>Android 安全性公告 - 2019 年 1 月</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>發佈日期:2019 年 1 月 7 日 | 更新日期:2019 年 1 月 7 日</em></p>
+
+<p>
+Android 安全性公告列舉對 Android 裝置造成影響的安全性漏洞,並說明各項相關細節。2019-01-05 之後的安全性修補程式等級已解決了這些問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
+</p>
+<p>
+Android 的合作夥伴至少會提前一個月收到公告中所有問題的相關通知。這些問題的原始碼修補程式已發佈到 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/2019-01-01">2019 年 1 月 Pixel 更新公告</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="2019-01-01-details">2019-01-01 安全性修補程式等級 - 資安漏洞詳情</h2>
+<p>
+下列各節針對 2019-01-01 安全性修補程式等級適用的各項安全性漏洞提供了詳細資訊,我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了問題說明和一份 CVE 資訊表,其中包括了相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>,以及更新的 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-9582</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/PackageInstaller/+/ab39f6cb7afc48584da3c59d8e2a5e1ef121aafb" class="external">A-112031362</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>8.0、8.1、9</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-9583</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/94d718eb61cbb1e6fd08288039d7e62913735c6c" class="external">A-112860487</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-9584</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/5f0f0cc6a10f710dea7e1ddd4ba19acb877a7081" class="external">A-114047681</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-9585</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/71764b791f262491e3f628c14ce3949863dd6058" class="external">A-117554809</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-9586</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/ManagedProvisioning/+/fe4c71a7a3a8a2184b3096203aa9240e01af621e" class="external">A-116754444</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-9587</td>
+ <td><a href="https://android.googlesource.com/platform/packages/apps/Contacts/+/66abad90093df5231f24654a64cf90d9b70ab228" class="external">A-113597344</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-9588</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/bf9ff0c5215861ab673e211cd06e009f3157aab2" class="external">A-111450156</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-9589</td>
+ <td><a href="https://android.googlesource.com/platform/external/wpa_supplicant_8/+/38af82c5ca615f56febcebde714c7cba653fd5ec" class="external">A-111893132</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-9590</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/297598898683b81e921474e6e74c0ddaedbb8bb5" class="external">A-115900043</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-9591</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e1685cfa533db4155a447c405d7065cc17af2ae9" class="external">A-116108738</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-9592</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/8679463ade0ee029ef826ed4fb7a847e2a981375" class="external">A-116319076</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-9593</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/8bc53213110fed8360d3e212dd61fbc0218e0b1e" class="external">A-116722267</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-9594</td>
+ <td><a href="https://android.googlesource.com/platform/system/nfc/+/494cd888eb2c5cfda05584dd598815c9268ff3c2" class="external">A-116791157</a></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="2019-01-05-details">2019-01-05 安全性修補程式等級 - 資安漏洞詳情</h2>
+
+<p>
+下列各節針對 2019-01-05 安全性修補程式等級適用的各項安全性漏洞提供了詳細資訊。我們依照資安問題本身所影響的元件將各項漏洞分門別類,另外也附上了一些詳細資料,例如 CVE、相關參考資料、<a href="#type">漏洞類型</a>、<a href="/security/overview/updates-resources.html#severity">嚴重程度</a>、元件 (在適用情況下),和更新的 Android 開放原始碼計劃版本 (在適用情況下)。假如相關錯誤有公開變更,該錯誤 ID 會連結到相對應的變更 (例如 Android 開放原始碼計劃變更清單)。如果單一錯誤有多項相關變更,您可以透過該錯誤 ID 後面的編號連結開啟額外的參考資料。</p>
+
+<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-10876</td>
+ <td>A-116406122<br />
+ <a href="http://patchwork.ozlabs.org/patch/929239/">上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 檔案系統</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10880</td>
+ <td>A-116406509<br />
+ <a href="http://patchwork.ozlabs.org/patch/930639/">上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 檔案系統</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10882</td>
+ <td>A-116406626<br />
+ <a href="https://bugzilla.kernel.org/show_bug.cgi?id=200069">上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>ext4 檔案系統</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13405</td>
+ <td>A-113452403<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=0fa3ecd87848c9c93c2c828ef4c3a8ca36ce46c7">
+上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>檔案系統</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-18281</td>
+ <td>A-118836219<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb66ae030829605d61fbef1909ce310e29f78821">
+上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>TLB</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-17182</td>
+ <td>A-117280327<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a9cdebdcc17e426fb5287e4a82db1dfe86339b2">
+上游程式庫核心</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>記憶體管理程式</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-10877</td>
+ <td>A-116406625<br />
+ <a href="https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2018-10877">上游程式庫核心</a></td>
+ <td>ID</td>
+ <td>高</td>
+ <td>ext4 檔案系統</td>
+ </tr>
+</tbody></table>
+
+<h3 id="nvidia-components">NVIDIA 元件</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-6241</td>
+ <td>A-62540032<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>高</td>
+ <td>Dragon BSP</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-11962</td>
+ <td>A-117118292<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/frameworks/av/commit?id=217604d69ce4dcf7c6433a9eafdfceefe25e8fd3">
+QC-CR#2267916</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>音訊</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-12014</td>
+ <td>A-117118062<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.9/commit/?id=545e03e8420164506457367959ccf01bd055e1aa">
+QC-CR#2278688</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>Data HLOS - LNX</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13889</td>
+ <td>A-117118677<br />
+ <a href="https://source.codeaurora.org/quic/le/platform/hardware/qcom/gps/commit/?id=03885c6896a88d993dd49c64ada02bec52af08a1">
+QC-CR#2288358</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>GPS</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-2018-11847</td>
+ <td>A-111092812<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>最高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-11888</td>
+ <td>A-111093241<a href="#asterisk">*</a></td>
+ <td>無</td>
+ <td>高</td>
+ <td>封閉原始碼元件</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13888</td>
+ <td>A-117119136<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>2019-01-01 後的安全性修補程式等級已解決了所有與 2019-01-01 安全性修補程式等級相關的問題。</li>
+<li>2019-01-05 之後的安全性修補程式等級完全解決了與 2019-01-05 安全性修補程式等級及所有先前修補程式等級相關的問題。</li>
+</ul>
+<p>提供這些更新的裝置製造商應將修補程式字串等級設定為:</p>
+<ul>
+ <li>[ro.build.version.security_patch]:[2019-01-01]</li>
+ <li>[ro.build.version.security_patch]:[2019-01-05]</li>
+</ul>
+<p><strong>2. 為什麼這篇公告有兩種安全性修補程式等級?</strong></p>
+<p>
+本公告有兩種安全性修補程式等級,讓 Android 合作夥伴能夠靈活運用,以快速修正某些發生在所有 Android 裝置上的類似漏洞。我們建議 Android 合作夥伴修正本公告所列的所有問題,並使用最新的安全性修補程式等級。
+</p>
+<ul>
+<li>安全性修補程式等級為 2019-01-01 的裝置必須納入所有與該安全性修補程式等級相關的問題,以及在之前安全性公告中回報的所有問題適用的修正程式。</li>
+<li>如果裝置的安全性修補程式等級在 2019-01-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 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+</p>
+<p>
+<strong>6. 為什麼安全性漏洞會區分為本安全性公告以及裝置合作夥伴的安全性公告,例如 Pixel 公告?</strong>
+</p>
+<p>
+為了宣告 Android 裝置最新的安全性修補程式等級,我們必須先在這份安全性公告中刊載相關的安全性漏洞。裝置/合作夥伴安全性公告所刊載的其他安全性漏洞則未強制規定宣告安全性修補程式等級。我們鼓勵 Android 裝置和晶片製造商透過自己的網站刊載修正方法,例如 <a href="https://security.samsungmobile.com/securityUpdate.smsb" class="external">Samsung</a>、<a href="https://lgsecurity.lge.com/security_updates.html" class="external">LGE</a> 或是 <a href="/security/bulletin/pixel/" class="external">Pixel</a> 安全性公告。
+</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>2019 年 1 月 7 日</td>
+ <td>發佈公告</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>2019 年 1 月 7 日</td>
+ <td>修訂公告內容 (加入 Android 開放原始碼計劃連結)。</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/2019.html b/zh-tw/security/bulletin/2019.html
new file mode 100644
index 00000000..e6f5d60f
--- /dev/null
+++ b/zh-tw/security/bulletin/2019.html
@@ -0,0 +1,211 @@
+<html devsite><head>
+ <title>2019 Android 安全性公告</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>本頁列出 2019 年我們發佈過的所有 Android 安全性公告,如需所有公告的完整清單,請參閱 <a href="/security/bulletin/index.html">Android 安全性公告</a>首頁。</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>語言</th>
+ <th>發佈日期</th>
+ <th>安全性修補程式等級</th>
+ </tr>
+ <tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-01<br>
+ 2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-01<br>
+ 2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-01<br>
+ 2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-01<br>
+ 2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-01<br>
+ 2019-08-05</td>
+ </tr>
+
+ <tr>
+ <td><a href="/security/bulletin/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-01<br>
+ 2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-01<br>
+ 2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-01<br>
+ 2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-01<br>
+ 2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-01<br>
+ 2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-01<br>
+ 2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/2019-01-01.html">2019 年 1 月</a></td>
+ <td>即將推出
+ <!--
+ <a href="/security/bulletin/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019 年 1 月 7 日</td>
+ <td>2019-01-01<br />
+ 2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/index.html b/zh-tw/security/bulletin/index.html
index fbf1f2e9..27609aec 100644
--- a/zh-tw/security/bulletin/index.html
+++ b/zh-tw/security/bulletin/index.html
@@ -30,10 +30,6 @@
<li><a href="https://security.samsungmobile.com/securityUpdate.smsb">Samsung</a></li>
</ul>
-<h3 id="notification">通知</h3>
-<p>如要在新的 Android 公告發佈時收到通知,請加入 <a href="https://groups.google.com/forum/#!forum/android-security-updates">Android 安全性更新群組</a>,並調整您的電子郵件寄送偏好設定以接收所有更新。
-</p>
-
<h3 id="sources">來源</h3>
<p>公告中列出的修正程式來源各不相同,包括 Android 開放原始碼計劃 (AOSP)、上游 Linux 核心,以及晶片系統 (SOC) 製造商。如果您是裝置製造商:</p>
@@ -55,6 +51,33 @@
<th>發佈日期</th>
<th>安全性修補程式等級</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td><td>2018 年 12 月 3 日</td>
+ <td>2018-12-01<br />
+ 2018-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/2018-11-01.html">2018 年 11 月</a></td>
+ <td>
+ <a href="/security/bulletin/2018-11-01.html">English</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/2018-11-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 11 月 5 日</td>
+ <td>2018-11-01<br />
+ 2018-11-05</td>
+ </tr>
<tr>
<td><a href="/security/bulletin/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-tw/security/bulletin/pixel/2018-01-01.html b/zh-tw/security/bulletin/pixel/2018-01-01.html
index 01fd9d2a..e0b69da7 100644
--- a/zh-tw/security/bulletin/pixel/2018-01-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-01-01.html
@@ -31,7 +31,8 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
<strong>注意:</strong>您可以前往 <a href="https://developers.google.com/android/nexus/images">Google Developers 網站</a>取得 Google 裝置韌體映像檔。
</p>
<h2 id="announcements">公告事項</h2>
-<p>我們除了修補 <a href="/security/bulletin/2018-01-01">2018 年 1 月 Android 安全性公告</a>中所列出的安全性漏洞,也針對下文列出的 Pixel 和 Nexus 裝置的安全性漏洞提供修補程式。我們的合作夥伴至少會提前一個月收到這些問題的相關通知,方便他們將相關內容納入其裝置更新中。
+<p>
+我們除了修補 <a href="/security/bulletin/2018-01-01">2018 年 1 月 Android 安全性公告</a>中所列出的安全性漏洞,也針對下文列出的 Pixel 和 Nexus 裝置的安全性漏洞提供修補程式。我們的合作夥伴至少會提前一個月收到這些問題的相關通知,方便他們將相關內容納入其裝置更新中。
</p>
<h2 id="security-patches">安全性修補程式</h2>
<p>
@@ -495,7 +496,7 @@ QC-CR#2073777</a></td>
QC-CR#2077622</a></td>
<td>EoP</td>
<td>中</td>
- <td>WLAN</td>
+ <td>WLan</td>
</tr>
<tr>
<td>CVE-2017-15845</td>
@@ -504,7 +505,7 @@ QC-CR#2077622</a></td>
QC-CR#2072966</a></td>
<td>EoP</td>
<td>中</td>
- <td>WLAN</td>
+ <td>WLan</td>
</tr>
<tr>
<td>CVE-2017-14873</td>
@@ -588,7 +589,7 @@ QC-CR#2068506</a></td>
<td>麥克風驅動程式</td>
</tr>
<tr>
- <td>CVE-2017-9712</td>
+ <td>CVE-2017-9712 </td>
<td>A-63868883<br />
<a href="https://www.codeaurora.org/gitweb/quic/la/?p=platform/vendor/qcom-opensource/wlan/qcacld-2.0.git;a=commit;h=b1d0e250717fc4d8b7c45cef036ea9d16293c616">
QC-CR#2033195</a></td>
diff --git a/zh-tw/security/bulletin/pixel/2018-02-01.html b/zh-tw/security/bulletin/pixel/2018-02-01.html
index 861cc8b1..62fc244e 100644
--- a/zh-tw/security/bulletin/pixel/2018-02-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-02-01.html
@@ -23,7 +23,7 @@
<p><em>發佈日期:2018 年 2 月 5 日 | 更新日期:2018 年 4 月 30 日</em></p>
<p>
-Pixel/Nexus 安全性公告羅列了會對<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">支援的 Google Pixel 和 Nexus 裝置</a> (Google 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-02-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 <a href="/security/bulletin/2018-02-01">2018 年 2 月 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 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-02-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 <a href="/security/bulletin/2018-02-01">2018 年 2 月 Android 安全性公告</a>列出的所有問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。</p>
<p>
所有支援的 Google 裝置都會收到 2018-02-05 修補程式等級更新。我們建議所有客戶接受這些裝置更新。
</p>
@@ -32,7 +32,7 @@ Pixel/Nexus 安全性公告羅列了會對<a href="https://support.google.com/pi
</p>
<h2 id="announcements">公告事項</h2>
<p>
-我們除了修補 <a href="/security/bulletin/2018-02-01">2018 年 2 月 Android 安全性公告</a>中所列出的安全性漏洞,也針對下文列出的 Pixel 和 Nexus 裝置的安全性漏洞提供修補程式。我們的合作夥伴在至少一個月之前已收到所述問題的相關通知,方便他們將相關內容納入其裝置更新中。</p>
+我們除了修補 <a href="/security/bulletin/2018-02-01">2018 年 2 月 Android 安全性公告</a>中所列出的安全性漏洞,也針對下文列出的 Pixel 和 Nexus 裝置的安全性漏洞提供修補程式。我們的合作夥伴至少會提前一個月收到這些問題的相關通知,方便他們將相關內容納入其裝置更新中。</p>
<h2 id="security-patches">安全性修補程式</h2>
<p>
@@ -227,7 +227,7 @@ QC-CR#2076603</a>
[<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/prima/commit/?id=fe43c2b64ac81199de17efc258e95546cb0546f1">2</a>]</td>
<td>RCE</td>
<td>最高</td>
- <td>WLAN</td>
+ <td>WLan</td>
</tr>
<tr>
<td>CVE-2017-15859</td>
diff --git a/zh-tw/security/bulletin/pixel/2018-03-01.html b/zh-tw/security/bulletin/pixel/2018-03-01.html
index 6608d086..cb8ba8e0 100644
--- a/zh-tw/security/bulletin/pixel/2018-03-01.html
+++ b/zh-tw/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 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-03-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 <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 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-03-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 <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>
@@ -32,7 +32,7 @@ Pixel/Nexus 安全性公告羅列了會對<a href="https://support.google.com/pi
</p>
<h2 id="announcements">公告事項</h2>
-<p>我們除了修補 <a href="/security/bulletin/2018-03-01">2018 年 3 月 Android 安全性公告</a>中所列出的安全性漏洞,也針對下文列出的 Google 裝置的安全性漏洞提供修補程式。我們的合作夥伴在至少一個月之前已收到所述問題的相關通知,方便他們將相關內容納入其裝置更新中。</p>
+<p>我們除了修補 <a href="/security/bulletin/2018-03-01">2018 年 3 月 Android 安全性公告</a>中所列出的安全性漏洞,也針對下文列出的 Google 裝置的安全性漏洞提供修補程式。我們的合作夥伴至少會提前一個月收到這些問題的相關通知,方便他們將相關內容納入其裝置更新中。</p>
<h2 id="security-patches">安全性修補程式</h2>
<p>
@@ -392,7 +392,7 @@ QC-CR#2120725</a></td>
</tr>
<tr>
<td>CVE-2017-14889</td>
- <td>A-70237700<br />
+ <td>A-70237700 <br />
<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=e11e9dc8298dc0632050cacce96e9652d017f755">
QC-CR#2119803</a></td>
<td>EoP</td>
diff --git a/zh-tw/security/bulletin/pixel/2018-04-01.html b/zh-tw/security/bulletin/pixel/2018-04-01.html
index a3ef5848..43cb5920 100644
--- a/zh-tw/security/bulletin/pixel/2018-04-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-04-01.html
@@ -195,7 +195,7 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
B-V2018010501</td>
<td>ID</td>
<td>中</td>
- <td>Bcmdhd 驅動程式</td>
+ <td>bcmdhd 驅動程式</td>
</tr>
</tbody></table>
diff --git a/zh-tw/security/bulletin/pixel/2018-07-01.html b/zh-tw/security/bulletin/pixel/2018-07-01.html
index 43219b8f..8e58e7e4 100644
--- a/zh-tw/security/bulletin/pixel/2018-07-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-07-01.html
@@ -208,7 +208,7 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
<a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=57ebd808a97d7c5b1e1afb937c2db22beba3c1f8">上游程式庫核心</a></td>
<td>EoP</td>
<td>中</td>
- <td>netfilter</td>
+ <td>網路篩選器</td>
</tr>
<tr>
diff --git a/zh-tw/security/bulletin/pixel/2018-08-01.html b/zh-tw/security/bulletin/pixel/2018-08-01.html
index 44e4d1b0..b3a9a9ec 100644
--- a/zh-tw/security/bulletin/pixel/2018-08-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-08-01.html
@@ -189,7 +189,7 @@ Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelpho
上游程式庫核心</a></td>
<td>EoP</td>
<td>中</td>
- <td>Netfilter</td>
+ <td>網路篩選器</td>
</tr>
<tr>
<td>CVE-2018-9464</td>
@@ -492,7 +492,7 @@ QC-CR#2185477</a></td>
<strong>4.「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊的星號 (*) 代表什麼意義?</strong>
</p>
<p>
-在「參考資料」<em></em>欄中 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
+在「參考資料」<em></em>欄中的 Android 錯誤 ID 旁邊標上星號 (*) 代表該問題並未公開,相關的更新通常是直接整合在最新的 Pixel/Nexus 裝置專用驅動程式的安裝檔中。您可以前往 <a href="https://developers.google.com/android/nexus/drivers" class="external">Google Developers 網站</a>下載這些驅動程式。
</p>
<p>
<strong>5. 為什麼安全性漏洞會分別刊載在這份安全性公告和 Android 安全性公告?</strong>
diff --git a/zh-tw/security/bulletin/pixel/2018-11-01.html b/zh-tw/security/bulletin/pixel/2018-11-01.html
index 52706984..92935bef 100644
--- a/zh-tw/security/bulletin/pixel/2018-11-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-11-01.html
@@ -23,7 +23,7 @@
<p><em>發佈日期:2018 年 11 月 5 日</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-11-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 2018 年 11 月 Android 安全性公告列出的所有問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
+Pixel/Nexus 安全性公告列舉對<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">支援的 Google Pixel 和 Nexus 裝置</a> (Google 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2018-11-05 之後的安全性修補程式等級也已針對 Google 裝置解決了這個公告和 2018 年 11 月 Android 安全性公告列出的所有問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
</p>
<p>
所有支援的 Google 裝置都會收到 2018-11-05 修補程式等級更新。我們建議所有客戶接受這些裝置更新。
diff --git a/zh-tw/security/bulletin/pixel/2018-12-01.html b/zh-tw/security/bulletin/pixel/2018-12-01.html
index c82c8ecc..a7f9ec97 100644
--- a/zh-tw/security/bulletin/pixel/2018-12-01.html
+++ b/zh-tw/security/bulletin/pixel/2018-12-01.html
@@ -82,6 +82,12 @@ QC-CR#2258691</a></td>
<th>改善項目</th>
<th>裝置</th>
</tr>
+ <tr>
+ <td>A-112646910</td>
+ <td>安全性</td>
+ <td>改善重設後的圖案解鎖辨識效果</td>
+ <td>Pixel、Pixel XL</td>
+ </tr>
<tr>
<td>A-117522738</td>
<td>效能</td>
diff --git a/zh-tw/security/bulletin/pixel/2018.html b/zh-tw/security/bulletin/pixel/2018.html
index 60e7340b..02fb51ac 100644
--- a/zh-tw/security/bulletin/pixel/2018.html
+++ b/zh-tw/security/bulletin/pixel/2018.html
@@ -33,6 +33,32 @@
<th>發佈日期</th>
<th>安全性修補程式等級</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-05</td>
+ </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> /
+ <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>
+ </tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-10-01.html">2018 年 10 月</a></td>
<td>
diff --git a/zh-tw/security/bulletin/pixel/2019-01-01.html b/zh-tw/security/bulletin/pixel/2019-01-01.html
new file mode 100644
index 00000000..fdb68576
--- /dev/null
+++ b/zh-tw/security/bulletin/pixel/2019-01-01.html
@@ -0,0 +1,210 @@
+<html devsite><head>
+ <title>Pixel 更新公告 - 2019 年 1 月</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>發佈日期:2019 年 1 月 7 日</em></p>
+
+<p>
+Pixel 更新公告列舉對<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">支援的 Google Pixel 裝置</a> (Google 裝置) 造成影響的安全性漏洞和功能改善項目,並說明各項相關細節。2019-01-05 之後的安全性修補程式等級也已針對 Google 裝置解決了 2019 年 1 月 Android 安全性公告列出的所有問題。請參閱<a href="https://support.google.com/pixelphone/answer/4457705" class="external">檢查及更新 Android 版本</a>一文,瞭解如何查看裝置的安全性修補程式等級。
+</p>
+<p>
+所有支援的 Google 裝置都會收到 2019-01-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/2019-01-01">2019 年 1 月 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="kernel-components">核心元件</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-13098</td>
+ <td>A-113148387<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=76d56d4ab4f2a9e4f085c7d77172194ddaccf7d2">
+上游程式庫核心</a></td>
+ <td>ID</td>
+ <td>中</td>
+ <td>檔案系統</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-13099</td>
+ <td>A-113148515<br />
+ <a href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4dbe38dc386910c668c75ae616b99b823b59f3eb">
+上游程式庫核心</a></td>
+ <td>ID</td>
+ <td>中</td>
+ <td>檔案系統</td>
+ </tr>
+</tbody></table>
+
+<h3 id="functional-patches">功能修補程式</h3>
+<p>這些更新的目的在於解決受影響 Pixel 裝置的功能問題,與 Pixel 裝置的安全性無關。下表列出相關參考資料、受影響的類別 (例如藍牙和行動數據)、改善項目,以及受影響的裝置。
+</p>
+
+<table>
+ <tbody><tr>
+ </tr></tbody><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-113776612、A-118022272</td>
+ <td>音訊</td>
+ <td>改善錄製影片時的音質</td>
+ <td>Pixel 3、Pixel 3 XL</td>
+ </tr>
+</tbody></table>
+
+<h2 id="common-questions-and-answers">常見問題與解答</h2>
+<p>
+如果您在閱讀這篇公告後有任何疑問,可參考本節的常見問答。
+</p>
+<p>
+<strong>1. 如何判斷我目前的裝置軟體版本是否已修正這些問題?
+</strong>
+</p>
+<p>
+2019-01-05 之後的安全性修補程式等級完全解決了與 2019-01-05 安全性修補程式等級及所有先前修補程式等級相關的問題。請參閱 <a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices" class="external">Pixel 更新時間表</a>中的操作說明,瞭解如何查看裝置的安全性修補程式等級。
+</p>
+<p id="type">
+<strong>2.「類型」<em></em>欄中的項目代表什麼意義?</strong>
+</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 裝置專用驅動程式的安裝檔中。您可以前往 <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>2019 年 1 月 7 日</td>
+ <td>發佈公告。</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/pixel/2019.html b/zh-tw/security/bulletin/pixel/2019.html
new file mode 100644
index 00000000..d700ce35
--- /dev/null
+++ b/zh-tw/security/bulletin/pixel/2019.html
@@ -0,0 +1,198 @@
+<html devsite><head>
+ <title>2019 Pixel 更新公告</title>
+ <meta name="project_path" value="/_project.yaml"/>
+ <meta name="book_path" value="/_book.yaml"/>
+ </head>
+ <body>
+ <!--
+ Copyright 2019 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>本頁列出 2019 年我們發佈過的所有 Pixel 更新公告,如需所有公告的完整清單,請參閱 <a href="/security/bulletin/pixel/index.html">Pixel 更新公告</a>首頁。</p>
+
+<table>
+ <colgroup><col width="15%" />
+ <col width="49%" />
+ <col width="17%" />
+ <col width="19%" />
+ </colgroup><tbody><tr>
+ <th>公告</th>
+ <th>語言</th>
+ <th>發佈日期</th>
+ <th>安全性修補程式等級</th>
+ </tr>
+<tr><td><!--
+<tr>
+ <td><a href="/security/bulletin/pixel/2019-12-01.html">December 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-12-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-12-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>December 2, 2019</td>
+ <td>2019-12-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-11-01.html">November 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-11-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-11-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>November 4, 2019</td>
+ <td>2019-11-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-10-01.html">October 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-10-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-10-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>October 7, 2019</td>
+ <td>2019-10-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-09-01.html">September 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-09-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-09-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>September 2, 2019</td>
+ <td>2019-09-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-08-01.html">August 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-08-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-08-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>August 5, 2019</td>
+ <td>2019-08-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-07-01.html">July 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-07-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-07-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>July 1, 2019</td>
+ <td>2019-07-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-06-01.html">June 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-06-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>June 3, 2019</td>
+ <td>2019-06-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-05-01.html">May 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-05-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-05-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>May 6, 2019</td>
+ <td>2019-05-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-04-01.html">April 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-04-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-04-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>April 1, 2019</td>
+ <td>2019-04-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-03-01.html">March 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-03-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-03-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>March 4, 2019</td>
+ <td>2019-03-05</td>
+ </tr>
+ <tr>
+ <td><a href="/security/bulletin/pixel/2019-02-01.html">February 2019</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2019-02-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-02-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ </td>
+ <td>February 4, 2019</td>
+ <td>2019-02-05</td>
+ </tr>
+-->
+ </td></tr><tr>
+ <td><a href="/security/bulletin/pixel/2019-01-01.html">2019 年 1 月</a></td>
+ <td>即將推出
+ <!--
+ <a href="/security/bulletin/pixel/2019-01-01.html">English</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ja">日本語</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ko">한국어</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=ru">ру́сский</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
+ <a href="/security/bulletin/pixel/2019-01-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
+ -->
+ </td>
+ <td>2019 年 1 月 7 日</td>
+ <td>2019-01-05</td>
+ </tr>
+</tbody></table>
+
+</body></html> \ No newline at end of file
diff --git a/zh-tw/security/bulletin/pixel/index.html b/zh-tw/security/bulletin/pixel/index.html
index 5384dd0a..ed2fff73 100644
--- a/zh-tw/security/bulletin/pixel/index.html
+++ b/zh-tw/security/bulletin/pixel/index.html
@@ -42,6 +42,32 @@
<th>發佈日期</th>
<th>安全性修補程式等級</th>
</tr>
+<tr>
+ <td><a href="/security/bulletin/pixel/2018-12-01.html">2018 年 12 月</a></td>
+ <td>
+ <a href="/security/bulletin/pixel/2018-12-01.html">English</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ja">日本語</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ko">한국어</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=ru">ру́сский</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-cn">中文 (中国)</a> /
+ <a href="/security/bulletin/pixel/2018-12-01.html?hl=zh-tw">中文 (台灣)</a>
+ </td>
+ <td>2018 年 12 月 3 日</td>
+ <td>2018-12-05</td>
+ </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> /
+ <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>
+ </tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-10-01.html">2018 年 10 月</a></td>
<td>