Android 安卓RIL介绍

Android ril集成和常见问题分享

RK3568-ANDROID11-4G-EC20-(详细步骤)

什么是 Android RIL

Android RIL (Radio Interface Layer)即无线接口层,它是位于 Android 操作系统与移动设备的无线通信硬件之间的一个软件抽象层 。其主要目的是为 Android 系统提供一个统一的接口,以便与各种不同类型的无线通信芯片及模块进行交互和通信,从而实现诸如语音通话、短信收发、移动数据网络连接等无线通信功能。

从功能实现角度看,RIL 屏蔽了底层无线通信硬件的复杂性和差异性。不同的手机制造商可能会采用不同厂商的基带芯片等无线通信硬件,这些硬件在接口规范、功能实现细节等方面存在很大差别。RIL 通过定义一套标准的接口和通信协议,使得 Android 系统无需关心具体硬件的细节,只要按照 RIL 提供的接口进行调用,就能实现各种无线通信功能。例如,当应用程序需要发起一个语音通话时,它只需调用 Android 系统中与通话相关的 API,而这些 API 最终会通过 RIL 将通话请求传递给底层的无线通信硬件,由硬件来完成实际的通话建立和通信过程。 这样一来,大大降低了 Android 系统与无线通信硬件耦合度,提高了系统的可移植性和兼容性。

RIL结构

Android RIL 位于应用程序框架与内核之间,分成了两个部分,一个部分是 rild,它负责 socket 与应用程序框架进行通信。另外一个部分是 Vendor RIL,这个部分负责向下与 radio 进行通信。对于 RIL 的 java 框架部分,也被分成两个部分,一个是 RIL 模块,这个模块主要与下层的 rild 进行通信,另外一个是 phone 模块,这个模块直接暴露电话功能结构给应用开发用户,供他们调用以进行电话功能的实现。

IRadio配置相关问题

安卓11以上的IRadio一般配置在 /vendor/etc/vintf/manifest.xml 目录下,根据客户使用的不同版本IRadio,配置会有一点差异。

不同的安卓版本支持的最高IRadio版本也不同,配置不能超过当前安卓版本支持版本。移远实现的libril目前支持到1.5接口,使用移远RIL库时候manifest.xml最高不能配置超过1.5。

安卓8.x ---最高支持IRadio 1.1

安卓9.x ---最高支持IRadio 1.2

安卓10.x ---最高支持IRadio 1.4

安卓11.x ---最高支持IRadio 1.5

安卓12.x ---最高支持IRadio 1.6

安卓11&12 2&3&4G模块使用1.1接口即可正常上报信息

安卓11&12 如适配的5G模块,在新归档的RIL版本中,针对5G信号上报做了调整,需要将IRadio接口切至1.5

IRadio服务未注册,会导致RIL库与上层通信失败。

此时就需要检查使用的IRadio版本和对应的manifest.xml的配置,如果使用了1.2以上的IRadio版本还需要确认是否有对应移远的libril.so。(原生libril.so仅支持IRadio1.1)

一般在radio log上过滤RILJ,只有一行打印:

RILJ ( 934): RIL: init preferredNetworkType=9 cdmaSubscription=0)[PHONEnull]

且不会上报:

RILJ ( 934): [UNSL]< UNSOL_RIL_CONNECTED [PHONE

相关推荐
阿巴斯甜15 小时前
Android 报错:Zip file '/Users/lyy/develop/repoAndroidLapp/l-app-android-ble/app/bu
android
Kapaseker15 小时前
实战 Compose 中的 IntrinsicSize
android·kotlin
xq952716 小时前
Andorid Google 登录接入文档
android
黄林晴18 小时前
告别 Modifier 地狱,Compose 样式系统要变天了
android·android jetpack
冬奇Lab1 天前
Android触摸事件分发、手势识别与输入优化实战
android·源码阅读
城东米粉儿1 天前
Android MediaPlayer 笔记
android
Jony_1 天前
Android 启动优化方案
android
阿巴斯甜1 天前
Android studio 报错:Cause: error=86, Bad CPU type in executable
android
张小潇1 天前
AOSP15 Input专题InputReader源码分析
android
_小马快跑_2 天前
Kotlin | 协程调度器选择:何时用CoroutineScope配置,何时用launch指定?
android