lệnh thiết bị adb không hoạt động


86

Tôi đang chạy Ubuntu 10.10 64 bit. Tôi đã cài đặt ia32-libs cùng với Android Debug Bridge phiên bản 1.0.26.

Vấn đề của tôi):

  1. adb devices>>> ???????????? không có quyền
  2. sudo adb devices >>>> sudo: adb: lệnh không tìm thấy
  3. adb shell >>> lỗi: không đủ quyền cho thiết bị

Tôi đoán những thứ này đều có liên quan. Đây là thông tin liên quan.

$ echo $PATH
/home/me/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/android-sdk-linux_x86/tools:/opt/android-sdk-linux_x86/platform-tools

$ which adb
/opt/android-sdk-linux_x86/platform-tools/adb

$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
????????????    no permissions

$ sudo adb devices
sudo: adb: command not found

$ adb shell
error: insufficient permissions for device

Tôi nhận được kết quả tương tự với Moto Droid đã root chạy CM6.1 và G-Tab đã root chạy ROM dựa trên CM7.

Tôi đã xem xét các bài viết liên quan sau:

Tôi đã thử hầu hết (không phải tất cả) các đề xuất và tôi không thể giải quyết vấn đề của mình. Những thứ tôi đã không thử dường như không phù hợp. Tôi đánh giá cao một số mẹo khác và tôi sẽ tiếp tục khắc phục sự cố.

Một điều tôi đã không thử là chỉnh sửa /etc/udev/rules.d/70-android.rules. Đó có phải là vấn đề không? Tôi không thể hiểu điều đó sẽ gây ra "sudo: adb: command not found" như thế nào. Có thể vấn đề của tôi không liên quan đến nhau. Dù sao, tại thời điểm này, tôi nghĩ rằng tôi cần một số ý kiến ​​đóng góp từ những người khác vì tôi không tin rằng tôi có một vấn đề về đường dẫn hoặc các vấn đề phổ biến khác được thảo luận trong các bài viết khác.

EDIT: GIẢI QUYẾT nhờ EboMike và RivieraKid. Đây thực sự là hai vấn đề khác nhau:

  1. Mục số 2 ở trên (không tìm thấy lệnh sudo: adb:) đã được giải quyết bằng cách tạo một liên kết tượng trưng như sau:

    $ sudo ln -s /opt/android-sdk-linux_x86/platform-tools/adb /usr/local/sbin/adb
    

    Điều đó cho phép tôi sau đó làm như EboMike đề xuất và sử dụng giải pháp này . Làm điều đó là bắt buộc đối với Moto Droid của tôi. ( Tuy nhiên, không cần chạy adb như sudo đối với Viewsonic G-Tablet của tôi.)

  2. Hai mục khác của tôi đã được giải quyết bằng cách triển khai quy tắc udev như RivieraKid đã đề xuất (từ liên kết này ).


Bản sao có thể có của Ubuntu:
Gỡ

Mục số 1 thực sự đã giúp tôi ra ngoài. Không chắc chắn về mục số 2
Francisco Quintero

Câu trả lời:


87

Một điều tôi đã không thử là chỉnh sửa /etc/udev/rules.d/70-android.rules. Đó có phải là vấn đề không?

Bất kỳ lý do cụ thể nào tại sao bạn không làm điều đó? Để trả lời câu hỏi - CÓ! Các quy tắc udev là những gì thông báo cho Ubuntu thiết bị của bạn là gì và cho phép các công cụ không gian người dùng do đó truy cập vào nó.

Bạn sẽ không thể sử dụng adb nếu không làm theo đúng hướng dẫn .

Tuy nhiên, với suy nghĩ đó, bạn không nói bạn đang sử dụng phiên bản Ubuntu nào nhưng tôi gặp sự cố với 10.10 - hãy cho tôi biết nếu bạn cần tôi đăng nội dung của tệp quy tắc của mình.

Đừng lo lắng về việc chạy adb qua sudo, bạn không cần nó. Các MODE="0666"từ sự cai trị udev cho phép bạn truy cập vào thiết bị như bất kỳ người dùng.


BIÊN TẬP:

Đừng quên tải lại các quy tắc:

sudo udevadm control --reload-rules

CHỈNH SỬA # 2:

Như @Jesse Glick đã chỉ ra một cách chính xác, nếu adb đã chạy ở chế độ daemon, bạn cũng cần khởi động lại nó để nó hoạt động:

sudo adb kill-server

Tôi đã sử dụng sudo ở đây, vì điều đó sẽ đảm bảo rằng adb sẽ bị giết và đó là phương pháp được hỗ trợ chính thức để dừng máy chủ. Nó sẽ được tự động khởi động lại vào lần sử dụng adb tiếp theo, nhưng lần này với môi trường chính xác.


1
Cảm ơn bạn đã liên kết . Không chắc làm thế nào tôi bỏ lỡ thực tế rằng những hướng dẫn đó là chính thức. Tôi nghĩ rằng mọi người đang làm điều đó như một công việc xung quanh. Tôi đã tìm thấy mã nhà cung cấp cho Viewsonic GTablet của mình và thêm quy tắc udev và bây giờ nó hoạt động! Cảm ơn.
MountainX

1
vì một số lý do, tôi không thể làm cho Motorola Droid hiển thị với các thiết bị adb. Bây giờ tôi có thể hiển thị GTab và một trình giả lập, nhưng không phải Droid.
MountainX

Xem ở trên. Chạy adb dưới dạng root khiến Moto Droid hiển thị.
MountainX

