You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
2.4 KiB
54 lines
2.4 KiB
7 months ago
|
## 3.6\. API Namespaces
|
||
|
|
||
|
Android follows the package and class namespace conventions defined by the Java
|
||
|
programming language. To ensure compatibility with third-party applications,
|
||
|
device implementers MUST NOT make any prohibited modifications (see below) to
|
||
|
these package namespaces:
|
||
|
|
||
|
* `java.*`
|
||
|
* `javax.*`
|
||
|
* `sun.*`
|
||
|
* `android.*`
|
||
|
* `androidx.*`
|
||
|
* `com.android.*`
|
||
|
|
||
|
That is, they:
|
||
|
|
||
|
* [C-0-1] MUST NOT modify the publicly exposed APIs on the Android platform
|
||
|
by changing any method or class signatures, or by removing classes or class
|
||
|
fields.
|
||
|
* [C-0-2] MUST NOT add any publicly exposed elements (such as classes or
|
||
|
interfaces, or fields or methods to existing classes or interfaces) or Test
|
||
|
or System APIs to the APIs in the above namespaces. A “publicly exposed
|
||
|
element” is any construct that is not decorated with the “@hide” marker as
|
||
|
used in the upstream Android source code.
|
||
|
|
||
|
Device implementers MAY modify the underlying implementation of the APIs, but
|
||
|
such modifications:
|
||
|
|
||
|
* [C-0-3] MUST NOT impact the stated behavior and Java-language signature of
|
||
|
any publicly exposed APIs.
|
||
|
* [C-0-4] MUST NOT be advertised or otherwise exposed to developers.
|
||
|
|
||
|
However, device implementers MAY add custom APIs outside the standard Android
|
||
|
namespace, but the custom APIs:
|
||
|
|
||
|
* [C-0-5] MUST NOT be in a namespace owned by or referring to another
|
||
|
organization. For instance, device implementers MUST NOT add APIs to the
|
||
|
`com.google.*` or similar namespace: only Google may do so. Similarly,
|
||
|
Google MUST NOT add APIs to other companies' namespaces.
|
||
|
* [C-0-6] MUST be packaged in an Android shared library so that only apps
|
||
|
that explicitly use them (via the <uses-library> mechanism) are
|
||
|
affected by the increased memory usage of such APIs.
|
||
|
|
||
|
If a device implementer proposes to improve one of the package namespaces above
|
||
|
(such as by adding useful new functionality to an existing API, or adding a new
|
||
|
API), the implementer SHOULD visit [source.android.com](
|
||
|
http://source.android.com/) and begin the process for contributing changes and
|
||
|
code, according to the information on that site.
|
||
|
|
||
|
Note that the restrictions above correspond to standard conventions for naming
|
||
|
APIs in the Java programming language; this section simply aims to reinforce
|
||
|
those conventions and make them binding through inclusion in this Compatibility
|
||
|
Definition.
|