Come leggere/scrivere il file come root usando kivy per Android?
Domanda
Vorrei scrivere su /etc /host nella mia app kivy e ho sicuramente un dispositivo radicato da testare. Ho provato in diversi modi, ma mi esca sempre la mia app senza alcun avviso o errore.
Ho provato:
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"])
e diverse combinazioni di esse. Ogni volta che riesco a ottenere la casella di messaggi dell'app SU che mi chiede il permesso e ho premuto "Consenti", ma la mia app esce dopo.
MODIFICARE: output di logcat è a http://pastebin.com/ymt5vxra
Molte grazie se qualcuno può dare un suggerimento!
Soluzione
Il tuo errore indica che String-Escape non è una codifica nota. Kivy sta spedendo una versione Lite di Python con le loro librerie, non tutte le codifiche, ad esempio. Quello che puoi provare è:
- Prendi Python-for-Android Project
- Entra in private/lib/codifica
- Copia il file dal tuo computer in questa directory (/usr/lib/python2.7/encodings/string_escape.pyo)
- Ricostruisci la tua applicazione
Allora dovrebbe funzionare.
Il progetto PGS4A-Kivy non è buono non appena Kivy non spedisce i file desiderati. Questo è il motivo per cui ho iniziato Python-for-Android progetto. Avrai il potere di ciò che vuoi o no nella tua distribuzione finale.