Android 프로그램 이 Linux 명령 을 실행 하 는 해결 방법 및 주의사항

질문 설명
    루트 가 있 는 안 드 로 이 드 장치 에서 app 은 Liux 명령 을 실행 합 니 다.app 은 su 권한 을 가 져 와 야 합 니 다.일부 안 드 로 이 드 메인보드 에서 이상 이 발생 할 수 있 습 니 다.Command:[su]Working Directory:null 환경: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();
  }
 }
장치 가 루트 가 되 었 는 지 확인 하고 지난달 테스트 할 때 아무런 문제 가 없 었 기 때문에 오늘 새 장치 테스트 를 바 꿀 때(새 장치,오래된 장치 안 드 로 이 드 버 전이 일치 하고 모두 5.1 이 며 모두 루트 가 되 었 음)다음 과 같은 이상 이 발생 했 습 니 다.

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");이 코드 를 실행 합 니 다.권한 이 없습니다.루트 가 되 었 습 니 다.권한 이 없습니다.제 가 가 겠 습 니 다.ls -al  /시스템/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 권한 문제,
 
해결 방법 은 다음 명령 을 실행 하 는 것 입 니 다.전 제 는 안 드 로 이 드 메인보드 가 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 는 제3자 가 루트 권한 을 가 져 오 는 것 을 허용 하지 않 습 니 다.
인터넷 의 해결 방법 은:

root@android:/ $ su
su: uid 10061 not allowed to su
root@android:/
총결산
위 에서 말 한 것 은 소 편 이 소개 한 안 드 로 이 드 프로그램 이 리 눅 스 명령 을 수행 하 는 해결 방법 과 주의사항 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기