Bueno, me pasa algo raro. Estaba pensando en trastear con Dotcase.apk de CyanogenMod 13, así que pude reconstruir el apk. Incluso me aseguré de firmarlo con la clave de prueba de la plataforma Android (lo comprobé, ¡el APK original estaba firmado exactamente con esta misma clave! Extraje el CERT.RSA y comparé los certificados - ¡son los mismos!).
Luego reemplacé los APKs en /system/priv-app/Dotcase, cambiando el Dotcase.apk por mi propio construido - básicamente el mismo que el enviado, sin cambiar el código, sólo construido por mí.
La aplicación Dotcase está usando UEventObserver y abriendo un "DEVPATH=/devices/virtual/switch/cover"
Y aquí es donde surge el problema. SELinux me está dando un dolor de cabeza con el mensaje:
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
después de eso la aplicación se bloquea, llevándose con él com.Android.systemui, con:
07-29 01:07:56.960 2558 4902 E AndroidRuntime: java.lang.RuntimeException: Unable to open socket for UEventObserver
mientras que la misma aplicación con el mismo código y la misma clave de firma está bien.
He probado algunos trucos que implican el uso de algo como supolicy de SuperSU, etc, en vano - parece que la aplicación (que arranca como android:sharedUserId="android.uid.systemui"
) está comenzando antes de que cualquier otra cosa se ponga en marcha.
Ahora las preguntas:
-
¿Qué hice mal?
-
¿Cómo solucionarlo?
-
¿Existe tal vez la posibilidad de desactivar SELinux por completo Parcheando algo en /system - al menos por el momento mientras estoy trasteando con él?
-
¿O la única opción es construir la imagen completa de la rom cyanogenmod con mis cambios cada vez que necesito probar un pequeño cambio? :(
PS: el dispositivo es HTC M9 GSM (himaul)