adb 우분투 17.04에 대한 권한이 없습니다


47

내가 시도 할 때 :

$ adb devices

나는 결과를 얻는다 :

List of devices attached 
????????????    no permissions

무엇이 문제입니까?

Ubuntu 16.04 시스템에서 시도했지만 완벽하게 작동했습니다. 7.1.1 장치를 사용해 보았고 완벽하게 작동했습니다.


시도하십시오 sudo adb devices. 그것이 훌륭하지만 메모리에서 작동한다면 연결된 장치를 확인하기 위해 루트가 아니어야했습니다.
shmink

1
sudo에서는 작동하지 않지만 루트 로그인에서는 작동합니다. 문제는 안드로이드 스튜디오는 루트가 아닌 세션에서 adb 만 수행하고 jksudo로 실행하면 내 파일을 인식하지 못한다는 것입니다.
Nadav Tasher

나는 안드로이드 스튜디오와 일반적으로 jetbrains로 만든 것을 발견했습니다. 안드로이드 스튜디오를 설치할 때 루트로 했습니까?
shmink

/ usr / local /에 root로 설치하고 777 -R에 chmoded하면 root로 실행되지 않으므로 설정 및 SDK를 인식합니다.
Nadav Tasher

루트로 실행하고 설정과 SDK를 적절히 변경하는 것은 어떻습니까.
shmink

답변:


64

Adb 서버를 다시 시작하십시오.

sudo adb kill-server

그리고

sudo adb start-server

그런 다음 장치를 연결하십시오. 디버깅을 켜고 입력하십시오.

adb devices

2
이것은 작동합니다. 일종의. 그런 다음 실제로 실행 adb devices하면 장치가 표시됩니다 (지문 대화 상자가 나타납니다). 그러나 여전히 안드로이드 스튜디오에서는 작동하지 않습니다. 또한 Android Studio를 실행 adb devices하고 콘솔에서 실행 하면 "adb 서버가 오래되었습니다"라는 메시지가 표시되고 adb 서버가 다시 시작됩니다. 그 후 "권한 없음"상황에 다시 도달합니다.
Shade

작동하지 않습니다. adb 장치는 아무것도 표시하지 않으며 헤드셋은 다시 권한을 요청하지 않습니다.
Tyguy7

61

같은 문제가 있었다. 장치 USB 모드가 충전 되지 않는지 확인하면 해결되었습니다.


5
여기에서도 결과없이 Udev 규칙을 수정하고 USB를 파일 공유 및 presto로 변경했습니다. 장치는 이전 우분투 버전에서 udev 규칙이나 특정 USB 모드가 필요하지 않았습니다.
Fco P.

3
정답이어야합니다 (adb 재시작 서버 아님)
RumburaK

1
정답입니다.
Alvaro Gutierrez Perez

1
정답은 아니지만 작동했습니다.
Uzumaki D. Ichigo

1
네, 정답입니다.

37

udev가 장치를 잘못 추가했을 가능성이 큽니다. 나도이 문제가 있었고 비교적 간단한 해결책을 발견했습니다.

lsusb에서 기기 찾기

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

이 경우에 관심 지점 :

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

해당 장치 파일을 확인하십시오

$ ls -l /dev/bus/usb/001/006

아마 당신은 같은 것을 볼 것입니다

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

이는 장치 파일이 사용자 루트와 그룹 루트가 소유한다는 것을 의미하므로 adb는 루트로 액세스 할 수 있지만 표준 사용자는 액세스 할 수 없습니다.

