android 新增一个系统服务

news/2024/12/5 19:03:33/

android如何新增一个系统服务呢?
两个方案,一个是新增一个systemserver下的binder服务,一个是新增一个native的独立进程服务
这里选的是第一种,但坐下来感觉第二种更简单一些
因为systemserver要遵循的规则特别多
先是在startOtherServices里找了个简单的服务,然后跟着抄了一遍
正是因为没有完全抄,导致了一系列问题
这里总结下流程,以帮助下次能够更快速完成
1 先说下步骤
1.1 添加aidl文件 framworks/base/core/java/android/app/IPerformanceManager.aidl
1.2 添加客户端文件 framworks/base/core/java/android/app/PerformanceManager.java
1.3 添加服务端文件framworks/base/services/core/java/com/android/server/performance/PerformanceManagerService.java

1.4 启动:framworks/base/services/core/java/com/android/server/SystemServer.java里面startOtherService里面加进去
1.5 加注解相关的常量 framworks/base/core/java/android/context/Context.java 定义名称常量
1.6 加selinux权限 角色文件(service_contexts),类型配置文件(service.te),添加权限文件(untrusted_app_all.te)

2 遇到的问题
   2.1 @hide注解标签要加上,不对外开放的接口和方法都要加
   2.2 要加RemoteException的异常保护,且catch里面还要抛出去:throw e.rethrowFromSystemServer();
   2.3 PerformanceManager.java 类要加注解标签 @SystemService("performanceManager")
   2.4 Context 里面的常量名称的定义要和类名一致
3 权限问题,先adb shell setenforce 0 关闭后,看看能否功能跑成功后再慢慢调试权限问题。


http://www.ppmy.cn/news/1551132.html

相关文章

【Python-Open3D学习笔记】004Mesh生成方法

PointCloud的TriangleMesh生成方法 本文使用csv文件作为点云数据(csv —> DataFrame —> PointCloud) 文章目录 PointCloud的TriangleMesh生成方法0. 数据展示1. Poisson表面重建2. Alpha Shapes3. 检测边界4. 小结 0. 数据展示 数据可视化方法…

heapq模块常用方法

heapq.heapify(x) import heapq# heapq.heapify(x)将列表x转换为堆 # 在堆数据结构中,最小元素总是位于根节点(索引为 0) # 这个操作是在原列表上进行的,会改变列表的顺序 my_list [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] heapq.hea…

【智能摄像头带电源控制的系统实现远程监控的过程】

以下是一个详细的实现方案: 一、系统概述 智能摄像头带电源控制的远程监控系统,以智能摄像头为核心,集成电源管理、网络通信、远程控制等功能,通过互联网或局域网实现远程监控和管理。 二、关键组件与技术 1. **智能摄像头**&…

宠物领养平台:SpringBoot技术解密

第2章 开发环境与技术 本章节对开发宠物领养系统需要搭建的开发环境,还有宠物领养系统开发中使用的编程技术等进行阐述。 2.1 Java语言 Java语言是当今为止依然在编程语言行业具有生命力的常青树之一。Java语言最原始的诞生,不仅仅是创造者感觉C语言在编…

LVS-DR工作模式简介(相对nat性能更高)

LVS-DR工作模式简介(相对nat性能更高)1.工作原理:共享ip修改mac(保证识别回包的mac地址)共享ip:虚拟网卡接口lo修改mac:内核参数在这种模式下,LVS调度器(也称为Director)和后端真实服务器(Real Server)都配置有相同的V…

电销卡风控管理系统

开发背景: 1、很多业务场景下为确保服务质量,需要对手机呼出的电话进行录音备份管理,在线试听,AI质检过滤风险关键词以及话术进行预警,防止挂羊头卖猪肉。 2、对于风险客户和在跟进客户进行拦截呼叫,一个团…

Flutter 1.2:flutter配置gradle环境

1、在android的模块中进行gradle环境配置 ①在 gradle-wrapper.properties文件中将url配置为阿里云镜像,因为gradle的服务器在国外,国内下载非常慢,也可在官网进行下载 gradle版本下载 gradle版本匹配 阿里云镜像gradle下载 可以通过复制链…

原生js上传图片

无样式上传图片 创建一个 FormData 对象:这个对象可以用于存储数据。 将文件添加到 FormData 对象:通过 append() 方法,将用户选择的文件添加到 formData 对象中。 使用 fetch 发送请求:使用 fetch API 或者其他方法将 FormDat…