我无法以编程方式将 Android 中的 chmod 更改为 777

I can't change chmod to 777 in Android programmatically

我有一个 root 设备,想更改 /system/app 内的 apk(Prueba.apk) 的 chmod 权限,因此我将 RootTools 库与 BusyBox 一起使用。我的代码是:

        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 权限没有改变。

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

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

但是,这个方法可能行不通,所以尝试用不同的方式挂载 r/o here

问题是,当我将系统分区挂载为 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命令了