Android SIM卡加载全流程解析:从MODEM到RIL的完整通信链路(附日志分析)

Android SIM卡识别加载流程 介绍Android系统中SIM卡的识别与信息加载流程 阅读详情

Android SIM卡加载全流程解析:从MODEM到RIL的完整通信链路(附日志分析)

作为一名长期深耕Android底层通信模块的开发者,我经常需要面对各种SIM卡相关的疑难杂症。无论是运营商定制机型的兼容性问题,还是海外漫游时的网络注册失败,其根源往往都深埋在从硬件MODEM到Android框架RIL层的复杂交互链路中。很多开发者对Android上层应用逻辑了如指掌,但一旦涉及到底层通信,尤其是SIM卡的识别与加载流程,就感觉像是面对一个黑盒,只能依赖系统日志进行模糊的猜测。今天,我们就来彻底拆解这个黑盒,从MODEM上电开始,一步步追踪信号如何穿越RIL层,最终在Android系统中完成SIM卡的“身份认证”与数据加载。这不仅是一份流程解析,更是一套基于真实日志的实战调试框架,希望能帮助你下次遇到类似问题时,能精准定位,而不是盲目试错。

1. 理解通信基石:MODEM、RIL与UICC的三角关系

在深入代码之前,我们必须建立清晰的物理与逻辑视图。一部Android手机的通信能力,本质上由三个核心部分协同工作:基带处理器(MODEM)、无线接口层(RIL) 和通用集成电路卡(UICC,即我们常说的SIM卡)。

MODEM是硬件实体,负责所有无线信号的调制解调、协议栈处理。它直接通过物理引脚与SIM卡槽连接,负责给SIM卡上电、复位、并遵循ISO 7816等标准协议与卡内芯片进行通信。你可以把它想象成一个专业的“读卡器”,但它只懂底层的二进制指令。

RIL是Android系统中的一个抽象层,它扮演着“翻译官”和“信使”的角色。RIL分为两部分:RILJ(Java层)和RILD(C/C++层的守护进程,通常由厂商实现)。RILJ接收来自Telephony框架的Java调用(如“获取IMSI”),将其翻译成RILD能理解的请求(如RIL_REQUEST_GET_IMSI)。RILD则通过厂商私有的硬件抽象库(如libqmi、libmdm)与MODEM进行通信,将请求转换为MODEM能执行的AT命令或二进制报文,并接收MODEM的响应原路返回。

UICC则是一个安全微控制器芯片。它远不止是存储电话号码的卡片。现代UICC卡是一个多应用容器,内部可以同时存在多个独立的应用(Application),例如:

  • USIM (Universal Subscriber Identity Module):用于3G/4G/5G网络接入和鉴权。
  • CSIM (CDMA SIM):用于CDMA网络(如中国电信的2G/3G)。
  • ISIM (IP Multimedia Services Identity Module):用于IMS服务,如VoLTE/VoWiFi通话。

因此,Android系统识别的不是一个单一的“SIM卡”,而是一个可能包含多个逻辑应用的“UICC卡”。整个加载过程,就是MODEM识别卡内有哪些应用,然后通过RIL逐级上报,最终在Android侧为每个应用创建对应软件实体的过程。

提示:在分析日志时,你会频繁看到APPTYPE_USIM、APPTYPE_CSIM等标识,这正是MODEM上报的卡内应用类型,是理解后续流程的关键。

2. 启动交响曲:UiccController的初始化与监听建立

系统启动或插拔SIM卡时,整个流程的指挥中心UiccController率先登场。它是在Phone进程(通常是com.android.phone)初始化时被创建的单例。

