2016-11-25 77 views
0

我有一个根设备,并且想要更改/ system/app中的apk(Prueba.apk)的chmod权限,以便实现我正在使用的带有BusyBox的RootTools库。而我的代码是:我无法以编程方式将chmod更改为777

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

但是,当我检查,运行代码根文件浏览器我看到,Prueba.apk使用chmod权限没有改变后。

回答

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

在运行需要root访问权限的代码之前,您应该使用su -c来尝试

/system/*是只读的,命令应该以root身份运行,但首先需要将/system分区挂载为读取和写入。有多种方法可以做到这一点,但我的Nexus 5X这个工程:
mount -o rw,remount /system

然而,这种方法可能不是那么合作尝试用不同的方式挂载R/O here

+0

的确我使用RootTools库来执行root命令。 –