Android4.4 在系统中添加自己的System Service

添加系统service时,源码限制只能添加以android开头的包名,如果不是android开头的,编译时会提示找不到对应的文件。

比如说在系统中添加一个包名为:tel.gateway.connservice的系统服务。

1.在framework/base目录下面创建如下路径:tianyi/java/tel/gateway/connservice/。在这个目录中添加对用的aidl和service。

2.在framework/base/android.mk中的LOCAL_SRC_FILES添加对应的aidl。

3.在framework/base/android.mk中找到LOCAL_SRC_FILES,并且添加tel/*,否则编译时会提示找不到添加的java文件或者aidl文件

4.在SystemService.java中注册对应的Service。此时编译之后系统里面已经有了添加的系统service了,但是上层apk还不能调用。

5.在framework/base/core/java/android/app/ContextImpl.java注册服务代理。也就是上层apk通过Context.getSystemService函数获取的代理。

6.开发上层apk时需要替换原生sdk中的android.jar。需要在build/core/pathmap.mk中找到FRAMEWORKS_BASE_SUBDIRS将tianyi添加上。系统编译时会将自动扩展成tianyi/java,并且将包tel/gateway/connservice打包进android.jar中。

7.生成的可以换android.jar路径为:out/target/product/p201_iptv/obj/JAVA_LIBRARIES/framework_intermediates/javalib.jar

解压查看内容如下:

相关推荐
TimeFine5 小时前
AI 编码工作流的设计
android·ai编程
骑着蜗牛撵大象3275 小时前
C++20 协程 × 屏障:手写一个 co_await 版 Barrier,让等待不再钉死线程
android·c++20·协程·并发编程·co_await·屏障同步
山东孙燕姿7 小时前
设备台账重构:从一张表到三层模型
android·java·网络·低代码·重构·rxjava
蒸鱼Yuzheng8 小时前
移动端 CPU 调度分析:线程亲和性、大小核迁移与卡顿
android·perfetto·性能分析·线程优化·cpu调度
booboosui8 小时前
安卓唤醒词:12 维 MFCC 加 DTW,阈值 1.8
android
传奇开心果8 小时前
Compose Multiplatform 共享边界实战:架构契约、互操作同步与可回退设计
android·kotlin
事圆则缓8 小时前
从开机到首帧:Android 系统与应用启动流程源码分析
android
AI吃大瓜9 小时前
指针压力表读数4:Android实现指针压力表读数(可实时检测)
android·指针读数·指针压力表·压力表·压力表读数
fengci.9 小时前
CTF2刷题记录(困难部分)
android·开发语言·前端·学习·php
hunterandroid9 小时前
[Android 从零到一] ARouter 路由框架原理:APT 生成路由表与组件化通信
android