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.