adb ไม่มีสิทธิ์ใน Ubuntu 17.04


47

เมื่อฉันลอง:

$ adb devices

ฉันได้รับผล:

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

อะไรคือปัญหา?

ลองบนเครื่อง Ubuntu 16.04 และทำงานได้อย่างสมบูรณ์ ลองใช้อุปกรณ์ 7.1.1 และมันก็ทำงานได้อย่างสมบูรณ์


ลองsudo adb devicesดู หากใช้งานได้ดี แต่มาจากหน่วยความจำฉันไม่จำเป็นต้องรูทเพื่อตรวจสอบอุปกรณ์ที่ต่อพ่วง
shmink

1
มันจะไม่ทำงานกับ sudo แต่ด้วยการเข้าสู่ระบบรากมันจะ ปัญหาคือว่าในสตูดิโอ Android preforms adb จากเซสชั่นที่ไม่ใช่รูทและใช้มันด้วย jksudo มันจะไม่รู้จักไฟล์ของฉัน
Nadav Tasher

ฉันพบสิ่งเดียวกันกับ android studio และโดยทั่วไปแล้วสิ่งใดก็ตามที่ทำโดย jetbrains เมื่อคุณติดตั้ง android studio คุณทำมันในฐานะ root หรือไม่?
shmink

ติดตั้งเป็นรูทถึง / usr / local / และ chmoded เป็น 777 -R รันไม่เหมือนรูทดังนั้นมันจะจดจำการตั้งค่าและ sdk
Nadav Tasher

วิธีการเกี่ยวกับการใช้งานมันเป็น root และเพียงแค่เปลี่ยนการตั้งค่าและ sdk อย่างเหมาะสม
shmink

คำตอบ:


64

ลองรีสตาร์ทเซิร์ฟเวอร์ Adb

sudo adb kill-server

แล้ว

sudo adb start-server

จากนั้นเชื่อมต่ออุปกรณ์ของคุณเปิดการดีบักและพิมพ์

adb devices

2
มันใช้งานได้ .. หลังจากที่ฉันทำเช่นนั้นแน่นอนการทำงานในadb devicesขณะนี้แสดงอุปกรณ์ (และฉันจะได้รับกล่องโต้ตอบลายนิ้วมือ) อย่างไรก็ตามมันยังไม่สามารถใช้งานได้กับ android studio นอกจากนี้เมื่อฉันเรียกใช้ android studio และจากนั้นเรียกใช้adb devicesจากคอนโซลฉันได้รับ "เซิร์ฟเวอร์ adb ล้าสมัย" และเซิร์ฟเวอร์ adb รีสตาร์ท หลังจากนั้นฉันถึงสถานการณ์ "ไม่มีการอนุญาต" อีกครั้ง
Shade

สิ่งนี้ใช้ไม่ได้ อุปกรณ์ adb ไม่แสดงอะไรเลยและชุดหูฟังจะไม่ขออนุญาตอีกครั้ง
Tyguy7

61

มีปัญหาเดียวกัน ตรวจสอบให้แน่ใจว่าโหมด USB ของอุปกรณ์ไม่ได้ ชาร์จเพียงอย่างเดียวเท่านั้นที่แก้ไขได้


5
กันที่นี่ฉันได้แก้ไขกฎ Udev โดยไม่มีผลลัพธ์เปลี่ยน USB เป็นการแชร์ไฟล์และ presto อุปกรณ์ไม่จำเป็นต้องใช้กฎ udev หรือโหมด USB เฉพาะในรุ่น ubuntu ก่อนหน้านี้
Fco P.

3
นี่ควรเป็นคำตอบที่ถูกต้อง (ไม่ใช่เซิร์ฟเวอร์รีสตาร์ท adb)
RumburaK

1
คำตอบที่ถูกต้องสำหรับฉัน
Alvaro Gutierrez Perez

1
ไม่ควรเป็นคำตอบที่ถูกต้อง แต่ทำงานได้
Uzumaki D. Ichigo

1
ใช่นี่คือคำตอบที่ถูกต้อง

37

udev มีแนวโน้มว่าจะเพิ่มอุปกรณ์ของคุณไม่ถูกต้อง ฉันก็มีปัญหานี้เช่นกันและเจอวิธีแก้ปัญหาที่ค่อนข้างง่าย

ค้นหาอุปกรณ์ของคุณใน lsusb

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 8087:0a2b Intel Corp. 
Bus 001 Device 002: ID 05c8:03a2 Cheng Uei Precision Industry Co., Ltd (Foxlink) 
Bus 001 Device 006: ID 18d1:4ee7 Google Inc.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

จุดที่น่าสนใจในกรณีนี้:

Bus 001 Device 006: ID 18d1:4ee7 Google Inc.

ตรวจสอบไฟล์อุปกรณ์ที่เกี่ยวข้อง

