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

解压查看内容如下:

相关推荐
Albert Edison14 分钟前
【Python】文件
android·服务器·python
大模型玩家七七37 分钟前
效果评估:如何判断一个祝福 AI 是否“走心”
android·java·开发语言·网络·人工智能·batch
Aurora4191 小时前
Android事件分发逻辑--针对事件分发相关函数的讲解
android
似霰1 小时前
Android 日志系统4——logd 写日志过程分析一
android
youyoulg2 小时前
利用Android Studio编译Android上可直接执行的二进制
android·ide·android studio
闽农2 小时前
Android ANR 调用栈溯源
android·anr
似霰2 小时前
Android 日志系统7——Android 平台日志丢失问题分析
android·log
·云扬·2 小时前
MySQL Undo Log 深度解析:事务回滚与 MVCC 的底层支柱
android·数据库·mysql
fareast_mzh3 小时前
如何检测、排除手机控制屏幕
android