adb không có quyền trên Ubuntu 17.04


48

Khi tôi thử:

$ adb devices

tôi nhận được kết quả:

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

vấn đề là gì

đã thử trên máy Ubuntu 16.04 và nó hoạt động hoàn hảo. đã thử một thiết bị 7.1.1 và nó cũng hoạt động hoàn hảo.


Hãy thử sudo adb devices. Nếu nó hoạt động tốt nhưng từ bộ nhớ, tôi không phải root để kiểm tra các thiết bị được đính kèm.
shmink

1
Nó không hoạt động với sudo nhưng với root thì nó sẽ đăng nhập. vấn đề là studio android chỉ tạo ra adb từ phiên không root và chạy nó với jksudo, nó sẽ không nhận ra tệp của tôi.
Nadav Tasher

Tôi đã tìm thấy điều tương tự với studio android và nói chung là mọi thứ được tạo ra bởi jetbrains. Khi bạn cài đặt android studio, bạn đã làm nó như root chưa?
shmink

được cài đặt dưới dạng root thành / usr / local / và được mã hóa thành 777 -R, chạy không phải là root nên nó sẽ nhận ra các cài đặt và sdk.
Nadav Tasher

Làm thế nào về việc chạy nó như root và chỉ cần thay đổi cài đặt và sdk một cách thích hợp.
shmink

Câu trả lời:


64

Hãy thử khởi động lại máy chủ Adb.

sudo adb kill-server

và sau đó

sudo adb start-server

sau đó kết nối thiết bị của bạn bật gỡ lỗi và gõ

adb devices

2
Điều này không hoạt động .. loại. Sau khi tôi làm điều đó, thực sự, chạy adb devicesbây giờ sẽ hiển thị thiết bị (và tôi nhận được hộp thoại dấu vân tay). Tuy nhiên, nó vẫn không hoạt động với studio android. Hơn nữa, khi tôi chạy android studio, và sau đó tôi chạy adb devicestừ bảng điều khiển, tôi nhận được "máy chủ adb đã hết hạn" và máy chủ adb khởi động lại. Sau đó, tôi lại gặp tình huống "không có quyền".
Bóng râm

Điều này không hoạt động. thiết bị adb không hiển thị gì và tai nghe không bao giờ xin phép nữa.
Tyguy7

62

Có vấn đề tương tự. Đảm bảo rằng chế độ USB của thiết bị KHÔNG sạc chỉ giải quyết được.


5
Tương tự ở đây, tôi đã sửa đổi các quy tắc của Udev mà không có kết quả, đã thay đổi USB thành chia sẻ tệp và thế mạnh. Thiết bị không yêu cầu quy tắc udev hoặc chế độ USB cụ thể trong phiên bản ubfox trước đó.
Fco P.

3
Đây phải là câu trả lời đúng (không phải máy chủ khởi động lại adb)
RumburaK

1
Câu trả lời đúng cho tôi.
Alvaro Gutierrez Perez

1
không nên là câu trả lời đúng nhưng làm việc
Uzumaki D. Ichigo

1
Vâng, đây là câu trả lời chính xác.

39

Rất có thể udev đang thêm không chính xác thiết bị của bạn. Tôi cũng có vấn đề này và đã tìm ra một giải pháp tương đối đơn giản.

Tìm thiết bị của bạn trong 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

Điểm quan tâm trong trường hợp này:

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

Kiểm tra tập tin thiết bị tương ứng

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

Có khả năng bạn sẽ thấy một cái gì đó như

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

Điều này có nghĩa là tệp thiết bị sẽ được sở hữu bởi người dùng gốc và nhóm gốc, đó là lý do tại sao adb có thể truy cập nó dưới quyền root nhưng không phải là người dùng chuẩn của bạn.

Điều này có thể được giải quyết bằng cách tạo quy tắc udev mới - tôi đã sử dụng /etc/udev/rules.d/51-android.rules- để thêm thiết bị vào nhóm plugdev, adb đã giả sử bạn là thành viên của (bạn shoukd, kiểm tra bằng cách sử dụng id)

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

** Hãy nhớ thay thế ATTR {idSản phẩm} == "4ee7" bằng id sản phẩm của riêng bạn mà bạn đã tìm thấy trong bước một. ** (Nếu nhà cung cấp của bạn không phải là Google Inc., cũng thay thế id nhà cung cấp bằng tên trước dấu hai chấm trong lsusb).

Bây giờ chỉ cần rút phích cắm thiết bị của bạn và cắm lại (udev sẽ tự động trả lời tệp mới) và tadaa:

$ adb devices
List of devices attached 
YC873P0G    device

Nguồn: Thêm quy tắc udev cho gỡ lỗi USB cho thiết bị Android - Janos Gyerik


1
Câu trả lời này đã giải quyết vấn đề của tôi. Hoàn hảo, cảm ơn.
alexmeia

1
Cảm ơn @Paul Nó đã giúp tôi. Giải thích tốt với lý do. Tôi nghĩ rằng khởi động lại dịch vụ udev cũng được yêu cầu.
Gagan

Đây chắc chắn là giải pháp chính xác nếu bạn không muốn sử dụng sudo cho những thứ mà bạn không cần sử dụng sudo cho
aholt

