eSIM Implementation by Android
Embedded SIM (eSIM, or eUICC) technology allows mobile users to download a carrier profile and activate a carrier's service without having a physical SIM card.
It's a global specification driven by the GSMA that enables remote SIM provisioning (RSP) of any mobile device.
Starting with Android 9, the Android framework provides standard APIs for accessing eSIM and managing subscription profiles on the eSIM.
These eUICC APIs enable third parties to develop their own carrier apps and local profile assistants (LPAs) on eSIM-enabled Android devices.
The LPA is a standalone, system app that should be included in the Android build image. Management of the profiles on the eSIM is generally done by the LPA, as it serves as a bridge between the SM-DP+ (remote service that prepares, stores, and delivers profile packages to devices) and the eUICC chip.
The LPA APK can optionally include a UI component, called the LPA UI or LUI, to provide a central place for the end user to manage all embedded subscription profiles.
The Android framework automatically discovers and connects to the best available LPA, and routes all the eUICC operations through an LPA instance.
APIs in EuiccManager
is necessary in creating a Carrier App which provides high-level profile management operations such as downloadSubscription()
, switchToSubscription()
, and deleteSubscription()
.
Creating a LPA system app, we must extend EuiccService
for the Android framework to connect to the LPA services. In addition, we should use the APIs in EuiccCardManager
, which provide ES10x functions based on GSMA RSP v2.0. These functions are used to issue commands to the eUICC chip, such as prepareDownload()
, loadBoundProfilePackage()
, retrieveNotificationList()
and resetMemory()
.
NOTICE:
The APIs in EuiccManager
require a properly implemented LPA app to function and the caller of EuiccCardManager
APIs must be an LPA. This is enforced by the Android framework.
Devices running Android 10 or higher can support devices with multiple eSIMs. For more information, see Supporting multiple eSIMs.
Coupling the crypto wallet and the eSIM unique ID together can be done in the LPA app.