Eh bien, j'ai quelque chose de bizarre qui se passe. Je pensais bricoler avec Dotcase.apk de CyanogenMod 13, donc j'ai pu reconstruire l'apk. Je me suis même assuré de le signer avec la clé de test Platform Android (j'ai vérifié, l'APK original a été signé avec cette même clé ! J'ai extrait le CERT.RSA et comparé les certificats - ils sont les mêmes).
J'ai ensuite remplacé les APK dans /system/priv-app/Dotcase, en remplaçant Dotcase.apk par ma propre construction - fondamentalement la même que celle qui a été livrée, aucun code n'a été modifié, je l'ai simplement construite moi-même.
L'application Dotcase utilise UEventObserver et ouvre un fichier "DEVPATH=/devices/virtual/switch/cover".
Et c'est là que le problème se pose. SELinux me donne un mal de tête avec le message :
07-29 01:07:56.918 4902 4902 W UEventObserver: type=1400 audit(0.0:1229): avc: denied { create } for scontext=u:r:platform_app:s0:c512,c768 tcontext=u:r:platform_app:s0:c512,c768 tclass=netlink_kobject_uevent_socket permissive=0
après cela, l'application se plante, emportant avec elle com.Android.systemui, avec :
07-29 01:07:56.960 2558 4902 E AndroidRuntime: java.lang.RuntimeException: Unable to open socket for UEventObserver
alors que la même application avec le même code et la même clé de signature est bien.
J'ai essayé quelques trucs qui impliquent l'utilisation de quelque chose comme supolicy de SuperSU, etc, sans succès - il semble que l'application (qui démarre en tant que android:sharedUserId="android.uid.systemui"
) commence avant que tout le reste ne se mette en place.
Maintenant les questions :
-
Qu'est-ce que j'ai fait de mal ?
-
Comment le réparer ?
-
Y a-t-il peut-être une possibilité de désactiver complètement SELinux en Parcheando quelque chose dans /system - au moins pour le moment, pendant que je bricole ?
-
Ou la seule option est de construire toute l'image rom cyanogenmod avec mes modifications à chaque fois que j'ai besoin de tester un petit changement ? :(
PS : l'appareil est le HTC M9 GSM (himaul)