Đây phải là câu trả lời được chấp nhận, vì đó là câu trả lời đúng . Câu trả lời được đánh giá cao nhất thực sự chỉ là một cách giải quyết.
Joel Cross

Điều này đã giải quyết nó cho tôi. Nó hoạt động ngày hôm qua mà không có quy tắc, nhưng sau đó sau khi cài đặt các bản cập nhật trên Ubuntu, nó đã ngừng hoạt động và tôi phải làm điều này.
simernes

2

Để mở rộng câu trả lời của Sumeet Deshmukh, cách tiếp cận của anh ta nói chung có hiệu quả - nếu bạn chỉ muốn sử dụng adblệnh từ bảng điều khiển.

Android Studio, tuy nhiên, dường như bắt đầu máy chủ adb của riêng mình, giết chết chúng ta. Điều này có nghĩa là sau khi chúng tôi đã giết / khởi động máy chủ bằng sudo, Studio khởi động lại nó, dẫn đến tình huống bắt đầu - không có quyền.

Giải pháp là trước tiên khởi động Studio, sau đó thực hiện khởi động / dừng máy chủ. Làm điều đó, tôi đã xoay sở để khiến Nexus 5X của mình hiển thị dưới dạng mục tiêu chạy hợp lệ trong Studio.

Đây không phải là tình huống tốt nhất (phải chạy lệnh mỗi khi bạn khởi động Studio), nhưng nó thực hiện thủ thuật một cách nhanh chóng và bẩn thỉu. Nếu tôi tìm thấy một giải pháp lâu dài hơn, tôi sẽ cập nhật câu trả lời này.


cảm ơn bạn rất nhiều, mặc dù đó là một lỗi được sửa bởi bản cập nhật hệ thống (trên điện thoại) và bản cập nhật studio.
Nadav Tasher

2

Thay đổi Chế độ USB từ Điện thoại đã giúp tôi rất nhiều. (Tôi đặt nó thành Chuyển tập tin .)


2

Vui lòng KHÔNG làm theo các giải pháp đề xuất sử dụngsudo ( sudo adb start-server)! Điều này chạy adb với quyền root (quản trị viên) và KHÔNG được phép chạy như vậy !!! Đó là một cách giải quyết BAD !

Mọi thứ chạy dưới dạng root đều có thể làm bất cứ điều gì trong hệ thống của bạn, nếu nó tạo hoặc sửa đổi một tệp có thể thay đổi quyền của nó để chỉ được sử dụng bởi root. Một lần nữa, ĐỪNG!

Điều đúng đắn cần làm là thiết lập hệ thống của bạn để khiến NGƯỜI DÙNG có quyền, hãy xem hướng dẫn này tôi đã viết về cách thực hiện đúng.


2

Nó không hoạt động với tôi sau khi tôi thêm mình vào plugdevnhóm và khởi động lại máy chỉ để đảm bảo thay đổi có hiệu lực trong tất cả các phiên shell của tôi. Sau đó tôi thấy rằng không có 51-android.rulestệp nào trong /etc/udev/rules.dvà phải thực hiện các thao tác sau để khắc phục sự cố:

# 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

Tôi cũng phải rút và cắm lại thiết bị Android của mình.


Điều này cũng không hiệu quả với tôi ...
Tyguy7

1

Bạn cần cung cấp quyền trên thiết bị Android của bạn. Chuyển đến Cài đặt> Tùy chọn nhà phát triển. Hãy thử tắt gỡ lỗi USB và sau đó bật lại. Tháo cáp và kết nối lại. Đồng thời thử xóa tất cả các ủy quyền đã lưu khỏi tùy chọn Nhà phát triển. Bây giờ, nó sẽ yêu cầu sự cho phép gỡ lỗi bằng một lời nhắc trên điện thoại của bạn. Chấp nhận nó.


không hoạt động, tôi đã dùng thử rồi, nếu có vấn đề, tôi đang sử dụng Android 7.1.2 và trên một thiết bị khác đang chạy 7.1.1 thì nó đã hoạt động.
Nadav Tasher

Đã thử xóa tất cả các ủy quyền máy chủ? Khởi động lại sau đó?
Joel G Mathew

không khởi động lại. Tôi sẽ thử nó và cho bạn biết nếu nó hoạt động.
Nadav Tasher

Nếu nó hoạt động, bạn có thể chấp nhận câu trả lời.
Joel G Mathew

kiểm tra sau ngày hôm nay
Nadav Tasher


0

Tôi không biết tại sao nó lại hoạt động, nhưng đây là giải pháp duy nhất hiệu quả với tôi

Tìm nơi adb đang chạy (nếu bạn giống tôi, bạn đã cài đặt nhiều phiên bản). Hãy ghi nhớ các công cụ như phản ứng bản địa có thể quyết định sử dụng các phiên bản ngẫu nhiên khác để làm cho cuộc sống của bạn khó khăn hơn. Đối với tôi đó là ~/Android/Sdk/platform-tools/adb. Vì vậy, tôi sẽ chạy:

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

Các công cụ Android siêu khó chịu.


0

Chuyển đến Cài đặt >> Bảo trì >> Lưu trữ. Sau đó kiểm tra menu trên cùng bên trái và nhấp vào kết nối máy tính USB, sau đó đổi sang thiết bị Media (MTP).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.