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

解压查看内容如下:

相关推荐
普通网友6 小时前
Android Jetpack 架构组件最佳实践之“网抑云”APP
android·架构·android jetpack
普通网友6 小时前
原创_Android Jetpack Compose 最全上手指南
android·android jetpack
FDoubleman6 小时前
Android Jetpack之Compose入门(一)
android·android jetpack
普通网友6 小时前
Android Jetpack从入门到精通,干货满满
android·android jetpack
子云心6 小时前
Android Jetpack 系列(七)App Startup 启动优化
android·android jetpack·jetpack·initializer·startup·appstartup
嫩嫩的猿6 小时前
android jetpack compose Model对象更新变量 UI不更新、不刷新问题
android·ui·android jetpack
普通网友6 小时前
Android Jetpack 之 LifeCycle 组件_android 自定义view lifecycle
android·gitee·android jetpack
_codemonster7 小时前
数据库字符集编码问题
android·数据库·oracle
Pika13 小时前
深入浅出Compose HitTest 机制
android·android jetpack