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.
38 lines
1.9 KiB
38 lines
1.9 KiB
7 months ago
|
There are two libraries defined in this directory:
|
||
|
First, com.android.mediadrm.signer.jar is a shared java library
|
||
|
containing classes required by unbundled apps running on devices that use
|
||
|
the certficate provisioning and private key signing capabilities provided
|
||
|
by the MediaDrm API.
|
||
|
Second, com.android.mediadrm.signer.stubs.jar is a stub for the shared library
|
||
|
which provides build-time APIs to the unbundled clients.
|
||
|
|
||
|
At runtime, the shared library is added to the classloader of the app via the
|
||
|
<uses-library> tag. And since Java always tries to load a class from the
|
||
|
parent classloader, regardless of whether the stub library is linked to the
|
||
|
app statically or dynamically, the real classes are loaded from the shared
|
||
|
library.
|
||
|
|
||
|
--- Rules of this library ---
|
||
|
o The stub library is effectively a PUBLIC API for unbundled CAST receivers
|
||
|
that may be distributed outside the system image. So it MUST BE API STABLE.
|
||
|
You can add but not remove. The rules are the same as for the
|
||
|
public platform SDK API.
|
||
|
o This library can see and instantiate internal platform classes, but it must not
|
||
|
expose them in any public method (or by extending them via inheritance). This would
|
||
|
break clients of the library because they cannot see the internal platform classes.
|
||
|
|
||
|
This library is distributed in the system image, and loaded as
|
||
|
a shared library. So you can change the implementation, but not
|
||
|
the interface. In this way it is like framework.jar.
|
||
|
|
||
|
--- Why does this library exist? ---
|
||
|
|
||
|
Unbundled apps cannot use internal platform classes.
|
||
|
|
||
|
This library will eventually be replaced when the provisioned certificate-
|
||
|
based signing infrastructure that is currently defined in the support library
|
||
|
is reintegrated with the framework in a new API. That API isn't ready yet so
|
||
|
this library is a compromise to make new capabilities available to the system
|
||
|
without exposing the full surface area of the support library.
|
||
|
|