设为首页 收藏本站 662p开源网
开启辅助访问 切换到宽版

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

切换风格 立即注册 找回密码

安卓教程网

发表于 2017-12-7 10:34:45 | 显示全部楼层 |阅读模式
更多
一:问题描述
    在已经root过的android设备下,app执行一个linux命令,app需要获取su权限,在某些android主板下会出现异常, Command: [su] Working Directory: null Environment: null,代码如下:
  1. private void execLinuxCommand(String cmd){
  2.         Runtime runtime = Runtime.getRuntime();
  3.         try {
  4.             Process localProcess = runtime.exec("su");
  5.             OutputStream localOutputStream = localProcess.getOutputStream();
  6.             DataOutputStream localDataOutputStream = new DataOutputStream(localOutputStream);
  7.             localDataOutputStream.writeBytes(cmd);
  8.             localDataOutputStream.flush();
  9.         } catch (IOException e) {
  10.             Logger.i(TAG+"strLine:"+e.getMessage());
  11.             e.printStackTrace();

  12.         }
  13.     }
复制代码
 由于确认设备已经root,并且上个月测试的时候,没有任何问题,然后今天换新设备测试时(新设备,旧设备android版本一致,均为5.1,并且都已经root),却出现如下异常:
  1. java.io.IOException: Error running exec(). Command: [su] Working Directory: null Environment: null
  2. 12-02 10:00:08.685 W/System.err: Caused by: java.io.IOException: Permission denied
  3. 12-02 10:00:08.686 W/System.err:     at java.lang.ProcessManager.exec(Native Method)
  4. 12-02 10:00:08.686 W/System.err:     at java.lang.ProcessManager.exec(ProcessManager.java:209)
  5. 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   不存在
  1. root@rk3288:/system/xbin # ls -al su
  2. -rwsr-x--- root     shell       67160 2017-10-16 15:01 su
复制代码


   通过adb命令,看到是有su这个文件的,所以排除这个原因。
       2 /system/xbin/su 权限问题,
  
  解决办法是执行如下命令,前提是android主板给予了执行chmod 06755命令的权限
  1. chmod 06755 /system/xbin/su
复制代码


  如果执行以上命令,出现如下问题,请联系设备厂商
  1. root@rk3288:/system/xbin # chmod 06755 /system/xbin/su
  2. Unable to chmod /system/xbin/su: Read-only file system
复制代码


  3 /system/xbin/su 不允许第三方应用获取root权限
网上的解决办法是:

 
  1. root@android:/ $ su
  2. su: uid 10061 not allowed to su
  3. root@android:/
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|安卓教程网 ( 粤ICP备12089784号  

GMT+8, 2017-12-15 21:56 , Processed in 0.376653 second(s), 48 queries .

Powered by Discuz X3.1

© 2001-2013 IOS教程网

快速回复 返回顶部 返回列表