J'ai un service init qui ne démarre pas dans la version utilisateur. Lors de l'exécution d'un build userdebug, il fonctionne bien mais pas dans le build utilisateur. Je n'arrive pas à comprendre pourquoi il ne fonctionne pas. Je ne vois pas non plus d'erreur à ce sujet dans logcat.
on property:myprop=1
start mysvc
service mysvc /system/bin/mybinary myargs
user system
group system
oneshot
Mon application définit cette propriété lorsque je veux que le service démarre.
Toute aide est la bienvenue.
0 votes
Est
/data/logs/
accessible àsystem
UID pour l'écriture ? Quel est le contexte SELinux du service ? Peut-il accéder à/data/logs/
? Voir le journal du noyau pourinit
services.0 votes
Oui,
system
UID a accès au dossier, c'est pourquoi il fonctionne dans le build userdebug. Je ne m'inquiète pas pour SELinux pour l'instant ; ma compilation est exécutée en mode permissif.0 votes
J'ai jeté un coup d'oeil au journal du noyau et il n'y a rien non plus. Ma propriété
myprop
est défini de manière appropriée mais le service n'est pas en cours d'exécution.2 votes
Quelle version d'Android utilisez-vous ? Définir
seclabel
et réessayez.0 votes
J'utilise Android 8. Je cherche à essayer avec
seclabel
.0 votes
@IrfanLatif utilisant
seclabel
travaillé. Pourquoi, alors que j'ai défini le service comme étant l'utilisateur/groupesystem
déjà ?2 votes
Je ne me souviens pas exactement pourquoi, je dois regarder dans le code. Mais c'est le comportement des versions récentes d'Android.
1 votes
Ok, je le vois maintenant, le contexte par défaut n'a pas assez de permission. Je vais donc m'assurer que je lui donne suffisamment d'autorisations, mais sans en abuser. Merci !