https://www.esper.io/blog/android-dessert-bites-24-esim-me-1248143> OpenEUICC implements Android’s system APIs for eSIM management, namely EuiccManager and EuiccService, and it requests the privileged permissions needed to interface with eUICCs via the TelephonyManager API (android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS and android.permission.MODIFY_PHONE_STATE) or OMAPI (android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION) without needing to be allow listed in the ARF.
这个文章里说的挺明白的,OpenEUICC 需要是系统应用,是因为安卓有对 OMAPI 做访问权限控制,就跟 EuiccManager 一样。要不然随便一个 App ,用户手抖给了权限就能改你 eSIM profile ,岂不是有很大安全隐患~
eSIM.me 的 app 可以不需要 root 权限是基于[UICC Carrier Privilege](
https://source.android.com/docs/core/connect/uicc),也就是在 eSIM.me 卡的 ARA-M 里加上了自家 app 的签名(详见[文章](
https://cheerio-the-bear.hatenablog.com/entry/2022/03/04/172109)),让 Android 系统允许自家 app 访问
eSIM.me 的卡。
用这种方式实现得专门定制一批卡,在卡的 ARA-M/ARF 里加上 OpenEUICC 或者其他 LPA app 的签名证书 hash 才行