You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 5.1.1自定义AOSP中PPP连接后com.android.phone崩溃求助

解决Android 5.1.1 AOSP PPP连接成功后com.android.phone崩溃的问题

从你的日志来看,核心崩溃原因非常明确:java.lang.SecurityException: Package android does not belong to 1001。这里的uid 1001是radio用户组的ID(com.android.phone进程默认运行在这个uid下),而android系统包的uid是1000(system用户),两者不匹配导致AppOps权限检查失败,直接杀死了phone进程。

下面是针对性的排查和解决思路:

1. 定位NetworkAgent注册的包名错误

崩溃发生在DataConnection$DcNetworkAgent初始化时调用ConnectivityManager.registerNetworkAgent的环节。问题大概率出在Telephony框架代码中,注册网络代理时错误地传递了android作为包名,而非com.android.phone。

你需要检查packages/services/Telephony/src/com/android/internal/telephony/dataconnection/DataConnection.java中的DcNetworkAgent构造逻辑:

// 找到类似这样的代码段
NetworkAgentConfiguration config = new NetworkAgentConfiguration();
// 错误示例:config.setPackageName("android");
// 正确写法应该是:
config.setPackageName("com.android.phone");

如果这里被错误设置为android,就会触发uid和包名不匹配的SecurityException。

2. 验证com.android.phone的Manifest配置

确保Telephony服务的Manifest文件正确声明了uid和包名:
打开packages/services/Telephony/AndroidManifest.xml,检查以下配置:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.phone"
    android:sharedUserId="android.uid.phone"> <!-- 必须是这个sharedUserId,对应uid 1001 -->

    <!-- 确保声明了必要的内部权限 -->
    <uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL" />
    <uses-permission android:name="android.permission.MODIFY_PHONE_STATE" />

如果sharedUserId被错误修改为android.uid.system,也会导致uid不匹配。

3. 检查pppd进程的运行上下文

虽然你提到/dev/ttyUSB3的权限是system:radio,但需要确认pppd进程的运行uid:
在设备上执行命令:

ps | grep pppd

如果pppd以root或system uid运行,可能会导致Telephony框架在处理PPP连接时获取错误的上下文。你可以调整pppd的启动脚本,让它以radio uid运行(使用su radio -c "pppd ..."的方式启动)。

4. 调试AppOps权限检查(临时方案)

如果需要快速验证问题,可以临时修改ConnectivityService的权限检查逻辑(不建议作为最终解决方案):
在frameworks/base/services/core/java/com/android/server/ConnectivityService.java中,找到registerNetworkAgent方法,暂时注释掉包名和uid的校验逻辑,看看是否还会崩溃。如果不崩溃,就坐实了是包名/uid不匹配的问题。

5. 检查RIL二进制的适配

你添加的SIMCOM二进制文件是否针对Android 5.1.1和NanoPC T3做了正确适配?某些预编译的RIL库可能会错误地设置进程上下文,导致Telephony服务运行在错误的uid下。可以尝试替换为官方适配的SIMCOM RIL版本,或者检查RIL初始化时的参数传递。


内容的提问来源于stack exchange,提问作者Dave McLaughlin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:09:34