[android] 개발을위한 장치 설정 (???????????? 권한 없음)

삼성 갤럭시 넥서스 폰 ( Android 4.0 플랫폼)을 사용하고 있습니다.

Ubuntu Linux OS에서 Android 앱을 개발 중입니다. Samsung 핸드셋 장치에서 직접 응용 프로그램을 실행하고 싶기 때문에 다음 설정 단계를 수행했습니다.

  1. 내 프로젝트 AndroidManifest.xml파일 android:debuggable="true"에서 <application>요소에 추가 되었습니다.

  2. 기기의 설정> 보안 사용 알 수없는 소스에서

  3. 장치에서의 설정> 개발자 옵션이 활성화 된 USB 디버깅

  4. 내 컴퓨터 /etc/udev/rules.d/51-android.rules에서 다음 내용으로 파일을 작성했습니다 .

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
  5. 내 컴퓨터에서 chmod a+r /etc/udev/rules.d/51-android.rules명령을 실행하십시오.

그런 다음 컴퓨터에서 터미널을 열고 adb devices명령을 실행하면 다음과 같은 결과 가 나타납니다.

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

내 장치는 보지 못했지만 ???????????? no permissions다음 명령을 실행했습니다.

 adb kill-server
 adb start-server
 adb devices

그러나 나는 여전히 얻었다.

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

왜? 내가 무엇을 놓치고 있습니까?



답변

나를 위해 일하는 것은 adb 서버를 죽이고 다시 시작하는 것입니다. 리눅스에서 : sudo adb kill-server그리고 sudo adb start-server. 그런 다음 상자에서 거의 모든 장치를 감지합니다.


답변

마침내 대답을 찾을 때까지 아무것도 효과가 없었습니다.
http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

앞으로 텍스트가 사라질 경우를 대비하여 여기에 텍스트를 복사하고 있습니다.

다음 내용으로 /tmp/android.rules라는 파일을 만듭니다 (16 진 공급 업체 번호는 공급 업체 목록 페이지에서 가져옴).

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

다음 명령을 실행하십시오.

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

전화와 컴퓨터 사이의 USB 케이블을 분리하십시오.

전화를 다시 연결하십시오.

운영 adb devices이제 전화 액세스 권한이 있는지 확인 .

이 사용할 수 있다는하십시오 노트 , USER="$LOGINNAME"대신 , MODE="0666".rules대체 파일$LOGINNAME 로그인 이름id -nu 인쇄 할 수 수 있습니다.

경우에 따라 udev 규칙 파일에 끝과 가까운 정렬 이름 (예 :)을 제공해야 할 수도 있습니다 z51-android.rules.


답변

다음 명령을 입력하십시오 :

adb kill-server
sudo ./adb start-server
adb devices

문제는 루트로 adb 서버를 실행하지 않는 것입니다.


답변

위의 모든 것을 시도했지만 아무도 작동하지 않았습니다 .. MTP에서 카메라 (PTP)로 연결된 것으로 전환했을 때 마침내 작동했습니다.


답변

실행 주장에 이르기까지이 질문에 게시 나쁜 답변이 많이 있습니다 adb으로 root전혀 관계가없는 문제를 해결하는 (유일한 또는 권장 솔루션으로 선전해서는 안 이는).

다음은 한 번 에 모든 장치 adbfastboot장치 의 권한을 관리하는 가장 짧고 가장 보편적 인 단일 레시피입니다 .

echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb

또는 내가이 요지에 게시 한 약간 더 긴 버전을 사용할 수 있습니다 .

OP가 그의 질문에서 잘못한 특정 사항 udev.rules파일 을 편집 한 후 규칙을 다시로드하지 않았습니다 .

또한 OP는 자신의 휴대 전화에 어떤 Android 빌드 (일명 ROM)도 포함시키지 않았습니다. 이 idVendor값은 소프트웨어에서 설정되므로 ROM에 따라 다릅니다. 따라서 04E8원래 규칙에 사용 된 값은 Samsung stock ROM이있는 장치에서만 작동했을 것입니다. 그러나 이것은이 udev규칙 에는 문제가되지 않습니다 . VendorID에 관계없이 모든 장치 adb또는 fastboot인터페이스 와 일치합니다 .


답변

Archlinux에서는 가끔 이런 일이 발생할 수 있습니다. 수정 :

$ sudo -s
# adb kill-server
# adb start-server


답변

데비안을 사용하는 사용자는 “/etc/udev/rules.d/51-android.rules”파일을 생성하기 위해 Ubuntu에서 장치를 설정하기위한 가이드가 작동하지 않습니다. 나는 여기 에서 지시를 따랐다 . 참고로 여기에 똑같이 내려 놓으십시오.

이 파일을 수퍼 유저로 편집

sudo nano /lib/udev/rules.d/91-permissions.rules

이것과 비슷한 텍스트를 찾으십시오

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664

그런 다음 아래와 같이 모드를 0666으로 변경하십시오.

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666

이로 인해 adb가 작동하지만 인식 할 수 있도록 장치를 설정해야합니다. 이 파일을 수퍼 유저로 만들어야합니다.

sudo nano /lib/udev/rules.d/99-android.rules

입력

SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666

위의 행은 HTC에 대한 것이며, 전체 목록을 보려면 @grebulon의 게시물을 따르십시오.

파일을 저장 한 다음 수퍼 유저로 udev를 다시 시작하십시오.

sudo /etc/init.d/udev restart

USB를 통해 전화를 연결하면 프로젝트를 컴파일하고 실행할 때 감지되어야합니다.