Montare il sistema R / W in applicazione android per modificare i file di sola lettura

Come posso eseguire all'interno della mia applicazione, per modificare un file in / system / Directory?

Devo rendere il sistema R / W scrivere?

  • Aggiunta di file locali .aar a Gradle utilizzando "flatDirs" non funziona
  • UDP Broadcast: Motorola blocca le porte in ingresso?
  • Prendi il PID di un process per ucciderlo, senza conoscere il suo nome completo
  • ClassCastException in PreferenceActivity
  • Come faccio a creare i propri nomi delle risorse?
  • Android: Impostazione Modifica dell'ID di visualizzazione di text o di text Programmaticamente
  • Ho provato:

    process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes("mount -o remount,rw /system\n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); 

    e molti molti altri, senza successo.

    Se qualcuno mi può aiutare, ho apprezzato molto! 🙂 Inoltre, se l'ho finalmente fatto, si applica a tutti i telefoni radicati? O in alcuni telefoni è diverso?

  • Android, Gradle. Come build applicazioni e eseguire test da un'applicazione di test
  • ASyncTasks blocca altri
  • Compatibilità vettoriale Android
  • Prendi il nome della città da latitudine e longitudine in android che dà servizio non disponibile Android 4.0.3?
  • Porta GPUimage per android
  • LocationRequest in Google Play Services non si aggiorna per intervalli impostati in less di 1 secondo.
  • 2 Solutions collect form web for “Montare il sistema R / W in applicazione android per modificare i file di sola lettura”

    Io uso:

      os.writeBytes("mount -o remount rw /system/\n"); //instead of a comma, I have a space. //When I tried it with a comma, mine didn't work either. 

    E questo mi permette di montare con successo.

    Se si esce subito dopo, naturalmente non funziona. Devi rimanere nello stesso process e utilizzare i comandi linux per modificare il file.

    Non ho idea di come modificare i file, ma suggerisco googling come fare le cose nel terminal di linux e poi mettere il codice appropriato in os.writeBytes("CODE_HERE");

    Anche se, per quanto riguarda il process di assembly, non so se questo command functionrà universalmente. Può solo fortunatamente lavorare sul mio dispositivo.

    EDIT:
    Ora uso RootTools: http://code.google.com/p/roottools/downloads/list
    Ecco la pagina Wiki:
    http://code.google.com/p/roottools/w/list

    Ma ora sto usando:

     RootTools.remount(file, mountType); //For example: RootTools.remount("/system/", "rw"); 

    Credo che sia universale

    Modifica: Tutte le versioni dei codici di seguito NON montano il sistema come RW. * Leggi i commenti sotto per vedere perché. La soluzione di questo non è un semplice command.

    Edit1: sono andato su Super User apk, la scheda Impostazioni e "scattato" all'ultimo elemento, per aggiornare il binario su. Con quel aggiornamento, tutto sotto non funziona.

    Edit2: ha iniziato un'intera conversazione con la mia auto qui. La correzione per l'ultimo binario corrente è in fondo al post

    ================================================== ================================

    Scopri come farlo! Seconda giornata di sforzi, e finalmente l'ho trovato !!!!! Ha provato diverse cose, e la risposta è stata a una semplice modifica del modo,

    cosa ho fatto:

    Codice prima versione: (non funziona)

     String[] mountRW = { "su", "-c", "chmod 777 /system/etc/build.prop"}; String[] mountRO = {"su", "-c", "chmod 755 /system/etc/build.prop"}; //TODO REMOVE testing purposes File file2 = new File("/system/build.prop"); //Make file Read-Write process = Runtime.getRuntime().exec(mountRW); process.waitFor(); //TODO REMOVE testing purposes Log.d("MOUNT RW?", "RW WRITABLE? "+ file2.canWrite()); /////////////////////// // process the file ////////////////////// // After editing finish, //make Read Only file again process = Runtime.getRuntime().exec(mountRO); process.waitFor(); //TODO REMOVE Log.d("MOUNT RO?", "RO WRITABLE? "+ file2.canWrite()); 

    Non ho incollato alcuni provare i casi di cattura. Inoltre ho un altro problema .. E ho risolto nella versione 2. Il piccolo problema era, che, stavo chiedendo una specifica per un command su, e l'utente, whereva accettare SU cmd per RO, SU cmd per RW. e un'altra volta per altre cose nel mio programma. Nella seconda versione im usando il command generico su, così l'utente deve accettare solo i privilegi SU solo una volta e im utilizzando il stream di output.

    Codice 2 (consigliato) (non funziona) :

     String mountRW = "chmod 777 /system/build.prop"; String mountRO = "chmod 755 /system/build.prop"; //TODO REMOVE File file2 = new File("/system/build.prop"); //Make file Read-Write process = Runtime.getRuntime().exec("su"); //Generic SU Command os = new DataOutputStream(process.getOutputStream()); os.writeBytes(mountRW + " \n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); //TODO REMOVE Log.d("MOUNT RW?", " RW WRITABLE? "+ file2.canWrite()); //////////////////////////// /// mod the file /////////////////////////// // After editing finish, make Read Only file again process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes(mountRO + " \n"); os.writeBytes("exit\n"); os.flush(); process.waitFor(); //TODO REMOVE Log.d("MOUNT RO?", "RO WRITABLE? "+ file2.canWrite()); 
    • Entrambi i codici richiedono Root sul dispositivo.
    • Entrambe le versioni non includono i casi di cattura. (Eclpise li troverà per te)
    • Controlla il tuo logcat (adb logcat), per vedere che funziona davvero!
    • Con l'ultimo bin binario, questo codice cambia leggermente. Il command modalità di modifica richiede 4 cifre. 0777 per le autorizzazioni rw e 0755 per le autorizzazioni ro!
    • Questo codice da solo, non fa nulla al tuo dispositivo.

    Solo esso monta built.prop RW, e poi lo riport a RO. Anche se se lo modifichi, puoi mattare il tuo dispositivo! Stai attento!

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.