Android源码添加自定义系统服务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuezhuo_752/article/details/53787390

1、创建AIDL文件

在源码frameworks/base/core/java/android/os/下面新增了一个ICCCService.aidl

 

2、AIDL文件放到编译frameworks/base/Android.mk中

frameworks/base/Android.mk文件中的LOCAL_SRC_FILES增加aidl的声明:

LOCAL_SRC_FILES += \

        core/java/android/os/ICCCService.aidl

3、创建Service文件

framework/base/services/core/java/com/android/server/下面新增了一个

CCCService.java 用来实现AIDL文件定义的接口。

 

4、将自定义Service加入到SystemServer启动进程

先在frameworks/base/core/java/android/content/Context.java中添加一行

public static final String CCC_SERVICE="ccc";

修改 frameworks/base/services/java/com/android/server/SystemServer.java

 startOtherServices() 函数 try模块中增加以下代码

CCCService cccService = null;

try{

Slog.i(TAG,"vavService Service");

cccService = new CCCService(context);

ServiceManager.addService(Context.vav_SERVICE,cccService);

}catch (Throwable e){

Slog.e(TAG,"Failure starting cccService Service",e);

}

5、修改SePolicy的编译验证

修改 /external/sepolicy/service.te

在最后一行添加

type ccc_service,      service_manager_type;

然后修改同目录下 /external/sepolicy/service_contexts 文件

中间插入一行

ccc           u:object_r:system_server_service:s0

 

6、重新编译源码

别忘了先 make update-api


参考:

http://www.cnblogs.com/liam999/p/5933827.html

http://www.cnblogs.com/xerrard/p/5206192.html

猜你喜欢

转载自blog.csdn.net/yuezhuo_752/article/details/53787390