0

嗨,我正在像这样在 aospCodebase/frameworks/base/services/java/com/android/server/SystemServer.java 中添加我的 koushikservice

KoushikService koushikservice = null;
            try{
                traceBeginAndSlog("KOUSHIK_SERVICE adding trace");
                koushikservice = new KoushikService(mSystemContext);
                ServiceManager.addService(Context.KOUSHIK_SERVICE,koushikservice);
            }catch(Throwable e){
                Slog.e(TAG, "Starting KOUSHIK_SERVICE failed!!! ", e);
            }
            traceEnd();

我收到“KOUSHIK_SERVICE 添加跟踪”日志,但随后被 avc 拒绝。如果您需要更多信息,请告诉我。

4

1 回答 1

1

您需要添加 SELinux 规则以允许该服务。默认情况下 SELinux 是拒绝的,除非明确允许。

您最简单的方法是与现有的服务和规则进行比较。

其他基于我为我的案例添加的服务,并假设Context.KOUSHIK_SERVICE = "koushik"这里的值大致是应该添加的:

文件:koushik.te

type koushik, domain;

在文件service_contexts中,添加:

koushik                    u:object_r:koushik_service:s0

在文件service.te中 添加:

type koushik_service,  service_manager_type;

在文件system_server.te中,添加:

add_service(system_server,koushik_service)

最后,如果您想允许域查找和使用您的服务,例如从platform_app,您添加platform_app.te

allow platform_app koushik_service:service_manager find;
于 2021-01-06T18:33:13.943 回答