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