이것은 새로운 udev에 규칙을 작성하여 해결할 수 있습니다 - 내가 사용 /etc/udev/rules.d/51-android.rules- 그룹에 장치를 추가하는 plugdev이미의 구성원을 가정 ADB (사용 확인 할 수 shoukd id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** ATTR {idProduct} == "4ee7"을 1 단계에서 찾은 고유 제품 ID로 바꾸십시오. ** (공급 업체가 Google Inc.가 아닌 경우 공급 업체 ID를 lsusb에서 콜론 이전의 ID로 바꿉니다).

이제 장치를 분리했다가 다시 연결하고 (udev가 자동으로 새 파일에 응답해야 함) tadaa :

$ adb devices
List of devices attached 
YC873P0G    device

출처 : Android 디바이스 디버깅 USB에 대한 udev 규칙 추가-Janos Gyerik


이 답변은 내 문제를 해결했습니다. 고마워요
alexmeia

감사합니다 @Paul 도움이되었습니다. 이유가 잘 설명되어 있습니다. udev 서비스를 다시 시작해야한다고 생각합니다.
Gagan

sudo를 사용할 필요가없는 것들에 sudo를 사용하고 싶지 않다면 이것이 가장 확실한 해결책입니다
aholt

그것은이다 이것은, 허용 대답해야 올바른 답. 가장 높은 등급의 답변은 실제로 해결 방법입니다.
Joel Cross

이것은 나를 위해 해결했습니다. 어제 규칙없이 작동했지만 우분투에 업데이트를 설치 한 후에는 작동이 중지 되었으며이 작업을 수행해야했습니다.
simernes

2

Sumeet Deshmukh의 답변을 확장하기 위해 adb콘솔 의 명령 만 사용하려는 경우 그의 접근 방식은 일반적으로 작동 합니다.

그러나 Android Studio는 분명히 자체 adb 서버를 시작하여 우리를 죽입니다. 즉, sudo를 사용하여 서버를 종료 / 시작한 후 Studio가 다시 시작되므로 권한이없는 시작 상황이 발생합니다.

해결 방법은 먼저 Studio를 시작한 다음 서버 시작 / 중지를 수행하는 것입니다. 그렇게하면 Nexus 5X가 Studio에서 유효한 실행 대상으로 표시되도록했습니다.

이것이 최선의 상황은 아니지만 (Studio를 시작할 때마다 명령을 실행해야 함) 신속하고 더러운 방법으로 트릭을 수행합니다. 더 영구적 인 해결책을 찾으면이 답변을 업데이트 할 것입니다.


시스템 업데이트 (전화) 및 스튜디오 업데이트로 해결 된 버그 였지만 대단히 감사합니다.
Nadav Tasher

2

전화 에서 USB 모드를 변경하면 나에게 트릭이되었습니다. ( 파일 전송으로 설정했습니다 .)


2

하시기 바랍니다 사용에 제안 된 솔루션을 따르지 않는sudo ( sudo adb start-server)! 이것은 루트 (관리자)로 adb를 실행하며 그렇게 실행되어서는 안됩니다! 나쁜 해결책입니다 !

루트로 실행되는 모든 파일은 파일을 작성하거나 수정하는 경우 루트에서만 사용하도록 권한을 변경할 수있는 경우 시스템에서 모든 작업을 수행 할 수 있습니다. 다시 말하지 마십시오!

할 옳은 일이 , 사용자가 권한을 가지고 있는지 확인 체크 아웃 시스템을 설정 한 이 가이드 내가 제대로 수행하는 방법에 작성합니다.


2

plugdev그룹 에 자신을 추가하고 모든 셸 세션에서 변경 사항이 적용되도록 시스템을 재부팅 한 후에는 작동하지 않았습니다 . 그런 다음 51-android.rules파일 이 없으며 /etc/udev/rules.d문제를 해결하기 위해 다음을 수행해야한다는 것을 알았습니다.

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

또한 Android 기기를 분리했다가 다시 연결해야했습니다.


이것은 나에게도 효과가 없습니다 ...
Tyguy7

1

당신은 당신의 안드로이드 장치에 대한 권한을 제공해야합니다. 설정> 개발자 옵션으로 이동하십시오. USB 디버깅을 껐다가 다시 켜십시오. 케이블을 분리했다가 다시 연결하십시오. 또한 개발자 옵션에서 저장된 모든 권한을 삭제하십시오. 이제 전화 프롬프트에서 디버깅 권한을 요청해야합니다. 받아들입니다.


작동하지 않습니다, 나는 이미 그것을 시도했습니다. 중요하다면 안드로이드 7.1.2를 사용하고 있으며 7.1.1을 실행하는 다른 장치에서 작동했습니다.
Nadav Tasher

모든 호스트 인증 삭제를 시도 했습니까? 그 후 재부팅?
Joel G Mathew

재부팅하지 않았습니다. 나는 그것을 시도하고 그것이 효과가 있는지 말해 줄 것이다.
Nadav Tasher

그것이 효과가 있다면 대답을 받아 들일 수 있습니다.
Joel G Mathew

오늘 나중에 확인
Nadav Tasher


0

왜 이것이 효과가 있는지 모르겠지만 이것이 나를 위해 일한 유일한 솔루션이었습니다.

adb가 실행중인 곳을 찾으십시오 (나와 같은 경우 여러 버전이 설치되어 있음). 반응 네이티브와 같은 도구는 삶을 어렵게 만들기 위해 임의의 다른 버전을 사용하기로 결정할 수 있습니다. 나를 위해 그것은 ~/Android/Sdk/platform-tools/adb입니다. 그래서 나는 실행할 것이다 :

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

안드로이드 툴은 매우 귀찮습니다.


0

설정 >> 유지 관리 >> 보관으로 이동하십시오. 그런 다음 왼쪽 상단 메뉴를 확인하고 USB 컴퓨터 연결을 클릭 한 다음 미디어 장치 (MTP)로 변경하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.