无法读取库伦值文件节点解决方案

news2025/4/17 0:48:41

读取库伦值的目的是为了换算成电流,量化场景功耗用途

1.报错日志

/power_log/debuglogger$ adb shell dmesg | grep -Ei "avc.+.system_server"[   79.942272] logd.auditd: type=1400 audit(1744279324.832:7149): avc:  denied  { read } for  comm="binder:1548_6" name="charge_counter" dev="sysfs" ino=55475 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs_batteryinfo:s0 tclass=file permissive=0[   79.942359] logd.auditd: type=1400 audit(1744279324.832:7150): avc:  denied  { read } for  comm="binder:1548_6" name="temp" dev="sysfs" ino=55479 scontext=u:r:system_server:s0 tcontext=u:object_r:sysfs_batteryinfo:s0 tclass=file permissive=0

由于库伦值和电池温度节点属于都是 sysfs_batteryinfo默认不允许访问的,故我们需要配置节点域

0

因为上述配置的节点,如果直接按avc配置规则,一般会报如下 neverallow 异常,因为上述配置的节点都是 sysfs_batteryinfo默认不允许访问的,故我们需要配置节点域。

错误配置案例:allow system_server sysfs_batteryinfo:file { read open getattr };,直接无法编译成功,会提示neverallow

​​​​​​​

neverallow check failed at out_sys/soong/.intermediates/system/sepolicy/plat_sepolicy.cil/android_common/plat_sepolicy.cil:14894 from system/sepolicy/private/domain.te:1557  (neverallow base_typeattr_451 sysfs_batteryinfo (file (read open)))    <root>    allow at out_sys/soong/.intermediates/system/sepolicy/system_ext_sepolicy.cil/android_common/mssi_64_cn_armv82/system_ext_sepolicy.cil:2885      (allow system_server sysfs_batteryinfo (file (read getattr open)))Failed to generate binaryFailed to build policydb

2.解决方案system/sepolicy/private/domain.te 去掉neverallow配置

哪里不允许修改为允许,例如新增 -system_server​​​​​​​

# Platform must not have access to sysfs_batteryinfo, but should do it via health HALfull_treble_only(`  neverallow {    coredomain    -shell    # For access to block device information under /sys/class/block.    -apexd    # Read sysfs block device information.    -init    # Generate uevents for health info    -ueventd    # Recovery uses health HAL passthrough implementation.    -recovery    # Charger uses health HAL passthrough implementation.    -charger    -incidentd    -system_app    -system_server  } sysfs_batteryinfo:file { open read };')

system_server.te 添加读写权限​​​​​​​

allow system_server sysfs_batteryinfo:dir { search };allow system_server sysfs_batteryinfo:file { read open getattr };

3.代码读取库伦值示例​​​​​​

/** * Get battery charge counter value */private static final String BATTERY_CAPACITY_PATH        = "/sys/class/power_supply/battery/charge_counter";public static int getBatteryCapacity() {    return getBatteryFileNode(BATTERY_CAPACITY_PATH) / 1000;}public static int getBatteryCapacity(Context context) {    BatteryManager batteryManager = (BatteryManager)            context.getSystemService(Context.BATTERY_SERVICE);    if (batteryManager == null) {        return -1;    }    return (int) batteryManager.getLongProperty(            BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER);}/** * Get cpu temparature */public static String getBatteryTemperature() {    String line = null;    String temp = null;    line = FileUtils.readFileNode("/sys/class/power_supply/battery/temp");    if (line != null) {        temp = line.trim();    } else {        temp = "-1";    }    return temp;}public static int getBatteryTemperature(Context context) {    Intent batteryIntent = context.registerReceiver(null,            new IntentFilter(Intent.ACTION_BATTERY_CHANGED));    return batteryIntent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);}

4.刷机验证 system_server 进程正常读取charge_counter和temp​​​​​​​

/codes/MTK_A15/alps$ adb shell dumpsys EngineService getBatteryCapacitygetBatteryCapacity=2946,getBatteryTemperature=290,getBatteryApiCapacity=2946000,getBatteryApiTemperature=290

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333283.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux系统学习Day2——在Linux系统中开发OpenCV

一、OpenCV简介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的跨平台计算机视觉和机器学习库&#xff0c;广泛应用于图像处理、视频分析、物体检测等领域。它提供了丰富的算法和高效的工具集&#xff0c;支持C、Python等多种语言&#xff0c…

【图像分类】【深度学习】图像分类评价指标

【图像分类】【深度学习】图像分类评价指标 文章目录 【图像分类】【深度学习】图像分类评价指标前言二分类评价指标Accuracy(准确率/精度)Precision(精确率/查准率)Recall(召回率/查全率)F1-ScoreAUC-ROC曲线(Area Under the Curv-Receiver Operating Characteristic Curve)二…

蓝桥杯单片机刷题——按键控制距离显示精度

设计要求 驱动超声波传感器&#xff0c;启动距离测量功能,并将其结果显示到数码管上&#xff0c;距离数据单位为m。 按键“S4”定义为“切换”按键&#xff0c;通过此按键切换距离的显示精度&#xff08;一位或两位小数&#xff09;。切换顺序如图所示。 数码管显示格式如下图…

el-time-picker标签的使用

需求&#xff1a; 实现培训日期&#xff0c;用户可以选择某一天的日期&#xff0c;这个比较简单 <el-form-item label"培训日期" prop"startTime"><el-date-picker clearablev-model"form.startTime"type"date"placeholder…

