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
}
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