aboutsummaryrefslogtreecommitdiff
path: root/en
diff options
context:
space:
mode:
authorAndroid Partner Docs <noreply@android.com>2018-06-28 10:08:47 -0700
committerClay Murphy <claym@google.com>2018-06-28 16:32:53 -0700
commit4945711ac0fe9f19ae0d358ae00db5c03485aa53 (patch)
tree6272a7dec55b5d46dee3986d33aa97e0e2882ea0 /en
parent416fec3097de0ec9ffec5a0bcd4e23cd82514eba (diff)
downloadsource.android.com-4945711ac0fe9f19ae0d358ae00db5c03485aa53.tar.gz
Docs: Changes to source.android.com
- 202498507 Devsite localized content from translation request 944914. by Android Partner Docs <noreply@android.com> - 202368991 Document seccomp crashes. by Android Partner Docs <noreply@android.com> - 202365193 Devsite localized content from translation request 941016. by Android Partner Docs <noreply@android.com> - 202334002 Devsite localized content from translation request 944913. by Android Partner Docs <noreply@android.com> - 202333988 Devsite localized content from translation request 944152. by Android Partner Docs <noreply@android.com> - 202307420 Update Implementing Vulkan page. by Android Partner Docs <noreply@android.com> - 202218233 The -j64 seems unrealistic for most users. Bumped it dow... by Gina Dimino <gdimino@google.com> - 202200614 Moving Treble content to main file (and removing treble f... by Heidi von Markham <hvm@google.com> - 202192748 Clarify HIDL threading documentation. by Android Partner Docs <noreply@android.com> - 202148581 Publish localized bulletins by Danielle Roberts <daroberts@google.com> - 202141713 Devsite localized content from translation request 937937. by Android Partner Docs <noreply@android.com> - 202141703 Devsite localized content from translation request 941621. by Android Partner Docs <noreply@android.com> - 202141693 Devsite localized content from translation request 936854. by Android Partner Docs <noreply@android.com> - 202070722 Automated g4 rollback of changelist 182578621. by Christina Nguyen <cqn@google.com> - 202039586 Noting the need for upstream patches to some projects. by Clay Murphy <claym@google.com> - 202035931 Devsite localized content from translation request 942523. by Android Partner Docs <noreply@android.com> - 201978491 Devsite localized content from translation request 940149. by Android Partner Docs <noreply@android.com> - 201749091 UpdatingHAL references/adding HIDL references by Android Partner Docs <noreply@android.com> - 201700681 Devsite localized content from translation request 940151. by Android Partner Docs <noreply@android.com> - 201700650 Devsite localized content from translation request 941012. by Android Partner Docs <noreply@android.com> - 201700579 Devsite localized content from translation request 942527. by Android Partner Docs <noreply@android.com> - 201700572 Devsite localized content from translation request 940150. by Android Partner Docs <noreply@android.com> - 201700538 Devsite localized content from translation request 932858. by Android Partner Docs <noreply@android.com> - 201700524 Devsite localized content from translation request 943117. by Android Partner Docs <noreply@android.com> - 201700504 Devsite localized content from translation request 943114. by Android Partner Docs <noreply@android.com> - 201537155 Devsite localized content from translation request 937234. by Android Partner Docs <noreply@android.com> - 201537147 Devsite localized content from translation request 941017. by Android Partner Docs <noreply@android.com> - 201532584 HAL to HIDL (change to "master" directory) by Android Partner Docs <noreply@android.com> - 201376845 Devsite localized content from translation request 910444. by Android Partner Docs <noreply@android.com> - 201371305 Devsite localized content from translation request 925769. by Android Partner Docs <noreply@android.com> - 201371295 Devsite localized content from translation request 938920. by Android Partner Docs <noreply@android.com> - 201264243 Removing version from VTS Codelab and O references. by Heidi von Markham <hvm@google.com> - 201207845 Add measurements for version 8.x on Nexus 5X, Nexus 6P, P... by Android Partner Docs <noreply@android.com> - 201195333 Devsite localized content from translation request 937940. by Android Partner Docs <noreply@android.com> - 201028550 Changed "Functional patches" table description in Pixel b... by Android Partner Docs <noreply@android.com> - 201021773 Devsite localized content from translation request 939440. by Android Partner Docs <noreply@android.com> - 201021757 Devsite localized content from translation request 939442. by Android Partner Docs <noreply@android.com> - 200732813 Devsite localized content from translation request 934614. by Android Partner Docs <noreply@android.com> - 200732804 Devsite localized content from translation request 910442. by Android Partner Docs <noreply@android.com> - 200625210 Updating warning about Valgrind deprecation by Heidi von Markham <hvm@google.com> - 200618019 Simple fix to removing misleading Git images by Heidi von Markham <hvm@google.com> - 200581373 Partner Security Updates and Resources Page has wrong OS ... by Android Partner Docs <noreply@android.com> - 200553261 Devsite localized content from translation request 936855. by Android Partner Docs <noreply@android.com> - 200553240 Devsite localized content from translation request 928419. by Android Partner Docs <noreply@android.com> - 200553234 Devsite localized content from translation request 928433. by Android Partner Docs <noreply@android.com> - 200553227 Devsite localized content from translation request 938813. by Android Partner Docs <noreply@android.com> - 200428587 Add link to CTS downloads page. by Kenneth Lau <kennethlau@google.com> - 200422176 Update CTS/CTS-Verifier downloads for CTS-Jun-2018 Releases by Android Partner Docs <noreply@android.com> - 200409107 Devsite localized content from translation request 931899. by Android Partner Docs <noreply@android.com> - 200289107 Android 7 -> Android 7.x and earlier; Android 8 -> Androi... by Android Partner Docs <noreply@android.com> - 200275031 Replace index.html with _index.yaml. by Android Partner Docs <noreply@android.com> - 200263644 Replace HAL paths with HIDL (B/78915061): In URLs, change... by Android Partner Docs <noreply@android.com> - 200159329 Hide star ratings to fix layout. by Android Partner Docs <noreply@android.com> - 200062417 Devsite localized content from translation request 915905. by Android Partner Docs <noreply@android.com> - 200062406 Devsite localized content from translation request 932855. by Android Partner Docs <noreply@android.com> - 200062403 Devsite localized content from translation request 936857. by Android Partner Docs <noreply@android.com> - 200062395 Devsite localized content from translation request 924210. by Android Partner Docs <noreply@android.com> - 199872446 add a 1 to the end of researchers twitter handle by Android Partner Docs <noreply@android.com> - 199852050 Change Nexus > Pixel/ Nexus by Danielle Roberts <daroberts@google.com> - 199829857 Devsite localized content from translation request 932861. by Android Partner Docs <noreply@android.com> - 199829853 Devsite localized content from translation request 931901. by Android Partner Docs <noreply@android.com> - 199829847 Devsite localized content from translation request 928418. by Android Partner Docs <noreply@android.com> - 199826612 Add stayres@ to bulletin localization file by Danielle Roberts <daroberts@google.com> PiperOrigin-RevId: 202498507 Change-Id: I3cf1b347a519ecff7960a159cdc57b35306435cf
Diffstat (limited to 'en')
-rw-r--r--en/compatibility/cts/camera-its-box.html3
-rw-r--r--en/compatibility/cts/downloads.html90
-rw-r--r--en/compatibility/vts/index.html15
-rw-r--r--en/devices/_toc-interfaces.yaml2
-rw-r--r--en/devices/architecture/hidl-cpp/index.html22
-rw-r--r--en/devices/architecture/hidl/threading.html10
-rw-r--r--en/devices/architecture/images/treble_blog_after.pngbin16439 -> 15325 bytes
-rw-r--r--en/devices/architecture/images/treble_blog_before.pngbin19832 -> 18573 bytes
-rw-r--r--en/devices/architecture/index.html208
-rw-r--r--en/devices/architecture/treble.html92
-rw-r--r--en/devices/audio/latency_measurements.html70
-rw-r--r--en/devices/automotive/ivi_connectivity.html11
-rw-r--r--en/devices/bluetooth/index.html123
-rw-r--r--en/devices/bluetooth/services.html7
-rw-r--r--en/devices/graphics/arch-sf-hwc.html4
-rw-r--r--en/devices/graphics/implement-vulkan.html95
-rw-r--r--en/devices/media/oem.html4
-rw-r--r--en/devices/tech/connect/call-notification.html18
-rw-r--r--en/devices/tech/debug/native-crash.html59
-rw-r--r--en/devices/tech/debug/valgrind.html10
-rw-r--r--en/devices/tech/ota/ab/ab_faqs.html16
-rw-r--r--en/devices/tv/index.html426
-rw-r--r--en/google26d1c2238d4959e3.html1
-rw-r--r--en/reference/_index.yaml57
-rw-r--r--en/reference/index.html75
-rw-r--r--en/security/bulletin/2018-06-01.html4
-rw-r--r--en/security/bulletin/2018.html4
-rw-r--r--en/security/bulletin/_translation.yaml1
-rw-r--r--en/security/bulletin/index.html4
-rw-r--r--en/security/bulletin/pixel/2018-01-01.html2
-rw-r--r--en/security/bulletin/pixel/2018-02-01.html2
-rw-r--r--en/security/bulletin/pixel/2018-03-01.html2
-rw-r--r--en/security/bulletin/pixel/2018-04-01.html2
-rw-r--r--en/security/bulletin/pixel/2018-05-01.html2
-rw-r--r--en/security/bulletin/pixel/2018-06-01.html8
-rw-r--r--en/security/bulletin/pixel/2018.html4
-rw-r--r--en/security/bulletin/pixel/index.html4
-rw-r--r--en/security/overview/acknowledgements.html2
-rw-r--r--en/security/overview/updates-resources.html13
-rw-r--r--en/security/verifiedboot/verified-boot.html3
-rw-r--r--en/setup/contribute/index.html5
-rw-r--r--en/setup/develop/index.html6
-rw-r--r--en/setup/images/git_diff.pngbin19818 -> 0 bytes
-rw-r--r--en/setup/images/git_workflow.pngbin9314 -> 0 bytes
-rw-r--r--en/setup/start/site-updates.html4
45 files changed, 862 insertions, 628 deletions
diff --git a/en/compatibility/cts/camera-its-box.html b/en/compatibility/cts/camera-its-box.html
index ac997536..d4790c6f 100644
--- a/en/compatibility/cts/camera-its-box.html
+++ b/en/compatibility/cts/camera-its-box.html
@@ -190,7 +190,8 @@ python tools/run_all_tests.py device=FA6BM0305016 chart=5811000011 camera=1 scen
<h3 id=scenes-0-4>Running scene 5</h3>
<p>Scene 5 requires special setup with specific lighting (for details, refer to
-CameraITS.pdf in the CTS Verifier download). You can run Scene 5 separately
+CameraITS.pdf in CTS Verifier, which you can download at <a href="/compatibility/cts/downloads">Compatibility Test Suite Downloads</a>).
+You can run Scene 5 separately
(outside of the box) to test two devices in parallel.</p>
<ul>
<li>To run Scene 5 on front and back cameras on two devices in parallel:
diff --git a/en/compatibility/cts/downloads.html b/en/compatibility/cts/downloads.html
index 4dace47a..0e14fc7c 100644
--- a/en/compatibility/cts/downloads.html
+++ b/en/compatibility/cts/downloads.html
@@ -31,96 +31,96 @@ R&lt;number&gt; in the link name.</p>
<h2 id="android-81">Android 8.1</h2>
<p>Android 8.1 is the release of the development milestone code-named Oreo-MR1.
The source code for the following tests can be synced with the
-'android-cts-8.1_r5' tag in the open-source tree.</p>
+'android-cts-8.1_r6' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.1_r5-linux_x86-arm.zip">Android
-8.1 R5 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.1_r6-linux_x86-arm.zip">Android
+8.1 R6 Compatibility Test Suite (CTS) - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.1_r5-linux_x86-x86.zip">Android
-8.1 R5 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.1_r6-linux_x86-x86.zip">Android
+8.1 R6 Compatibility Test Suite (CTS) - x86</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r5-linux_x86-arm.zip">Android
-8.1 R5 CTS Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r6-linux_x86-arm.zip">Android
+8.1 R6 CTS Verifier - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r5-linux_x86-x86.zip">Android
-8.1 R5 CTS Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.1_r6-linux_x86-x86.zip">Android
+8.1 R6 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-80">Android 8.0</h2>
<p>Android 8.0 is the release of the development milestone code-named Oreo.
The source code for the following tests can be synced with the
-'android-cts-8.0_r9' tag in the open-source tree.</p>
+'android-cts-8.0_r10' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.0_r9-linux_x86-arm.zip">Android
-8.0 R9 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.0_r10-linux_x86-arm.zip">Android
+8.0 R10 Compatibility Test Suite (CTS) - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-8.0_r9-linux_x86-x86.zip">Android
-8.0 R9 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-8.0_r10-linux_x86-x86.zip">Android
+8.0 R10 Compatibility Test Suite (CTS) - x86</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r9-linux_x86-arm.zip">Android
-8.0 R9 CTS Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r10-linux_x86-arm.zip">Android
+8.0 R10 CTS Verifier - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r9-linux_x86-x86.zip">Android
-8.0 R9 CTS Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r10-linux_x86-x86.zip">Android
+8.0 R10 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-71">Android 7.1</h2>
<p>Android 7.1 is the release of the development milestone code-named Nougat-MR1.
The source code for the following tests can be synced with the
-'android-cts-7.1_r17' tag in the open-source tree.</p>
+'android-cts-7.1_r18' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-7.1_r17-linux_x86-arm.zip">Android
-7.1 R17 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.1_r18-linux_x86-arm.zip">Android
+7.1 R18 Compatibility Test Suite (CTS) - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-7.1_r17-linux_x86-x86.zip">Android
-7.1 R17 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.1_r18-linux_x86-x86.zip">Android
+7.1 R18 Compatibility Test Suite (CTS) - x86</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r17-linux_x86-arm.zip">Android
-7.1 R17 CTS Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r18-linux_x86-arm.zip">Android
+7.1 R18 CTS Verifier - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r17-linux_x86-x86.zip">Android
-7.1 R17 CTS Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r18-linux_x86-x86.zip">Android
+7.1 R18 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-70">Android 7.0</h2>
<p>Android 7.0 is the release of the development milestone code-named Nougat.
The source code for the following tests can be synced with the
-'android-cts-7.0_r21' tag in the open-source tree.</p>
+'android-cts-7.0_r22' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-7.0_r21-linux_x86-arm.zip">Android
-7.0 R21 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.0_r22-linux_x86-arm.zip">Android
+7.0 R22 Compatibility Test Suite (CTS) - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-7.0_r21-linux_x86-x86.zip">Android
-7.0 R21 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-7.0_r22-linux_x86-x86.zip">Android
+7.0 R22 Compatibility Test Suite (CTS) - x86</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r21-linux_x86-arm.zip">Android
-7.0 R21 CTS Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r22-linux_x86-arm.zip">Android
+7.0 R22 CTS Verifier - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r21-linux_x86-x86.zip">Android
-7.0 R21 CTS Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.0_r22-linux_x86-x86.zip">Android
+7.0 R22 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-60">Android 6.0</h2>
<p>Android 6.0 is the release of the development milestone code-named Marshmallow.
The source code for the following tests can be synced with the
-'android-cts-6.0_r28' tag in the open-source tree.</p>
+'android-cts-6.0_r29' tag in the open-source tree.</p>
<ul>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-6.0_r28-linux_x86-arm.zip">Android
-6.0 R28 Compatibility Test Suite (CTS) - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-6.0_r29-linux_x86-arm.zip">Android
+6.0 R29 Compatibility Test Suite (CTS) - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-6.0_r28-linux_x86-x86.zip">Android
-6.0 R28 Compatibility Test Suite (CTS) - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-6.0_r29-linux_x86-x86.zip">Android
+6.0 R29 Compatibility Test Suite (CTS) - x86</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r28-linux_x86-arm.zip">Android
-6.0 R28 CTS Verifier - ARM</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r29-linux_x86-arm.zip">Android
+6.0 R29 CTS Verifier - ARM</a></li>
<li><a
-href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r28-linux_x86-x86.zip">Android
-6.0 R28 CTS Verifier - x86</a></li>
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-6.0_r29-linux_x86-x86.zip">Android
+6.0 R29 CTS Verifier - x86</a></li>
</ul>
<h2 id="android-51">Android 5.1</h2>
diff --git a/en/compatibility/vts/index.html b/en/compatibility/vts/index.html
index 4f3dba45..67eacfcf 100644
--- a/en/compatibility/vts/index.html
+++ b/en/compatibility/vts/index.html
@@ -23,10 +23,11 @@
<p>
-The Android Vendor Test Suite (VTS)</a> provides extensive new functionality for
+The Android Vendor Test Suite (VTS) provides extensive new functionality for
Android testing and promotes a test-driven development process. To help the
-Android development community interact with test data, Android O includes the
-following testing resources:</p>
+Android development community interact with test data, Android includes the
+following testing resources:
+</p>
<ul>
<li><a href="systems.html">Systems
Testing with VTS</a>. Describes how to use VTS to test an Android native system
@@ -50,9 +51,11 @@ performance tests</a>. Tools for measuring throughput and latency.</li>
</ul>
<p>For additional details, refer to the
-<a href="https://codelabs.developers.google.com/codelabs/android-vts/#0" class="external">Android
-VTS v8.0 Codelab</a> on developer.android.com and the
-<a href="https://www.youtube.com/watch?v=7BX7oSHc7nk&list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva" class="external">Android VTS Products video</a> produced by Google Developers.</p>
+<a href="https://codelabs.developers.google.com/codelabs/android-vts/#0"
+class="external">Android VTS Codelab</a> on developer.android.com and the
+<a href="https://www.youtube.com/watch?v=7BX7oSHc7nk&list=PLWz5rJ2EKKc9JOMtoWWMJHFHgvXDoThva"
+class="external">Android VTS Products video</a> produced by Google Developers.
+</p>
</body>
</html>
diff --git a/en/devices/_toc-interfaces.yaml b/en/devices/_toc-interfaces.yaml
index 5f91e99d..83f54d8e 100644
--- a/en/devices/_toc-interfaces.yaml
+++ b/en/devices/_toc-interfaces.yaml
@@ -9,8 +9,6 @@ toc:
path: /devices/architecture/hal
- title: HAL Types
path: /devices/architecture/hal-types
- - title: Treble
- path: /devices/architecture/treble
- title: Kernel
section:
- title: Overview
diff --git a/en/devices/architecture/hidl-cpp/index.html b/en/devices/architecture/hidl-cpp/index.html
index 28c4aa0a..15098178 100644
--- a/en/devices/architecture/hidl-cpp/index.html
+++ b/en/devices/architecture/hidl-cpp/index.html
@@ -83,7 +83,7 @@ HAL files and is a good reference). When transferring over HALs from
<pre class="prettyprint">
PACKAGE=android.hardware.nfc@1.0
LOC=hardware/interfaces/nfc/1.0/default/
-make hidl-gen -j64
+m -j hidl-gen
hidl-gen -o $LOC -Lc++-impl -randroid.hardware:hardware/interfaces \
-randroid.hidl:system/libhidl/transport $PACKAGE
hidl-gen -o $LOC -Landroidbp-impl -randroid.hardware:hardware/interfaces \
@@ -117,19 +117,29 @@ a binderized service. Example daemon code (for pure binderized service):</p>
<pre class="prettyprint">
int main(int /* argc */, char* /* argv */ []) {
+ // This function must be called before you join to ensure the proper
+ // number of threads are created. The threadpool will never exceed
+ // size one because of this call.
+ ::android::hardware::configureRpcThreadpool(1 /*threads*/, true /*willJoin*/);
+
sp<INfc> nfc = new Nfc();
const status_t status = nfc-&gt;registerAsService();
if (status != ::android::OK) {
return 1; // or handle error
}
- // join pool or do other things
+
+ // Adds this thread to the threadpool, resulting in one total
+ // thread in the threadpool. We could also do other things, but
+ // would have to specify 'false' to willJoin in configureRpcThreadpool.
+ ::android::hardware::joinRpcThreadpool();
+ return 1; // joinRpcThreadpool should never return
}
</pre>
-<p>This daemon should live in <code>$PACKAGE + "-service"</code> (for example,
-<code>android.hardware.nfc@1.0-service</code>). The
-<a href="/security/selinux/device-policy.html">sepolicy</a> for a specific class
-of HALs is the attribute <code>hal_&lt;module&gt;</code> (for instance,
+<p>This daemon usually lives in <code>$PACKAGE + "-service-suffix"</code> (for
+example, <code>android.hardware.nfc@1.0-service</code>), but it could be anywhere.
+The <a href="/security/selinux/device-policy.html">sepolicy</a> for a specific
+class of HALs is the attribute <code>hal_&lt;module&gt;</code> (for instance,
<code>hal_nfc)</code>. This attribute must be applied to the daemon that runs a
particular HAL (if the same process serves multiple HALs, multiple attributes
can be applied to it).</p>
diff --git a/en/devices/architecture/hidl/threading.html b/en/devices/architecture/hidl/threading.html
index 059b61d4..5b8fa038 100644
--- a/en/devices/architecture/hidl/threading.html
+++ b/en/devices/architecture/hidl/threading.html
@@ -54,6 +54,16 @@ simultaneously or out of order by a server with more than one thread, and
<code>oneway</code> calls may be processed concurrently with a subsequent
blocking call.</p>
+<p>Multiple nested calls will be sent on the same hwbinder thread. For instance,
+if a process (A) makes a synchronous call from a hwbinder thread into process (B),
+and then process (B) makes a synchronous call back into process (A), the call will
+be executed on the original hwbinder thread in (A) which is blocked on the original
+call. This optimization makes it possible to have a single threaded server able to
+handle nested calls, but it does not extend to cases where the calls travel through
+another sequence of IPC calls. For instance, if process (B) had made a
+binder/vndbinder call which called into a process (C) and then process (C) calls
+back into (A), it cannot be served on the original thread in (A).</p>
+
<h2 id=model>Server threading model</h2>
<p>Except for passthrough mode, server implementations of HIDL interfaces live
in a different process than the client and need one or more threads waiting for
diff --git a/en/devices/architecture/images/treble_blog_after.png b/en/devices/architecture/images/treble_blog_after.png
index 9eb06de4..ab2d05f0 100644
--- a/en/devices/architecture/images/treble_blog_after.png
+++ b/en/devices/architecture/images/treble_blog_after.png
Binary files differ
diff --git a/en/devices/architecture/images/treble_blog_before.png b/en/devices/architecture/images/treble_blog_before.png
index 4980f06b..c94d7638 100644
--- a/en/devices/architecture/images/treble_blog_before.png
+++ b/en/devices/architecture/images/treble_blog_before.png
Binary files differ
diff --git a/en/devices/architecture/index.html b/en/devices/architecture/index.html
index 592198ff..da16afb1 100644
--- a/en/devices/architecture/index.html
+++ b/en/devices/architecture/index.html
@@ -28,54 +28,172 @@ Android system architecture contains the following components:
</p>
<img src="../images/ape_fwk_all.png">
+<figcaption><strong>Figure 1.</strong> Android system architecture</figcaption>
+
+<ul>
+<li>
+ <strong>Application framework</strong>. The application framework is used
+ most often by application developers. As a hardware developer, you should be
+ aware of developer APIs as many map directly to the underlying HAL
+ interfaces and can provide helpful information about implementing drivers.
+</li>
+<li>
+ <strong>Binder IPC</strong>. The Binder Inter-Process Communication (IPC)
+ mechanism allows the application framework to cross process boundaries and
+ call into the Android system services code. This enables high level
+ framework APIs to interact with Android system services. At the application
+ framework level, this communication is hidden from the developer and things
+ appear to "just work".
+</li>
+<li>
+ <strong>System services</strong>. System services are modular, focused
+ components such as Window Manager, Search Service, or Notification Manager.
+ Functionality exposed by application framework APIs communicates with system
+ services to access the underlying hardware. Android includes two groups of
+ services: <em>system</em> (such as Window Manager and Notification Manager)
+ and <em>media</em> (services involved in playing and recording media).
+</li>
+<li>
+ <strong>Hardware abstraction layer (HAL)</strong>. A HAL defines a standard
+ interface for hardware vendors to implement, which enables Android to be
+ agnostic about lower-level driver implementations. Using a HAL allows you to
+ implement functionality without affecting or modifying the higher level
+ system. HAL implementations are packaged into modules and loaded by the
+ Android system at the appropriate time. For details, see
+ <a href="/devices/architecture/hal.html">Hardware Abstraction Layer
+ (HAL)</a>.
+</li>
+<li>
+ <strong>Linux kernel</strong>. Developing your device drivers is similar to
+ developing a typical Linux device driver. Android uses a version of the
+ Linux kernel with a few special additions such as Low Memory Killer (a
+ memory management system that is more aggressive in preserving memory), wake
+ locks (a
+ <a href="https://developer.android.com/reference/android/os/PowerManager.html" class="external"><code>PowerManager</code></a>
+ system service), the Binder IPC driver, and other features important for a
+ mobile embedded platform. These additions are primarily for system
+ functionality and do not affect driver development. You can use any version
+ of the kernel as long as it supports the required features (such as the
+ binder driver). However, we recommend using the latest version of the
+ Android kernel. For details, see
+ <a href="/setup/building-kernels.html">Building Kernels</a>.
+</li>
+</ul>
+
+<h2 id="hidl">HAL interface definition language (HIDL)</h2>
-<p class="img-caption"><strong>Figure 1.</strong> Android system architecture</p>
-
-<h2 id="application-framework">Application framework</h2>
-
-<p>The application framework is used most often by application developers. As a
-hardware developer, you should be aware of developer APIs as many map directly
-to the underlying HAL interfaces and can provide helpful information about
-implementing drivers.</p>
-
-<h2 id="binder-ipc">Binder IPC</h2>
-<p>The Binder Inter-Process Communication (IPC) mechanism allows the application
-framework to cross process boundaries and call into the Android system services
-code. This enables high level framework APIs to interact with Android system
-services. At the application framework level, this communication is hidden from
-the developer and things appear to "just work".</p>
-
-<h2 id="system-services">System services</h2>
-<p>System services are modular, focused components such as Window Manager,
-Search Service, or Notification Manager. Functionality exposed by application
-framework APIs communicates with system services to access the underlying
-hardware. Android includes two groups of services: <em>system</em> (such as
-Window Manager and Notification Manager) and <em>media</em> (services involved
-in playing and recording media).</p>
-
-<h2 id="hal">Hardware abstraction layer (HAL)</h2>
-<p>A HAL defines a standard interface for hardware vendors to implement,
-which enables Android to be agnostic about lower-level driver implementations.
-Using a HAL allows you to implement functionality without affecting or modifying
-the higher level system. HAL implementations are packaged into modules and
-loaded by the Android system at the appropriate time. For details, see
-<a href="/devices/architecture/hal.html">Hardware Abstraction Layer (HAL)</a>.
+<p>
+ Android 8.0 re-architected the Android OS framework (in a project known as
+ <em>Treble</em>) to make it easier, faster, and less costly for
+ manufacturers to update devices to a new version of Android. In this new
+ architecture, the HAL interface definition language (HIDL, pronounced
+ "hide-l") specifies the interface between a HAL and its users, enabling the
+ Android framework to be replaced without rebuilding the HALs.
+</p>
+
+<aside class="note">
+ <strong>Note:</strong> For more details on Project Treble, refer to the
+ developer blog posts
+ <a href="https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html" class="external">Here
+ comes Treble: A modular base for Android</a> and
+ <a href="https://android-developers.googleblog.com/2018/05/faster-adoption-with-project-treble.html" class="external">Faster
+ Adoption with Project Treble</a>.
+</aside>
+
+<p>
+ HIDL separates the vendor implementation (device-specific, lower-level
+ software written by silicon manufacturers) from the Android OS framework via
+ a new vendor interface. Vendors or SOC makers build HALs once and place them
+ in a <code>/vendor</code> partition on the device; the framework, in its own
+ partition, can then be replaced with an
+ <a href="/devices/tech/ota/">over-the-air (OTA) update</a> without
+ recompiling the HALs.
+</p>
+<p>
+ The difference between the legacy Android architecture and the current,
+ HIDL-based architecture is in the use of the vendor interface:
+</p>
+
+<ul>
+<li>
+ In Android 7.x and earlier, no formal vendor interface exists, so device
+ makers must update large portions of the Android code to move a device to a
+ newer version of Android:<br><br>
+
+<img src="images/treble_blog_before.png">
+<figcaption><strong>Figure 2.</strong> Legacy Android update
+environment</figcaption>
+</li>
+<li>
+ In Android 8.0 and higher, a new stable vendor interface provides access to
+ the hardware-specific parts of Android, so device makers can deliver
+ new Android releases simply by updating the Android OS
+ framework&mdash;without additional work required from the silicon
+ manufacturers:<br><br>
+
+<img src="images/treble_blog_after.png">
+<figcaption><strong>Figure 3.</strong> Current Android update
+environment</figcaption>
+</li>
+</ul>
+
+<p>
+ All new devices launching with Android 8.0 and higher can take advantage of
+ the new architecture. To ensure forward compatibility of vendor
+ implementations, the vendor interface is validated by the
+ <a href="/devices/tech/vts/index.html">Vendor Test Suite (VTS)</a>, which is
+ analogous to the <a href="/compatibility/cts/">Compatibility Test Suite
+ (CTS)</a>. You can use VTS to automate HAL and OS kernel testing in both
+ legacy and current Android architectures.
+</p>
+
+<h2 id="resources">Architecture resources</h2>
+
+<p>
+ For details on the Android architecture, see the following sections:
</p>
-<h2 id="Linux-kernel">Linux kernel</h2>
-<p>Developing your device drivers is similar to developing a typical Linux
-device driver. Android uses a version of the Linux kernel with a few special
-additions such as Low Memory Killer (a memory management system that is more
-aggressive in preserving memory), wake locks (a
-<a href="https://developer.android.com/reference/android/os/PowerManager.html">
-<code>PowerManager</code></a> system service), the Binder IPC driver, and
-other features important for a mobile embedded platform. These additions are
-primarily for system functionality and do not affect driver development.</p>
-
-<p>You can use any version of the kernel as long as it supports the required
-features (such as the binder driver). However, we recommend using the latest
-version of the Android kernel. For details, see
-<a href="/setup/building-kernels.html">Building Kernels</a>.</p>
+<ul>
+<li>
+ <a href="/devices/architecture/hal-types.html">HAL Types</a>. Describes
+ binderized, passthrough, Same-Process (SP), and legacy HALs.
+</li>
+<li>
+ <a href="/devices/architecture/hidl/index.html">HIDL (General)</a>. Contains
+ general information about the interface between a HAL and its users.
+</li>
+<li>
+ <a href="/devices/architecture/hidl-cpp/index.html">HIDL (C++)</a>. Contains
+ details for creating C++ implementations of HIDL interfaces.
+</li>
+<li>
+ <a href="/devices/architecture/hidl-java/index.html">HIDL (Java)</a>.
+ Contains details about the Java frontend for HIDL interfaces.
+</li>
+<li>
+ <a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>.
+ Describes APIs for accessing read-only configuration items used to configure
+ the Android framework.
+</li>
+<li>
+ <a href="/devices/architecture/dto/index.html">Device Tree Overlays</a>.
+ Provides details on using device tree overlays (DTOs) in Android.
+</li>
+<li>
+ <a href="/devices/architecture/vndk/index.html">Vendor Native Development
+ Kit (VNDK)</a>. Describes the set of vendor-exclusive libraries for
+ implementing vendor HALs.
+</li>
+<li>
+ <a href="/devices/architecture/vintf/index.html">Vendor Interface Object
+ (VINTF)</a>. Describes the objects that aggregate relevant information about
+ a device and make that information available through a queryable API.
+</li>
+<li>
+ <a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for Android
+ 8.0</a>. Details SELinux changes and customizations.
+</li>
+</ul>
</body>
</html>
diff --git a/en/devices/architecture/treble.html b/en/devices/architecture/treble.html
deleted file mode 100644
index ca3c4086..00000000
--- a/en/devices/architecture/treble.html
+++ /dev/null
@@ -1,92 +0,0 @@
-<html devsite>
- <head>
- <title>Treble</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 8.0 release includes Project 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. Treble is for
-all new devices launching with Android 8.0 and beyond (the new architecture is
-already running on the Developer Preview for Pixel phones).</p>
-
-<h2 id=about-treble>About Android updates</h2>
-<p>Project Treble separates the vendor implementation (device-specific,
-lower-level software written by silicon manufacturers) from the Android OS
-framework via a new vendor interface.</p>
-
-<p>In Android 7.x and earlier, no formal vendor interface exists so device
-makers must update large portions of the Android code to move a device to a
-newer version of Android:</p>
-
-<img src="images/treble_blog_before.png">
-
-<p class="img-caption"><strong>Figure 1.</strong> Pre-Treble Android update
-environment</p>
-
-<p>With Treble, a new stable vendor interface provides access to the
-hardware-specific parts of Android, enabling device makers to deliver new
-Android releases simply by updating the Android OS framework&mdash;without any
-additional work required from the silicon manufacturers:</p>
-
-<img src="images/treble_blog_after.png">
-
-<p class="img-caption"><strong>Figure 2.</strong> Treble Android update
-environment</p>
-
-<h2 id=testing-treble>Testing Treble</h2>
-<p>To ensure forward compatibility of vendor implementations, the new vendor
-interface is validated by the <a href="/devices/tech/vts/index.html">Vendor Test
-Suite (VTS)</a>, which is analogous to the
-<a href="/compatibility/cts/">Compatibility Test Suite (CTS)</a>. You can use
-VTS to automate HAL and OS kernel testing in both pre-Treble and Treble
-environments.</p>
-
-<h2 id=treble-resources>Treble resources</h2>
-<p>For details on the new Treble architecture, see the following sections:</p>
-<ul>
-<li><a href="/devices/architecture/hal-types.html">HAL Types</a>. Describes
-binderized, passthrough, Same-Process (SP), and legacy HALs.</li>
-<li><a href="/devices/architecture/hidl/index.html">HIDL (General)</a>.
-Contains general information about the HAL interface definition language (HIDL,
-pronounced "hide-l"), which is an interface description language (IDL) to
-specify the interface between a HAL and its users.</li>
-<li><a href="/devices/architecture/hidl-cpp/index.html">HIDL (C++)</a>. Contains
-details for creating C++ implementations of HIDL interfaces.</li>
-<li><a href="/devices/architecture/hidl-java/index.html">HIDL (Java)</a>.
-Contains details about the Java frontend for HIDL interfaces.</li>
-<li><a href="/devices/architecture/configstore/index.html">ConfigStore HAL</a>.
-Describes the ConfigStore HAL, which provides a set of APIs for accessing
-read-only configuration items used to configure the Android framework.</li>
-<li><a href="/devices/architecture/dto/index.html">Device Tree Overlays</a>.
-Provides details on using device tree overlays (DTOs) in Android.</li>
-<li><a href="/devices/architecture/vndk/index.html">Vendor Native Development
-Kit (VNDK)</a>. Describes the VNDK, which is a set of libraries exclusively for
-vendors to implement their HALs.</li>
-<li><a href="/devices/architecture/vintf/index.html">Vendor Interface Object
-(VINTF)</a>. VINTF objects aggregate relevant information about a device and
-make that information available through a queryable API.</li>
-<li><a href="/security/selinux/images/SELinux_Treble.pdf">SELinux for Android
-8.0</a>. Details SELinux changes and customizations.</li>
-</ul>
-
- </body>
-</html>
diff --git a/en/devices/audio/latency_measurements.html b/en/devices/audio/latency_measurements.html
index c4aed1f7..80a8bd54 100644
--- a/en/devices/audio/latency_measurements.html
+++ b/en/devices/audio/latency_measurements.html
@@ -384,6 +384,26 @@ Android native audio API based on OpenSL ES.</p>
</tr>
<tr>
+ <td>Nexus 5X</td>
+ <td>8.0.0</td>
+ <td>OPR4.170623.020</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
+<tr>
+ <td>Nexus 5X</td>
+ <td>8.1.0</td>
+ <td>OPM2.171019.029.C1</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
+<tr>
<td>Nexus 6P</td>
<td>6.0</td>
<td>MDA89D</td>
@@ -394,6 +414,26 @@ Android native audio API based on OpenSL ES.</p>
</tr>
<tr>
+ <td>Nexus 6P</td>
+ <td>8.0.0</td>
+ <td>OPR5.170623.014</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
+<tr>
+ <td>Nexus 6P</td>
+ <td>8.1.0</td>
+ <td>OPM5.171019.019</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
+<tr>
<td>Pixel</td>
<td>7.1.2</td>
<td>NHG47L</td>
@@ -404,6 +444,26 @@ Android native audio API based on OpenSL ES.</p>
</tr>
<tr>
+ <td>Pixel</td>
+ <td>8.0.0</td>
+ <td>OPR3.170623.013</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
+<tr>
+ <td>Pixel</td>
+ <td>8.1.0</td>
+ <td>OPM1.171019.021</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
+<tr>
<td>Pixel XL</td>
<td>7.1.2</td>
<td>NHG47L</td>
@@ -413,6 +473,16 @@ Android native audio API based on OpenSL ES.</p>
<td>18</td>
</tr>
+<tr>
+ <td>Pixel XL</td>
+ <td>8.0.0</td>
+ <td>OPR3.170623.013</td>
+ <td>48000</td>
+ <td>192</td>
+ <td>4</td>
+ <td>18</td>
+</tr>
+
</table>
<a id=chart></a>
diff --git a/en/devices/automotive/ivi_connectivity.html b/en/devices/automotive/ivi_connectivity.html
index 66fce686..0544768b 100644
--- a/en/devices/automotive/ivi_connectivity.html
+++ b/en/devices/automotive/ivi_connectivity.html
@@ -93,10 +93,11 @@
</p>
<p>
- The default connection policy can be found in <code><a
- href="https://android.googlesource.com/platform/packages/services/Car/+/oreo-r6-release/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java">
+ You can view the default connection policy at <code><a
+ href="https://android.googlesource.com/platform/packages/services/Car/+/master/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java">
service/src/com/android/car/BluetoothDeviceConnectionPolicy.java</a></code>.
- To use a custom phone policy, disable the default phone policy in <code><a href="https://android.googlesource.com/platform/packages/apps/Bluetooth/+/master/res/values/config.xml">
+ To use a custom phone policy, disable the default phone policy in
+ <code><a href="https://android.googlesource.com/platform/packages/apps/Bluetooth/+/master/res/values/config.xml">
res/values/config.xml</a></code> by setting <code>enable_phone_policy</code>
to <code>false</code>.
</p>
@@ -127,7 +128,7 @@
<p>
To configure the device priority for each profile, modify the following methods
in <code><a
- href="https://android.googlesource.com/platform/packages/services/Car/+/oreo-r6-release/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java">
+ href="https://android.googlesource.com/platform/packages/services/Car/+/master/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java">
BluetoothDeviceConnectionPolicy</a></code>:
</p>
@@ -173,7 +174,7 @@
<p>
When a trigger event happens, the <a
- href="https://android.googlesource.com/platform/packages/services/Car/+/oreo-r6-release/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java">
+ href="https://android.googlesource.com/platform/packages/services/Car/+/master/service/src/com/android/car/BluetoothDeviceConnectionPolicy.java">
Bluetooth Connection Management Policy</a> determines which devices to connect
to on each Bluetooth profile. The policy then sends a connect intent to the
profile client service. In turn, the profile client service creates a client
diff --git a/en/devices/bluetooth/index.html b/en/devices/bluetooth/index.html
index 4f1e2518..f3872330 100644
--- a/en/devices/bluetooth/index.html
+++ b/en/devices/bluetooth/index.html
@@ -20,13 +20,17 @@
License for the specific language governing permissions and limitations
under the License.
-->
+ <figure>
<img style="float: right; margin: 0px 15px 15px 15px;"
- src="/devices/bluetooth/images/ape_fwk_hal_bluetooth.png" alt="Android Bluetooth HAL icon"/>
+ src="/devices/bluetooth/images/ape_fwk_hal_bluetooth.png"
+ alt="Android Bluetooth HAL icon"/>
+ </figure>
<p>
- Android provides a default Bluetooth stack that supports both Classic Bluetooth
- and Bluetooth Low Energy. Using Bluetooth, Android devices can create personal
- area networks to send and receive data with nearby Bluetooth devices.
+ Android provides a default Bluetooth stack that supports both Classic
+ Bluetooth and Bluetooth Low Energy. Using Bluetooth, Android devices can
+ create personal area networks to send and receive data with nearby Bluetooth
+ devices.
</p>
<p>
@@ -34,55 +38,56 @@
implement Bluetooth Low Energy (BLE). To fully leverage the BLE APIs, follow
the <a
href="/devices/bluetooth/hci_requirements.html">Android
- Bluetooth HCI Requirements</a>.
- Android devices with a qualified chipset can implement either Classic
- Bluetooth or both Classic Bluetooth and BLE. BLE is not backwards compatible
- with older Bluetooth chipsets.
+ Bluetooth HCI Requirements</a>. Android devices with a qualified chipset
+ can implement either Classic Bluetooth or both Classic Bluetooth and BLE.
+ BLE is not backwards compatible with older Bluetooth chipsets.
</p>
<p>
- In Android 8.0, the native Bluetooth stack is fully qualified for Bluetooth 5.
- To use available Bluetooth 5 features, the device needs to have a Bluetooth 5
- qualified chipset.
+ In Android 8.0, the native Bluetooth stack is fully qualified for Bluetooth
+ 5. To use available Bluetooth 5 features, the device needs to have a
+ Bluetooth 5 qualified chipset.
</p>
<aside class="note"><strong>Note</strong>: The largest change in the native
Bluetooth stack between Android 8.0 and previous versions is the use of
- <a href="/devices/architecture/treble.html">Treble</a>. Vendor implementations in
- Android 8.0 must use HIDL instead of <code>libbt-vendor</code>.</aside>
+ <a href="/devices/architecture/treble.html">Treble</a>. Vendor
+ implementations in Android 8.0 must use HIDL instead of
+ <code>libbt-vendor</code>.</aside>
<h2 id="architecture-android-80">Android 8.0 architecture</h2>
<p>
A Bluetooth application communicates with the Bluetooth process through
- Binder. The Bluetooth process uses JNI to communicate with the Bluetooth stack
- and provides developers with access to various Bluetooth profiles. This
- diagram shows the general structure of the Bluetooth stack:
+ Binder. The Bluetooth process uses JNI to communicate with the Bluetooth
+ stack and provides developers with access to various Bluetooth profiles.
+ This diagram shows the general structure of the Bluetooth stack:
</p>
+ <figure id="figure1">
<img src="/devices/bluetooth/images/fluoride_architecture.png"
- alt="Android 8.0 Bluetooth architecture" id="figure1"/>
- <p class="img-caption">
+ alt="Android 8.0 Bluetooth architecture"/>
+ <figcaption>
<strong>Figure 1.</strong> Android 8.0 Bluetooth architecture
- </p>
+ </figcaption>
+ </figure>
<dl>
<dt>Application framework</dt>
<dd>
- At the application framework level is application code,
- which uses the <a
- href="http://developer.android.com/reference/android/bluetooth/package-summary.html">
- android.bluetooth</a>
- APIs to interact with the Bluetooth hardware. Internally, this code calls
- the Bluetooth process through the Binder IPC mechanism.
+ At the application framework level is application code, which uses the
+ <a href="http://developer.android.com/reference/android/bluetooth/package-summary.html">
+ android.bluetooth</a> APIs to interact with the Bluetooth hardware.
+ Internally, this code calls the Bluetooth process through the Binder
+ IPC mechanism.
</dd>
<dt>Bluetooth system service</dt>
<dd>
The Bluetooth system service, located in <code>packages/apps/Bluetooth</code>,
is packaged as an Android app and implements the Bluetooth services
- and profiles at the Android framework layer. This app calls into the native
- Bluetooth stack via JNI.
+ and profiles at the Android framework layer. This app calls into the
+ native Bluetooth stack via JNI.
</dd>
<dt>JNI</dt>
@@ -96,24 +101,25 @@
<dt>Bluetooth stack</dt>
<dd>
The default Bluetooth stack is provided in AOSP and is located in
- <code>system/bt</code>. The stack implements the generic Bluetooth HAL and
- customizes it with extensions and configuration changes.
+ <code>system/bt</code>. The stack implements the generic Bluetooth HAL
+ and customizes it with extensions and configuration changes.
</dd>
<dt>Vendor implementation</dt>
<dd>
- Vendor devices interact with the Bluetooth stack using the Hardware Interface
- Design Language (HIDL).
+ Vendor devices interact with the Bluetooth stack using the Hardware
+ Interface Design Language (HIDL).
</dd>
</dl>
<h3 id="hidl">HIDL</h3>
<p>
- <a href="/devices/architecture/hidl.html">HIDL</a>
- defines the interface between the Bluetooth stack and the vendor
- implementation. To generate the Bluetooth HIDL files, pass the Bluetooth
- interface files into the HIDL generation tool. The interface files are located
- in <code>hardware/interfaces/bluetooth</code>.
+ <a href="/devices/architecture/hidl.html">HIDL</a> defines the interface
+ between the Bluetooth stack and the vendor implementation. To generate the
+ Bluetooth HIDL files, pass the Bluetooth interface files into the HIDL
+ generation tool. The interface files are located in
+ <a href="https://android.googlesource.com/platform/hardware/interfaces/+/master/bluetooth/"
+ class="external"><code>hardware/interfaces/bluetooth</code></a>.
</p>
<h3 id="bluetooth-stack-development">Bluetooth stack development</h3>
@@ -139,36 +145,37 @@
diagram shows the general structure of the Bluetooth stack:
</p>
+ <figure id="figure2">
<img src="/devices/bluetooth/images/ape_fwk_bluetooth.png"
- alt="Android Bluetooth architecture" id="figure2" />
- <p class="img-caption">
+ alt="Android Bluetooth architecture" />
+ <figcaption>
<strong>Figure 2.</strong> Android 7.x and earlier Bluetooth architecture
- </p>
+ </figcaption>
+ </figure>
<dl>
<dt>Application framework</dt>
<dd>At the application framework level is application code, which
utilizes the <a
- href="http://developer.android.com/reference/android/bluetooth/package-summary.html">
- android.bluetooth</a>
- APIs to interact with the Bluetooth hardware. Internally, this code
- calls the
- Bluetooth process through the Binder IPC mechanism.
+ href="http://developer.android.com/reference/android/bluetooth/package-summary.html">
+ android.bluetooth</a> APIs to interact with the Bluetooth hardware.
+ Internally, this code calls the Bluetooth process through the Binder
+ IPC mechanism.
</dd>
<dt>Bluetooth system service</dt>
<dd>The Bluetooth system service, located in
<code>packages/apps/Bluetooth</code>, is packaged as an Android app and
- implements the Bluetooth service and profiles at the Android framework layer.
- This app calls into the HAL layer via JNI.
+ implements the Bluetooth service and profiles at the Android framework
+ layer. This app calls into the HAL layer via JNI.
</dd>
<dt>JNI</dt>
<dd>The JNI code associated with <a
href="http://developer.android.com/reference/android/bluetooth/package-summary.html">
- android.bluetooth</a>
- is located in <code>packages/apps/Bluetooth/jni</code>. The JNI code calls
- into the HAL layer and receives callbacks from the HAL when certain Bluetooth
+ android.bluetooth</a> is located in
+ <code>packages/apps/Bluetooth/jni</code>. The JNI code calls into the
+ HAL layer and receives callbacks from the HAL when certain Bluetooth
operations occur, such as when devices are discovered.
</dd>
@@ -176,10 +183,10 @@
<dd>The hardware abstraction layer defines the standard interface that
the <a
href="http://developer.android.com/reference/android/bluetooth/package-summary.html">
- android.bluetooth</a>
- APIs and Bluetooth process call into and that you must implement to have
- your Bluetooth hardware function correctly. The header file for the Bluetooth
- HAL is <code>hardware/libhardware/include/hardware/bluetooth.h</code>.
+ android.bluetooth</a> APIs and Bluetooth process call into and that
+ you must implement to have your Bluetooth hardware function correctly.
+ The header file for the Bluetooth HAL is
+ <code>hardware/libhardware/include/hardware/bluetooth.h</code>.
Additionally, review all of the
<code>hardware/libhardware/include/hardware/bt_*.h</code> files.
</dd>
@@ -191,8 +198,8 @@
</dd>
<dt>Vendor extensions</dt>
- <dd>To add custom extensions and an HCI layer for tracing, you can create a
- libbt-vendor module and specify these components.
+ <dd>To add custom extensions and an HCI layer for tracing, you can
+ create a libbt-vendor module and specify these components.
</dd>
</dl>
@@ -203,9 +210,9 @@
The <code>bluetooth.h</code> file contains the basic interface for the
Bluetooth stack, and you must implement its functions.</p>
- <p>Profile-specific files are located in the same directory. For details, see
- the <a href="/reference/hal/dir_6b11132f1a015b03f2670f21bef1d871.html">
- HAL File Reference</a>.
+ <p>Profile-specific files are located in the same directory. For
+ details, see the <a href="/reference/hal/dir_6b11132f1a015b03f2670f21bef1d871.html">
+ HAL File Reference</a>.
</p>
</body>
diff --git a/en/devices/bluetooth/services.html b/en/devices/bluetooth/services.html
index 59a76ca2..68e90da7 100644
--- a/en/devices/bluetooth/services.html
+++ b/en/devices/bluetooth/services.html
@@ -25,8 +25,8 @@
Over Bluetooth, devices can transmit data that can be used for
interactive services such as audio, messaging, and telephony. The
Bluetooth profiles used for different services can be found in
- <code><a href="https://android.googlesource.com/platform/hardware/libhardware/+/master/include/hardware">
- hardware/libhardware/include/hardware/</a></code>.
+ <code><a href="https://android.googlesource.com/platform/system/bt/+/master/include/hardware/bluetooth.h">
+ include/hardware/bluetooth.h</a></code>.
</p>
<h2 id="audio">Audio</h2>
@@ -144,7 +144,8 @@
<li>Navigate to <strong>Settings</strong> &gt;
<strong>Connected devices</strong> &gt;
<strong>Bluetooth</strong>.</li>
- <li>Tap on the gear icon next to the sink you want to disable codecs for.</li>
+ <li>Tap on the gear icon next to the sink you want to disable codecs
+ for.</li>
<li>Uncheck the <strong>HD Audio</strong> checkbox.</li>
</ol>
diff --git a/en/devices/graphics/arch-sf-hwc.html b/en/devices/graphics/arch-sf-hwc.html
index cd7f8051..66682684 100644
--- a/en/devices/graphics/arch-sf-hwc.html
+++ b/en/devices/graphics/arch-sf-hwc.html
@@ -155,8 +155,8 @@ BufferQueue.</p>
<h2 id=screenrecord>Case Study: screenrecord</h2>
-<p>The <a href="https://android.googlesource.com/platform/frameworks/av/+/marshmallow-release/cmds/screenrecord/">screenrecord
-command</a> allows you to record everything that appears on the screen as an
+<p>The <a href="https://android.googlesource.com/platform/frameworks/av/+/master/cmds/screenrecord/">
+screenrecord command</a> allows you to record everything that appears on the screen as an
.mp4 file on disk. To implement, we have to receive composited frames from
SurfaceFlinger, write them to the video encoder, and then write the encoded
video data to a file. The video codecs are managed by a separate process
diff --git a/en/devices/graphics/implement-vulkan.html b/en/devices/graphics/implement-vulkan.html
index b2a5c283..509ce7fd 100644
--- a/en/devices/graphics/implement-vulkan.html
+++ b/en/devices/graphics/implement-vulkan.html
@@ -66,13 +66,12 @@ the driver.</p>
same symbols as the loader and which is used for linking. When running on a
device, applications call the Vulkan functions exported from
<code>libvulkan.so</code> (the real library, not the stub) to enter trampoline
-functions in the loader (which then dispatch to the appropriate layer or driver
-based on their first argument). The <code>vkGetDeviceProcAddr</code> calls
+functions in the loader, which dispatch to the appropriate layer or driver
+based on their first argument. The <code>vkGet*ProcAddr</code> calls
return the function pointers to which the trampolines would dispatch (i.e. it
calls directly into the core API code), so calling through these function
pointers (rather than the exported symbols) is slightly more efficient as it
-skips the trampoline and dispatch. However, <code>vkGetInstanceProcAddr</code>
-must still call into trampoline code.</p>
+skips the trampoline and dispatch.</p>
<h2 id=driver_emun>Driver enumeration and loading</h2>
<p>Android expects the GPUs available to the system to be known when the system
@@ -102,12 +101,12 @@ driver, though that driver can support multiple physical devices. The
<code>vkGetInstanceProcAddr</code> functions. The loader can find all other
<code>VkInstance</code>, <code>VkPhysicalDevice</code>, and
<code>vkGetDeviceProcAddr</code> functions by calling
-<code>vkGetInstanceProcAddr</code>.</p>
+the <code>hw_device_t</code>'s <code>vkGetInstanceProcAddr</code>.</p>
<h2 id=layer_discover>Layer discovery and loading</h2>
<p>The Vulkan loader supports enumerating and loading layers that can expose
additional extensions and/or intercept core API calls on their way to the
-driver. Android 7.0 does not include layers on the system image; however,
+driver. Android does not include layers on the system image; however,
applications may include layers in their APK.</p>
<p>When using layers, keep in mind that Android's security model and policies
differ significantly from other platforms. In particular, Android does not allow
@@ -170,23 +169,48 @@ and will not be exposed to applications.</p>
<h3 id=gralloc_usage_flags>Gralloc usage flags</h3>
<p>Implementations may need swapchain buffers to be allocated with
implementation-defined private gralloc usage flags. When creating a swapchain,
-the platform asks the driver to translate the requested format and image usage
+Android 8.0 asks the driver to translate the requested format and image usage
flags into gralloc usage flags by calling:</p>
<pre class="devsite-click-to-copy">
+typedef enum VkSwapchainImageUsageFlagBitsANDROID {
+ VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID = 0x00000001,
+ VK_SWAPCHAIN_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
+} VkSwapchainImageUsageFlagBitsANDROID;
+typedef VkFlags VkSwapchainImageUsageFlagsANDROID;
+
+VkResult VKAPI vkGetSwapchainGrallocUsage2ANDROID(
+ VkDevice device,
+ VkFormat format,
+ VkImageUsageFlags imageUsage,
+ VkSwapchainImageUsageFlagsANDROID swapchainUsage,
+ uint64_t* grallocConsumerUsage,
+ uint64_t* grallocProducerUsage
+);
+</pre>
+
+<p>The <code>format</code> and <code>imageUsage</code> parameters are taken from
+the <code>VkSwapchainCreateInfoKHR</code> structure. The driver should fill
+<code>*grallocConsumerUsage</code> and <code>*grallocProducerUsage</code> with
+the gralloc usage flags required for the format
+and usage. The usage returned by the driver will be combined with the usage flags
+requested by the swapchain consumer when allocating buffers.</p>
+
+<p>An earlier version of this function is called by Android 7.x. In Android 8.0
+it is deprecated but will still be called if
+<code>vkGetSwapchainGrallocUsage2ANDROID</code> isn't provided by the driver:
+
+<pre class="devsite-click-to-copy">
VkResult VKAPI vkGetSwapchainGrallocUsageANDROID(
VkDevice device,
VkFormat format,
VkImageUsageFlags imageUsage,
int* grallocUsage
);
-</pre>
+<pre>
-<p>The <code>format</code> and <code>imageUsage</code> parameters are taken from
-the <code>VkSwapchainCreateInfoKHR</code> structure. The driver should fill
-<code>*grallocUsage</code> with the gralloc usage flags required for the format
-and usage (which are combined with the usage flags requested by the swapchain
-consumer when allocating buffers).</p>
+<p>This earlier version does not support swapchain usage flags or extended gralloc
+usage flags.</p>
<h3 id=gralloc_usage_flags>Gralloc-backed images</h3>
@@ -211,6 +235,15 @@ typedef struct {
// Gralloc format and usage requested when the buffer was allocated.
int format;
int usage;
+ // Beginning in Android 8.0, the usage field above is deprecated and the
+ // usage2 struct below was added. The usage field is still filled in for
+ // compatibility with Android 7.0 drivers. Drivers for Android 8.0
+ // should prefer the usage2 struct, especially if the
+ // android.hardware.graphics.allocator HAL uses the extended usage bits.
+ struct {
+ uint64_t consumer;
+ uint64_t producer;
+ } usage2;
} VkNativeBufferANDROID;
</pre>
@@ -232,7 +265,22 @@ the following data:</p>
.pQueueFamilyIndices = VkSwapChainCreateInfoWSI::pQueueFamilyIndices
</pre>
-<h3 id=acquire_image>Aquiring images</h3>
+In Android 8.0 and later, the platform will provide a
+<code>VkSwapchainImageCreateInfo</code> extension structure in the
+<code>VkImageCreateInfo</code> chain provided to <code>vkCreateImage</code>
+when any swapchain image usage flags are required for the swapchain.
+The extension structure contains the swapchain image usage flags:
+
+<pre class="devsite-click-to-copy">
+typedef struct {
+ VkStructureType sType; // must be VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID
+ const void* pNext;
+
+ VkSwapchainImageUsageFlagsANDROID usage;
+} VkSwapchainImageCreateInfoANDROID;
+</pre>
+
+<h3 id=acquire_image>Acquiring images</h3>
<p><code>vkAcquireImageANDROID</code> acquires ownership of a swapchain image
and imports an externally-signalled native fence into both an existing
<code>VkSemaphore</code> object and an existing <code>VkFence</code> object:</p>
@@ -267,34 +315,41 @@ it is as if the native fence was already signalled.</p>
<h3 id=acquire_image>Releasing images</h3>
<p><code>vkQueueSignalReleaseImageANDROID</code> prepares a swapchain image for
-external use, and creates a native fence and schedules it to be signalled when
-prior work on the queue has completed:</p>
+external use, and creates a native fence and schedules it to be signalled after
+the input semaphores have signaled:</p>
<pre class="devsite-click-to-copy">
VkResult VKAPI vkQueueSignalReleaseImageANDROID(
VkQueue queue,
+ uint32_t waitSemaphoreCount,
+ const VkSemaphore* pWaitSemaphores,
VkImage image,
int* pNativeFenceFd
);
</pre>
-<p>This API is called during <code>vkQueuePresentWSI</code> on the provided
+<p>This API is called during <code>vkQueuePresentKHR</code> on the provided
queue. Effects are similar to <code>vkQueueSignalSemaphore</code>, except with a
-native fence instead of a semaphore. Unlike <code>vkQueueSignalSemaphore</code>,
+native fence instead of a semaphore. The native fence must not signal until the
+<code>waitSemaphoreCount</code> semaphores in <code>pWaitSemaphores</code> have
+signaled. Unlike <code>vkQueueSignalSemaphore</code>,
however, this call creates and returns the synchronization object that will be
signalled rather than having it provided as input. If the queue is already idle
when this function is called, it is allowed (but not required) to set
<code>*pNativeFenceFd</code> to -1. The file descriptor returned in
*<code>pNativeFenceFd</code> is owned and will be closed by the caller.</p>
-<h3 id=update_drivers>Updating drivers</h3>
-
<p>Many drivers can ignore the image parameter, but some may need to prepare
CPU-side data structures associated with a gralloc buffer for use by external
image consumers. Preparing buffer contents for use by external consumers should
have been done asynchronously as part of transitioning the image to
<code>VK_IMAGE_LAYOUT_PRESENT_SRC_KHR</code>.</p>
+If the image was created with
+<code>VK_SWAPCHAIN_IMAGE_USAGE_SHARED_BIT_ANDROID</code>, then the driver must
+allow <code>vkQueueSignalReleaseImageANDROID</code> to be called repeatedly
+without intervening calls to <code>vkAcquireImageANDROID</code>.
+
<h2 id=validation>Validation</h2>
<p>OEMs can test their Vulkan implementation using CTS, which includes
<a href="/devices/graphics/cts-integration.html">drawElements
diff --git a/en/devices/media/oem.html b/en/devices/media/oem.html
index c9d2e424..f1fbb963 100644
--- a/en/devices/media/oem.html
+++ b/en/devices/media/oem.html
@@ -114,8 +114,8 @@ the <code>com.android.cts.videoperf.VideoEncoderDecoderTest</code> and
variability of Android performance, it is recommended the tests are run
multiple times to get more accurate minimum and maximum values.
<li>Use the provided <a
-href="https://android.googlesource.com/platform/cts/+/marshmallow-cts-dev/tools/cts-media/get_achievable_rates.py">get_achievable_rates.py</a>
-script to generate the XML file.
+href="https://android.googlesource.com/platform/cts/+/master/tools/cts-media/get_achievable_rates.py">
+get_achievable_rates.py</a> script to generate the XML file.
<li>Place the XML file at: <code>/etc/media_codecs_performance.xml</code><br>
This is usually done by placing the XML file in the device project
(device/<em>&lt;vendor&gt;</em>/<em>&lt;product&gt;</em>) and adding a
diff --git a/en/devices/tech/connect/call-notification.html b/en/devices/tech/connect/call-notification.html
index d195ad27..a8f5c2c6 100644
--- a/en/devices/tech/connect/call-notification.html
+++ b/en/devices/tech/connect/call-notification.html
@@ -98,17 +98,17 @@ notifications and Dialer UI (such as the call log).</li>
functionality. For details, refer to the following documentation:</p>
<ul>
<li>Missed call notifications<br>
-<a href="https://android.googlesource.com/platform/packages/services/Telecomm/+/nougat-release/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java">Telecom/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java</a><br>
-<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/nougat-release/src/com/android/dialer/calllog/MissedCallNotificationReceiver.java">Dialer/src/com/android/dialer/calllog/MissedCallNotificationReceiver.java</a><br>
-<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/nougat-release/src/com/android/dialer/calllog/MissedCallNotifier.java">Dialer/src/com/android/dialer/calllog/MissedCallNotifier.java</a></li>
+<a href="https://android.googlesource.com/platform/packages/services/Telecomm/+/master/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java">Telecom/src/com/android/server/telecom/ui/MissedCallNotifierImpl.java</a><br>
+<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/dialer/app/calllog/MissedCallNotificationReceiver.java">Dialer/android/dialer/calllog/MissedCallNotificationReceiver.java</a><br>
+<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/dialer/app/calllog/MissedCallNotifier.java">Dialer/android/dialer/calllog/MissedCallNotifier.java</a></li>
<li>Playing ringtones:<br>
-<a href="https://android.googlesource.com/platform/frameworks/base/+/nougat-release/telecomm/java/android/telecom/InCallService.java">frameworks/base/telecomm/java/android/telecom/InCallService.java</a><br>
-<a href="https://android.googlesource.com/platform/packages/services/Telecomm/+/nougat-release/src/com/android/server/telecom/InCallController.java">Telecom/src/com/android/server/telecom/InCallController.java</a><br>
-<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/nougat-release/InCallUI/src/com/android/incallui/ringtone/">Dialer/InCallUI/src/com/android/incallui/ringtone</a><br>
-<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/nougat-release/InCallUI/src/com/android/incallui/StatusBarNotifier.java">Dialer/InCallUI/src/com/android/incallui/StatusBarNotifier.java</a></li>
+<a href="https://android.googlesource.com/platform/frameworks/base/+/master/telecomm/java/android/telecom/InCallService.java">frameworks/base/telecomm/java/android/telecom/InCallService.java</a><br>
+<a href="https://android.googlesource.com/platform/packages/services/Telecomm/+/master/src/com/android/server/telecom/InCallController.java">Telecom/src/com/android/server/telecom/InCallController.java</a><br>
+<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/incallui/ringtone/">Dialer/java/com/android/incallui/ringtone/</a><br>
+<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/master/java/com/android/incallui/StatusBarNotifier.java">Dialer/java/com/android/incallui/StatusBarNotifier.java</a></li>
<li>VVM notifications<br>
-<a href="https://android.googlesource.com/platform/frameworks/base/+/nougat-release/telephony/java/android/telephony/TelephonyManager.java">frameworks/base/telephony/java/android/telephony/TelephonyManager.java</a><br>
-<a href="https://android.googlesource.com/platform/packages/services/Telephony/+/nougat-release/src/com/android/phone/PhoneInterfaceManager.java">Telephony/src/com/android/phone/PhoneInterfaceManager.java</a><br>
+<a href="https://android.googlesource.com/platform/frameworks/base/+/master/telephony/java/android/telephony/TelephonyManager.java">frameworks/base/telephony/java/android/telephony/TelephonyManager.java</a><br>
+<a href="https://android.googlesource.com/platform/packages/services/Telephony/+/master/src/com/android/phone/PhoneInterfaceManager.java">Telephony/src/com/android/phone/PhoneInterfaceManager.java</a><br>
<a href="https://android.googlesource.com/platform/packages/apps/Dialer/+/nougat-release/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java">Dialer/src/com/android/dialer/calllog/DefaultVoicemailNotifier.java</a></li>
</ul>
diff --git a/en/devices/tech/debug/native-crash.html b/en/devices/tech/debug/native-crash.html
index 686af070..fbebb934 100644
--- a/en/devices/tech/debug/native-crash.html
+++ b/en/devices/tech/debug/native-crash.html
@@ -105,8 +105,8 @@ backtrace:
#09 pc 00000abc /system/xbin/crasher
</pre>
<p>
-You can reproduce an instance of this type of crash using: <code>crasher
-abort</code>
+You can reproduce an instance of this type of crash using <code>crasher
+abort</code>.
</p>
<h3 id=nullpointer>Pure null pointer dereference</h3>
<p>
@@ -140,8 +140,8 @@ backtrace:
#05 pc 000010e4 /system/xbin/crasher (_start+96)
</pre>
<p>
-You can reproduce an instance of this type of crash using: <code>crasher
-strlen-NULL</code>
+You can reproduce an instance of this type of crash using <code>crasher
+strlen-NULL</code>.
</p>
<h3 id=lowaddress>Low-address null pointer dereference</h3>
<p>
@@ -215,8 +215,8 @@ stack and directly accuse the calling code. But not always, and this is how you
would present a compelling case.
</p>
<p>
-You can reproduce instances of this kind of crash using: <code>crasher
-fprintf-NULL</code> or <code>crasher readdir-NULL</code>
+You can reproduce instances of this kind of crash using <code>crasher
+fprintf-NULL</code> or <code>crasher readdir-NULL</code>.
</p>
<h3 id=fortify>FORTIFY failure</h3>
<p>
@@ -248,8 +248,8 @@ backtrace:
#07 pc 00001110 /system/xbin/crasher (_start+96)
</pre>
<p>
-You can reproduce an instance of this type of crash using: <code>crasher
-fortify</code>
+You can reproduce an instance of this type of crash using <code>crasher
+fortify</code>.
</p>
<h3 id=stackcorruption>Stack corruption detected by -fstack-protector</h3>
<p>
@@ -288,9 +288,48 @@ You can distinguish this from other kinds of abort by the presence of
<code>__stack_chk_fail</code> in the backtrace and the specific abort message.
</p>
<p>
-You can reproduce an instance of this type of crash using: <code>crasher
-smash-stack</code>
+You can reproduce an instance of this type of crash using <code>crasher
+smash-stack</code>.
</p>
+<h3 id="seccomp">Seccomp SIGSYS from a disallowed system call</h3>
+<p>
+The <a href="https://en.wikipedia.org/wiki/Seccomp">seccomp</a> system (specifically seccomp-bpf)
+restricts access to system calls. For more information about seccomp for platform developers, see
+the blog post
+<a href="https://android-developers.googleblog.com/2017/07/seccomp-filter-in-android-o.html">Seccomp filter in Android O</a>.
+A thread that calls a restricted system call
+will receive a SIGSYS signal with code SYS_SECCOMP. The system call number will be shown in the
+cause line, along with the architecture. It is important to note that system call numbers vary
+between architectures. For example, the readlinkat(2) system call is number 305 on x86
+but 267 on x86-64. The call number is different again on both arm and arm64. Because system call
+numbers vary between architectures, it's usually easier to use the stack trace to find out which
+system call was disallowed rather than looking for the system call number in the headers.
+</p>
+<pre class="devsite-click-to-copy">
+pid: 11046, tid: 11046, name: crasher >>> crasher <<<
+signal 31 (SIGSYS), code 1 (<i style="color:Orange">SYS_SECCOMP</i>), fault addr --------
+<i style="color:Orange">Cause: seccomp prevented call to disallowed arm system call 99999</a>
+ r0 cfda0444 r1 00000014 r2 40000000 r3 00000000
+ r4 00000000 r5 00000000 r6 00000000 r7 0001869f
+ r8 00000000 r9 00000000 sl 00000000 fp fffefa58
+ ip fffef898 sp fffef888 lr 00401997 pc f74f3658 cpsr 600f0010
+
+backtrace:
+ #00 pc 00019658 /system/lib/libc.so (syscall+32)
+ #01 pc 00001993 /system/bin/crasher (do_action+1474)
+ #02 pc 00002699 /system/bin/crasher (main+68)
+ #03 pc 0007c60d /system/lib/libc.so (__libc_init+48)
+ #04 pc 000011b0 /system/bin/crasher (_start_main+72)
+</pre>
+<p>
+You can distinguish disallowed system calls from other crashes by the presence of
+<code>SYS_SECCOMP</code> on the signal line and the description on the cause line.
+</p>
+<p>
+You can reproduce an instance of this type of crash using <code>crasher
+seccomp</code>.
+</p>
+
<h2 id=crashdump>Crash dumps</h2>
diff --git a/en/devices/tech/debug/valgrind.html b/en/devices/tech/debug/valgrind.html
index 6abbc999..287e21de 100644
--- a/en/devices/tech/debug/valgrind.html
+++ b/en/devices/tech/debug/valgrind.html
@@ -25,10 +25,10 @@
(for detecting memory-related errors in C and C++), Cachegrind (a cache
profiler), Massif (a heap profiler), and several other tools.</p>
-<p class="warning"><strong>Note:</strong> While you can still use Valgrind for Android
-debugging, Android platform developers use
-<a href="/devices/tech/debug/asan.html">AddressSanitizer</a> instead.
-Valgrind will be removed from the platform in a future release.</p>
+<aside class="warning"><strong>Warning:</strong> Valgrind is deprecated and has
+ been removed from AOSP master. We strongly recommend using the
+ <a href="/devices/tech/debug/asan.html">AddressSanitizer</a> tool instead.
+</aside>
<h2 id=build-valgrind>Building Valgrind</h2>
<p>To build Valgrind:</p>
@@ -68,7 +68,7 @@ mmma -j6 external/valgrind
<code>out/target/product/XXXX/root/init.rc</code> by changing</p>
<pre class="devsite-click-to-copy">service example /system/bin/foo --arg1 --arg2</pre>
<p>to:</p>
-<pre class="devsite-click-to-copy">>service example /system/bin/logwrapper /system/bin/valgrind /system/bin/foo --arg1 --arg2</pre>
+<pre class="devsite-click-to-copy">service example /system/bin/logwrapper /system/bin/valgrind /system/bin/foo --arg1 --arg2</pre>
<p>To see the effects, create a <code>boot.img</code> and reflash the
device.</p>
diff --git a/en/devices/tech/ota/ab/ab_faqs.html b/en/devices/tech/ota/ab/ab_faqs.html
index ff978c36..109eec96 100644
--- a/en/devices/tech/ota/ab/ab_faqs.html
+++ b/en/devices/tech/ota/ab/ab_faqs.html
@@ -231,7 +231,7 @@
</p>
<p>The code in OtaDexoptService
- (<code><a href="https://android.googlesource.com/platform/frameworks/base/+/nougat-mr1-release/services/core/java/com/android/server/pm/OtaDexoptService.java#200" class="external">frameworks/base/+/nougat-mr1-release/services/core/java/com/android/server/pm/OtaDexoptService.java#200</a></code>)
+ (<code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/OtaDexoptService.java#193">frameworks/base/+/master/services/core/java/com/android/server/pm/OtaDexoptService.java</a></code>)
calls <code>getAvailableSpace</code> before optimizing each package to avoid
over-filling <code>/data</code>. Note that <em>available</em> here is still
conservative: it's the amount of space left <em>before</em> hitting the usual
@@ -245,9 +245,9 @@
<p>In the worst case where <code>/data</code> is completely full, the update
waits until the device has rebooted into the new system and no longer needs the
old system's .odex files. The PackageManager handles this:
- (<code><a href="https://android.googlesource.com/platform/frameworks/base/+/nougat-mr1-release/services/core/java/com/android/server/pm/PackageManagerService.java#7215" class="external">frameworks/base/+/nougat-mr1-release/services/core/java/com/android/server/pm/PackageManagerService.java#7215</a></code>). After the new system has
- successfully booted, <code>installd</code>
- (<code><a href="https://android.googlesource.com/platform/frameworks/native/+/nougat-mr1-release/cmds/installd/commands.cpp#2192" class="external">frameworks/native/+/nougat-mr1-release/cmds/installd/commands.cpp#2192</a></code>)
+ (<code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/services/core/java/com/android/server/pm/PackageManagerService.java#7215" class="external">frameworks/base/+/master/services/core/java/com/android/server/pm/PackageManagerService.java#7215</a></code>).
+ After the new system has successfully booted, <code>installd</code>
+ (<code><a href="https://android.googlesource.com/platform/frameworks/native/+/master/cmds/installd/dexopt.cpp#2422" class="external">frameworks/native/+/master/cmds/installd/dexopt.cpp#2422</a></code>)
can remove the .odex files that were used by the old system, returning the
device back to the steady state where there's only one copy.</p>
@@ -285,7 +285,7 @@
<em>everything</em>, so it's not as bad as you might think. It's also possible
to mark apps as requiring ahead-of-time compilation using
<code>coreApp="true"</code> in the manifest:
- (<code><a href="https://android.googlesource.com/platform/frameworks/base/+/nougat-mr1-release/packages/SystemUI/AndroidManifest.xml#23" class="external">frameworks/base/+/nougat-mr1-release/packages/SystemUI/AndroidManifest.xml#23</a></code>).
+ (<code><a href="https://android.googlesource.com/platform/frameworks/base/+/master/packages/SystemUI/AndroidManifest.xml#23" class="external">frameworks/base/+/master/packages/SystemUI/AndroidManifest.xml#23</a></code>).
This is currently used by <code>system_server</code> because it's not allowed to
JIT for security reasons.</p>
@@ -377,8 +377,8 @@
<tbody>
<tr>
<td></td>
- <td><strong>Android 7.x Release</strong></td>
- <td><strong>Android 8.x Release</strong></td>
+ <td><strong>Android 7.x and earlier</strong></td>
+ <td><strong>Android 8.x and later</strong></td>
</tr>
<tr>
<td><strong>Qualcomm</strong></td>
@@ -397,4 +397,4 @@
above, reach out to your SoC directly.</p>
</body>
-</html> \ No newline at end of file
+</html>
diff --git a/en/devices/tv/index.html b/en/devices/tv/index.html
index e02cc8b2..6860e995 100644
--- a/en/devices/tv/index.html
+++ b/en/devices/tv/index.html
@@ -25,13 +25,15 @@
<img style="float: right; margin: 0px 15px 15px 15px;" src="images/ape_fwk_hal_tv.png" alt="Android TV HAL icon"/>
-<p>The Android TV Input Framework (TIF) simplifies delivery of live content to Android TV. The
-Android TIF provides a standard API for manufacturers to create input modules for controlling
-Android TV, and enables live TV search and recommendations via metadata published by the TV Input.</p>
-<p>The framework does not seek to implement TV standards or regional requirements, but does make it
-easier for device manufacturers to meet regional digital TV broadcast standards without
-re-implementation. Documentation in this section might also be useful to third-party app
-developers who want to create custom TV Inputs.</p>
+<p>The Android TV Input Framework (TIF) simplifies delivery of live content to
+Android TV. The Android TIF provides a standard API for manufacturers to create
+input modules for controlling Android TV, and enables live TV search and
+recommendations via metadata published by the TV Input.</p>
+<p>The framework does not seek to implement TV standards or regional
+requirements, but does make it easier for device manufacturers to meet regional
+digital TV broadcast standards without re-implementation. Documentation in this
+section might also be useful to third-party app developers who want to create
+custom TV Inputs.</p>
<h2 id="components">Components</h2>
@@ -44,24 +46,29 @@ parties through the TV Input Manager.</p>
<p>The TV Input Framework consists of:</p>
<ul>
- <li>TV Provider (<code>com.android.providers.tv.TvProvider</code>): a database of channels,
- programs, and associated permissions
- <li>TV App (<code>com.android.tv.TvActivity</code>): the app that handles user interaction
- <li>TV Input Manager (<code>android.media.tv.TvInputManager</code>): allows the TV Inputs to
- communicate with the TV App
- <li>TV Input: an app representing physical or virtual tuners and input ports
- <li>TV Input HAL (<code>tv_input</code> module): a hardware definition that allows system TV
- Inputs to access
-TV-specific hardware when implemented
- <li>Parental Control: the technology to allow blocking of channels and programs
- <li>HDMI-CEC: the technology to allow remote control of various devices over HDMI
+ <li>TV Provider (<code>com.android.providers.tv.TvProvider</code>): a database
+ of channels, programs, and associated permissions</li>
+ <li>TV App (<code>com.android.tv.TvActivity</code>): the app that handles user
+ interaction</li>
+ <li>TV Input Manager (<code>android.media.tv.TvInputManager</code>): allows
+ the TV Inputs to communicate with the TV App</li>
+ <li>TV Input: an app representing physical or virtual tuners and input ports</li>
+ <li>TV Input HAL (<code>tv_input</code> module): a hardware definition that
+ allows system TV Inputs to access TV-specific hardware when implemented</li>
+ <li>Parental Control: the technology to allow blocking of channels and
+ programs</li>
+ <li>HDMI-CEC: the technology to allow remote control of various devices over
+ HDMI</li>
</ul>
<p>These components are covered in detail below. See the following diagram for a
detailed view of the Android TV Input Framework architecture.</p>
+<figure id="tif-architecture">
<img src="images/TIF_Overview.png" alt="Overview of the Android TIF architecture">
-<p class="img-caption"><strong>Figure 1.</strong> Android TV Input Framework (TIF) architecture</p>
+<figcaption><strong>Figure 1.</strong> Android TV Input Framework
+(TIF) architecture</figcaption>
+</figure>
<h2 id="flow">Flow</h2>
@@ -69,11 +76,11 @@ detailed view of the Android TV Input Framework architecture.</p>
<ol>
<li>The user sees and interacts with the TV App, a system app that can’t be
-replaced by a third-party app.
- <li>The TV App displays the AV content from the TV Input.
+replaced by a third-party app.</li>
+ <li>The TV App displays the AV content from the TV Input.</li>
<li>The TV App cannot talk directly with the TV Inputs. The TV Input Manager
-identifies the state of TV Inputs for the TV App. See <em>TV Input Manager</em> below for more
-details about these limitations.
+ identifies the state of TV Inputs for the TV App. See <em>TV Input Manager</em>
+ below for more details about these limitations.</li>
</ol>
<h2 id="permissions">Permissions</h2>
@@ -83,19 +90,20 @@ details about these limitations.
href="http://developer.android.com/guide/topics/manifest/permission-element.html#plevel">signatureOrSystem</a></code>
TV Inputs and TV App have full access to the TV Provider database and are able
to receive KeyEvents.
- <li>Only system TV Inputs can access the TV Input HAL through the TV Input Manager
-service. TV Inputs are accessed one-to-one via TV Input Manager sessions.
- <li>Third-party TV Inputs have package-locked access to the TV Provider database
-and can READ/WRITE only to matching package rows.
- <li>Third-party TV inputs can either display their own content or content from a
-device manufacturer’s passthrough TV inputs, like HDMI1. They can’t display
-content from non-passthrough TV inputs, like a built-in or IPTV tuner.
- <li><code>TV_INPUT_HARDWARE</code> permission for a hardware TV Input app, signals the TV Input
- Manager Service
-to notify the TV Input service on boot to call the TV Input Manager Service and
-add its TV Inputs. This permission allows a hardware TV Input app to support
-multiple TV Inputs per TV Input service, as well as being able to dynamically
-add and remove its supported TV Inputs.
+ <li>Only system TV Inputs can access the TV Input HAL through the TV Input
+ Manager service. TV Inputs are accessed one-to-one via TV Input Manager
+ sessions.</li>
+ <li>Third-party TV Inputs have package-locked access to the TV Provider
+ database and can READ/WRITE only to matching package rows.</li>
+ <li>Third-party TV inputs can either display their own content or content from
+ a device manufacturer’s passthrough TV inputs, like HDMI1. They can’t display
+ content from non-passthrough TV inputs, like a built-in or IPTV tuner.</li>
+ <li><code>TV_INPUT_HARDWARE</code> permission for a hardware TV Input app,
+ signals the TV Input Manager Service to notify the TV Input service on boot to
+ call the TV Input Manager Service and add its TV Inputs. This permission
+ allows a hardware TV Input app to support multiple TV Inputs per TV Input
+ service, as well as being able to dynamically add and remove its supported
+ TV Inputs.</li>
</ul>
<h2 id="tv_provider">TV Provider</h2>
@@ -104,7 +112,7 @@ add and remove its supported TV Inputs.
TV Provider also publishes and manages the associated permissions so that TV
Inputs can see only their own records. For instance, a specific TV Input can
see only the channels and programs it has supplied and is prohibited from
-accessing any other TV Inputs’ channels and programs. </p>
+accessing any other TV Inputs’ channels and programs.</p>
<p>The TV Provider maps "broadcast genre" to "canonical genre" internally. TV
Inputs are responsible for populating "broadcast genre" with the value in the
@@ -116,15 +124,17 @@ standard ATSC A/65 and program with genre 0x25
String “Sports” and TV Provider will populate the “canonical genre” field with
the mapped value <code>android.provider.TvContract.Genres.SPORTS</code>.</p>
-<p>See the diagram below for a detailed view of the TV Provider. </p>
+<p>See the diagram below for a detailed view of the TV Provider.</p>
+<figure id="android-tv-provider">
<img src="images/TIF_TV_Provider.png" alt="Android TV Provider">
-<p class="img-caption"><strong>Figure 2.</strong> Android TV Provider</p>
+<figcaption><strong>Figure 2.</strong> Android TV Provider</figcaption>
+</figure>
-<p><em>Only apps in the privileged system partition can read the entire TV Provider
-database. </em></p>
+<p><em>Only apps in the privileged system partition can read the entire TV
+Provider database.</em></p>
-<p>Passthrough TV inputs do not store channels and programs. </p>
+<p>Passthrough TV inputs do not store channels and programs.</p>
<p>In addition to the standard fields for channels and programs, the TV Provider
database also offers a BLOB type field, <code>COLUMN_INTERNAL_PROVIDER_DATA</code>,
@@ -144,28 +154,34 @@ like the TV App. These tables have four types of fields:</p>
<ul>
<li><strong>Display: </strong>Display fields contain information that apps may
- want to make visible to the user, like a channel’s name (<code>COLUMN_DISPLAY_NAME</code>)
- or number (<code>COLUMN_DISPLAY_NUMBER</code>), or the title of the program being viewed.
- <li><strong>Metadata:</strong> There are three fields for identifying content, according
- to relevant standards, like a channel’s transport stream ID
+ want to make visible to the user, like a channel’s name
+ (<code>COLUMN_DISPLAY_NAME</code>) or number
+ (<code>COLUMN_DISPLAY_NUMBER</code>), or the title of the program being viewed.</li>
+ <li><strong>Metadata:</strong> There are three fields for identifying content,
+ according to relevant standards, like a channel’s transport stream ID
(<code>COLUMN_TRANSPORT_STREAM_ID</code>), original network ID
- (<code>COLUMN_ORIGINAL_NETWORK_ID</code>) and service id (<code>COLUMN_SERVICE_ID</code>).
- <li><strong>Internal data</strong>: Fields that are for the custom use of TV Inputs.<br>
- Some fields, like <code>COLUMN_INTERNAL_PROVIDER_DATA</code>, are customizable BLOB
- fields where a TV Input can store arbitrary metadata about their channel or program.
- <li><strong>Flag: </strong>Flag fields represent whether a channel should be restricted
- from search, browse, or viewing. This can be set only at the channel level. All programs
-defer to the setting on the channel.
+ (<code>COLUMN_ORIGINAL_NETWORK_ID</code>) and service id
+ (<code>COLUMN_SERVICE_ID</code>).</li>
+ <li><strong>Internal data</strong>: Fields that are for the custom use of TV
+ Inputs.<br>
+ Some fields, like <code>COLUMN_INTERNAL_PROVIDER_DATA</code>, are customizable
+ BLOB fields where a TV Input can store arbitrary metadata about their channel
+ or program.</li>
+ <li><strong>Flag: </strong>Flag fields represent whether a channel should be
+ restricted from search, browse, or viewing. This can be set only at the
+ channel level. All programs defer to the setting on the channel.</li>
<ul>
- <li><code>COLUMN_SEARCHABLE</code>: Restricting search from some channels may be a requirement
- in certain regions. <code>COLUMN_SEARCHABLE = 0</code> means the channel should not be exposed
- in search results.
- <li><code>COLUMN_BROWSABLE</code>: Visible to system applications only. Restricting channel from
- being browsed by applications. <code>COLUMN_BROWSABLE = 0</code> means the channel should not be
- included in the channel list.
- <li><code>COLUMN_LOCKED</code>: Visible to system applications only. Restricting channel from
- being viewed by invalid accounts without entering PIN code. <code>COLUMN_LOCKED = 1</code> means
- the channel should be protected by parental control.
+ <li><code>COLUMN_SEARCHABLE</code>: Restricting search from some channels
+ may be a requirement in certain regions. <code>COLUMN_SEARCHABLE = 0</code>
+ means the channel should not be exposed in search results.</li>
+ <li><code>COLUMN_BROWSABLE</code>: Visible to system applications only.
+ Restricting channel from being browsed by applications.
+ <code>COLUMN_BROWSABLE = 0</code> means the channel should not be included
+ in the channel list.</li>
+ <li><code>COLUMN_LOCKED</code>: Visible to system applications only.
+ Restricting channel from being viewed by invalid accounts without entering
+ PIN code. <code>COLUMN_LOCKED = 1</code> means the channel should be
+ protected by parental control.</li>
</ul>
</ul>
@@ -179,14 +195,14 @@ fields are directly accessible to users; they see only what the TV App, System
apps, or TV Inputs surface.</p>
<ul>
- <li>Each row has <code>PACKAGE_NAME</code>, the package (app) that owns that row, checked on
- Query, Insert, Update via TvProvider.java.
-A TV Input may access only the information it wrote and is
-cordoned off from the information provided by other TV Inputs.
+ <li>Each row has <code>PACKAGE_NAME</code>, the package (app) that owns that
+ row, checked on Query, Insert, Update via TvProvider.java. A TV Input may
+ access only the information it wrote and is cordoned off from the information
+ provided by other TV Inputs.</li>
<li>READ, WRITE permissions via AndroidManifest.xml (requires user consent) to
-determine available channels.
- <li>Only <code>signatureOrSystem</code> apps can acquire <code>ACCESS_ALL_EPG_DATA</code>
- permission to access the entire database.
+ determine available channels.</li>
+ <li>Only <code>signatureOrSystem</code> apps can acquire
+ <code>ACCESS_ALL_EPG_DATA</code> permission to access the entire database.</li>
</ul>
<h2 id="tv_input_manager">TV Input Manager</h2>
@@ -198,8 +214,8 @@ created one-to-one with TV Inputs. The TV Input Manager allows access to
installed TV Inputs so apps may:</p>
<ul>
- <li>List TV inputs and check their status
- <li>Create sessions and manage listeners
+ <li>List TV inputs and check their status</li>
+ <li>Create sessions and manage listeners</li>
</ul>
<p>For sessions, a TV Input may be tuned by the TV App only to URIs it has added
@@ -219,15 +235,15 @@ by displaying it as disconnected and preventing its selection.</p>
<p>The TV Input Manager abstracts communication between the TV App and TV Inputs.
The standard interface of TV Input Manager and TV Input allows multiple
-device manufacturers to create their own TV Apps while helping all third-party TV Inputs
-work on all TV Apps.</p>
+device manufacturers to create their own TV Apps while helping all third-party
+TV Inputs work on all TV Apps.</p>
<h2 id="tv_inputs">TV Inputs</h2>
<p>TV Inputs are Android apps in the sense they have an AndroidManifest.xml and
are installed (via Play, pre-installed, or sideloaded). Android TV supports
pre-installed system apps, apps signed by the device manufacturer and
-third-party TV Inputs. </p>
+third-party TV Inputs.</p>
<p>Some inputs, like the HDMI input or built-in tuner input, can be provided only
by the manufacturer as they speak directly with the underlying hardware.
@@ -237,8 +253,10 @@ new input can be selected within the TV App.</p>
<h3 id=passthrough_input_example>Passthrough input example</h3>
+<figure id="tv-system-input">
<img src="images/TIF_HDMI_TV_Input.png" alt="Android TV System Input">
-<p class="img-caption"><strong>Figure 3.</strong> Android TV System Input</p>
+<figcaption><strong>Figure 3.</strong> Android TV System Input</figcaption>
+</figure>
<p>In this example, the TV Input provided by the device manufacturer is trusted
and has full access to the TV Provider. As a passthrough TV Input, it does not
@@ -249,16 +267,20 @@ The TV App communicates with the TV Input Manager to reach the HDMI TV Input.</p
<h3 id=built-in_tuner_example>Built-in tuner example</h3>
+<figure id="tuner-input">
<img src="images/Built-in_Tuner_TV_Input.png" alt="Android TV Built-in Tuner Input">
-<p class="img-caption"><strong>Figure 4.</strong> Android TV Built-in Tuner Input</p>
+<figcaption><strong>Figure 4.</strong> Android TV Built-in Tuner Input</figcaption>
+</figure>
<p>In this example, the Built-in Tuner TV Input provided by the device
-manufacturer is trusted and has full access to the TV Provider. </p>
+manufacturer is trusted and has full access to the TV Provider.</p>
<h3 id=third-party_input_example>Third-party input example</h3>
+<figure id="tv-third-party-input">
<img src="images/Third-party_Input_HDMI.png" alt="Android TV third-party input">
-<p class="img-caption"><strong>Figure 5.</strong> Android TV third-party input</p>
+<figcaption><strong>Figure 5.</strong> Android TV third-party input</figcaption>
+</figure>
<p>In this example, the external STB TV Input is provided by a third party. Since
that TV Input can’t directly access the HDMI video feed coming in, it must go
@@ -271,8 +293,10 @@ the TV while the manufacturer-provided HDMI TV Input renders the video.</p>
<h3 id=picture_in_picture_pip_example>Picture in picture (PIP) example </h3>
+<figure id="tv-keyevents">
<img src="images/TIF_PIP-PAP.png" alt="Android TV KeyEvents">
-<p class="img-caption"><strong>Figure 6.</strong> Android TV KeyEvents</p>
+<figcaption><strong>Figure 6.</strong> Android TV KeyEvents</figcaption>
+</figure>
<p>The diagram above shows how buttons on a remote control are passed to a
specific TV Input for picture in picture (PIP) display. Those button presses
@@ -281,25 +305,27 @@ converting hardware scancodes to Android keycodes and passing them to the
standard Android <a href="/devices/input/overview.html">input pipeline</a>
<code>InputReader</code> and <code>InputDispatcher</code> functions as
<a href="http://developer.android.com/reference/android/view/KeyEvent.html">KeyEvents</a>.
-These in turn trigger events on the TV App if it is in focus. </p>
+These in turn trigger events on the TV App if it is in focus.</p>
-<p>Only system TV Inputs are eligible to receive <code>InputEvents</code>, and only if
-they have the <code>RECEIVE_INPUT_EVENT</code> system permission. The TV Input is
-responsible to determine which InputEvents to consume and should allow the TV App to
-handle the keys it does not need to consume.</p>
+<p>Only system TV Inputs are eligible to receive <code>InputEvents</code>, and
+only if they have the <code>RECEIVE_INPUT_EVENT</code> system permission.
+The TV Input is responsible to determine which InputEvents to consume and should
+allow the TV App to handle the keys it does not need to consume.</p>
-<p>The TV App is responsible for knowing which system TV Input is active, meaning
-selected by the user, and to disambiguate incoming <code>KeyEvents</code> and route them to the
-correct TV Input Manager session, calling <code>dispatchInputEvent()</code> to pass on the event
-to the associated TV Input.</p>
+<p>The TV App is responsible for knowing which system TV Input is active,
+meaning selected by the user, and to disambiguate incoming <code>KeyEvents</code>
+and route them to the correct TV Input Manager session, calling
+<code>dispatchInputEvent()</code> to pass on the event to the associated TV Input.</p>
<h3 id="mheg-5_input_example">MHEG-5 input example</h3>
-<p>The following diagram shows a more detailed view of how <code>KeyEvents</code> are
-routed through the Android TIF.</p>
+<p>The following diagram shows a more detailed view of how <code>KeyEvents</code>
+are routed through the Android TIF.</p>
+<figure id="tv-red-button">
<img src="images/TIF_MHEG5_app.png" alt="Android TV Red button example">
-<p class="img-caption"><strong>Figure 7.</strong> Android TV Red button example</p>
+<figcaption><strong>Figure 7.</strong> Android TV Red button example</figcaption>
+</figure>
<p>It depicts the flow of a Red button app, common in Europe for letting users
access interactive apps on their televisions. An app can be delivered over this
@@ -307,23 +333,25 @@ transport stream. When the button is clicked, it lets users interact with these
broadcast apps. For example, you might use these broadcast apps to access
related web pages or sports scores.</p>
-<p>See the <em>Broadcast app</em> section to learn how broadcast apps interact with the TV App.</p>
+<p>See the <em>Broadcast app</em> section to learn how broadcast apps interact
+with the TV App.</p>
<p>In this example:</p>
<ol>
- <li>The TV App is in focus and receives all keys.
- <li><code>KeyEvents</code> (e.g. the Red button) is passed to the active TV Input as
- <code>InputEvents.</code>
+ <li>The TV App is in focus and receives all keys.</li>
+ <li><code>KeyEvents</code> (e.g. the Red button) is passed to the active TV
+ Input as <code>InputEvents.</code></li>
<li>The system TV Input integrates with MHEG-5 stack and has the
- <code>RECEIVE_INPUT_EVENT</code> system permission.
+ <code>RECEIVE_INPUT_EVENT</code> system permission.</li>
<li>On receiving activation keycode (e.g. Red button), the TV Input activates
-broadcast app.
- <li>TV input consumes <code>KeyEvents</code> as <code>InputEvents</code> and the broadcast
- app is the focus and handles <code>InputEvents</code> until dismissed.
+broadcast app.</li>
+ <li>TV input consumes <code>KeyEvents</code> as <code>InputEvents</code>
+ and the broadcast app is the focus and handles <code>InputEvents</code>
+ until dismissed.</li>
</ol>
-<p class="note"><strong>Note</strong>: Third-party TV inputs never receive keys. </p>
+<p class="note"><strong>Note</strong>: Third-party TV inputs never receive keys.</p>
<h2 id="tv_input_hal">TV Input HAL</h2>
@@ -351,34 +379,31 @@ TIF or the reference TV App.</p>
<ul>
- <li> Auto-detect TV Inputs
- <li> Let TV Inputs initiate channel setup
- <li> Control parental settings
- <li> Edit channels
+ <li>Auto-detect TV Inputs</li>
+ <li>Let TV Inputs initiate channel setup</li>
+ <li>Control parental settings</li>
+ <li>Edit channels</li>
</ul>
<h3 id="viewing">Viewing</h3>
<ul>
- <li> Access and navigate all TV channels
- <li> Access TV program information bar
- <li> Display Electronic Programming Guide (EPG) data
- <li> Support multiple audio and subtitle tracks
- <li> Supply parental control PIN challenge
- <li> Allow TV Input UI overlay for:
- <ul>
- <li> TV standard (HbbTV, etc.)
- </ul>
- <li> Populate search results for TV channels and programs
- <li> Display app linking cards
- <li> Support timeshifting APIs
- <li> Handle DVR functionality and support TV recording APIs
+ <li>Access and navigate all TV channels</li>
+ <li>Access TV program information bar</li>
+ <li>Display Electronic Programming Guide (EPG) data</li>
+ <li>Support multiple audio and subtitle tracks</li>
+ <li>Supply parental control PIN challenge</li>
+ <li>Allow TV Input UI overlay for TV standard (HbbTV, etc.)</li>
+ <li>Populate search results for TV channels and programs</li>
+ <li>Display app linking cards</li>
+ <li>Support timeshifting APIs</li>
+ <li>Handle DVR functionality and support TV recording APIs</li>
</ul>
<p>This feature set will increase in line with new Android versions
where the platform TIF APIs are extended. CTS Verifier provides the
-compatibility test coverage. </p>
+compatibility test coverage.</p>
<h3 id=support_for_third-party_tv_inputs>Support for third-party TV Inputs</h3>
@@ -420,24 +445,34 @@ App.</p>
<p>The reference Live TV app provides the Channel Sources menu for accessing
inputs.</p>
+<figure id="go-to-settings">
<img src="images/LiveChannels_settings.png" alt="Go to Settings">
-<p class="img-caption"><strong>Figure 8.</strong> Go to <strong>Settings</strong>.</p>
+<figcaption><strong>Figure 8.</strong> Go to <strong>Settings</strong>.</figcaption>
+</figure> <br />
+<figure id="go-to-channel-sources">
<img src="images/LiveChannels_channel_sources.png" alt="Go to Channel source in Settings">
-<p class="img-caption"><strong>Figure 9.</strong> Go to <strong>Channel sources</strong> in Settings.</p>
+<figcaption><strong>Figure 9.</strong> Go to <strong>Channel sources</strong> in Settings.</figcaption>
+</figure> <br />
+<figure id="select-source-from-list">
<img src="images/LiveChannels_sources.png" alt="Select your source from the list.">
-<p class="img-caption"><strong>Figure 10.</strong> Select your source from the list.</p>
+<figcaption><strong>Figure 10.</strong> Select your source from the list.</figcaption>
+</figure> <br />
+<figure id="add-channels-from-source">
<img src="images/LiveChannels_Add_channel.png" alt="Add channels from your source">
-<p class="img-caption"><strong>Figure 11.</strong> Add channels from your source</p>
+<figcaption><strong>Figure 11.</strong> Add channels from your source.</figcaption>
+</figure>
<p>In addition a notification card is shown at the top of the TV App menu after a
new TvInput is installed, to take the user directly to the Setup:</p>
+<figure id="new-channel-sources-available">
<img src="images/LiveChannels_set_up_sources.png" alt="Notification that shows new channel sources are available.">
-<p class="img-caption"><strong>Figure 12.</strong> Notification that shows new channel
-sources are available.</p>
+<figcaption><strong>Figure 12.</strong> Notification that shows new channel
+sources are available.</figcaption>
+</figure>
<p>If the user takes action through the notification, they can select to set up their
sources as seen in Figure 10.</p>
@@ -451,11 +486,16 @@ for developer expectations in this area.</p>
<p>Device manufacturers may provide a UI to hide certain channels and
enable users to manage their own EPGs. Live TV includes this facility.</p>
+<figure id="open-channel-list">
<img src="images/LiveChannels_channel_list.png" alt="Open the channel list in Settings.">
-<p class="img-caption"><strong>Figure 13.</strong> Open the channel list in <strong>Settings</strong>.</p>
+<figcaption><strong>Figure 13.</strong> Open the channel list in
+<strong>Settings</strong>.</figcaption>
+</figure> <br />
+<figure id="customize-channel-list">
<img src="images/LiveChannels_customize_channel-list.png" alt="Customize your channel list.">
-<p class="img-caption"><strong>Figure 14.</strong> Customize your channel list.</p>
+<figcaption><strong>Figure 14.</strong> Customize your channel list.</figcaption>
+</figure>
<h4 id=epg>EPG</h4>
@@ -466,8 +506,8 @@ TV devices.</p>
<p>Channels from third-party inputs must be presented as part of the device's
standard live TV experience EPG. Visual separation or separate categories for
-third-party channels can be used (see the TV App section of the Android CDD)—what's key
-is that users are able to find the channels they have installed. </p>
+third-party channels can be used (see the TV App section of the Android CDD)
+—what's key is that users are able to find the channels they have installed.</p>
<h4 id=search>Search</h4>
@@ -475,7 +515,7 @@ is that users are able to find the channels they have installed. </p>
<p>Manufacturers must implement the TV App to include search results for global
search requests in order to ensure the best user experience. Live TV provides an
implementation (see
-<a href="https://android.googlesource.com/platform/packages/apps/TV/+/android-live-tv/src/com/android/tv/search/TvProviderSearch.java">com.android.tv.search.TvProviderSearch</a>)
+<a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/search/TvProviderSearch.java">com.android.tv.search.TvProviderSearch</a>)
which provides results from third-party inputs (required for platform
compatibility) as well as built-in inputs.</p>
@@ -493,10 +533,10 @@ For TV Inputs that support time shifting, the TV App needs to display playback
controls.
</p>
-<p>
+<figure id="playback-controls">
<img src="images/TIF_timeshift.png" alt="Playback controls">
-</p>
-<p class="img-caption"><strong>Figure 15.</strong> Playback controls</p>
+<figcaption><strong>Figure 15.</strong> Playback controls</figcaption>
+</figure>
<h4 id="dvr">DVR</h4>
<p>
@@ -513,8 +553,8 @@ aftermarket DVR systems that can be plugged into an Android TV device.
</p>
<p>
In addition to recording live content, the TV App also handles resource
-conflict. For example, if the device has two tuners, it can record two programs at
-the same time. If the user asks to record three, the TV App must handle the
+conflict. For example, if the device has two tuners, it can record two programs
+at the same time. If the user asks to record three, the TV App must handle the
conflict and should either surface a notification or request that the user
schedules a priority for these requests.
</p>
@@ -527,27 +567,28 @@ episode.
See the following diagram for a view into a possible DVR implementation in
Android TV.
</p>
-<p>
+<figure id="dvr-in-android-tv">
<img src="images/TV_Input_DVR.png" alt="Digital video recording in Android TV">
-</p>
-<p class="img-caption"><strong>Figure 16.</strong> Digital video recording in Android TV</p>
+<figcaption><strong>Figure 16.</strong> Digital video recording
+in Android TV</figcaption>
+</figure> <br />
<ol>
<li>The TV Input Service tells the TV App how many tuners are available so that
-the TV App can handle possible resource conflict.
-<li>The TV App receives a user-initiated request to record a TV program.
-<li>The TV App stores the recording schedule in its internal database.
+the TV App can handle possible resource conflict.</li>
+<li>The TV App receives a user-initiated request to record a TV program.</li>
+<li>The TV App stores the recording schedule in its internal database.</li>
<li>When it’s time to record, the TV App passes a request to tune to the channel
-associated with the recording.
+associated with the recording.</li>
<li>The TV Input Service receives this request, responds with whether or not
-there are appropriate resources, and tunes to the channel.
+there are appropriate resources, and tunes to the channel.</li>
<li>Then the TV App passes a request to start recording to
-the TV Input Manger.
-<li>The TV Input Service receives this request and starts recording.
+the TV Input Manager.</li>
+<li>The TV Input Service receives this request and starts recording.</li>
<li>The TV Input Service stores the actual video data in its storage, which can
-be external storage or cloud storage.
+be external storage or cloud storage.</li>
<li>When it's time to finish the recording, the TV App passes the stop recording
-request to the TV Input Manager.
+request to the TV Input Manager.</li>
<li>Once the TV Input Service receives the request, it stops the recording and
adds its associated metadata to the TV Provider so that the TV App can show the
recording to users when requested.</li>
@@ -564,21 +605,21 @@ Recording</a> article.
<ul>
- <li> The <a href="/compatibility/android-cdd.pdf">Android CDD</a>
- and documented developer APIs are the definitive references.
- <li> CTS Verifier exercises the APIs as part of the compatibility testing program.
-Running this against Live TV may be a useful way to see the EPG,
-Search, Parental Control, and other requirements in the context of third-party
-inputs.
- <li> See <a href="http://developer.android.com/training/tv/tif/tvinput.html#setup">Define Your
+ <li>The <a href="/compatibility/android-cdd.pdf">Android CDD</a>
+ and documented developer APIs are the definitive references.</li>
+ <li>CTS Verifier exercises the APIs as part of the compatibility testing
+ program. Running this against Live TV may be a useful way to see the EPG,
+ Search, Parental Control, and other requirements in the context of third-party
+ inputs.</li>
+ <li>See <a href="http://developer.android.com/training/tv/tif/tvinput.html#setup">Define Your
TV Input Service</a>
- for developer expectations in this area.
+ for developer expectations in this area.</li>
</ul>
<h2 id="parental_control">Parental Control</h2>
-<p>Parental control lets a user block undesired channels and programs, but bypass
-the block by entering a PIN code.</p>
+<p>Parental control lets a user block undesired channels and programs, but
+bypass the block by entering a PIN code.</p>
<p>Responsibility for parental control functionality is shared amongst the TV App,
TV Input Manager service, TV Provider, and TV Input.</p>
@@ -630,8 +671,8 @@ parental control, including for any custom ratings registered by specific apps.<
is notified by a TV Input that the current content is blocked or when the user
attempts to view a blocked channel.</p>
-<p>The TV App does not directly store the parental control settings. When the user
-changes the parental control settings, every blocked
+<p>The TV App does not directly store the parental control settings. When the
+user changes the parental control settings, every blocked
<code>TvContentRating</code> is stored by the TV Input Manager, and blocked
channels are stored by the TV Provider.</p>
@@ -644,9 +685,9 @@ the parental control settings.</p>
<li>Exercise the CTS Verifier parental controls test against the reference
Live TV application for a demonstration of the compatibility requirements.</li>
<li>Use the Live TV app as reference for their own TV App: in particular see
- the <a href="https://android.googlesource.com/platform/packages/apps/TV/+/android-live-tv/src/com/android/tv/parental/ContentRatingsManager.java">
+ the <a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/parental/ContentRatingsManager.java">
ContentRatingsManager</a> and
- <a href="https://android.googlesource.com/platform/packages/apps/TV/+/android-live-tv-l-mr1/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java">
+ <a href="https://android.googlesource.com/platform/packages/apps/TV/+/master/src/com/android/tv/ui/sidepanel/parentalcontrols/RatingSystemsFragment.java">
RatingSystemsFragment</a> source, and how they handle custom ratings.</li>
</ul>
@@ -659,33 +700,35 @@ speed setup and allow distant control over various TV Inputs via the central TV
App. For instance, it may switch inputs, power up or down devices, and more.</p>
<p>The Android TIF implements HDMI-CEC as the HDMI Control Service so that
-device manufacturers merely need to develop low-level drivers that interact with the
-lightweight Android TV HAL, skipping more complex business logic. In providing
-a standard implementation, Android seeks to mitigate compatibility issues by
-reducing fragmented implementations and selective feature support. The HDMI
-Control Service uses the existing Android services, including input and power.</p>
+device manufacturers merely need to develop low-level drivers that interact with
+the lightweight Android TV HAL, skipping more complex business logic. In
+providing a standard implementation, Android seeks to mitigate compatibility
+issues by reducing fragmented implementations and selective feature support. The
+HDMI Control Service uses the existing Android services, including input and power.</p>
<p>This means existing HDMI-CEC implementations will need to be redesigned to
interoperate with the Android TIF. We recommend the hardware platform contain a
microprocessor to receive CEC power on and other commands.</p>
+<figure id="cec-integration">
<img src="images/TV_App_CEC_integration.png" alt="CEC integration on Android TV">
-<p class="img-caption"><strong>Figure 17.</strong> CEC integration on Android TV</p>
+<figcaption><strong>Figure 17.</strong> CEC integration on Android TV</figcaption>
+</figure> <br />
<ol>
- <li> The CEC bus receives a command from the currently active source to switch to a
-different source.
- <li> The driver passes the command to the HDMI-CEC HAL.
- <li> The HAL notifies all <code>ActiveSourceChangeListeners</code>.
- <li> THe HDMI Control Service is notified of source change via <code>ActiveSourceChangeListener</code>.
- <li> The TV Input Manager service generates an intent for the TV App to switch the
-source.
- <li> The TV App then creates a TV Input Manager Session for the TV Input being
-switched to and calls <code>setMain</code> on that session.
- <li> The TV Input Manager Session passes this information on to the HDMI TV Input.
- <li> The HDMI TV input requests to set sideband surface.
- <li> The TV Input Manager Service generates a corresponding routing control command
-back to HDMI Control Service when the surface is set.
+ <li>The CEC bus receives a command from the currently active source to switch
+ to a different source.</li>
+ <li>The driver passes the command to the HDMI-CEC HAL.</li>
+ <li>The HAL notifies all <code>ActiveSourceChangeListeners</code>.</li>
+ <li>THe HDMI Control Service is notified of source change via <code>ActiveSourceChangeListener</code>.</li>
+ <li>The TV Input Manager service generates an intent for the TV App to switch
+ the source.</li>
+ <li>The TV App then creates a TV Input Manager Session for the TV Input being
+switched to and calls <code>setMain</code> on that session.</li>
+ <li>The TV Input Manager Session passes this information on to the HDMI TV Input.</li>
+ <li>The HDMI TV input requests to set sideband surface.</li>
+ <li>The TV Input Manager Service generates a corresponding routing control
+ command back to HDMI Control Service when the surface is set.</li>
</ol>
<h2 id="tv_integration_guidelines">TV integration guidelines</h2>
@@ -697,30 +740,29 @@ HbbTV, and more), manufacturers are expected to supply their own solutions for
the broadcast app, for example:</p>
<ul>
- <li> MHEG: native stack
- <li> Teletext: native stack
- <li> HbbTV: HbbTV solution from Vewd Software
+ <li>MHEG: native stack</li>
+ <li>Teletext: native stack</li>
+ <li>HbbTV: HbbTV solution from Vewd Software</li>
</ul>
-<p>In the Android L release, Android TV expects device manufacturers to use systems
-integrators or the Android solutions for regional TV stacks, pass the surface
-to TV software stacks, or pass the necessary key code to interact with legacy
-stacks.</p>
+<p>In the Android L release, Android TV expects device manufacturers to use
+systems integrators or the Android solutions for regional TV stacks, pass the
+surface to TV software stacks, or pass the necessary key code to interact with
+legacy stacks.</p>
<p>Here’s how the broadcast app and TV App interact:</p>
<ol>
- <li>The TV App is in focus, receiving all keys.
- <li>The TV App passes keys (e.g. Red button) to the TV Input device.
- <li>The TV Input device internally integrates with legacy TV stack.
+ <li>The TV App is in focus, receiving all keys.</li>
+ <li>The TV App passes keys (e.g. Red button) to the TV Input device.</li>
+ <li>The TV Input device internally integrates with legacy TV stack.</li>
<li>On receiving an activation keycode (e.g. Red button), the TV Input device
-activates broadcast apps.
- <li>A broadcast app takes focus in the TV App and handles user actions.
+activates broadcast apps.</li>
+ <li>A broadcast app takes focus in the TV App and handles user actions.</li>
</ol>
<p>For voice search/recommendation, the broadcast app may support In-app search
for voice search.</p>
-
</body>
</html>
diff --git a/en/google26d1c2238d4959e3.html b/en/google26d1c2238d4959e3.html
deleted file mode 100644
index 007742aa..00000000
--- a/en/google26d1c2238d4959e3.html
+++ /dev/null
@@ -1 +0,0 @@
-google-site-verification: google26d1c2238d4959e3.html \ No newline at end of file
diff --git a/en/reference/_index.yaml b/en/reference/_index.yaml
new file mode 100644
index 00000000..354212dd
--- /dev/null
+++ b/en/reference/_index.yaml
@@ -0,0 +1,57 @@
+book_path: /_book.yaml
+project_path: /_project.yaml
+description: ' '
+landing_page:
+ rows:
+ - columns:
+ - items:
+ - heading: HIDL
+ description: >
+ The HAL Interface Description Language (HIDL) specifies the
+ interface between a HAL and its users. It defines types and method
+ calls, collected into interfaces and packages. HIDL is a system for
+ communicating between codebases that may be compiled independently
+ and is intended for inter-process communication.
+ path: /reference/hidl/
+ icon:
+ icon_name: settings_input_component
+ background: theme
+ foreground: white
+ buttons:
+ - label: Guides
+ path: /devices/architecture/hidl/
+ - label: Reference
+ path: /reference/hidl/
+ - heading: Hardware Abstraction Layer (legacy)
+ description: >
+ A HAL defines a standard interface for hardware vendors to implement,
+ which enables Android to be agnostic about lower-level driver
+ implementations. Using a HAL allows you to implement functionality
+ without affecting or modifying the higher level system.
+ path: /reference/hal/
+ icon:
+ icon_name: developer_board
+ background: theme
+ foreground: white
+ buttons:
+ - label: Guides
+ path: /devices/architecture/hal
+ - label: Reference
+ path: /reference/hal/
+ - items:
+ - heading: Trade Federation
+ description: >
+ A continuous test framework designed for running tests on Android
+ devices. It's a Java application which runs on a host computer, and
+ communicates to one or more Android devices using ddmlib over adb.
+ path: /reference/tradefed/classes
+ icon:
+ icon_name: developer_mode
+ background: theme
+ foreground: white
+ buttons:
+ - label: Guides
+ path: /devices/tech/test_infra/tradefed/
+ - label: Reference
+ path: /reference/tradefed/classes
+
diff --git a/en/reference/index.html b/en/reference/index.html
deleted file mode 100644
index 29f1a279..00000000
--- a/en/reference/index.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<html devsite>
- <head>
- <title>Reference</title>
- <meta name="project_path" value="/_project.yaml">
- <meta name="book_path" value="/_book.yaml">
- <meta name="full_width" value="true">
- <meta name="hide_page_heading" value="true">
- <meta name="hide_last_updated" value="true">
- <link rel="stylesheet" href="/reference/assets/css/landing.css">
- </head>
- <body>
- <section class="sac-landing-row sac-landing-row-2-up">
- <div class="sac-landing-row-column">
-
- <div class="sac-landing-row-item sac-landing-row-item-no-image"><!--item begin-->
- <a href="/reference/hidl/">
- <div class="sac-landing-row-item-icon-container">
- <div class="sac-landing-row-item-icon-white material-icons">settings_input_component</div>
- </div>
- </a>
- <div class="sac-landing-row-item-description sac-landing-row-item-icon-description">
- <a href="/reference/hidl/">
- <h3 id="hidl" class="hide-from-toc">HIDL</h3>
- </a>
- The HAL Interface Description Language (HIDL) specifies the
- interface between a HAL and its users. It defines types and method
- calls, collected into interfaces and packages. HIDL is a system for
- communicating between codebases that may be compiled independently
- and is intended for inter-process communication. See the
- <a href="/devices/architecture/hidl">HIDL guides</a>.
- </div>
- </div><!--item end-->
-
- <div class="sac-landing-row-item sac-landing-row-item-no-image"><!--item begin-->
- <a href="/reference/hal/">
- <div class="sac-landing-row-item-icon-container">
- <div class="sac-landing-row-item-icon-white material-icons">developer_board</div>
- </div>
- </a>
- <div class="sac-landing-row-item-description sac-landing-row-item-icon-description">
- <a href="/reference/hal/">
- <h3 id="hardware-abstraction-layer" class="hide-from-toc">Hardware Abstraction Layer (legacy)</h3>
- </a>
- A HAL defines a standard interface for hardware vendors to implement,
- which enables Android to be agnostic about lower-level driver
- implementations. Using a HAL allows you to implement functionality
- without affecting or modifying the higher level system. For an
- overview, see the <a href="/devices/architecture/hal">HAL guide</a>.
- </div>
- </div><!--item end-->
-
- </div><!--newline here breaks formatting--><div class="sac-landing-row-column">
-
- <div class="sac-landing-row-item sac-landing-row-item-no-image"><!--item begin-->
- <a href="/reference/tradefed/classes">
- <div class="sac-landing-row-item-icon-container">
- <div class="sac-landing-row-item-icon-white material-icons">developer_mode</div>
- </div>
- </a>
- <div class="sac-landing-row-item-description sac-landing-row-item-icon-description">
- <a href="/reference/tradefed/classes">
- <h3 id="trade-federation" class="hide-from-toc">Trade Federation</h3>
- </a>
- A continuous test framework designed for running tests on Android
- devices. It's a Java application which runs on a host computer, and
- communicates to one or more Android devices using ddmlib over adb.
- For details, see the
- <a href="/devices/tech/test_infra/tradefed/">Trade Federation Overview</a>.
- </div>
- </div><!--item end-->
-
- </div>
- </section>
- </body>
-</html>
diff --git a/en/security/bulletin/2018-06-01.html b/en/security/bulletin/2018-06-01.html
index 29ba106a..fd39f367 100644
--- a/en/security/bulletin/2018-06-01.html
+++ b/en/security/bulletin/2018-06-01.html
@@ -907,8 +907,8 @@ column mean?</strong>
<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>.
+in the latest binary drivers for Pixel&hairsp;/&hairsp;Nexus devices available from the
+<a href="https://developers.google.com/android/drivers">Google Developer site</a>.
</p>
<p>
<strong>6. Why are security vulnerabilities split between this bulletin and
diff --git a/en/security/bulletin/2018.html b/en/security/bulletin/2018.html
index 61c67635..5fc185d6 100644
--- a/en/security/bulletin/2018.html
+++ b/en/security/bulletin/2018.html
@@ -38,15 +38,13 @@ of all bulletins, see the <a href="/security/bulletin/index.html">Android Securi
</tr>
<tr>
<td><a href="/security/bulletin/2018-06-01.html">June 2018</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/2018-06-01.html">English</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
</td>
<td>June 4, 2018</td>
<td>2018-06-01<br>
diff --git a/en/security/bulletin/_translation.yaml b/en/security/bulletin/_translation.yaml
index 37f58a17..aaaf52d8 100644
--- a/en/security/bulletin/_translation.yaml
+++ b/en/security/bulletin/_translation.yaml
@@ -48,6 +48,7 @@ cc:
- daroberts@google.com
- sac-doc-leads+translation@google.com
- shaileshs@google.com
+- stayres@google.com
reviewer:
- daroberts
product: Android
diff --git a/en/security/bulletin/index.html b/en/security/bulletin/index.html
index 27bd60a1..17d6cc2e 100644
--- a/en/security/bulletin/index.html
+++ b/en/security/bulletin/index.html
@@ -70,15 +70,13 @@ Android Open Source Project (AOSP), the upstream Linux kernel, and system-on-chi
</tr>
<tr>
<td><a href="/security/bulletin/2018-06-01.html">June 2018</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/2018-06-01.html">English</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
<a href="/security/bulletin/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
</td>
<td>June 4, 2018</td>
<td>2018-06-01<br>
diff --git a/en/security/bulletin/pixel/2018-01-01.html b/en/security/bulletin/pixel/2018-01-01.html
index e956aba6..4bb34996 100644
--- a/en/security/bulletin/pixel/2018-01-01.html
+++ b/en/security/bulletin/pixel/2018-01-01.html
@@ -663,7 +663,7 @@ QC-CR#2078342</a></td>
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.
+and improvements.
</p>
<table>
<tr>
diff --git a/en/security/bulletin/pixel/2018-02-01.html b/en/security/bulletin/pixel/2018-02-01.html
index ebd55505..4ef0f982 100644
--- a/en/security/bulletin/pixel/2018-02-01.html
+++ b/en/security/bulletin/pixel/2018-02-01.html
@@ -428,7 +428,7 @@ QC-CR#2003798</a></td>
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.
+improvements; and affected devices.
</p>
<table>
diff --git a/en/security/bulletin/pixel/2018-03-01.html b/en/security/bulletin/pixel/2018-03-01.html
index 80184531..2752b821 100644
--- a/en/security/bulletin/pixel/2018-03-01.html
+++ b/en/security/bulletin/pixel/2018-03-01.html
@@ -550,7 +550,7 @@ QC-CR#2119401</a></td>
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.
+improvements; and affected devices.
</p>
<table>
diff --git a/en/security/bulletin/pixel/2018-04-01.html b/en/security/bulletin/pixel/2018-04-01.html
index fa87a16d..7ac00b7c 100644
--- a/en/security/bulletin/pixel/2018-04-01.html
+++ b/en/security/bulletin/pixel/2018-04-01.html
@@ -536,7 +536,7 @@ QC-CR#2098332</a></td>
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.
+improvements; and affected devices.
</p>
<table>
diff --git a/en/security/bulletin/pixel/2018-05-01.html b/en/security/bulletin/pixel/2018-05-01.html
index b0ccb63c..5748037a 100644
--- a/en/security/bulletin/pixel/2018-05-01.html
+++ b/en/security/bulletin/pixel/2018-05-01.html
@@ -469,7 +469,7 @@ QC-CR#2149720</a></td>
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.
+improvements; and affected devices.
</p>
<table>
<tr>
diff --git a/en/security/bulletin/pixel/2018-06-01.html b/en/security/bulletin/pixel/2018-06-01.html
index 8e27697c..7a5e6145 100644
--- a/en/security/bulletin/pixel/2018-06-01.html
+++ b/en/security/bulletin/pixel/2018-06-01.html
@@ -711,9 +711,9 @@ QC-CR#2062648</a></td>
<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.
+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>
@@ -751,7 +751,7 @@ these issues is provided directly by Qualcomm.
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.
+improvements; and affected devices.
</p>
diff --git a/en/security/bulletin/pixel/2018.html b/en/security/bulletin/pixel/2018.html
index cd9ef382..f78661eb 100644
--- a/en/security/bulletin/pixel/2018.html
+++ b/en/security/bulletin/pixel/2018.html
@@ -40,15 +40,13 @@ Bulletins</a> homepage.</p>
</tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-06-01.html">June 2018</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/pixel/2018-06-01.html">English</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
</td>
<td>June 4, 2018</td>
<td>2018-06-05</td>
diff --git a/en/security/bulletin/pixel/index.html b/en/security/bulletin/pixel/index.html
index c00d7058..3d7100a8 100644
--- a/en/security/bulletin/pixel/index.html
+++ b/en/security/bulletin/pixel/index.html
@@ -60,15 +60,13 @@ AOSP 24&ndash;48 hours after the Pixel&hairsp;/&hairsp;Nexus bulletin is release
</tr>
<tr>
<td><a href="/security/bulletin/pixel/2018-06-01.html">June 2018</a></td>
- <td>Coming soon
- <!--
+ <td>
<a href="/security/bulletin/pixel/2018-06-01.html">English</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ja">日本語</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ko">한국어</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=ru">ру́сский</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-cn">中文&nbsp;(中国)</a>&nbsp;/
<a href="/security/bulletin/pixel/2018-06-01.html?hl=zh-tw">中文&nbsp;(台灣)</a>
- -->
</td>
<td>June 4, 2018</td>
<td>2018-06-05</td>
diff --git a/en/security/overview/acknowledgements.html b/en/security/overview/acknowledgements.html
index efd56c97..a3934fee 100644
--- a/en/security/overview/acknowledgements.html
+++ b/en/security/overview/acknowledgements.html
@@ -46,7 +46,7 @@ acknowledgements were listed together.</p>
<th>CVEs</th>
</tr>
<tr>
- <td>Baozeng Ding (丁保增) (<a href="https://twitter.com/sploving">@sploving</a>),
+ <td>Baozeng Ding (丁保增) (<a href="https://twitter.com/sploving1">@sploving1</a>),
Pandora Lab of Ali Security
</td>
<td>CVE-2018-5857, CVE-2018-9389
diff --git a/en/security/overview/updates-resources.html b/en/security/overview/updates-resources.html
index 508747fe..03a0a4ef 100644
--- a/en/security/overview/updates-resources.html
+++ b/en/security/overview/updates-resources.html
@@ -281,9 +281,8 @@ Android users as an update from Google Play.</p>
<p>When a security vulnerability in AOSP is fixed in an Android Security
Bulletin, we'll notify Android partners of issue details and provide patches.
-The Android security team currently provides patches for Android versions 4.4
-(KitKat) and above. This list of backport-supported versions changes with each
-new Android release.</p>
+The list of backport-supported versions changes with each new Android release.
+Contact your device manufacturer for the list of supported devices.</p>
<h2 id="releasing_code_to_aosp">Releasing code to AOSP</h2>
@@ -298,7 +297,7 @@ OTA update packages. These updates may come from the OEM who
produced the device or the carrier who provides service to the device. Google
Nexus device updates come from the Google Nexus team after going through a
carrier technical acceptance (TA) testing procedure. Google also publishes <a
-href="https://developers.google.com/android/nexus/images">Nexus factory
+href="https://developers.google.com/android/images">Nexus and Pixel factory
images</a> that can be side-loaded to devices.</p>
<h2 id="updating_google_services">Updating Google services</h2>
@@ -322,7 +321,8 @@ sites. Good places to start:<br>
<a href="https://developer.android.com/training/articles/security-tips.html">https://developer.android.com/training/articles/security-tips.html</a></p>
<h3 id="reports">Reports</h3>
-<p>Sometimes the Android Security team publishes reports or whitepapers. Here are some of the most recent.</p>
+<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>
@@ -339,7 +339,8 @@ sites. Good places to start:<br>
</ul>
<h3 id=slides>Presentations</h3>
-<p>The Android Security team presents at various conferences and talks. Here are some of their slides:</p>
+<p>The Android Security team presents at various conferences and talks.
+Here are some of their slides:</p>
<ul>
<li><a href="/security/reports/Android-Bootcamp-2016-Verified-Boot-and-Encryption.pdf">
Verified boot and encryption</a></li>
diff --git a/en/security/verifiedboot/verified-boot.html b/en/security/verifiedboot/verified-boot.html
index 07b43d68..dada3c46 100644
--- a/en/security/verifiedboot/verified-boot.html
+++ b/en/security/verifiedboot/verified-boot.html
@@ -433,7 +433,8 @@ type of device.</p>
<p>The signature on an Android verifiable boot image is an ASN.1 DER-encoded
message, which can be parsed with a decoder similar to the one found at: <a
-href="https://android.googlesource.com/platform/bootable/recovery/+/f4a6ab27b335b69fbc419a9c1ef263004b561265/asn1_decoder.cpp">platform/bootable/recovery/asn1_decoder.cpp</a><br/>
+href="https://android.googlesource.com/platform/bootable/recovery/+/master/asn1_decoder.cpp"
+class="external"><code>platform/bootable/recovery/asn1_decoder.cpp</code></a><br/>
The message format itself is as follows:</p>
<pre class="devsite-click-to-copy">
diff --git a/en/setup/contribute/index.html b/en/setup/contribute/index.html
index 829361af..9c1d5f3e 100644
--- a/en/setup/contribute/index.html
+++ b/en/setup/contribute/index.html
@@ -51,9 +51,10 @@ 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.
+<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>.
+<a href="https://android-review.googlesource.com/">Gerrit server</a>. Note, some portions of
+Android require you <a href="submit-patches.html#upstream-projects">submit patches to upstream projects</a>.
If you need help along the way, you can join our <a href="../community.html">discussion groups</a>.</p>
</body>
diff --git a/en/setup/develop/index.html b/en/setup/develop/index.html
index 5ecf6dbd..a2c13acf 100644
--- a/en/setup/develop/index.html
+++ b/en/setup/develop/index.html
@@ -91,8 +91,6 @@
Android development involves the following basic workflow:
</p>
-<img src="../images/git_workflow.png" alt="basic workflow diagram" />
- <figcaption><strong>Figure 1.</strong> Basic Android workflow</figcaption>
<ol>
<li>Start a new topic branch using <code>repo start</code>.
</li>
@@ -324,10 +322,6 @@ repo diff
<code class="devsite-terminal">git diff --cached</code>
</pre>
-<img src="../images/git_diff.png" alt="diff vs diff-cached" />
- <figcaption><strong>Figure 2.</strong> Uncommitted vs. committed edits.
- </figcaption>
-
<h3 id="committing-changes">Committing changes</h3>
<p>
diff --git a/en/setup/images/git_diff.png b/en/setup/images/git_diff.png
deleted file mode 100644
index 09c760ea..00000000
--- a/en/setup/images/git_diff.png
+++ /dev/null
Binary files differ
diff --git a/en/setup/images/git_workflow.png b/en/setup/images/git_workflow.png
deleted file mode 100644
index 18ff0f56..00000000
--- a/en/setup/images/git_workflow.png
+++ /dev/null
Binary files differ
diff --git a/en/setup/start/site-updates.html b/en/setup/start/site-updates.html
index 2f7df35e..b6eba9a1 100644
--- a/en/setup/start/site-updates.html
+++ b/en/setup/start/site-updates.html
@@ -572,7 +572,7 @@
<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
+ <a href="https://android.googlesource.com/platform/external/clang/+/master/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>
@@ -678,7 +678,7 @@ cts-tradefed run cts -m CtsLibcoreOkHttpTestCases</pre>
(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>
+ <a href="https://android.googlesource.com/platform/frameworks/base/+/master/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>.