0 votos

SELinux restringiendo mi aplicación de sistema incluso cuando estaba firmada con la misma clave que la enviada anteriormente.

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:

  1. ¿Qué hice mal?

  2. ¿Cómo solucionarlo?

  3. ¿Existe tal vez la posibilidad de desactivar SELinux por completo Parcheando algo en /system - al menos por el momento mientras estoy trasteando con él?

  4. ¿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)

0voto

Schemer Puntos 115

Bueno, me di cuenta de que lo había estropeado. Lo estaba construyendo con el manifiesto equivocado. Debería haber sido android:sharedUserId="android.uid.system" en lugar de android:sharedUserId="android.uid.systemui" . Cuando comparé los manifiestos (¡gracias apktool por descifrar el manifiesto para mí!) se hizo evidente. Reemplazar los bits relacionados en el manifiesto lo arregló. Problema resuelto. Probablemente estaba usando el repositorio equivocado.

0 votos

Esto incluso se señala aquí: github.com/CyanogenMod/android_device_htc_hima-common/commit/ - efectivamente requiere una regla adicional de SElinux, por lo que se revirtió. Estaba usando algún otro repositorio por error en el que no se revirtió.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X