Android 장치에 대한 ADB 액세스를 구성하는 방법은 무엇입니까?


39

Ubuntu 12.10을 사용하고 있으며 Android SDK를 설치했으며 사용자의 경로를 설정 .bashrc하고 작동합니다.

문제는 내 전화가 권한을 위해 루트로 adb를 실행해야하지만 sudo로 adb를 실행하면 다음 오류가 발생한다는 것입니다.

sudo : adb : 명령을 찾을 수 없습니다

나는 단순히을 사용하려고했지만 sudo -E adb start-server작동하지 않습니다. 에 내보내기 경로 줄을 추가하려고 시도 /root/.bashrc했지만 (도움이되지 않는 것을 알게 된 후)에 /etc/bash.bashrc.

아치 리눅스에서 설정할 수 있다는 것을 기억하지만, 이제 내 문제가 예상대로 작동하지 않는 우분투 루트 계정에 연결되어 있다고 생각합니다.


내가 이해하지 못하는 것은 다음과 같습니다.

이들은 작동하지 않습니다 :

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

이것은 (전체 경로를 입력) :

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

이것은 작동하지 않습니다 (sudo와 함께 -E 사용).

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

이것은 루트로 작동합니다.

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

나는 지금 완전히 혼란스럽고 sudo의 경로를 설정하는 방법이나 다른 방법으로 문제를 해결할 수있는 방법에 대해 설명해 주셔서 감사합니다.

(그리고 adb를 루트로 실행해서는 안된다고 말하지 마십시오.)

미리 감사드립니다!

편집 : 루트 권한이 필요하다는 것을 의미합니다. 그렇지 않으면 루트 권한이 필요합니다.

$ adb devices 
List of devices attached 
????????????    no permissions

수퍼 유저로 발생하지 않습니다. 잘못 이해해서 죄송합니다.


Windows와 Ubuntu에서 Android 장치가 USB 3 포트에 연결되어 있고 USB3가 아닌 포트에 연결하면 문제가 완화되는 경우가 종종 있음을 알았습니다.
Paul Gregoire

답변:


48

다음을 먼저 읽으십시오 : Android ADB는 어떻게 설정합니까?


USB 액세스 구성

먼저 권한을 적절하게 설정 한 경우 ADB를 실행하기 위해 루트 권한이 필요하지 않습니다. AOSP 사이트는 Pixel / Nexus 장치에 대한 USB 액세스 구성에 대한 예를 제공 합니다. 비 Nexus 기기에 다음과 같은 구성표를 사용할 수 있습니다.

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

공급 업체 및 제품 ID는 lsusb장치를 사용 하고 검색 하여 얻을 수 있습니다 . (참고 : 기기는 실제로 Galaxy Nexus입니다.)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

/etc/udev/rules.d/51-android.rulesudev 규칙은 다음과 같습니다.

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

필요한 경우 fastboot와 같은 다른 전화 상태에 대해이를 반복 할 수 있습니다. 변경 사항을 적용하려면 udev ( sudo udevadm control --reload) 를 다시로드 하거나 재부팅 (권장)하십시오.

프로그램 이용 가능

경로 변수수정하는 대신 ~/bin/(사용자 전용) 또는 /usr/local/bin/(시스템 전체) 에서 실행 파일에 심볼릭 링크를 추가하는 것이 좋습니다 .

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

1
내 전화에 udev 규칙을 추가하려고 시도했지만 도움이되지 않아 내 문제에 대해 명확하지 않다고 생각했습니다. 시간이 있으면 내 질문의 끝을 참조하십시오.
Martin Fejes

올바른 ID를 추가 했습니까? modaco.com/topic/329317-guide-ubuntu-and-blade 나중에 컴퓨터를 재부팅 했습니까? adb devices루트 권한없이 나를 위해 일합니다.
LiveWireBT

4
예, 작동합니다! 나는 udev 규칙을 /etc/udev/rules.d/51-android-rules에 추가했고 분명히 실수였습니다. /lib/udev/rules.d/11-android.rules를 사용한 후 모든 것이 정상이었습니다! 나는 루트 권한이 필요하지 않습니다! 고마워요!
Martin Fejes

같은 ??????????? 권한 상황이 없으며 답변으로 해결했습니다. 감사합니다.
Panthro

어떤 이유로 든 여기에서 작동하지 않았으므로 sudo로 adb 서버를 시작해야했습니다. 왜 작동하지 않는지 어디에서 볼 수 있습니까?
물병 자리 힘

29

나는 중국의 태블릿 (일부 이상한 제조업체)과 같은 문제에 부딪쳤다.

/etc/udev/rules.d/51-android.rules파일 외에도 변경해야했습니다 ~/.android/adb_usb.ini.

터미널에서 아래를 실행하십시오.

sudo gedit ~/.android/adb_usb.ini

