aboutsummaryrefslogtreecommitdiff
path: root/en
diff options
context:
space:
mode:
Diffstat (limited to 'en')
-rw-r--r--en/_index.yaml22
-rw-r--r--en/compatibility/5.1/android-5.1-cdd.html8
-rw-r--r--en/compatibility/_toc-compatibility.yaml8
-rw-r--r--en/compatibility/vts/images/vts_batch_output_xml.pngbin0 -> 10101 bytes
-rw-r--r--en/compatibility/vts/images/vts_batch_terminal_output.pngbin0 -> 7533 bytes
-rw-r--r--en/compatibility/vts/images/vts_device_serials.pngbin0 -> 16887 bytes
-rw-r--r--en/compatibility/vts/images/vts_hostside_agent.pngbin0 -> 12755 bytes
-rw-r--r--en/compatibility/vts/images/vts_hostside_hal.pngbin0 -> 13507 bytes
-rw-r--r--en/compatibility/vts/images/vts_non_batch.pngbin0 -> 13811 bytes
-rw-r--r--en/compatibility/vts/images/vts_shell_driver.pngbin0 -> 30397 bytes
-rw-r--r--en/compatibility/vts/images/vts_target_hidl.pngbin0 -> 14479 bytes
-rw-r--r--en/compatibility/vts/images/vts_template_arch.pngbin0 -> 13697 bytes
-rw-r--r--en/compatibility/vts/images/vts_template_extension.pngbin0 -> 14421 bytes
-rw-r--r--en/compatibility/vts/multi-device-testing.html212
-rw-r--r--en/compatibility/vts/shell-commands.html166
-rw-r--r--en/compatibility/vts/test-templates.html382
-rw-r--r--en/devices/architecture/dto/multiple.html14
-rw-r--r--en/devices/architecture/hidl-cpp/index.html2
-rw-r--r--en/devices/architecture/hidl-java/index.html2
-rw-r--r--en/devices/architecture/hidl/versioning.html48
-rw-r--r--en/devices/tech/config/filesystem.html3
-rw-r--r--en/devices/tech/config/namespaces_libraries.html20
-rw-r--r--en/devices/tech/config/perms-whitelist.html6
-rw-r--r--en/devices/tech/config/uicc.html2
-rw-r--r--en/devices/tech/ota/ab/index.html3
-rw-r--r--en/devices/tech/ota/index.html4
-rw-r--r--en/devices/tech/perf/boot-times.html22
-rw-r--r--en/security/_toc.yaml4
-rw-r--r--en/security/bulletin/2018-02-01.html17
-rw-r--r--en/security/bulletin/2018-04-01.html2700
-rw-r--r--en/security/bulletin/2018.html15
-rw-r--r--en/security/bulletin/index.html15
-rw-r--r--en/security/bulletin/pixel/2018-02-01.html17
-rw-r--r--en/security/bulletin/pixel/2018-03-01.html9
-rw-r--r--en/security/bulletin/pixel/2018-04-01.html1037
-rw-r--r--en/security/bulletin/pixel/2018.html15
-rw-r--r--en/security/bulletin/pixel/index.html15
-rw-r--r--en/security/overview/acknowledgements.html143
-rw-r--r--en/security/overview/updates-resources.html2
-rw-r--r--en/setup/_toc.yaml60
-rw-r--r--en/setup/build/building-kernels.html (renamed from en/setup/building-kernels.html)46
-rw-r--r--en/setup/build/building.html (renamed from en/setup/building.html)62
-rw-r--r--en/setup/build/devices.html (renamed from en/setup/devices.html)37
-rw-r--r--en/setup/build/downloading.html (renamed from en/setup/downloading.html)15
-rw-r--r--en/setup/build/initializing.html405
-rw-r--r--en/setup/build/jack.html (renamed from en/setup/jack.html)17
-rw-r--r--en/setup/build/known-issues.html (renamed from en/setup/known-issues.html)0
-rw-r--r--en/setup/build/requirements.html198
-rw-r--r--en/setup/build/running.html (renamed from en/setup/running.html)8
-rw-r--r--en/setup/code-lines.html187
-rw-r--r--en/setup/community.html4
-rw-r--r--en/setup/contribute/code-style.html (renamed from en/setup/code-style.html)44
-rw-r--r--en/setup/contribute/index.html (renamed from en/setup/contributing.html)12
-rw-r--r--en/setup/contribute/life-of-a-bug.html (renamed from en/setup/life-of-a-bug.html)2
-rw-r--r--en/setup/contribute/life-of-a-patch.html (renamed from en/setup/life-of-a-patch.html)0
-rw-r--r--en/setup/contribute/read-bug-reports.html (renamed from en/setup/read-bug-reports.html)0
-rw-r--r--en/setup/contribute/report-bugs.html (renamed from en/setup/report-bugs.html)0
-rw-r--r--en/setup/contribute/submit-patches.html (renamed from en/setup/submit-patches.html)14
-rw-r--r--en/setup/contribute/view-patches.html (renamed from en/setup/view-patches.html)4
-rw-r--r--en/setup/develop/64-bit-builds.html (renamed from en/setup/64-bit-builds.html)0
-rw-r--r--en/setup/develop/index.html (renamed from en/setup/developing.html)17
-rw-r--r--en/setup/develop/new-device.html (renamed from en/setup/add-device.html)0
-rw-r--r--en/setup/develop/repo.html (renamed from en/setup/using-repo.html)0
-rw-r--r--en/setup/initializing.html459
-rw-r--r--en/setup/licenses.html110
-rw-r--r--en/setup/requirements.html180
-rw-r--r--en/setup/roles.html102
-rw-r--r--en/setup/site-updates.html777
-rw-r--r--en/setup/start/brands.html (renamed from en/setup/brands.html)14
-rw-r--r--en/setup/start/build-numbers.html (renamed from en/setup/build-numbers.html)166
-rw-r--r--en/setup/start/codelines.html168
-rw-r--r--en/setup/start/faqs.html (renamed from en/setup/faqs.html)208
-rw-r--r--en/setup/start/licenses.html126
-rw-r--r--en/setup/start/roles.html122
-rw-r--r--en/setup/start/site-updates.html803
75 files changed, 7121 insertions, 2159 deletions
diff --git a/en/_index.yaml b/en/_index.yaml
index db5f4429..796a08ac 100644
--- a/en/_index.yaml
+++ b/en/_index.yaml
@@ -59,12 +59,8 @@ landing_page:
porting. And now this site is available in China at <a
href="https://source.android.google.cn/">source.android.google.cn</a>.<br><br>
- As the AOSP documentation site, we seek your contributions. With an
- ever-changing ecosystem, we need your help to stay fresh. You may make
- your own fixes directly to the source files by following the
- instructions in our <a
- href="https://android.googlesource.com/platform/docs/source.android.com/+/master/README.txt">README</a>.
- You may also use the <a
+ As the AOSP documentation site, we seek your input. With an
+ ever-changing ecosystem, we need your help to stay fresh. Please use the <a
href="https://issuetracker.google.com/issues/new?component=191476">Site
Feedback</a> link at the bottom of any page to report bugs and offer
suggestions for enhancement. See the site’s <a
@@ -73,6 +69,13 @@ landing_page:
image_path: /images/android_stack.png
- heading: News
items:
+ - heading: April Security Bulletins
+ description: >
+ The April 2018 Android and Pixel/Nexus Security Bulletins have been
+ published to support the April security release.
+ buttons:
+ - label: April 4th, 2018
+ path: /security/bulletin/2018-04-01
- heading: Android 2017 Year in Review
description: >
The Android Security 2017 Year in Review covers everything that happened
@@ -80,13 +83,6 @@ landing_page:
buttons:
- label: March 15th, 2018
path: /security/overview/reports
- - heading: March Security Bulletins
- description: >
- The March 2018 Android and Pixel/Nexus Security Bulletins have been
- published to support the March security release.
- buttons:
- - label: March 7th, 2018
- path: /security/bulletin/2018-03-01
- heading: ART DEX bytecode improvements
description: >
Android runtime (ART) now includes bytecode documentation for
diff --git a/en/compatibility/5.1/android-5.1-cdd.html b/en/compatibility/5.1/android-5.1-cdd.html
index 377d9f9d..d579ead3 100644
--- a/en/compatibility/5.1/android-5.1-cdd.html
+++ b/en/compatibility/5.1/android-5.1-cdd.html
@@ -4508,6 +4508,14 @@ Definition in this release. </p>
<td>7.6.2. Application Shared Storage</td>
<td>Apps can use ACTION_OPEN_DOCUMENT_TREE to write to secondary ext. storage</td>
</tr>
+ <tr>
+ <td>7.6.2. Application Shared Storage</td>
+ <td>Clarify that /sdcard can share storage with /data</td>
+ </tr>
+ <tr>
+ <td>7.7 USB</td>
+ <td>Remove redundant requirement on UMS/MTP from 7.7</td>
+ </tr>
<tr>
<td>7.8.1. Microphone</td>
<td>Added Android Automotive requirements.</td>
diff --git a/en/compatibility/_toc-compatibility.yaml b/en/compatibility/_toc-compatibility.yaml
index e10be874..d45a8653 100644
--- a/en/compatibility/_toc-compatibility.yaml
+++ b/en/compatibility/_toc-compatibility.yaml
@@ -53,6 +53,14 @@ toc:
path: /compatibility/vts/
- title: Systems Testing with VTS
path: /compatibility/vts/systems
+ - title: Test Framework
+ section:
+ - title: Device Shell Commands
+ path: /compatibility/vts/shell-commands
+ - title: Test Templates
+ path: /compatibility/vts/test-templates
+ - title: Multi-Device Testing
+ path: /compatibility/vts/multi-device-testing
- title: VTS Dashboard Setup
path: /compatibility/vts/setup
- title: VTS Dashboard Database
diff --git a/en/compatibility/vts/images/vts_batch_output_xml.png b/en/compatibility/vts/images/vts_batch_output_xml.png
new file mode 100644
index 00000000..de95eb1d
--- /dev/null
+++ b/en/compatibility/vts/images/vts_batch_output_xml.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_batch_terminal_output.png b/en/compatibility/vts/images/vts_batch_terminal_output.png
new file mode 100644
index 00000000..58a81da7
--- /dev/null
+++ b/en/compatibility/vts/images/vts_batch_terminal_output.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_device_serials.png b/en/compatibility/vts/images/vts_device_serials.png
new file mode 100644
index 00000000..22ae9525
--- /dev/null
+++ b/en/compatibility/vts/images/vts_device_serials.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_hostside_agent.png b/en/compatibility/vts/images/vts_hostside_agent.png
new file mode 100644
index 00000000..09761066
--- /dev/null
+++ b/en/compatibility/vts/images/vts_hostside_agent.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_hostside_hal.png b/en/compatibility/vts/images/vts_hostside_hal.png
new file mode 100644
index 00000000..829df99b
--- /dev/null
+++ b/en/compatibility/vts/images/vts_hostside_hal.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_non_batch.png b/en/compatibility/vts/images/vts_non_batch.png
new file mode 100644
index 00000000..86df0981
--- /dev/null
+++ b/en/compatibility/vts/images/vts_non_batch.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_shell_driver.png b/en/compatibility/vts/images/vts_shell_driver.png
new file mode 100644
index 00000000..f7538db7
--- /dev/null
+++ b/en/compatibility/vts/images/vts_shell_driver.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_target_hidl.png b/en/compatibility/vts/images/vts_target_hidl.png
new file mode 100644
index 00000000..79684098
--- /dev/null
+++ b/en/compatibility/vts/images/vts_target_hidl.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_template_arch.png b/en/compatibility/vts/images/vts_template_arch.png
new file mode 100644
index 00000000..d7a19636
--- /dev/null
+++ b/en/compatibility/vts/images/vts_template_arch.png
Binary files differ
diff --git a/en/compatibility/vts/images/vts_template_extension.png b/en/compatibility/vts/images/vts_template_extension.png
new file mode 100644
index 00000000..1a36b723
--- /dev/null
+++ b/en/compatibility/vts/images/vts_template_extension.png
Binary files differ
diff --git a/en/compatibility/vts/multi-device-testing.html b/en/compatibility/vts/multi-device-testing.html
new file mode 100644
index 00000000..039baf77
--- /dev/null
+++ b/en/compatibility/vts/multi-device-testing.html
@@ -0,0 +1,212 @@
+<html devsite>
+ <head>
+ <title>Multi-Device Testing</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+
+<p>VTS supports tests that require interaction between multiple Android
+devices.</p>
+
+<h2 id="architecture">Architecture</h2>
+<p>VTS uses the TradeFed framework to get and pass device serials to test
+modules.</p>
+
+<p><img src="images/vts_device_serials.png"></p>
+<figcaption><strong>Figure 1.</strong> VTS passing device serials.</figcaption>
+
+<p>Device requirements, such as number of devices and device types, are
+specified in test plan configuration. For example, you can specify a test plan
+that requires two Android devices with Sailfish build targets.</p>
+
+<h3 id="device-allocation">Device allocation</h3>
+<p>The test infrastructure (usually the test scheduler) allocates available
+devices that satisfy the requirements specified in test plan configuration to
+the VTS framework. Allocated devices are reserved for the test plan even if the
+test module is not using them. VTS agent binaries are then pushed to and run on
+all allocated devices (unless specifically instructed not to run). This ensures
+that TCP connections for shell commands and HAL RPCs are available for all
+devices in a test script.</p>
+
+<h3 id="test-preparers">Test preparers</h3>
+<p>The framework runs test preparers for all devices for which it received
+serial numbers. Target preparers can be single or multi-device:</p>
+<ul>
+<li>Single-device target preparers (example at
+<a href="https://android.googlesource.com/platform/test/vts/+/master/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsDeviceInfoCollector.java" class="external">VtsDeviceInfoCollector</a>):
+<ul>
+<li>Can be specified only in test plan configuration with the required
+device list (future versions will allow module level configuration).</li>
+<li>Receive only one device serial.</li>
+<li>Run preparing and cleanup tasks against a specific device.</li>
+</ul>
+</li>
+<li>Multi-device target preparers (example at
+<a href="https://android.googlesource.com/platform/test/vts/+/master/harnesses/tradefed/src/com/android/tradefed/targetprep/VtsPythonVirtualenvPreparer.java" class="external">VtsPythonVirtualenvPreparer</a>):
+<ul>
+<li>Can be specified in test plan configuration or test module
+configuration</li>
+<li>Receive all device serials</li>
+<li>Run preparing and cleanup tasks for each device or all devices.</li>
+</ul>
+</li>
+</ul>
+
+<h3 id="test-modules">Test modules</h3>
+<p>Test modules get a list of devices after the test preparers finish setting up
+the host/devices. One host-side Python test module runs for each multi-device
+test module. Allocated Android devices are accessible from Python test modules
+as a list of
+<a href="https://android.googlesource.com/platform/test/vts/+/master/utils/python/controllers/android_device.py#322" class="external">AndroidDevice</a>
+objects:</p>
+<pre class="devsite-click-to-copy">
+devices = self.android_devices
+device1 = devices[0]
+device1_serial = device1.serial
+</pre>
+
+<p>All allocated devices are reserved for the test plan, even though a test
+module in the plan is only using one device.</p>
+
+<h2 id="device-communication">Device communication during testing</h1>
+<p>Effective multi-Android tests involve communication between allocated
+devices. When developing such tests, you must determine how to establish
+communication between the allocated devices. The following sections provide
+three communication examples (however, test developers are free to design other
+models).</p>
+
+<h3 id="type1">Type 1: Host-side HAL tests</h3>
+<p>Host-side HAL tests can use VTS HAL drivers that are pushed to devices by
+default:</p>
+
+<p><img src="images/vts_hostside_hal.png"></p>
+<figcaption><strong>Figure 2.</strong> Host-side HAL test.</figcaption>
+
+<p>In this scenario:</p>
+<ul>
+<li>Test logic executes on the host.</li>
+<li>Host-side test script issues RPC calls to the drivers on each device.</li>
+<li>Host side coordinates device interactions.</li>
+</ul>
+
+<h3 id="type2">Type 2: Host-side agent-based tests</h3>
+<p>Instead of using VTS agents on device, a host-side test can also push its own
+agent (app or binary) to each device:</p>
+
+<p><img src="images/vts_hostside_agent.png"></p>
+<figcaption><strong>Figure 3.</strong> Host-side, agent-based test.</figcaption>
+
+<p>In this scenario:</p>
+<ul>
+<li>Test logic executes on the host.</li>
+<li>Agent app (or binary) installs on each device.</li>
+<li>Host-side test script issues commands to apps on each device.</li>
+<li>Host side coordinates device interactions.</li>
+</ul>
+
+<p>For example, the
+<a href="https://android.googlesource.com/platform/test/vts-testcase/nbu/+/master" class="external">Next
+Billion User tests</a> in current VTS repo are host-side, app-based,
+multi-device tests.</p>
+
+<h3 id="type3">Type 3: Target-side HIDL tests</h2>
+<p>Target-side, multi-device HIDL tests put all test logic on device-side test
+binaries, which requires the tests to synchronize devices during test
+execution:</p>
+
+<p><img src="images/vts_target_hidl.png"></p>
+<figcaption><strong>Figure 4. </strong>Target-based HIDL test.</figcaption>
+
+<p>In this scenario:</p>
+<ul>
+<li>Test logic executes on devices.</li>
+<li>Host-side framework provides initial device identification.</li>
+<li>Target-side test binary requires synchronization:<ul>
+<li>Same test binary for all devices.</li>
+<li>Different test binaries for each role.</li>
+</ul>
+</li>
+</ul>
+
+<h2 id="example-multi-device">Example: Multi-device test plan</h2>
+<p>This example specifies the config for two devices:</p>
+<ul>
+<li>Device 1 includes a build provider and
+<code>VtsDeviceInfoCollector</code> target preparer.</li>
+<li>Device 2 includes an additional <code>FilePusher</code> preparer that pushes
+a group of host-driven related files to the device.</li>
+</ul>
+
+<pre class="devsite-click-to-copy">
+&lt;configuration description="VTS Codelab Plan"&gt;
+ ...
+&lt;device name="device1"&gt;
+&lt;build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" /&gt;
+&lt;target_preparer class="com.android.tradefed.targetprep.VtsDeviceInfoCollector" /&gt;
+&lt;/device&gt;
+&lt;device name="device2" &gt;
+&lt;build_provider class="com.android.compatibility.common.tradefed.build.CompatibilityBuildProvider" /&gt;
+&lt;target_preparer class="com.android.tradefed.targetprep.VtsDeviceInfoCollector" /&gt;
+&lt;target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"&gt;
+&lt;option name="push-group" value="HostDrivenTest.push" /&gt;
+&lt;/target_preparer&gt;
+&lt;/device&gt;
+&lt;option name="compatibility:include-filter" value="VtsCodelabHelloWorldMultiDeviceTest" /&gt;
+&lt;/configuration&gt;
+</pre>
+
+<h2 id="example-hostside">Example: Host-side Python test script</h2>
+<p>For details and examples on test preparers, see
+<a href="#Test-preparers">Test Preparers</a>. For a complete host-side
+multi-device example, refer to the
+<a href="https://android.googlesource.com/platform/test/vts/+/master/testcases/codelab/hello_world_multi" class="external">hello_world_multi
+codelab</a>.
+</p>
+
+<pre class="devsite-click-to-copy">
+def setUpClass(self):
+logging.info('number of device: %s', self.android_devices)
+asserts.assertEqual(len(self.android_devices), 2, 'number of device is wrong.')
+self.dut1 = self.android_devices[0]
+self.dut2 = self.android_devices[1]
+self.shell1 = self.dut1.shell
+self.shell2 = self.dut2.shell
+
+def testSerialNotEqual(self):
+'''Checks serial number from two device not being equal.'''
+command = 'getprop | grep ro.serial'
+res1 = self.shell1.Execute(command)
+res2 = self.shell2.Execute(command)
+
+def getSerialFromShellOutput(output):
+'''Get serial from getprop query'''
+return output[const.STDOUT][0].strip().split(' ')[-1][1:-1]
+serial1 = getSerialFromShellOutput(res1)
+serial2 = getSerialFromShellOutput(res2)
+
+logging.info('Serial number of device 1 shell output: %s', serial1)
+logging.info('Serial number of device 2 shell output: %s', serial2)
+asserts.assertNotEqual(serial1, serial2, 'serials from two devices should not be the same')
+asserts.assertEqual(serial1, self.dut1.serial, 'serial got from device system property is different from allocated serial')
+asserts.assertEqual(serial2, self.dut2.serial, 'serial got from device system property is different from allocated serial')
+</pre>
+
+</body>
+</html> \ No newline at end of file
diff --git a/en/compatibility/vts/shell-commands.html b/en/compatibility/vts/shell-commands.html
new file mode 100644
index 00000000..149226d2
--- /dev/null
+++ b/en/compatibility/vts/shell-commands.html
@@ -0,0 +1,166 @@
+<html devsite>
+ <head>
+ <title>Device Shell Commands</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>During VTS testing, shell commands are used to execute a target-side test
+binary, to get/set properties, environment variables, and system information,
+and to start/stop the Android framework. You can execute VTS device shell
+commands using the <code>adb shell</code> command or the VTS shell driver
+running on the device (recommended).</p>
+
+<h2 id="adb-shell">Using ADB shell</h2>
+<p>Tests that require shutting down the USB port or rebooting the device during
+testing must use ADB shell as the VTS shell driver is unavailable without a
+persistent USB connection. You can invoke ADB shell from the
+<code>AndroidDevice</code> object in the Python test script. Examples:</p>
+<ul>
+<li>Get an Android device object:
+<pre class="devsite-click-to-copy">
+self.device = self.android_devices[0]
+</pre>
+</li>
+<li>Issue a single shell command:
+<pre class="devsite-click-to-copy">
+result = self.device.adb.shell(‘ls')
+</pre>
+</li>
+</ul>
+
+<h2 id="vts-shell-driver">Using the VTS shell driver</h2>
+<p>The VTS shell driver is an agent binary that runs on the device and executes
+shell commands. By default, VTS uses the shell driver if the driver is running
+on device because this method has less latency than using the <code>adb
+shell</code> command.</p>
+
+<p><img src="images/vts_shell_driver.png"></p>
+<figcaption><strong>Figure 1.</strong> VTS shell driver.</figcaption>
+
+<p>The VTS framework supports multi-device testing where each Android device
+is represented as an AndroidDevice object in base runner. By default, VTS
+framework pushes VTS agent and VTS shell driver binaries to each Android device
+and establishes TCP connections to the VTS agents on those devices.</p>
+
+<p>To execute a shell command, the host-side Python script makes a function
+call to the ShellMirror object inside AndroidDevice object. The ShellMirror
+object packs the shell command texts into a
+<a href="https://developers.google.com/protocol-buffers/" class="external">protobuf</a>
+message and sends it (via the TCP channel) to the VTS agent on the Android
+device. The agent running on device then forwards the shell command to VTS shell
+driver via the Unix socket.</p>
+
+<p>When the VTS shell driver receives a shell command, it executes the command
+via <a href="https://en.wikipedia.org/wiki/Nohup" class="external">nohup</a> on
+the device shell to prevent hanging. Stdout, stderr, and return code are then
+retrieved from <code>nohup</code> and sent back to VTS agent. Finally, the agent
+replies to the host by wrapping the command result(s) into a
+<code>protobuf</code> message.</p>
+
+<h3 id="advantages">Advantages</h3>
+<p>The advantages of using the VTS shell driver instead of <code>adb
+shell</code> include:</p>
+<ul>
+<li><strong>Reliability.</strong> The VTS shell driver uses
+<code>nohup</code> to execute commands on default setting. As VTS tests are
+mostly lower level HAL and kernel tests, <code>nohup</code> ensures shell
+commands do not hang during execution.</li>
+<li><strong>Performance</strong>. While the <code>adb shell</code> command
+caches some results (such as listing files in a directory) it has a connection
+overhead when performing tasks such as executing a test binary. VTS shell driver
+maintains an active connection throughout the test so the only overhead is USB
+communication. In our testing, using VTS shell driver to execute a command with
+100 calls to an empty gtest binary is about 20 percent faster than using
+<code>adb shell</code>; the actual difference is larger since VTS shell
+communication has extensive logging.</li>
+<li><strong>State-keeping</strong>. The VTS shell driver maintains a terminal
+session for each terminal name (default terminal name is
+<em>default</em>). Environment variables set in one terminal session are
+available only to subsequent commands in the same session.</li>
+<li><strong>Extendable</strong>. Shell command communications between VTS
+framework and device driver are wrapped in protobuf to enable potential
+compression, remoting, encryption, etc. in the future. Other possibilities for
+improving performance are also available, including device-side result parsing
+when the communication overhead becomes larger than result string parsing.</li>
+</ul>
+
+<h3 id="disadvantages">Disadvantages</h3>
+<p>The disadvantages of using the VTS shell driver instead of <code>adb
+shell</code> include:</p>
+<ul>
+<li><strong>Additional binaries</strong>. VTS agent files must be pushed to
+device and cleaned up after test execution.</li>
+<li><strong>Requires active connection</strong>. If the TCP connection between
+host and agent is lost during testing (due to USB disconnection, port shutdown,
+device crash, etc.) either intentionally or unintentionally, a shell command
+cannot be transmitted to the VTS agent. Even with automatic switching to
+<code>adb shell</code>, the result and state of the command before disconnection
+would be unknown.</li>
+</ul>
+
+<h3 id="examples">Examples</h3>
+<p>Examples of using shell commands in a VTS host-side Python test script:</p>
+<ul>
+<li>Get an Android device object:
+<pre class="devsite-click-to-copy">
+self.device = self.android_devices[0]
+</pre>
+</li>
+<li>Get an shell object for the selected device:
+<pre class="devsite-click-to-copy">
+self.shell = self.device.shell
+</pre>
+</li>
+<li>Issue a single shell command:
+<pre class="devsite-click-to-copy">
+results = self.shell.Execute(‘ls')
+</pre>
+</li>
+<li>Issue a list of shell commands:
+<pre class="devsite-click-to-copy">
+results = self.shell.Execute([‘cd /data/local/tmp', ‘ls'])
+</pre>
+</li>
+</ul>
+
+<h3 id="command-result-object">Command result object</h3>
+<p>The return object from shell command execution is a dictionary containing the
+keys <code>stdouts</code>, <code>stderrs</code>, and <code>return_codes</code>.
+Regardless of whether the shell command is provided as a single string or a list
+of command strings, each value of the result dictionary is always a list.</p>
+
+<p>To verify the return code of a list of commands, the test script must check
+the indices. Example:</p>
+
+<pre class="devsite-click-to-copy">
+asserts.assertFalse(any(results[‘return_codes']), ‘some command failed.')
+</pre>
+
+<p>Alternatively, the script can check each command index individually.
+Example:</p>
+
+<pre class="devsite-click-to-copy">
+asserts.assertEqual(results[‘return_codes'][0], 0, ‘first command failed')<br>
+asserts.assertEqual(results[‘return_codes'][1], 0, ‘second command failed')
+</pre>
+
+</body>
+</html> \ No newline at end of file
diff --git a/en/compatibility/vts/test-templates.html b/en/compatibility/vts/test-templates.html
new file mode 100644
index 00000000..27246906
--- /dev/null
+++ b/en/compatibility/vts/test-templates.html
@@ -0,0 +1,382 @@
+<html devsite>
+ <head>
+ <title>Test Templates</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>AOSP includes test templates for test modules that are not host-side Python
+subclass of VTS runner's BaseTest. </p>
+
+<p><img src="images/vts_template_arch.png"></p>
+<figcaption><strong>Figure 1.</strong> Test template architecture.</figcaption>
+
+<p>Developers can use these templates to minimize the effort involved in
+integrating such tests. This section covers configuring and using the test
+templates (located in the VTS
+<a href="https://android.googlesource.com/platform/test/vts/+/master/testcases/template/">testcases/template</a>
+directory) and provides examples for commonly used templates.</p>
+
+<h2 id="binarytest">BinaryTest template</h2>
+<p>Use the
+<a href="https://android.googlesource.com/platform/test/vts/+/sdk-release/testcases/template/binary_test/binary_test.py" class="external">BinaryTest
+template</a> to integrate tests that execute on target device in VTS.
+Target-side tests include:</p>
+
+<ul>
+<li><strong>C++</strong> based tests compiled and pushed to device</li>
+<li>Target-side <strong>Python</strong> tests compiled as binaries</li>
+<li><strong>Shell scripts</strong> executable on devices</li>
+</ul>
+
+<p>These tests can be integrated into VTS with or without the BinaryTest
+template.</p>
+
+<h3 id="target-side">Integrating target-side tests with
+BinaryTest template</h3>
+<p>The BinaryTest template is designed to help developers easily integrate
+target-side tests. In most cases, you can add a few simple lines of
+configuration in <code>AndroidTest.xml</code>. Example configuration from
+<a href="https://android.googlesource.com/platform/test/vts-testcase/kernel/+/master/api/early_mount/AndroidTest.xml" class="external">VtsDeviceTreeEarlyMountTest</a>:
+</p>
+
+<pre class="devsite-click-to-copy">
+&lt;configuration description="Config for VTS VtsDeviceTreeEarlyMountTest."&gt;
+ ...
+&lt;test class="com.android.tradefed.testtype.VtsMultiDeviceTest"&gt;
+&lt;option name="test-module-name" value="VtsDeviceTreeEarlyMountTest"/&gt;
+&lt;option name="binary-test-source" value="_32bit::DATA/nativetest/dt_early_mount_test/dt_early_mount_test" /&gt;
+&lt;option name="binary-test-source" value="_64bit::DATA/nativetest64/dt_early_mount_test/dt_early_mount_test" /&gt;
+&lt;option name="test-timeout" value="5m"/&gt;
+&lt;/test&gt;
+&lt;/configuration&gt;
+</pre>
+
+<p>In this configuration:</p>
+<ul>
+<li><code>binary-test-source</code> and <code>binary-test-type</code> are
+template-specific.</li>
+<li>Specifying the test binary source's relative host path enables the template
+to handle preparation, file pushing, test execution, result parsing, and
+cleanup.</li>
+<li>The template contains test case creation-related methods for subclasses to
+override.</li>
+<li>The template assumes one test case per test binary module, and the binary
+source file name is used as test case name by default.</li>
+</ul>
+
+<h4>Configuration options</h4>
+<p>The BinaryTest template supports the following configuration options:</p>
+
+<table>
+<thead>
+<tr>
+<th width="25%">Option name</th>
+<th width="12%">Value type</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>binary-test-source</td>
+<td>strings</td>
+<td>Binary test source paths relative to vts test-case directory on
+host.<br>
+Example: <code>DATA/nativetest/test</code></td>
+</tr>
+<tr>
+<td>binary-test-working-directory</td>
+<td>strings</td>
+<td>Working directories (device-side path).<br>
+Example: <code>/data/local/tmp/testing/</code></td>
+</tr>
+<tr>
+<td>binary-test-envp</td>
+<td>strings</td>
+<td>Environment variables for binary.<br>
+Example: <code>PATH=/new:$PATH</code></td>
+</tr>
+<tr>
+<td>binary-test-args</td>
+<td>strings</td>
+<td>Test arguments or flags.<br>
+Example: <code>--gtest_filter=test1</code></td>
+</tr>
+<tr>
+<td>binary-test-ld-library-path</td>
+<td>strings</td>
+<td><code>LD_LIBRARY_PATH</code> environment variable.<br>
+Example: <code>/data/local/tmp/lib</code></td>
+</tr>
+<tr>
+<td>binary-test-disable-framework</td>
+<td>boolean</td>
+<td>Run <code>adb stop</code> to turn off the Android Framework before test.
+Example: <code>true</code></td>
+</tr>
+<tr>
+<td>binary-test-stop-native-servers</td>
+<td>boolean</td>
+<td>Stop all properly configured native servers during the testing. Example:
+<code>true</code></td>
+</tr>
+<tr>
+<td>binary-test-type</td>
+<td>string</td>
+<td>Template type. Other template types extend from this template, but you
+don't have to specify this option for this template because you already
+specified <code>binary-test-source</code>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>For options with value type <code>strings</code>, you can add multiple values
+by repeating the options in the configuration. For example, set
+<code>binary-test-source</code> twice (as shown in the
+<code>VtsDeviceTreeEarlyMountTest</code> example).</p>
+
+<h4>Test tags</h4>
+<p>You can add test tags by prefixing them to options with <code>strings</code>
+values and using <code>::</code> as the delimiter. Test tags are especially
+useful when including binary sources with the same name but with different
+bitness or parent directories. For example, to avoid file push or result name
+collision for sources with the same name but from different source directories,
+you can specify different tags for these sources.</p>
+
+<p>As shown in the <code>VtsDeviceTreeEarlyMountTest</code> example with the
+two <code>dt_early_mount_test</code> sources, the test tags are the
+<code>_32bit::</code> and <code>_64bit::</code> prefixes on
+<code>binary-test-source</code>. Tags ending with <code>32bit</code> or
+<code>64bit</code> automatically mark the tests as available to one ABI bitness;
+i.e. tests with the tag <code>_32bit</code> are not executed on 64-bit ABI. Not
+specifying a tag is equal to using a tag with an empty string.</p>
+
+<p>Options with the same tags are grouped and isolated from other tags. For
+example, <code>binary-test-args</code> with the <code>_32bit</code> tag is
+applied only to <code>binary-test-source</code> with the same tag and executed
+in <code>binary-test-working-directory</code> with the same tag. The
+<code>binary-test-working-directory</code> option is optional for binary tests,
+allowing you to specify a single working directory for a tag. When the
+<code>binary-test-working-directory</code> option is left unspecified, default
+directories are used for each tag.</p>
+
+<p>The tag name is directly appended to test case name in the result report.
+For example, test case <code>testcase1</code> with tag <code>_32bit</code>
+appears as <code>testcase1_32bit</code> in the result report.</p>
+
+<h3 id="no-target-side">Integrating target-side tests without
+BinaryTest template</h2>
+<p>In VTS, the default test format is host-side Python tests extended from
+BaseTest in VTS runner. To integrate target-side tests, you must first push the
+test files to device, execute the tests using shell commands, then parse the
+results using host-side Python scripts.</p>
+
+<h4>Pushing test binaries</h4>
+<p>We recommend pushing files using <code>VtsFilePusher</code> target preparer.
+Example:</p>
+
+<pre class="devsite-click-to-copy">
+&lt;target_preparer class="com.android.compatibility.common.tradefed.targetprep.VtsFilePusher"&gt;
+ &lt;option name="push" value="DATA/test-&gt;/data/local/tmp/test"/&gt;
+ &lt;/target_preparer&gt;
+</pre>
+
+<p>The <code>VtsFilePusher</code> does the following:</p>
+<ol>
+<li>Checks device connectivity.</li>
+<li>Determines the absolute source file path.</li>
+<li>Pushes the files using <code>adb push</code> command.</li>
+<li>Deletes the files after tests complete.</li>
+</ol>
+<p>Alternatively, you can push files manually using a host-side Python test
+script that follows a similar procedure.</p>
+
+<h4>Running tests</h4>
+<p>After pushing files to the device, run the test using shell commands in a
+host-side Python test script. Example:</p>
+
+<pre class="devsite-click-to-copy">
+device = self.android_devices[0]
+res = device.shell.Execute(["chmod a+x /data/local/tmp/test", "/data/local/tmp/test"])
+asserts.AssertFalse(any(res[return_codes]))
+</pre>
+
+<h2 id="gtestbinarytest">GtestBinaryTest template</h2>
+<p>The
+<a href="https://android.googlesource.com/platform/test/vts/+/sdk-release/testcases/template/gtest_binary_test/gtest_binary_test.py" class="external">GtestBinaryTest
+template</a> hosts GTest test binaries, each of which usually contains
+multiple test cases. This template extends the BinaryTest template by overriding
+setup, test case creation, and result parsing methods, so all BinaryTest
+configurations are inherited.</p>
+
+<p>GtestBinaryTest adds the option <code>gtest-batch-mode</code>:</p>
+
+<table>
+<thead>
+<tr>
+<th>Option name</th>
+<th>Value type</th>
+<th>Description</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>binary-test-type</td>
+<td>string</td>
+<td>Template type. Uses the value <code>gtest</code>.</td>
+</tr>
+<tr>
+<td>gtest-batch-mode</td>
+<td>boolean</td>
+<td>Run Gtest binaries in batch mode. Example: <code>true</code></td>
+</tr>
+</tbody>
+</table>
+
+<p>In general, setting <code>gtest-batch-mode</code> to <code>true</code>
+increases performance while decreasing reliability slightly. In VTS compliance
+tests, many modules use batch mode to improve performance. For reliability
+however, if the mode is unspecified it defaults to non-batch. </p>
+
+<h3 id=non-batch-mode>Non-batch mode</h3>
+<p>Non-batch mode makes individual calls to GTest binary for each test case. For
+example, if the GTest binary contains 10 test cases (after filtering by host
+side configuration), the binary is called 10 times on device shell each time
+with a different test filter. For each test case, a unique GTest result output
+XML is generated and parsed by the template.</p>
+
+<p><img src="images/vts_non_batch.png"></p>
+<figcaption><strong>Figure 2.</strong> Non-batch mode.</figcaption>
+
+<p>The advantages of using non-batch mode include:</p>
+<ul>
+<li><strong>Test case isolation</strong>. A crash or hang in one test case
+does not affect other test cases.</li>
+<li><strong>Granularity</strong>. Easier to get per-test-case profiling/coverage
+measurement, systrace, bugreport, logcat, etc. Test results and logs are
+retrieved immediately after each test case finishes.</li>
+</ul>
+
+<p>The disadvantages of using non-batch mode include:</p>
+<ul>
+<li><strong>Redundant loading</strong>. Each time GTest binary is called,
+it loads related libraries and performs initial class setups.</li>
+<li><strong>Communication overhead</strong>. After a test completes, the host
+and target device communicate for result parsing and next commands (future
+optimizations possible).</li>
+</ul>
+
+<h3 id="batch-mode">Batch mode</h3>
+<p>In GTest batch mode, the test binary is called only once with a long test
+filter value containing all test cases filtered by host-side configuration (this
+avoids the redundant loading issue in non-batch mode). You can parse test
+results for GTest using output.xml or using terminal output.</p>
+
+<p>When using output.xml (default):</p>
+
+<p><img src="images/vts_batch_output_xml.png"></p>
+<figcaption><strong>Figure 3.</strong> Batch mode, output.xml.</figcaption>
+
+<p>As in non-batch mode, the test result is parsed through GTest output xml
+file. However, because the output xml is generated after all tests are
+completed, if a test case crashed the binary or device no result xml file is
+generated.
+
+<p>When using terminal output:</p>
+
+<p><img src="images/vts_batch_terminal_output.png"></p>
+<figcaption><strong>Figure 4.</strong> Batch mode, terminal output.</figcaption>
+
+<p>While GTest is running, it prints the test log and progress to the terminal
+in a format that can be parsed by the framework for test status, results, and
+logs.</p>
+
+<p>The advantages of using batch mode include:</p>
+<ul>
+<li><strong>Test case isolation</strong>. Provides the same level of test
+case isolation as non-batch mode if the framework restarts the binary/device
+after a crash with a reduced test filter (excluding finished and crashed test
+cases).</li>
+<li><strong>Granularity</strong>. Provides the same test-case granularity as
+non-batch mode.</li>
+</ul>
+
+<p>The disadvantages of using batch mode include:</p>
+<ul>
+<li><strong>Maintenance cost</strong>. If the GTest logging format changes,
+all tests will break.</li>
+<li><strong>Confusion</strong>. A test case can print something similar to GTest
+progress format, which can confuse the format.</li>
+</ul>
+<p>Because of these disadvantages, we have temporarily removed the option to use
+command line output. We will revisit this option in the future to improve the
+reliability of this function.</p>
+
+<h2 id="hostbinarytest">HostBinaryTest template</h2>
+<p>The HostBinaryTest template includes host-side executables that do not exist
+in other directories or in Python scripts. These tests include:</p>
+<ul>
+<li>Compiled test binaries executable on host</li>
+<li>Executable scripts in shell, Python, or other languages</li>
+</ul>
+<p>One example is the
+<a href="https://android.googlesource.com/platform/test/vts-testcase/security/+/master/selinux/policy/AndroidTest.xml" class="external">VTS
+Security SELinux policy host-side test</a>:</p>
+
+<pre class="devsite-click-to-copy">
+&lt;configuration description="Config for VTS Security SELinux policy host-side test cases"&gt;
+ ...
+ &lt;test class="com.android.tradefed.testtype.VtsMultiDeviceTest"&gt;
+ &lt;option name="test-module-name" value="VtsSecuritySelinuxPolicyHost"/&gt;
+ &lt;option name="binary-test-source" value="out/host/linux-x86/bin/VtsSecuritySelinuxPolicyHostTest" /&gt;
+ &lt;option name="binary-test-type" value="host_binary_test"/&gt;
+ &lt;/test&gt;
+&lt;/configuration&gt;
+</pre>
+
+<p>HostBinaryTest does not extend the BinaryTest template but does use similar
+test configurations. In the above example, the <code>binary-test-source</code>
+option specifies a host-side relative path to the test executable, and
+<code>binary-test-type</code> is <code>host_binary_test</code>. Similar to
+BinaryTest template, the binary filename is used as the test case name by
+default.</p>
+
+<h2 id="extending-existing-templates">Extending existing templates</h2>
+<p>You can use templates directly in the test config to include non-Python tests
+or extend them in a subclass to handle specific test requirements. Templates in
+the VTS repo have the following extensions:</p>
+
+<p><img src="images/vts_template_extension.png"></p>
+<figcaption><strong>Figure 5.</strong> Extending existing templates in the VTS
+repo.</figcaption>
+
+<p>Developers are encouraged to extend any existing template for any specific
+test requirements. Common reasons to extend templates include:</p>
+<ul>
+<li>Special test setup procedures, such as preparing a device with special
+commands.</li>
+<li>Generating different test cases and test names.</li>
+<li>Parsing results by reading command output or using other conditions.</li>
+</ul>
+<p>To make it easier to extend existing templates, the templates contain methods
+specialized for each functionality. If you have improved designs for existing
+templates, we encourage you to contribute to the VTS code base.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/en/devices/architecture/dto/multiple.html b/en/devices/architecture/dto/multiple.html
index 52f47a46..f431a9d7 100644
--- a/en/devices/architecture/dto/multiple.html
+++ b/en/devices/architecture/dto/multiple.html
@@ -43,12 +43,18 @@ DTs.</figcaption>
<p>The bootloader should be able to:</p>
<ul>
-<li>read the SoC ID and select the main DT correspondingly, and</li>
-<li>read the board ID and select the overlay DT accordingly.</li>
+<li>Read the SoC ID and select the corresponding main device tree, and</li>
+<li>Read the board ID and select the set of overlay device trees accordingly.
+</li>
</ul>
-<p>Only one main DT and one overlay DT are selected for use at runtime, and the
-selected pair must be compatible.</p>
+<p>Only one main DT should be selected for use at runtime. Multiple overlay DTs
+may be selected but they must be compatible with the chosen main DT. Using
+multiple overlays can help avoid storing one overlay per board within the DTBO
+partition and enable the bootloader to determine the subset of required overlays
+based on the board ID (or possibly by probing the peripherals). For
+example, Board A may need the devices added by the overlays 1, 3, and 5 while
+Board B may need the devices added by the overlays 1, 4, and 5.</p>
<h2 id=partition>Partitioning</h2>
<p>To partition, determine a bootloader runtime-accessible and trusted location
diff --git a/en/devices/architecture/hidl-cpp/index.html b/en/devices/architecture/hidl-cpp/index.html
index 7d8466cb..28c4aa0a 100644
--- a/en/devices/architecture/hidl-cpp/index.html
+++ b/en/devices/architecture/hidl-cpp/index.html
@@ -117,7 +117,7 @@ a binderized service. Example daemon code (for pure binderized service):</p>
<pre class="prettyprint">
int main(int /* argc */, char* /* argv */ []) {
- Nfc nfc = new Nfc();
+ sp<INfc> nfc = new Nfc();
const status_t status = nfc-&gt;registerAsService();
if (status != ::android::OK) {
return 1; // or handle error
diff --git a/en/devices/architecture/hidl-java/index.html b/en/devices/architecture/hidl-java/index.html
index 3b94247e..c4218160 100644
--- a/en/devices/architecture/hidl-java/index.html
+++ b/en/devices/architecture/hidl-java/index.html
@@ -136,7 +136,7 @@ to run the service is:</p>
import android.hardware.foo.V1_0.IFoo;
import android.hardware.foo.V1_0.IFooCallback.Stub;
....
-class FooCallback extends IFoo.Stub {
+class FooCallback extends IFooCallback.Stub {
// implement methods
}
....
diff --git a/en/devices/architecture/hidl/versioning.html b/en/devices/architecture/hidl/versioning.html
index 13bce259..52552f0c 100644
--- a/en/devices/architecture/hidl/versioning.html
+++ b/en/devices/architecture/hidl/versioning.html
@@ -112,6 +112,54 @@ types from the older version of the package, and inheritance of a subset of
old-package interfaces.</li>
</ul>
+<h2 id=structuring>Structuring interfaces</h2>
+
+<p>For a well structured interface, adding new types of functionality that
+are not part of the original design should require a modification to the HIDL
+interface. Conversely, if you can or expect to make a change on both sides of
+the interface that introduces new functionality without changing the interface
+itself, then the interface is not structured.</p>
+
+<p>Treble supports separately-compiled vendor and system components in which the
+<code>vendor.img</code> on a device and the <code>system.img</code> can be
+compiled separately. All interactions between <code>vendor.img</code> and
+<code>system.img</code> must be explicitly and thoroughly defined so they can
+continue to work for many years. This includes many API surfaces, but a major
+surface is the IPC mechanism HIDL uses for interprocess communication on the
+<code>system.img</code>/<code>vendor.img</code> boundary.</p>
+
+<h3 id="structuring-requirements">Requirements</h3>
+<p>All data passed through HIDL must be explicitly defined. To ensure an
+implementation and client can continue to work together even when compiled
+separately or developed on independently, data must adhere to the following
+requirements:</p>
+
+<ul>
+<li>Can be described in HIDL directly (using structs enums, etc.) with
+semantic names and meaning.</li>
+<li>Can be described by a public standard such as ISO/IEC 7816.</li>
+<li>Can be described by a hardware standard or physical layout of hardware.</li>
+<li>Can be opaque data (such as public keys, ids, etc.) if necessary.</li>
+</ul>
+
+<p>If opague data is used, it must be read only by one side of the HIDL
+interface. For example, if <code>vendor.img</code> code gives a component on the
+<code>system.img</code> a string message or <code>vec&lt;uint8_t&gt;</code>
+data, that data cannot be parsed by the <code>system.img</code> itself; it can
+only be passed back to <code>vendor.img</code> to interpret. <strong>When
+passing a value from <code>vendor.img</code> to vendor code on
+<code>system.img</code> or to another device, the format of the data and how it
+is to be interpreted must be exactly described and is still part of the
+interface</strong>.</p>
+
+<h3 id="structuring-guidelines">Guidelines</h3>
+
+<p>You should be able to write an implementation or client of a HAL using only
+the .hal files (i.e. you should not need to look at the Android source or public
+standards). We recommend specifying the exact required behavior. Statements such
+as "an implementation may do A or B" encourage implementations to become
+intertwined with the clients they are developed with.</p>
+
<h2 id=code-layout>HIDL code layout</h2>
<p>HIDL includes core and vendor packages.</p>
diff --git a/en/devices/tech/config/filesystem.html b/en/devices/tech/config/filesystem.html
index 10b7f0b4..73633943 100644
--- a/en/devices/tech/config/filesystem.html
+++ b/en/devices/tech/config/filesystem.html
@@ -244,7 +244,8 @@ the autogenerated header file by adding to your module's <code>Android.mk</code>
and including the empty faux library. For example, in <code>Android.mk</code>,
add the following:</p>
-<pre class="prettyprint"> LOCAL_STATIC_LIBRARIES := liboemaids</pre>
+<pre class="prettyprint">LOCAL_HEADER_LIBRARIES := oemaids_headers</pre>
+
<p>In your C code, <code>#include "generated_oem_aid.h"</code> and start using
the declared identifiers. For example, in <code>my_file.c</code>, add the
following: </p>
diff --git a/en/devices/tech/config/namespaces_libraries.html b/en/devices/tech/config/namespaces_libraries.html
index b91cbe23..1e94bf1b 100644
--- a/en/devices/tech/config/namespaces_libraries.html
+++ b/en/devices/tech/config/namespaces_libraries.html
@@ -61,6 +61,26 @@ additional native libraries accessible to apps by putting them under the
<code>/vendor/etc/public.libraries.txt</code>
</p>
+<p>
+Starting from Android 8.0, vendor public libraries have the following additional
+restrictions and required setups:
+</p>
+
+<ol>
+ <li>The native library in vendor must be properly labeled so it can be
+ accessible to apps. If access is required by any apps (including third
+ party apps), the library must be labeled as <code>same_process_hal_file</code>
+ in a vendor-specific <code>file_contexts</code> file as follows:
+ <pre class="devsite-click-to-copy">/vendor/lib(64)?/libnative.so u:object_r:same_process_hal_file:s0</pre>
+ where <code>libnative.so</code> is the name of the native library.
+ </li>
+ <li>The library, either directly or transitively via its dependencies, must not
+ depend on system libraries other than VNDK-SP and LLNDK libraries. The list of
+ VNDK-SP and LLNDK libraries can be found at
+ <code>development/vndk/tools/definition/tool/datasets/eligible-list-&lt;version&gt;-release.csv</code>.
+ </li>
+</ol>
+
<h2 id="updating-app-non-public">Updating apps to not use non-public native libraries</h2>
<p>
diff --git a/en/devices/tech/config/perms-whitelist.html b/en/devices/tech/config/perms-whitelist.html
index c3de0de0..918f89eb 100644
--- a/en/devices/tech/config/perms-whitelist.html
+++ b/en/devices/tech/config/perms-whitelist.html
@@ -135,7 +135,7 @@
transitional log-mode:
</p>
-<pre class="devsite-click-to-copy">ro.control_privapp_permission=log</pre>
+<pre class="devsite-click-to-copy">ro.control_privapp_permissions=log</pre>
<p>
Violations are reported in the log file, but permissions are still granted.
@@ -158,11 +158,11 @@ PackageManager: Privileged permission {PERMISSION_NAME} for package {PACKAGE_NAM
<p>
After whitelists are in place, enable runtime enforcement by setting the build
- property <code>ro.control_privapp_permission=enforce</code>.
+ property <code>ro.control_privapp_permissions=enforce</code>.
</p>
<aside class="note"><strong>Note:</strong> The
- <code>ro.control_privapp_permission</code> property state must adhere to
+ <code>ro.control_privapp_permissions</code> property state must adhere to
<a href="/compatibility/android-cdd#9_1_permissions">CDD section 9.1
requirements</a>.</aside>
diff --git a/en/devices/tech/config/uicc.html b/en/devices/tech/config/uicc.html
index 1fa6952c..96c1d360 100644
--- a/en/devices/tech/config/uicc.html
+++ b/en/devices/tech/config/uicc.html
@@ -29,7 +29,7 @@ Android platform loads certificates stored on a UICC and grants permission to
apps signed by these certificates to make calls to a handful of special APIs.
</p>
<p>Android 7.0 extends this feature to support other storage sources, such as
-Access File Rule (ARF), for UICC carrier privilege rules, dramatically
+Access Rule File (ARF), for UICC carrier privilege rules, dramatically
increasing the number of carriers that can use the APIs. For an API reference,
see <a href="#carrierconfigmanager">CarrierConfigManager</a>; for instructions,
see <a href="/devices/tech/config/carrier.html">Carrier
diff --git a/en/devices/tech/ota/ab/index.html b/en/devices/tech/ota/ab/index.html
index 48a9fea5..c2a9c447 100644
--- a/en/devices/tech/ota/ab/index.html
+++ b/en/devices/tech/ota/ab/index.html
@@ -31,6 +31,9 @@
updates successfully.
</p>
+ <p>For more information about A/B system updates and how they work, see
+ <a href="#slots">Partition selection (slots)</a>.
+
<p>A/B system updates provide the following benefits:</p>
<ul>
diff --git a/en/devices/tech/ota/index.html b/en/devices/tech/ota/index.html
index 1565e3b2..7b2f0dd0 100644
--- a/en/devices/tech/ota/index.html
+++ b/en/devices/tech/ota/index.html
@@ -35,7 +35,7 @@
applications installed by the user from Google Play.
</p>
- <h2 id="ab_updates">A/B updates</h2>
+ <h2 id="ab_updates">A/B (seamless) system updates</h2>
<p>
Modern A/B devices have two copies of each partition, A and B. Devices
@@ -50,7 +50,7 @@
</a>.
</p>
- <h2 id="nonab_updates">Non-A/B updates</h2>
+ <h2 id="nonab_updates">Non-A/B system updates</h2>
<p>
Older devices have a special recovery partition containing the software
diff --git a/en/devices/tech/perf/boot-times.html b/en/devices/tech/perf/boot-times.html
index a7588301..fb6ad441 100644
--- a/en/devices/tech/perf/boot-times.html
+++ b/en/devices/tech/perf/boot-times.html
@@ -255,17 +255,27 @@ us uncover many meaningful bugs in some Android device drivers).
Many processes launch during boot, but only components in critical path
(bootloader > kernel > init > file system mount > zygote > system server)
directly affect boot time. Profile <strong>initcall</strong> during kernel
-booting to identify peripheral/components that are not critical to the
-start init process, then delay those peripherals/components until later
-in the boot process.
+booting to identify peripheral/components that are slow and not critical
+to start init process, then delay those peripherals/components until later
+in the boot process by moving into loadable kernel modules. Moving to
+asynchronous device/driver probe can also help to parallel slow components
+in kernel > init critical path.
</p>
<pre
class="prettyprint">
BoardConfig-common.mk:
BOARD_KERNEL_CMDLINE += initcall_debug ignore_loglevel
+
+driver:
+ .probe_type = PROBE_PREFER_ASYNCHRONOUS,
</pre>
+<p class="note">
+<strong>Note:</strong> Driver dependencies must be resolved carefully by adding
+<code>EPROBEDEFER</code> support.
+</p>
+
<h2 id="optimizing-i-o-efficiency">Optimizing I/O efficiency</h2>
<p>
@@ -422,6 +432,12 @@ early stage init should be deferred to boot completed.</li></ul>
</li>
</ul>
+<p class="note">
+<strong>Note:</strong> Property service is part of init process, so calling
+<code>setproperty</code> during boot can lead a long delay if init is busy in
+builtin commands.
+</p>
+
<h3 id="using-scheduler-tuning">Using scheduler tuning</h3>
<p>
diff --git a/en/security/_toc.yaml b/en/security/_toc.yaml
index b24dd01b..ae1f236f 100644
--- a/en/security/_toc.yaml
+++ b/en/security/_toc.yaml
@@ -47,6 +47,8 @@ toc:
section:
- title: 2018 Bulletins
section:
+ - title: April
+ path: /security/bulletin/2018-04-01
- title: March
path: /security/bulletin/2018-03-01
- title: February
@@ -131,6 +133,8 @@ toc:
path: /security/bulletin/pixel/index
- title: 2018 Bulletins
section:
+ - title: April
+ path: /security/bulletin/pixel/2018-04-01
- title: March
path: /security/bulletin/pixel/2018-03-01
- title: February
diff --git a/en/security/bulletin/2018-02-01.html b/en/security/bulletin/2018-02-01.html
index 972ff4d2..8fff7409 100644
--- a/en/security/bulletin/2018-02-01.html
+++ b/en/security/bulletin/2018-02-01.html
@@ -20,7 +20,7 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
- <p><em>Published February 5, 2018 | Updated February 14, 2018</em></p>
+ <p><em>Published February 5, 2018 | Updated April 2, 2018</em></p>
<p>
@@ -352,16 +352,6 @@ a privileged process.</p>
<th>Component</th>
</tr>
<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=8ba78e506e5002cdae525dd544dbf1df0ccce1ef">
-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>Critical</td>
- <td>WLan</td>
- </tr>
- <tr>
<td>CVE-2017-15860</td>
<td>A-68992416<br />
<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=71331327ac389bff7d5af2707c4325e5b7949013">
@@ -650,5 +640,10 @@ security bulletins.
<td>Corrected CVE numbers for CVE-2017-13273, CVE-2017-15860, CVE-2017-15861 and
CVE-2017-15862.</td>
</tr>
+ <tr>
+ <td>1.3</td>
+ <td>April 2, 2018</td>
+ <td>Moved CVE-2017-15817 from the February Android Bulletin to the February Pixel Bulletin.</td>
+ </tr>
</table>
</body></html>
diff --git a/en/security/bulletin/2018-04-01.html b/en/security/bulletin/2018-04-01.html
new file mode 100644
index 00000000..21bb5aa5
--- /dev/null
+++ b/en/security/bulletin/2018-04-01.html
@@ -0,0 +1,2700 @@
+<html devsite>
+ <head>
+ <title>Android Security Bulletin—April 2018</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+<p><em>Published April 2, 2018 | Updated April 4, 2018</em></p>
+
+<p>
+The Android Security Bulletin contains details of security vulnerabilities
+affecting Android devices. Security patch levels of 2018-04-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">Check and update
+your Android version</a>.
+</p>
+<p>
+Android partners are notified of all issues at least a month before publication.
+Source code patches for these issues have been released to the Android Open
+Source Project (AOSP) repository and linked from this bulletin. This bulletin
+also includes links to patches outside of AOSP.
+</p>
+<p>
+The most severe of these issues is a critical security vulnerability in Media
+framework that could enable a remote attacker using a specially crafted file to
+execute arbitrary code within the context of a privileged process. The
+<a href="/security/overview/updates-resources.html#severity">severity
+assessment</a> is based on the effect that exploiting the vulnerability would
+possibly have on an affected device, assuming the platform and service
+mitigations are turned off for development purposes or if successfully bypassed.
+</p>
+<p>
+We have had no reports of active customer exploitation or abuse of these newly
+reported issues. Refer to the
+<a href="#mitigations">Android and Google Play Protect mitigations</a>
+section for details on the
+<a href="/security/enhancements/index.html">Android security platform protections</a>
+and Google Play Protect, which improve the security of the Android platform.
+</p>
+<p class="note">
+<strong>Note:</strong> Information on the latest over-the-air update (OTA) and
+firmware images for Google devices is available in the
+<a href="/security/bulletin/pixel/2018-04-01.html">April 2018
+Pixel&hairsp;/&hairsp;Nexus Security Bulletin</a>.
+</p>
+
+<h2 id="announcements">Announcements</h2>
+<p>We would like to thank Qualcomm for their dedicated efforts to improve the
+security of mobile devices. The 2018-04-05 SPL includes a cumulative list of
+addressed security issues taken from Qualcomm’s 2014–2016 partner focused
+bulletins, and is a reflection of their continued effort and commitment.</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/index.html">Android security platform</a>
+and service protections such as
+<a href="https://www.android.com/play-protect">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">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">Google Mobile Services</a>, and is
+especially important for users who install apps from outside of Google
+Play.</li>
+</ul>
+<h2 id="2018-04-01-details">2018-04-01 security patch level vulnerability details</h2>
+<p>
+In the sections below, we provide details for each of the security
+vulnerabilities that apply to the 2018-04-01 patch level. Vulnerabilities are
+grouped under the component that 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, like 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="android-runtime">Android runtime</h3>
+<p>The most severe vulnerability in this section could enable a remote attacker
+to bypass user interaction requirements in order to gain access to additional
+permissions.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13274</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/0b57631939f5824afef06517df723d2e766e0159">A-71360761</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</table>
+
+
+<h3 id="framework">Framework</h3>
+<p>The most severe vulnerability in this section could enable a local malicious
+application to bypass operating system protections that isolate application
+data from other applications.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13275</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/minikin/+/3056f04d293bd16e56cc72e10edd060b8c1ca0f5">A-70808908</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>8.0, 8.1</td>
+ </tr>
+</table>
+
+
+<h3 id="media-framework">Media framework</h3>
+<p>The most severe vulnerability in this section could enable a remote attacker
+using a specially crafted file to execute arbitrary code within the context of
+a privileged process.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13276</td>
+ <td><a href="https://android.googlesource.com/platform/external/aac/+/1b9cbed05b4fd376677d67b6442aa30256834ed4">A-70637599</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13277</td>
+ <td><a href="https://android.googlesource.com/platform/external/libhevc/+/b7d4d588e8fcbe254f7a3d9a247af4b91ccc7285">A-72165027</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13278</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/8a54af87b632c03ff2ae15a4a088801bb39fdae7">A-70546581</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13279</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/av/+/d32af5db10f018219e0379f333c7f0452a4f7a31">A-68399439</a></td>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13280</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/ex/+/ebd849ed8aa77c0e1dad7a08df4a55845a067b76">A-71361451</a></td>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</table>
+
+
+<h3 id="system">System</h3>
+<p>The most severe vulnerability in this section could enable a remote attacker
+using a specially crafted file to execute arbitrary code within the context of
+a privileged process.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13281</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/6f3ddf3f5cf2b3eb52fb0adabd814a45cff07221">A-71603262</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13282</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/6ecbbc093f4383e90cbbf681cd55da1303a8ef94">A-71603315</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13283</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/e4ec79be45304f819c88c8dbf826d58b68f6c8f8">A-71603410</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13267</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/57dc5964428697a104988f0aa0d1fd1d88fec939">A-69479009</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13284</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/7f8bfcc35285ca6e93a4436699bc95c13b920caf">A-70808273</a></td>
+ <td>EoP</td>
+ <td>Critical</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13285</td>
+ <td><a href="https://android.googlesource.com/platform/external/svox/+/cee78199bbfae81f54a40671db47096f5f32cdad">A-69177126</a></td>
+ <td>RCE</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13286</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/47ebfaa2196aaf4fbeeec34f1a1c5be415cf041b">A-69683251</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13287</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/09ba8fdffd9c8d74fdc6bfb51bcebc27fc43884a">A-71714464</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13288</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/b796cd32a45bcc0763c50cc1a0cc8236153dcea3">A-69634768</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13289</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/5a3d2708cd2289a4882927c0e2cb0d3c21a99c02">A-70398564</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13290</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/72b1cebaa9cc7ace841d887f0d4a4bf6daccde6e">A-69384124</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13291</td>
+ <td><a href="https://android.googlesource.com/platform/system/bt/+/1696f97011f5f30f1a630f3b24442ca64232b1f5">A-71603553</a></td>
+ <td>DoS</td>
+ <td>High</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</table>
+
+<h2 id="2018-04-05-details">2018-04-05 security patch level vulnerability details</h2>
+<p>In the sections below, we provide details for each of the security
+vulnerabilities that apply to the 2018-04-05 patch level. Vulnerabilities are
+grouped under the component that 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, like the AOSP change list.</p>
+
+<p>When multiple changes relate to a single bug, additional references are
+linked to numbers following the bug ID.</p>
+
+<h3 id="broadcom-components">Broadcom components</h3>
+<p>The most severe vulnerability in this section could enable a proximate
+attacker using a specially crafted file to execute arbitrary code within the
+context of a privileged process.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13292</td>
+ <td>A-70722061<a href="#asterisk">*</a><br />
+ B-V2018010201</td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>bcmdhd driver</td>
+ </tr>
+</table>
+
+
+<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="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13293</td>
+ <td>A-62679701<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>NFC driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-5754</td>
+ <td>A-69856074<a href="#asterisk">*</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>Memory mapping</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-16534</td>
+ <td>A-69052594<br />
+ <a href="https://github.com/torvalds/linux/commit/2e1c42391ff2556387b3cb6308b24f6f65619feb">
+Upstream kernel</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>USB</td>
+ </tr>
+</table>
+
+
+<h3 id="qualcomm-components">Qualcomm components</h3>
+<p>The most severe vulnerability in this section could enable a proximate
+attacker using a specially crafted file to execute arbitrary code within the
+context of a privileged process.</p>
+
+<table>
+ <col width="17%">
+ <col width="21%">
+ <col width="9%">
+ <col width="14%">
+ <col width="37%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-15822</td>
+ <td>A-71501534<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=dba4c106922d637ff5965b023b451f6273348eb6">
+QC-CR#2123807</a></td>
+ <td>RCE</td>
+ <td>Critical</td>
+ <td>WiFi</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-17770</td>
+ <td>A-70237684<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=284f963af0accf7f921ec10e23acafd71c3a724b">QC-CR#2103199</a>
+ [<a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=3b0c1463e4a6b37d4413a4ba02f1727eeb8693be">2</a>]</td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>Binder</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3566</td>
+ <td>A-72957177<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=11868230d4fe79f76eae30c742b4c68c2899caea">
+QC-CR#2143847</a></td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3563</td>
+ <td>A-72956842<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=c643a15d73b3fb6329b002662e72dfa96acfdb8a">QC-CR#2143207</a>
+ [<a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=0b8320cd49255177f0c0c8589708e983116ac420">2</a>]
+ [<a href="https://source.codeaurora.org/quic/la/platform/vendor/opensource/audio-kernel/commit/?id=d5231fa166521a32621c32fb749b80fc37c13c6a">3</a>]</td>
+ <td>EoP</td>
+ <td>High</td>
+ <td>Audio Driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13077</td>
+ <td>A-72957017<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=776f17c87599fae3202e69bb5718ac9062f14695">
+QC-CR#2129237</a></td>
+ <td>ID</td>
+ <td>High</td>
+ <td>WLAN</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 AMSS security bulletin or security
+alert. The severity assessment of these issues is provided directly by
+Qualcomm.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-18071</td>
+ <td>A-68326813<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8274</td>
+ <td>A-68141335<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18146</td>
+ <td>A-70221449<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18128</td>
+ <td>A-70221448<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3592</td>
+ <td>A-71501105<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3591</td>
+ <td>A-71501103<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18074</td>
+ <td>A-68326816<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18073</td>
+ <td>A-68326820<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18125</td>
+ <td>A-68326821<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-8275</td>
+ <td>A-68141336<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11011</td>
+ <td>A-68326823<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18137</td>
+ <td>A-67712318<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18134</td>
+ <td>A-67712320<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18136</td>
+ <td>A-68989810<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18140</td>
+ <td>A-68989811<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18135</td>
+ <td>A-68989813<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18142</td>
+ <td>A-68989814<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18138</td>
+ <td>A-68989815<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18139</td>
+ <td>A-68989819<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18129</td>
+ <td>A-68989822<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18132</td>
+ <td>A-68989825<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18133</td>
+ <td>A-68989826<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18072</td>
+ <td>A-68989828<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18126</td>
+ <td>A-68989829<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18144</td>
+ <td>A-70221450<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18145</td>
+ <td>A-70221453<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18147</td>
+ <td>A-70221456<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18130</td>
+ <td>A-70221460<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18143</td>
+ <td>A-70221461<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-18127</td>
+ <td>A-70221462<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component
+</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3590</td>
+ <td>A-71501106<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3593</td>
+ <td>A-71501107<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3589</td>
+ <td>A-71501108<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3594</td>
+ <td>A-71501112<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+</table>
+
+<h3 id="qualcomm-closed-source-components-2014-2016-cumulative-update">Qualcomm
+closed-source components 2014-2016 cumulative update</h3>
+<p>These vulnerabilities affect Qualcomm components and were shared by Qualcomm
+with their partners through Qualcomm AMSS security bulletins or security alerts
+between 2014 and 2016. They are included in this Android security bulletin in
+order to associate them with a security patch level (many Android devices may
+have already addressed these issues in prior updates). The severity assessment
+of these issues is provided directly by Qualcomm.</p>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2014-9996</td>
+ <td>A-37535090<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Critical</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9971</td>
+ <td>A-37546253<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9972</td>
+ <td>A-37546853<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10063</td>
+ <td>A-37534948<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10057</td>
+ <td>A-62261099<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10059</td>
+ <td>A-62260706<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10053</td>
+ <td>A-37544066<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10054</td>
+ <td>A-62261100<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10052</td>
+ <td>A-62258372<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10050</td>
+ <td>A-37546901<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10055</td>
+ <td>A-37545605<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10051</td>
+ <td>A-37546302<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10048</td>
+ <td>A-62258088<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10062</td>
+ <td>A-62258373<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10058</td>
+ <td>A-62260741<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10047</td>
+ <td>A-37538492<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10045</td>
+ <td>A-62258536<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10056</td>
+ <td>A-62261338<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9976</td>
+ <td>A-37534895<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10043</td>
+ <td>A-62259947<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10044</td>
+ <td>A-62260777<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10046</td>
+ <td>A-62261408<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9981</td>
+ <td>A-37534949<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9993</td>
+ <td>A-37540928<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9986</td>
+ <td>A-37534645<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9994</td>
+ <td>A-37538493<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9995</td>
+ <td>A-37546303<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9997</td>
+ <td>A-37546854<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9988</td>
+ <td>A-62258089<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9990</td>
+ <td>A-62261216<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9987</td>
+ <td>A-62261293<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9989</td>
+ <td>A-62261380<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9991</td>
+ <td>A-62261409<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-10039</td>
+ <td>A-62261608<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9985</td>
+ <td>A-62261609<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9204</td>
+ <td>A-37540929<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-0574</td>
+ <td>A-37546304<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9205</td>
+ <td>A-37534696<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9221</td>
+ <td>A-37534796<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9212</td>
+ <td>A-37535795<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9210</td>
+ <td>A-62258538<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9211</td>
+ <td>A-62261217<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9207</td>
+ <td>A-62261410<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9202</td>
+ <td>A-37540473<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9213</td>
+ <td>A-37547700<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9209</td>
+ <td>A-38193247<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9203</td>
+ <td>A-62261218<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9206</td>
+ <td>A-62261294<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9215</td>
+ <td>A-62251854<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9216</td>
+ <td>A-62260780<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9169</td>
+ <td>A-37535098<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9173</td>
+ <td>A-37536244<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9179</td>
+ <td>A-37542567<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9177</td>
+ <td>A-37544075<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9187</td>
+ <td>A-37544109<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9162</td>
+ <td>A-37544110<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9172</td>
+ <td>A-37545607<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9181</td>
+ <td>A-37546754<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9219</td>
+ <td>A-37546859<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9183</td>
+ <td>A-37546860<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9182</td>
+ <td>A-37546904<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9185</td>
+ <td>A-37546952<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9184</td>
+ <td>A-37546953<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9170</td>
+ <td>A-37546954<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9175</td>
+ <td>A-37547404<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9171</td>
+ <td>A-37547405<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9192</td>
+ <td>A-37547750<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9208</td>
+ <td>A-62258540<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9224</td>
+ <td>A-62259949<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9201</td>
+ <td>A-62260711<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9200</td>
+ <td>A-62260779<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9198</td>
+ <td>A-62261219<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9196</td>
+ <td>A-62261339<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9199</td>
+ <td>A-62261411<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9174</td>
+ <td>A-62258090<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9178</td>
+ <td>A-62258541<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9180</td>
+ <td>A-62260712<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9176</td>
+ <td>A-62260713<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9189</td>
+ <td>A-62260820<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9188</td>
+ <td>A-62260821<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-0576</td>
+ <td>A-37543715<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9156</td>
+ <td>A-62260743<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9195</td>
+ <td>A-62251855<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9197</td>
+ <td>A-62260742<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9218</td>
+ <td>A-62260781<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9217</td>
+ <td>A-62261295<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9166</td>
+ <td>A-62251856<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9164</td>
+ <td>A-62258542<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9190</td>
+ <td>A-62259744<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9159</td>
+ <td>A-62259745<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9167</td>
+ <td>A-62259950<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9191</td>
+ <td>A-62260394<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9161</td>
+ <td>A-62260462<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9163</td>
+ <td>A-62260822<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9158</td>
+ <td>A-62261381<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9152</td>
+ <td>A-37546305<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9144</td>
+ <td>A-37540474<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9165</td>
+ <td>A-37539224<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9223</td>
+ <td>A-37543718<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9222</td>
+ <td>A-62258374<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9193</td>
+ <td>A-62259951<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9194</td>
+ <td>A-62261296<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9153</td>
+ <td>A-62260395<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9151</td>
+ <td>A-62260396<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9148</td>
+ <td>A-62260463<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9149</td>
+ <td>A-62260744<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9146</td>
+ <td>A-62260745<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9186</td>
+ <td>A-62261340<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9150</td>
+ <td>A-62261341<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9147</td>
+ <td>A-62261488<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-8593</td>
+ <td>A-37535091<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9160</td>
+ <td>A-37546254<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-8594</td>
+ <td>A-37546855<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9145</td>
+ <td>A-37535099<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9143</td>
+ <td>A-62260900<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9157</td>
+ <td>A-62260934<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9141</td>
+ <td>A-62261297<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9140</td>
+ <td>A-62259746<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9135</td>
+ <td>A-37546950<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9138</td>
+ <td>A-62259952<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9136</td>
+ <td>A-62260823<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9137</td>
+ <td>A-62260975<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9131</td>
+ <td>A-37542272<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9139</td>
+ <td>A-62251857<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9130</td>
+ <td>A-62252820<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9129</td>
+ <td>A-62260397<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9133</td>
+ <td>A-62260464<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9127</td>
+ <td>A-62260824<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9132</td>
+ <td>A-62260976<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9134</td>
+ <td>A-62261382<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9128</td>
+ <td>A-62261610<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9065</td>
+ <td>A-37538494<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9064</td>
+ <td>A-37546801<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9063</td>
+ <td>A-37546802<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9126</td>
+ <td>A-62258375<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9124</td>
+ <td>A-62252821<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9142</td>
+ <td>A-62260901<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9066</td>
+ <td>A-37540467<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2014-9998</td>
+ <td>A-62260398<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9220</td>
+ <td>A-62261299<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9122</td>
+ <td>A-62261611<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9123</td>
+ <td>A-62259953<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9118</td>
+ <td>A-62261220<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9120</td>
+ <td>A-62261298<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9119</td>
+ <td>A-62261489<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9116</td>
+ <td>A-37540934<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9115</td>
+ <td>A-37544076<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9113</td>
+ <td>A-37544077<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9112</td>
+ <td>A-62258091<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9114</td>
+ <td>A-62259954<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9111</td>
+ <td>A-62260465<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9108</td>
+ <td>A-62260714<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9109</td>
+ <td>A-62260977<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2015-9110</td>
+ <td>A-62261383<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10492</td>
+ <td>A-62261300<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10482</td>
+ <td>A-62260978<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10483</td>
+ <td>A-62258092<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10489</td>
+ <td>A-62258093<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10487</td>
+ <td>A-62259955<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10477</td>
+ <td>A-62260399<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10485</td>
+ <td>A-62260902<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10478</td>
+ <td>A-62260979<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10476</td>
+ <td>A-62260980<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10475</td>
+ <td>A-62260981<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10474</td>
+ <td>A-62260982<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10494</td>
+ <td>A-62261102<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10484</td>
+ <td>A-62261342<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10491</td>
+ <td>A-62261490<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10486</td>
+ <td>A-62267788<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10472</td>
+ <td>A-62259956<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10490</td>
+ <td>A-62260468<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10480</td>
+ <td>A-62261301<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10467</td>
+ <td>A-37526814<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10495</td>
+ <td>A-62261103<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10481</td>
+ <td>A-62260401<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10479</td>
+ <td>A-62261412<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10384</td>
+ <td>A-37536238<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10385</td>
+ <td>A-37544067<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10452</td>
+ <td>A-37523164<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10423</td>
+ <td>A-37534896<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10424</td>
+ <td>A-37540034<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10449</td>
+ <td>A-37546861<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10454</td>
+ <td>A-37544078<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10450</td>
+ <td>A-62260825<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10451</td>
+ <td>A-62267789<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10386</td>
+ <td>A-37534646<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10469</td>
+ <td>A-37542273<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10440</td>
+ <td>A-37535092<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10499</td>
+ <td>A-62259957<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10446</td>
+ <td>A-37547406<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10473</td>
+ <td>A-62260746<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10466</td>
+ <td>A-62260783<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10457</td>
+ <td>A-62260826<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10442</td>
+ <td>A-62267790<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10433</td>
+ <td>A-37540468<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10430</td>
+ <td>A-37540930<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10445</td>
+ <td>A-37545608<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10426</td>
+ <td>A-62252822<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10435</td>
+ <td>A-62260402<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10425</td>
+ <td>A-62260983<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10438</td>
+ <td>A-62261302<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10436</td>
+ <td>A-62261494<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10439</td>
+ <td>A-62263656<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10431</td>
+ <td>A-37540931<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10434</td>
+ <td>A-37540932<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10432</td>
+ <td>A-37546902<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10462</td>
+ <td>A-37539225<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10443</td>
+ <td>A-37540475<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10427</td>
+ <td>A-62261495<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10387</td>
+ <td>A-32583751<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10390</td>
+ <td>A-37536239<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10498</td>
+ <td>A-32582870<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10419</td>
+ <td>A-32577129<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10420</td>
+ <td>A-32579916<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10429</td>
+ <td>A-32579411<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10493</td>
+ <td>A-32574787<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10447</td>
+ <td>A-37542968<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10444</td>
+ <td>A-37544163<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-5348</td>
+ <td>A-37546905<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10421</td>
+ <td>A-32579095<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10455</td>
+ <td>A-32580964<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10441</td>
+ <td>A-32582927<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10418</td>
+ <td>A-37547407<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10417</td>
+ <td>A-32576287<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10464</td>
+ <td>A-32580243<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10458</td>
+ <td>A-32583424<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10471</td>
+ <td>A-37539226<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10416</td>
+ <td>A-62259747<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10411</td>
+ <td>A-62260404<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10496</td>
+ <td>A-62260469<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10410</td>
+ <td>A-62260936<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10414</td>
+ <td>A-62260937<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10461</td>
+ <td>A-62263657<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10460</td>
+ <td>A-62271227<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10392</td>
+ <td>A-37544068<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10409</td>
+ <td>A-37544164<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10459</td>
+ <td>A-62260716<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10407</td>
+ <td>A-62261222<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10406</td>
+ <td>A-62267791<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10497</td>
+ <td>A-62271228<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10501</td>
+ <td>A-62261303<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>High</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10381</td>
+ <td>A-37539788<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10380</td>
+ <td>A-37541976<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10412</td>
+ <td>A-37536245<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10415</td>
+ <td>A-62260403<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10422</td>
+ <td>A-37542966<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10456</td>
+ <td>A-62261413<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10428</td>
+ <td>A-37534697<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10448</td>
+ <td>A-62261414<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</td>
+ <td>Closed-source component</td>
+ </tr>
+ <tr>
+ <td>CVE-2016-10437</td>
+ <td>A-62260715<a href="#asterisk">*</a></td>
+ <td>N/A</td>
+ <td>Moderate</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">Check
+and update your Android version</a>.</p>
+<ul>
+<li>Security patch levels of 2018-04-01 or later address all issues associated
+with the 2018-04-01 security patch level.</li>
+<li>Security patch levels of 2018-04-05 or later address all issues associated
+with the 2018-04-05 security patch level and all previous patch levels.</li>
+</ul>
+<p>
+Device manufacturers that include these updates should set the patch string
+level to:
+</p>
+<ul>
+<li>[ro.build.version.security_patch]:[2018-04-01]</li>
+<li>[ro.build.version.security_patch]:[2018-04-05]</li>
+</ul>
+<p>
+<strong>2. Why does this bulletin have two security patch levels?</strong>
+</p>
+<p>
+This bulletin has two security patch levels so that Android partners have the
+flexibility to fix a subset of vulnerabilities that are similar across all
+Android devices more quickly. Android partners are encouraged to fix all issues
+in this bulletin and use the latest security patch level.
+</p>
+<ul>
+<li>Devices that use the 2018-04-01 security patch level must include all issues
+associated with that security patch level, as well as fixes for all issues
+reported in previous security bulletins.</li>
+<li>Devices that use the security patch level of 2018-04-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 Nexus devices available from the <a
+href="https://developers.google.com/android/nexus/drivers">Google Developer
+site</a>.
+</p>
+<p>
+<strong>6. Why are security vulnerabilities split between this bulletin and
+device/partner security bulletins, such as the Pixel / Nexus bulletin?</strong>
+</p>
+<p>
+Security vulnerabilities that are documented in this security bulletin are
+required in order to declare the latest security patch level on Android devices.
+Additional security vulnerabilities that are documented in the device/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">Samsung</a>,
+<a href="https://lgsecurity.lge.com/security_updates.html">LGE</a>, or
+<a href="/security/bulletin/pixel/">Pixel&hairsp;/&hairsp;Nexus</a>
+security bulletins.
+</p>
+<h2 id="versions">Versions</h2>
+<table>
+ <col width="25%">
+ <col width="25%">
+ <col width="50%">
+ <tr>
+ <th>Version</th>
+ <th>Date</th>
+ <th>Notes</th>
+ </tr>
+ <tr>
+ <td>1.0</td>
+ <td>April 2, 2018</td>
+ <td>Bulletin published.</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>April 4, 2018</td>
+ <td>Bulletin revised to include AOSP links.</td>
+ </tr>
+</table>
+</body></html>
diff --git a/en/security/bulletin/2018.html b/en/security/bulletin/2018.html
index 0df103d8..58c206cc 100644
--- a/en/security/bulletin/2018.html
+++ b/en/security/bulletin/2018.html
@@ -37,6 +37,21 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
<th>Security patch level</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/2018-04-01.html">April 2018</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/2018-04-01.html">English</a>&nbsp;/
+ <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>
+ -->
+ </td>
+ <td>April 2, 2018</td>
+ <td>2018-04-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-03-01.html">March 2018</a></td>
<td>Coming soon
<!--
diff --git a/en/security/bulletin/index.html b/en/security/bulletin/index.html
index 4cbf4c3b..b4bac017 100644
--- a/en/security/bulletin/index.html
+++ b/en/security/bulletin/index.html
@@ -68,6 +68,21 @@ 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/2018-04-01.html">April 2018</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/2018-04-01.html">English</a>&nbsp;/
+ <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>
+ -->
+ </td>
+ <td>April 2, 2018</td>
+ <td>2018-04-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/2018-03-01.html">March 2018</a></td>
<td>Coming soon
<!--
diff --git a/en/security/bulletin/pixel/2018-02-01.html b/en/security/bulletin/pixel/2018-02-01.html
index 6ebbbb9e..c8bcb259 100644
--- a/en/security/bulletin/pixel/2018-02-01.html
+++ b/en/security/bulletin/pixel/2018-02-01.html
@@ -22,7 +22,7 @@
-->
-<p><em>Published February 5, 2018 | Updated February 7, 2018</em></p>
+<p><em>Published February 5, 2018 | Updated April 2, 2018</em></p>
<p>
The Pixel&hairsp;/&hairsp;Nexus Security Bulletin contains details of security
@@ -249,6 +249,16 @@ Upstream kernel</a></td>
<th>Component</th>
</tr>
<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=8ba78e506e5002cdae525dd544dbf1df0ccce1ef">
+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>Critical</td>
+ <td>WLan</td>
+ </tr>
+ <tr>
<td>CVE-2017-15859</td>
<td>A-65468985<br />
<a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=88dcc44ea8fbe158d1dee3ea197e47794bf4449d">
@@ -620,6 +630,11 @@ bulletin, are not required for declaring a security patch level.
<td>February 7, 2018</td>
<td>Bulletin revised to include AOSP links.</td>
</tr>
+ <tr>
+ <td>1.3</td>
+ <td>April 2, 2018</td>
+ <td>Moved CVE-2017-15817 from the February Android Bulletin to the February Pixel Bulletin.</td>
+ </tr>
</table>
</body></html>
diff --git a/en/security/bulletin/pixel/2018-03-01.html b/en/security/bulletin/pixel/2018-03-01.html
index 799216b5..80184531 100644
--- a/en/security/bulletin/pixel/2018-03-01.html
+++ b/en/security/bulletin/pixel/2018-03-01.html
@@ -162,15 +162,6 @@ additional references are linked to numbers following the bug ID.
<td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
</tr>
<tr>
- <td>CVE-2017-13266</td>
- <td><a href="https://android.googlesource.com/platform/system/bt/+/2f2043f18463a5c963c138d24346870b1066e7a6">
- A-69478941</a>
- </td>
- <td>EoP</td>
- <td>Moderate</td>
- <td>5.1.1, 6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
- </tr>
- <tr>
<td>CVE-2017-13268</td>
<td><a href="https://android.googlesource.com/platform/system/bt/+/49a57cd2346a716eca07153ac83026787fb9d03a">
A-67058064</a>
diff --git a/en/security/bulletin/pixel/2018-04-01.html b/en/security/bulletin/pixel/2018-04-01.html
new file mode 100644
index 00000000..0322f70a
--- /dev/null
+++ b/en/security/bulletin/pixel/2018-04-01.html
@@ -0,0 +1,1037 @@
+<html devsite>
+ <head>
+ <title>Pixel&hairsp;/&hairsp;Nexus Security Bulletin—April 2018</title>
+ <meta name="project_path" value="/_project.yaml" />
+ <meta name="book_path" value="/_book.yaml" />
+ </head>
+ <body>
+ <!--
+ Copyright 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ //www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ -->
+
+
+<p><em>Published April 2, 2018 | Updated April 4, 2018</em></p>
+
+<p>
+The Pixel&hairsp;/&hairsp;Nexus Security Bulletin contains details of security
+vulnerabilities and functional improvements affecting
+<a href="https://support.google.com/pixelphone/answer/4457705#pixel_phones&nexus_devices">supported
+Google Pixel and Nexus devices</a> (Google devices). For Google devices,
+security patch levels of 2018-04-05 or later address all issues in this
+bulletin and all issues in the <a href="/security/bulletin/2018-04-01">April
+2018 Android Security Bulletin</a>. To learn how to check a device's security
+patch level, see <a href="https://support.google.com/pixelphone/answer/4457705">Check
+and update your Android version</a>.</p>
+<p>
+All supported Google devices will receive an update to the 2018-04-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/nexus/images">Google Developer
+site</a>.
+</p>
+
+<h2 id="announcements">Announcements</h2>
+<p>In addition to the security vulnerabilities described in the
+<a href="/security/bulletin/2018-04-01">April 2018 Android Security Bulletin</a>,
+Google devices also contain patches for the security vulnerabilities
+described below. Partners were notified of these issues at least a month ago
+and may choose to incorporate them as part of their device updates.</p>
+
+<h2 id="security-patches">Security patches</h2>
+<p>
+Vulnerabilities are grouped under the component that 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="https://source.android.com/security/overview/updates-resources.html#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,
+like 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>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</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>ID</td>
+ <td>Moderate</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13295</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/a2a36541f0b3603335e74da0a8d2b6a9d5bcec3f">A-62537081</a></td>
+ <td>DoS</td>
+ <td>Moderate</td>
+ <td>6.0, 6.0.1, 7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+</table>
+
+
+<h3 id="media-framework">Media framework</h3>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13300</td>
+ <td>A-71567394<a href="#asterisk">*</a></td>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1</td>
+ </tr>
+ <tr>
+ <td rowspan="2">CVE-2017-13296</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/external/libavc/+/3e3e81ede5229c5a9c6b7bf6a63844ecf07ae3ae">A-70897454</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1</td>
+ </tr>
+ <tr>
+ <td rowspan="2">CVE-2017-13297</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/external/libhevc/+/daaece3e79db33f6c473bb54a39933d387a9bf95">A-71766721</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1</td>
+ </tr>
+ <tr>
+ <td rowspan="2">CVE-2017-13298</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/frameworks/av/+/12e25a753f4b6f0aa935e54bae66023bd8321598">A-72117051</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1</td>
+ </tr>
+ <tr>
+ <td rowspan="2">CVE-2017-13299</td>
+ <td rowspan="2"><a href="https://android.googlesource.com/platform/external/libavc/+/d849abf312a365553ce68aec32dea93230036abe">A-70897394</a></td>
+ <td>NSI</td>
+ <td>NSI</td>
+ <td>7.0, 7.1.1, 7.1.2, 8.0, 8.1</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>High</td>
+ <td>6.0, 6.0.1</td>
+ </tr>
+</table>
+
+
+<h3 id="system">System</h3>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Updated AOSP versions</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>DoS</td>
+ <td>Moderate</td>
+ <td>8.0</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13302</td>
+ <td><a href="https://android.googlesource.com/platform/frameworks/base/+/e54ad58aea33860fbb36bf828684e3df6393f602">A-69969749</a></td>
+ <td>DoS</td>
+ <td>Moderate</td>
+ <td>8.0</td>
+ </tr>
+</table>
+
+
+<h3 id="broadcom-components">Broadcom components</h3>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13303</td>
+ <td>A-71359108<a href="#asterisk">*</a><br />
+ B-V2018010501</td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>bcmdhd driver</td>
+ </tr>
+</table>
+
+
+<h3 id="kernel-components">Kernel components</h3>
+
+<table>
+ <col width="17%">
+ <col width="19%">
+ <col width="9%">
+ <col width="14%">
+ <col width="39%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2017-13304</td>
+ <td>A-70576999<a href="#asterisk">*</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>mnh_sm driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13305</td>
+ <td>A-70526974<a href="#asterisk">*</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>encrypted-keys</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-17449</td>
+ <td>A-70980949<br />
+ <a href="https://lkml.org/lkml/2017/12/5/950">Upstream kernel</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>netlink tap</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13306</td>
+ <td>A-70295063<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>mnh driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-13307</td>
+ <td>A-69128924<a href="#asterisk">*</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>pci sysfs</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-17712</td>
+ <td>A-71500434<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=8f659a03a0ba9289b9aeb9b4470e6fb263d6f483">
+Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>net ipv4</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-15115</td>
+ <td>A-70217214<br />
+ <a href="http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=df80cd9b28b9ebaa284a41df611dbf3a2d05ca74">
+Upstream kernel</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>sctp</td>
+ </tr>
+</table>
+
+
+<h3 id="qualcomm-components">Qualcomm components</h3>
+
+<table>
+ <col width="17%">
+ <col width="25%">
+ <col width="9%">
+ <col width="14%">
+ <col width="33%">
+ <tr>
+ <th>CVE</th>
+ <th>References</th>
+ <th>Type</th>
+ <th>Severity</th>
+ <th>Component</th>
+ </tr>
+ <tr>
+ <td>CVE-2018-3598</td>
+ <td>A-71501698<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=bfd8ffc65e6e82de2adceba58bd67137fb3b2024">
+QC-CR#1097390</a></td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>camera_v2 driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5826</td>
+ <td>A-69128800<a href="#asterisk">*</a><br />
+ QC-CR#2157283</td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>qcacld-3.0 hdd driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-15853</td>
+ <td>A-65853393<a href="#asterisk">*</a><br />
+ QC-CR#2116517<br />
+ QC-CR#2125577</td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3584</td>
+ <td>A-64610600<a href="#asterisk">*</a><br />
+ QC-CR#2142046</td>
+ <td>ID</td>
+ <td>Moderate</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>ID</td>
+ <td>Moderate</td>
+ <td>IPA driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-15837</td>
+ <td>A-64403015<a href="#asterisk">*</a><br />
+ QC-CR#2116387</td>
+ <td>ID</td>
+ <td>Moderate</td>
+ <td>NL80211 driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5823</td>
+ <td>A-72957335<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=fc5bbedd4ab9fd5239be8618afe714d39dd8de49">
+QC-CR#2139436</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>IPA driver</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5827</td>
+ <td>A-72956920<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=53e6d889ac29336ba212a0d4a987455a85736fa8">
+QC-CR#2161977</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5822</td>
+ <td>A-71501692<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=edc42ce371b6831dc55a15bc2624175bd538aa37">
+QC-CR#2115221</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>QC WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5821</td>
+ <td>A-71501687<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=08ab943766abe845a8fae21689bae18dd74e9b20">
+QC-CR#2114363</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>modem driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-5820</td>
+ <td>A-71501686<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-2.0/commit/?id=a4a8475ea650c16705a3eaa011524820dc5ffd44">
+QC-CR#2114336</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>Modem driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3599</td>
+ <td>A-71501666<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-3.18/commit/?id=cf2702c1a77d2a164a3be03597eff7e6fe5f967e">
+QC-CR#2047235</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>Qualcomm Core Services</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3596</td>
+ <td>A-35263529<a href="#asterisk">*</a><br />
+ QC-CR#640898</td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2018-3568</td>
+ <td>A-72957136<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=70cd30a5c1fdd02af19cf0e34c41842cce89a82d">
+QC-CR#2152824</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>WLAN</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>QC WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-15836</td>
+ <td>A-71501693<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=058e1eef2b1422bc0dd70f73832f1ac8a3dbe806">
+QC-CR#2119887</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>QC WLAN</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-14890</td>
+ <td>A-71501695<br />
+ <a href="https://source.codeaurora.org/quic/la/platform/vendor/qcom-opensource/wlan/qcacld-3.0/commit/?id=234e14add09a1ba4a1b1d81d474ac3978dc94fd6">
+QC-CR#2120751</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>QC WLAN</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>QC WLAN</td>
+ </tr>
+ <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>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>IPA WAN driver</td>
+ </tr>
+ <tr>
+ <td>CVE-2017-11075</td>
+ <td>A-70237705<br />
+ <a href="https://source.codeaurora.org/quic/la/kernel/msm-4.4/commit/?id=7a07165c62926e899b710e1fed31532f31797dd5">
+QC-CR#2098332</a></td>
+ <td>EoP</td>
+ <td>Moderate</td>
+ <td>Audio DSP driver</td>
+ </tr>
+</table>
+
+<h2 id="functional-updates">Functional updates</h2>
+<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 or mobile data;
+and a summary of the issue.
+</p>
+
+<table>
+ <tr>
+ <th>References</th>
+ <th>Category</th>
+ <th>Improvements</th>
+ <th>Devices</th>
+ </tr>
+ <tr>
+ <td>A-35963245</td>
+ <td>Performance</td>
+ <td>Enable Assisted Dialing support</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-37681923<br>
+ A-68215016</td>
+ <td>Logging</td>
+ <td>Improve anomaly detection metrics</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-63908720</td>
+ <td>Logging</td>
+ <td>Improve diskstats logging</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-64101451</td>
+ <td>Performance</td>
+ <td>Improve handover from VoLTE to VoWi-Fi during Emergency calls on certain carriers</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-64586126</td>
+ <td>Camera</td>
+ <td>Improve microvideo performance in Google Camera</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-64610438</td>
+ <td>Performance</td>
+ <td>Reduce delays upon opening specific apps</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-65175134</td>
+ <td>Video</td>
+ <td>Improve decoding of certain video streams</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-65347520</td>
+ <td>Performance</td>
+ <td>Improve fingerprint and keyboard latency in certain situations</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-65490850</td>
+ <td>UI</td>
+ <td>Adjust notifications when entering or exiting Wi-Fi coverage during a video call</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-65509134</td>
+ <td>Connectivity</td>
+ <td>Enable IMS911 on certain networks</td>
+ <td>Pixel 2, Pixel 2 XL, Pixel, Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-66951771</td>
+ <td>Logging</td>
+ <td>Detect Wi-Fi Passport statistics for developers</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-66957450</td>
+ <td>Performance</td>
+ <td>Improve lock screen performance</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-67094673</td>
+ <td>Logging</td>
+ <td>Improve start time logging</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-67589241</td>
+ <td>Performance</td>
+ <td>Improve magnetic sensor performance on Pixel 2/Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-67593274</td>
+ <td>Battery</td>
+ <td>Reduce battery drain after modem issues</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-67634615</td>
+ <td>Stability</td>
+ <td>Improve modem stability on Pixel and Pixel 2 phones</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-67750231</td>
+ <td>UI</td>
+ <td>Adjust Call Forwarding UI</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-67774904</td>
+ <td>Connectivity</td>
+ <td>Improve multi-calling performance over Wi-Fi</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-67777512</td>
+ <td>Connectivity</td>
+ <td>Improve data connectivity for T-Mobile users in parts of Australia</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-67882977</td>
+ <td>Certification</td>
+ <td>Update certification</td>
+ <td>Pixel, Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-68150449<br>
+ A-68059359<br>
+ A-69797741<br>
+ A-69378640<br>
+ A-68824279</td>
+ <td>Stability</td>
+ <td>Improve Wi-Fi stability on Pixel 2 phones</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-68217064</td>
+ <td>Performance</td>
+ <td>Improve handover to Wi-Fi Calling in low-coverage areas</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-68398312</td>
+ <td>Performance</td>
+ <td>Improve conference call performance over Wifi</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-68671462</td>
+ <td>Connectivity</td>
+ <td>Improve VoLTE performance for some carriers</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-68841424</td>
+ <td>Connectivity</td>
+ <td>Adjust APN updating behavior</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-68863351</td>
+ <td>UI</td>
+ <td>Improve settings app icons</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-68923696<br>
+ A-68922470<br>
+ A-68940490</td>
+ <td>Certification</td>
+ <td>Upgrade certificates to ensure continued service.</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-68931709</td>
+ <td>Developer</td>
+ <td>Add methods to PeerHandle API for developers</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-68959671</td>
+ <td>Connectivity</td>
+ <td>Update Verizon Service APK for Pixel phones</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-69003183</td>
+ <td>Logging</td>
+ <td>Improve Wi-Fi and RPM logging</td>
+ <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>Connectivity, Performance</td>
+ <td>Improve connectivity and performance on certain carrier networks</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-69064494</td>
+ <td>Performance</td>
+ <td>Improve notification listening apps</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-69152057</td>
+ <td>Connectivity</td>
+ <td>Address call forwarding issue.</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-69209000</td>
+ <td>Connectivity</td>
+ <td>Improve internet connectivity on Pixel 2 on certain WiFi networks</td>
+ <td>Pixel 2</td>
+ </tr>
+ <tr>
+ <td>A-69238007<br>
+ A-68202289<br>
+ A-69334308</td>
+ <td>Connectivity</td>
+ <td>Adjust APN settings</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-69261367<br>
+ A-70512352</td>
+ <td>Messaging</td>
+ <td>Improve MMS messaging performance on certain carriers</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-69275204</td>
+ <td>Battery</td>
+ <td>Adjust battery learned capacity increment and decrement limits</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-69334266</td>
+ <td>Connectivity</td>
+ <td>Change voice domain to CS for certain carriers</td>
+ <td>Pixel XL</td>
+ </tr>
+ <tr>
+ <td>A-69475609</td>
+ <td>Performance</td>
+ <td>Adjust timeouts for Phone App</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-69672417</td>
+ <td>Stability</td>
+ <td>Improve stability for Pixel 2 devices in certain parts of Canada</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-69848394<br>
+ A-68275646</td>
+ <td>Performance</td>
+ <td>Improve instant Apps performance</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-69870527</td>
+ <td>UI</td>
+ <td>Improve indicators for emergency call connectivity</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70045970</td>
+ <td>Battery</td>
+ <td>Optimize search logic to improve battery performance.</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70094083<br>
+ A-70094701</td>
+ <td>Battery</td>
+ <td>Improve battery logging for Pixel 2 and Pixel 2 XL</td>
+ <td>Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70214869</td>
+ <td>GPS</td>
+ <td>Improve GPS Time performance on Pixel 2 XL</td>
+ <td>Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70338906</td>
+ <td>Audio</td>
+ <td>Improve audio speaker performance during phone calls</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-70398372</td>
+ <td>UI</td>
+ <td>Adjust advanced calling settings for Verizon</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70576351</td>
+ <td>Connectivity</td>
+ <td>Change to prioritize certain bands</td>
+ <td>Nexus 5X, Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70580873<br>
+ A-70912923<br>
+ A-71497259</td>
+ <td>Connectivity</td>
+ <td>Improve in-call performance for some carriers</td>
+ <td>Pixel, Pixel XL, Pixel 2, Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-70815434</td>
+ <td>Connectivity</td>
+ <td>Improve network performance on Simyo carrier</td>
+ <td>Nexus 5X</td>
+ </tr>
+ <tr>
+ <td>A-71708302</td>
+ <td>Logging</td>
+ <td>Improve connectivity metrics</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-71983424</td>
+ <td>Performance</td>
+ <td>Improve experience switching between LTE and Wifi</td>
+ <td>Pixel 2 XL</td>
+ </tr>
+ <tr>
+ <td>A-72119809</td>
+ <td>Connectivity</td>
+ <td>Improve data performance for devices with certain SIM cards</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-72175011</td>
+ <td>Logging</td>
+ <td>Improve autofill logging</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-72797728<br>
+ A-71599119</td>
+ <td>Logging</td>
+ <td>Improve internal troubleshooting tools</td>
+ <td>All</td>
+ </tr>
+ <tr>
+ <td>A-72871435</td>
+ <td>Logging</td>
+ <td>Improve network logging</td>
+ <td>All</td>
+ </tr>
+</table>
+
+<h2 id="common-questions-and-answers">Common questions and answers</h2>
+<p>
+This section answers common questions that may occur after reading this
+bulletin.
+</p>
+<p>
+<strong>1. How do I determine if my device is updated to address these issues?
+</strong>
+</p>
+<p>
+Security patch levels of 2018-04-05 or later address all issues associated with
+the 2018-04-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">Pixel
+and Nexus update schedule</a>.
+</p>
+<p id="type">
+<strong>2. What do the entries in the <em>Type</em> column mean?</strong>
+</p>
+<p>
+Entries in the <em>Type</em> column of the vulnerability details table reference
+the classification of the security vulnerability.
+</p>
+<table>
+ <col width="25%">
+ <col width="75%">
+ <tr>
+ <th>Abbreviation</th>
+ <th>Definition</th>
+ </tr>
+ <tr>
+ <td>RCE</td>
+ <td>Remote code execution</td>
+ </tr>
+ <tr>
+ <td>EoP</td>
+ <td>Elevation of privilege</td>
+ </tr>
+ <tr>
+ <td>ID</td>
+ <td>Information disclosure</td>
+ </tr>
+ <tr>
+ <td>DoS</td>
+ <td>Denial of service</td>
+ </tr>
+ <tr>
+ <td>N/A</td>
+ <td>Classification not available</td>
+ </tr>
+</table>
+<p>
+<strong>3. What do the entries in the <em>References</em> column mean?</strong>
+</p>
+<p>
+Entries under the <em>References</em> column of the vulnerability details table
+may contain a prefix identifying the organization to which the reference value
+belongs.
+</p>
+<table>
+ <col width="25%">
+ <col width="75%">
+ <tr>
+ <th>Prefix</th>
+ <th>Reference</th>
+ </tr>
+ <tr>
+ <td>A-</td>
+ <td>Android bug ID</td>
+ </tr>
+ <tr>
+ <td>QC-</td>
+ <td>Qualcomm reference number</td>
+ </tr>
+ <tr>
+ <td>M-</td>
+ <td>MediaTek reference number</td>
+ </tr>
+ <tr>
+ <td>N-</td>
+ <td>NVIDIA reference number</td>
+ </tr>
+ <tr>
+ <td>B-</td>
+ <td>Broadcom reference number</td>
+ </tr>
+</table>
+<p id="asterisk">
+<strong>4. What does a * next to the Android bug ID in the <em>References</em>
+column mean?</strong>
+</p>
+<p>
+Issues that are not publicly available have a * next to the Android bug ID in
+the <em>References</em> column. The update for that issue is generally contained
+in the latest binary drivers for Nexus devices available from the
+<a href="https://developers.google.com/android/nexus/drivers">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 in order 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>April 2, 2018</td>
+ <td>Bulletin published.</td>
+ </tr>
+ <tr>
+ <td>1.1</td>
+ <td>April 4, 2018</td>
+ <td>Bulletin revised to include AOSP links.</td>
+ </tr>
+</table>
+</body></html>
diff --git a/en/security/bulletin/pixel/2018.html b/en/security/bulletin/pixel/2018.html
index a7dfa4b4..f4a08522 100644
--- a/en/security/bulletin/pixel/2018.html
+++ b/en/security/bulletin/pixel/2018.html
@@ -39,6 +39,21 @@ Bulletins</a> homepage.</p>
<th>Security patch level</th>
</tr>
<tr>
+ <td><a href="/security/bulletin/pixel/2018-04-01.html">April 2018</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/pixel/2018-04-01.html">English</a>&nbsp;/
+ <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>
+ -->
+ </td>
+ <td>April 2018</td>
+ <td>2018-04-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/pixel/2018-03-01.html">March 2018</a></td>
<td>Coming soon
<!--
diff --git a/en/security/bulletin/pixel/index.html b/en/security/bulletin/pixel/index.html
index 4a018ab9..95f1eafd 100644
--- a/en/security/bulletin/pixel/index.html
+++ b/en/security/bulletin/pixel/index.html
@@ -59,6 +59,21 @@ 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/2018-04-01.html">April 2018</a></td>
+ <td>Coming soon
+ <!--
+ <a href="/security/bulletin/pixel/2018-04-01.html">English</a>&nbsp;/
+ <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>
+ -->
+ </td>
+ <td>April 2018</td>
+ <td>2018-04-05</td>
+ </tr>
+ <tr>
<td><a href="/security/bulletin/pixel/2018-03-01.html">March 2018</a></td>
<td>Coming soon
<!--
diff --git a/en/security/overview/acknowledgements.html b/en/security/overview/acknowledgements.html
index 9d1250fd..74c88b2e 100644
--- a/en/security/overview/acknowledgements.html
+++ b/en/security/overview/acknowledgements.html
@@ -38,6 +38,149 @@ Rewards</a> program.</p>
acknowledgements were listed together.</p>
+<h4 id="apr-2018">April</h4>
+
+<table>
+ <col width="70%">
+ <col width="30%">
+ <tr>
+ <th>Researchers</th>
+ <th>CVEs</th>
+ </tr>
+ <tr>
+ <td>Billy Lau of Google
+ </td>
+ <td>CVE-2017-13305
+ </td>
+ </tr>
+ <tr>
+ <td><a href="http://weibo.com/csddl">Chong Wang</a> and <a href="http://weibo.com/ele7enxxh">Zinuo Han</a> from Chengdu Security Response Center of Qihoo 360 Technology Co. Ltd
+ </td>
+ <td>CVE-2017-13289, CVE-2017-13286
+ </td>
+ </tr>
+ <tr>
+ <td>Cusas @ Huawei L.O. Team
+ </td>
+ <td>CVE-2017-13279
+ </td>
+ </tr>
+ <tr>
+ <td>Daxing Guo of Tencent's Xuanwu Lab
+ </td>
+ <td>CVE-2017-13292, CVE-2017-13303
+ </td>
+ </tr>
+ <tr>
+ <td>Dinesh Venkatesan (<a href="https://twitter.com/malwareresearch">@malwareresearch</a>) from Symantec
+ </td>
+ <td>CVE-2017-13295
+ </td>
+ </tr>
+ <tr>
+ <td>Elphet and Gong Guang of Alpha Team, Qihoo 360 Technology Co. Ltd
+ </td>
+ <td>CVE-2017-13276
+ </td>
+ </tr>
+ <tr>
+ <td>En He(<a href="https://twitter.com/heeeeen4x">@heeeeen4x</a>) and Bo Liu of <a href="http://www.ms509.com">MS509Team</a>
+ </td>
+ <td>CVE-2017-13294
+ </td>
+ </tr>
+ <tr>
+ <td>Eric Leong (<a href="https://twitter.com/ericwleong">@ericwleong</a>)
+ </td>
+ <td>CVE-2017-13301
+ </td>
+ </tr>
+ <tr>
+ <td>Hao Chen and Guang Gong of Alpha Team, Qihoo 360 Technology Co. Ltd.
+ </td>
+ <td>CVE-2018-3596
+ </td>
+ </tr>
+ <tr>
+ <td>Haosheng Wang (<a href="https://twitter.com/gnehsoah">@gnehsoah</a>)
+ </td>
+ <td>CVE-2017-13280
+ </td>
+ </tr>
+ <tr>
+ <td>Jean-Baptiste Cayrou (<a href="https://twitter.com/jbcayrou">@jbcayrou</a>)
+ </td>
+ <td>CVE-2017-13284
+ </td>
+ </tr>
+ <tr>
+ <td>Jianjun Dai(<a href="https://twitter.com/Jioun_dai">@Jioun_dai</a>) and Guang Gong of Alpha Team, Qihoo 360 Technology Co. Ltd
+ </td>
+ <td>CVE-2017-13291, CVE-2017-13283, CVE-2017-13282, CVE-2017-13281, CVE-2017-13267
+ </td>
+ </tr>
+ <tr>
+ <td><a href="https://github.com/michalbednarski">Michał Bednarski</a>
+ </td>
+ <td>CVE-2017-13287
+ </td>
+ </tr>
+ <tr>
+ <td>Patrick Delvenne (<a href="https://twitter.com/wintzx">@wintzx</a>) Orange Labs
+ </td>
+ <td>CVE-2018-3584
+ </td>
+ </tr>
+ <tr>
+ <td>Pengfei Ding(丁鹏飞), Chenfu Bao(包沉浮), Lenx Wei(韦韬) of Baidu X-Lab(百度安全实验室)
+ </td>
+ <td>CVE-2017-13306, CVE-2017-13290, CVE-2017-15837
+ </td>
+ </tr>
+ <tr>
+ <td>Tencent Blade Team
+ </td>
+ <td>CVE-2017-15853
+ </td>
+ </tr>
+ <tr>
+ <td>Vasily Vasiliev
+ </td>
+ <td>CVE-2017-13297
+ </td>
+ </tr>
+ <tr>
+ <td>Weichao Sun of Alibaba Inc (<a href="https://twitter.com/sunblate">@sunblate</a>)
+ </td>
+ <td>CVE-2017-13277
+ </td>
+ </tr>
+ <tr>
+ <td><a href="mailto:huahuaisadog@gmail.com">Yang Dai</a> and <a href="http://weibo.com/panyu6325">Yu Pan</a> of Vulpecker Team, Qihoo 360 Technology Co. Ltd
+ </td>
+ <td>CVE-2017-13304
+ </td>
+ </tr>
+ <tr>
+ <td>Yonggang Guo (<a href="https://twitter.com/guoygang">@guoygang</a>) of IceSword Lab, Qihoo 360 Technology Co. Ltd
+ </td>
+ <td>CVE-2017-8269, CVE-2017-13307, CVE-2018-5826
+ </td>
+ </tr>
+ <tr>
+ <td>Zhongwen & Chao Dai @ Huawei L.O. Team
+ </td>
+ <td>CVE-2017-13274
+ </td>
+ </tr>
+ <tr>
+ <td><a href="http://weibo.com/ele7enxxh">Zinuo Han</a> from Chengdu Security Response Center of Qihoo 360 Technology Co. Ltd
+ </td>
+ <td>CVE-2017-13288, CVE-2017-13298, CVE-2017-13296, CVE-2017-13299, CVE-2017-13275, CVE-2017-13285
+ </td>
+ </tr>
+</table>
+
<h4 id="mar-2018">March</h4>
diff --git a/en/security/overview/updates-resources.html b/en/security/overview/updates-resources.html
index cebad2f2..508747fe 100644
--- a/en/security/overview/updates-resources.html
+++ b/en/security/overview/updates-resources.html
@@ -324,6 +324,8 @@ sites. Good places to start:<br>
<h3 id="reports">Reports</h3>
<p>Sometimes the Android Security team publishes reports or whitepapers. Here are some of the most recent.</p>
<ul>
+ <li><a href="/security/reports/Google_Android_Security_2017_Report_Final.pdf">
+ Android Security 2017 Year In Review</a></li>
<li><a href="/security/reports/Google_Android_Security_2016_Report_Final.pdf">
Android Security 2016 Year In Review</a></li>
<li><a href="/security/reports/Google_Android_Security_2015_Report_Final.pdf">
diff --git a/en/setup/_toc.yaml b/en/setup/_toc.yaml
index b4648b20..b82fb73e 100644
--- a/en/setup/_toc.yaml
+++ b/en/setup/_toc.yaml
@@ -1,69 +1,69 @@
toc:
+- title: Overview
+ path: /setup/
- title: Getting Started
section:
- - title: Overview
- path: /setup/
- title: Codelines, Branches, and Releases
- path: /setup/code-lines
+ path: /setup/start/codelines
- title: Codenames, Tags, and Build Numbers
- path: /setup/build-numbers
+ path: /setup/start/build-numbers
- title: Project Roles
- path: /setup/roles
+ path: /setup/start/roles
- title: Brand Guidelines
- path: /setup/brands
+ path: /setup/start/brands
- title: Licenses
- path: /setup/licenses
+ path: /setup/start/licenses
- title: FAQ
- path: /setup/faqs
+ path: /setup/start/faqs
- title: Site Updates
- path: /setup/site-updates
+ path: /setup/start/site-updates
- title: Downloading and Building
section:
- title: Requirements
- path: /setup/requirements
+ path: /setup/build/requirements
- title: Establishing a Build Environment
- path: /setup/initializing
+ path: /setup/build/initializing
- title: Downloading the Source
- path: /setup/downloading
+ path: /setup/build/downloading
- title: Preparing to Build
- path: /setup/building
+ path: /setup/build/building
- title: Compiling with Jack
- path: /setup/jack
+ path: /setup/build/jack
- title: Using Reference Boards
- path: /setup/devices
+ path: /setup/build/devices
- title: Running Builds
- path: /setup/running
+ path: /setup/build/running
- title: Building Kernels
- path: /setup/building-kernels
+ path: /setup/build/building-kernels
- title: Known Issues
- path: /setup/known-issues
+ path: /setup/build/known-issues
- title: Developing
section:
- title: Overview
- path: /setup/developing
+ path: /setup/develop/
- title: Using Repo
- path: /setup/using-repo
+ path: /setup/develop/repo
- title: Adding a New Device
- path: /setup/add-device
+ path: /setup/develop/new-device
- title: Understanding 64-bit Builds
- path: /setup/64-bit-builds
+ path: /setup/develop/64-bit-builds
- title: Contributing
section:
- title: Overview
- path: /setup/contributing
+ path: /setup/contribute/
- title: Life of a Patch
- path: /setup/life-of-a-patch
+ path: /setup/contribute/life-of-a-patch
- title: Submitting Patches
- path: /setup/submit-patches
+ path: /setup/contribute/submit-patches
- title: View Patches
- path: /setup/view-patches
+ path: /setup/contribute/view-patches
- title: Life of a Bug
- path: /setup/life-of-a-bug
+ path: /setup/contribute/life-of-a-bug
- title: Reporting Bugs
- path: /setup/report-bugs
+ path: /setup/contribute/report-bugs
- title: Reading Bug Reports
- path: /setup/read-bug-reports
+ path: /setup/contribute/read-bug-reports
- title: Java Code Style Rules
- path: /setup/code-style
+ path: /setup/contribute/code-style
- title: Community
path: /setup/community
diff --git a/en/setup/building-kernels.html b/en/setup/build/building-kernels.html
index cd03c612..28e0708a 100644
--- a/en/setup/building-kernels.html
+++ b/en/setup/build/building-kernels.html
@@ -23,13 +23,16 @@
-<p>This page details how to build only the <a href="/devices/architecture/kernel/">kernel</a>. The following instructions
-assume you have not downloaded all of AOSP; if you have already done so, you can
-skip the <code>git clone</code> steps except the step that downloads the kernel
-sources.</p>
+<p>
+ This page details how to build only the
+ <a href="/devices/architecture/kernel/">kernel</a>. The following instructions
+ assume you have not downloaded all of AOSP; if you have already done so, you
+ can skip the <code>git clone</code> steps except the step that downloads the
+ kernel sources.
+</p>
<p>All examples in this section use the
-<a href="/setup/devices.html#hikey-boards">hikey</a> kernel.</p>
+<a href="devices.html#hikey-boards">hikey</a> kernel.</p>
<h2 id="figuring-out-which-kernel-to-build">Selecting a kernel</h2>
<p>This table lists the name and locations of the kernel sources and binaries:
@@ -224,35 +227,48 @@ dd if=zImage-dtb bs=1 skip=$(LC_ALL=C od -Ad -x -w2 zImage-dtb | grep 8b1f | cut
<h2 id="downloading-sources">Downloading sources</h2>
<p>Download the source for the kernel you want to build using the appropriate
-<code>git clone</code> command. For example, the following command clones the <code>common</code> kernel, a generic, customizable kernel:</p>
+<code>git clone</code> command. For example, the following command clones the
+<code>common</code> kernel, a generic, customizable kernel:</p>
<pre class="devsite-terminal devsite-click-to-copy">
git clone https://android.googlesource.com/kernel/common
</pre>
-<p>A full list of the kernel projects can be found in the <a href="https://android.googlesource.com/kernel">Kernel</a> directory. Below are some of the commonly used kernels and their respective <code>git clone</code> commands.</p>
+<p>A full list of the kernel projects can be found in the
+<a href="https://android.googlesource.com/kernel">Kernel</a> directory. Below
+are some of the commonly used kernels and their respective <code>git clone</code>
+commands.</p>
-<p>The <code>exynos</code> project has the kernel sources for Nexus 10, and can be used as a starting point for work on Samsung Exynos chipsets.</p>
+<p>The <code>exynos</code> project has the kernel sources for Nexus 10, and can
+be used as a starting point for work on Samsung Exynos chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/exynos</pre>
-<p>The <code>goldfish</code> project contains the kernel sources for the emulated platforms.</p>
+<p>The <code>goldfish</code> project contains the kernel sources for the
+emulated platforms.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/goldfish</pre>
-<p>The <code>hikey-linaro</code> project is used for HiKey reference boards, and can be used as a starting point for work on HiSilicon 620 chipsets.</p>
+<p>The <code>hikey-linaro</code> project is used for HiKey reference boards,
+and can be used as a starting point for work on HiSilicon 620 chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/hikey-linaro</pre>
-<p>The <code>msm</code> project has the sources for ADP1, ADP2, Nexus One, Nexus 4, Nexus 5, Nexus 6, Nexus 5X, Nexus 6P, Nexus 7 (2013), Pixel, and Pixel XL, and can be used as a starting point for work on Qualcomm MSM chipsets.</p>
+<p>The <code>msm</code> project has the sources for ADP1, ADP2, Nexus One,
+Nexus 4, Nexus 5, Nexus 6, Nexus 5X, Nexus 6P, Nexus 7 (2013), Pixel, and
+Pixel XL, and can be used as a starting point for work on Qualcomm MSM chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/msm</pre>
-<p>The <code>omap</code> project is used for PandaBoard and Galaxy Nexus, and can be used as a starting point for work on TI OMAP chipsets.</p>
+<p>The <code>omap</code> project is used for PandaBoard and Galaxy Nexus, and
+can be used as a starting point for work on TI OMAP chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/omap</pre>
-<p>The <code>samsung</code> project is used for Nexus S, and can be used as a starting point for work on Samsung Hummingbird chipsets.</p>
+<p>The <code>samsung</code> project is used for Nexus S, and can be used as a
+starting point for work on Samsung Hummingbird chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/samsung</pre>
-<p>The <code>tegra</code> project is for Xoom, Nexus 7 (2012), Nexus 9, and can be used as a starting point for work on NVIDIA Tegra chipsets.</p>
+<p>The <code>tegra</code> project is for Xoom, Nexus 7 (2012), Nexus 9, and can
+be used as a starting point for work on NVIDIA Tegra chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/tegra</pre>
-<p>The <code>x86_64</code> project has the kernel sources for Nexus Player, and can be used as a starting point for work on Intel x86_64 chipsets.</p>
+<p>The <code>x86_64</code> project has the kernel sources for Nexus Player, and
+can be used as a starting point for work on Intel x86_64 chipsets.</p>
<pre class="devsite-terminal devsite-click-to-copy">git clone https://android.googlesource.com/kernel/x86_64</pre>
<h2 id="building">Building the kernel</h2>
diff --git a/en/setup/building.html b/en/setup/build/building.html
index 246d1460..ab57d087 100644
--- a/en/setup/building.html
+++ b/en/setup/build/building.html
@@ -25,7 +25,7 @@
<p>The following instructions to build the Android source tree apply to all
branches, including <code>master</code>. The basic sequence of build commands
-is as follows:</p>
+is as follows.</p>
<h2 id="obtaining-proprietary-binaries">Obtain proprietary binaries</h2>
@@ -35,28 +35,28 @@ graphics acceleration. See the sections below for download links and <a
href="requirements.html#binaries">Device binaries</a> for additional
resources.</p>
-<p class ="note">Some devices package these proprietary binaries on their
-<code>/vendor</code> partition.</p>
+<aside class ="note">Some devices package these proprietary binaries on their
+<code>/vendor</code> partition.</aside>
<h3 id="downloading-proprietary-binaries">Download proprietary binaries</h3>
<p>You can download official binaries for the supported devices running tagged
AOSP release branches from <a
-href="https://developers.google.com/android/drivers">Google's
+href="https://developers.google.com/android/drivers" class="external">Google's
drivers</a>. These binaries add access to additional hardware capabilities
with non-open source code. To instead build the AOSP master branch, use the
-<a href="https://developers.google.com/android/blobs-preview">Binaries
+<a href="https://developers.google.com/android/blobs-preview" class="external">Binaries
Preview</a>. When building the master branch for a device, use
-the binaries for the <a href="/setup/build-numbers.html">most recent
+the binaries for the <a href="/setup/start/build-numbers.html">most recent
numbered release</a> or with the most recent date.</p>
<h3 id="extracting-proprietary-binaries">Extract proprietary binaries</h3>
<p>Each set of binaries comes as a self-extracting script in a compressed
archive. Uncompress each archive, run the included self-extracting script from
-the root of the source tree, then confirm that you agree to the terms
-of the enclosed license agreement. The binaries and their matching makefiles
-will be installed in the <code>vendor/</code> hierarchy of the source tree.</p>
+the root of the source tree, then confirm you agree to the terms of the enclosed
+license agreement. The binaries and their matching makefiles will be installed
+in the <code>vendor/</code> hierarchy of the source tree.</p>
<h3 id="cleaning-up">Clean up</h3>
@@ -68,8 +68,8 @@ make clobber
<h2 id="initialize">Set up environment</h2>
<p>Initialize the environment with the <code>envsetup.sh</code> script. Note
-that replacing <code>source</code> with <code>.</code> (a single dot) saves a few characters,
-and the short form is more commonly used in documentation.</p>
+that replacing <code>source</code> with <code>.</code> (a single dot) saves a
+few characters, and the short form is more commonly used in documentation.</p>
<pre class="devsite-terminal devsite-click-to-copy">
source build/envsetup.sh
</pre>
@@ -79,18 +79,17 @@ source build/envsetup.sh
</pre>
<h2 id="choose-a-target">Choose a target</h2>
-<p>Choose which target to build with <code>lunch</code>. The exact configuration can be passed as
-an argument. For example, the following command:</p>
+<p>Choose which target to build with <code>lunch</code>. The exact configuration
+can be passed as an argument. For example, the following command refers to a
+complete build for the emulator, with all debugging enabled:</p>
<pre class="devsite-terminal devsite-click-to-copy">
lunch aosp_arm-eng
</pre>
-<p>refers to a complete build for the emulator, with all debugging enabled.</p>
<p>If run with no arguments <code>lunch</code> will prompt you to choose a
target from the menu.</p>
<p>All build targets take the form <code>BUILD-BUILDTYPE</code>, where the
-<code>BUILD</code> is a codename referring to the particular feature combination.</p>
-
-<p>The BUILDTYPE is one of the following:</p>
+<code>BUILD</code> is a codename referring to the particular feature
+combination. The BUILDTYPE is one of the following:</p>
<table>
<thead>
<tr>
@@ -105,7 +104,8 @@ target from the menu.</p>
</tr>
<tr>
<td>userdebug</td>
-<td>like "user" but with root access and debuggability; preferred for debugging</td>
+<td>like user but with root access and debuggability; preferred for
+debugging</td>
</tr>
<tr>
<td>eng</td>
@@ -118,7 +118,7 @@ target from the menu.</p>
<h2 id="build-the-code">Build the code</h2>
-<p>Please note, this section is merely a summary to ensure setup is complete. See
+<p>This section is merely a summary to ensure setup is complete. See
<a href="running.html">Running Builds</a> for detailed instructions on building
Android.</p>
@@ -141,11 +141,11 @@ note that you have already selected your build target with <code>lunch</code>,
and it is unlikely at best to run on a different target than it was built
for.</p>
-<p class="note"><strong>Note:</strong> Remember to <a
+<aside class="note"><strong>Note:</strong> Remember to <a
href="#obtaining-proprietary-binaries">obtain proprietary binaries</a> or your
build will not boot successfully on your target hardware. If you obtain binary
blobs at this point you will need to unpack them, <code>make clobber</code> and
-rebuild.</p>
+rebuild.</aside>
<h3 id="flash-a-device">Flash with fastboot</h3>
@@ -154,7 +154,7 @@ be included in your path after a successful build. See <a
href="running.html#flashing-a-device">Flashing a device</a> for
instructions.</p>
-<h3 id="emulate-an-android-device">Emulate an Android Device</h3>
+<h3 id="emulate-an-android-device">Emulate an Android device</h3>
<p>The emulator is added to your path automatically by the build process. To
run the emulator, type:</p>
@@ -163,9 +163,10 @@ run the emulator, type:</p>
emulator
</pre>
-<h2 id="troubleshooting-common-build-errors">Troubleshooting Common Build Errors</h2>
+<h2 id="troubleshooting-common-build-errors">Troubleshooting common build
+errors</h2>
-<h3 id="wrong-java-version">Wrong Java Version</h3>
+<h3 id="wrong-java-version">Wrong Java version</h3>
<p>If you are attempting to build a version of Android inconsistent with your
version of Java, <code>make</code> will abort with a message such as</p>
@@ -191,7 +192,7 @@ href="requirements.html#jdk">JDK Requirements</a>.</li>
correct JDK to the beginning of your PATH or remove the problematic JDK.</li>
</ul>
-<h3 id="python-version-3">Python Version 3</h3>
+<h3 id="python-version-3">Python version 3</h3>
<p>Repo is built on particular functionality from Python 2.x and is
unfortunately incompatible with Python 3. In order to use repo, please install
@@ -201,19 +202,20 @@ Python 2.x:</p>
apt-get install python
</pre>
-<h3 id="case-insensitive-filesystem">Case Insensitive Filesystem</h3>
+<h3 id="case-insensitive-filesystem">Case insensitive filesystem</h3>
-<p>If you are building on an HFS filesystem on Mac OS, you may encounter an error such as</p>
+<p>If you are building on an HFS filesystem on Mac OS, you may encounter an
+error such as</p>
<pre>
************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************
</pre>
-<p>Please follow the instructions in <a href="initializing.html">Initializing
-the Build Environment</a> for creating a case-sensitive disk image.</p>
+<p>Please follow the instructions in <a href="initializing.html">Establishing a
+Build Environment</a> for creating a case-sensitive disk image.</p>
-<h3 id="no-usb-permission">No USB Permission</h3>
+<h3 id="no-usb-permission">No USB permission</h3>
<p>On most Linux systems, unprivileged users cannot access USB ports by
default. If you see a permission denied error, follow the instructions
diff --git a/en/setup/devices.html b/en/setup/build/devices.html
index ed4d1e7e..01dee33b 100644
--- a/en/setup/devices.html
+++ b/en/setup/build/devices.html
@@ -25,8 +25,8 @@
<p>You can create builds for Nexus devices using Android Open Source Project
(AOSP) builds and the relevant hardware-specific binaries. For available
Android builds and targeted devices, see
-<a href="/setup/build-numbers.html#source-code-tags-and-builds">Source Code,
-Tags, and Builds</a>.</p>
+<a href="../start/build-numbers.html#source-code-tags-and-builds">Source Code
+Tags and Builds</a>.</p>
<p>You can also create builds for
<a href="https://android.googlesource.com/device/linaro/hikey/" class="external">HiKey</a>
@@ -53,18 +53,20 @@ or HiKey960 development board.</p>
and from <a href="http://www.lenovator.com/product/80.html" class="external">Lenovator<a/>.
</p>
-<img src="images/hikey960.png" alt="HiKey960 board image" />
+<img src="../images/hikey960.png" alt="HiKey960 board image" />
<figcaption><strong>Figure 1.</strong> HiKey960 board by Lenovator</figcaption>
-<p>Additional resources:</p>
+<h3 id="additional-resources">Additional resources</h3>
<ul>
<li>
-<a href="https://github.com/96boards/documentation/blob/master/ConsumerEdition/HiKey960/HardwareDocs/HiKey960_Schematics.pdf" class="external">HiKey960
+<a href="https://github.com/96boards/documentation/blob/master/consumer/hikey960/hardware-docs/HiKey960_Schematics.pdf" class="external">HiKey960
schematics</a></li>
<li>
-<a href="http://www.96boards.org/documentation/ConsumerEdition/HiKey960/HardwareDocs/HardwareUserManual.md/" class="external">HiKey960
+<a href="https://github.com/96boards/documentation/blob/master/consumer/hikey960/hardware-docs/hardware-user-manual.md" class="external">HiKey960
user guide</a></li>
<li>
+<a href="https://github.com/96boards/documentation/tree/master/consumer/hikey960/hardware-docs" class="external">HiKey960 Hardware Docs directory</a></li>
+<li>
<a href="https://github.com/96boards/documentation/wiki/" class="external">96boards wiki</a></li>
</ul>
@@ -79,13 +81,6 @@ HiKey960 board.</p>
<code class="devsite-terminal">repo sync -j24</code>
</pre>
</li>
- <li>Download and extract binaries into the Android source tree:
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">wget https://dl.google.com/dl/android/aosp/arm-hikey960-OPR-cf4e0c80.tgz</code>
-<code class="devsite-terminal">tar xzf arm-hikey960-OPR-cf4e0c80.tgz</code>
-<code class="devsite-terimnal">./extract-arm-hikey960.sh</code>
-</pre>
- </li>
<li>Build:
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">. ./build/envsetup.sh</code>
@@ -117,6 +112,7 @@ HiKey960 user guide).</li>
<code class="devsite-terminal">fastboot flash boot out/target/product/hikey960/boot.img</code>
<code class="devsite-terminal">fastboot flash dts out/target/product/hikey960/dt.img</code>
<code class="devsite-terminal">fastboot flash system out/target/product/hikey960/system.img</code>
+<code class="devsite-terminal">fastboot flash vendor out/target/product/hikey960/vendor.img</code>
<code class="devsite-terminal">fastboot flash cache out/target/product/hikey960/cache.img</code>
<code class="devsite-terminal">fastboot flash userdata out/target/product/hikey960/userdata.img</code>
</pre>
@@ -174,7 +170,7 @@ and <a href="http://www.lenovator.com/product/90.html" class="external">2GB
RAM</a> configurations from <a href="http://www.lenovator.com" class="external">Lenovator</a>:
</p>
-<img src="images/hikey620.png" alt="HiKey620 board image"/>
+<img src="../images/hikey620.png" alt="HiKey620 board image"/>
<figcaption><strong>Figure 2.</strong> HiKey board by Lenovator</figcaption>
<p>Additional resources:</p>
@@ -200,13 +196,6 @@ board.</p>
<code class="devsite-terminal">repo sync -j24</code>
</pre>
</li>
- <li>Download and extract HDMI binaries into the Android source tree:
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">wget <a href="https://dl.google.com/dl/android/aosp/linaro-hikey-20170523-4b9ebaff.tgz">https://dl.google.com/dl/android/aosp/linaro-hikey-20170523-4b9ebaff.tgz</a></code>
-<code class="devsite-terminal">tar xzf linaro-hikey-20170523-4b9ebaff.tgz</code>
-<code class="devsite-terminal">./extract-linaro-hikey.sh</code>
-</pre>
- </li>
<li>Install mcopy utility:
<pre class="devsite-terminal devsite-click-to-copy">
apt-get install mtools
@@ -267,8 +256,8 @@ user guide</a>).</li>
<ul>
<li>Copy hi6220-hikey.dtb (<code>arch/arm64/boot/dts/hisilicon/hi6220-hikey.dtb</code>) to the
hikey-kernel directory as file hi6220-hikey.dtb-4.9.</li>
- <li>Copy the Image file <code>(arch/arm64/boot/Image-dtb</code>) to the
-hikey-kernel directory as file Image-dtb-4.9.</li>
+ <li>Copy the Image file <code>(arch/arm64/boot/Image.gz-dtb</code>) to the
+hikey-kernel directory as file Image.gz-dtb-4.9.</li>
</ul>
<li>Make the boot image:
<pre class="devsite-terminal devsite-click-to-copy">
@@ -293,7 +282,7 @@ user guide</a>.</p>
<a href="http://www.96boards.org/product/neonkey/" class="external">Neonkey
SensorHub</a> connected to a Hikey or Hikey960 development board.</p>
-<img src="images/neonkey-sensorhub.png" alt="Neonkey Sensorhub image" />
+<img src="../images/neonkey-sensorhub.png" alt="Neonkey Sensorhub image" />
<figcaption><strong>Figure 3.</strong> Neonkey SensorHub</figcaption>
<p>Neonkey is a certified <a href="http://www.96boards.org/" class="external">96Boards</a>
diff --git a/en/setup/downloading.html b/en/setup/build/downloading.html
index 7599338b..0d53f39b 100644
--- a/en/setup/downloading.html
+++ b/en/setup/build/downloading.html
@@ -38,7 +38,7 @@
</h2>
<p>
Repo is a tool that makes it easier to work with Git in the context of Android. For more
- information about Repo, see the <a href="developing.html">Developing</a> section.
+ information about Repo, see the <a href="../develop/repo.html">Repo Command Reference</a>.
</p>
<p>
To install Repo:
@@ -114,7 +114,8 @@
repo init -u https://android.googlesource.com/platform/manifest
</pre>
<p>
- To check out a branch other than "master", specify it with <code>-b</code>. For a list of branches, see <a href="build-numbers.html#source-code-tags-and-builds">Source Code Tags and Builds</a>.
+ To check out a branch other than "master", specify it with <code>-b</code>. For a list of branches, see
+ <a href="../start/build-numbers.html#source-code-tags-and-builds">Source Code Tags and Builds</a>.
</p>
<pre class="devsite-terminal devsite-click-to-copy">
repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
@@ -127,7 +128,7 @@ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1
where files such as the manifest will be kept.
</p>
<h2 id="getting-the-files">
- Downloading the Android Source Tree
+ Downloading the Android source tree
</h2>
<p>
To pull down the Android source tree to your working directory from the repositories as
@@ -137,7 +138,7 @@ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1
<p>
The Android source files will be located in your working directory under their project names.
The initial sync operation will take an hour or more to complete. For more about <code>repo
- sync</code> and other Repo commands, see the <a href="developing.html">Developing</a> section.
+ sync</code> and other Repo commands, see <a href="../develop/index.html">Developing</a>.
</p>
<h2 id="using-authentication">
Using Authentication
@@ -236,7 +237,7 @@ repo init -u https://android.googlesource.com/a/platform/manifest
between machines.
</p>
<h2 id="verifying-git-tags">
- Verifying Git Tags
+ Verifying Git tags
</h2>
<p>
Load the following public key into your GnuPG key database. The key is used to sign annotated
@@ -288,8 +289,8 @@ EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
git tag -v TAG_NAME
</pre>
<p>
- If you haven't <a href="initializing.html#ccache">set up ccache</a> yet, now would be a good
- time to do it.
+ If you haven't <a href="initializing.html#optimizing-a-build-environment">set
+ up ccache</a> yet, now would be a good time to do it.
</p>
</body>
diff --git a/en/setup/build/initializing.html b/en/setup/build/initializing.html
new file mode 100644
index 00000000..503a14ed
--- /dev/null
+++ b/en/setup/build/initializing.html
@@ -0,0 +1,405 @@
+<html devsite>
+ <head>
+ <title>Establishing a Build Environment</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>
+ This section describes how to set up your local work environment to build
+ the Android source files. You must use Linux or Mac OS; building under
+ Windows is not currently supported.
+</p>
+<p>
+ For an overview of the entire code-review and code-update process, see <a
+ href="../contribute/life-of-a-patch.html">Life of a Patch</a>.
+</p>
+<aside class="note"><strong>Note:</strong> All commands in this site are
+ preceded by a dollar sign ($) to differentiate them from output or entries
+ within files. You may use the <em>Click to copy</em> feature at the top right
+ of each command box to copy all lines without the dollar signs or triple-click
+ each line to copy it individually without the dollar sign.
+</aside>
+
+<h2 id="choosing-a-branch">Choosing a branch</h2>
+<p>
+ Some requirements for the build environment are determined by the version of
+ the source code you plan to compile. For a full list of available branches,
+ see <a href="../start/build-numbers.html">Build Numbers</a>. You can also
+ choose to download and build the latest source code (called
+ <code>master</code>), in which case you will simply omit
+ the branch specification when you initialize the repository.
+</p>
+<p>
+ After you have selected a branch, follow the appropriate instructions below to
+ set up your build environment.
+</p>
+
+<h2 id="setting-up-a-linux-build-environment">Setting up a Linux build
+environment</h2>
+<p>
+ These instructions apply to all branches, including <code>master</code>.
+</p>
+<p>The Android build is routinely tested in house on recent versions of
+ Ubuntu LTS (14.04), but most distributions should have the required
+ build tools available. Reports of successes or failures on other
+ distributions are welcome.
+</p>
+<p>
+ For Gingerbread (2.3.x) and newer versions, including the <code>master</code>
+ branch, a 64-bit environment is required. Older versions can be
+ compiled on 32-bit systems.
+</p>
+<aside class="note"><strong>Note:</strong> See
+ <a href="requirements.html">Requirements</a> for the complete list of hardware
+ and software requirements, then follow the detailed instructions for Ubuntu
+ and Mac OS below.
+</aside>
+
+<h3 id="installing-the-jdk">Installing the JDK</h3>
+<p>
+ The <code>master</code> branch of Android in the
+ <a href="https://android.googlesource.com/" class="external">Android Open
+ Source Project (AOSP)</a> comes with prebuilt versions of OpenJDK below
+ <code>prebuilts/jdk/</code> so no additional installation is required.
+</p>
+<p>
+ Older versions of Android require a separate installation of the JDK. On
+ Ubuntu, use
+ <a href="http://openjdk.java.net/install/" class="external">OpenJDK</a>. See
+ <a href="requirements.html#jdk">JDK Requirements</a> for precise versions and
+ the sections below for instructions.
+</p>
+<h4 id="for-ubuntu-15-04">For Ubuntu &gt;= 15.04</h4>
+<p>
+ Run the following:
+</p>
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">sudo apt-get update</code>
+<code class="devsite-terminal">sudo apt-get install openjdk-8-jdk</code>
+</pre>
+
+<h4 id="for-ubuntu-14-04">For Ubuntu LTS 14.04</h4>
+<p>
+ There are no available supported OpenJDK 8 packages for Ubuntu 14.04. The
+ <strong>Ubuntu 15.04 OpenJDK 8</strong> packages have been used successfully
+ with Ubuntu 14.04. <em>Newer package versions (e.g. those for 15.10, 16.04) were
+ found not to work on 14.04 using the instructions below.</em>
+</p>
+<ol>
+ <li>Download the <code>.deb</code> packages for 64-bit architecture from
+ <a href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/">old-releases.ubuntu.com</a>:
+ <ul>
+ <li><a
+ href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre-headless_8u45-b14-1_amd64.deb">openjdk-8-jre-headless_8u45-b14-1_amd64.deb</a>
+ with SHA256 <code>0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0</code>
+ </li>
+ <li><a
+ href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre_8u45-b14-1_amd64.deb">openjdk-8-jre_8u45-b14-1_amd64.deb</a>
+ with SHA256 <code>9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849</code>
+ </li>
+ <li><a
+ href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u45-b14-1_amd64.deb">openjdk-8-jdk_8u45-b14-1_amd64.deb</a>
+ with SHA256 <code>6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c</code>
+ </li>
+ </ul>
+ </li>
+ <li>Optionally, confirm the checksums of the downloaded files against the
+ SHA256 string listed with each package above. For example, with the
+ <code>sha256sum</code> tool:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ sha256sum {downloaded.deb file}</pre>
+ </li>
+ <li>Install the packages:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ sudo apt-get update</pre>
+ Run <code>dpkg</code> for each of the .deb files you downloaded. It may
+ produce errors due to missing dependencies:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ sudo dpkg -i {downloaded.deb file}</pre>
+ To fix missing dependencies:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ sudo apt-get -f install</pre>
+ </li>
+</ol>
+
+<h4 id="default-java-version">Update the default Java version - optional</h4>
+<p>
+ Optionally, for the Ubuntu versions above update the default Java version by
+ running:
+</p>
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">sudo update-alternatives --config java</code>
+<code class="devsite-terminal">sudo update-alternatives --config javac</code>
+</pre>
+<p>
+ If, during a build, you encounter version errors for Java, set its
+ path as described in the <a href="building.html#wrong-java-version">Wrong
+ Java Version</a> section.
+</p>
+
+<h3 id="installing-required-packages-ubuntu-1404">Installing required packages
+(Ubuntu 14.04)</h3>
+<p>
+ You will need a 64-bit version of Ubuntu. Ubuntu 14.04 is recommended.
+</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
+</pre>
+<aside class="note"><strong>Note:</strong> To use SELinux tools for policy
+ analysis, also install the <code>python-networkx</code> package.
+</aside>
+<aside class="note"><strong>Note:</strong> If you are using LDAP and want
+ to run ART host tests, also install the <code>libnss-sss:i386</code>
+ package.
+</aside>
+
+<h3 id="installing-required-packages-ubuntu-1204">Installing required packages
+ (Ubuntu 12.04)
+</h3>
+<p>
+ You may use Ubuntu 12.04 to build older versions of Android. Version 12.04
+ is not supported on master or recent releases.
+</p>
+<pre class="devsite-click-to-copy">
+<code class="devsite-terminal">sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386</code>
+<code class="devsite-terminal">sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so</code>
+</pre>
+
+<h3 id="installing-required-packages-ubuntu-1004-1110">Installing required
+ packages (Ubuntu 10.04 -- 11.10)
+</h3>
+<p>
+ Building on Ubuntu 10.04-11.10 is no longer supported, but may be useful for
+ building older releases of AOSP.
+</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
+</pre>
+<p>
+ On Ubuntu 10.10:
+</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
+</pre>
+<p>
+ On Ubuntu 11.10:
+</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+sudo apt-get install libx11-dev:i386
+</pre>
+
+<h3 id="configuring-usb-access">Configuring USB access</h3>
+<p>
+ Install a community-maintained default set of <code>udev</code> rules for
+ all Android devices by following the instructions to <a
+ href="https://developer.android.com/studio/run/device.html#setting-up"
+ class="external">Set up a device for development</a>.
+</p>
+
+<h3 id="using-a-separate-output-directory">Using a separate output
+directory</h3>
+<p>
+ By default, the output of each build is stored in the <code>out/</code>
+ subdirectory of the matching source tree.
+</p>
+<p>
+ On some machines with multiple storage devices, builds are
+ faster when storing the source files and the output on
+ separate volumes. For additional performance, the output
+ can be stored on a filesystem optimized for speed instead
+ of crash robustness, since all files can be re-generated
+ in case of filesystem corruption.
+</p>
+<p>
+ To set this up, export the <code>OUT_DIR_COMMON_BASE</code> variable
+ to point to the location where your output directories
+ will be stored.
+</p>
+<pre class="devsite-terminal devsite-click-to-copy">
+export OUT_DIR_COMMON_BASE=&lt;path-to-your-out-directory&gt;
+</pre>
+<p>
+ The output directory for each separate source tree will be named after the
+ directory holding the source tree. For instance, if you have source trees as
+ <code>/source/master1</code> and <code>/source/master2</code> and
+ <code>OUT_DIR_COMMON_BASE</code> is set to <code>/output</code>, the output
+ directories will be <code>/output/master1</code> and
+ <code>/output/master2</code>.
+</p>
+<p>
+ It's important in that case to not have multiple source
+ trees stored in directories that have the same name,
+ as those would end up sharing an output directory, with
+ unpredictable results. This is only supported on Jelly Bean (4.1) and newer,
+ including the <code>master</code> branch.
+</p>
+<h2 id="setting-up-a-mac-os-x-build-environment">Setting up a Mac OS build
+ environment
+</h2>
+<p>
+ In a default installation, Mac OS runs on a case-preserving but
+ case-insensitive filesystem. This type of filesystem is not supported by git
+ and will cause some git commands (such as <code>git status</code>) to behave
+ abnormally. Because of this, we recommend that you always work with the AOSP
+ source files on a case-sensitive filesystem. This can be done fairly easily
+ using a disk image, discussed below.
+</p>
+<p>
+ Once the proper filesystem is available, building the <code>master</code>
+ branch in a modern Mac OS environment is very straightforward. Earlier
+ branches require some additional tools and SDKs.
+</p>
+
+<h3 id="creating-a-case-sensitive-disk-image">Creating a case-sensitive disk
+image</h3>
+<p>
+ You can create a case-sensitive filesystem within your existing Mac OS
+ environment using a disk image. To create the image, launch Disk
+ Utility and select "New Image". A size of 25GB is the minimum to
+ complete the build; larger numbers are more future-proof. Using sparse images
+ saves space while allowing to grow later as the need arises. Be sure to select
+ "case sensitive, journaled" as the volume format.
+</p>
+<p>
+ You can also create it from a shell with the following command:
+</p>
+<pre class="devsite-click-to-copy devsite-terminal" data-terminal-prefix="# ">
+hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
+</pre>
+<p>
+ This will create a <code>.dmg</code> (or possibly a
+ <code>.dmg.sparseimage</code>) file which, once mounted, acts as a drive with
+ the required formatting for Android development.
+</p>
+<p>
+ If you need a larger volume later, you can also resize the sparse image with
+ the following command:
+</p>
+<pre class="devsite-click-to-copy devsite-terminal" data-terminal-prefix="# ">hdiutil resize -size &lt;new-size-you-want&gt;g ~/android.dmg.sparseimage
+</pre>
+<p>
+ For a disk image named <code>android.dmg</code> stored in your home
+ directory, you can add helper functions to your <code>~/.bash_profile</code>:
+</p>
+<ul>
+ <li>To mount the image when you execute <code>mountAndroid</code>:
+ <pre class="devsite-click-to-copy">
+ # mount the android file image
+ mountAndroid() { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }</pre>
+ <aside class="note"><strong>Note:</strong> If your system created a
+ <code>.dmg.sparseimage</code> file, replace <code>~/android.dmg</code> with
+ <code>~/android.dmg.sparseimage</code>.
+ </aside>
+ </li>
+ <li>To unmount it when you execute <code>umountAndroid</code>:
+ <pre class="devsite-click-to-copy">
+ # unmount the android file image
+ umountAndroid() { hdiutil detach /Volumes/android; }</pre>
+ </li>
+</ul>
+<p>
+ After you've mounted the <code>android</code> volume, you'll do all your work
+ there. You can eject it (unmount it) just as you would an external drive.
+</p>
+
+<h3 id="installing-the-mac-jdk">Installing the JDK</h3>
+<p>
+ See <a href="requirements.html">Requirements</a> for the version of Java to
+ use when developing various versions of Android.
+</p>
+
+<h4 id="installing-required-packages">Installing required packages</h4>
+<ol>
+ <li>Install Xcode command line tools with:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ xcode-select --install</pre>
+ For older versions of Mac OS (10.8 or earlier), you must install Xcode from
+ the <a href="http://developer.apple.com/" class="external">Apple developer
+ site</a>. If you are not already registered as an Apple developer, you must
+ must create an Apple ID to download.
+ </li>
+ <li>Install MacPorts from
+ <a href="http://www.macports.org/install.php">macports.org</a>. Ensure
+ <code>/opt/local/bin</code> appears in your path <strong>before</strong>
+ <code>/usr/bin</code>. If not, add the following to your
+ <code>~/.bash_profile</code> file:
+ <pre class="devsite-click-to-copy">
+ export PATH=/opt/local/bin:$PATH</pre>
+ <aside class="note"><strong>Note:</strong> If you do not have a
+ <code>.bash_profile</code> file in your home directory, create one.
+ </aside>
+ </li>
+ <li>Get make, git, and GPG packages from MacPorts:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg</pre>
+ If using Mac OS X v10.4, also install bison:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ POSIXLY_CORRECT=1 sudo port install bison</pre>
+ </li>
+</ol>
+
+<h4 id="reverting-from-make-382">Reverting from make 3.82</h4>
+<p>
+ In Android 4.0.x (Ice Cream Sandwich) and earlier, a bug exists in gmake 3.82
+ that prevents Android from building. You can install version 3.81 using
+ MacPorts with these steps:
+</p>
+<ol>
+ <li>Edit <code>/opt/local/etc/macports/sources.conf</code> and add a line that
+ says:
+ <pre class="devsite-click-to-copy">
+ file:///Users/Shared/dports</pre>
+ above the rsync line. Then create this directory:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ mkdir /Users/Shared/dports</pre>
+ </li>
+ <li>In the new <code>dports</code> directory, run:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/</pre>
+ </li>
+ <li>Create a port index for your new local repository:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ portindex /Users/Shared/dports</pre>
+ </li>
+ <li>Install the old version of gmake with:
+ <pre class="devsite-terminal devsite-click-to-copy">
+ sudo port install gmake @3.81</pre>
+ </li>
+</ol>
+
+<h4 id="setting-a-file-descriptor-limit">Setting a file descriptor limit</h4>
+<p>
+ On Mac OS, the default limit on the number of simultaneous file descriptors
+ open is too low and a highly parallel build process may exceed this limit. To
+ increase the cap, add the following lines to your
+ <code>~/.bash_profile</code>:
+</p>
+<pre class="devsite-click-to-copy">
+# set the number of open files to be 1024
+ulimit -S -n 1024</pre>
+
+<h2 id="next-download-the-source">Next: Download the source</h2>
+<p>
+ Your build environment is good to go! Proceed to
+ <a href="downloading.html">downloading the source</a>.
+</p>
+
+ </body>
+</html>
diff --git a/en/setup/jack.html b/en/setup/build/jack.html
index 558eef73..5d32cb3e 100644
--- a/en/setup/jack.html
+++ b/en/setup/build/jack.html
@@ -37,10 +37,10 @@ build toolchain for Android 6.x, you don’t have to do anything differently to
use Jack&mdash;just use your standard makefile commands to compile the tree or
your project.</p>
-<h2 class="overview">About Jack</h2>
+<h2 id="overview">About Jack</h2>
<p>The Jack toolchain provides the following advantages:</p>
-<img src="./images/jack_overview.png" alt="Jack overview"/>
+<img src="../images/jack_overview.png" alt="Jack overview"/>
<figcaption><strong>Figure 1.</strong> Jack overview.</figcaption>
<ul>
@@ -65,7 +65,7 @@ Coverage with JaCoCo</a> and
<p>Jack has its own .jack file format that contains the pre-compiled dex code
for the library, allowing for faster compilation (pre-dex).</p>
-<img src="./images/jack_library.png" alt="Jack library file contents"/>
+<img src="../images/jack_library.png" alt="Jack library file contents"/>
<figcaption><strong>Figure 2.</strong> Jack library file contents.</figcaption>
<h3 id=jill>Jill</h3>
@@ -73,7 +73,7 @@ for the library, allowing for faster compilation (pre-dex).</p>
<p>The Jill tool translates the existing .jar libraries into the new library
format, as shown below.</p>
-<img src="./images/jack_jill.png" alt="Importing .jar libraries with Jill"/>
+<img src="../images/jack_jill.png" alt="Importing .jar libraries with Jill"/>
<figcaption><strong>Figure 3.</strong> Workflow to import an existing .jar
library.</figcaption>
@@ -234,11 +234,12 @@ features described below.</p>
<h3 id=predexing>Predexing</h3>
-<p>When generating a Jack library file, the .dex of the library is generated and
-stored inside the .jack library file as a pre-dex. When compiling, Jack reuses
-the pre-dex from each library. All libraries are pre-dexed:</p>
+<p>When generating a Jack library file, the <code>.dex</code> of the library is
+generated and stored inside the <code>.jack</code> library file as a pre-dex.
+When compiling, Jack reuses the pre-dex from each library. All libraries are
+pre-dexed:</p>
-<img src="./images/jack_predex.png" alt="Jack libraries with pre-dex" />
+<img src="../images/jack_predex.png" alt="Jack libraries with pre-dex" />
<figcaption><strong>Figure 4.</strong> Jack libraries with pre-dex.</figcaption>
<p>Jack does not reuse the library pre-dex if shrinking, obfuscation, or
diff --git a/en/setup/known-issues.html b/en/setup/build/known-issues.html
index e72de555..e72de555 100644
--- a/en/setup/known-issues.html
+++ b/en/setup/build/known-issues.html
diff --git a/en/setup/build/requirements.html b/en/setup/build/requirements.html
new file mode 100644
index 00000000..0a1f4259
--- /dev/null
+++ b/en/setup/build/requirements.html
@@ -0,0 +1,198 @@
+<html devsite>
+ <head>
+ <title>Requirements</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>
+ Before you download and build the Android source, ensure your system meets
+ the following requirements then see <a href="initializing.html">Establishing
+ a Build Environment</a> for installation instructions by operating system.
+</p>
+
+<h2 id=hardware-requirements>Hardware requirements</h2>
+<p>
+ Your development workstation should meet or exceed these hardware
+ requirements:
+</p>
+<ul>
+ <li>A 64-bit environment is required for Android 2.3.x (Gingerbread) and
+ higher versions, including the master branch. You can compile older versions
+ on 32-bit systems.
+ </li>
+ <li>At least 100GB of free disk space to checkout the code and an extra 150GB
+ to build it. If you conduct multiple builds or employ ccache, you will need
+ even more space.
+ </li>
+ <li>If you are running Linux in a virtual machine, you need at
+ least 16GB of RAM/swap.
+ </li>
+</ul>
+
+<h2 id=software-requirements>Software requirements</h2>
+<p>
+ The <a href="https://android.googlesource.com/" class="external">Android Open
+ Source Project (AOSP)</a> <code>master</code> branch is traditionally
+ developed and tested on Ubuntu Long Term Support (LTS) releases, but other
+ distributions may be used. See the list below for recommended versions.
+</p>
+<p>
+ Your workstation must have the software listed below. See
+ <a href="initializing.html">Establishing a Build Environment</a> for
+ additional required packages and the commands to install them.
+</p>
+
+<h3 id=latest-version>OS and JDK</h3>
+<p>
+ If you are developing against the AOSP <code>master</code> branch, use one
+ of these operating systems: Ubuntu 14.04 (Trusty) or Mac OS v10.10 (Yosemite)
+ or later with Xcode 4.5.2 and Command Line Tools.
+</p>
+<p>
+ For the Java Development Kit (JDK), note the <code>master</code> branch of
+ Android in AOSP comes with a prebuilt version of OpenJDK; so no additional
+ installation is required. Older versions require a separate install.
+</p>
+<p>See <a href="#older-versions">Packages for older versions</a>.
+
+<h3 id=packages>Key packages</h3>
+<ul>
+ <li>Python 2.6 to 2.7 from <a href="http://www.python.org/download/" class="external">python.org</a></li>
+ <li>GNU Make 3.81 to 3.82 from <a href="http://ftp.gnu.org/gnu/make/" class="external">gnu.org</a></li>
+ <li>Git 1.7 or newer from <a href="http://git-scm.com/download" class="external">git-scm.com</a></li>
+</ul>
+
+<h3 id=binaries>Device binaries</h3>
+<p>
+ Download previews, factory images, drivers, over-the-air (OTA) updates, and
+ other blobs below. For details, see
+ <a href="building.html#obtaining-proprietary-binaries">Obtaining proprietary
+ binaries</a>.
+</p>
+<ul>
+ <li><a href="https://developers.google.com/android/blobs-preview" class="external">Preview
+ binaries (blobs)</a>. For AOSP <code>master</code> branch development.
+ </li>
+ <li><a href="https://developers.google.com/android/images" class="external">Factory
+ images</a>. For supported devices running tagged AOSP release branches.
+ </li>
+ <li><a href="https://developers.google.com/android/drivers" class="external">Binary
+ hardware support files</a>. For devices running tagged AOSP release
+ branches.
+ </li>
+</ul>
+
+<h3 id=toolchain>Build toolchain</h3>
+<p>
+ Android 8.0 and higher support only
+ <a href="https://developer.android.com/ndk/guides/standalone_toolchain.html#working_with_clang" class="external">Clang/LLVM</a>
+ for building the Android platform. Join the
+ <a href="https://groups.google.com/forum/#!forum/android-llvm" class="external">android-llvm</a>
+ group to pose questions and get help. Report NDK/compiler issues at the
+ <a href="https://github.com/android-ndk/ndk" class="external">NDK GitHub</a>.
+</p>
+<p>
+ For the
+ <a href="https://developer.android.com/ndk/guides/index.html" class="external">Native
+ Development Kit (NDK)</a> and legacy kernels, GCC 4.9 included in the AOSP
+ master branch (under <code>prebuilts/</code>) may also be used.
+</p>
+
+<h3 id=older-versions>Packages for older versions</h3>
+<p>
+ This section details operating systems and JDK packages for older versions of
+ Android.
+</p>
+
+<h4 id=operating-systems>Operating systems</h4>
+<p>
+ Android is typically built with a GNU/Linux or Mac OS operating system. It is
+ also possible to build Android in a virtual machine on unsupported systems
+ such as Windows.
+</p>
+
+<p>We recommend building on GNU/Linux instead of another operating system. The
+ Android build system normally uses ART, running on the build machine, to
+ pre-compile system dex files. Since ART is able to run only on Linux, the
+ build system skips this pre-compilation step on non-Linux operating systems,
+ resulting in an Android build with reduced performance.
+</p>
+
+<h5 id=linux>GNU/Linux</h5>
+<ul>
+ <li>Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)</li>
+ <li>Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04
+ (Precise)</li>
+ <li>Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu 10.04 (Lucid)</li>
+</ul>
+<h5 id=mac>Mac OS (Intel/x86)</h5>
+<ul>
+ <li>Android 6.0 (Marshmallow) - AOSP master: Mac OS v10.10 (Yosemite) or
+ higher with Xcode 4.5.2 and Command Line Tools
+ </li>
+ <li>Android 5.x (Lollipop): Mac OS v10.8 (Mountain Lion) with Xcode 4.5.2
+ and Command Line Tools
+ </li>
+ <li>Android 4.1.x-4.3.x (Jelly Bean) - Android 4.4.x (KitKat): Mac OS v10.6
+ (Snow Leopard) or Mac OS X v10.7 (Lion) and Xcode 4.2 (Apple's Developer
+ Tools)
+ </li>
+ <li>Android 1.5 (Cupcake) - Android 4.0.x (Ice Cream Sandwich): Mac OS
+ v10.5 (Leopard) or Mac OS X v10.6 (Snow Leopard) and the Mac OS X v10.5
+ SDK
+ </li>
+</ul>
+
+<h4 id=jdk>JDK</h4>
+<p>
+ See <a href="initializing.html#installing-the-jdk">Installing the JDK</a>
+ for the prebuilt path and installation instructions for older versions.
+</p>
+<ul>
+ <li>Android 7.0 (Nougat) - Android 8.0 (Oreo): Ubuntu -
+ <a href="http://openjdk.java.net/install/" class="external">OpenJDK 8</a>,
+ Mac OS -
+ <a href="http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR" class="external">jdk
+ 8u45 or newer</a>
+ </li>
+ <li>Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu -
+ <a href="http://openjdk.java.net/install/" class="external">OpenJDK 7</a>,
+ Mac OS -
+ <a href="https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u71-oth-JPR" class="external">jdk-7u71-macosx-x64.dmg</a>
+ </li>
+ <li>Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu -
+ <a href="http://www.oracle.com/technetwork/java/javase/archive-139210.html" class="external">Java
+ JDK 6</a>, Mac OS - <a href="http://support.apple.com/kb/dl1572" class="external">Java JDK
+ 6</a>
+ </li>
+ <li>Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu -
+ <a href="http://www.oracle.com/technetwork/java/javase/archive-139210.html" class="external">Java
+ JDK 5</a>
+ </li>
+</ul>
+
+<h4 id=make>Make</h4>
+<p>
+ To avoid build errors, Android 4.0.x (Ice Cream Sandwich) and earlier must
+ <a href="initializing.html#reverting-from-make-382">revert from make 3.82</a>.
+</p>
+
+ </body>
+</html>
diff --git a/en/setup/running.html b/en/setup/build/running.html
index e3d9f62d..6d6041f9 100644
--- a/en/setup/running.html
+++ b/en/setup/build/running.html
@@ -24,13 +24,13 @@
<p>This page provides details for running builds on specific devices and
-complements the information in <a href="/setup/building.html">Building the
-System</a>.</p>
+complements the information in <a href="building.html">Preparing to Build</a>.
+</p>
<h2 id="building-fastboot-and-adb">Building fastboot and adb</h2>
<p>If you don't already have <code>fastboot</code> and <code>adb</code>, you can
build them with the regular build system. Use the instructions in
-<a href="/setup/building.html">Building a System</a> and replace the
+<a href="building.html">Preparing to Build</a> and replace the
main <code>make</code> command with:</p>
<pre class="devsite-click-to-copy devsite-terminal">make fastboot adb</pre>
@@ -283,7 +283,7 @@ following directories:</p>
<p>The recommended builds for devices are available from the <code>lunch</code>
menu, accessed when running the <code>lunch</code> command with no arguments.
You can download factory images and binaries for Nexus devices from
-developers.google.com. See <a href="/setup/requirements#binaries">Device
+developers.google.com. See <a href="requirements#binaries">Device
binaries</a> for downloads. For details and additional resources, see <a
href="building.html#obtaining-proprietary-binaries">Obtaining proprietary
binaries</a>.
diff --git a/en/setup/code-lines.html b/en/setup/code-lines.html
deleted file mode 100644
index b4040abd..00000000
--- a/en/setup/code-lines.html
+++ /dev/null
@@ -1,187 +0,0 @@
-<html devsite>
- <head>
- <title>Codelines, Branches, and Releases</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 Android Open Source Project (AOSP) maintains a complete software stack to be ported by
- OEMs and other device implementors and run on their own hardware. To maintain the quality of
- Android, Google has contributed full-time engineers, product managers, user interface designers,
- quality assurance testers, and all the other roles required to bring modern devices to market.
-</p>
-
-<p>
- Accordingly, we maintain a number of "code lines" to clearly separate the current stable
- version of Android from unstable experimental work. We roll the open source administration
- and maintenance of the Android code lines into the larger product development cycle.
-</p>
-
-<p>
- The chart below depicts at a conceptual level how AOSP manages code and releases. We're
- referring to these as "code lines" instead of "branches" simply because at any given moment
- there may be more than one branch for a given "code line". For instance, when a
- release is cut, it may or may not become a new branch based on the needs of the moment.
-</p>
-<ol>
- <li>
- <p>
- At any given moment, there is a current latest release of the Android platform. This
- typically takes the form of a branch in the tree.
- </p>
- </li>
- <li>
- <p>
- Device builders and contributors work with the current latest release, fixing bugs,
- launching new devices, experimenting with new features, and so on.
- </p>
- </li>
- <li>
- <p>
- In parallel, Google works internally on the next version of the Android platform and
- framework according to the product's needs and goals. We develop the next
- version of Android by working with a device partner on a flagship device whose
- specifications are chosen to push Android in the direction we believe it should go.
- </p>
- </li>
- <li>
- <p>
- When the "n+1"th version is ready, it will be published to the public source tree and
- become the new latest release.
- </p>
- </li>
-</ol>
- <img src="/images/code-lines.png" alt="code-line diagram" id="figure1" >
-<p class="img-caption">
- <strong>Figure 1.</strong> AOSP code and releases
-</p>
-<h2 id="terms-and-caveats">
- Terms and Caveats
-</h2>
-<ul>
- <li>
- <p>
- A <em>release</em> corresponds to a formal version of the Android platform, such as 1.5,
- 2.1, and so on. Generally speaking, a release of the platform corresponds to the version in
- the <code>SdkVersion</code> field of AndroidManifest.xml files and defined within
- <code>frameworks/base/api</code> in the source tree.
- </p>
- </li>
- <li>
- <p>
- An <em>upstream</em> project is an open source project from which the Android stack is
- pulling code. These include obvious projects such as the Linux kernel and WebKit.
- Over time we are migrating some of the semi-autonomous Android projects (such as ART,
- the Android SDK tools, Bionic, and so on) to work as "upstream" projects. Generally,
- these projects are developed entirely in the public tree. For some upstream projects,
- development is done by contributing directly to the upstream project itself. See <a href=
- "submit-patches.html#upstream-projects">Upstream Projects</a> for details. In both cases,
- snapshots will be periodically pulled into releases.
- </p>
- </li>
- <li>
- <p>
- At all times, a release code-line (which may actually consist of more than one actual
- branch in git) is considered the sole canonical source code for a given Android platform
- version. OEMs and other groups building devices should pull only from a release branch.
- </p>
- </li>
- <li>
- <p>
- "Experimental" code-lines are established to capture changes from the community so they can
- be iterated on with an eye toward stability.
- </p>
- </li>
- <li>
- <p>
- Changes that prove stable will eventually be pulled into a release branch. Note this
- applies only to bug fixes, application improvements, and other changes that do not affect the
- APIs of the platform.
- </p>
- </li>
- <li>
- <p>
- Changes will be pulled into release branches from upstream projects (including the
- Android "upstream" projects) as necessary.
- </p>
- </li>
- <li>
- <p>
- The "n+1"th version (that is, next major version of the framework and platform APIs) will
- be developed by Google internally. See <a href=
- "#about-private-code-lines">About Private Codelines</a> for details.
- </p>
- </li>
- <li>
- <p>
- Changes will be pulled from upstream, release, and experimental branches into Google's
- private branch as necessary.
- </p>
- </li>
- <li>
- <p>
- When the platform APIs for the next version have stabilized and been fully tested, Google
- will cut a release of the next platform version. (This specifically refers to a new
- <code>SdkVersion</code>.) This will also correspond to the internal code-line being made
- a public release branch, and the new current platform code-line.
- </p>
- </li>
- <li>
- <p>
- When a new platform version is cut, a corresponding experimental code-line will be
- created at the same time.
- </p>
- </li>
-</ul>
-
-<h2 id="about-private-code-lines">
- About Private Codelines
-</h2>
-<p>
- The source management strategy above includes a code-line that Google will keep private. The
- reason for this is to focus attention on the current public version of Android.
-</p>
-<p>
- OEMs and other device builders naturally want to ship devices with the latest version of
- Android. Similarly, application developers don't want to deal with more platform
- versions than strictly necessary. Meanwhile, Google retains responsibility for the strategic
- direction of Android as a platform and a product. Our approach focuses on a small number of
- flagship devices to drive features while securing protections of Android-related intellectual
- property.
-</p>
-<p>
- As a result, Google frequently has possession of confidential information from third parties.
- And we must refrain from revealing sensitive features until we've secured the appropriate
- protections. In addition, there are real risks to the platform arising from having too many
- platform versions extant at once. For these reasons, we have structured the open source
- project -- including third-party contributions -- to focus on the currently-public stable
- version of Android. "Deep development" on the next version of the platform will happen in
- private until it's ready to become an official release.
-</p>
-<p>
- We recognize many contributors will disagree with this approach. We respect others
- may have a different point of view; however, this is the approach we feel is best, and
- the one we've chosen to implement.
-</p>
-
- </body>
-</html>
diff --git a/en/setup/community.html b/en/setup/community.html
index af0d17ec..13e3e32c 100644
--- a/en/setup/community.html
+++ b/en/setup/community.html
@@ -42,7 +42,7 @@ Android, see the list of <a href="#resources">resources</a> below.</p>
accessories, and meeting compatibility requirements. The Android OS is a Git
repository of files and not a single file (.zip/tar/exe/etc.) to download. You
can get started with the Android source code by following the instructions on
-the <a href="downloading.html">Downloading the Source</a>
+the <a href="build/downloading.html">Downloading the Source</a>
page. For other information about Android, refer to the following resources.</p>
<table class="columns">
@@ -67,7 +67,7 @@ page. For other information about Android, refer to the following resources.</p>
<p></p>
<h5>Send feedback</h5>
-<a href="/setup/report-bugs.html">Report AOSP bug</a><br>
+<a href="contribute/report-bugs.html">Report AOSP bug</a><br>
<p></p>
</td>
diff --git a/en/setup/code-style.html b/en/setup/contribute/code-style.html
index dbb9887f..ddf945cd 100644
--- a/en/setup/code-style.html
+++ b/en/setup/contribute/code-style.html
@@ -35,11 +35,11 @@ follow the standard of their choosing, such as the <a
href="https://google.github.io/styleguide/javaguide.html">Google Java Style
Guide</a>.</p>
-<h2 id="java-language-rules">Java Language Rules</h2>
+<h2 id="java-language-rules">Java language rules</h2>
<p>Android follows standard Java coding conventions with the additional rules
described below.</p>
-<h3 id="dont-ignore-exceptions">Don't Ignore Exceptions</h3>
+<h3 id="dont-ignore-exceptions">Don't ignore exceptions</h3>
<p>It can be tempting to write code that completely ignores an exception, such
as:</p>
<pre><code>void setServerPort(String value) {
@@ -121,7 +121,7 @@ void setServerPort(String value) {
</li>
</ul>
-<h3 id="dont-catch-generic-exception">Don't Catch Generic Exception</h3>
+<h3 id="dont-catch-generic-exception">Don't catch generic exception</h3>
<p>It can also be tempting to be lazy when catching exceptions and do
something like this:</p>
<pre><code>try {
@@ -167,7 +167,7 @@ this level anyway, just let the method throw it.</p>
<p>Remember: exceptions are your friend! When the compiler complains you're
not catching an exception, don't scowl. Smile: the compiler just made it
easier for you to catch runtime problems in your code.</p>
-<h3 id="dont-use-finalizers">Don't Use Finalizers</h3>
+<h3 id="dont-use-finalizers">Don't use finalizers</h3>
<p>Finalizers are a way to have a chunk of code executed when an object is
garbage collected. While they can be handy for doing cleanup (particularly of
external resources), there are no guarantees as to when a finalizer will be
@@ -179,7 +179,7 @@ method needs to be called (see InputStream for an example). In this case it is
appropriate but not required to print a short log message from the finalizer,
as long as it is not expected to flood the logs.</p>
-<h3 id="fully-qualify-imports">Fully Qualify Imports</h3>
+<h3 id="fully-qualify-imports">Fully qualify imports</h3>
<p>When you want to use class Bar from package foo,there
are two possible ways to import it:</p>
<ul>
@@ -193,16 +193,16 @@ exception is made for java standard libraries (<code>java.util.*</code>,
<code>java.io.*</code>, etc.) and unit test code
(<code>junit.framework.*</code>).</p>
-<h2 id="java-library-rules">Java Library Rules</h2>
+<h2 id="java-library-rules">Java library rules</h2>
<p>There are conventions for using Android's Java libraries and tools. In some
cases, the convention has changed in important ways and older code might use a
deprecated pattern or library. When working with such code, it's okay to
continue the existing style. When creating new components however, never use
deprecated libraries.</p>
-<h2 id="java-style-rules">Java Style Rules</h2>
+<h2 id="java-style-rules">Java style rules</h2>
-<h3 id="use-javadoc-standard-comments">Use Javadoc Standard Comments</h3>
+<h3 id="use-javadoc-standard-comments">Use Javadoc standard comments</h3>
<p>Every file should have a copyright statement at the top, followed by package
and import statements (each block separated by a blank line) and finally the
class or interface declaration. In the Javadoc comments, describe what the class
@@ -269,17 +269,17 @@ should follow the instructions <a
href="http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html">How
to Write Doc Comments for the Javadoc Tool</a>.</p>
-<h3 id="write-short-methods">Write Short Methods</h3>
+<h3 id="write-short-methods">Write short methods</h3>
<p>When feasible, keep methods small and focused. We recognize that long methods
are sometimes appropriate, so no hard limit is placed on method length. If a
method exceeds 40 lines or so, think about whether it can be broken up without
harming the structure of the program.</p>
-<h3 id="define-fields-in-standard-places">Define Fields in Standard Places</h3>
+<h3 id="define-fields-in-standard-places">Define fields in standard places</h3>
<p>Define fields either at the top of the file or immediately before the
methods that use them.</p>
-<h3 id="limit-variable-scope">Limit Variable Scope</h3>
+<h3 id="limit-variable-scope">Limit variable scope</h3>
<p>Keep the scope of local variables to a minimum. By doing so, you
increase the readability and maintainability of your code and reduce the
likelihood of error. Each variable should be declared in the innermost block
@@ -337,7 +337,7 @@ is a compelling reason to do otherwise:</p>
}
</code></pre>
-<h3 id="order-import-statements">Order Import Statements</h3>
+<h3 id="order-import-statements">Order import statements</h3>
<p>The ordering of import statements is:</p>
<ol>
<li>
@@ -391,7 +391,7 @@ pattern without extra engineering effort.</p>
<p>Put static imports above all the other imports ordered the same way as
regular imports.</p>
-<h3 id="use-spaces-for-indentation">Use Spaces for Indentation</h3>
+<h3 id="use-spaces-for-indentation">Use spaces for indentation</h3>
<p>We use four (4) space indents for blocks and never tabs. When in doubt, be
consistent with the surrounding code.</p>
<p>We use eight (8) space indents for line wraps, including function calls and
@@ -404,7 +404,7 @@ assignments. For example, this is correct:</p>
someLongExpression(that, wouldNotFit, on, one, line);
</code></pre>
-<h3 id="follow-field-naming-conventions">Follow Field Naming Conventions</h3>
+<h3 id="follow-field-naming-conventions">Follow field naming conventions</h3>
<ul>
<li>
<p>Non-public, non-static field names start with m.</p>
@@ -429,7 +429,7 @@ assignments. For example, this is correct:</p>
protected int mProtected;
}
</code></pre>
-<h3 id="use-standard-brace-style">Use Standard Brace Style</h3>
+<h3 id="use-standard-brace-style">Use standard brace style</h3>
<p>Braces do not go on their own line; they go on the same line as the code
before them:</p>
<pre><code>class MyClass {
@@ -459,7 +459,7 @@ are not obligated to) put it all on one line. For example, this is acceptable:</
body(); // bad!
</code></pre>
-<h3 id="limit-line-length">Limit Line Length</h3>
+<h3 id="limit-line-length">Limit line length</h3>
<p>Each line of text in your code should be at most 100 characters long. While
much discussion has surrounded this rule, the decision remains that 100
characters is the maximum <em>with the following exceptions</em>:</p>
@@ -471,7 +471,7 @@ ease of cut and paste.</li>
simplifies tool writing).</li>
</ul>
-<h3 id="use-standard-java-annotations">Use Standard Java Annotations</h3>
+<h3 id="use-standard-java-annotations">Use standard Java annotations</h3>
<p>Annotations should precede other modifiers for the same language element.
Simple marker annotations (e.g. @Override) can be listed on the same line with
the language element. If there are multiple annotations, or parameterized
@@ -509,7 +509,7 @@ refactored to isolate the software elements where the annotation applies.</p>
</li>
</ul>
-<h3 id="treat-acronyms-as-words">Treat Acronyms as Words</h3>
+<h3 id="treat-acronyms-as-words">Treat acronyms as words</h3>
<p>Treat acronyms and abbreviations as words in naming variables, methods, and
classes to make names more readable:</p>
<table>
@@ -546,7 +546,7 @@ classes to make names more readable:</p>
acronyms, it is virtually impossible to be consistent with the surrounding
code. Therefore, always treat acronyms as words.</p>
-<h3 id="use-todo-comments">Use TODO Comments</h3>
+<h3 id="use-todo-comments">Use TODO comments</h3>
<p>Use TODO comments for code that is temporary, a short-term solution, or
good-enough but not perfect. TODOs should include the string TODO in all caps,
followed by a colon:</p>
@@ -560,7 +560,7 @@ you either include a very specific date ("Fix by November 2005") or a very
specific event ("Remove this code after all production mixers understand
protocol V7.").</p>
-<h3 id="log-sparingly">Log Sparingly</h3>
+<h3 id="log-sparingly">Log sparingly</h3>
<p>While logging is necessary, it has a significantly negative impact on
performance and quickly loses its usefulness if not kept reasonably
terse. The logging facilities provides five different levels of logging:</p>
@@ -684,7 +684,7 @@ unnecessarily push other logs out of the buffer, just as others may not push
out yours.</em></li>
</ul>
-<h3 id="be-consistent">Be Consistent</h3>
+<h3 id="be-consistent">Be consistent</h3>
<p>Our parting thought: BE CONSISTENT. If you're editing code, take a few
minutes to look at the surrounding code and determine its style. If that code
uses spaces around the if clauses, you should too. If the code comments have
@@ -697,7 +697,7 @@ vocabulary, but local style is also important. If the code you add to a file
looks drastically different from the existing code around it, it throws
readers out of their rhythm when they go to read it. Try to avoid this.</p>
-<h2 id="javatests-style-rules">Javatests Style Rules</h2>
+<h2 id="javatests-style-rules">Javatests style rules</h2>
<p>Follow test method naming conventions and use an underscore to separate what
is being tested from the specific case being tested. This style makes it easier
to see exactly what cases are being tested. For example:</p>
diff --git a/en/setup/contributing.html b/en/setup/contribute/index.html
index ec212f99..829361af 100644
--- a/en/setup/contributing.html
+++ b/en/setup/contribute/index.html
@@ -24,11 +24,13 @@
<p>Thanks for your interest in Android! Here are some ways you can get involved
and help us improve Android. For background on the Android project and our
-goals, check out the <a href="/setup/index.html">Overview</a> page.</p>
+goals, check out the <a href="../index.html">Overview</a> page.</p>
+
<h2 id="report-bugs">Report Bugs</h2>
<p>One of the easiest and most effective ways you can help improve Android is
-to file bugs. For more information, visit the <a href="report-bugs.html">Reporting Bugs</a> page.</p>
+to file bugs. For more information, visit the
+<a href="report-bugs.html">Reporting Bugs</a> page.</p>
<p>Please note that we can't guarantee that any particular bug will be fixed in
any particular release. To see what happens to your bug once you report it,
read <a href="life-of-a-bug.html">Life of a Bug</a>.</p>
@@ -48,11 +50,11 @@ out the source, pick a bug or feature, and get coding. Note that the smaller
and more targetted your patch submissions, the easier it will be for us to
review them.</p>
-<p>You can get started with Android by learning about the <a href="life-of-a-patch.html">Life of a Patch</a>,
-and by learning about <code>git</code>, <code>repo</code>, and other tools using the links to the left.
+<p>You can get started with Android by learning about the <a href="life-of-a-patch.html">Life of a Patch</a>,
+and by learning about <code>git</code>, <code>repo</code>, and other tools using the links to the left.
You can also view the activity on all contributions on our
<a href="https://android-review.googlesource.com/">Gerrit server</a>.
-If you need help along the way, you can join our <a href="/setup/community.html">discussion groups</a>.</p>
+If you need help along the way, you can join our <a href="../community.html">discussion groups</a>.</p>
</body>
</html>
diff --git a/en/setup/life-of-a-bug.html b/en/setup/contribute/life-of-a-bug.html
index 571b7cd6..7490b456 100644
--- a/en/setup/life-of-a-bug.html
+++ b/en/setup/contribute/life-of-a-bug.html
@@ -34,7 +34,7 @@ intended only for bugs and feature requests related to the core Android
software stack, and is a technical tool for the Open Source community.</p>
<p>This is not a customer support forum. For support information, see the
-<a href="https://support.google.com/nexus">Nexus</a> and
+<a href="https://support.google.com/nexus">Nexus</a> and
<a href="https://support.google.com/pixelphone">Pixel</a> help centers.
Support for other devices is provided by the device manufacturers or by the
carriers selling those devices.</p>
diff --git a/en/setup/life-of-a-patch.html b/en/setup/contribute/life-of-a-patch.html
index 6f8d144a..6f8d144a 100644
--- a/en/setup/life-of-a-patch.html
+++ b/en/setup/contribute/life-of-a-patch.html
diff --git a/en/setup/read-bug-reports.html b/en/setup/contribute/read-bug-reports.html
index 63ff5cc0..63ff5cc0 100644
--- a/en/setup/read-bug-reports.html
+++ b/en/setup/contribute/read-bug-reports.html
diff --git a/en/setup/report-bugs.html b/en/setup/contribute/report-bugs.html
index 85ea2fd4..85ea2fd4 100644
--- a/en/setup/report-bugs.html
+++ b/en/setup/contribute/report-bugs.html
diff --git a/en/setup/submit-patches.html b/en/setup/contribute/submit-patches.html
index c9b7b404..578e4750 100644
--- a/en/setup/submit-patches.html
+++ b/en/setup/contribute/submit-patches.html
@@ -30,24 +30,24 @@ href="https://android-review.googlesource.com/">Gerrit</a>.</p>
<ul>
<li>
<p>Before you follow the instructions on this page, you need to <a
-href="/setup/initializing.html">
+href="../build/initializing.html">
initialize your build environment</a>, <a
-href="/setup/downloading.html">download the source</a>, <a
+href="../build/downloading.html">download the source</a>, <a
href="https://android.googlesource.com/new-password">create a
password</a>, and follow the instructions on the password generator page.</p>
</li>
<li>
-<p>For details about Repo and Git, see the <a
-href="/setup/developing.html">Developing</a> section.</p>
+<p>For details about Repo and Git, see <a
+href="../develop/index.html">Developing</a>.</p>
</li>
<li>
<p>For information about the different roles you can play within the Android
-Open Source community, see <a href="/setup/roles.html">Project
+Open Source community, see <a href="../start/roles.html">Project
roles</a>.</p>
</li>
<li>
<p>If you plan to contribute code to the Android platform, be sure to read
-the <a href="/setup/licenses.html">AOSP's licensing
+the <a href="../start/licenses.html">AOSP's licensing
information</a>.</p>
</li>
<li>
@@ -64,7 +64,7 @@ href="#upstream-projects">Upstream Projects</a>.</p>
href="https://android.googlesource.com/new-password">establish a password</a>
that will identify you with the server. Follow the instructions on the password
generator page. You need to do this only once. See <a
-href="/setup/downloading.html#using-authentication">Using
+href="../build/downloading.html#using-authentication">Using
Authentication</a> for additional details.</p>
<h3 id="start-a-repo-branch">Start a repo branch</h3>
<p>For each change you intend to make, start a new branch within the relevant
diff --git a/en/setup/view-patches.html b/en/setup/contribute/view-patches.html
index c14c3149..b3921fd1 100644
--- a/en/setup/view-patches.html
+++ b/en/setup/contribute/view-patches.html
@@ -89,7 +89,7 @@ repo download <var>TARGET CHANGE</var></pre>
which the change should be downloaded and
<code><var>CHANGE</var></code> is the change number as listed in
Gerrit. For more information, see the <a
- href="/setup/using-repo.html">Repo reference</a>.
+ href="../develop/repo.html">Repo reference</a>.
</p>
<h2 id="how-do-i-become-a-verifier-or-reviewer">How do I become a Verifier
@@ -99,7 +99,7 @@ repo download <var>TARGET CHANGE</var></pre>
In short, contribute high-quality code to one or more of the Android
projects. For details about the different roles in the Android Open
Source community and who plays them, see <a
- href="/setup/roles.html">Project Roles</a>.
+ href="../start/roles.html">Project Roles</a>.
</p>
<h2 id="diffs-and-comments">Diffs and comments</h2>
diff --git a/en/setup/64-bit-builds.html b/en/setup/develop/64-bit-builds.html
index 30b51d6f..30b51d6f 100644
--- a/en/setup/64-bit-builds.html
+++ b/en/setup/develop/64-bit-builds.html
diff --git a/en/setup/developing.html b/en/setup/develop/index.html
index 1b85969d..5ecf6dbd 100644
--- a/en/setup/developing.html
+++ b/en/setup/develop/index.html
@@ -42,7 +42,8 @@
<p>
For more details on Git, refer to
- <a href="https://git-scm.com/documentation">Git Documentation</a>.
+ <a href="https://git-scm.com/documentation" class="external">Git
+ Documentation</a>.
</p>
<h2 id="repo">Repo</h2>
@@ -62,7 +63,7 @@
In most situations, you can use Git instead of Repo, or mix Repo and Git
commands to form complex commands. However, using Repo for basic
across-network operations will make your work much simpler. For more details
- on Repo, see the <a href="/setup/using-repo.html">Repo Command Reference</a>.
+ on Repo, see the <a href="repo.html">Repo Command Reference</a>.
</p>
<h2 id="other-tools">Other tools</h2>
@@ -90,9 +91,8 @@
Android development involves the following basic workflow:
</p>
-<img src="images/git_workflow.png" alt="basic workflow diagram" />
+<img src="../images/git_workflow.png" alt="basic workflow diagram" />
<figcaption><strong>Figure 1.</strong> Basic Android workflow</figcaption>
-<p>&nbsp;</p>
<ol>
<li>Start a new topic branch using <code>repo start</code>.
</li>
@@ -182,8 +182,8 @@
<p>
For information about using Repo to download source, see
- <a href="/setup/downloading.html">Downloading the Source</a> and the
- <a href="/setup/using-repo.html">Repo Command Reference</a>.
+ <a href="../build/downloading.html">Downloading the Source</a> and the
+ <a href="repo.html">Repo Command Reference</a>.
</p>
<h3 id="synchronizing-clients">Synchronizing clients</h3>
@@ -209,7 +209,8 @@ repo sync <var>PROJECT0 PROJECT1 ... PROJECTN</var>
particular commit, which makes creating local branches and switching among
them a lightweight operation. By using branches, you can isolate one aspect of
your work from the others. For an interesting article about using topic
- branches, refer to <a href="http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt" class="external">Separating
+ branches, refer to
+ <a href="http://www.kernel.org/pub/software/scm/git/docs/howto/separating-topic-branches.txt" class="external">Separating
topic branches</a>.
</p>
@@ -323,7 +324,7 @@ repo diff
<code class="devsite-terminal">git diff --cached</code>
</pre>
-<img src="images/git_diff.png" alt="diff vs diff-cached" />
+<img src="../images/git_diff.png" alt="diff vs diff-cached" />
<figcaption><strong>Figure 2.</strong> Uncommitted vs. committed edits.
</figcaption>
diff --git a/en/setup/add-device.html b/en/setup/develop/new-device.html
index bd869f97..bd869f97 100644
--- a/en/setup/add-device.html
+++ b/en/setup/develop/new-device.html
diff --git a/en/setup/using-repo.html b/en/setup/develop/repo.html
index b84d9d2f..b84d9d2f 100644
--- a/en/setup/using-repo.html
+++ b/en/setup/develop/repo.html
diff --git a/en/setup/initializing.html b/en/setup/initializing.html
deleted file mode 100644
index 518a1d98..00000000
--- a/en/setup/initializing.html
+++ /dev/null
@@ -1,459 +0,0 @@
-<html devsite>
- <head>
- <title>Establishing a Build Environment</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>This section describes how to set up your local work environment to build
-the Android source files. You will need to use Linux or Mac OS. Building under
-Windows is not currently supported.</p>
-<p>For an overview of the entire code-review and code-update process, see <a
-href="life-of-a-patch.html">Life of a Patch</a>.</p>
-<p class="note"><strong>Note:</strong> All commands in this site are preceded
-by a dollar sign ($) to differentiate them from output or entries within files.
-You may use the <em>Click to copy</em> feature at the top right of each command
-box to copy all lines without the dollar signs or triple-click each line to
-copy it individually without the dollar sign.</p>
-<h2 id="choosing-a-branch">Choosing a Branch</h2>
-<p>Some of the requirements for your build environment are determined by which
-version of the source code you plan to compile. See
-<a href="build-numbers.html">Build Numbers</a> for a full listing of branches you may
-choose from. You may also choose to download and build the latest source code
-(called <code>master</code>), in which case you will simply omit the branch specification
-when you initialize the repository.</p>
-<p>Once you have selected a branch, follow the appropriate instructions below to
-set up your build environment.</p>
-<h2 id="setting-up-a-linux-build-environment">Setting up a Linux build environment</h2>
-<p>These instructions apply to all branches, including <code>master</code>.</p>
-<p>The Android build is routinely tested in house on recent versions of
-Ubuntu LTS (14.04), but most distributions should have the required
-build tools available. Reports of successes or failures on other
-distributions are welcome.</p>
-<p>For Gingerbread (2.3.x) and newer versions, including the <code>master</code>
-branch, a 64-bit environment is required. Older versions can be
-compiled on 32-bit systems.</p>
-<p class="note"><strong>Note:</strong> See the <a
-href="requirements.html">Requirements</a> for the complete list of hardware and
-software requirements. Then follow the detailed instructions for Ubuntu and Mac
-OS below.</p>
-
-<h3 id="installing-the-jdk">Installing the JDK</h3>
-<p>The <code>master</code> branch of Android in the <a
-href="https://android.googlesource.com/">Android Open Source Project (AOSP)</a>
-comes with prebuilt versions of OpenJDK below
-<code>prebuilts/jdk/</code>. So no additional installation is
-required.</p>
-
-<p>Older versions of Android require a separate installation of the JDK. On
-Ubuntu, use <a href="http://openjdk.java.net/install/">OpenJDK</a>. See <a
-href="requirements.html#jdk">JDK Requirements</a> for precise versions and the
-sections below for instructions.</p>
-
-<h4 id="for-ubuntu-15-04">For Ubuntu &gt;= 15.04</h4>
-<p>Run the following:</p>
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">sudo apt-get update</code>
-<code class="devsite-terminal">sudo apt-get install openjdk-8-jdk</code>
-</pre>
-
-<h4 id="for-ubuntu-14-04">For Ubuntu LTS 14.04</h4>
-<p>There are no available supported OpenJDK 8 packages for Ubuntu 14.04. The
-<strong>Ubuntu 15.04 OpenJDK 8</strong> packages have been used successfully
-with Ubuntu 14.04. <em>Newer package versions (e.g. those for 15.10, 16.04) were
-found not to work on 14.04 using the instructions below.</em></p>
-<ol>
-<li>
-<p>Download the <code>.deb</code> packages for 64-bit architecture from
-<a href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/">old-releases.ubuntu.com</a>:</p>
-<ul>
-<li><a
-href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre-headless_8u45-b14-1_amd64.deb">openjdk-8-jre-headless_8u45-b14-1_amd64.deb</a>
-with SHA256 <code>0f5aba8db39088283b51e00054813063173a4d8809f70033976f83e214ab56c0</code></li>
-<li><a
-href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jre_8u45-b14-1_amd64.deb">openjdk-8-jre_8u45-b14-1_amd64.deb</a>
-with SHA256 <code>9ef76c4562d39432b69baf6c18f199707c5c56a5b4566847df908b7d74e15849</code></li>
-<li><a
-href="http://old-releases.ubuntu.com/ubuntu/pool/universe/o/openjdk-8/openjdk-8-jdk_8u45-b14-1_amd64.deb">openjdk-8-jdk_8u45-b14-1_amd64.deb</a>
-with SHA256 <code>6e47215cf6205aa829e6a0a64985075bd29d1f428a4006a80c9db371c2fc3c4c</code></li>
-</ul>
-</li>
-<li>
-<p>Optionally, confirm the checksums of the downloaded files against the SHA256
-string listed with each package above.</p>
-<p>For example, with the <code>sha256sum</code> tool:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-sha256sum {downloaded.deb file}
-</pre>
-</li>
-<li>
-<p>Install the packages:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo apt-get update
-</pre>
-<p>Run <code>dpkg</code> for each of the .deb files you downloaded. It may produce errors due to
-missing dependencies:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo dpkg -i {downloaded.deb file}
-</pre>
-<p>To fix missing dependencies:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo apt-get -f install
-</pre>
-</li>
-</ol>
-
-<h4 id="default-java-version">Update the default Java version - optional</h4>
-
-<p>Optionally, for the Ubuntu versions above update the default Java version by
-running:</p>
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">sudo update-alternatives --config java</code>
-<code class="devsite-terminal">sudo update-alternatives --config javac</code>
-</pre>
-
-<p>If, during a build, you encounter version errors for Java, set its
-path as described in the <a href="building.html#wrong-java-version">Wrong
-Java Version</a> section.</p>
-
-<h3 id="installing-required-packages-ubuntu-1404">Installing required packages (Ubuntu 14.04)</h3>
-
-<p>You will need a 64-bit version of Ubuntu. Ubuntu 14.04 is recommended.</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
-</pre>
-
-<p class="note"><strong>Note:</strong> To use SELinux tools for policy
-analysis, also install the <code>python-networkx</code> package.</p>
-
-<p class="note"><strong>Note:</strong> If you are using LDAP and want
-to run ART host tests, also install the <code>libnss-sss:i386</code>
-package.</p>
-
-<h3 id="installing-required-packages-ubuntu-1204">Installing required packages
-(Ubuntu 12.04)</h3>
-
-<p>You may use Ubuntu 12.04 to build older versions of Android. Version 12.04
-is not supported on master or recent releases.</p>
-
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386</code>
-<code class="devsite-terminal">sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so</code>
-</pre>
-
-<h3 id="installing-required-packages-ubuntu-1004-1110">Installing required
-packages (Ubuntu 10.04 -- 11.10)</h3>
-<p>Building on Ubuntu 10.04-11.10 is no longer supported, but may be useful for
-building older releases of AOSP.</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
-</pre>
-
-<p>On Ubuntu 10.10:</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so
-</pre>
-
-<p>On Ubuntu 11.10:</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo apt-get install libx11-dev:i386
-</pre>
-
-<h3 id="configuring-usb-access">Configuring USB Access</h3>
-
-<p>Install a community-maintained default set of <code>udev</code> rules for
-all Android devices by following the instructions to <a
-href="https://developer.android.com/studio/run/device.html#setting-up"
-class="external">Set up a device for development</a>.
-
-<h3 id="using-a-separate-output-directory">Using a separate output directory</h3>
-
-<p>By default, the output of each build is stored in the <code>out/</code>
-subdirectory of the matching source tree.</p>
-
-<p>On some machines with multiple storage devices, builds are
-faster when storing the source files and the output on
-separate volumes. For additional performance, the output
-can be stored on a filesystem optimized for speed instead
-of crash robustness, since all files can be re-generated
-in case of filesystem corruption.</p>
-
-<p>To set this up, export the <code>OUT_DIR_COMMON_BASE</code> variable
-to point to the location where your output directories
-will be stored.</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-export OUT_DIR_COMMON_BASE=&lt;path-to-your-out-directory&gt;
-</pre>
-
-<p>The output directory for each separate source tree will be
-named after the directory holding the source tree.</p>
-
-<p>For instance, if you have source trees as <code>/source/master1</code>
-and <code>/source/master2</code> and <code>OUT_DIR_COMMON_BASE</code> is set to
-<code>/output</code>, the output directories will be <code>/output/master1</code>
-and <code>/output/master2</code>.</p>
-
-<p>It's important in that case to not have multiple source
-trees stored in directories that have the same name,
-as those would end up sharing an output directory, with
-unpredictable results.</p>
-
-<p>This is only supported on Jelly Bean (4.1) and newer,
-including the <code>master</code> branch.</p>
-
-<h2 id="setting-up-a-mac-os-x-build-environment">Setting up a Mac OS build
-environment</h2>
-
-<p>In a default installation, Mac OS runs on a case-preserving but
-case-insensitive filesystem. This type of filesystem is not supported by git
-and will cause some git commands (such as <code>git status</code>) to behave
-abnormally. Because of this, we recommend that you always work with the AOSP
-source files on a case-sensitive filesystem. This can be done fairly easily
-using a disk image, discussed below.</p>
-
-<p>Once the proper filesystem is available, building the <code>master</code>
-branch in a modern Mac OS environment is very straightforward. Earlier
-branches require some additional tools and SDKs.</p>
-
-<h3 id="creating-a-case-sensitive-disk-image">Creating a case-sensitive disk image</h3>
-
-<p>You can create a case-sensitive filesystem within your existing Mac OS environment
-using a disk image. To create the image, launch Disk
-Utility and select "New Image". A size of 25GB is the minimum to
-complete the build; larger numbers are more future-proof. Using sparse images
-saves space while allowing to grow later as the need arises. Be sure to select
-"case sensitive, journaled" as the volume format.</p>
-
-<p>You can also create it from a shell with the following command:</p>
-<pre class="devsite-click-to-copy devsite-terminal" data-terminal-prefix="# ">
-hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/android.dmg
-</pre>
-
-<p>This will create a <code>.dmg</code> (or possibly a
-<code>.dmg.sparseimage</code>) file which, once mounted, acts as a drive with
-the required formatting for Android development.</p>
-
-<p>If you need a larger volume later, you can also resize the sparse image with
-the following command:</p>
-
-<pre class="devsite-click-to-copy devsite-terminal" data-terminal-prefix="# ">hdiutil resize -size &lt;new-size-you-want&gt;g ~/android.dmg.sparseimage
-</pre>
-
-<p>For a disk image named <code>android.dmg</code> stored in your home
-directory, you can add helper functions to your <code>~/.bash_profile</code>:</p>
-
-<ul>
-<li>
-To mount the image when you execute <code>mountAndroid</code>:
-
-<pre class="devsite-click-to-copy">
-# mount the android file image
-mountAndroid() { hdiutil attach ~/android.dmg -mountpoint /Volumes/android; }
-</pre>
-
-<p class="note"><strong>Note:</strong> If your system created a
-<code>.dmg.sparseimage</code> file, replace <code>~/android.dmg</code> with
-<code>~/android.dmg.sparseimage</code>.</p>
-</li>
-
-<li>
-<p>To unmount it when you execute <code>umountAndroid</code>:</p>
-<pre class="devsite-click-to-copy">
-# unmount the android file image
-umountAndroid() { hdiutil detach /Volumes/android; }
-</pre>
-</li>
-</ul>
-
-<p>Once you've mounted the <code>android</code> volume, you'll do all your work
-there. You can eject it (unmount it) just like you would with an external
-drive.</p>
-
-<h3 id="installing-the-mac-jdk">Installing the JDK</h3>
-
-<p>See <a href="requirements.html">Requirements</a> for the version of Java to
-use when developing various versions of Android.</p>
-
-<h4 id="installing-required-packages">Installing required packages</h4>
-
-<ol>
-<li>
-<p>Install Xcode command line tools with:
-<pre class="devsite-terminal devsite-click-to-copy">
-xcode-select --install
-</pre>
-
-<p>For older versions of Mac OS (10.8 or earlier), you need to install Xcode from
-<a href="http://developer.apple.com/">the Apple developer site</a>.
-If you are not already registered as an Apple developer, you will have to
-create an Apple ID in order to download.</p>
-</li>
-
-<li>
-<p>Install MacPorts from <a
-href="http://www.macports.org/install.php">macports.org</a>.</p>
-
-<p class="note"><strong>Note:</strong> Make sure that
-<code>/opt/local/bin</code> appears in your path <strong>before</strong>
-<code>/usr/bin</code>. If not, please add the following to your
-<code>~/.bash_profile</code> file:</p>
-
-<pre class="devsite-click-to-copy">
-export PATH=/opt/local/bin:$PATH
-</pre>
-
-<p class="note"><strong>Note:</strong> If you do not have a
-<code>.bash_profile</code> file in your home directory, create one.</p>
-</li>
-
-<li>
-<p>Get make, git, and GPG packages from MacPorts:</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-POSIXLY_CORRECT=1 sudo port install gmake libsdl git gnupg
-</pre>
-
-<p>If using Mac OS X v10.4, also install bison:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-POSIXLY_CORRECT=1 sudo port install bison
-</pre>
-</li>
-</ol>
-
-<h4 id="reverting-from-make-382">Reverting from make 3.82</h4>
-
-<p>In Android 4.0.x (Ice Cream Sandwich) and earlier, a bug exists in gmake 3.82
-that prevents android from building. You can install version 3.81 using
-MacPorts with these steps:</p>
-
-<ol>
-<li>
-<p>Edit <code>/opt/local/etc/macports/sources.conf</code> and add a line that says:</p>
-<pre class="devsite-click-to-copy">
-file:///Users/Shared/dports
-</pre>
-
-<p>above the rsync line. Then create this directory:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-mkdir /Users/Shared/dports
-</pre>
-</li>
-
-<li>
-<p>In the new <code>dports</code> directory, run:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-svn co --revision 50980 http://svn.macports.org/repository/macports/trunk/dports/devel/gmake/ devel/gmake/
-</pre>
-</li>
-
-<li>
-<p>Create a port index for your new local repository:</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-portindex /Users/Shared/dports
-</pre>
-</li>
-
-<li>
-<p>Install the old version of gmake with:</p>
-<pre class="devsite-terminal devsite-click-to-copy">
-sudo port install gmake @3.81
-</pre>
-</li>
-</ol>
-
-<h4 id="setting-a-file-descriptor-limit">Setting a file descriptor limit</h4>
-
-<p>On Mac OS, the default limit on the number of simultaneous file descriptors
-open is too low and a highly parallel build process may exceed this limit.</p>
-
-<p>To increase the cap, add the following lines to your <code>~/.bash_profile</code>: </p>
-<pre class="devsite-click-to-copy">
-# set the number of open files to be 1024
-ulimit -S -n 1024
-</pre>
-
-<h2 id="optimizing-a-build-environment">Optimizing a build environment (optional)</h2>
-
-<h3 id="setting-up-ccache">Setting up ccache</h3>
-
-<p>You can optionally tell the build to use the ccache compilation tool, which
-is a compiler cache for C and C++ that can help make builds faster. It
-is especially useful for build servers and other high-volume production
-environments. Ccache acts as a compiler cache that can be used to speed up rebuilds.
-This works very well if you use <code>make clean</code> often, or if you frequently
-switch between different build products.</p>
-
-<p class="note"><strong>Note:</strong> If you're instead conducting incremental
-builds (such as an individual developer rather than a build server), ccache may
-slow your builds down by making you pay for cache misses.</p>
-
-<p>To use ccache, issue these commands in the root of the source tree:</p>
-
-<pre class="devsite-click-to-copy">
-<code class="devsite-terminal">export USE_CCACHE=1</code>
-<code class="devsite-terminal">export CCACHE_DIR=/&lt;path_of_your_choice&gt;/.ccache</code>
-<code class="devsite-terminal">prebuilts/misc/linux-x86/ccache/ccache -M 50G</code>
-</pre>
-
-<p>The suggested cache size is 50-100G.</p>
-
-<p>Put the following in your <code>.bashrc</code> (or equivalent):</p>
-
-<pre class="devsite-click-to-copy">
-export USE_CCACHE=1
-</pre>
-
-<p>By default the cache will be stored in <code>~/.ccache</code>.
-If your home directory is on NFS or some other non-local filesystem,
-you will want to specify the directory in your <code>.bashrc</code> file too.</p>
-
-<p>On Mac OS, you should replace <code>linux-x86</code> with <code>darwin-x86</code>:</p>
-
-<pre class="devsite-click-to-copy">
-prebuilts/misc/darwin-x86/ccache/ccache -M 50G
-</pre>
-
-<p>When building Ice Cream Sandwich (4.0.x) or older, ccache is in
-a different location:</p>
-
-<pre class="devsite-click-to-copy">
-prebuilt/linux-x86/ccache/ccache -M 50G
-</pre>
-
-<p>This setting is stored in the CCACHE_DIR and is persistent.</p>
-
-<p>On Linux, you can watch ccache being used by doing the following:</p>
-
-<pre class="devsite-terminal devsite-click-to-copy">
-watch -n1 -d prebuilts/misc/linux-x86/ccache/ccache -s
-</pre>
-
-<h2 id="next-download-the-source">Next: Download the source</h2>
-
-<p>Your build environment is good to go! Proceed to <a
-href="downloading.html">downloading the source</a>.</p>
-
- </body>
-</html>
diff --git a/en/setup/licenses.html b/en/setup/licenses.html
deleted file mode 100644
index a2114a2b..00000000
--- a/en/setup/licenses.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<html devsite>
- <head>
- <title>Content License</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 Android Open Source Project uses a few
-<a href="http://www.opensource.org/">open source initiative</a>
-approved open source licenses for our software.</p>
-<h2 id="android-open-source-project-license">Android Open Source Project License</h2>
-<p>The preferred license for the Android Open Source Project is the
-<a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
-Software License, Version 2.0</a> ("Apache 2.0"),
-and the majority of the Android software is licensed
-with Apache 2.0. While the project will strive to adhere to the preferred
-license, there may be exceptions that will be handled on a case-by-case
-basis. For example, the Linux kernel patches are under the GPLv2 license with
-system exceptions, which can be found on <a href="http://www.kernel.org/pub/linux/kernel/COPYING">kernel.org</a>.</p>
-<h2 id="contributor-license-grants">Contributor License Agreements</h2>
-<p>All <em>individual</em> contributors (that is, contributors making contributions
-only on their own behalf) of ideas, code, or documentation to the Android Open
-Source Project will be required to complete, sign, and submit an <a
-href="https://cla.developers.google.com/about/google-individual">Individual
-Contributor License Agreement</a>. The agreement can be executed online through the
-<a href="https://android-review.googlesource.com/#/settings/agreements">code review tool</a>.
-The agreement clearly defines the terms under which intellectual
-property has been contributed to the Android Open Source Project. This license
-is for your protection as a contributor as well as the protection of the
-project; it does not change your rights to use your own contributions for any
-other purpose.</p>
-<p>For a <em>corporation</em> (or other entity) that has assigned employees to
-work on the Android Open Source Project, a <a
-href="https://cla.developers.google.com/about/google-corporate">Corporate
-Contributor License Agreement</a> is available.
-This version of the agreement allows a
-corporation to authorize contributions submitted by its designated employees
-and to grant copyright and patent licenses. Note that a Corporate Contributor
-License Agreement does not remove the need for any developer to sign their own
-Individual Contributor License Agreement as an individual. The individual
-agreement is needed to cover any of their contributions that are <em>not</em>
-owned by the corporation signing the Corporate Contributor License Agreement.</p>
-<p>Please note we based our agreements on the ones the
-<a href="http://www.apache.org">Apache Software Foundation</a> uses, which can
-be found on the <a href="http://www.apache.org/licenses/">Apache web site</a>.</p>
-<h2 id="why-apache-software-license">Why Apache Software License?</h2>
-<p>We are sometimes asked why Apache Software License 2.0 is the preferred
-license for Android. For userspace (that is, non-kernel) software, we do in
-fact prefer ASL2.0 (and similar licenses like BSD, MIT, etc.) over other
-licenses such as LGPL.</p>
-<p>Android is about freedom and choice. The purpose of Android is promote
-openness in the mobile world, and we don't believe it's possible to predict or
-dictate all the uses to which people will want to put our software. So, while
-we encourage everyone to make devices that are open and modifiable, we don't
-believe it is our place to force them to do so. Using LGPL libraries would
-often force them to do just that.</p>
-<p>Here are some of our specific concerns:</p>
-<ul>
-<li>
-<p>LGPL (in simplified terms) requires either: shipping of source to the
-application; a written offer for source; or linking the LGPL-ed library
-dynamically and allowing users to manually upgrade or replace the library.
-Since Android software is typically shipped in the form of a static system
-image, complying with these requirements ends up restricting OEMs' designs.
-(For instance, it's difficult for a user to replace a library on read-only
-flash storage.)</p>
-</li>
-<li>
-<p>LGPL requires allowance of customer modification and reverse
-engineering for debugging those modifications. Most device makers do
-not want to have to be bound by these terms. So to minimize the burden on
-these companies, we minimize usage of LGPL software in userspace.</li></p>
-</li>
-<li>
-<p>Historically, LGPL libraries have been the source of a large number
-of compliance problems for downstream device makers and application
-developers. Educating engineers on these issues is difficult and slow-going,
-unfortunately. It's critical to Android's success that it be as easy as
-possible for device makers to comply with the licenses. Given the
-difficulties with complying with LGPL in the past, it is most prudent to
-simply not use LGPL libraries if we can avoid it.</p>
-</li>
-</ul>
-<p>The issues discussed above are our reasons for preferring ASL2.0 for
-our own code. They aren't criticisms of LGPL or other licenses. We are
-passionate about this topic, even to the point where we've gone out of our
-way to make sure as much code as possible is ASL2.0 licensed. However, we love all free
-and open source licenses, and respect others' opinions and preferences. We've
-simply decided ASL2.0 is the right license for our goals.</p>
-
- </body>
-</html>
diff --git a/en/setup/requirements.html b/en/setup/requirements.html
deleted file mode 100644
index e95cbb20..00000000
--- a/en/setup/requirements.html
+++ /dev/null
@@ -1,180 +0,0 @@
-<html devsite>
- <head>
- <title>Requirements</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>Before you download and build the Android source, ensure your system meets
- the following requirements. Then see <a href="initializing.html">Establishing a
- Build Environment</a> for installation instructions by operating system.</p>
-
-<h2 id=hardware-requirements>Hardware requirements</h2>
-
-<p>Your development workstation should meet or exceed these hardware requirements:</p>
-
-<ul>
-
- <li>A 64-bit environment is required for Gingerbread (2.3.x) and newer
- versions, including the master
- branch. You can compile older versions on 32-bit systems.
- </li>
-
- <li>At least 100GB of free disk space to checkout the code and an extra 150GB
- to build it. If you conduct multiple builds or employ ccache, you will need
- even more space.</p>
- </li>
-
- <li>If you are running Linux in a virtual machine, you need at
- least 16GB of RAM/swap.
- </li>
-
-</ul>
-
-<h2 id=software-requirements>Software requirements</h2>
-
-<p>The <a
- href="https://android.googlesource.com/">Android Open Source Project
- (AOSP)</a> <code>master</code> branch is traditionally developed and tested
- on Ubuntu Long Term Support (LTS) releases, but other distributions may be
- used. See the list below for recommended versions.</p>
-
-<p>You workstation must have the software listed below. See <a
- href="initializing.html">Establishing a Build Environment</a> for
- additional required packages and the commands to install them.</p>
-
-<h3 id=latest-version>OS and JDK</h3>
-
-<p>If you are developing against the AOSP <code>master</code> branch, use one
-of these operating systems: Ubuntu 14.04 (Trusty) or Mac OS v10.10 (Yosemite)
-or later with Xcode 4.5.2 and Command Line Tools.</p>
-
-<p>For the Java Development Kit (JDK), note the <code>master</code> branch of
-Android in AOSP comes with a prebuilt version of OpenJDK; so no additional
-installation is required. Older versions require a separate install.</p>
-
-<p>See <a href="#older-versions">Packages for older versions</a>.
-
-<h3 id=packages>Key packages</h3>
- <ul>
- <li>Python 2.6 -- 2.7 from <a href="http://www.python.org/download/">python.org</a></li>
- <li>GNU Make 3.81 -- 3.82 from <a href="http://ftp.gnu.org/gnu/make/">gnu.org</a>
- <li>Git 1.7 or newer from <a href="http://git-scm.com/download">git-scm.com</a></li>
- </ul>
-
-<h3 id=binaries>Device binaries</h3>
-<p>Download previews, factory images, drivers, over-the-air (OTA) updates, and
-other blobs below. See <a
- href="/setup/building.html#obtaining-proprietary-binaries">Obtaining
- proprietary binaries</a> for additional details.</p>
- <ul>
- <li><a href="https://developers.google.com/android/blobs-preview">Preview
- binaries (blobs)</a> - for AOSP <code>master</code> branch
- development</li>
- <li><a href="https://developers.google.com/android/images">Factory
- images</a> - for the supported devices running tagged AOSP release
- branches</li>
- <li><a href="https://developers.google.com/android/drivers">Binary
- hardware support files</a> - for devices running tagged AOSP release
- branches</li>
- </ul>
-
- <h3 id=toolchain>Build toolchain</h3>
-
- <p>Android 8.0 and later support only <a
-href="https://developer.android.com/ndk/guides/standalone_toolchain.html#working_with_clang">Clang/LLVM</a>
- for building the Android platform. Join the <a
-href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a>
- group to pose questions and get help. Report NDK/compiler issues at the <a
-href="https://github.com/android-ndk/ndk">NDK GitHub</a>.</p>
-
-<p>For the
-<a href="https://developer.android.com/ndk/guides/index.html">Native
-Development Kit (NDK)</a> and legacy kernels, GCC 4.9 included
-in the AOSP master branch (under <code>prebuilts/</code>) may also be used.</p>
-
-<h3 id=older-versions>Packages for older versions</h3>
-
-<p>The sections below provide relevant operating systems and JDK packages for
-older versions of Android.</p>
-
-<h4 id=operating-system>Operating system</h4>
-
-<p>Android is typically built with a GNU/Linux or Mac OS operating system. It is
- also possible to build Android in a virtual machine on unsupported systems such
- as Windows.</br>
-
- <h5 id=linux>GNU/Linux</h5>
-
- <ul>
- <li>Android 6.0 (Marshmallow) - AOSP master: Ubuntu 14.04 (Trusty)</li>
- <li>Android 2.3.x (Gingerbread) - Android 5.x (Lollipop): Ubuntu 12.04 (Precise)</li>
- <li>Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu 10.04 (Lucid)</li>
- </ul>
-
-<h5 id=mac>Mac OS (Intel/x86)</h5>
-
- <ul>
- <li>Android 6.0 (Marshmallow) - AOSP master: Mac OS v10.10 (Yosemite) or
- later with Xcode 4.5.2 and Command Line Tools</li>
- <li>Android 5.x (Lollipop): Mac OS v10.8 (Mountain Lion) with Xcode 4.5.2
- and Command Line Tools</li>
- <li>Android 4.1.x-4.3.x (Jelly Bean) - Android 4.4.x (KitKat): Mac OS v10.6
- (Snow Leopard) or Mac OS X v10.7 (Lion) and Xcode 4.2 (Apple's Developer
- Tools)</li>
- <li>Android 1.5 (Cupcake) - Android 4.0.x (Ice Cream Sandwich): Mac OS
- v10.5 (Leopard) or Mac OS X v10.6 (Snow Leopard) and the Mac OS X v10.5
- SDK</li>
- </ul>
-
- <p><b>Note</b>: consider building on GNU/Linux, not another
- operating system. The Android build system normally uses ART,
- running on the build machine, to pre-compile system dex files. Since
- ART is able to run only on Linux, the build system skips this
- pre-compilation step on non-Linux operating systems, resulting in an
- Android build with reduced performance.</p>
-
-<h4 id=jdk>JDK</h4>
-
-<p>See <a href="initializing.html#installing-the-jdk">Installing the JDK</a>
-for the prebuilt path and installation instructions for older versions.</p>
- <ul>
- <li>Android 7.0 (Nougat) - Android 8.0 (O release): Ubuntu - <a
- href="http://openjdk.java.net/install/">OpenJDK 8</a>, Mac OS - <a
- href="http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR">jdk
- 8u45 or newer</a></li>
- <li>Android 5.x (Lollipop) - Android 6.0 (Marshmallow): Ubuntu - <a
- href="http://openjdk.java.net/install/">OpenJDK 7</a>, Mac OS - <a
- href="https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html#jdk-7u71-oth-JPR">jdk-7u71-macosx-x64.dmg</a></li>
- <li>Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat): Ubuntu - <a
- href="http://www.oracle.com/technetwork/java/javase/archive-139210.html">Java JDK 6</a>, Mac OS - <a
- href="http://support.apple.com/kb/dl1572">Java JDK 6</a></li>
- <li>Android 1.5 (Cupcake) - Android 2.2.x (Froyo): Ubuntu - <a
- href="http://www.oracle.com/technetwork/java/javase/archive-139210.html">Java JDK 5</a></li>
- </ul>
-
- <h4 id=make>Make</h4>
- <p> Android 4.0.x (Ice Cream Sandwich) and earlier will need to <a
- href="initializing.html#reverting-from-make-382">revert from make 3.82</a>
- to avoid build errors.</p>
-
- </body>
-</html>
diff --git a/en/setup/roles.html b/en/setup/roles.html
deleted file mode 100644
index 03e2b826..00000000
--- a/en/setup/roles.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<html devsite>
- <head>
- <title>Project Roles</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 Android Open Source Project (AOSP) includes individuals working in a variety
-of roles. Google is responsible for Android product management
-and the engineering process for the core framework and platform; however,
-the project considers contributions from any source, not just Google. This
-page describes the kinds of roles that interested parties can take on.</p>
-<p>Anyone who is interested in exploring and contributing to Android can use the
-Android Open Source Project resources. Anyone can join the mailing lists, ask
-questions, contribute patches, report bugs, look at submitted patches, and use
-the tools. To get started with the Android code, see <a href="/setup/contributing.html">Contributing</a>.</p>
-<h2 id="contributor">Contributor</h2>
-<p>"Contributors" are those making contributions to the AOSP source code,
-including both employees of Google or other companies, as well as individual
-developers who are contributing to Android on their own behalf. There is no
-distinction between contributors who are employed by Google and those who are
-not; all engineers use the same tools (git, repo, and gerrit),
-follow the same code review process, and are subject
-to the same requirements on code style and so on.</p>
-<h2 id="developer">Developer</h2>
-<p>"Developers" are engineers writing applications that run on Android
-devices. There is often little difference in skillset between a developer
-and a contributor. But AOSP uses "developer" to distinguish between
-engineers using the platform and those contributing to it. Developers
-(along with users) are the "customers" of the platform the contributors
-create. As such, we talk about developers a lot, though this isn't technically
-a separate role in the AOSP per se.</p>
-<h2 id="verifier">Verifier</h2>
-<p>"Verifiers" are responsible for testing change requests. After individuals
-have submitted a significant amount of high-quality code to the project, the
-project leads might invite them to become verifiers.</p>
-<p class="note"><strong>Note:</strong> At this time, verifiers act similarly to approvers.</p>
-<h2 id="approver">Approver</h2>
-<p>"Approvers" are experienced members of the project who have demonstrated their
-design skills and have made significant technical contributions to the
-project. In the code-review process, an approver decides whether to include or
-exclude a change. Project leads (who are typically employed by Google) choose
-the approvers, sometimes promoting to this position verifiers who have
-demonstrated their expertise within a specific project.</p>
-<h2 id="project-leads">Project Lead</h2>
-<p>Android consists of a number of sub-projects; you can see these in the git
-repository as individual .git files. "Project leads" are senior contributors who
-oversee the engineering for individual Android projects. Typically these project
-leads are Google employees. A project lead for an individual project is
-responsible for the following:</p>
-<ul>
-<li>
-<p>Lead all technical aspects of the project, including the project roadmap,
- development, release cycles, versioning, and quality assurance (QA).</p>
-</li>
-<li>
-<p>Ensure the project is tested by QA in time for scheduled Android platform
- releases.</p>
-</li>
-<li>
-<p>Designate Verifiers and Approvers for submitted patches.</p>
-</li>
-<li>
-<p>Be fair and unbiased while reviewing changes. Accept or reject patches
- based on technical merit and alignment with the Android strategy.</p>
-</li>
-<li>
-<p>Review changes in a timely manner and make best efforts to communicate
- when changes are not accepted.</p>
-</li>
-<li>
-<p>Optionally maintain a web site for the project for information and
- documents specific to the project.</p>
-</li>
-<li>
-<p>Act as a facilitator in resolving technical conflicts.</p>
-</li>
-<li>
-<p>Be a public face for the project and the go-to person for questions
- related to the project.</p>
-</li>
-</ul>
-
- </body>
-</html>
diff --git a/en/setup/site-updates.html b/en/setup/site-updates.html
deleted file mode 100644
index a77ebbda..00000000
--- a/en/setup/site-updates.html
+++ /dev/null
@@ -1,777 +0,0 @@
-<html devsite>
- <head>
- <title>Site Updates</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>This page describes significant revisions to source.android.com. Please see
-the <a
-href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?pretty=full&no-merges">Android
-Open Source Project (AOSP) docs/source.android.com log</a> for the complete
-list of changes to this site.
-
-<h2 id="Dec-2017">December 2017</h2>
-
-<p>Android 8.1 has been released! See the entries below for the major platform
-features introduced in this release.</p>
-
-<h3 id="aaudio">AAudio and MMAP</h3>
-
-<p>AAudio is an audio API that has enhancements to reduce latency when used in
-conjunction with a HAL and driver that support MMAP. See <a
-href="/devices/audio/aaudio">AAudio and MMAP</a> for documentation
-describing the hardware abstraction layer (HAL) and driver changes needed to
-support AAudio's MMAP feature in Android.</p>
-
-<h3 id="art-config">ART configuration changes</h3>
-
-<p>The <code>WITH_DEXPREOPT_BOOT_IMG_ONLY</code> makefile option was removed
-from the Android runtime (ART) in Android 8.1 and replaced with the
-<code>WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY</code> option that
-pre-optimizes the system server jars, as well as the boot classpath. See <a
-href="/devices/tech/dalvik/configure#build_options">Configuring ART</a> for the
-deprecation notice.</p>
-
-<h3 id="biometric-unlock">Biometric unlock security measurements</h3>
-
-<p>Android 8.1 introduces two new metrics associated with biometric unlocks
-that are intended to help device manufacturers evaluate their security more
-accurately: Imposter Accept Rate (IAR) and Spoof Accept Rate (SAR). See <a
-href="/security/biometric/">Measuring Biometric Unlock Security</a> for
-example attacks and test methodology.</p>
-
-<h3 id="boot-times">Boot time optimizations</h3>
-
-<p>Starting in Android 8.1, power saving setting for components like UFS and
-CPU governor can be disabled to improve device boot times. See <a
-href="/devices/tech/perf/boot-times#disable-power-saving">Optimizing Boot
-Times</a> for the new <code>init.*.rc</code> settings.</p>
-
-<h3 id=“color-mgmt”>Color management</h3>
-
-<p>Android 8.1 adds support for color management that can be used to provide a
-consistent experience across display technologies. Applications running on
-Android 8.1 can access the full capabilities of a wide gamut display to get the
-most out of a display device. See <a
-href="/devices/tech/display/color-mgmt">Color Management</a> for
-instructions on implementing, customizing, and testing this feature.</p>
-
-<h3 id="opengl-config">OpenGLRenderer configuration simplification</h3>
-
-<p>In Android 8.1 and later, only the <code>ro.zygote.disable_gl_preload
-property</code> still applies to OpenGLRenderer configuration. All other
-properties have been removed. See <a
-href="/devices/graphics/renderer">OpenGLRenderer Configuration</a> for the
-notice and previously supported properties.</p>
-
-<h3 id="retail-mode">Retail demo mode made easy</h3>
-
-<p>Through Device Policy Manager, Android 8.1 supports demonstrating device
-functionality in retail stores via a demo-type user role. See <a
-href="/devices/tech/display/retail-mode.html">Retail Demo Mode</a> for
-implementation instructions.</p>
-
-<h3 id="textclassifier">TEXTCLASSIFIER</h3>
-
-<p>Android 8.1 introduces the TextClassfier API that uses machine learning
-techniques to help developers classify text.
-See <a href="/devices/tech/display/textclassifier.html">TEXTCLASSIFIER</a> for
-implementation instructions.</p>
-
-<h3 id="timezone-rules">Time zone rules</h3>
-
-<p>Android 8.1 provides a new mechanism for device manufacturers (OEMs) to push
-updated time zone rules data to devices without requiring a system update. This
-mechanism enables users to receive timely updates and OEMs to test time zone
-updates independently of system image updates. See <a
-href="/devices/tech/config/timezone-rules">Time Zone Rules</a> for
-instructions on applying these updates.</p>
-
-<h3 id="wifi-aware">Wi-Fi Aware</h3>
-
-<p>The Wi-Fi Aware feature in Android 8.1 enables supporting devices to connect
-to one another directly over Wi-Fi without internet or cellular network access.
-This feature allows easy sharing of high-throughput data among trusted devices
-and apps that are otherwise off network. See <a
-href="/devices/tech/connect/wifi-aware">Wi-Fi Aware</a> for examples, source
-files, and links to additional documentation.</p>
-
-<h2 id="Nov-2017">November 2017</h2>
-
-<p>The <em>Source</em> section has been renamed to
- <a href="/setup"><em>Setup</em></a>. Redirects are in place to ensure the old
- URLs still work.</p>
-
-<h2 id="Sept-2017">September 2017</h2>
-
-<p>This site has been released in China at <a
- href="https://source.android.google.cn"
- class="external-link">source.android.google.cn</a>. All
- non-reference materials have also been translated into Simplified Chinese for
- ease of use.</p>
-
-<h2 id="August-2017">August 2017</h2>
-
-<p>Android 8.0 has been released! This section describes the major new features
-in the Android 8.0 platform.</p>
-
-<h3 id="architecture">Architecture</h3>
-
-<h4>Treble</h4>
-<p>
-Android 8.0 includes support for Treble, a major re-architect of the
-Android OS framework designed to make it easier, faster, and less costly
-for manufacturers to update devices to a new version of Android. Documentation
-includes details on the <a href="/devices/architecture/hidl/index.html">HAL interface definition
-language (HIDL)</a>, a new <a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>,
-<a href="/devices/architecture/dto/index.html">Device Tree Overlays</a>,
-the <a href="/devices/architecture/vndk/index.html">Vendor Native Development
-Kit (VNDK)</a>, <a href="/devices/architecture/vintf/index.html">Vendor
- Interface Objects (VINTF)</a>, <a href="/devices/architecture/kernel/modular-kernels.html">
-Modular Kernel requirements</a>, and the <a href="/devices/tech/vts/index.html">
-Vendor Test Suite (VTS) and Infrastructure</a>.
-</p>
-
-<h4>FunctionFS support</h4>
-<p>
-<a class="external-link"
- href="https://www.kernel.org/doc/Documentation/usb/functionfs.txt">FunctionFS</a>
-(FFS) is a USB gadget function that is designed and controlled through user space.
-Its support allows all of the function- and protocol-specific code to live in
-user space, while all of the USB transport code lives in the kernel. Using
- FFS moves Media Transfer Protocol (MTP) implementation into user space.
-</p>
-
-<p>
-On the frameworks side, most of the major changes exist in MtpServer. The
-USB driver interface has been refactored into two different classes, one that
-uses the old kernel driver and one that uses FFS. MtpServer is then able
-to use that driver interface without needing to know the details of
-implementation. The FFS driver writes the USB descriptors to a file when
-the server starts up; it then writes data to endpoint files similar to the
-kernel driver use.
-</p>
-
-<h4>Kernel enhancements to LLDB/C++ debugging</h4>
-<p>
-The Android 8.0 release includes kernel enhancements that help developers create
-better applications by improving their debugging experience. For more
-information, see <a
-href="/devices/architecture/kernel/lldb-debug.html">Implementing
-kernel enhancements to LLDB/C++ debugging</a>.
-</p>
-
-<h4>Kernel Hardening</h4>
-<p>
-Upstreamed kernel hardening features and tools to find bugs in kernel drivers.
-For more information, see <a
-href="/devices/architecture/kernel/hardening.html">Kernel Hardening</a>.
-</p>
-
-<h4>Optimizing SquashFS at the Kernel Level</h4>
-<p>
-SquashFS is a compressed read-only filesystem for Linux, suitable for use on the
-system partition. The optimizations in this document help improve the
-performance of SquashFS. For more information, see <a
-href="/devices/architecture/kernel/squashfs.html">Optimizing
-SquashFS at the Kernel Level</a>.
-</p>
-
-<h3 id="art-dalvik">ART and Dalvik</h3>
-<h4>Fuzz Testing</h4>
-<p>
-The Android Open Source Project (AOSP) offers a new fuzzing testing suite for
-testing the <a href="/devices/tech/dalvik/">Android
-runtime (ART)</a> infrastructure. The new toolset, JFuzz and an improved
-DexFuzz, are directly available in AOSP now with accompanying documentation.
-See:
-<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>
-Nothing is required to implement or use the new tools. You may make changes
-to the tools if required, just like you can make changes to the
-runtime/compiler already.
-</p>
-
-<h4>VDEX files: Improve System Update Performance</h4>
-<p>
-VDEX files improve the performance and user experience of software updates. VDEX
-files store pre-validated DEX files with verifier dependencies so that during
-system updates ART does not need to extract and verify the DEX files again. No
-action is needed to implement this feature. It is enabled by default. To
-disable the feature, set the <code>ART_ENABLE_VDEX</code> environment variable
-to <code>false</code>.
-</p>
-
-<h4>ART performance improvements</h4>
-<p>
-The Android runtime (ART) has been improved significantly in the Android 8.0
-release. This document summarizes enhancements device manufacturers can expect
-in ART. For more information, see <a
-href="/devices/tech/dalvik/improvements.html">Improving
-ART Performance in Android 8.0</a>.
-</p>
-
-<h4>Android A/B OTA Updates</h4>
-<p>
-This update answers common questions device manufacturers have regarding Android
-A/B (seamless) system updates. For more information, see <a
-href="/devices/tech/ota/ab_updates#frequently-asked-questions.html">A/B
-(Seamless) System Updates Frequently asked questions</a>.
-</p>
-
-<h3 id="automotive">Automotive</h3>
-
-<h4>Bluetooth connection management</h4>
-<p>
-Android 8.0 provides Bluetooth connection management in in-vehicle infotainment
-systems for a more seamless Bluetooth user experience. For more information, see
-<a href="/devices/automotive/ivi_connectivity.html#bluetooth-connection-management">
-Bluetooth connection management</a>.
-</p>
-
-<h4>Bluetooth multi-device HFP</h4>
-<p>
-Bluetooth multi-device connectivity lets users connect multiple devices to telephony profiles in
-an Android Automotive IVI Bluetooth. For more information, see
-<a href="/devices/automotive/ivi_connectivity.html#bluetooth-multi-device-connectivity">
-IVI Connectivity</a>.
-</p>
-
-<h4>Vehicle Camera HAL</h4>
-<p>
-Describes the design of an exterior view system (EVS) stack and provides the HAL
-specification for supporting the acquisition and presentation of vehicle camera
-data. For more information, see <a
-href="/devices/automotive/camera-hal.html">Exterior
-View System (EVS) Vehicle Camera HAL.</a>
-</p>
-
-<h3 id="bluetooth">Bluetooth</h3>
-<p>
-See the updated <a
-href="/devices/bluetooth/index.html">Bluetooth
-overview</a>.
-</p>
-
-<h4>Verifying and debugging Bluetooth</h4>
-<p>
-A new page about how to verify and debug the native Bluetooth stack. For more details, see
-<a href="/devices/bluetooth/verifying_debugging.html">Verifying and Debugging</a>.
-</p>
-
-<h4>Bluetooth services</h4>
-<p>
-Bluetooth provides a variety of features that enable core services between devices,
-such as audio streaming, phone calls, and messaging. For more information about the Android
-Bluetooth services, see <a href="/devices/bluetooth/services.html">
-Bluetooth Services</a>.
-</p>
-
-<h4>BLE advertising</h4>
-<p>
-Bluetooth 5 supports different modes of data advertisements for Bluetooth Low Energy,
-including higher bandwidth or increased range. For more information, see
-<a href="/devices/bluetooth/ble_advertising.html">
-Bluetooth Low Energy Advertising</a>.
-</p>
-
-
-<h4>Bluetooth support for audio codecs</h4>
-<p>
-The Android 8.0 release includes support for Bluetooth high-definition audio
-codecs. For more information, see <a
-href="/devices/bluetooth/services.html#advanced-audio-codecs">Advanced audio codecs</a>.
-</p>
-
-
-<h3 id="camera">Camera</h3>
-
-<h4>Critical camera features</h4>
-<p>
-The Android 8.0 release contains these key enhancements to the Camera service:
-shared surfaces, enable multiple surfaces sharing the same OutputConfiguration
-System API for custom camera modes, and onCaptureQueueEmpty. For more
-information, see <a
-href="/devices/camera/versioning.html">Camera Version
-Support</a>.
-</p>
-
-<h3 id="configuration">Configuration</h3>
-
-<h4>Ambient Capabilities</h4>
-<p>
-Capabilities allow Linux processes to drop most root-like privileges, while
-retaining the subset of privileges that they require to perform their function.
-Ambient capabilities allows system services to configure capabilities in their
-<code>.rc</code> files, bringing all their configuration into a single file. For
-more information, see <a
-href="/devices/tech/config/ambient.html">Implementing
-Ambient Capabilities</a>.
-</p>
-
-<h4>Privileged Permission Whitelist Requirement</h4>
-<p>
-Starting in Android 8.0, all privileged apps must be explicitly whitelisted in
-system configuration XML files in the <code>/etc/permissions</code> directory.
-If they are not, then the device will boot, but the device implementation will
-not pass CTS. For more information, see <a
-href="/devices/tech/config/perms-whitelist.html">Privileged
-Permission Whitelist Requirement</a>.
-</p>
-
-<h4>Implementing USB HAL</h4>
-<p>
-The Android 8.0 release moves handling of USB commands out of init scripts and
-into a native USB daemon for better configuration and code reliability. For more
-information, see <a
-href="/devices/tech/config/usb-hal.html">Implementing
-USB HAL</a>.
-</p>
-
-<h3 id="connectivity">Connectivity</h3>
-
-<h4>Customizing Device Behavior for Out-of-balance Users</h4>
-<p>
-Android devices with no data balance allow network traffic through, requiring
-carriers and telecoms to implement mitigation protocols. This feature implements
-a generic solution that allows carriers and telcos to indicate when a device has
-run out of balance. For more information, see <a
-href="/devices/tech/connect/oob-users.html">Customizing
-device behavior for out-of-balance users</a>.
-</p>
-
-<h3 id="debugging">Debugging</h3>
-
-<h4>Enabling sanitizers in the Android build system</h4>
-<p>
-Sanitizers are compiler-based instrumentation components to use during
-development and testing in order to identify bugs and make Android better.
-Android's current set of sanitizers can discover and diagnose memory misuse bugs
-and potentially dangerous undefined behavior. For more information, see <a
-href="/devices/tech/debug/sanitizers.html">Enabling
-Sanitizers in the Android Build System</a>.
-</p>
-
-<h4>Recover devices in reboot loops</h4>
-<p>
-Android 8.0 includes a feature that sends out a "rescue party" when it notices
-core system components stuck in crash loops. Rescue Party then escalates through
-a series of actions to recover the device. For more information, see <a
-href="/devices/tech/debug/rescue-party.html">Rescue
-Party</a>.
-</p>
-
-<h4>Storaged</h4>
-<p>
-Android 8.0 adds support for <code>storaged</code>, an Android native daemon that
-collects and publishes storage metrics on Android devices. For more information,
-see <a
-href="/devices/tech/debug/storaged.html">Implementing
-Storaged</a>.
-</p>
-
-<h3 id="display">Display</h3>
-
-<h4>Air Traffic Control for floating windows</h4>
-<p>
-Android 8.0 introduces Air Traffic Control for floating windows in order to
-simplify and unify how apps display on top of other apps. Everything necessary
-to use the feature is included in the Android Open Source Project (AOSP).
-</p>
-<p>
-Air Traffic Control allows developers to create a new (managed) floating
-layer/window type for apps to use to display windows on-top of other apps. The
-feature displays ongoing notifications for all apps using a floating layer that
-lets the user manage the alert window.
-</p>
-<p>
-The Android Compatibility Test Suite (CTS) confirms:
-</p> <ul>
- <li>The current alert window types are: <code>TYPE_PHONE</code>, <code>TYPE_PRIORITY_PHONE</code>,
-<code>TYPE_SYSTEM_ALERT</code>, <code>TYPE_SYSTEM_OVERLAY</code>, or <code>TYPE_SYSTEM_ERROR</code>
- <li>Apps targeting the O SDK won't be able to use the window types above to
-display windows above other apps. They will need to use a new window type
-TYPE_APPLICATION_OVERLAY.
- <li>Apps targeting older SDKs can still use the current window types; however,
-the windows will be z-ordered below the new TYPE_APPLICATION_OVERLAY windows.
- <li>The system can move or resize windows in the new layer to reduce clutter.
- <li>Device manufacturers must keep the notification that lets users control
-what is displayed over other apps.</li> </ul>
-
-<h4>Launching activities on secondary displays</h4>
-<p>
-Virtual displays are available to everyone, and they don't require any special
-hardware. Any application can create an instance of virtual display; and in the
-Android 8.0 release, activities can be launched on that virtual display if the
-associated feature is enabled.
-</p>
-<p>
-To support multi-display features, you should either use one of the
-existing supported ways of connecting secondary devices or build new hardware.
-The supported ways of connecting displays on Nexus and Pixel devices are Google
-Cast and <a
-href="https://developer.android.com/reference/android/hardware/display/VirtualDisplay.html">virtual
-displays inside apps</a>. Support of other ways depends on kernel driver support
-for each particular case (like MHL or DisplayPort over USB-C) and fully
-implementing interface definitions that are related to displays in
-HardwareComposer HAL (IComposerCallback.hal and IComposerClient.hal).
-</p>
-<p>
-Each of the ways may require SoC or OEM support. For example, to enable
-DisplayPort over USB-C, both hardware (SOC) and software (drivers) support is
-required. You might need to implement drivers for your hardware to support
-connecting external displays.
-</p>
-<p>
-The default implementation will allow launching fullscreen stacks of activities
-on secondary displays. You can customize the stacks and System UI and
-behavior on secondary displays.
-</p>
-
-<h4>Support for generic tooltip</h4>
-<p>
-Android 8.0 allows developers to provide descriptive action names and other
-helpful information on mouse hover over buttons and other icons. Device
-manufacturers may style the tooltip popup. Its layout is defined in
-<code>android/frameworks/base/core/res/res/layout/tooltip.xml</code>.
-</a>
-</p>
-<p>
-OEMs may replace the layout or change its dimensions and style parameters. Use
-only text and keep the size reasonably small. The feature is implemented
-entirely inside the View class, and there are quite exhaustive CTS tests that
-check many aspects of Tooltip behavior.
-</p>
-<p>
-
-<h4>Support for extended aspect ratio</h4>
-<p>
-Android 8.0 includes a new manifest attribute, <a
-href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio">maxAspectRatio</a>,
-which lets an activity or app specify the maximum aspect ratio it supports.
-maxAspectRatio replaces the previous meta-data tag with a first-class API and
-allows devices to support an aspect ratio greater than 16:9.
-</p><ul>
-<li>If an activity or app is <a
-href="https://developer.android.com/guide/topics/ui/multi-window.html#configuring">resizable</a>,
-allow the activity to fill the screen.
-<li>If an activity or app is non-resizeable or the platform is force resizing
-the activity, allow the app window to display up to the maximum aspect ratio,
-according to the <a
-href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio">maxAspectRatio</a>
-value. <ul>
- <li>For applications on devices running Android 8.0, the default value is the
-aspect ratio of the current device.
- <li>For applications on devices running earlier versions of Android, the
-default value is 16:9.</li> </ul>
-</li> </ul>
-
-<h4>Implementing Adaptive Icons</h4>
-<p>
-Adaptive Icons maintain a consistent shape intra-device but vary from device to
-device with only one icon asset provided by the developer. Additionally, icons
-support two layers (foreground and background) that can be used for motion to
-provide visual delight to users. For more information, see <a
-href="/devices/tech/display/adaptive-icons.html">Implementing
-Adaptive Icons</a>.
-</p>
-
-<h4>Night Light</h4>
-<p>
-Night Light, introduced in Android 7.0.1, allows users to reduce the amount of
-blue light that their screen emits. Android 8.0 gives users more control over the
-intensity of this effect. For more information, see <a
-href="/devices/tech/display/night-light.html">Implementing
-Night Light</a>.
-</p>
-
-<h4>Picture-in-picture</h4>
-<p>
-Android 8.0 includes support for picture-in-picture (PIP) on Android handheld
-devices. PIP allows users to resize an app with an ongoing activity, such as a
-video, into a small window. For more information, see <a
-href="/devices/tech/display/pip.html">Picture-in-Picture
-on Android handsets</a>.
-</p>
-
-<h4>Better Split-Screen Interactions</h4>
-<p>
-Multi-window lets multiple apps simultaneously display on users' device screens.
-Android 8.0 improves the default mode, split-screen, by compressing the top pane
-and resizing the launcher if a user taps Home after entering split-screen. For
-more information, see <a
-href="/devices/tech/display/split-screen.html">Better
-Split-Screen Interactions</a>.
-</p>
-
-<h4>Add Widgets/Shortcuts</h4>
-<p>
-A new API in Android 8.0 allows application developers to add shortcuts and
-widgets from inside the app instead of relying on the widget tray. The older
-method of adding shortcuts by sending a broadcast has been deprecated for
-security reasons. For more information, see <a
-href="/devices/tech/display/widgets-shortcuts.html">Implementing
-Add Widgets/Shortcuts</a>.
-</p>
-
-<h3 id="downloading-building">Downloading and Building</h3>
-
-<h4>Android LLVM Toolchain improvements</h4>
-<p>
-OEMs who wish to use our latest toolchain/tools will need to ensure that any of
-their private code compiles successfully with the updated toolchains. This may
-require them to fix existing issues in their code with undefined behavior. (Of
-course, they are free to use whatever tools they prefer to compile their own
-code too.)
-</p>
-<p>
-They must ensure their code is free of undefined behavior (by using tools like
-UBSan), so they are less susceptible to problems caused by newer toolchains. All
-of the toolchains are always updated directly in AOSP. Everything will be
-available well before OC even ships, so OEMs should be following along
-already.
-</p>
-<p>
-See the <a href="https://llvm.org/">public Clang/LLVM</a> documentation for
-general instructions and the <a
-href="https://android.googlesource.com/platform/external/clang/+/dev/ReadmeAndroid.md">Android
-Clang/LLVM</a> documentation set within AOSP for Android-specific guidance.
-Finally, join the <a
-href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a>
-public group to get help and take part in development.
-</p>
-
-<h3 id="drm-kms">DRM / KMS</h3>
-
-<h4>DRM/KMS in Linux Kernel Version 4.9</h4>
-<p>
-The Direct Rendering Manager (DRM)/Kernel Mode Setting (KMS) framework used by
-Android is developed and maintained by Linux kernel developers in the Linux
-kernel. Android merges down from the Linux kernel. By merging down from our
-common kernel, device manufacturers gain the DRM/KMS framework automatically.
-</p>
-<p>
-DRM/KMS became viable in Linux kernel version 4.9, and Android <strong>strongly
-encourages</strong> OEM partners to use DRM/KMS starting with this kernel
-version. <a href="https://lwn.net/Articles/565422/">Atomic Display Framework
-(ADF)</a>, the display framework officially supported by Android today, will not
-be supported in 4.9 and higher versions of the common Android kernel; instead,
-Android will support DRM/KMS from this version. OEMs can continue to use ADF (or
-any other framework), but Android will not support them in the common Android
-kernel.
-</p>
-<p>
-To implement DRM/KMS, you will need to write your own drivers using
-DRM/KMS in addition to merging down the DRM/KMS framework from the android
-common kernel.
-</p>
-
-<h3 id="keystore">Keystore</h3>
-
-<h4>Keymaster 3</h4>
-<p>
-Android 8.0 updates Keymaster, the keystore HAL, by extending the capabilities of
-hardware-backed key storage on Android devices. This builds upon the Android 7.1.2
-updates to Keymaster 2. For more information, see <a
-href="/security/keystore/index.html">Keymaster 3 documentation</a>.
-</p>
-
-<h3 id="security-enhancements">Security Enhancements</h3>
-
-<h4>Insecure TLS Version Fallback removed from HttpsURLConnection</h4>
-<p>
-Insecure TLS/SSL protocol version fallback is a workaround for buggy
-implementations of TLS protocol downgrade negotiation in some servers. This is
-vulnerable to POODLE. When Chrome 45 dropped the insecure fallback in September
-2015, less than 0.01% of servers relied on it. To improve security, insecure TLS
-version fallback has been removed from <a
-href="https://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html">HttpsURLConnection</a>
-in Android 8.0. For more details, see <a
-href="https://android-developers.googleblog.com/2017/04/android-o-to-drop-insecure-tls-version.html
-">this blog post</a>.
-</p>
-<p>
-To test this feature on devices with Android 8.0, run this CTS test case:
-</p>
-
-<pre class="devsite-click-to-copy devsite-terminal" data-terminal-prefix="# ">
-cts-tradefed run cts -m CtsLibcoreOkHttpTestCases</pre>
-
-<h3 id="performance">Performance</h3>
-
-<h4>Flash Wear Management</h4>
-<p>
-Describes eMMC behavior and new features to help OEMs lower the risk of a
-failing eMMC in the automotive environment. For more information, see <a
-href="/devices/tech/perf/flash-wear.html">Flash Wear
-Management in Android Automotive</a>.
-</p>
-
-<h4>Optimizing Boot Times</h4>
-<p>
-Guidance for improving boot times for specific Android devices. For more
-information, see <a
-href="/devices/tech/perf/boot-times.html">Optimizing
-boot times</a>.
-</p>
-
-<h4>Task Snapshots</h4>
-<p>
-Task Snapshots is infrastructure introduced in Android 8.0 that combines
-screenshots for Recents Thumbnails as well as Saved Surfaces from Window Manager
-to save memory. For more information, see <a
-href="/devices/tech/perf/task-snapshots.html">Task
-Snapshots</a>.
-</p>
-
-<h3 id="peripherals">Peripherals</h3>
-
-<h4>Default Print Services</h4>
-<p>
-A <a
-href="https://developer.android.com/reference/android/printservice/PrintService.html">print
-service</a> is an app that discovers and presents printers to a device's print
-framework. In earlier Android versions, users had to search for and install
-third-party print services to be able to print.
-</p>
-<p>
-Android 8.0 includes a default print service in <code><a
-href="https://android.googlesource.com/platform/packages/services/BuiltInPrintService/">platform/packages/services/BuiltInPrintService/</a></code>
-that lets users print on modern printers without installing any additional apps.
-This implementation supports printers that use the Internet Printing Protocol
-(IPP) to communicate with the printer and use PCLm, PWG-Raster, or PDF to send
-printable content. For older printers, users should install the app recommended
-by the <a
-href="https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r1/packages/PrintRecommendationService/">PrintRecommendationService</a>
-as seen in this <a href="https://youtu.be/M_JGeGLpOKs?t=16m20s">this I/O presentation</a>.
-
-<h3 id="reference">Reference Updates</h3>
-
-<p>
-The <a href="/reference/">Reference</a> section has been added to the top-level
-navigation. As part of the <a href="/devices/architecture/treble">Treble</a>
-release, a <a href="/reference/hidl/">HIDL reference</a> section was added.
-The <a href="/reference/tradefed/">Trade Federation</a> and the
-<a href="/reference/hal/">legacy HAL</a> reference documentation has been updated.
-</p>
-
-<h3 id="settings-menu">Settings menu</h3>
-
-<h4>Settings: Patterns and Components</h4>
-<p>
-In Android 8.0, the Settings menu gains several components and widgets that
-cover common uses. For more information, see <a
-href="/devices/tech/settings/patterns-components.html">Patterns
-and Components</a>.
-</p>
-
-<h4>Settings: Updated information architecture</h4>
-<p>
-Android 8.0 introduces a new information architecture for the Settings app. The
-goal of the new information architecture is to simplify the way settings are
-organized and make it easier for users to quickly find the settings needed to
-customize their Android devices. For more information, see Implementing <a
-href="/devices/tech/settings/info-architecture.html">Updated
-Information Architecture</a>.
-</p>
-
-<h4>Personalized Settings</h4>
-<p>
-The Android Settings app provides a list of suggestions to the users. This
-feature provides ranking for suggestions, based on any contextual signal or the
-user's past interactions with suggestions. For more information, see <a
-href="/devices/tech/settings/personalized.html">Personalized
-Settings</a>.
-</p>
-
-<h4>Implementing Settings: Universal Search</h4>
-<p>
-Android 8.0 adds expanded search capabilities for the Settings menu. This document
-describes how to add a setting and ensure it is properly indexed for Settings.
-For more information, see <a
-href="/devices/tech/settings/universal-search.html">Universal
-Search</a>.
-</p>
-
-<h3 id="storage">Storage</h3>
-
-<h4>Faster storage statistics</h4>
-<p>
-Android 8.0 leverages the ext4 filesystem's "quota" support to return disk usage
-statistics almost instantly. For more information, see <a
-href="/devices/storage/faster-stats.html">Implementing
-faster storage statistics</a>.
-</p>
-
-<h2 id="april-2017">April 2017</h2>
-<p>Welcome to a new source.android.com! The site has been overhauled to make it
-easier for you to navigate, search, and read its ever-growing set of information.
-Here is a summary of enhancements:</p>
-
-<h3 id="screen-estate">More screen real estate, larger type size</h3>
-<p>The entire site is wider, allowing you to view more content at once. Code
-samples and commands are more visible, and all text has been enlarged.</p>
-
-<h3 id="mobile-ready">Mobile-ready view</h3>
-<p>The new site renders more cleanly on handheld devices with a dedicated
-mobile view.</p>
-
-<div style="width:407px">
- <img src="images/mobile-view.png" alt="new mobile view" height="533px" />
- <p class="img-caption">
- <strong>Figure 1.</strong> Site's new mobile view
- </p>
-</div>
-
-<h3 id="top-tabs">New top-level tabs</h3>
-<p>The former <em>Devices</em> tab has been renamed <a
-href="/devices/">Porting</a>, while the old <em>Core Technologies</em>
-subtab has been renamed <a href="/devices/tech/">Tuning</a> and moved to the top
-of the site for better exposure.</p>
-
-<h3 id="security-forefront">Security at the forefront</h3>
-<p>With an ever-increasing focus on security in Android, the <a
-href="/security/">Security</a> tab has been moved forward (next to <a
-href="/setup/">Source</a>) to reflect its importance.</p>
-
-<h3 id="reference-materials">Better reference materials</h3>
-<p><a href="/reference/hal/">Hardware Abstraction Layer</a> and <a
-href="/reference/tradefed/packages">Trade Federation</a> reference
-materials are available directly from a top-level <a
-href="/reference/">Reference</a> tab.</p>
-
-<h3 id="code-links">Persistent code links</h3>
-<p>The <a href="https://android.googlesource.com/">AOSP code
-repository</a> is always just a click away with the <strong>Go to Code</strong>
-button at the top right of every page.</p>
-
-<h3 id="comprehensive-footers">Comprehensive footers</h3>
-<p>In addition to the existing <em>About</em>, <em>Community</em>, and
-<em>Legal</em> footers, you can now find a complete list of links at the bottom
-of every page for building Android, connecting with the ecosystem, and getting
-help with the operating system's use.</p>
-
- </body>
-</html>
diff --git a/en/setup/brands.html b/en/setup/start/brands.html
index ca08b8dd..c530e043 100644
--- a/en/setup/brands.html
+++ b/en/setup/start/brands.html
@@ -79,23 +79,23 @@ assets.</p>
</ul>
<h4>Acceptable examples</h4>
-<img src="images/JB-TM-example.png" alt="Jelly Bean trademark example" />
-<img src="images/8100-TM-example.png" alt="8100 series trademark example" />
+<img src="../images/JB-TM-example.png" alt="Jelly Bean trademark example" />
+<img src="../images/8100-TM-example.png" alt="8100 series trademark example" />
<h4>Unacceptable example</h4>
-<img src="images/XBrand-TM-example.jpg" alt="XBrand trademark example" />
+<img src="../images/XBrand-TM-example.jpg" alt="XBrand trademark example" />
<h3 id="logo-android">Android logo</h3>
<p>Unless expressly authorized by Google through written agreement, the Android
logo and custom typeface may not be used (with or without the Android robot).</p>
-<img alt="No Logo" src="images/android_logo_new_crossed_out.png">
+<img alt="No Logo" src="../images/android_logo_new_crossed_out.png">
<img alt="No Logo" src="https://developer.android.com/images/brand/android_logo_no.png">
<h3 id="robot-android">Android robot</h3>
<div class="wrap">
<div class="col-4">
- <img alt="android-robot" style="float:left;margin-right:10px" src="/setup/images/Android_Robot_100.png">
+ <img alt="android-robot" style="float:left;margin-right:10px" src="../images/Android_Robot_100.png">
<p style="padding-top:20px">
<a href="https://developer.android.com/images/brand/Android_Robot_100.png">100x118</a><br>
<a href="https://developer.android.com/images/brand/Android_Robot_200.png">200x237</a><br>
@@ -115,7 +115,7 @@ license</a>.</p>
<div class="wrap" style="padding-top:20px">
<div class="col-4" style="align:center">
-<img alt="no-peace-robot" style="width:30%;height:30%" src="images/No_PeaceBot_200.jpg">
+<img alt="no-peace-robot" style="width:30%;height:30%" src="../images/No_PeaceBot_200.jpg">
</div>
<div class="col-8">
<p style="padding-top:20px">The Android Peace Robot or any variation of the
@@ -130,7 +130,7 @@ used in partner marketing.</p>
<p>Use of the “Google Play” name and the Google Play Store icon on the
packaging of the hardware, marketing materials of the hardware, or the hardware
itself is allowed only on devices
-<a href="/setup/faqs.html#if-my-device-is-compatible-does-it-automatically-have-access-to-google-play-and-branding">licensed
+<a href="/setup/start/faqs.html#if-my-device-is-compatible-does-it-automatically-have-access-to-google-play-and-branding">licensed
to access Google Play</a>. For a list of devices licensed to use Google Play,
refer to
<a href="https://support.google.com/googleplay/answer/1727131">Supported
diff --git a/en/setup/build-numbers.html b/en/setup/start/build-numbers.html
index dcfc5c0d..21519cb9 100644
--- a/en/setup/build-numbers.html
+++ b/en/setup/start/build-numbers.html
@@ -23,11 +23,11 @@
-<p>At a high level, Android development happens around families of
-releases, which use code names ordered alphabetically after tasty
-treats.</p>
+<p>Android development happens around families of releases that use code names
+ordered alphabetically after tasty treats.</p>
-<h2 id="platform-code-names-versions-api-levels-and-ndk-releases">Platform Codenames, Versions, API Levels, and NDK Releases</h2>
+<h2 id="platform-code-names-versions-api-levels-and-ndk-releases">Platform
+Codenames, Versions, API Levels, and NDK Releases</h2>
<p>The code names match the following version numbers, along with
API levels and NDK releases provided for convenience:</p>
<table>
@@ -171,38 +171,58 @@ API levels and NDK releases provided for convenience:</p>
</tr>
</tbody>
</table>
-<p>Starting with Oreo, individual builds are identified with a new build ID format, in the form of PVBB.YYMMDD.bbb[.Cn].</p>
-<p>The P part represents the first letter of the code name of the platform release, e.g. O is Oreo.</p>
-<p>The V part represents a supported vertical. By convention, 'P' represents the primary platform branch.</p>
-<p>The BB part represents a alpha numeric code which allows Google to identify the exact code branch that the build was made from.</p>
-<p>The YYMMDD part identifies the date when the release is branched from or synced with the development branch. It is not guaranteed to be the exact date at which a build was made, and it is common that minor variations added to an existing build re-use the same date code as that existing build.</p>
-<p>The bbb part identifies individual versions related to the same date code, sequentially starting with 001.</p>
-<p>An optional, alphanumeric Cn part identifies a hotfix on top of an existing PVBB.YYMMDD.bbb build, starting from A1.</p>
-<p>Older Android releases from Cupcake to Nougat uses a different build ID scheme. These Android builds are identified with a short build code, e.g. FRF85B.
-</p>
-<p>The first letter is the code name of the release family, e.g. F is
-Froyo.</p>
-<p>The second letter is a branch code that allows Google to identify
-the exact code branch that the build was made from, and R is by
-convention the primary release branch.</p>
-<p>The next letter and two digits are a date code. The letter counts
-quarters, with A being Q1 2009. Therefore, F is Q2 2010. The two
-digits count days within the quarter, so F85 is June 24 2010.</p>
-<p>Finally, the last letter identifies individual versions related to
-the same date code, sequentially starting with A; A is actually
-implicit and usually omitted for brevity.</p>
-<p>The date code is not guaranteed to be the exact date at which a build
-was made, and it is common that minor variations added to an existing
-build re-use the same date code as that existing build.</p>
+
+<p>In Android 8.0 (Oreo) and higher, individual builds are identified with the
+ build ID format <strong>PVBB.YYMMDD.bbb[.Cn]</strong>, where:</p>
+<ul>
+ <li>P represents the first letter of the code name of the platform release,
+ e.g. O is Oreo.</li>
+ <li>V represents a supported vertical. By convention, P represents the primary
+ platform branch.</li>
+ <li>BB represents an alphanumeric code that allows Google to identify the
+ exact code branch the build was made from.</li>
+ <li>YYMMDD identifies the date when the release is branched from or synced
+ with the development branch. It is not guaranteed to be the exact date at
+ which a build was made as it is common for minor variations added to an
+ existing build to re-use the same date code as the existing build.</li>
+ <li>bbb identifies individual versions related to the same date code,
+ sequentially starting with 001.</li>
+ <li>Cn is an optional, alphanumeric that identifies a hotfix on top of an
+ existing PVBB.YYMMDD.bbb build, starting from A1.</li>
+</ul>
+
+<p>Older Android releases use a different, shorter build ID code (e.g.
+ <strong>FRF85B</strong>) where:</p>
+
+<ul>
+ <li>The first letter is the code name of the release family, e.g. F is Froyo.
+ </li>
+ <li>The second letter is a branch code that allows Google to identify the
+ exact code branch the build was made from. By convention, R is the primary
+ release branch.</li>
+ <li>The third letter and following two digits are a date code. The letter
+ counts quarters (A = Q1 2009, F = Q2 2010, etc.). The two digits count days
+ within the quarter (F85 is June 24 2010). The date code is not guaranteed to
+ be the exact date at which a build was made as it is common for minor
+ variations added to an existing build to re-use the same date code as the
+ existing build.</li>
+ <li>The last letter identifies individual versions related to the same date
+ code, sequentially starting with A (which is implicit and usually omitted for
+ brevity.</li>
<h2 id="source-code-tags-and-builds">Source Code Tags and Builds</h2>
<p>Starting with Donut, the exact list of tags and builds is in the
-following table. Factory images, binaries, and full OTA images for
-Nexus and Pixel devices can be downloaded from the Android Developer
-site:</p>
-<p><a href="https://developers.google.com/android/images">Images</a></p>
-<p><a href="https://developers.google.com/android/drivers">Drivers</a></p>
-<p><a href="https://developers.google.com/android/ota">OTA</a></p>
+following table.
+
+<aside class="note"><strong>Note:</strong> To download
+ <a href="https://developers.google.com/android/images">factory images</a>,
+ <a href="https://developers.google.com/android/drivers">drivers</a>, and full
+ <a href="https://developers.google.com/android/ota">OTA</a> images for Nexus
+ and Pixel devices, refer to the
+ <a href="https://developers.google.com/android/">Android Developer site</a>.
+</aside>
+
+
<table>
<thead>
<tr>
@@ -214,6 +234,36 @@ site:</p>
</thead>
<tbody>
<tr>
+ <td>OPM4.171019.015.A1</td>
+ <td>android-8.1.0_r23</td>
+ <td>Oreo</td>
+ <td>Pixel 2 XL, Pixel 2</td>
+ </tr>
+ <tr>
+ <td>OPM5.171019.019</td>
+ <td>android-8.1.0_r22</td>
+ <td>Oreo</td>
+ <td>Nexus 6P</td>
+ </tr>
+ <tr>
+ <td>OPM3.171019.019</td>
+ <td>android-8.1.0_r21</td>
+ <td>Oreo</td>
+ <td>Nexus 6P</td>
+ </tr>
+ <tr>
+ <td>OPM2.171019.029</td>
+ <td>android-8.1.0_r20</td>
+ <td>Oreo</td>
+ <td>Pixel 2 XL, Pixel 2, Pixel XL, Pixel, Nexus 5X</td>
+ </tr>
+ <tr>
+ <td>OPM1.171019.026</td>
+ <td>android-8.1.0_r19</td>
+ <td>Oreo</td>
+ <td>Pixel C</td>
+ </tr>
+ <tr>
<td>OPM5.171019.017</td>
<td>android-8.1.0_r18</td>
<td>Oreo</td>
@@ -2304,32 +2354,38 @@ site:</p>
</tr>
</tbody>
</table>
-<p>The branches froyo, gingerbread, ics-mr0, ics-mr1, jb-dev,
-jb-mr1-dev, jb-mr1.1-dev, jb-mr2-dev, kitkat-dev
-represent development
-branches that do not exactly match configurations that were tested
-by Google. They might contain a variety of changes in addition to
-the official tagged releases, and those haven't been as thoroughly
-tested.</p>
-<p>To differentiate between releases, you may obtain a list of changes
+<p>The branches froyo, gingerbread, ics-mr0, ics-mr1, jb-dev, jb-mr1-dev,
+ jb-mr1.1-dev, jb-mr2-dev, kitkat-dev represent development branches that do
+ not exactly match configurations tested by Google. As such, these branches
+ might contain a variety of changes in addition to the official tagged releases
+ and might not be as thoroughly tested.</p>
+
+<p>To differentiate between releases, you can obtain a list of changes
associated with each project by issuing the following command and passing it
the two branch tags:</p>
-<pre class="devsite-terminal devsite-click-to-copy">repo forall -pc 'git log --no-merges --oneline branch-1..branch-2'</pre>
+<pre class="devsite-terminal devsite-click-to-copy">
+repo forall -pc 'git log --no-merges --oneline branch-1..branch-2'
+</pre>
<p>For example:</p>
-<pre class="devsite-terminal devsite-click-to-copy">repo forall -pc 'git log --no-merges --oneline android-4.4.2_r2..android-4.4.2_r1'</pre>
+<pre class="devsite-terminal devsite-click-to-copy">
+repo forall -pc 'git log --no-merges --oneline android-4.4.2_r2..android-4.4.2_r1'
+</pre>
-<p>And to output to a text file:</p>
+<p>To send the output to a text file:</p>
-<pre class="devsite-terminal devsite-click-to-copy">repo forall -pc 'git log --no-merges --oneline android-4.4.2_r2..android-4.4.2_r1' > /tmp/android-4.4.2_r2-android-4.4.2_r1-diff.txt</pre>
+<pre class="devsite-terminal devsite-click-to-copy">
+ repo forall -pc 'git log --no-merges --oneline android-4.4.2_r2..android-4.4.2_r1' > /tmp/android-4.4.2_r2-android-4.4.2_r1-diff.txt
+</pre>
<h2 id="honeycomb-gpl-modules">Honeycomb GPL Modules</h2>
-<p>For Honeycomb, the entire platform source code isn't available.
-However, the parts of Honeycomb licensed under the GPL and LGPL
-are available under the following tags:</p>
+
+<p>For Honeycomb, the entire platform source code isn't available. However, the
+parts of Honeycomb licensed under the GPL and LGPL are available under the
+following tags:</p>
<table>
<thead>
@@ -2402,18 +2458,20 @@ are available under the following tags:</p>
</tr>
</tbody>
</table>
-<p>There is no manifest that contains exactly those. However, there
-are manifests that allow building those components. The following
-commands work for 3.0_r1.1, and using other versions can be done by
-switching the git checkout paramater, and if necessary the -m parameter in
-repo init. The git checkout command outputs an error for the non-GPL
-projects, where it can't find the tag in question.</p>
+
+<p>While no manifest contains exactly these modules, some manifests allow
+ building those components. The following commands work for 3.0_r1.1:</p>
+
<pre class="devsite-click-to-copy">
<code class="devsite-terminal">repo init -b master -m base-for-3.0-gpl.xml</code>
<code class="devsite-terminal">repo sync</code>
<code class="devsite-terminal">repo forall -c git checkout android-3.0_r1.1</code>
</pre>
+<p>To use another version, switch the <code>git checkout</code> parameter and
+ (if necessary) the <code>-m</code> parameter in <code>repo init</code>. The
+ <code>git checkout</code> command outputs an error for the
+ non-GPL projects, where it can't find the tag in question.</p>
</body>
</html>
diff --git a/en/setup/start/codelines.html b/en/setup/start/codelines.html
new file mode 100644
index 00000000..654d412c
--- /dev/null
+++ b/en/setup/start/codelines.html
@@ -0,0 +1,168 @@
+<html devsite>
+ <head>
+ <title>Codelines, Branches, and Releases</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 Android Open Source Project (AOSP) maintains a complete software stack to
+ be ported by OEMs and other device implementors and run on their own hardware.
+ To maintain the quality of Android, Google has contributed full-time
+ engineers, product managers, user interface designers, quality assurance
+ testers, and all the other roles required to bring modern devices to market.
+</p>
+
+<p>
+ Accordingly, we maintain a number of codelines to clearly separate the current
+ stable version of Android from unstable experimental work. We roll the open
+ source administration and maintenance of the Android codelines into the larger
+ product development cycle.
+</p>
+
+<h2 id="aosp-management">AOSP code management</h2>
+<p>
+ The chart below depicts the concepts behind AOSP code management and releases.
+</p>
+
+<img src="/images/code-lines.png" alt="codeline diagram" id="figure1" >
+<figcaption><strong>Figure 1.</strong> AOSP code and releases</figcaption>
+
+<ol>
+ <li>
+ At any given moment, there is a current latest release of the Android
+ platform. This typically takes the form of a branch in the tree.
+ </li>
+ <li>
+ Device builders and contributors work with the current latest release,
+ fixing bugs, launching new devices, experimenting with new features, etc.
+ </li>
+ <li>
+ In parallel, Google works internally on the next version of the Android
+ platform and framework according to the product's needs and goals. We
+ develop the next version of Android by working with a device partner on a
+ flagship device whose specifications are chosen to push Android in the
+ direction we believe it should go.
+ </li>
+ <li>
+ When the n+1th version is ready, it is published to the public source
+ tree and become the new latest release.
+ </li>
+</ol>
+
+<aside class="note"><strong>Note:</strong> We use the term <em>codelines</em>
+ instead of <em>branches</em> simply because at any given moment there may be
+ more than one branch for a given codeline. For instance, when a release is
+ cut, it may or may not become a new branch based on the needs of the moment.
+</aside>
+
+
+<h2 id="terms-and-caveats">Terms and Caveats</h2>
+
+<ul>
+ <li>
+ A <em>release</em> corresponds to a formal version of the Android platform,
+ such as 1.5, 2.1, and so on. A release of the platform corresponds to the
+ version in the <code>SdkVersion</code> field of
+ <code>AndroidManifest.xml</code> files and defined within
+ <code>frameworks/base/api</code> in the source tree.
+ </li>
+ <li>
+ An <em>upstream</em> project is an open source project from which the
+ Android stack pulls code. In addition to projects such as the Linux kernel
+ and WebKit, we continue to migrate some semi-autonomous Android projects
+ such as ART, the Android SDK tools, Bionic, and so on to work as
+ upstream projects. Generally, these projects are developed entirely in the
+ public tree. For some upstream projects, development is done by contributing
+ directly to the upstream project itself. For details, see
+ <a href="../contribute/submit-patches.html#upstream-projects">Upstream
+ projects</a>. In both cases, snapshots are periodically pulled into
+ releases.
+ </li>
+ <li>
+ At all times, a release codeline (which may actually consist of more than
+ one actual branch in git) is considered the sole canonical source code for a
+ given Android platform version. OEMs and other groups building devices
+ should pull only from a release branch.
+ </li>
+ <li>
+ Experimental codelines are established to capture changes from the community
+ so they can be iterated on with an eye toward stability.
+ </li>
+ <li>
+ Changes that prove stable are eventually be pulled into a release branch.
+ This applies only to bug fixes, application improvements, and other changes
+ that do not affect the APIs of the platform.
+ </li>
+ <li>
+ Changes are pulled into release branches from upstream projects
+ (including the Android upstream projects) as necessary.
+ </li>
+ <li>
+ The n+1th version (the next major version of the framework and platform
+ APIs) is developed by Google internally. For details, see
+ <a href="#private-codelines">Private codelines</a>.
+ </li>
+ <li>
+ Changes are pulled from upstream, release, and experimental branches into
+ Google's private branch as necessary.
+ </li>
+ <li>
+ When the platform APIs for the next version have stabilized and been fully
+ tested, Google cuts a release of the next platform version (specifically, a
+ new <code>SdkVersion</code>). This corresponds to the internal codeline
+ being made a public release branch and the new current platform codeline.
+ </li>
+ <li>
+ When a new platform version is cut, a corresponding experimental codeline is
+ created at the same time.
+ </li>
+</ul>
+
+<h2 id="private-codelines">Private codelines</h2>
+<p>
+ The source management strategy above includes a codeline that Google keeps
+ private to focus attention on the current public version of Android.
+</p>
+<p>
+ OEMs and other device builders naturally want to ship devices with the latest
+ version of Android. Similarly, application developers don't want to deal with
+ more platform versions than strictly necessary. Meanwhile, Google retains
+ responsibility for the strategic direction of Android as a platform and a
+ product. Our approach focuses on a small number of flagship devices to drive
+ features while securing protections of Android-related intellectual property.
+</p>
+<p>
+ As a result, Google frequently has possession of confidential information from
+ third parties and must refrain from revealing sensitive features until
+ securing the appropriate protections. In addition, there are real risks to the
+ platform arising from having too many platform versions extant at once. For
+ these reasons, we have structured the open source project (including
+ third-party contributions) to focus on the currently-public stable version of
+ Android. Deep development on the next version of the platform occurs in
+ private until it's ready to become an official release.
+</p>
+<p>
+ We recognize many contributors disagree with this approach and we respect
+ their different points of view. However, this is the approach we feel is best
+ and the one we've chosen to implement for Android.
+</p>
+
+ </body>
+</html>
diff --git a/en/setup/faqs.html b/en/setup/start/faqs.html
index 938f07c5..f8611db8 100644
--- a/en/setup/faqs.html
+++ b/en/setup/start/faqs.html
@@ -24,19 +24,26 @@
<a name="top"></a>
-<p>Please see the <a
-href="http://developer.android.com/guide/faq/index.html">Android FAQs</a> on
-developer.android.com for answers to other common questions.
+<p>
+ This page provides answers to Frequently Asked Questions (FAQs). For answers
+ other common questions, refer to
+ <a href="http://developer.android.com/guide/faq/index.html" class="external">Android
+ FAQs</a> on developer.android.com.
+</p>
<h2 id="open-source">Open Source</h2>
-<h3 id="what-is-the-android-open-source-project">What is the Android Open Source Project?</h3>
+
+<h3 id="what-is-the-android-open-source-project">What is the Android Open Source
+Project?</h3>
<p>We use the phrase "Android Open Source Project" or "AOSP" to refer to the
people, the processes, and the source code that make up Android.</p>
<p>The people oversee the project and develop the actual source code. The
processes refer to the tools and procedures we use to manage the development
of the software. The net result is the source code you can use to build
mobile phones and other devices.</p>
-<h3 id="why-did-we-open-the-android-source-code">Why did we open the Android source code?</h3>
+
+<h3 id="why-did-we-open-the-android-source-code">Why did we open the Android
+source code?</h3>
<p>Google started the Android project in response to our own experiences
launching mobile apps. We wanted to make sure there would always be an
open platform available for carriers, OEMs, and developers to use to make
@@ -46,15 +53,19 @@ the innovations of any other. The single most important goal of the Android
Open Source Project (AOSP) is to make sure that the open source Android
software is implemented as widely and compatibly as possible, to everyone's
benefit.</p>
-<h3 id="what-kind-of-open-source-project-is-android">What kind of open source project is Android?</h3>
+
+<h3 id="what-kind-of-open-source-project-is-android">What kind of open source
+project is Android?</h3>
<p>Google oversees the development of the core Android open source platform
and works to create robust developer and user communities. For the most part,
the Android source code is licensed under the permissive Apache Software
License 2.0, rather than a "copyleft" license. The main reason for this is
because our most important goal is widespread adoption of the software, and
-we believe that the ASL2.0 license best achieves that goal.</p>
-<p>You can find more information on this topic on our <a href="/setup/licenses.html">Licenses</a> page.</p>
-<h3 id="why-is-google-in-charge-of-android">Why is Google in charge of Android?</h3>
+we believe that the ASL2.0 license best achieves that goal. For details, see
+<a href="licenses.html">Licenses</a>.</p>
+
+<h3 id="why-is-google-in-charge-of-android">Why is Google in charge of
+Android?</h3>
<p>Launching a software platform is complex. Openness is vital to the
long-term success of a platform, since openness is required to attract
investment from developers and ensure a level playing field. However, the
@@ -67,10 +78,12 @@ devices running Android actually make it to market.</p>
<p>By making sure Android is a success with users, we help ensure the
vitality of Android as a platform and as an open source project. After all,
who wants the source code to an unsuccessful product?</p>
-<p>Google's goal is to ensure a successful ecosystem around Android. Of course, no
-one is required to participate. We opened the Android source code
-so anyone can modify and distribute the software to meet their own needs.</p>
-<h3 id="what-is-googles-overall-strategy-for-android-product-development">What is Google's overall strategy for Android product development?</h3>
+<p>Google's goal is to ensure a successful ecosystem around Android. Of course,
+no one is required to participate. We opened the Android source code so anyone
+can modify and distribute the software to meet their own needs.</p>
+
+<h3 id="what-is-googles-overall-strategy-for-android-product-development">What
+is Google's overall strategy for Android product development?</h3>
<p>We aim to release great devices into a competitive marketplace. We
then incorporate the innovations and enhancements we made into the core
platform as the next version.</p>
@@ -81,7 +94,9 @@ devices absorb much of the product risk and blaze a trail for the broad OEM
community, who follow up with many more devices that take advantage of the
new features. In this way, we make sure the Android platform evolves
according to the actual needs of real-world devices.</p>
-<h3 id="how-is-the-android-software-developed">How is the Android software developed?</h3>
+
+<h3 id="how-is-the-android-software-developed">How is the Android software
+developed?</h3>
<p>Each platform version of Android (such as 1.5, 1.6, and so on) has a
corresponding branch in the open source tree. At any given moment, the most
recent such branch will be considered the "current stable" branch version.
@@ -94,12 +109,14 @@ stable branch from the experimental branch as appropriate.</p>
<p>Finally, Google works on the next version of the Android platform in tandem
with developing a flagship device. This branch pulls in changes from the
experimental and stable branches as appropriate.</p>
-<p>You can find more information on this topic at our <a href="/setup/code-lines.html">Codelines,
-Branches and Releases</a> page.</p>
-<h3 id="why-are-parts-of-android-developed-in-private">Why are parts of Android developed in private?</h3>
-<p>It typically takes more than a year to bring a device to market. And, of course,
-device manufacturers want to ship the latest software they can. Developers,
-meanwhile, don't want to constantly track new versions of the
+<p>For details, see <a href="codelines.html">Codelines, Branches and
+Releases</a>.</p>
+
+<h3 id="why-are-parts-of-android-developed-in-private">Why are parts of Android
+developed in private?</h3>
+<p>It typically takes more than a year to bring a device to market. And, of
+course, device manufacturers want to ship the latest software they can.
+Developers, meanwhile, don't want to constantly track new versions of the
platform when writing apps. Both groups experience a tension between
shipping products and not wanting to fall behind.</p>
<p>To address this, some parts of the next version of Android including the
@@ -112,7 +129,9 @@ future work just to keep up. Other parts of the Android system that aren't
related to application compatibility are developed in the open, however.
It's our intention to move more of these parts to open development over
time.</p>
-<h3 id="when-are-source-code-releases-made">When are source code releases made?</h3>
+
+<h3 id="when-are-source-code-releases-made">When are source code releases
+made?</h3>
<p>When they are ready. Releasing the source code is a fairly complex process.
Some parts of Android are developed in the open,
so that source code is always available. Other parts are developed first in
@@ -120,24 +139,26 @@ a private tree, and that source code is released when the next platform
version is ready.</p>
<p>In some releases, core platform APIs will be ready far enough in advance
that we can push the source code out for an early look prior to the
-device's release; however in other releases, this isn't possible. In all cases, we
-release the platform source when we feel the version has stabilized enough,
+device's release; however in other releases, this isn't possible. In all cases,
+we release the platform source when we feel the version has stabilized enough,
and when the development process permits.</p>
-<h3 id="what-is-involved-in-releasing-the-source-code-for-a-new-android-version">What is involved in releasing the source code for a new Android version?</h3>
+
+<h3 id="what-is-involved-in-releasing-the-source-code-for-a-new-android-version">What
+is involved in releasing the source code for a new Android version?</h3>
<p>Releasing the source code for a new version of the Android platform is a
significant process. First, the software gets built into a system image for
a device and put through various forms of certification, including
government regulatory certification for the regions the phones will be
deployed. It also goes through operator testing. This is an important phase
-of the process, since it helps shake out a lot of software bugs.</p></p>
+of the process, since it helps shake out a lot of software bugs.</p>
<p>Once the release is approved by the regulators and operators, the
manufacturer begins mass producing devices, and we turn to releasing the
source code.</p>
<p>Simultaneous to mass production, the Google team kicks off several efforts
-to prepare the open source release. These efforts include making final API changes,
-updating documentation (to reflect any modifications that were made during
-qualification testing, for example), preparing an SDK for the new version,
-and launching the platform compatibility information.</p>
+to prepare the open source release. These efforts include making final API
+changes, updating documentation (to reflect any modifications that were made
+during qualification testing, for example), preparing an SDK for the new
+version,and launching the platform compatibility information.</p>
<p>Also included is a final legal sign-off to release the code into open
source. Just as open source contributors are required to sign a Contributors
License Agreement attesting to their intellectual property ownership of their
@@ -145,7 +166,9 @@ contribution, Google too must verify it is clear to make contributions.</p>
<p>From the time mass production begins, the software release process
usually takes around a month. This often places source code releases
around the same time the devices reach users.</p>
-<h3 id="how-does-the-aosp-relate-to-the-android-compatibility-program">How does the AOSP relate to the Android Compatibility Program?</h3>
+
+<h3 id="how-does-the-aosp-relate-to-the-android-compatibility-program">How does
+AOSP relate to the Android Compatibility Program?</h3>
<p>The Android Open Source Project maintains the Android software, and
develops new versions. Since it's open source, this software can be used for
any purpose, including to develop devices that are not compatible with other
@@ -158,8 +181,9 @@ compatibility requirements exist outside that ecosystem.</p>
<p>In other words, the Android Compatibility Program is how we separate
"Android-compatible devices" from devices that merely run derivatives of the
source code. We welcome all uses of the Android source code, but only
-Android-compatible devices -- as defined and tested by the Android
-Compatibility Program -- may participate in the Android ecosystem.</p>
+Android-compatible devices (as defined and tested by the Android
+Compatibility Program) may participate in the Android ecosystem.</p>
+
<h3 id="how-can-i-contribute-to-android">How can I contribute to Android?</h3>
<p>There are a number of ways you can contribute to Android. You can report
bugs, write apps for Android, or contribute source code to the Android
@@ -171,23 +195,28 @@ decline that contribution, since Android encourages applications to be run
in the ART runtime. Similarly, we won't accept contributions such as GPL
or LGPL libraries that are incompatible with our licensing goals.</p>
<p>We encourage those interested in contributing source code to contact us
-via the channels listed on the <a href="/setup/community.html">
-Android Community</a> page prior to beginning any work. You can find more
-information on this topic from the <a href="/setup/contributing.html">
-Contributing</a> page.</p>
-<h3 id="how-do-i-become-an-android-committer">How do I become an Android committer?</h3>
+via the channels listed on the <a href="../community.html">
+Android Community</a> page prior to beginning any work. For details, see
+<a href="../contribute/index.html">Contributing</a>.</p>
+
+<h3 id="how-do-i-become-an-android-committer">How do I become an Android
+committer?</h3>
<p>The Android Open Source Project doesn't really have a notion of a
-"committer". All contributions -- including those authored by Google
-employees -- go through a web-based system known as "gerrit" that's part of
+"committer". All contributions (including those authored by Google
+employees) go through a web-based system known as "gerrit" that's part of
the Android engineering process. This system works in tandem with the git
source code management system to cleanly manage source code
contributions.</p>
<p>Once submitted, changes need to be accepted by a designated Approver.
Approvers are typically Google employees, but the same approvers are
responsible for all submissions, regardless of origin.</p>
-<p>You can find more information on this topic at the <a href="submit-patches.html">Submitting Patches</a> page.</p>
+<p>For details, see <a href="../contribute/submit-patches.html">Submitting
+Patches</a>.</p>
+
<a href="#top">Back to top</a>
+
<h2 id="compatibility">Compatibility</h2>
+
<h3 id="what-does-compatibility-mean">What does "compatibility" mean?</h3>
<p>We define an "Android-compatible device" as one that can run any
application written by third-party developers using the Android SDK and NDK.
@@ -200,13 +229,17 @@ use the Android trademark.</p>
Android apps ecosystem. Anyone is welcome to use the Android source code.
But if the device isn't compatible, it's not considered part of the Android
ecosystem.</p>
-<h3 id="what-is-the-role-of-google-play-in-compatibility">What is the role of Google Play in compatibility?</h3>
+
+<h3 id="what-is-the-role-of-google-play-in-compatibility">What is the role of
+Google Play in compatibility?</h3>
<p>Devices that are Android compatible may seek to license the Google Play
client software. This allows them to become part of the Android app
ecosystem, enabling their users to download developers' apps from a catalog
shared by all compatible devices. This option isn't available to devices
that aren't compatible.</p>
-<h3 id="what-kinds-of-devices-can-be-android-compatible">What kinds of devices can be Android compatible?</h3>
+
+<h3 id="what-kinds-of-devices-can-be-android-compatible">What kinds of devices
+can be Android compatible?</h3>
<p>The Android software can be ported to many different kinds of devices,
including some on which third-party apps won't run properly. The
<a href="/compatibility/index.html">Android Compatibility Definition
@@ -214,58 +247,77 @@ Document</a> (CDD) spells out the specific device configurations that will be
considered compatible.</p>
<p>For example, though the Android source code could be ported to run on a
phone that doesn't have a camera, the CDD requires all phones to have a camera.
-This allows developers to rely on a consistent set of capabilities when writing their apps.</p>
+This allows developers to rely on a consistent set of capabilities when writing
+their apps.</p>
<p>The CDD will evolve over time to reflect market realities. For instance,
version 1.6 of the CDD supports only cell phones. But the 2.1 CDD allows devices
-to omit telephony hardware, enabling non-phone devices such as tablet-style music
-players to be compatible. As we make these changes, we will also
+to omit telephony hardware, enabling non-phone devices such as tablet-style
+music players to be compatible. As we make these changes, we will also
augment Google Play to allow developers to retain control over where
their apps are available. To continue the telephony example, an app that
manages SMS text messages would not be useful on a media player, so Google
-Play allows the developer to restrict that app exclusively to phone
-devices.</p>
-<h3 id="if-my-device-is-compatible-does-it-automatically-have-access-to-google-play-and-branding">If my device is compatible, does it automatically have access to Google Play and branding?</h3>
+Play allows the developer to restrict that app exclusively to phone devices.</p>
+
+<h3 id="if-my-device-is-compatible-does-it-automatically-have-access-to-google-play-and-branding">If
+my device is compatible, does it automatically have access to Google Play and
+branding?</h3>
<p>Google Play is a service operated by Google. Achieving compatibility is
a prerequisite for obtaining access to the Google Play software and branding.
Device manufacturers should complete the contact form included in <a
href="/compatibility/contact-us#for-business-inquiries">licensing Google Mobile
Services</a> to seek access to Google Play. We will be in contact if we can
help you.</p>
-<h3 id="if-i-am-not-a-manufacturer-how-can-i-get-google-play">If I am not a manufacturer, how can I get Google Play?</h3>
+
+<h3 id="if-i-am-not-a-manufacturer-how-can-i-get-google-play">If I am not a
+manufacturer, how can I get Google Play?</h3>
<p>Google Play is only licensed to handset manufacturers shipping devices.
For questions about specific cases, contact <a
-href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>.</p>
-<h3 id="how-can-i-get-access-to-the-google-apps-for-android-such-as-maps">How can I get access to the Google apps for Android, such as Maps?</h3>
+href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>.
+</p>
+
+<h3 id="how-can-i-get-access-to-the-google-apps-for-android-such-as-maps">How
+can I get access to the Google apps for Android, such as Maps?</h3>
<p>The Google apps for Android, such as YouTube, Google Maps,
Gmail, and more, are Google properties that are not part of Android and
are licensed separately. Contact <a
href="mailto:android-partnerships@google.com">android-partnerships@google.com</a>
for inquiries related to those apps.</p>
+
<h3 id="is-compatibility-mandatory">Is compatibility mandatory?</h3>
<p>No. The Android Compatibility Program is optional. Since the Android source
-code is open, anyone can use it to build any kind of device. However, if manufacturers
-wish to use the Android name with their products, or want access to Google Play,
-they must first demonstrate their devices are compatible.</p>
-<h3 id="how-much-does-compatibility-certification-cost">How much does compatibility certification cost?</h3>
+code is open, anyone can use it to build any kind of device. However, if
+manufacturers wish to use the Android name with their products, or want access
+to Google Play, they must first demonstrate their devices are compatible.</p>
+
+<h3 id="how-much-does-compatibility-certification-cost">How much does
+compatibility certification cost?</h3>
<p>There is no cost to obtain Android compatibility for a device. The
-Compatibility Test Suite is open source and available to anyone for device testing.</p>
+Compatibility Test Suite is open source and available to anyone for device
+testing.</p>
+
<h3 id="how-long-does-compatibility-take">How long does compatibility take?</h3>
<p>The process is automated. The Compatibility Test Suite generates a report
that can be provided to Google to verify compatibility. Eventually we intend
to provide self-service tools to upload these reports to a public database.</p>
-<h3 id="who-determines-what-will-be-part-of-the-compatibility-definition">Who determines what will be part of the compatibility definition?</h3>
+
+<h3 id="who-determines-what-will-be-part-of-the-compatibility-definition">Who
+determines what will be part of the compatibility definition?</h3>
<p>Since Google is responsible for the overall direction of Android as a
platform and product, Google maintains the Compatibility Definition Document
for each release. We draft the CDD for a new Android version in consultation
with various OEMs who provide input on its contents.</p>
-<h3 id="how-long-will-each-android-version-be-supported-for-new-devices">How long will each Android version be supported for new devices?</h3>
+
+<h3 id="how-long-will-each-android-version-be-supported-for-new-devices">How
+long will each Android version be supported for new devices?</h3>
<p>Since Android's code is open source, we can't prevent someone from using an
old version to launch a device. Instead, Google chooses not to license the
Google Play client software for use on versions that are considered
obsolete. This allows anyone to continue to ship old versions of Android,
but those devices won't use the Android name and will exist outside the
Android apps ecosystem, just as if they were non-compatible.</p>
-<h3 id="can-a-device-have-a-different-user-interface-and-still-be-compatible">Can a device have a different user interface and still be compatible?</h3>
+
+<h3 id="can-a-device-have-a-different-user-interface-and-still-be-compatible">Can
+a device have a different user interface and still be compatible?</h3>
<p>The Android Compatibility Program determines whether a device can run
third-party applications. The user interface components shipped with a
device (such as home screen, dialer, color scheme, and so on) do not
@@ -273,52 +325,72 @@ generally have much effect on third-party apps. As such, device builders are
free to customize the user interface as much as they like. The Compatibility
Definition Document does restrict the degree to which OEMs may alter the
system user interface for areas that do impact third-party apps.</p>
-<h3 id="when-are-compatibility-definitions-released-for-new-android-versions">When are compatibility definitions released for new Android versions?</h3>
+
+<h3 id="when-are-compatibility-definitions-released-for-new-android-versions">When
+are compatibility definitions released for new Android versions?</h3>
<p>Our goal is to release new versions of Android Compatibility Definition
Documents (CDDs) once the corresponding Android platform version has
converged enough to permit it. While we can't release a final draft of a CDD
for an Android software version before the first flagship device ships with
that software, final CDDs will always be released after the first device.
However, wherever practical we will make draft versions of CDDs available.</p>
-<h3 id="how-are-device-manufacturers-compatibility-claims-validated">How are device manufacturers' compatibility claims validated?</h3>
+
+<h3 id="how-are-device-manufacturers-compatibility-claims-validated">How are
+device manufacturers' compatibility claims validated?</h3>
<p>There is no validation process for Android device compatibility. However,
if the device is to include Google Play, Google will typically validate
the device for compatibility before agreeing to license the Google Play client
software.</p>
-<h3 id="what-happens-if-a-device-that-claims-compatibility-is-later-found-to-have-compatibility-problems">What happens if a device that claims compatibility is later found to have compatibility problems?</h3>
+
+<h3 id="what-happens-if-a-device-that-claims-compatibility-is-later-found-to-have-compatibility-problems">What
+happens if a device that claims compatibility is later found to have
+compatibility problems?</h3>
<p>Typically, Google's relationships with Google Play licensees allow us to
ask them to release updated system images that fix the problems.</p>
+
<a href="#top">Back to top</a>
+
<h2 id="compatibility-test-suite">Compatibility Test Suite</h2>
+
<h3 id="what-is-the-purpose-of-the-cts">What is the purpose of the CTS?</h3>
<p>The Compatibility Test Suite is a tool used by device manufacturers to help
ensure their devices are compatible, and to report test results for
validations. The CTS is intended to be run frequently by OEMs throughout the
engineering process to catch compatibility issues early.</p>
-<h3 id="what-kinds-of-things-does-the-cts-test">What kinds of things does the CTS test?</h3>
+
+<h3 id="what-kinds-of-things-does-the-cts-test">What kinds of things does the
+CTS test?</h3>
<p>The CTS currently tests that all of the supported Android strong-typed APIs
are present and behave correctly. It also tests other non-API system
behaviors such as application lifecycle and performance. We plan to add
support in future CTS versions to test "soft" APIs such as Intents as
well.</p>
-<h3 id="will-the-cts-reports-be-made-public">Will the CTS reports be made public?</h3>
+
+<h3 id="will-the-cts-reports-be-made-public">Will the CTS reports be made
+public?</h3>
<p>Yes. While not currently implemented, Google intends to provide web-based
self-service tools for OEMs to publish CTS reports so that they can be
viewed by anyone. CTS reports can be shared as widely as manufacturers
prefer.</p>
+
<h3 id="how-is-the-cts-licensed">How is the CTS licensed?</h3>
<p>The CTS is licensed under the same Apache Software License 2.0 that the
bulk of Android uses.</p>
-<h3 id="does-the-cts-accept-contributions">Does the CTS accept contributions?</h3>
+
+<h3 id="does-the-cts-accept-contributions">Does the CTS accept
+contributions?</h3>
<p>Yes please! The Android Open Source Project accepts contributions to
improve the CTS in the same way as for any other component. In fact,
improving the coverage and quality of the CTS test cases is one of the best
ways to help out Android.</p>
-<h3 id="can-anyone-use-the-cts-on-existing-devices">Can anyone use the CTS on existing devices?</h3>
+
+<h3 id="can-anyone-use-the-cts-on-existing-devices">Can anyone use the CTS on
+existing devices?</h3>
<p>The Compatibility Definition Document requires that compatible devices
-implement the 'adb' debugging utility. This means that any compatible device
--- including ones available at retail -- must be able to run the CTS
+implement the <code>adb</code> debugging utility. This means that any compatible
+device (including ones available at retail) must be able to run the CTS
tests.</p>
+
<h3 id="are-codecs-verified">Are codecs verified by CTS?</h3>
<p>Yes. All mandatory codecs are verified by CTS.</p>
diff --git a/en/setup/start/licenses.html b/en/setup/start/licenses.html
new file mode 100644
index 00000000..4c1a3b82
--- /dev/null
+++ b/en/setup/start/licenses.html
@@ -0,0 +1,126 @@
+<html devsite>
+ <head>
+ <title>Content License</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 Android Open Source Project (AOSP) uses a few
+ <a href="http://www.opensource.org/" class="external">open source
+ initiative</a> approved open source licenses for our software.
+</p>
+<h2 id="android-open-source-project-license">AOSP license</h2>
+<p>
+ The preferred license for AOSP is the
+ <a href="http://www.apache.org/licenses/LICENSE-2.0" class="external">Apache
+ Software License, Version 2.0</a> ("Apache 2.0"), and the majority of the
+ Android software is licensed with Apache 2.0. While the project strives to
+ adhere to the preferred license, there may be exceptions that will be handled
+ on a case-by-case basis. For example, the Linux kernel patches are under the
+ GPLv2 license with system exceptions, which can be found on
+ <a href="http://www.kernel.org/pub/linux/kernel/COPYING" class="external">kernel.org</a>.
+</p>
+<h2 id="contributor-license-grants">Contributor License Agreements</h2>
+<p>All <em>individual</em> contributors (those making contributions only on
+ their own behalf) of ideas, code, or documentation to AOSP will be required to
+ complete, sign, and submit an
+ <a href="https://cla.developers.google.com/about/google-individual" class="external">Individual
+ Contributor License Agreement</a>. The agreement can be executed online
+ through the
+ <a href="https://android-review.googlesource.com/#/settings/agreements" class="external">code
+ review tool</a>. The agreement clearly defines the terms under which
+ intellectual property has been contributed to AOSP. This license is for your
+ protection as a contributor as well as the protection of the project; it does
+ not change your rights to use your own contributions for any other purpose.
+</p>
+<p>
+ For a <em>corporation</em> (or other entity) that has assigned employees to
+ work on AOSP, a
+ <a href="https://cla.developers.google.com/about/google-corporate" class="external">Corporate
+ Contributor License Agreement</a> is available. This version of the agreement
+ allows a corporation to authorize contributions submitted by its designated
+ employees and to grant copyright and patent licenses. A Corporate Contributor
+ License Agreement does not remove the need for any developer to sign their own
+ Individual Contributor License Agreement as an individual. The individual
+ agreement is needed to cover any of their contributions that are <em>not</em>
+ owned by the corporation signing the Corporate Contributor License Agreement.
+</p>
+<p>
+ We based our agreements on the ones used by the
+ <a href="http://www.apache.org">Apache Software Foundation</a>, which can
+ be found on the
+ <a href="http://www.apache.org/licenses/" class="external">Apache website</a>.
+</p>
+<h2 id="why-apache-software-license">Why Apache Software License?</h2>
+<p>
+ We are sometimes asked why Apache Software License 2.0 is the preferred
+ license for Android. For userspace (non-kernel) software, we prefer ASL2.0
+ (and similar licenses such as BSD, MIT, etc.) over other licenses such as
+ LGPL.
+</p>
+<p>
+ Android is about freedom and choice. The purpose of Android is promote
+ openness in the mobile world, and we don't believe it's possible to predict or
+ dictate all the uses to which people will want to put our software. So, while
+ we encourage everyone to make devices that are open and modifiable, we don't
+ believe it is our place to force them to do so. Using LGPL libraries would
+ often force them to do just that.
+</p>
+<p>
+ Here are some of our specific concerns:
+</p>
+<ul>
+ <li>
+ LGPL (in simplified terms) requires either: shipping of source to the
+ application; a written offer for source; or linking the LGPL-ed library
+ dynamically and allowing users to manually upgrade or replace the library.
+ 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.)
+ </li>
+ <li>
+ LGPL requires allowance of customer modification and reverse
+ engineering for debugging those modifications. Most device makers do
+ not want to have to be bound by these terms. So to minimize the burden on
+ these companies, we minimize usage of LGPL software in userspace.
+ </li>
+ </li>
+ <li>
+ Historically, LGPL libraries have been the source of a large number
+ of compliance problems for downstream device makers and application
+ developers. Educating engineers on these issues is difficult and slow-going,
+ unfortunately. It's critical to Android's success that it be as easy as
+ possible for device makers to comply with the licenses. Given the
+ difficulties with complying with LGPL in the past, it is most prudent to
+ simply not use LGPL libraries if we can avoid it.
+ </li>
+</ul>
+<p>
+ The issues discussed above are our reasons for preferring ASL2.0 for
+ our own code. They aren't criticisms of LGPL or other licenses. We are
+ passionate about this topic, even to the point where we've gone out of our
+ way to make sure as much code as possible is ASL2.0 licensed. However, we love
+ all free and open source licenses, and respect others' opinions and
+ preferences. We've simply decided ASL2.0 is the right license for our goals.
+</p>
+
+ </body>
+</html>
diff --git a/en/setup/start/roles.html b/en/setup/start/roles.html
new file mode 100644
index 00000000..b420be2f
--- /dev/null
+++ b/en/setup/start/roles.html
@@ -0,0 +1,122 @@
+<html devsite>
+ <head>
+ <title>Project Roles</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 Android Open Source Project (AOSP) includes individuals working in a
+ variety of roles. Google is responsible for Android product management
+ and the engineering process for the core framework and platform; however,
+ the project considers contributions from any source, not just Google. This
+ page describes the kinds of roles that interested parties can take on.
+</p>
+<p>
+ Anyone who is interested in exploring and contributing to Android can use the
+ AOSP resources. Anyone can join the mailing lists, ask questions, contribute
+ patches, report bugs, look at submitted patches, and use the tools. To get
+ started with the Android code, see
+ <a href="../contribute/index.html">Contributing</a>.
+</p>
+
+<h2 id="contributor">Contributor</h2>
+<p>
+ "Contributors" are those making contributions to the AOSP source code,
+ including both employees of Google or other companies, as well as individual
+ developers who are contributing to Android on their own behalf. There is no
+ distinction between contributors who are employed by Google and those who are
+ not; all engineers use the same tools (git, repo, and gerrit), follow the same
+ code review process, and are subject to the same requirements on code style
+ and so on.
+</p>
+
+<h2 id="developer">Developer</h2>
+<p>
+ "Developers" are engineers writing applications that run on Android
+ devices. There is often little difference in skillset between a developer
+ and a contributor. But AOSP uses "developer" to distinguish between
+ engineers using the platform and those contributing to it. Developers
+ (along with users) are the "customers" of the platform the contributors
+ create. As such, we talk about developers a lot, though this isn't technically
+ a separate role in the AOSP per se.
+</p>
+
+<h2 id="verifier">Verifier</h2>
+<p>
+ "Verifiers" are responsible for testing change requests. After individuals
+ have submitted a significant amount of high-quality code to the project, the
+ project leads might invite them to become verifiers.
+</p>
+<aside class="note"><strong>Note:</strong> At this time, verifiers act similarly
+to approvers.</aside>
+
+<h2 id="approver">Approver</h2>
+<p>
+ "Approvers" are experienced members of the project who have demonstrated their
+ design skills and have made significant technical contributions to the
+ project. In the code-review process, an approver decides whether to include or
+ exclude a change. Project leads (who are typically employed by Google) choose
+ the approvers, sometimes promoting to this position verifiers who have
+ demonstrated their expertise within a specific project.
+</p>
+
+<h2 id="project-leads">Project lead</h2>
+<p>
+ Android consists of a number of sub-projects; you can see these in the git
+ repository as individual .git files. "Project leads" are senior contributors
+ who oversee the engineering for individual Android projects. Typically these
+ project leads are Google employees. A project lead for an individual project
+ is responsible for the following:
+</p>
+<ul>
+ <li>
+ Lead all technical aspects of the project, including the project roadmap,
+ development, release cycles, versioning, and quality assurance (QA).
+ <li>
+ Ensure the project is tested by QA in time for scheduled Android platform
+ releases.
+ </li>
+ <li>
+ Designate Verifiers and Approvers for submitted patches.
+ </li>
+ <li>
+ Be fair and unbiased while reviewing changes. Accept or reject patches
+ based on technical merit and alignment with the Android strategy.
+ </li>
+ <li>
+ Review changes in a timely manner and make best efforts to communicate
+ when changes are not accepted.</p>
+ </li>
+ <li>
+ Optionally maintain a web site for the project for information and
+ documents specific to the project.
+ </li>
+ <li>
+ Act as a facilitator in resolving technical conflicts.
+ </li>
+ <li>
+ Be a public face for the project and the go-to person for questions
+ related to the project.
+ </li>
+</ul>
+
+ </body>
+</html>
diff --git a/en/setup/start/site-updates.html b/en/setup/start/site-updates.html
new file mode 100644
index 00000000..2f7df35e
--- /dev/null
+++ b/en/setup/start/site-updates.html
@@ -0,0 +1,803 @@
+<html devsite>
+ <head>
+ <title>Site Updates</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>
+ This page describes significant revisions to source.android.com. For a
+ complete list of changes to this site refer to the Android Open Source Project
+ (AOSP)
+ <a href="https://android.googlesource.com/platform/docs/source.android.com/+log/master?pretty=full&no-merges" class="external">docs/source.android.com
+ log</a>.
+</p>
+
+<h2 id="Dec-2017">December 2017</h2>
+<p>
+ Android 8.1 has been released! See the entries below for the major platform
+ features introduced in this release.
+</p>
+
+<h3 id="aaudio">AAudio and MMAP</h3>
+<p>
+ AAudio is an audio API that has enhancements to reduce latency when used in
+ conjunction with a HAL and driver that support MMAP. See
+ <a href="/devices/audio/aaudio">AAudio and MMAP</a> for documentation
+ describing the hardware abstraction layer (HAL) and driver changes needed to
+ support AAudio's MMAP feature in Android.
+</p>
+
+<h3 id="art-config">ART configuration changes</h3>
+<p>
+ The <code>WITH_DEXPREOPT_BOOT_IMG_ONLY</code> makefile option was removed
+ from the Android runtime (ART) in Android 8.1 and replaced with the
+ <code>WITH_DEXPREOPT_BOOT_IMG_AND_SYSTEM_SERVER_ONLY</code> option that
+ pre-optimizes the system server jars, as well as the boot classpath. See
+ <a href="/devices/tech/dalvik/configure#build_options">Configuring ART</a> for
+ the deprecation notice.
+</p>
+
+<h3 id="biometric-unlock">Biometric unlock security measurements</h3>
+<p>
+ Android 8.1 introduces two new metrics associated with biometric unlocks
+ that are intended to help device manufacturers evaluate their security more
+ accurately: Imposter Accept Rate (IAR) and Spoof Accept Rate (SAR). See <a
+ href="/security/biometric/">Measuring Biometric Unlock Security</a> for
+ example attacks and test methodology.
+</p>
+
+<h3 id="boot-times">Boot time optimizations</h3>
+<p>
+ Starting in Android 8.1, power saving setting for components like UFS and
+ CPU governor can be disabled to improve device boot times. See <a
+ href="/devices/tech/perf/boot-times#disable-power-saving">Optimizing Boot
+ Times</a> for the new <code>init.*.rc</code> settings.
+</p>
+
+<h3 id=“color-mgmt”>Color management</h3>
+<p>
+ Android 8.1 adds support for color management that can be used to provide a
+ consistent experience across display technologies. Applications running on
+ Android 8.1 can access the full capabilities of a wide gamut display to get
+ the most out of a display device. See
+ <a href="/devices/tech/display/color-mgmt">Color Management</a> for
+ instructions on implementing, customizing, and testing this feature.
+</p>
+
+<h3 id="opengl-config">OpenGLRenderer configuration simplification</h3>
+<p>
+ In Android 8.1 and later, only the <code>ro.zygote.disable_gl_preload
+ property</code> still applies to OpenGLRenderer configuration. All other
+ properties have been removed. See <a
+ href="/devices/graphics/renderer">OpenGLRenderer Configuration</a> for the
+ notice and previously supported properties.
+</p>
+
+<h3 id="retail-mode">Retail demo mode made easy</h3>
+<p>
+ Through Device Policy Manager, Android 8.1 supports demonstrating device
+ functionality in retail stores via a demo-type user role. See <a
+ href="/devices/tech/display/retail-mode.html">Retail Demo Mode</a> for
+ implementation instructions.
+</p>
+
+<h3 id="textclassifier">TEXTCLASSIFIER</h3>
+<p>
+ Android 8.1 introduces the TextClassfier API that uses machine learning
+ techniques to help developers classify text.
+ See <a href="/devices/tech/display/textclassifier.html">TEXTCLASSIFIER</a> for
+ implementation instructions.
+</p>
+
+<h3 id="timezone-rules">Time zone rules</h3>
+<p>
+ Android 8.1 provides a new mechanism for device manufacturers (OEMs) to push
+ updated time zone rules data to devices without requiring a system update.
+ This mechanism enables users to receive timely updates and OEMs to test time
+ zone updates independently of system image updates. See
+ <a href="/devices/tech/config/timezone-rules">Time Zone Rules</a> for
+ instructions on applying these updates.
+</p>
+
+<h3 id="wifi-aware">Wi-Fi Aware</h3>
+<p>
+ The Wi-Fi Aware feature in Android 8.1 enables supporting devices to connect
+ to one another directly over Wi-Fi without internet or cellular network access.
+ This feature allows easy sharing of high-throughput data among trusted devices
+ and apps that are otherwise off network. See <a
+ href="/devices/tech/connect/wifi-aware">Wi-Fi Aware</a> for examples, source
+ files, and links to additional documentation.
+</p>
+
+<h2 id="Nov-2017">November 2017</h2>
+<p>
+ The <em>Source</em> section has been renamed to
+ <a href="/setup"><em>Setup</em></a>. Redirects are in place to ensure the old
+ URLs still work.
+</p>
+
+<h2 id="Sept-2017">September 2017</h2>
+<p>
+ This site has been released in China at
+ <a href="https://source.android.google.cn" class="external-link">source.android.google.cn</a>.
+ All non-reference materials have also been translated into Simplified Chinese
+ for ease of use.
+</p>
+
+<h2 id="August-2017">August 2017</h2>
+<p>
+ Android 8.0 has been released! This section describes the major new features
+ in the Android 8.0 platform.
+</p>
+<h3 id="architecture">Architecture</h3>
+<h4>Treble</h4>
+<p>
+ Android 8.0 includes support for Treble, a major re-architect of the
+ Android OS framework designed to make it easier, faster, and less costly
+ for manufacturers to update devices to a new version of Android. Documentation
+ includes details on the <a href="/devices/architecture/hidl/index.html">HAL
+ interface definition language (HIDL)</a>, a new
+ <a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>,
+ <a href="/devices/architecture/dto/index.html">Device Tree Overlays</a>, the
+ <a href="/devices/architecture/vndk/index.html">Vendor Native Development Kit
+ (VNDK)</a>, <a href="/devices/architecture/vintf/index.html">Vendor Interface
+ Objects (VINTF)</a>,
+ <a href="/devices/architecture/kernel/modular-kernels.html">Modular Kernel
+ requirements</a>, and the <a href="/devices/tech/vts/index.html">Vendor Test
+ Suite (VTS) and Infrastructure</a>.
+</p>
+
+<h4>FunctionFS support</h4>
+<p>
+ <a class="external-link" href="https://www.kernel.org/doc/Documentation/usb/functionfs.txt">FunctionFS</a>
+ (FFS) is a USB gadget function that is designed and controlled through user
+ space. Its support allows all of the function- and protocol-specific code to
+ live in user space, while all of the USB transport code lives in the kernel.
+ Using FFS moves Media Transfer Protocol (MTP) implementation into user space.
+</p>
+<p>
+ On the frameworks side, most of the major changes exist in MtpServer. The
+ USB driver interface has been refactored into two different classes, one that
+ uses the old kernel driver and one that uses FFS. MtpServer is then able
+ to use that driver interface without needing to know the details of
+ implementation. The FFS driver writes the USB descriptors to a file when
+ the server starts up; it then writes data to endpoint files similar to the
+ kernel driver use.
+</p>
+
+<h4>Kernel enhancements to LLDB/C++ debugging</h4>
+<p>
+ The Android 8.0 release includes kernel enhancements that help developers
+ create better applications by improving their debugging experience. For more
+ information, see
+ <a href="/devices/architecture/kernel/lldb-debug.html">Implementing kernel
+ enhancements to LLDB/C++ debugging</a>.
+</p>
+
+<h4>Kernel hardening</h4>
+<p>
+ Upstreamed kernel hardening features and tools to find bugs in kernel drivers.
+ For more information, see
+ <a href="/devices/architecture/kernel/hardening.html">Kernel Hardening</a>.
+</p>
+
+<h4>Optimizing SquashFS at the kernel level</h4>
+<p>
+ SquashFS is a compressed read-only filesystem for Linux, suitable for use on
+ the system partition. The optimizations in this document help improve the
+ performance of SquashFS. For more information, see
+ <a href="/devices/architecture/kernel/squashfs.html">Optimizing SquashFS at
+ the Kernel Level</a>.
+</p>
+
+<h3 id="art-dalvik">ART and Dalvik</h3>
+
+<h4>Fuzz testing</h4>
+<p>
+ AOSP offers a new fuzzing testing suite for testing the
+ <a href="/devices/tech/dalvik/">Android runtime (ART)</a> infrastructure. The
+ new toolset, JFuzz and an improved DexFuzz, are directly available in AOSP now
+ with accompanying documentation. See:
+ <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>
+ Nothing is required to implement or use the new tools. You may make changes
+ to the tools if required, just like you can make changes to the
+ runtime/compiler already.
+</p>
+
+<h4>VDEX files: Improve system update performance</h4>
+<p>
+ VDEX files improve the performance and user experience of software updates.
+ VDEX files store pre-validated DEX files with verifier dependencies so that
+ during system updates ART does not need to extract and verify the DEX files
+ again. No action is needed to implement this feature. It is enabled by
+ default. To disable the feature, set the <code>ART_ENABLE_VDEX</code>
+ environment variable to <code>false</code>.
+</p>
+
+<h4>ART performance improvements</h4>
+<p>
+ The Android runtime (ART) has been improved significantly in the Android 8.0
+ release. This document summarizes enhancements device manufacturers can expect
+ in ART. For more information, see
+ <a href="/devices/tech/dalvik/improvements.html">Improving ART Performance in
+ Android 8.0</a>.
+</p>
+
+<h4>Android A/B OTA updates</h4>
+<p>
+ This update answers common questions device manufacturers have regarding
+ Android A/B (seamless) system updates. For more information, see A/B updates
+ <a href="/devices/tech/ota/ab/ab_faqs.html">frequently asked questions</a>.
+</p>
+
+<h3 id="automotive">Automotive</h3>
+
+<h4>Bluetooth connection management</h4>
+<p>
+ Android 8.0 provides Bluetooth connection management in in-vehicle
+ infotainment systems for a more seamless Bluetooth user experience. For more
+ information, see
+ <a href="/devices/automotive/ivi_connectivity.html#bluetooth-connection-management">Bluetooth
+ connection management</a>.
+</p>
+
+<h4>Bluetooth multi-device HFP</h4>
+<p>
+ Bluetooth multi-device connectivity lets users connect multiple devices to
+ telephony profiles in an Android Automotive IVI Bluetooth. For more
+ information, see
+ <a href="/devices/automotive/ivi_connectivity.html#bluetooth-multi-device-connectivity">IVI
+ Connectivity</a>.
+</p>
+
+<h4>Vehicle Camera HAL</h4>
+<p>
+ Describes the design of an exterior view system (EVS) stack and provides the
+ HAL specification for supporting the acquisition and presentation of vehicle
+ camera data. For more information, see
+ <a href="/devices/automotive/camera-hal.html">Exterior View System (EVS)
+ Vehicle Camera HAL.</a>
+</p>
+
+<h3 id="bluetooth">Bluetooth</h3>
+<p>
+ See the updated <a href="/devices/bluetooth/index.html">Bluetooth overview</a>.
+</p>
+
+<h4>Verifying and debugging Bluetooth</h4>
+<p>
+ For details on how to verify and debug the native Bluetooth stack, see
+ <a href="/devices/bluetooth/verifying_debugging.html">Verifying and
+ Debugging</a>.
+</p>
+
+<h4>Bluetooth services</h4>
+<p>
+ Bluetooth provides a variety of features that enable core services between
+ devices, such as audio streaming, phone calls, and messaging. For more
+ information about the Android Bluetooth services, see
+ <a href="/devices/bluetooth/services.html">Bluetooth Services</a>.
+</p>
+
+<h4>BLE advertising</h4>
+<p>
+ Bluetooth 5 supports different modes of data advertisements for Bluetooth Low
+ Energy, including higher bandwidth or increased range. For more information,
+ see <a href="/devices/bluetooth/ble_advertising.html">Bluetooth Low Energy
+ Advertising</a>.
+</p>
+
+<h4>Bluetooth support for audio codecs</h4>
+<p>
+ The Android 8.0 release includes support for Bluetooth high-definition audio
+ codecs. For more information, see <a
+ href="/devices/bluetooth/services.html#advanced-audio-codecs">Advanced audio codecs</a>.
+</p>
+<h3 id="camera">Camera</h3>
+<h4>Critical camera features</h4>
+<p>
+ The Android 8.0 release contains these key enhancements to the Camera service:
+ shared surfaces, enable multiple surfaces sharing the same OutputConfiguration
+ System API for custom camera modes, and onCaptureQueueEmpty. For more
+ information, see <a href="/devices/camera/versioning.html">Camera Version
+ Support</a>.
+</p>
+
+<h3 id="configuration">Configuration</h3>
+
+<h4>Ambient capabilities</h4>
+<p>
+ Capabilities allow Linux processes to drop most root-like privileges, while
+ retaining the subset of privileges they require to perform their function.
+ Ambient capabilities allows system services to configure capabilities in their
+ <code>.rc</code> files, bringing all their configuration into a single file.
+ For more information, see
+ <a href="/devices/tech/config/ambient.html">Implementing Ambient
+ Capabilities</a>.
+</p>
+
+<h4>Privileged permission whitelist requirement</h4>
+<p>
+ Starting in Android 8.0, all privileged apps must be explicitly whitelisted in
+ system configuration XML files in the <code>/etc/permissions</code> directory.
+ If they are not, then the device will boot, but the device implementation will
+ not pass CTS. For more information, see
+ <a href="/devices/tech/config/perms-whitelist.html">Privileged Permission
+ Whitelist Requirement</a>.
+</p>
+
+<h4>Implementing USB HAL</h4>
+<p>
+ The Android 8.0 release moves handling of USB commands out of init scripts and
+ into a native USB daemon for better configuration and code reliability. For
+ more information, see <a href="/devices/tech/config/usb-hal.html">Implementing
+ USB HAL</a>.
+</p>
+
+<h3 id="connectivity">Connectivity</h3>
+
+<h4>Customizing device behavior for out-of-balance users</h4>
+<p>
+ Android devices with no data balance allow network traffic through, requiring
+ carriers and telecoms to implement mitigation protocols. This feature
+ implements a generic solution that allows carriers and telcos to indicate when
+ a device has run out of balance. For more information, see
+ <a href="/devices/tech/connect/oob-users.html">Customizing device behavior for
+ out-of-balance users</a>.
+</p>
+
+<h3 id="debugging">Debugging</h3>
+
+<h4>Enabling sanitizers in the Android build system</h4>
+<p>
+ Sanitizers are compiler-based instrumentation components to use during
+ development and testing in order to identify bugs and make Android better.
+ Android's current set of sanitizers can discover and diagnose memory misuse
+ bugs and potentially dangerous undefined behavior. For more information, see
+ <a href="/devices/tech/debug/sanitizers.html">Enabling Sanitizers in the
+ Android Build System</a>.
+</p>
+
+<h4>Recover devices in reboot loops</h4>
+<p>
+ Android 8.0 includes a feature that sends out a "rescue party" when it notices
+ core system components stuck in crash loops. Rescue Party then escalates
+ through a series of actions to recover the device. For more information, see
+ <a href="/devices/tech/debug/rescue-party.html">Rescue Party</a>.
+</p>
+
+<h4>Storaged</h4>
+<p>
+ Android 8.0 adds support for <code>storaged</code>, an Android native daemon
+ that collects and publishes storage metrics on Android devices. For more
+ information, see <a href="/devices/tech/debug/storaged.html">Implementing
+ Storaged</a>.
+</p>
+
+<h3 id="display">Display</h3>
+
+<h4>Air Traffic Control for floating windows</h4>
+<p>
+ Android 8.0 introduces Air Traffic Control for floating windows in order to
+ simplify and unify how apps display on top of other apps. Everything necessary
+ to use the feature is included in the AOSP.
+</p>
+<p>
+ Air Traffic Control allows developers to create a new (managed) floating
+ layer/window type for apps to use to display windows on-top of other apps. The
+ feature displays ongoing notifications for all apps using a floating layer
+ that lets the user manage the alert window.
+</p>
+<p>
+ The Android Compatibility Test Suite (CTS) confirms:
+</p>
+<ul>
+ <li>The current alert window types are: <code>TYPE_PHONE</code>,
+ <code>TYPE_PRIORITY_PHONE</code>, <code>TYPE_SYSTEM_ALERT</code>,
+ <code>TYPE_SYSTEM_OVERLAY</code>, or <code>TYPE_SYSTEM_ERROR</code>.
+ </li>
+ <li>Apps targeting the Android 8.0 SDK won't be able to use the window types
+ above to display windows above other apps. They will need to use a new
+ window type <code>TYPE_APPLICATION_OVERLAY</code>.
+ </li>
+ <li>Apps targeting older SDKs can still use the current window types; however,
+ the windows will be z-ordered below the new
+ <code>TYPE_APPLICATION_OVERLAY</code> windows.
+ </li>
+ <li>The system can move or resize windows in the new layer to reduce clutter.
+ </li>
+ <li>Device manufacturers must keep the notification that lets users control
+ what is displayed over other apps.
+ </li>
+</ul>
+
+<h4>Launching activities on secondary displays</h4>
+<p>
+ Virtual displays are available to everyone, and they don't require any special
+ hardware. Any application can create an instance of virtual display; in the
+ Android 8.0 release, activities can be launched on that virtual display if the
+ associated feature is enabled.
+</p>
+<p>
+ To support multi-display features, you should either use one of the
+ existing supported ways of connecting secondary devices or build new hardware.
+ The supported ways of connecting displays on Nexus and Pixel devices are
+ Google Cast and
+ <a href="https://developer.android.com/reference/android/hardware/display/VirtualDisplay.html" class="external">virtual
+ displays inside apps</a>. Support of other ways depends on kernel driver
+ support for each particular case (like MHL or DisplayPort over USB-C) and
+ fully implementing interface definitions that are related to displays in
+ HardwareComposer HAL (<code>IComposerCallback.hal</code> and
+ <code>IComposerClient.hal</code>).
+</p>
+<p>
+ Each of the ways may require SoC or OEM support. For example, to enable
+ DisplayPort over USB-C, both hardware (SOC) and software (drivers) support is
+ required. You might need to implement drivers for your hardware to support
+ connecting external displays.
+</p>
+<p>
+ The default implementation will allow launching fullscreen stacks of activities
+ on secondary displays. You can customize the stacks and System UI and
+ behavior on secondary displays.
+</p>
+<h4>Support for generic tooltip</h4>
+<p>
+ Android 8.0 allows developers to provide descriptive action names and other
+ helpful information on mouse hover over buttons and other icons. Device
+ manufacturers may style the tooltip popup. Its layout is defined in
+ <code>android/frameworks/base/core/res/res/layout/tooltip.xml</code>.
+ </a>
+</p>
+<p>
+ OEMs may replace the layout or change its dimensions and style parameters. Use
+ only text and keep the size reasonably small. The feature is implemented
+ entirely inside the View class, and there are quite exhaustive CTS tests that
+ check many aspects of Tooltip behavior.
+</p>
+<p>
+
+<h4>Support for extended aspect ratio</h4>
+<p>
+ Android 8.0 includes a new manifest attribute,
+ <a href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio" class="external">maxAspectRatio</a>,
+ which lets an activity or app specify the maximum aspect ratio it supports.
+ maxAspectRatio replaces the previous meta-data tag with a first-class API and
+ allows devices to support an aspect ratio greater than 16:9.
+</p>
+<ul>
+ <li>If an activity or app is
+ <a href="https://developer.android.com/guide/topics/ui/multi-window.html#configuring" class="external">resizable</a>,
+ allow the activity to fill the screen.
+ <li>
+ If an activity or app is non-resizeable or the platform is force resizing
+ the activity, allow the app window to display up to the maximum aspect ratio,
+ according to the
+ <a href="https://developer.android.com/reference/android/R.attr.html#maxAspectRatio" class="external">maxAspectRatio</a>
+ value.
+ <ul>
+ <li>For applications on devices running Android 8.0, the default value is
+ the aspect ratio of the current device.</li>
+ <li>For applications on devices running earlier versions of Android, the
+ default value is 16:9.</li>
+ </ul>
+ </li>
+</ul>
+
+<h4>Implementing Adaptive Icons</h4>
+<p>
+ Adaptive Icons maintain a consistent shape intra-device but vary from device
+ to device with only one icon asset provided by the developer. Additionally,
+ icons support two layers (foreground and background) that can be used for
+ motion to provide visual delight to users. For more information, see
+ <a href="/devices/tech/display/adaptive-icons.html">Implementing Adaptive
+ Icons</a>.
+</p>
+
+<h4>Night Light</h4>
+<p>
+ Night Light, introduced in Android 7.0.1, allows users to reduce the amount of
+ blue light that their screen emits. Android 8.0 gives users more control over
+ the intensity of this effect. For more information, see
+ <a href="/devices/tech/display/night-light.html">Implementing Night Light</a>.
+</p>
+
+<h4>Picture-in-picture</h4>
+<p>
+ Android 8.0 includes support for picture-in-picture (PIP) on Android handheld
+ devices. PIP allows users to resize an app with an ongoing activity, such as a
+ video, into a small window. For more information, see
+ <a href="/devices/tech/display/pip.html">Picture-in-Picture on Android
+ handsets</a>.
+</p>
+
+<h4>Better split-screen interactions</h4>
+<p>
+ Multi-window lets multiple apps simultaneously display on users' device
+ screens. Android 8.0 improves the default mode, split-screen, by compressing
+ the top pan and resizing the launcher if a user taps Home after entering
+ split-screen. For more information, see
+ <a href="/devices/tech/display/split-screen.html">Better Split-Screen
+ Interactions</a>.
+</p>
+
+<h4>Add Widgets/Shortcuts</h4>
+<p>
+ A new API in Android 8.0 allows application developers to add shortcuts and
+ widgets from inside the app instead of relying on the widget tray. The older
+ method of adding shortcuts by sending a broadcast has been deprecated for
+ security reasons. For more information, see
+ <a href="/devices/tech/display/widgets-shortcuts.html">Implementing Add
+ Widgets/Shortcuts</a>.
+</p>
+
+<h3 id="downloading-building">Downloading and building</h3>
+
+<h4>Android LLVM Toolchain improvements</h4>
+<p>
+ OEMs who wish to use our latest toolchain/tools must ensure that their private
+ code compiles successfully with the updated toolchains. This may
+ require them to fix existing issues in their code with undefined behavior. (Of
+ course, they are free to use whatever tools they prefer to compile their own
+ code too.)
+</p>
+<p>
+ They must ensure their code is free of undefined behavior (by using tools like
+ UBSan), so they are less susceptible to problems caused by newer toolchains.
+ All of the toolchains are always updated directly in AOSP. Everything will be
+ available well before OC even ships, so OEMs should be following along
+ already.
+</p>
+<p>
+ See the <a href="https://llvm.org/" class="external">public Clang/LLVM</a>
+ documentation for general instructions and the
+ <a href="https://android.googlesource.com/platform/external/clang/+/dev/ReadmeAndroid.md" class="external">Android
+ Clang/LLVM</a> documentation set within AOSP for Android-specific guidance.
+ Finally, join the
+ <a href="https://groups.google.com/forum/#!forum/android-llvm">android-llvm</a>
+ public group to get help and take part in development.
+</p>
+
+<h3 id="drm-kms">DRM/KMS</h3>
+
+<h4>DRM/KMS in Linux Kernel Version 4.9</h4>
+<p>
+ The Direct Rendering Manager (DRM)/Kernel Mode Setting (KMS) framework used by
+ Android is developed and maintained by Linux kernel developers in the Linux
+ kernel. Android merges down from the Linux kernel. By merging down from our
+ common kernel, device manufacturers gain the DRM/KMS framework automatically.
+</p>
+<p>
+ DRM/KMS became viable in Linux kernel version 4.9, and Android
+ <strong>strongly encourages</strong> OEM partners to use DRM/KMS starting with
+ this kernel version.
+ <a href="https://lwn.net/Articles/565422/" class="external">Atomic Display
+ Framework (ADF)</a>, the display framework officially supported by Android
+ today, will not be supported in 4.9 and higher versions of the common Android
+ kernel; instead, Android will support DRM/KMS from this version. OEMs can
+ continue to use ADF (or any other framework), but Android will not support
+ them in the common Android kernel.
+</p>
+<p>
+ To implement DRM/KMS, you will need to write your own drivers using
+ DRM/KMS in addition to merging down the DRM/KMS framework from the android
+ common kernel.
+</p>
+
+<h3 id="keystore">Keystore</h3>
+
+<h4>Keymaster 3</h4>
+<p>
+ Android 8.0 updates Keymaster, the keystore HAL, by extending the capabilities
+ of hardware-backed key storage on Android devices. This builds upon the
+ Android 7.1.2 updates to Keymaster 2. For more information, see
+ <a href="/security/keystore/index.html">Keymaster 3 documentation</a>.
+</p>
+
+<h3 id="security-enhancements">Security enhancements</h3>
+
+<h4>Insecure TLS version fallback removed from HttpsURLConnection</h4>
+<p>
+ Insecure TLS/SSL protocol version fallback is a workaround for buggy
+ implementations of TLS protocol downgrade negotiation in some servers. This is
+ vulnerable to POODLE. When Chrome 45 dropped the insecure fallback in
+ September 2015, less than 0.01% of servers relied on it. To improve security,
+ insecure TLS version fallback has been removed from
+ <a href="https://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html" class="external">HttpsURLConnection</a>
+ in Android 8.0. For more details, see
+ <a href="https://android-developers.googleblog.com/2017/04/android-o-to-drop-insecure-tls-version.html
+ " class="external">this blog post</a>.
+</p>
+<p>
+ To test this feature on devices with Android 8.0, run this CTS test case:
+</p>
+<pre class="devsite-click-to-copy devsite-terminal" data-terminal-prefix="# ">
+cts-tradefed run cts -m CtsLibcoreOkHttpTestCases</pre>
+
+<h3 id="performance">Performance</h3>
+
+<h4>Flash wear management</h4>
+<p>
+ Describes eMMC behavior and new features to help OEMs lower the risk of a
+ failing eMMC in the automotive environment. For more information, see
+ <a href="/devices/tech/perf/flash-wear.html">Flash Wear Management in Android
+ Automotive</a>.
+</p>
+
+<h4>Optimizing boot times</h4>
+<p>
+ Guidance for improving boot times for specific Android devices. For more
+ information, see <a href="/devices/tech/perf/boot-times.html">Optimizing
+ boot times</a>.
+</p>
+
+<h4>Task Snapshots</h4>
+<p>
+ Task Snapshots is infrastructure introduced in Android 8.0 that combines
+ screenshots for Recents Thumbnails as well as Saved Surfaces from Window
+ Manager to save memory. For more information, see
+ <a href="/devices/tech/perf/task-snapshots.html">Task Snapshots</a>.
+</p>
+
+<h3 id="peripherals">Peripherals</h3>
+
+<h4>Default print services</h4>
+<p>
+ A
+ <a href="https://developer.android.com/reference/android/printservice/PrintService.html" class="external">print
+ service</a> is an app that discovers and presents printers to a device's print
+ framework. In earlier Android versions, users had to search for and install
+ third-party print services to be able to print.
+</p>
+<p>
+ Android 8.0 includes a default print service in
+ <code><a href="https://android.googlesource.com/platform/packages/services/BuiltInPrintService/" class="external">platform/packages/services/BuiltInPrintService/</a></code>
+ that lets users print on modern printers without installing additional apps.
+ This implementation supports printers that use the Internet Printing Protocol
+ (IPP) to communicate with the printer and use PCLm, PWG-Raster, or PDF to send
+ printable content. For older printers, users should install the app
+ recommended by the
+ <a href="https://android.googlesource.com/platform/frameworks/base/+/android-7.0.0_r1/packages/PrintRecommendationService/" class="external">PrintRecommendationService</a>
+ as seen in
+ <a href="https://youtu.be/M_JGeGLpOKs?t=16m20s" class="external">this I/O
+ presentation</a>.
+
+<h3 id="reference">Reference updates</h3>
+<p>
+ The <a href="/reference/">Reference</a> section has been added to the
+ top-level navigation. As part of the
+ <a href="/devices/architecture/treble">Treble</a> release, a
+ <a href="/reference/hidl/">HIDL reference</a> section was added. The
+ <a href="/reference/tradefed/">Trade Federation</a> and the
+ <a href="/reference/hal/">legacy HAL</a> reference documentation has been
+ updated.
+</p>
+
+<h3 id="settings-menu">Settings menu</h3>
+
+<h4>Settings: Patterns and components</h4>
+<p>
+ In Android 8.0, the Settings menu gains several components and widgets that
+ cover common uses. For more information, see
+ <a href="/devices/tech/settings/patterns-components.html">Patterns and
+ Components</a>.
+</p>
+
+<h4>Settings: Updated information architecture</h4>
+<p>
+ Android 8.0 introduces a new information architecture for the Settings app.
+ The goal of the new information architecture is to simplify the way settings
+ are organized and make it easier for users to quickly find the settings needed
+ to customize their Android devices. For more information, see Implementing
+ <a href="/devices/tech/settings/info-architecture.html">Updated Information
+ Architecture</a>.
+</p>
+
+<h4>Personalized Settings</h4>
+<p>
+ The Android Settings app provides a list of suggestions to the users. This
+ feature provides ranking for suggestions, based on any contextual signal or
+ the user's past interactions with suggestions. For more information, see
+ <a href="/devices/tech/settings/personalized.html">Personalized Settings</a>.
+</p>
+
+<h4>Implementing Settings: Universal search</h4>
+<p>
+ Android 8.0 adds expanded search capabilities for the Settings menu. This
+ document describes how to add a setting and ensure it is properly indexed for
+ Settings. For more information, see
+ <a href="/devices/tech/settings/universal-search.html">Universal Search</a>.
+</p>
+
+<h3 id="storage">Storage</h3>
+
+<h4>Faster storage statistics</h4>
+<p>
+ Android 8.0 leverages the ext4 filesystem's quota support to return disk usage
+ statistics almost instantly. For more information, see
+ <a href="/devices/storage/faster-stats.html">Implementing faster storage
+ statistics</a>.
+</p>
+
+<h2 id="april-2017">April 2017</h2>
+<p>
+ Welcome to a new source.android.com! The site has been overhauled to make it
+ easier for you to navigate, search, and read its ever-growing set of
+ information. Here is a summary of enhancements:
+</p>
+
+<h3 id="screen-estate">More screen real estate, larger type size</h3>
+<p>
+ The entire site is wider, allowing you to view more content at once. Code
+ samples and commands are more visible, and all text has been enlarged.
+</p>
+
+<h3 id="mobile-ready">Mobile-ready view</h3>
+<p>The new site renders more cleanly on handheld devices with a dedicated
+ mobile view.
+</p>
+
+<img src="../images/mobile-view.png" alt="new mobile view" height="533px" />
+<figcaption><strong>Figure 1.</strong> Site's new mobile view</figcaption>
+
+<h3 id="top-tabs">New top-level tabs</h3>
+<p>
+ The former <em>Devices</em> tab has been renamed
+ <a href="/devices/">Porting</a>, while the old <em>Core Technologies</em>
+ subtab has been renamed <a href="/devices/tech/">Tuning</a> and moved to the
+ top of the site for better exposure.
+</p>
+
+<h3 id="security-forefront">Security at the forefront</h3>
+<p>
+ With an ever-increasing focus on security in Android, the
+ <a href="/security/">Security</a> tab has been moved forward (next to
+ <a href="/setup/">Source</a>) to reflect its importance.
+</p>
+
+<h3 id="reference-materials">Better reference materials</h3>
+<p>
+ <a href="/reference/hal/">Hardware Abstraction Layer</a> and
+ <a href="/reference/tradefed/packages">Trade Federation</a> reference
+ materials are available directly from a top-level
+ <a href="/reference/">Reference</a> tab.
+</p>
+
+<h3 id="code-links">Persistent code links</h3>
+<p>
+ The <a href="https://android.googlesource.com/" class="external">AOSP code
+ repository</a> is just a click away with the <strong>Go to Code</strong>
+ button at the top right of every page.
+</p>
+
+<h3 id="comprehensive-footers">Comprehensive footers</h3>
+<p>
+ In addition to the existing <em>About</em>, <em>Community</em>, and
+ <em>Legal</em> footers, you can now find a complete list of links at the
+ bottom of every page for building Android, connecting with the ecosystem, and
+ getting help with the operating system's use.
+</p>
+
+ </body>
+</html>