$ ls -l /dev/bus/usb/001/006

มีแนวโน้มที่คุณจะเห็นสิ่งที่ชอบ

crw-rw-r-- 1 root root 189, 5 Sep  8 21:47 /dev/bus/usb/001/006

ซึ่งหมายความว่าไฟล์อุปกรณ์จะเป็นของผู้ใช้รูทและกลุ่มรูทซึ่งเป็นเหตุผลที่ adb สามารถเข้าถึงมันในฐานะที่เป็นรูท แต่ไม่เป็นผู้ใช้มาตรฐานของคุณ

สิ่งนี้สามารถแก้ไขได้โดยการสร้างกฎ udev ใหม่ - ฉันใช้/etc/udev/rules.d/51-android.rules- เพื่อเพิ่มอุปกรณ์ลงในกลุ่มplugdevซึ่ง adb ถือว่าคุณเป็นสมาชิกของ (คุณจะต้องตรวจสอบการใช้id)

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4ee7", MODE="0660", 
GROUP="plugdev", SYMLINK+="android%n"

** อย่าลืมแทนที่ ATTR {idProduct} == "4ee7" ด้วยรหัสผลิตภัณฑ์ของคุณเองที่คุณพบในขั้นตอนที่หนึ่ง ** (หากผู้ให้บริการของคุณไม่ใช่ Google Inc. ให้เปลี่ยนรหัสผู้ขายด้วยรหัสก่อนโคลอนใน lsusb)

ตอนนี้เพียงถอดปลั๊กอุปกรณ์ของคุณแล้วเสียบกลับเข้าไปใหม่ (udev ควรตอบกลับไฟล์ใหม่โดยอัตโนมัติ) และ tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

ที่มา: การเพิ่มกฎ udev สำหรับอุปกรณ์ Android ที่ใช้ในการดีบัก USB - Janos Gyerik


คำตอบนี้แก้ปัญหาของฉันได้ สมบูรณ์แบบขอบคุณ
alexmeia

ขอบคุณ @ พอลมันช่วยฉันได้ อธิบายได้ดีด้วยเหตุผล ฉันคิดว่าต้องเริ่มบริการ udev อีกด้วย
Gagan

นี่เป็นทางออกที่ถูกต้องที่สุดหากคุณไม่ต้องการใช้ sudo สำหรับสิ่งที่คุณไม่จำเป็นต้องใช้ sudo สำหรับ
aholt

นี่ควรเป็นคำตอบที่ได้รับการยอมรับเนื่องจากเป็นคำตอบที่ถูกต้อง คำตอบที่ได้รับคะแนนสูงสุดเป็นเพียงวิธีแก้ปัญหา
Joel Cross

วิธีนี้แก้ไขได้สำหรับฉัน มันทำงานได้เมื่อวานโดยไม่มีกฎ แต่หลังจากติดตั้งอัปเดตบน Ubuntu มันหยุดทำงานและฉันต้องทำสิ่งนี้
ศัพท์

2

หากต้องการขยายคำตอบของ Sumeet Deshmukh วิธีการของเขาจะใช้งานทั่วไป - หากคุณต้องการใช้adbคำสั่งจากคอนโซลเท่านั้น

อย่างไรก็ตาม Android Studio นั้นเริ่มเซิร์ฟเวอร์ adb ของตัวเองแล้วฆ่าเรา ซึ่งหมายความว่าหลังจากที่เราฆ่า / เริ่มต้นเซิร์ฟเวอร์ด้วย sudo แล้ว Studio จะเริ่มต้นใหม่ซึ่งนำไปสู่สถานการณ์เริ่มต้น - ไม่มีสิทธิ์

การแก้ปัญหาคือการเริ่มต้นสตูดิโอก่อนจากนั้นจึงเริ่ม / หยุดเซิร์ฟเวอร์ การทำเช่นนั้นฉันจัดการเพื่อให้ Nexus 5X ของฉันปรากฏเป็นเป้าหมายการทำงานที่ถูกต้องในสตูดิโอ

นี่ไม่ใช่สถานการณ์ที่ดีที่สุด (ต้องเรียกใช้คำสั่งทุกครั้งที่คุณเริ่ม Studio) แต่เป็นการหลอกลวงในวิธีที่รวดเร็วและสกปรก หากฉันพบทางออกที่ถาวรกว่านี้ฉันจะอัปเดตคำตอบนี้


ขอบคุณมากแม้ว่ามันจะเป็นข้อผิดพลาดที่เกิดจากการอัปเดตระบบ (ทางโทรศัพท์) และการอัปเดตในสตูดิโอ
Nadav Tasher

2

การเปลี่ยนโหมด USB จากโทรศัพท์ทำได้สำหรับฉัน (ฉันตั้งให้เป็นFile Transfer )


2

