Programing

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

lottogame 2020. 3. 26. 08:21
반응형

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


삼성 갤럭시 넥서스 폰 ( 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파일 대신 사용할 $LOGINNAMEid -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를 통해 전화를 연결하면 프로젝트를 컴파일하고 실행할 때 감지되어야합니다.


나는 같은 문제가 있었다. 해결책은 동료와 같다 : (그런데, 당신은 장치를 루팅 할 필요가 없다.)

  1. 수퍼 유저로 전환하려면 "su"를 입력하십시오.
  2. 경로 / adb kill-server.
  3. your-path / adb 시작 서버.
  4. 오류가 발생하지 않으면 루트 계정에 "your-path / adb devices"가있는 장치 목록을 볼 수 있습니다.
  5. 수퍼 유저를 종료하십시오.
  6. 이제 계정에서 "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″

참고 편집 idVendoridProduct장치 값으로 값을. 저장하고 닫습니다.

이제 다음 명령을 입력하십시오
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모든 것이 작동했습니다!


  1. http://developer.android.com/guide/developing/device.html 의 지침을 따르십시오.
  2. /etc/udev/rules.d/51-android.rules에서“0bb4 ″의 공급 업체 ID를“18d1 ″으로 바꾸십시오. 또는 SUBSYSTEM == "usb", SYSFS {idVendor} == "18d1", MODE = "0666"과 같은 다른 줄을 추가하십시오.
  3. 컴퓨터를 다시 시작하거나 udev 서비스를 다시 시작하십시오.

사용 M0Rf30/android-udev-rulesGitHub의 커뮤니티 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를 사용하는 경우 다음을 수행하십시오.

  1. android-udevPacman으로 패키지 설치
  2. udev 규칙을 다시로드하십시오.

    # udevadm control --reload-rules
    
  3. 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에서 ).

  1. 어떤 경우에 이러한 명령을 실행해야하는지 정의했습니다. 대부분의 우분투 사용자에게는 홈 폴더 (숨겨진 파일 .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

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

  1. 또한 명령 줄에서 다음 명령을 사용해보십시오. ./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

반응형