// 代码路径:frameworks/opt/telephony/src/java/com/android/internal/telephony/UiccController.java
public static UiccController make(Context c, CommandsInte
Android SIM卡加载全流程解析:从MODEM到RIL的底层通信机制 本文深入解析了Android系统中SIM卡从物理插入到系统可用的完整加载流程。文章从AP与CP协同架构入手,详细剖析了MODEM如何通过RIL层上报状态变化、UiccController如何管理状态、以及IccRecords如何加载卡内数据的底层通信机制,为开发者排查SIM卡兼容性问题提供了清晰的调试思路。 阅读详情

相关推荐

Android Telephony框架:从RILJ到Modem的通信链路解析

本文深入解析Android Telephony框架中从RILJ到Modem的通信链路,详细介绍了RILJ的核心职责、与RILD的Socket通信机制,以及Modem驱动的硬件交互流程。通过典型交互流程和调试技巧,帮助开发者理解Android通信底层原理,优化性能并解决实际问题。

weixin_31421613的博客 195

(M)SIM卡开机流程分析之显示名称加载

前面有说过,SIM卡的开机流程是从PhoneFactory.java文件中的makeDefaultPhone方法开始的,SIM的displayName也是从这部分开始的,接下来记录一下自己的研究成果 public static void makeDefaultPhone(Context context) { synchronized (sLockProxyPhones) {

每个片段都值得深深纪念 3860

Android APN加载流程

1、Android的APN(Access Point Name)数据预置在/system/etc/apns-conf.xml中: 2、源码:apns-conf.xml来自apns-full-conf.xml,编译系统的时候Copy到/system/etc/目录下: 3、检索APN,根据MCC、MNC的值组合(46001)来查询telephony.db数据库:

u013686019的专栏 1万+

Android:USIM软件架构与加载流程(涉及:SIMRecords,IccRecords,IccCardProxy,UiccController,UiccCard)

本文详细介绍了USIM的软件整体架构:UIM card,UIM driver,UIM Server,GSTK,GSDI,ISTK,CatApp等。 其中重点介绍了Android framework USIM的加载过程,涉及:SIMRecords,IccRecords,IccCardProxy,UiccController,UiccCard等。

GentelmanTsao的博客 1241

Android14 RK3568 集成移远 EM060K 4G 模块实现短信收发和双卡单待切卡

在工业平板和车载终端的开发中,为了保证网络的可靠性,通常会设计双 SIM 卡槽。基于 Rockchip RK3568 平台和 Android 14 系统,本文将详细记录如何集成移远(Quectel)EM06K LTE-A 模块,并实现 “双卡单待” 功能。所谓的“双卡单待”,指硬件上连接了两张 SIM 卡,但同一时间只有一张卡与 4G 模块通信,通过串口指令来切换。

qq_33427070的博客 1304

android 解析 开机加载SIM联系人及对SIM卡联系人的操作

通过自身1个星期的研究,对开机启动后加载SIM卡联系人的操作流程进行简要分析 , 同时通过Log分析 发现对SIM卡联系人操作时出现的问题,并进行分析,给刚接触这一模块的朋友提供一些经验,同时也方便自己以后深入研究验证。

电子发票二维码背后的秘密:10分钟看懂校验码、加密字符含义与防伪设计

本文深入解析电子发票二维码的结构与防伪设计,揭示校验码和加密字符的生成原理及验证方法。通过实际案例和技术细节,帮助财务人员理解电子发票的安全机制,提升防伪识别能力,确保税务合规。

weixin_29248611的博客 528

StarRocks FE启动异常

服务器断电,StarRocks FE 启动失败。

qq_15138049的博客 1112

INCA软件操作指南:手把手教你生成和解析DCM标定数据文件

本文详细介绍了INCA软件在汽车ECU开发中生成和解析DCM标定数据文件的全流程。从A2L文件导入到DCM文件生成,再到HEX文件导出,手把手教你掌握标定数据处理的实用技巧,包括参数标定、曲线标定和常见问题排查,帮助工程师提升工作效率。

weixin_29271053的博客 1052

PCL 动态半径滤波【2025最新版】

使用PCL实现的2022年最新SCI论文——【Design of Dust-Filtering Algorithms for LiDAR Sensors Using Intensity and Range Information in Off-Road Vehicles】 一文中提出用于自动驾驶点云剔除粉尘、雨雪等影响因素导致的噪声点滤波算法。

点云侠的博客 1472

ViT 实战 万字全攻略:从图像分类到医学影像,Transformer 重塑视觉 AI

摘要:本文深度解析 ViT(Vision Transformer)算法在视觉任务中的原理与实践,涵盖图像分类、目标检测、语义分割及医学影像分析四大领域。从理论出发,详细拆解图像分块、位置编码、Transformer 编码器等核心机制;通过 PyTorch 与 Timm 库实现模型构建、训练与优化,提供 CIFAR-10、Pascal VOC、Cityscapes 及医学数据集的完整代码示例。针对工业级部署,重点介绍模型量化、TensorRT 加速、Flask API 开发及 Docker 容器化方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1935

图神经网络在金融风险传播分析中的应用

《图神经网络在金融风险传播分析中的应用》 摘要 本文旨在探讨图神经网络(Graph Neural Networks, GNN)在金融风险传播分析中的应用。首先,本文简要介绍了图神经网络的基本概念、发展历史以及其在各类应用场景中的重要性。接着,详细介绍了图神经网络的核心算法,包括图卷积神经网

AI天才研究院 1279

微信小程序 - {“errMsg”:”requestPayment:fail banned”} 微信小程序调用wx.requestPayment支付失败返回错误(uniapp微信小程序微信支付报错)

{“errMsg”:”requestPayment:fail banned”},微信小程序调用wx.requestPayment报错requestPayment:fail banned,uni-app微信小程序wx.requestPayment支付报错requestPayment:fail banned,拉起小程序支付报错,iPhone苹果ios真机微信支付报错,Android安卓手机微信支付报错,支付报错,商户配置,签名验证,uniapp 小程序支付微信支付一场,设置过b2b类目,确认了商户号相关功能正常

🏆 前端领域优质创作者 3338

危废焚烧优化控制系统设计与实现:基于数据驱动的控制参数预测

本文提出了一种基于数据驱动的危险废物焚烧过程优化控制方法。系统利用历史运行数据和实时监测数据,通过深度学习模型预测关键控制参数,实现焚烧过程的智能化控制。系统采用Python开发,结合TensorFlow/PyTorch框架,构建了完整的数据采集、预处理、特征工程、模型训练和实时预测闭环系统。该系统能够处理多变量非线性关系,适应工况变化,从历史数据中学习最优控制策略,相比传统PID控制方法具有显著优势。论文详细介绍了系统架构、算法设计和实现细节,为危废焚烧过程的优化控制提供了有效解决方案。

huanghm88的专栏 206

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: Uboot I2C驱动模型与传统模式对比:如何选择最适合你的开发板配置
下一篇: 告别Mac安全警告:最新Electron应用公证指南(含notarytool使用技巧)
python9snake
博客等级 码龄1天 0粉丝 1724原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值