¿Cómo leer/escribir el archivo como root usando Kivy para Android?
Pregunta
Me gustaría escribir a /etc /hosts en mi aplicación Kivy, y seguramente tengo un dispositivo enraizado para probar. Intenté varias maneras, pero siempre obtuve la salida de mi aplicación sin ninguna advertencia o error.
He intentado:
subprocess.Popen("su -c touch /etc/hosts", shell = True)
subprocess.Popen("su -c bash -c touch /etc/hosts", shell = True)
subprocess.Popen(["su", "-c", "bash -c touch /etc/hosts"])
y varias combinaciones de ellos. Cada vez que puedo obtener el cuadro de mensaje de la aplicación SU, pidiéndome permiso y presioné "Permitir", pero mi aplicación sale después de eso.
EDITAR: la salida de logCat está en http://pastebin.com/ymt5vxra
¡Muchas gracias si alguien puede dar alguna sugerencia!
Solución
Su error indica que String-Escape no es una codificación conocida. Kivy está enviando una versión lite de Python con sus libs, no todas las codificaciones, por ejemplo. Lo que puedes probar es:
- Agarra el proyecto Python-for Android
- Entrar en codificaciones privadas/lib/
- Copie el archivo de su computadora a este directorio (/usr/lib/python2.7/encodings/string_escape.pyo)
- Reconstruya su aplicación
Entonces eso debería funcionar.
El proyecto PGS4A-Kivy no es bueno tan pronto como Kivy no envía los archivos que desea. Por eso he empezado Python-for android proyecto. Tendrás el poder de lo que quieres o no en tu distribución final.