1. 程式人生 > >Android原始碼新增自定義系統服務

Android原始碼新增自定義系統服務

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