我无法通过编程方式将chmod更改为777

时间:2016-11-25 14:58:16

标签: java android root chmod roottools

我有一个root设备,想要更改/ system / app里面的apk(Prueba.apk)的chmod权限,所以为了实现这个目的,我使用的是带有BusyBox的RootTools库。我的代码是:

        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文件浏览器运行该代码后,我发现Prueba.apk的chmod权限没有改变。

2 个答案:

答案 0 :(得分:0)

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

/system/*是只读的,命令应该由root运行,但首先需要将/system分区挂载为读写。有多种方法可以做到这一点,但对于我的Nexus 5x,这有用: mount -o rw,remount /system

但是,这种方法可能不起作用,所以尝试以不同的方式挂载r / o here

答案 1 :(得分: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而不仅仅是/ system / app文件夹,所以我将代码更改为:

        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命令。