bestsource

개발을 위한 장치 설정(권한 없음)

bestsource 2023. 8. 17. 21:33
반응형

개발을 위한 장치 설정(권한 없음)

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

저는 우분투 리눅스 OS에서 안드로이드 앱을 개발하고 있습니다.응용 프로그램을 삼성 핸드셋 장치에서 직접 실행하고 싶어서 다음 설정 단계를 수행했습니다.

  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라는 이름의 파일을 만듭니다.다음 내용을 포함하는 규칙(벤더 목록 페이지에서 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 이름,즉 what 당의로이름인, 즉, 엇무신.id -nu

에 따라에 가깝게 정렬되는 이름을 지정해야 할. 를 들어 udev 규칙 파일은 udev udev udev 파일과 유사합니다.z51-android.rules.

다음 명령을 입력합니다.

# cd to adb for sudo
cd `which adb | sed -e "s/adb//"`
adb kill-server
sudo ./adb start-server
./adb devices

This happens when you are not running adb server as root.  

위의 모든 것을 시도했지만, 아무 것도 효과가 없었습니다.MTP에서 카메라(PTP)로 연결을 전환했을 때 최종적으로 작동했습니다.

이 질문에는 출마를 주장하는 것에서부터 시작해서 나쁜 답변들이 많이 올라왔습니다.adb~하듯이root전혀 관련이 없는 문제를 해결하기 위해 (유일하거나 권장되는 솔루션으로 선전되어서는 안 됩니다.)

다음은 모든 장치 및 장치에 대한 권한을 한 번에 처리할 수 있는 가장 짧고 보편적인 방법입니다.

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는 그의 휴대폰에 어떤 안드로이드 빌드(일명 ROM)가 있는지 말하지 않았습니다.idVendor값은 소프트웨어에서 설정되므로 ROM에 따라 다릅니다. 그서 .04E8입니다. 이 ROM에 가 되지 . 그러나 이것은 문제가 되지 않습니다.udev- ▁with다▁-▁all▁rule가 있는 모든 장치와 일치합니다.adb또는fastboot공급업체 ID에 관계없이 인터페이스를 사용할 수 있습니다.

Archlinux에서는 이러한 현상이 가끔 발생할 수 있습니다.해결 방법:

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

데비안을 사용하는 사람들을 위해, Ubuntu 아래에서 "/etc/udev/rules.d/51-android" 파일을 만들기 위한 장치를 설정하기 위한 가이드입니다.규칙"이 작동하지 않습니다.저는 여기서부터의 지시를 따랐습니다.참고를 위해 같은 것을 여기에 적는 것입니다.

이 파일을 수퍼유저로 편집

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를 통해 전화기를 연결하면 프로젝트를 컴파일하고 실행할 때 인식됩니다.

저도 같은 문제가 있었습니다. 해결책은 동료와 같습니다. (참고로, 장치를 루팅할 필요는 없습니다.)

  1. su를 입력하여 수퍼유저로 전환합니다.
  2. 경로/adb kill-server를 입력합니다.
  3. 사용자 경로/adb 시작 서버.
  4. 오류가 발생하지 않으면 루트 계정에 "사용자 경로/부속 장치"가 있는 장치 목록을 볼 수 있습니다.
  5. 슈퍼 사용자를 종료합니다.
  6. 이제 계정에서 "adb devices"를 수행할 수 있습니다.

즐거운 시간 되세요.

조금 늦을 수도 있지만 Android ADB USB 드라이버를 수동으로 추가하는 방법에 대한 매우 좋은 기사가 있습니다.Ubuntu 14.04 LTS에서 Android ADB USB 드라이버 수동 추가

링크 콘텐츠를 추가하도록 편집됨

스텝

참고: Android 장치를 USB 디버깅 모드로 연결했는지 확인합니다.

터미널터미열기널(▁(열기▁open터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 파일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

이제 우리는 추가해야 합니다.idVendoradb_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 드라이버 수동 추가

나를 위해 일했습니다.

저도 갤럭시 S3에 같은 문제가 있었습니다.내 문제는 그것이idVendor04E8그것은 올바른 것이 아니었습니다.하고 올바른것면을폰스컴다연실고행니를 합니다.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그리고 모든 것이 작동했습니다!

을 합니다.M0Rf30/android-udev-rules는 udev-rulesGitHub을 유지했습니다.

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

은 제가 중 완전한 으로, 된 udev-rules, udev-rules, udev-rules보다 더 .sudo apt-get install android-tools-adb 공식 문서에서, 그리고 그것은 저를 위해 그 문제를 해결했습니다.

  1. http://developer.android.com/guide/developing(Archived link)/device.html 의 지침을 따릅니다.
  2. " " " " 를 합니다.0bb4와 함께18d1/etc/udev/rules.d/51-android.rules

    또는 다음과 같은 다른 행을 추가합니다.

    SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
    
  3. 컴퓨터를 다시 시작하거나 udev 서비스를 다시 시작합니다.

udev를 다시 시작하면 adb 서버를 종료하고 adb 서버를 시작하면 안드로이드 sdk 설치 경로로 이동하여 sudo에서 모두 수행합니다.그런 다음 adb 장치를 실행하면 권한 문제를 해결할 수 있습니다.

는 POSITIVO입니다.Ubuntu 14.04 LTS 그래서제문는변이있름었다니습에수제▁name다니▁so▁variable.

/etc/udev/rules.d/51-android 파일을 규칙퍼.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 리눅스를 사용하는 경우 대신 다음을 수행합니다.

  1. 합니다.android-udev이 포함된
  2. udev 규칙 다시 로드:

    # udevadm control --reload-rules
    
  3. 에 자신을 하세요.adbusers그룹화한 다음 로그아웃하고 로그인합니다.

    # usermod -aG adbusers $LOGNAME
    

출처: https://wiki.archlinux.org/index.php/android#Configuring_adb

사용을 권장하는 솔루션을 따르지 마십시오.sudo adb start-server)! 이 애드버타이즈는 루트(관리자)로 실행되며 그렇게 실행되면 안 됩니다!!!잘못된 해결 방법입니다!

루트로 실행되는 모든 작업은 시스템에서 모든 작업을 수행할 수 있습니다. 파일을 만들거나 수정하면 루트에서만 사용할 수 있는 권한이 변경될 수 있습니다.다시, 하지 마!

올바른 방법은 사용자에게 권한을 부여하도록 시스템을 설정하는 것입니다. 올바른 방법에 대해 쓴 이 가이드를 확인하십시오.

Ubuntu/Debian 사용자만 해당:Ubuntu가 USB 디버깅을 작동시키기 위해 해야 할 몇 가지 구체적인 작업이 있습니다. 여기에 설명되어 있습니다. https://developer.android.com/studio/run/device 여기 언급된 두 단계가 있습니다.터미널에서 다음 두 가지 명령을 실행합니다.

sudo usermod -aG plugdev $LOGNAME
sudo apt-get install android-sdk-platform-tools-common

대신시 .GROUP="plugdev"사용자의 기본 그룹을 사용합니다.

Ubuntu 12.04 LTS의 경우, 저는 HTC 인크레더블 usb 모드를 충전에서 미디어로 변경해야 했고 그 후 장치가 adb 아래에 나타났습니다.물론 디버깅은 두 경우 모두 이미 켜져 있었습니다.

저도 같은 문제가 있었고 다음 단계를 수행했습니다.

# Clone this repository
git clone https://github.com/M0Rf30/android-udev-rules.git
cd android-udev-rules
# Copy rules file
sudo cp -v 51-android.rules /etc/udev/rules.d/51-android.rules
# OR create a sym-link to the rules file - choose this option if you'd like to update your udev rules using git.
sudo ln -sf "$PWD"/51-android.rules /etc/udev/rules.d/51-android.rules
# Change file permissions
sudo chmod a+r /etc/udev/rules.d/51-android.rules
# If adbusers group already exists remove old adbusers group
groupdel adbusers
# add the adbusers group if it's doesn't already exist
sudo mkdir -p /usr/lib/sysusers.d/ && sudo cp android-udev.conf /usr/lib/sysusers.d/
sudo systemd-sysusers # (1)
# OR on Fedora:
groupadd adbusers
# Add your user to the adbusers group
sudo usermod -a -G adbusers $(whoami)
# Restart UDEV
sudo udevadm control --reload-rules
sudo service udev restart
# OR on Fedora:
sudo systemctl restart systemd-udevd.service
# Restart the ADB server
adb kill-server
# Replug your Android device and verify that USB debugging is enabled in developer options
adb devices
# You should now see your device

위의 단계는 Android-udev-규칙에 설명되어 있습니다.그것은 나에게 효과가 있었다.

다시 연결한 후 전화 화면에 나타나는 대화 상자를 확인하십시오.

sudo usermod -aG plugdev $LOGNAME

이 명령은 나에게 효과가 있었습니다.

USB를 컴퓨터에 연결하면 컴퓨터가 전화기의 앱을 디버그할 수 있다고 신뢰하는지 묻는 메시지가 나타납니다.예를 클릭하면 문제가 해결됩니다.

이것은 나를 미치게 했습니다.무엇보다도 여기에 있는 정말 오래된 제안 중 일부는 아치 리눅스 시스템에 영향을 줄 수 있습니다.규칙 해킹을 취소하기 위해 USB에서 부팅해야 했습니다.제 경우, USB에 연결되었을 때 안드로이드가 호스트를 인증하라는 메시지를 표시하지 못했고 다른 모든 사람들과 같은 증상을 보였습니다.

$ sudo adb devices
List of devices attached
89MY08NPA       no permissions; see [http://developer.android.com/tools/device.html]

뿌리가 되는 것은 중요하지 않았습니다.

이동하여 의 USB 설정을 확인합니다.Use USB for이 파일 전송으로 설정됩니다.제가 이 휴대폰에서 안드로이드 개발을 몇 년째 하고 있음에도 불구하고 어떤 이유로 제 것은 데이터 전송이 불가능하도록 설정되어 있었습니다.Google의 일부 업데이트로 인해 다른 설정으로 전환된 것이 틀림없습니다.

파일 전송으로 설정하면 호스트에서 디버깅을 허용하고 정상으로 돌아가라는 메시지가 표시됩니다.

enter image description here

저는 앞서 언급한 해결책 중 몇 가지를 시도했습니다.

  • adb 서버 다시 시작
  • 51항을 개정합니다.규칙.
  • 애드버서즈 그룹에 저를 추가합니다.

한 번은 효과가 있었습니다.장치에서 PC를 승인해 달라고 요청했고 이후에는 모든 것이 정상적으로 작동했습니다.

문제는 PC 재부팅 후 기기를 연결하려고 했을 때 역시 동일한 문제였습니다.지금 이 문제를 극복하기 위해 수동으로 취소해야 했습니다.Settings->Developer Options->USB debugging authorizations그리고 나서 그 장치는 다시 나에게 PC를 승인해 달라고 요청했고, 마침내 작동했습니다.

취소 수동으로 .Settings->Developer options->USB debugging

나는 unbu 20.04를 사용하고 있습니다.LTS.

만약 당신이 Ubuntu, deepin 등의 기반 디스트리뷰터와 같은 데비안에 있다면 당신은 실행을 시도할 수 있습니다.

sudo apt-get install android-sdk-platform-tools-common

Voila 당신의 문제가 해결되었습니다.

다른 모든 솔루션이 작동하지 않는 경우 전화기의 플러그를 뽑고 전원을 끕니다.Use developer options다시 전원을 켜고 전화기를 연결합니다.

저는 su를 사용했고 그것은 작동하기 시작했습니다.일반 사용자와 함께 Jetbrain을 사용할 때는 이 문제가 발생하지만 su 모드에서 Jetbrain을 다시 시작한 후에는 아무것도 하지 않고 내 장치를 볼 수 있습니다.

Ubuntu 13.04와 Jetbrain 12.1.4를 사용하고 있습니다.

/home/username/.android/에 있는 adb_usb.ini 파일을 편집해 볼 수도 있습니다.이 파일에는 연결할 장치의 ID 공급업체 목록이 포함되어 있습니다.장치의 ID 공급업체를 새 줄에 추가하기만 하면 됩니다(한 줄에 한 개의 ID).그런 다음 adb 서버를 다시 시작하고 장치를 다시 플러그합니다.

Ubuntu 12.10에서 작동했습니다.

어쨌든, (우분투에서) 이 문제를 해결하기 위해 내가 한 일.

  1. 어떤 경우에 이러한 명령을 실행해야 하는지 정의했습니다.홈 파일 Ubuntu 파일 Ubuntu 파일)가 ..bashrc).

    여기서 이러한 명령의 시작을 기록할 수 있습니다.그러나 이러한 명령은 다음 명령을 입력할 때 트리거됩니다.bash명령을 입력합니다.

  2. 셸 .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를 생성해야 합니다.

  1. .zshrc한 시스템할 때 경로를 할 수 : 불요시스자템시작때할경지수있정다습니할를로.Startup Applications Preferences

누르고 곳: "가를누" 르고명령작성위치는하을추위:치▁where:/home/vadimm/.add_device_permissions.sh

  1. 해 볼 수 . ./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices

언급URL : https://stackoverflow.com/questions/9210152/set-up-device-for-development-no-permissions

반응형