$ cat /etc/udev/rules.d/51-android.rules SUBSYSTEM == "usb", SYSFS {idVendor} == "22b8", MODE = "0666" SUBSYSTEM == "usb", SYSFS {idVendor} = = "0955", MODE = "0666"
MountainX

1
… Và bạn cần khởi động lại adbdaemon, nếu nó đã chạy trước đó.
Jesse Glick vào

22

Bạn cần khởi động lại máy chủ adb dưới dạng root. Xem tại đây .


không hoạt động. Chi tiết: me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb kill-server sudo: adb: command not found me@desktop:/opt/android-sdk-linux_x86/platform-tools$ adb kill-server me@desktop:/opt/android-sdk-linux_x86/platform-tools$ sudo adb start-server sudo: adb: command not found
MountainX

adbkhông nằm trong đường dẫn của superuser của bạn. Enter which adbđể tìm xem nó nằm trong đường dẫn nào, sau đó thêm nó vào đường dẫn của root.
EboMike

Hy vọng bạn có thể đọc được điều này. (Tôi không biết cách định dạng nhận xét để bao gồm dòng mới.) Adb LÀ trong đường dẫn của người dùng gốc của tôi. Tôi đã dán lệnh nào adb trong bài đăng ban đầu của mình. Đường dẫn là / opt / android-sdk-linux_x86 / platform-tools / adb. $ sudo -s root @ desktop: # echo $ PATH / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / X11R6 / bin: / opt / android-sdk-linux_x86 / tools: / opt / android-sdk-linux_x86 / platform-tools
MountainX

1
Đây là một điều kỳ lạ. Tôi nhận được các kết quả khác nhau từ "which adb" tùy thuộc vào việc tôi chạy nó dưới dạng root hay chạy nó với sudo. Đây là kết quả đầu ra $ sudo mà adb $
MountainX

Chỉ định đường dẫn đầy đủ sau đó khi bạn chạy adb dưới dạng root.
EboMike

13

Trên hệ thống linux Gentoo / Funtoo của tôi, tôi đang gặp sự cố tương tự:

Tôi luôn nhận được mô tả thiết bị không chính xác và không đủ quyền:

# sudo ./adb devices
List of devices attached 
????????????    no permissions
# ./adb usb
error: insufficient permissions for device

Đối với tôi giúp howto từ Google. Trong trường hợp của tôi, tôi cần thêm quy tắc udev:

# cat /etc/udev/rules.d/51-android.rules 
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

và thiết lập quyền hệ thống tệp

# chmod a+r /etc/udev/rules.d/51-android.rules

Sau khi cắm lại điện thoại thông minh của tôi, quyền truy cập vào điện thoại đã thành công, nó cũng xuất hiện trong Trình chọn thiết bị Android của Eclipse:

# sudo ./adb devices
List of devices attached 
3XXXXXXXXXXXXXC device
# sudo ./adb usb
restarting in USB mode

Bạn cũng phải kiểm tra tư cách thành viên của người dùng của bạn vào nhóm plugdev .


3

Mỗi câu trả lời tôi đã đọc chỉ ra SUBSYSTEM=="usb". Tuy nhiên, udev (có lẽ cổ xưa) của tôi cần được đổi thành DRIVER=="usb". Cuối cùng, tôi có thể chạy máy chủ adb với tư cách người dùng không phải root ... yay.

Có thể mang tính hướng dẫn khi xem đầu ra của udevmonitor --env, sau đó là đầu ra của

udevinfo -a -p <DEVICE_PATH_AS_REPORTED_BY-udevmonitor>

Nếu udevmonitorudevinfokhông tồn tại trên máy của bạn, hãy sử dụng udevadm monitorudevadm info -a -p ...thay thế.
Ash

2

Xin lưu ý rằng các IDE như IntelliJ IDEA có xu hướng khởi động máy chủ adb của riêng họ.

Ngay cả việc giết máy chủ theo cách thủ công và chạy một phiên bản mới với sudo sẽ không giúp ích gì ở đây cho đến khi bạn thực hiện IDE của mình tự diệt máy chủ.


2

khởi động lại máy chủ adb như root đã làm việc cho tôi. xem:

derek@zoe:~/Downloads$ adb sideload angler-ota-mtc20f-5a1e93e9.zip 
loading: 'angler-ota-mtc20f-5a1e93e9.zip'
error: insufficient permissions for device
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    no permissions

derek@zoe:~/Downloads$ adb kill-server
derek@zoe:~/Downloads$ sudo adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
derek@zoe:~/Downloads$ adb devices
List of devices attached
XXXXXXXXXXXXXXXX    sideload

Tôi cũng vậy: Linux Mint Serena 18.1 với HTC Sensation. Noob cảnh báo: Tôi đã được faffing về trong 2 ngày với điều này nên nội dung được gần như chắc chắn snafu'd
Aethelbald


0

HTC One m7 chạy Cyanogenmod 11 mới.

Điện thoại được kết nối USB và chia sẻ kết nối dữ liệu của tôi.

Sau đó, tôi nhận được điều ngạc nhiên này:

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb shell
error: insufficient permissions for device

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
????????????    no permissions

GIẢI PHÁP: TẮT chia sẻ kết nối trên điện thoại.

cinder@ultrabook:~/temp/htc_m7/2015-11-11$ adb devices
List of devices attached
HT36AW908858    device

-3

Tôi cũng gặp phải trường hợp tương tự, Khôi phục cài đặt gốc dữ liệu hoạt động tốt đối với tôi.


Chắc chắn đây là một nhận xét?
Matthew Taylor,

lỗi của tôi. Tôi muốn nói rằng việc đặt lại thiết bị và làm sạch dữ liệu đã hoạt động tốt với tôi.
Andrii Krokhin
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.