Android 如何在系统中加入一个和AMS一样级别的服务 ------基于Android O

这集记录下如何在Android系统中添加一个和AMS一样的级别的服务,这个算定制服务.

我们在Android系统开发中会使用到各种形形色色的系统提供的服务,比如:AMS,WMS,PMS(PowerManagerService)等等,那我们如果想加入自己的服务该如何创建,服务访问的范围如何限制(涉及到Selinux)以及加入到系统中呢?此文只考虑加入系统..

我们都知道系统服务大多都是IBinder,所以我们如果想加载到系统中,也需要将我们定制的服务弄成IBinder,既然有IBinder,那肯定AIDL文件少不了的,然后通过binder机制,我们可以像AMS一样可以在framework层和app层都可以用到.

这里举个例子:  比如要添加MyManagerService

1.由于是framework中的服务,可以参考IAcitvityManager,首先在framework/base/Android.mk中进行添加你要加入的IMyManager.aidl IMyManager.aidl所在路径自己新建,写上对应的路径即可.

2.由于你要升级为系统api,那么需要将服务类的方法以及字段按照txt文件中的格式都加入到 framework/base/api/下面的current.txt,system_current.txt等,因为这个是编译时候会编入系统api中,另外在txt中添加本服务字段到context(如Context.ACTIVITY_SERVICE暴露字段)添加之后最好make update-api一下3.接下来就是要将该服务加入到系统服务进程SystemService中,这块需要了解下开机启动流程(此处不扩展),添加好自己的服务然后需要注册到SystemServiceRegesitry.java中,这样系统进程可以帮你把该服务启动起来了.  

4.需要在Context.java中加入对应api下context中的字段.

5.最后在SystemServer.java需要加入我们的服务ServiceManager.addService(Context.MY_MANAGER_SERVICE,new MyManagerService),这样系统就帮我们管理好服务了                                                                                                            

这样就可以在我们定制的手机里访问到我们的service,通过adb shell services list|grep mymanagerservice了

如有不对,欢迎指正.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值