개발을위한 장치 설정 (???????????? 권한 없음)
삼성 갤럭시 넥서스 폰 ( Android 4.0 플랫폼)을 사용하고 있습니다.
Ubuntu Linux OS에서 Android 앱을 개발 중입니다. Samsung 핸드셋 장치에서 직접 응용 프로그램을 실행하고 싶기 때문에 다음 설정 단계를 수행했습니다.
내 프로젝트
AndroidManifest.xml
파일android:debuggable="true"
에서<application>
요소에 추가 되었습니다.기기의 설정> 보안 사용 알 수없는 소스에서
장치에서의 설정> 개발자 옵션이 활성화 된 USB 디버깅
내 컴퓨터
/etc/udev/rules.d/51-android.rules
에서 다음 내용으로 파일을 작성했습니다 .SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev"
내 컴퓨터에서
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
전혀 관계가없는 문제를 해결하는 (유일한 또는 권장 솔루션으로 선전해서는 안 이는).
다음은 한 번 에 모든 장치 adb
와 fastboot
장치 의 권한을 관리하는 가장 짧고 가장 보편적 인 단일 레시피입니다 .
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를 통해 전화를 연결하면 프로젝트를 컴파일하고 실행할 때 감지되어야합니다.
나는 같은 문제가 있었다. 해결책은 동료와 같다 : (그런데, 당신은 장치를 루팅 할 필요가 없다.)
- 수퍼 유저로 전환하려면 "su"를 입력하십시오.
- 경로 / adb kill-server.
- your-path / adb 시작 서버.
- 오류가 발생하지 않으면 루트 계정에 "your-path / adb devices"가있는 장치 목록을 볼 수 있습니다.
- 수퍼 유저를 종료하십시오.
- 이제 계정에서 "adb 기기"를 수행 할 수 있습니다.
즐겨.
조금 늦을 수도 있지만 Android ADB USB 드라이버를 수동으로 추가하는 방법에 대한 훌륭한 기사가 있습니다. Ubuntu 14.04 LTS에서 Android ADB USB 드라이버 수동 추가
링크 내용을 추가하도록 편집
단계
참고 : USB 디버깅 모드 에서 Android 장치를 연결했는지 확인하십시오
터미널 ( CTRL + ALT + T
)을 열고 다음 명령을 입력하십시오.lsusb
이제 이와 비슷한 답변을 얻을 수 있습니다.
Bus 002 Device 013: ID 283b:1024
참고 : 이것을 참조하여Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″
이제 다음 명령을 입력하십시오. sudo gedit /etc/udev/rules.d/51-android.rules
그러면 Android 규칙 파일 ( 51-android.rules
) 이 생성 되거나 지정된 위치에서 기존 파일이 열립니다 ( /etc/udev/rules.d
).
이 파일에 새 줄을 추가하십시오.
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″
참고 편집 idVendor
및 idProduct
장치 값으로 값을. 저장하고 닫습니다.
이제 다음 명령을 입력하십시오
sudo chmod a+rx /etc/udev/rules.d/51-android.rules
.-읽기 / 실행 권한 부여
sudo service udev restart
- udev
서비스를 다시 시작하십시오.
이제에를 추가해야 idVendor
합니다 adb_usb.ini
. 다음 명령을 입력하십시오 :
cd ~/.android
gedit adb_usb.ini
다음 값을 추가하십시오 0x283b
이것은 0x ( idVendor
값)에 지나지 않습니다 . 따라서 값을 바꾸십시오. 장치 값과 관련하여 파일을 저장하고 닫습니다.
이제 다음 명령을 입력하십시오 :
sudo service udev restart
Android 기기를 연결 해제했다가 다시 연결하십시오.
이제 다음 명령을 입력하십시오 :
adb kill-server
adb devices
당신은 간다! 장치가 나열되어 있어야합니다.
Ubuntu 14.04 LTS 에서 수동으로 Android ADB USB 드라이버 추가
나를 위해 일했다.
Galaxy S3에서도 동일한 문제가 발생했습니다. 내 문제는 idVendor
가치 04E8
가 옳지 않다는 것이었다. 올바른 것을 찾으려면 스마트 폰을 컴퓨터에 연결 lsusb
하고 터미널에서 실행 하십시오. 스마트 폰이 다음과 같이 나열됩니다.
Bus 002 Device 010: ID 18d1:d002 Google Inc.
따라서 올바른 idVendor
값은 18d1
입니다. 그리고 그 라인은 다음과 같아야합니다 /etc/udev/rules.d/51-android.rules
.
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
그런 다음 달리고 sudo udevadm control --reload-rules
모든 것이 작동했습니다!
- http://developer.android.com/guide/developing/device.html 의 지침을 따르십시오.
- /etc/udev/rules.d/51-android.rules에서“0bb4 ″의 공급 업체 ID를“18d1 ″으로 바꾸십시오. 또는 SUBSYSTEM == "usb", SYSFS {idVendor} == "18d1", MODE = "0666"과 같은 다른 줄을 추가하십시오.
- 컴퓨터를 다시 시작하거나 udev 서비스를 다시 시작하십시오.
사용 M0Rf30/android-udev-rules
GitHub의 커뮤니티 udev에-규칙을 유지
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
이것은 내가 지금까지 본 sudo apt-get install android-tools-adb
공식 문서 에서 권장 되는 것보다 훨씬 완전한 udev-rules 목록 이며, 그 문제를 해결했습니다.
udev를 다시 시작하면 adb 서버를 종료하고 adb server goto android sdk 설치 경로를 시작하고 sudo에서 모두 수행하십시오. 그런 다음 adb 장치를 실행하면 권한 문제가 해결됩니다.
내 장치는 POSITIVO이고 내 운영 체제는 그렇습니다. Ubuntu 14.04 LTS
문제는 변수 이름에있었습니다.
/etc/udev/rules.d/51-android.rules 파일을 만들고 SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"
장치를 분리하고 실행했습니다.
$ sudo udevadm control --reload-rules
$ sudo service udev restart
이 후에 나는 안드로이드 모드를 개발자 모드에서 다시 연결하고
$ adb devices
List of devices attached
1A883XB1K device
플러그를 뽑지 않고
제공된 모든 답변은 USB 케이블을 분리했다가 다시 연결할 수 있다고 가정합니다. 이것이 불가능한 상황에서 (예를 들어, 원격 일 때), 제안 된 udev 규칙이 플러그를 다시 꽂을 때 본질적으로 다음을 수행 할 수 있습니다.
lsusb
관심있는 장치를 찾으십시오 (예 :
Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus
버스의 버스 번호를 기록한 다음 (예 003
: 버스의 경우) 실행하십시오 .
sudo chmod a+w /dev/bus/usb/003/*
분명히 이것은 당신이 원하는 것보다 더 관대 할 수 있지만 (이것보다 더 많은 장치가 연결되어있을 수 있습니다) 아이디어를 얻습니다.
adb
다른 답변이 제안하는 것처럼 서버를 루트로 실행해서는 안됩니다 . 대신 Arch Linux를 사용하는 경우 다음을 수행하십시오.
android-udev
Pacman으로 패키지 설치udev 규칙을 다시로드하십시오.
# udevadm control --reload-rules
adbusers
그룹에 자신을 추가 한 다음 로그 아웃 및 로그인하십시오.# usermod -aG adbusers $LOGNAME
출처 : https://wiki.archlinux.org/index.php/android#Configuring_adb
GROUP="plugdev"
사용자의 기본 그룹 을 사용 하지 마십시오.
우분투 12.04 LTS의 경우 HTC Incredible usb 모드를 charge에서 Media로 변경해야했는데 장치가 adb로 표시되었습니다. 물론 두 경우 모두 디버깅이 이미 진행 중입니다.
하시기 바랍니다 사용에 제안 된 솔루션을 따르지 않는sudo
( sudo adb start-server
)! 이것은 루트 (관리자)로 adb를 실행하며 그렇게 실행되어서는 안됩니다! 나쁜 해결책입니다 !
root로 실행되는 모든 파일은 파일을 작성하거나 수정하면 root에서만 사용하도록 권한을 변경할 수 있습니다. 다시 말하지 마십시오!
할 옳은 일이 , 사용자가 권한을 가지고 있는지 확인 체크 아웃 시스템을 설정 한 이 가이드 내가 제대로 수행하는 방법에 작성합니다.
나는 su를 사용했고 작동하기 시작했다. 일반 사용자와 Jetbrains를 사용할 때이 문제가 발생하지만 su 모드에서 Jetbrains를 다시 시작한 후 아무 작업도하지 않고 장치를 볼 수 있습니다.
Ubuntu 13.04 및 Jetbrains 12.1.4를 사용하고 있습니다.
/home/username/.android/ 에있는 adb_usb.ini 파일을 편집 할 수도 있습니다 . 이 파일에는 연결하려는 장치의 id 공급 업체 목록이 포함되어 있습니다. 장치의 id 공급 업체를 새 줄에 추가하면됩니다 (줄당 하나의 id 임). 그런 다음 adb 서버를 다시 시작하고 장치를 다시 연결하십시오.
우분투 12.10에서 나를 위해 일했습니다.
어쨌든,이 문제를 해결하기 위해 무엇을했는지 ( Ubuntu에서 ).
어떤 경우에 이러한 명령을 실행해야하는지 정의했습니다. 대부분의 우분투 사용자에게는 홈 폴더 (숨겨진 파일
.bashrc
)가 있습니다.이 명령의 실행을 기록 할 수 있습니다. 그러나
bash
콘솔에 명령 을 입력하면 이러한 명령이 트리거됩니다 .쉘 .zshrc가 있으므로 다음을 수행했습니다.
열린 콘솔 :
gedit .zshrc
파일이 열리면 다음 줄을 추가하십시오.
./.add_device_permissions.sh
이후 또는 전에이 파일을 작성해야합니다.이 파일 .add_device_permissions.sh
에는 다음이 작성됩니다.
#!/bin/bash
# Add permissions
ADB="/home/vadimm/Android/Sdk/platform-tools/adb"
$ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices
또한 비밀번호를 하드 코딩해야하는 .permissions_redmi_note를 만들어야합니다.
.zshrc
불필요하게 파일에 추가하지 않기 위해 시스템 자체를 시작할 때 경로를 지정할 수 있습니다.Startup Applications Preferences
"추가"를 누르고 명령을 작성하는 위치 : /home/vadimm/.add_device_permissions.sh
- 또한 명령 줄에서 다음 명령을 사용해보십시오.
./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices
사용할 때 다음과 같은 오류 메시지가 나타나는 사람 adb devices
no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]
다음을 실행하십시오
sudo -s
adb kill-server
adb start-server
맞춤 빌드 Android 기기에서 문제가 해결되었습니다.
참고 URL : https://stackoverflow.com/questions/9210152/set-up-device-for-development-no-permissions
'Programing' 카테고리의 다른 글
C #에 HashSet에 해당하는 AddRange가 있습니까? (0) | 2020.03.27 |
---|---|
C ++ std :: pair의 C # 아날로그 란 무엇입니까? (0) | 2020.03.27 |
PDOException SQLSTATE [HY000] [2002] 해당 파일 또는 디렉토리가 없음 (0) | 2020.03.26 |
일반 JavaScript를 사용한 "hasClass"기능은 무엇입니까? (0) | 2020.03.26 |
UIButton에서 텍스트의 오른쪽에 이미지를 어떻게 배치합니까? (0) | 2020.03.26 |