要先将/system进行可读写挂载,默认是只读就算是root用户不不能删除。
"su mount -o remount /system"
具体有可能不是这个,因为有ext4或者yaffs2的,要根据具体的实现情况来做。可以先手动做做再使用APP删除。

解决方案 »

  1.   

    rm之前执行这个:
    Runtime.getRuntime().exec("su -c mount -o remount /system");
    另外还有可以获取执行命令的输出信息呢,你可以找一下,然后做一下判断,看运行结果成功与否。
      

  2.   


    剛試了都不行
    mProcess = Runtime.getRuntime().exec(
    "su -c mount -o remount /system");
    mProcess = Runtime.getRuntime().exec("rm /system/xbin/su");和mProcess = Runtime.getRuntime().exec(
    "su -c mount -o remount /system");
    mProcess = Runtime.getRuntime().exec("su rm /system/xbin/su");也試過 雖然有Toast顯示獲取權限 但都不行
      

  3.   

    我说过这个 mount -o remount /system只是举例,不一定完全是这样的,有的版本还要添加参数。你可以先使用adb shell测试一下哦。只有行不行这个结果,我也没有办法向下分析了。主要是先找到执行命令后的输出信息,这样也可以判断出命令执行是否成功。
      

  4.   

    这个涉及到了Linux文件系统的知识,如果要想知道准确的命令是怎样的,最好执行一下adb shell mount来查看system的文件系统信息。如果你不理解,可以把上个命令的输出内容贴上来,我来帮你看。
      

  5.   


    我原本是想要先把xbin/su移動到sdcard作備份
    之後按一個按鈕把sdcard內的su再還原到xbin/su(好像SuperSU開啟一樣)
    可惜不太懂源碼是怎樣運行,最後找到一個方法現在只差把sdcard內的su再還原到xbin/su這部份public void onClick(View v) { // TODO Auto-generated method stub os = new DataOutputStream(suProcess.getOutputStream());
    try {
    DataOutputStream mDataOutputStream = new DataOutputStream(
    suProcess.getOutputStream());
    suProcess = Runtime.getRuntime().exec("sh");

    suProcess = Runtime.getRuntime().exec(
    "cp /system/xbin/su /mnt/sdcard/su");

    mDataOutputStream.writeBytes("su;");
    mDataOutputStream.flush();
    mDataOutputStream.close();
    suProcess.waitFor();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    try{
            //Get Root
            suProcess = Runtime.getRuntime().exec("su");
            os= new DataOutputStream(suProcess.getOutputStream());         //Remount writable FS within the root process
            os.writeBytes("mount -w -o remount -t ext4 /dev/block/mmcblk0p9 /system\n");
            os.flush();         //Do something here
            os.writeBytes("rm /system/xbin/su\n");
            os.flush();                  //End process
            os.writeBytes("exit\n");
            os.flush();    }
    catch (IOException e) {
            throw new RuntimeException(e);
        } } });
      

  6.   

    能从/system中拷贝出来只能说这个文件系统是「可读」的,和「可写」还是另一回事。如果不能删除掉su,或者添加一个文件,说明/system分区还是没有成功的「可读写挂载」,从开始回帖就说了建议你使用adb shell测试一下,你一直都没有理睬,这点我着实很困惑。
      

  7.   


    剛剛試了
    root:/ # mount | grep system
    mount | grep system
    /dev/block/platform/msm_sdcc.1/by-name/system /system ext4 rw,seclabel,relatime,
    data=ordered 0 0它說我有rw 但仍然不能mv /system/xbin/su /sdcard/su
      

  8.   

    你mv或者rm有没有提示信息呢?如果文件系统可以读写了,root权限也有了,那应该没有问题了的。
      

  9.   


    mv在android手機內是沒用 不知道什麼原因
    那我就用cp然後rm那個檔案代替在電腦用adb是很容易做到我想要的效果 因為輸入了su之後一直是root狀態
    即使我rm /system/xbin/su仍然是root
      

  10.   

    哦,原来是这个呀,你可以先把su放到/system/bin/中做一个桥的作用。这样每次都执行"su -c xxxxxx"。
      

  11.   


    還有想問問如何一開啟程式 得知用戶的superuser是按了允許還是拒絕觸發事件?