для android8.1 разрешение SELinux более строгое. Он позволяет регистрироваться в ServiceManager только службам, определенным в plat_service_contexts, у нас есть служба поставщика, которая ранее была зарегистрирована в ServiceManager, теперь она будет возвращать ошибку при вызове defaultServiceManager () -> addService, как показано ниже.
ошибка: 04-12 18: 07: 13.764 268 268 E SELinux: avc: denied {add} for service = media.stream pid = 649 uid = 1013 scontext = u: r: np_mediastream: s0 tcontext = u: object_r: default_android_service: s0 tclass = service_manager permissive = 0
Если я добавлю эту разрешающую политику в / device, не удастся создать для правила neverallow, определенного в domain.te, ниже.
разрешить np_streammedia default_android_service: service_manager add;
правило: не разрешено * default_android_service: service_manager add;
Итак, как зарегистрировать сервис собственного поставщика в ServiceManager?
Кажется, что в документе Google есть некоторые решения, но я плохо понимаю. https://source.android.com/security/selinux/images/SELinux_Treble.pdf