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.
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.
Câu trả lời:
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
adb devices
bâ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 devices
từ 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".
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.
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
Để 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 adb
lệ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.
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.
Nó không hoạt động với tôi sau khi tôi thêm mình vào plugdev
nhó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.rules
tệp nào trong /etc/udev/rules.d
và 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.
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ó.
M0Rf30/android-udev-rules
Cộng đồng GitHub duy trì các quy tắc udev
https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules
Đây là danh sách quy tắc udev đầy đủ nhất mà tôi đã thấy cho đến nay, thậm chí nhiều hơn so với đề xuất hiện tại sudo apt-get install android-tools-adb
trên tài liệu chính thức , hãy thử xem.
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.
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).
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.