당신의 adb_usb.ini파일은 다음과 같은 모양입니다 :

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

장치의 연결을 끊었다가 다시 연결했으며 터미널에서 아래 명령을 실행해야했습니다.

adb kill-server

그 후

adb start-server

그리고 장치가 감지되었습니다.


나는 당신의 팁으로도 시도했지만 아무것도 바뀌지 않았습니다. 왜 그것이 여기에서 작동하지 않는지 알 수있는 아이디어가 있습니까?
물병 자리 힘

좋은데 그것은 나를 위해 일했다. 이와 함께 adb를 업데이트해야했습니다 .
와플의 미친 땅콩

이 솔루션은 Ubuntu 14.04에서 작동하지 않습니다. 장치 목록이 여전히 비어 있습니다.
Luís de Sousa

1
고마워 Uygar, 마침내 나에게 맞는 솔루션을 찾았습니다.
Dmitry Popov 2016 년

그것이 내가 놓친 것입니다. 실제로, 0x2207귀하의 예에서 내 장치가 사용하는 것과 동일한 공급 업체 ID입니다.
ssokolow

2

필자의 경우 MTP 모드 대신 내 Android Studio (v1.5.1)에서 MTP 모드를 감지 해야하는 대부분의 장치와 달리 일부 스마트 폰은 PTP 모드로 설정해야했습니다.

따라서보다 복잡한 Unix의 ADP 구성에 시간을 허비하지 않고 MTP 및 PTP 모드를 모두 시도한 후 해를 입을 수 있습니다.

최신 장치에서는 Dev 옵션에서 직접 선택할 수 있지만 이전 장치는 상태 표시 줄의 USB 연결 옵션에 있습니다.

그러나 Z5 이상의 최신 Sony Xperia 장치는 USB 모드에 관계없이 작동하지 않습니다. 내 Android Studio가 오래되었거나 Unix ADP 구성도 파야 할 수도 있습니다.


1

이 단계를 따르세요:

  1. 안드로이드 변수 설정

    처음에 집으로 가서 Ctrl+를 누르면 H숨겨진 파일이 표시됩니다. 이제 파일을 찾고 .bashrc텍스트 편집기로 파일을 연 다음 아래 줄을 파일 끝에 놓습니다.

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. 재부팅

  3. 장치를 사용하여 디버깅

    연결 청취 :

    adb -a
    

    Android 기기를 연결하고 승인합니다.

    cordova run android --device
    

0

USB 액세스 구성

권장되는 방법은에서 파일을 만드는 것 /etc/udev/rules.d/51-android.rules입니다.

터미널에 입력하십시오 :

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

이러한 새로운 규칙은 다음에 장치를 연결할 때 적용됩니다. 따라서 장치를 분리했다가 컴퓨터에 다시 연결해야 할 수도 있습니다.


0

받아 들여진 대답이 일을하는 데 도움이되었지만 여전히 혼란 스럽습니다.

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

특히

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

에 따르면 sudo --help:

-E, --preserve-env          preserve user environment when running command

많은 Linux 배포판 (Debian 및 Ubuntu 포함) secure_path에서 env_reset옵션이 기본적으로 PATH설정되어 변수 를 재설정 하고로 설정합니다 secure_path. /etc/sudoersvisudo를 사용 하여 파일 에서 파일을 변경할 수 있습니다 .

또는 다음을 실행할 수 있습니다.

sudo env PATH=$PATH adb devices

-1

이 명령을 시도하십시오 : sudo tools/android update sdk --no-ui

SDK 읽어보기 :

Android SDK에 오신 것을 환영합니다! Android SDK 아카이브에는 기본적으로 기본 SDK 도구 만 포함되어 있습니다. Android 플랫폼 또는 타사 라이브러리가 포함되어 있지 않습니다. 실제로 응용 프로그램을 개발하는 데 필요한 모든 도구가 없습니다. 애플리케이션 개발을 시작하려면 SDK 관리자를 사용하여 플랫폼 도구 및 하나 이상의 Android 플랫폼 버전을 설치해야합니다. Platform-tools에는 adb, dexdump 등을 포함하여 Android 플랫폼의 새로운 기능 (기본 SDK 도구와 분리 된 이유)을 지원하도록 주기적으로 업데이트되는 빌드 도구가 포함되어 있습니다. 플랫폼 도구, Android 플랫폼 및 기타 애드온을 설치하려면 인터넷에 연결되어 있어야하므로 오프라인 상태에서 SDK를 사용하려면 온라인 상태에서 필요한 구성 요소를 다운로드하십시오. SDK 관리자를 시작하려면 "android"프로그램을 실행하십시오. 명령 줄에서 다음을 실행하여 업데이트를 직접 트리거 할 수도 있습니다.tools/android update sdk --no-ui


이것이 원래의 질문에 대한 것인지 확실하지 않습니다 ...
landroni
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.