云平台一键部署【OmniGen】多功能图像生成模型(2025更新版)

OmniGen 是智源推出的一款全新的扩散模型架构&#xff0c;专注于统一图像生成。它简化了图像生成的复杂流程&#xff0c;通过一个框架处理多种任务&#xff0c;例如文本生成图像、图像编辑和基于视觉条件的生成等。此外&#xff0c;OmniGen 通过统一学习结构实现了知识迁移&…

算法训练之动态规划(四)——简单多状态问题

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…

uniapp离线打包提示未添加videoplayer模块

uniapp中使用到video标签&#xff0c;但是离线打包放到安卓工程中&#xff0c;运行到真机中时提示如下&#xff1a; 解决方案&#xff1a; 1、把media-release.aar、weex_videoplayer-release.aar放到工程的libs目录下; 文档&#xff1a;https://nativesupport.dcloud.net.cn/…

机器人零位标定修正流程介绍

如果想看运动学标定可以看看 机器人运动学参数标定, 一次性把运动学参数和零位标定等一起标定求解. 1. 零位标定 零位标定是机器人运动学标定中的一个重要步骤&#xff0c;其目的是校正机器人关节的初始位置误差。以下是需要进行零位标定的主要原因&#xff1a; 制造误差 在机…

深入 C++ 线程库:从创建到同步的探索之旅

目录 创建多线程 获取线程返回值 1.传指针 2.传引用 原子操作 互斥量 互斥量&#xff08;Mutex&#xff09;的基本概念 mutex类型介绍 锁的类型 互斥锁&#xff08;Mutex&#xff09; 自旋锁&#xff08;Spin Lock&#xff09; 读写锁&#xff08;Read - Write Lo…

【2025年认证杯数学中国数学建模网络挑战赛】A题 解题建模过程与模型代码(基于matlab)

目录 【2025年认证杯数学建模挑战赛】A题解题建模过程与模型代码&#xff08;基于matlab&#xff09;A题 小行星轨迹预测解题思路第一问模型与求解第二问模型与求解 【2025年认证杯数学建模挑战赛】A题 解题建模过程与模型代码&#xff08;基于matlab&#xff09; A题 小行星轨…

Matlab 分数阶PID控制永磁同步电机

1、内容简介 Matlab 203-分数阶PID控制永磁同步电机 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

4185 费马小定理求逆元

4185 费马小定理求逆元 ⭐️难度&#xff1a;简单 &#x1f31f;考点&#xff1a;费马小定理 &#x1f4d6; &#x1f4da; import java.util.Scanner; import java.util.Arrays;public class Main {static int[][] a;public static void main(String[] args) {Scanner sc …

界面控件DevExpress WinForms v25.1新功能预览 - 聚焦用户体验升级

DevExpress WinForms拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序&#xff0c;无论是Office风格的界面&#xff0c;还是分析处理大批量的业务数据&#xff0c;它都能轻松胜…

卷积神经网络(CNN)基础

目录 一、应用场景 二、卷积神经网络的结构 1. 输入层&#xff08;Input Layer&#xff09; 2. 卷积层&#xff08;Convolutional Layer&#xff09; 3. 池化层&#xff08;Pooling Layer&#xff09; 最大池化&#xff08;max_pooling&#xff09;或平均池化&#xff08;…

Android Spotify-v9.0.36.443-arm64-Experimental Merged版

Android Spotify 链接&#xff1a;https://pan.xunlei.com/s/VONXTdIv9d4FnAiNMMliIAEJA1?pwdxt7q# Android Spotify-v9.0.36.443-arm64-Experimental Merged版 享受高达256kbps的AAC音频。

LLM之Agent(十六)| MCP已“过时”?Google近期推出Agent2Agent 协议 (A2A)

如今&#xff0c;企业越来越多地构建和部署自主代理&#xff0c;以帮助扩展、自动化和增强整个工作场所的流程 - 从订购新笔记本电脑到协助客户服务代表&#xff0c;再到协助供应链规划。 为了最大限度地发挥代理 AI 的优势&#xff0c;这些代理能够在一个动态的、多代理的生态…

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification 目录 Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification`AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)`功能概述参数解释`AutoModelForSequen…

Java学习总结-端口-协议

端口号&#xff1a;一个16位的二进制&#xff0c;范围是0-65535 端口分类&#xff1a; 周知端口&#xff1a;0-1023&#xff0c;被预先定义的知名应用占用&#xff08;如&#xff1a;HTTP占用80&#xff0c;FTP占用21&#xff09; 注册端口&#xff1a;1024-49151&#xff0…

克魔助手(Kemob)安装与注册完整教程 - Windows/macOS双平台指南

iOS设备管理工具克魔助手便携版使用全指南 前言&#xff1a;为什么需要专业的iOS管理工具 在iOS开发和设备管理过程中&#xff0c;开发者经常需要突破系统限制&#xff0c;实现更深层次的控制和调试。本文将详细介绍一款实用的便携式工具的使用方法&#xff0c;帮助开发者快速…

qwen-vl 实现OCR的测试

OCR 技术是数字化时代必不可少的实用工具。以前都依赖专业的公司的专业软件才能完成。成本很高。也正因为如此&#xff0c;我国纸质资料的数字化并不普及。基于大模型的ORC 也许会改变这样的现状。 文本识别&#xff0c;也称为光学字符识别 (OCR)&#xff0c;可以将印刷文本或…