This page describes the
contact methods for inquiries regarding the Android compatibility program,
including the Compatibility Definition Document (CDD) and Compatibility Test
-Suite (CTS). See the Community
+Suite (CTS). See the Community
page for communication channels regarding other topics.
Follow the instructions
to get and build the Android source code but specify a particular CTS branch
name, for example-b android-5.0_r2, when issuing the repo
init command. This assures your CTS changes will be included in the
@@ -41,7 +41,7 @@ for TARGET_PRODUCT to build for different architectures:
cd /path/to/android/rootmake cts -j32 TARGET_PRODUCT=aosp_arm64cts-tradefed
-
+
At the cts-tf console, enter e.g.:
@@ -232,7 +232,7 @@ include $(call all-makefiles-under,$(LOCAL_PATH))
remove tests annotated with "BrokenTest" or "KnownFailure."
Follow the Submitting Patches workflow
to contribute changes to CTS. A reviewer
will be assigned to your change, and your change should be reviewed shortly!
@@ -244,6 +244,7 @@ will be assigned to your change, and your change should be reviewed shortly!
updated from time to time as CTS for the given Android version matures.
+
Version
Branch
diff --git a/en/compatibility/cts/downloads.html b/en/compatibility/cts/downloads.html
index 0c022d44..d6741f03 100644
--- a/en/compatibility/cts/downloads.html
+++ b/en/compatibility/cts/downloads.html
@@ -29,60 +29,60 @@ updated, new versions are added to this page. CTS versions are denoted by
R<number> in the link name.
Android 8.0
-
Android 8.0 is the release of the development milestone code-named Oreo.
+
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_r3' tag in the open-source tree.
+'android-cts-8.0_r4' tag in the open-source tree.
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-8.0_r4-linux_x86-x86.zip">Android
+8.0 R4 CTS Verifier - x86
Android 7.1
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_r11' tag in the open-source tree.
+'android-cts-7.1_r12' tag in the open-source tree.
+href="https://dl.google.com/dl/android/cts/android-cts-verifier-7.1_r12-linux_x86-x86.zip">Android
+7.1 R12 CTS Verifier - x86
Android 7.0
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_r15' tag in the open-source tree.
+'android-cts-7.0_r16' tag in the open-source tree.
This page provides the steps to properly test the compatibility of your rotation
-vector sensor implementation. This test should be run when the device declares
-the TYPE_ROTATION_VECTOR composite sensor feature. See this rotation vector
+sensor implementation. This test should be run when the device declares the
+TYPE_ROTATION_VECTOR composite sensor feature. See this video tutorial for
additional details.
diff --git a/en/compatibility/cts/setup.html b/en/compatibility/cts/setup.html
index 16cc43a0..cb235b63 100644
--- a/en/compatibility/cts/setup.html
+++ b/en/compatibility/cts/setup.html
@@ -40,6 +40,12 @@ be of any kind, ranging from a satellite simulator, to a GPS/GNSS repeater of
outdoor signals, simply to placement of the DUT close enough to a window such that
it can directly receive enough GPS/GNSS signal.
+
+
Wi-Fi and IPv6
CTS tests require a Wi-Fi network that supports IPv6, can treat the Device
Under Test (DUT) as an isolated client, and has an internet
@@ -56,7 +62,8 @@ href="http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers">list of IPv6
tunnel brokers.
Desktop machine setup
-
CTS currently supports 64-bit Linux and Mac OS host machines.
+
ADB and AAPT
Before running the CTS, make sure you have recent versions of both
8u45 or newer.
Caution: When used to confirm Android
diff --git a/en/compatibility/cts/usb-audio.html b/en/compatibility/cts/usb-audio.html
index b81a8909..4ef581d6 100644
--- a/en/compatibility/cts/usb-audio.html
+++ b/en/compatibility/cts/usb-audio.html
@@ -23,9 +23,9 @@
Several Android Compatibility Test Suite (CTS)
-tests for Android USB audio
-require human intervention and the physical connection of USB audio
-peripherals. For these, additional CTS Verifier tests have been implemented.
+tests for Android USB audio require human
+intervention and the physical connection of USB audio peripherals. For these,
+additional CTS Verifier tests have been implemented.
The requirements and protocols for these tests are explained in this document.
diff --git a/en/compatibility/index.html b/en/compatibility/index.html
index d053a587..a9051705 100644
--- a/en/compatibility/index.html
+++ b/en/compatibility/index.html
@@ -70,7 +70,7 @@ free, and it's easy
To build an Android-compatible mobile device, follow this three-step
process:
Comply with the Android Compatibility Definition Document (CDD)
diff --git a/en/devices/accessories/headset/usb-headset-spec.html b/en/devices/accessories/headset/usb-headset-spec.html
index c83f7eac..3279eee1 100644
--- a/en/devices/accessories/headset/usb-headset-spec.html
+++ b/en/devices/accessories/headset/usb-headset-spec.html
@@ -28,9 +28,8 @@ This documentation specifies USB headset buttons behavior to function uniformly
across the Android ecosystem. Device manufacturers should also consult the
USB
Digital Audio page for more information about USB implementation on Android
-and the Android
-Compatibility Definition Document (CDD) for requirements related to Android
-devices.
+and the Android Compatibility
+Definition Document (CDD) for requirements related to Android devices.
There are also specifications for
3.5 mm headsets for accessory manufacturers and
diff --git a/en/devices/architecture/dto/implement.html b/en/devices/architecture/dto/implement.html
index 5d10a92c..52906fc8 100644
--- a/en/devices/architecture/dto/implement.html
+++ b/en/devices/architecture/dto/implement.html
@@ -108,8 +108,8 @@ top of the main DT blob. Typically, 8 MB is more than enough and allows room to
grow in the future if required.
For devices that support
-seamless
-(A/B) updates, A/B the main DT and overlay DT partitions:
diff --git a/en/devices/architecture/hidl/fmq.html b/en/devices/architecture/hidl/fmq.html
index 13a79610..db4055b5 100644
--- a/en/devices/architecture/hidl/fmq.html
+++ b/en/devices/architecture/hidl/fmq.html
@@ -353,17 +353,17 @@ const MemRegion& getSecondRegion(); // get a reference to the second MemRegi
MessageQueueSync::MemTransaction tx;
if (mQueue->beginRead(dataLen, &tx)) {
-auto first = tx.getFirstRegion();
-auto second = tx.getSecondRegion();
+ auto first = tx.getFirstRegion();
+ auto second = tx.getSecondRegion();
-foo(first.getAddress(), first.getLength()); // method that performs the data write
-foo(second.getAddress(), second.getLength()); // method that performs the data write
+ foo(first.getAddress(), first.getLength()); // method that performs the data write
+ foo(second.getAddress(), second.getLength()); // method that performs the data write
-if(commitWrite(dataLen) == false) {
-//report error
-}
+ if(commitWrite(dataLen) == false) {
+ // report error
+ }
} else {
-//report error
+ // report error
}
diff --git a/en/devices/architecture/hidl/interfaces.html b/en/devices/architecture/hidl/interfaces.html
index a044abde..6fc1cb1b 100644
--- a/en/devices/architecture/hidl/interfaces.html
+++ b/en/devices/architecture/hidl/interfaces.html
@@ -75,7 +75,7 @@ interface in the package.
Interface definition
Aside from types.hal, every other .hal file defines
-an interface. For example, an interface is typically defined as follows:
+an interface. An interface is typically defined as follows:
interface IBar extends IFoo { // IFoo is another interface
@@ -101,7 +101,7 @@ include:
interfaceDescriptor
notifySyspropsChanged
linkToDeath
-
unlinkToDeath
unlinkToDeath
setHALInstrumentation
getDebugInfo
debug
@@ -136,13 +136,13 @@ For fully-qualified values, the following import cases are supported:
Whole-package imports. If the value is a package name and a
version (syntax described below), then the entire package is imported into the
importing entity.
-
Partial imports.
+
Partial imports. If the value is:
-
If the value is an interface, the package's types.hal and that
-interface are imported into the importing entity.
-
If the value is an UDT defined in types.hal, then only that UDT
-is imported into the importing entity (other types in types.hal are
-not imported).
+
An interface, the package's types.hal and that interface are
+imported into the importing entity.
+
A UDT defined in types.hal, then only that UDT is imported into
+the importing entity (other types in types.hal are not imported).
+
Types-only imports. If the value uses the syntax of a
partial import described above, but with the keyword types instead
@@ -208,7 +208,7 @@ be registered under the base HAL name and version, and under the extension's
Versions are expressed in two integers, major.minor.
Major versions are not backwards compatible. Incrementing
-the major version number resets the minor version to 0.
+the major version number resets the minor version number to 0.
Minor versions are backwards compatible. Incrementing the
minor number indicates the newer version is fully backward compatible with the
previous version. New data structures and methods can be added, but no existing
@@ -219,10 +219,98 @@ data structures or method signatures may be changed.
can be present on a device simultaneously. While multiple minor versions can
also be present on a device, as minor versions are backwards compatible no
reason exists to support more than the latest minor version for each major
-version.
-
-
For more details on versioning and vendor extensions, see
+version. For more details on versioning and vendor extensions, see
HIDL Versioning.
+
Interface layout summary
+
This section summarizes how to manage a HIDL interface package (such as
+hardware/interfaces) and consolidates information presented
+throughout the HIDL section. Before reading, ensure you are familiar with
+HIDL Versioning, the hashing
+concepts in Hashing with
+hidl-gen, the details of working with
+HIDL in general, and the following definitions:
+
+
+
+
+
Term
+
Definition
+
+
+
+
+
Application Binary Interface (ABI)
+
Application programming interface + any binary linkages required.
+
+
+
Fully-qualified name (fqName)
+
Name to distinguish a hidl type. Example:
+android.hardware.foo@1.0::IFoo.
+
+
+
Package
+
Package containing a HIDL interface and types. Example:
+android.hardware.foo@1.0.
+
+
+
Package root
+
Root package that contains the HIDL interfaces. Example: the HIDL interface
+android.hardware is in the package root
+android.hardware.foo@1.0.
+
+
+
Package root path
+
Location in the Android source tree where a package root maps to.
Every file can be found from the package root mapping and
+its fully-qualified name
+
Package roots are specified to hidl-gen as the argument
+-r android.hardware:hardware/interfaces. For example, if the
+package is vendor.awesome.foo@1.0::IFoo and hidl-gen
+is sent -r vendor.awesome:some/device/independent/path/interfaces,
+then the interface file should be located in
+$ANDROID_BUILD_TOP/some/device/independent/path/interfaces/foo/1.0/IFoo.hal.
+
+
In practice, it is recommended for a vendor or OEM named awesome
+to put their standard interfaces in vendor.awesome. After a package
+path has been selected, it must not be changed as this is baked into the ABI of
+the interface.
+
+
Package path mapping should be unique
+
For example, if you have -rsome.package:$PATH_A and
+-rsome.package:$PATH_B, $PATH_A must be equal to
+$PATH_B for a consistent interface directory (this also makes
+versioning interfaces much
+easier).
+
+
Package root must have a versioning file
+
If you create a package path such as
+-r vendor.awesome:vendor/awesome/interfaces, you should also
+create the file
+$ANDROID_BUILD_TOP/vendor/awesome/interfaces/current.txt, which
+should contain hashes of interfaces made using the -Lhash option in
+hidl-gen (this is discussed extensively in
+Hashing with
+hidl-gen).
+
+
+
+
Interfaces go in device-independent
+locations
+
In practice, it is recommended to share interfaces between branches. This
+allows for maximum code re-usage and maximum testing of code across different
+devices and use cases.