2016-11-25 2 views
0

У меня есть корневое устройство и вы хотите изменить разрешение chmod apk (Prueba.apk), которое находится внутри/system/app, поэтому для достижения того, что я использую библиотека RootTools с BusyBox. И мой код:Я не могу изменить chmod на 777 в Android программно

 Command comando = new Command(0, "chmod 777 /system/app/Prueba.apk"); 
    try { 
     RootTools.getShell(true).add(comando); 
    } catch (IOException | RootDeniedException | TimeoutException ex) { 
     ex.printStackTrace(); 
    } 

Но когда я проверяю, после выполнения этого кода с Root исследователя файла я вижу, что права доступа CHMOD для Prueba.apk не изменилась.

ответ

0

Проблема заключалась в том, что когда я установил системный раздел, как RW Я сделал это так:

 Command comando = new Command(0, "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system/app"; 
    try { 
     RootTools.getShell(true).add(comando); 
    } catch (IOException | RootDeniedException | TimeoutException ex) { 
     ex.printStackTrace(); 
    } 

Но правильный путь делает ВСЮ системного раздела RW, а не просто/папки системы/приложения, так что я изменил код:

 Command comando = new Command(0, "mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system"; 
    try { 
     RootTools.getShell(true).add(comando); 
    } catch (IOException | RootDeniedException | TimeoutException ex) { 
     ex.printStackTrace(); 
    } 

И тогда я смог выполнить команду chmod 777 отлично.

0

Перед использованием кода, требующего доступа к корню, следует использовать с использованием su -c.

/system/* доступен только для чтения, а команды должны запускаться от root, но сначала необходимо установить раздел /system как чтение и запись. Есть множество способов сделать это, но для моего Nexus 5x это работает:
mount -o rw,remount /system

Однако этот метод не может работать так, попробуйте другой способ крепления г/о here

+0

Действительно, я использую библиотеку RootTools для выполнения команд root. –