Android - failed to set system property

记录一次疏忽,起因是我需要在自定义的 receiver 中保存 property 方便,方便在三方 app 中使用,结果直接崩溃了,虽然结果保存成功了,但是这种情况也是无法接收的,错误日志如下:

M006082 05-25 17:03:16.339 1322 1322 W libc : Unable to set property "ro.flyscale.cdmaImsi" to "4600**********": error code: 0xb

M006083 05-25 17:03:16.340 1322 1322 D AndroidRuntime: Shutting down VM

--------- beginning of crash

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: FATAL EXCEPTION: main

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: Process: com.android.settings, PID: 1322

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: java.lang.RuntimeException: Unable to start receiver com.android.settings.SimStateReceiver: java.lang.RuntimeException: failed to set system property

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at android.app.ActivityThread.handleReceiver(ActivityThread.java:3869)

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at android.app.ActivityThread.access$1400(ActivityThread.java:234)

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1893)

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:107)

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at android.os.Looper.loop(Looper.java:214)

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:7626)

C006084 05-25 17:03:16.341 1322 1322 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)

C006084 05-25 17:03:16

我们知道关于 property 可以先通过 adb 命令来写入或者读取,于是再次尝试

​​

发现确实不好使,然后意识到这个 ro开头的貌似是只读属性的,去网上确认了下,确实如此。

特别属性 :

如果属性名称以"ro."开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。

如果属性名称以"persist."开头,当设置这个属性时,其值也将写入/data/property。

如果属性名称以"net."开头,当设置这个属性时,"net.change"属性将会自动设置,以加入到最后修改的属性名。

(这是很巧妙的。 netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)

属性" ctrl.start "和" ctrl.stop "是用来启动和停止服务。每一项服务必须在/init.rc中定义.系统启动时,与init守护

进程将解析init.rc和启动属性服务。一旦收到设置" ctrl.start "属性的请求,属性服务将使用该属性值作为服务

名找到该服务,启动该服务。这项服务的启动结果将会放入" init.svc.<服务名>"属性中。客户端应用程序可以轮询那个属性值,以确定结果。

这边文章https://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html

相关推荐
黑码哥11 分钟前
ViewHolder设计模式深度剖析:iOS开发者掌握Android列表性能优化的实战指南
android·ios·性能优化·跨平台开发·viewholder
亓才孓22 分钟前
[JDBC]元数据
android
独行soc34 分钟前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
金融RPA机器人丨实在智能42 分钟前
Android Studio开发App项目进入AI深水区:实在智能Agent引领无代码交互革命
android·人工智能·ai·android studio
科技块儿43 分钟前
利用IP查询在智慧城市交通信号系统中的应用探索
android·tcp/ip·智慧城市
独行soc1 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
王码码20352 小时前
Flutter for OpenHarmony 实战之基础组件:第二十七篇 BottomSheet — 动态底部弹窗与底部栏菜单
android·flutter·harmonyos
2501_915106322 小时前
app 上架过程,安装包准备、证书与描述文件管理、安装测试、上传
android·ios·小程序·https·uni-app·iphone·webview
vistaup2 小时前
OKHTTP 默认构建包含 android 4.4 的TLS 1.2 以及设备时间不对兼容
android·okhttp
常利兵2 小时前
ButterKnife在Android 35 + Gradle 8.+环境下的适配困境与现代化迁移指南
android