• android 程序执行linux命令注意事项


    一:问题描述

        在已经root过的android设备下,app执行一个linux命令,app需要获取su权限,在某些android主板下会出现异常, Command: [su] Working Directory: null Environment: null,代码如下:

    private void execLinuxCommand(String cmd){
            Runtime runtime = Runtime.getRuntime();
            try {
                Process localProcess = runtime.exec("su");
                OutputStream localOutputStream = localProcess.getOutputStream();
                DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);
                localDataOutputStream.writeBytes(cmd);
                localDataOutputStream.flush();
            } catch (IOException e) {
                Logger.i(TAG+"strLine:"+e.getMessage());
                e.printStackTrace();
    
            }
        }

      由于确认设备已经root,并且上个月测试的时候,没有任何问题,然后今天换新设备测试时(新设备,旧设备android版本一致,均为5.1,并且都已经root),却出现如下异常:

    java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
    12-02 10:00:08.685 W/System.err: Caused by: java.io.IOException: Permission denied
    12-02 10:00:08.686 W/System.err:     at java.lang.ProcessManager.exec(Native Method)
    12-02 10:00:08.686 W/System.err:     at java.lang.ProcessManager.exec(ProcessManager.java:209)
    12-02 10:00:08.687 W/System.err:     ... 17 more

          通过异常信息判断,Process localProcess = runtime.exec("su");执行这句代码,没有权限,都root了还没权限,我去。。。ls -al  /system/xbin/su信息如下:

    二:解决办法

      出现这种问题,一般有三个原因

      1 /system/xbin/su   不存在

    root@rk3288:/system/xbin # ls -al su
    -rwsr-x--- root     shell       67160 2017-10-16 15:01 su

       通过adb命令,看到是有su这个文件的,所以排除这个原因。

           2 /system/xbin/su 权限问题,

      

      解决办法是执行如下命令,前提是android主板给予了执行chmod 06755命令的权限

    chmod 06755 /system/xbin/su

      如果执行以上命令,出现如下问题,请联系设备厂商

    root@rk3288:/system/xbin # chmod 06755 /system/xbin/su
    Unable to chmod /system/xbin/su: Read-only file system

      3 /system/xbin/su 不允许第三方应用获取root权限

    网上的解决办法是:
    root@android:/ $ su su: uid 10061 not allowed to su root@android:/

     

      

  • 相关阅读:
    【C++】<bits/stdc++.h>
    【网易】被3整除
    【TCP/IP详解】UDP:用户数据报协议
    【网易】牛牛找工作
    【C++】<numeric>中iota函数:递增序列填充

    今天好像找到C语言延迟输出的原因了
    C语言第2
    c语言新知
    glade No package 'libxml-2.0' found
  • 原文地址:https://www.cnblogs.com/cq-jiang/p/7988678.html
Copyright © 2020-2023  润新知