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

解压查看内容如下:

相关推荐
踢球的打工仔4 小时前
PHP面向对象(7)
android·开发语言·php
安卓理事人4 小时前
安卓socket
android
安卓理事人10 小时前
安卓LinkedBlockingQueue消息队列
android
万能的小裴同学11 小时前
Android M3U8视频播放器
android·音视频
q***577412 小时前
MySql的慢查询(慢日志)
android·mysql·adb
JavaNoober12 小时前
Android 前台服务 "Bad Notification" 崩溃机制分析文档
android
城东米粉儿13 小时前
关于ObjectAnimator
android
zhangphil14 小时前
Android渲染线程Render Thread的RenderNode与DisplayList,引用Bitmap及Open GL纹理上传GPU
android
火柴就是我15 小时前
从头写一个自己的app
android·前端·flutter
lichong95116 小时前
XLog debug 开启打印日志,release 关闭打印日志
android·java·前端