The behaviors of each of the API types (managed, soft, native, and web) must be consistent with the preferred implementation of the upstream Android Open Source Project. Some specific areas of compatibility are:
GnssMeasurement
and GnssNavigationMessage
.LocationManager
API class or the WifiManager.startScan()
method."signature"
or "signatureOrSystem"
protectionLevel
permission or are on the exemption list .stopSelf()
method, unless the app is placed on a temporary whitelist to handle a task that's visible to the user.Security.getProviders()
method, in the given order and with the given names (as returned by Provider.getName()
) and classes, unless the app has modified the list via insertProviderAt()
or removeProvider()
. Devices MAY return additional providers after the specified list of providers below.android.security.net.config.NetworkSecurityConfigProvider
com.android.org.conscrypt.OpenSSLProvider
sun.security.provider.CertPathProvider
android.security.keystore.AndroidKeyStoreBCWorkaroundProvider
com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
com.android.org.conscrypt.JSSEProvider
android.security.keystore.AndroidKeyStoreProvider
The above list is not comprehensive. The Compatibility Test Suite (CTS) tests significant portions of the platform for behavioral compatibility, but not all. It is the responsibility of the implementer to ensure behavioral compatibility with the Android Open Source Project. For this reason, device implementers SHOULD use the source code available via the Android Open Source Project where possible, rather than re-implement significant parts of the system.