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

Android系统开发 在Android10版本的Framework中添加系统服务

前言

  此博客讲解如何在Android10版本的framework中添加系统服务。 在framework中添加我们自己的定制服务在系统开发中特别有意义。

       大多数的设备开发场景,都会开发一个应用启动一个后台服务,预装到系统中,让他获得系统级权限,调用大多数的系统级服务以提供外包应用调用系统级功能。  但是,这种方式有一个问题,此应用依然不是运行在系统进程中,他依然是独立的进程。我们无法获得系统进程中的一些参数。如何解决这种需求呢?

   一些人会直接在ActivityManagerService、PowerManagerService、PhoneWindowManager 中直接修改或者增加代码,用广播的形式传递到应用层。但是这种方式问题很多,首先需要修改这些代码量超级多的原生服务,一不小心很容易出现问题。

  而最好的办法就是我们也添加一个系统级服务,提供给外部使用,而在这个服务中,我们可以通过直接调用相关服务实现需求。

第一步创建AIDL文件

创建位置:frameworks/base/core/java/android/os/IMySystemService.aidl

// IMySystemService.aidl
package android.os.device;interface IMySystemService {String getText(String aString);
}

第二步将AIDL文件添加到Android.bp中

文件路径:frameworks/base/Android.bp


java_defaults {name: "framework-defaults",installable: true,srcs: [// From build/make/core/pathmap.mk FRAMEWORK_BASE_SUBDIRS"core/java/**/*.java","graphics/java/**/*.java","location/java/**/*.java","lowpan/java/**/*.java","media/java/**/*.java","media/mca/effect/java/**/*.java","media/mca/filterfw/java/**/*.java","media/mca/filterpacks/java/**/*.java","drm/java/**/*.java","opengl/java/**/*.java","sax/java/**/*.java","telecomm/java/**/*.java","telephony/java/**/*.java","wifi/java/**/*.java","keystore/java/**/*.java","rs/java/**/*.java",":framework-javastream-protos",//略............."core/java/android/speech/tts/EventLogTags.logtags","core/java/android/net/EventLogTags.logtags","core/java/android/os/EventLogTags.logtags","core/java/android/webkit/EventLogTags.logtags","core/java/com/android/internal/app/EventLogTags.logtags","core/java/com/android/internal/logging/EventLogTags.logtags","core/java/com/android/server/DropboxLogTags.logtags","core/java/org/chromium/arc/EventLogTags.logtags",":apex-properties",":platform-properties",":framework-statslog-gen",//在此处添加IMySystemService.aidl的路径"core/java/android/os/device/IMySystemService.aidl",],//略....................
http://www.lryc.cn/news/603524.html

相关文章:

  • Kafka——Kafka控制器
  • Note3: CNN(卷积神经网络)
  • 八股训练营 40 天心得:一场结束,也是一场新的开始
  • OpenCV 学习探秘之四:从角点检测,SIFT/SURF/ORB特征提取,目标检测与识别,Haar级联分类人脸检测,再到机器学习等接口的全面实战应用与解析
  • 【第四章:大模型(LLM)】01.神经网络中的 NLP-(3)文本情感分类实战
  • 嵌入式中间件-uorb解析
  • 基于深度学习的医学图像分析:使用Capsule Networks实现医学图像分类
  • vscode开发微信小程序
  • 01 基于sklearn的机械学习-机械学习的分类、sklearn的安装、sklearn数据集、数据集的划分、特征工程中特征提取与无量纲化
  • (四十三)深度解析领域特定语言(DSL)第七章——语法分析器组合子(Parser Combinators)
  • 传统数据库连接已OUT!飞算JavaAI开启Java开发智能新潮流
  • 【C++算法】78.BFS解决FloodFill算法_算法简介
  • 两数之和(每天刷力扣hot100系列)
  • ubuntu 25.04 自带JS引擎gjs运行GTK with JavaScript 应用
  • TensorFlow深度学习实战——基于卷积神经网络进行情感分析
  • vue请求golang后端CORS跨域问题深度踩坑
  • 从0到1学PHP(五):PHP 数组:高效存储与处理数据
  • Linux网络管理
  • 万字详解——OSI七层模型:网络通信的完整架构解析
  • 机器学习-十大算法之一线性回归算法
  • Nginx反向代理的网站服务,然后将http重定向到https
  • 无人机图传:让天空视角 “触手可及”
  • .NET 10 中的新增功能系列文章1——运行时中的新增功能
  • 【C#|C++】C#调用C++导出的dll之非托管的方式
  • 百度前端面试题目整理
  • 基于springboot/java/VUE的旅游管理系统/旅游网站的设计与实现
  • 算法提升之数论(矩阵+快速幂)
  • [2025CVPR-图象分类]ProAPO:视觉分类的渐进式自动提示优化
  • B 站搜一搜关键词优化:精准触达用户的流量密码
  • deepseek+飞书多维表格 打造小红书矩阵