当前位置: 首页 > news >正文

网站建设凭证wordpress 登录 logo

网站建设凭证,wordpress 登录 logo,本地网页制作软件,中国建设银行幼儿缴费官网站从 Android P 开始#xff0c;Google 开始推荐厂家再定制一个 health 。前不久遇到一个定制 health 中的信息未成功反应到 Framework 的问题#xff0c;在分析解决问题的过程中#xff0c;学习到了一点新知识#xff0c;所以就在这篇文章里根据解决问题的流程做一个小小的记…从 Android P 开始Google 开始推荐厂家再定制一个 health 。前不久遇到一个定制 health 中的信息未成功反应到 Framework 的问题在分析解决问题的过程中学习到了一点新知识所以就在这篇文章里根据解决问题的流程做一个小小的记录。问题定制 health service 中的一些 health 信息未成功反应到 Framework。已知定制 health 和 Google healthd 进程都运行于设备中定制 health 主要重写 healthd_board_battery_update 函数会通过库文件引用原生代码(system/core/healthd/)中的实现。初步方案简单介绍服务创建时都编写了一个 x.rc 文件用来描述 health service 的一些特点其中就包括其启动时机。如下# system/core/healthd/android.hardware.health2.0-service.rc/* sevice 类型的 setction 表示一个可执行程序(进程) */service health-hal-2-0 /vendor/bin/hw/android.hardware.health2.0-service or healthd.rcclass haluser systemgroup systemfile /dev/kmsg w启动顺序 hal- core- main - later尝试性修改 health service 启动时机因为对 Framework 层的处理不熟悉就根据经验判断定制 health 与 Google healthd 可能有时序冲突对定制 health 做延迟启动处理如下# device//health/xxx.rc- class hal class main经过测试此方案可行但是这种说不出 root cause 的解决方案难以让人接受所以也就拉通代码继续研究。最终方案原理分析Framework 层首先最大疑问就是 FW 层怎么判断使用哪一个 health 的内容。因 health 信息最终会更新到 BatteryService.java, 尝试在此文件中寻找答案最终找到如下关键代码# frameworks/base/services/core/java/com/android/server/BatteryService.javastatic final class HealthServiceWrapper {private static final String TAG HealthServiceWrapper;public static final String INSTANCE_HEALTHD backup;public static final String INSTANCE_VENDOR default;// All interesting instances, sorted by priority high - low.private static final List sAllInstances Arrays.asList(INSTANCE_VENDOR, INSTANCE_HEALTHD);...}通过这段代码知道系统是根据 service 的实例名来决定使用哪一个 health。service 的实例名定制 health通过查看如下代码得知定制 health 的实例名为 “default”。# device/vendor/health/HealthService.cpp/*通过库和如下函数引入 Google healthd 部分*/int main(void) {return health_service_main();}# hardware/interfaces/health/2.0/utils/libhealthservice/HealthServiceCommon.cppint health_service_main(const char* instance) {gInstanceName instance;if (gInstanceName.empty()) {gInstanceName default; // 空白时实例名}healthd_mode_ops healthd_mode_service_2_0_ops;LOG(INFO) LOG_TAG gInstanceName : Hal starting main loop...;return healthd_main();}Google healthd通过查看如下代码得知 healthd 的实例名与定制 health 相同所以在 Framework 层面后加载的 service 生效。# system/core/healthd/HealthServiceDefault.cpp/* 此 service 实例名为 “default”*/int main(void) {return health_service_main();}# system/core/healthd/HealthServiceHealthd.cpp/* 实例名为 “backup”*/int main() {return health_service_main(backup);}# system/core/healthd/Android.bp/* HealthServiceDefault 重写了 HealthServiceHealthd所以 healthd 使用的实例名为“default”*/cc_binary {name: android.hardware.health2.0-service.override,defaults: [android.hardware.health2.0-service_defaults],overrides: [healthd,],}解决方案因为我们需要使用定制的 health所以将原生的实例名改为“backup”这样这个问题就得以解决了。花絮我也尝试给定制 health 新建一个实例名但是未成功后发现似乎新添实例名需要按如下方式配置一下。但因为时间和研究的动力不足就没有继续了。xxx.xxx1.0xxxdefaultbackup # 似乎可以这样添加实例名
http://www.pierceye.com/news/149945/

相关文章:

  • 微信 公司网站 怎么做手机端视频网站模板下载
  • 何为响应式网站太原自助建站
  • 网站建设方案书怎么写安徽和住房建设厅网站
  • 北京市住房和城乡建设厅官方网站重庆百度seo整站优化
  • 备案ip 查询网站查询网站河南建筑职业技术学院
  • 均安公司网站建设免费建手机个人网站
  • 南京做网站的网络公司排名wordpress发邮件更新
  • 抽奖的网站怎么做美食类网站模板
  • 自己建一个网站难吗网络安全行业公司排名
  • 做招聘的h5用哪个网站企业网站需要多大空间
  • 织梦 公司网站模板html5网站开发的源码
  • 晋江网站建设公司电脑培训网
  • 电子商务网站开发的题网站关键词排名怎么提升
  • 在百度网站备案查询上显示未备案是什么意思wordpress资源分享主题
  • 夏县做网站郑州做商城网站
  • 网站首页推荐网络服务提供者发现用户利用其网络服务对未成年
  • 中外网站建设区别微信软文是什么意思
  • 苏州网站建设极简幕枫卫浴网站建设
  • 优秀企业网站欣赏网站的备案怎么处理
  • 怎样做古玩网站毕业设计开题报告网站开发
  • 西安网站 建设app注册推广
  • 丹徒网站建设公司代理公司注册价格
  • 网站建站建设网站中国商标商标查询网
  • 机械加工网站平台南京app制作开发公司
  • 用vs2008做网站教程seo推广网址
  • 正规制作网站公司哪家好视觉传达设计专业作品集
  • 做网站多少钱特惠西宁君博s网站网站建设多少钱
  • 建筑模版东莞网站建设技术支持手机网站开发学习
  • 专业网站建设效果显著做设计找参考的设计网站有那些
  • 最新网站建设技术2022年新闻摘抄简短