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 

<think>好的,我现在需要帮助用户解决复制跟踪文件时出现的错误errno -4048。用户提到在IT上下文中复制跟踪文件失败,我需要先理解这个错误码的含义以及可能的原因。 首先,errno -4048可能是一个特定于操作系统或应用程序的错误代码。常见的系统错误通常有标准的errno值,比如在Linux中,errno 2是文件未找到,errno 13是权限被拒绝。但-4048这个数值看起来不太常见,可能是某个软件或框架自定义的错误码。我需要确认用户的操作系统环境,比如是Windows、Linux还是其他系统。 用户提到“复制跟踪文件”,这可能涉及到某种调试或日志记录过程,尤其是在系统或应用程序出现问题时生成的文件。根据引用[1],提到了写入调试信息到日志需要进程权限,这可能提示权限问题。如果用户没有足够的权限访问源文件或目标目录,可能会导致复制失败。 接下来,检查文件或目录权限。如果源文件被其他进程锁定,比如正在被写入的跟踪文件,复制操作可能会失败。例如,在Windows中,如果文件被独占打开,其他进程无法读取。此时需要确保文件未被占用,可能需要停止相关服务或进程后再复制。 另外,路径长度限制也是一个可能的问题,尤其是在Windows系统中,路径长度超过260个字符会导致各种操作失败。需要检查源文件和目标路径的长度,尝试缩短路径或启用长路径支持。 防病毒或安全软件有时会阻止文件操作,特别是对系统文件的访问。临时禁用这些软件可能有助于排除干扰。 查看系统日志(如Windows的事件查看器或Linux的/var/log/syslog)可能会提供更详细的错误信息,帮助确定具体原因。 根据引用[3],提到HTTP等协议可能影响文件传输,但这里直接的文件复制可能不涉及网络传输,但如果是远程复制,网络权限或配置问题也可能导致错误。 总结可能的解决方案步骤:检查权限,确保文件未被锁定,缩短路径,关闭防病毒软件,检查系统日志。如果这些通用方法无效,可能需要更具体的环境信息或查阅相关软件的文档。</think>关于解决复制跟踪文件时出现错误代码`errno -4048`的问题,以下是分步解决方案: ### 1. 确认错误码定义 `errno -4048`属于非标准系统错误码,可能源于: - 特定应用程序的自定义错误(如安全软件、开发框架) - 操作系统底层文件操作异常 - 文件系统权限或路径格式问题 建议优先查阅相关软件/工具的官方文档(如调试工具说明或系统API手册),确认该错误码的精准定义[^1]。 ### 2. 检查文件权限 根据系统权限模型执行以下操作: - **Windows系统**:右键点击目标文件 > 属性 > 安全选项卡 > 验证当前用户是否具有`完全控制`权限 - **Linux系统**:使用`ls -l 文件路径`查看权限,通过`chmod`或`chown`调整权限 - 特别注意:跟踪文件可能被进程独占锁定,需先停止关联服务再复制[^1] ### 3. 处理路径限制 针对Windows系统特有的路径问题: ```powershell # 查看系统是否启用长路径支持 Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathsEnabled # 若返回0,则通过注册表启用(需管理员权限) Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name LongPathsEnabled -Value 1 ``` 建议将文件复制到短路径目录(如`C:\temp\`)测试是否成功。 ### 4. 检查文件锁定状态 使用系统工具检测文件占用情况: - **Windows**:通过`资源监视器 > CPU选项卡 > 关联的句柄`搜索被锁文件 - **Linux**:执行`lsof | grep 文件名`查找占用进程 ### 5. 验证防病毒软件干扰 临时操作示例: 1. 打开Windows安全中心 > 病毒和威胁防护 > 管理设置 2. 关闭`实时保护` 3. 尝试复制操作 4. 无论结果如何,操作完成后立即重新启用防护 ### 6. 系统日志分析 关键日志位置: - **Windows事件查看器**:`Windows日志 > 系统/应用程序` - **Linux系统日志**:`/var/log/syslog`或`journalctl -xe` 搜索与错误同时出现的时间戳,重点关注`文件系统错误`或`访问被拒绝`类事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值