โปรดอย่าทำตามวิธีแก้ปัญหาที่แนะนำให้ใช้sudo ( sudo adb start-server)! adb ที่รันในฐานะ root (ผู้ดูแลระบบ) และไม่ควรเรียกใช้เช่นนั้น !!! มันเป็นวิธีแก้ปัญหาที่ไม่ดี !

ทุกอย่างที่ทำงานในฐานะรูทสามารถทำอะไรก็ได้ในระบบของคุณถ้ามันสร้างหรือแก้ไขไฟล์สามารถเปลี่ยนการอนุญาตให้รูทใช้งานได้โดยรูทเท่านั้น อีกครั้งไม่ได้!

สิ่งที่ถูกต้องที่จะทำคือการตั้งค่าระบบของคุณเพื่อให้ผู้ได้รับอนุญาตให้ตรวจสอบคำแนะนำนี้ผมเขียนเกี่ยวกับวิธีการทำอย่างถูกต้อง


2

มันไม่ทำงานสำหรับฉันหลังจากที่ฉันเพิ่มตัวเองลงในplugdevกลุ่มและรีบูตเครื่องเพียงเพื่อให้แน่ใจว่าการเปลี่ยนแปลงจะมีผลในทุกช่วงเชลล์ของฉัน ฉันพบว่าไม่มี51-android.rulesไฟล์อยู่/etc/udev/rules.dและต้องทำสิ่งต่อไปนี้เพื่อแก้ไขปัญหา:

# Here the vendor ID is of Google
$ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0660", GROUP="plugdev"' | sudo tee —append /etc/udev/rules.d/51-android.rules
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
$ sudo udevadm control --reload-rules
$ sudo service udev restart

ฉันต้องถอดปลั๊กและเสียบอุปกรณ์ Android ของฉันอีกครั้ง


นี่ไม่ได้ผลสำหรับฉันเช่นกัน ...
Tyguy7

1

คุณต้องให้สิทธิ์บนอุปกรณ์ Android ของคุณ ไปที่การตั้งค่า> ตัวเลือกผู้พัฒนา ลองปิดการดีบัก USB แล้วเปิดใหม่อีกครั้ง ถอดสายเคเบิลออกแล้วเชื่อมต่อใหม่ ลองลบการให้สิทธิ์ที่บันทึกไว้ทั้งหมดจากตัวเลือกนักพัฒนา ตอนนี้มันควรจะขอสิทธิ์ในการดีบั๊กโดยการแจ้งในโทรศัพท์ ยอมรับมัน.


ไม่ทำงานฉันได้ลองแล้วถ้ามันสำคัญฉันใช้ android 7.1.2 และบนอุปกรณ์อื่นที่ใช้ 7.1.1 ก็ใช้งานได้
Nadav Tasher

พยายามลบการอนุญาตโฮสต์ทั้งหมดหรือไม่ รีบูทหลังจากนั้นหรือไม่
Joel G Mathew

ไม่รีบูต ฉันจะลองและบอกคุณถ้ามันทำงาน
Nadav Tasher

หากใช้งานได้คุณสามารถยอมรับคำตอบได้
Joel G Mathew

ตรวจสอบไม่ดีในวันนี้
Nadav Tasher

1

M0Rf30/android-udev-rules ชุมชน GitHub รักษากฎ udev

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

นี่คือรายการ udev-rules ที่สมบูรณ์แบบที่สุดเท่าที่ฉันเคยเห็นมามากกว่าที่แนะนำsudo apt-get install android-tools-adb ไว้ในเอกสารทางการให้ลองใช้


0

ฉันไม่รู้ว่าทำไมงานนี้ แต่นี่เป็นทางออกเดียวที่เหมาะกับฉัน

ค้นหาตำแหน่งที่ adb กำลังทำงาน (หากคุณเป็นเหมือนฉันคุณติดตั้งหลายรุ่น) โปรดทราบว่าเครื่องมือตอบสนองแบบดั้งเดิมอาจตัดสินใจใช้เวอร์ชันอื่นแบบสุ่มเพื่อทำให้ชีวิตของคุณยากขึ้น ~/Android/Sdk/platform-tools/adbสำหรับฉันมันเป็น ดังนั้นฉันจะเรียกใช้:

sudo chown root:YOUR_USERNAME ~/Android/Sdk/platform-tools/adb
sudo chmod 4550 ~/Android/Sdk/platform-tools/adb

เครื่องมือ Android นั้นน่ารำคาญสุด ๆ


0

ไปที่การตั้งค่า >> การบำรุงรักษา >> ที่เก็บข้อมูล จากนั้นตรวจสอบเมนูด้านซ้ายบนแล้วคลิกที่การเชื่อมต่อคอมพิวเตอร์ USB จากนั้นเปลี่ยนเป็นอุปกรณ์สื่อ (MTP)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.