thiết lập thiết bị để phát triển (????????????? không có quyền)


282

Tôi đang sử dụng điện thoại Samsung galaxy nexus ( nền tảng Android 4.0 ).

Tôi đang phát triển ứng dụng Android trên hệ điều hành Ubuntu linux. Tôi muốn chạy ứng dụng của mình trực tiếp trên thiết bị cầm tay Samsung, vì vậy tôi đã thực hiện các bước thiết lập sau:

  1. trong dự án của tôi AndroidManifest.xmltập tin, thêm android:debuggable="true"vào <application>yếu tố

  2. Trên thiết bị, trong Cài đặt> Bảo mật được bật Nguồn không xác định

  3. Trên thiết bị, trong Cài đặt> Tùy chọn nhà phát triển đã bật gỡ lỗi USB

  4. Trên máy tính của tôi, đã tạo /etc/udev/rules.d/51-android.rulestệp có nội dung sau:

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
  5. Trên máy tính của tôi, chạy chmod a+r /etc/udev/rules.d/51-android.ruleslệnh

Sau đó, trên máy tính của tôi, tôi đã mở một thiết bị đầu cuối và thực hiện adb deviceslệnh, tôi nhận được:

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

Vì tôi không thấy thiết bị của mình mà chỉ thấy ???????????? no permissions, sau đó tôi chạy các lệnh sau:

 adb kill-server
 adb start-server
 adb devices

Nhưng tôi vẫn nhận được:

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

Tại sao? Tôi đang thiếu gì?


Sau khi thoát adb kill-server, bạn có nhận được thông báo rằng * daemon không chạy. bắt đầu ngay bây giờ trên cổng 5037 * * daemon đã bắt đầu thành công * --- nếu không thử cho đến khi bạn nhận được thông báo này
Andro Selva

2
Hãy thử kiểm tra xem người dùng của bạn có ở trong plugdevnhóm không.
Serge Glotov

2
Chạy => sudo adb start-server (Sử dụng quyền truy cập root để chạy adb)
Bị nhầm lẫn vào

cuối cùng tôi đã tìm thấy giải pháp hiệu quả cho tôi trong liên kết này github.com/snowdream/51-android
Abdulrahman Gamal

Câu trả lời:


450

Những gì làm việc cho tôi là để giết và khởi động lại máy chủ adb. Trên linux: sudo adb kill-servervà sau đó sudo adb start-server. Sau đó, nó sẽ phát hiện gần như mọi thiết bị ra khỏi hộp.


1
Tôi sử dụng root để thực thi lệnh "thiết bị adb" trong <android-SDK> / platform-tool /, tôi đã nhận được "Không tìm thấy lệnh 'adb'", tại sao?
Leem.fin

8
đảm bảo rằng adb của bạn có + x -rwxrwxr-x 1 martin martin 156K 2011-11-09 15:40 adb. Cố gắng di chuyển đến thư mục trực tiếp và bắt đầu thông qua "thiết bị sudo ./adb". Nếu bạn có thể chạy mà không cần sudo, bạn sẽ có thể chạy nó với sudo ... Tôi không chắc vấn đề của bạn có thể là gì ...
WarrenFaith

8
Bạn không cần phải chạy adb với quyền root nếu quyền udev của bạn được đặt chính xác. Xem câu trả lời của grebulons bên dưới hoặc tham khảo tài liệu Android: developer.android.com/tools/device.html
gnac

4
Một gợi ý quan trọng là ngắt kết nối cáp usb, vì vậy bạn đặt lại adb, kết nối cáp và nó hoạt động. Trong tình huống của tôi, trong khi tôi làm thủ tục với cáp được kết nối thì nó không hoạt động với tôi.
android

6
Và các lệnh là: adb kill-server sudo adb start-serverđể kiểm tra:adb devices
Asim

350

Không có gì làm việc cho tôi cho đến khi cuối cùng tôi tìm thấy câu trả lời ở đây: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

Tôi đang sao chép văn bản ở đây trong trường hợp nó biến mất trong tương lai.

Tạo một tệp có tên /tmp/android.rules với các nội dung sau (số nhà cung cấp hex được lấy từ trang danh sách nhà cung cấp):

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

Chạy các lệnh sau:

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

Ngắt kết nối cáp USB giữa điện thoại và máy tính.

Kết nối lại điện thoại.

Chạy adb devices để xác nhận rằng bây giờ nó có quyền truy cập điện thoại.

Xin lưu ý rằng có thể sử dụng , USER="$LOGINNAME"thay vì , MODE="0666"trong .rulestệp, thay thế$LOGINNAME cho tên đăng nhập của bạn, tức là những gì được id -nuin.

Trong một số trường hợp, có thể cần phải cung cấp cho tệp quy tắc udev một tên sắp xếp gần cuối, chẳng hạn như z51-android.rules.


7
Lưu ý: đối với Ubuntu Chính xác tên tệp 70-android.rulestheo bài đăng này: esausilva.com/2010/05/13/ . Ngoài ra kudos đã cho chúng tôi biết bạn phải khởi động lại udevvà tiêu diệt tất cả các quy trình adb. Làm việc như người ở!
Eduard Luca

Một cách tiếp cận tương tự được ghi nhận chính thức tại developer.android.com/tools/device.html
bjunix

4
Điều này hoạt động tốt nhưng, như @luciana lưu ý trong một câu trả lời khác, bạn có thể cần gọi sudo udevadm control --reload-rulesđể làm mới các quy tắc udev nếu khởi động lại máy chủ là không đủ.
serjlee

4
Điều này nên được đánh dấu là câu trả lời đúng, vì adb sudo-ing không nên là một yêu cầu cho Linux
Zac

1
Đây là câu trả lời đúng duy nhất ở đây. Cảm ơn cho nó! Ngoài ra, chúng ta có thể thấy đầu ra lsusb để đảm bảo nhà cung cấp được yêu cầu. Kỳ lạ nhất, chỉ một thiết bị của tôi (OnePlus One) đột nhiên ngừng hoạt động sau khi nâng cấp lên Android 7.1.2 (ngay cả khi chạy adb với quyền root), sau khi thêm quy tắc udev như mô tả ở trên, nó vẫn hoạt động trở lại.
dùng1209216

77

Nhập các lệnh sau:

adb kill-server sudo ./adb start-server adb devices

Vấn đề là máy chủ adb của bạn không chạy bằng root.


4
mặc dù ý tưởng giống như trong câu trả lời được chấp nhận, nhưng điều này chỉ giúp tôi, do ví dụ được cung cấp. Cảm ơn
user907860

1
@ user907860 thực sự tốt hơn câu trả lời được chấp nhận vì nó giải thích lý do tại sao bạn nên viết sudo :) (điều mà tôi đã không làm khi nhìn thấy câu trả lời được chấp nhận)
stan0

btw có ý tưởng nào tại sao adb nên chạy bằng root không?
stan0

xin lỗi không, tôi không nhớ
iancrowther

2
adb KHÔNG nên chạy như root. Nếu điều này là bắt buộc, hệ thống của bạn bị cấu hình sai. Ngừng ném "sudo" trước mọi thứ, nó có ý nghĩa bảo mật rất lớn.
hackel

55

Đã thử tất cả ở trên, không có gì hoạt động .. cuối cùng cũng hoạt động khi tôi chuyển đổi kết nối như từ MTP sang Camera (PTP).


3
Đối với những người thắc mắc làm thế nào để làm điều này ... Cài đặt hệ thống> Lưu trữ> Nút trên bên phải: Kết nối máy tính USB> Kết nối với chọn Camera (PTP) thay vì thiết bị Media (MTP)
Thaddeus Albers

3
người đàn ông, tôi đã tìm kiếm giải pháp như hai giờ, điều này hiệu quả với tôi trên Ubuntu 16.04, cảm ơn
Jorius

đây là điều đầu tiên cần kiểm tra Làm việc cho tôi
m50

32

Có rất nhiều câu trả lời không hay được đăng cho câu hỏi này, từ việc khăng khăng chạy adbnhư root(không nên gọi là giải pháp duy nhất hoặc thậm chí được đề xuất) cho đến giải quyết các vấn đề hoàn toàn không liên quan.

Dưới đây là công thức ngắn nhất và phổ biến nhất để chăm sóc quyền cho tất cả adbfastbootthiết bị cùng một lúc:

echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb

Hoặc bạn có thể sử dụng phiên bản dài hơn một chút tôi đã đăng lên ý chính này .

Đối với điều cụ thể mà OP đã làm sai trong câu hỏi của mình - đó không phải là tải lại các udevquy tắc sau khi chỉnh sửa .rulestệp.

Ngoài ra OP không cho biết bản dựng Android (hay còn gọi là ROM) mà anh ta có trên điện thoại. Các idVendorgiá trị được thiết lập trong phần mềm và do đó nó phụ thuộc vào ROM. Vì vậy, giá trị của 04E8anh ta được sử dụng trong quy tắc ban đầu của mình sẽ chỉ hoạt động đối với các thiết bị có ROM stock Samsung. Nhưng đây không phải là vấn đề đối với udevquy tắc này - nó phù hợp với tất cả các thiết bị có adbhoặc fastbootgiao diện bất kể VendorID của chúng .


Chỉ thiếu bước để thấy nó hoạt động là adb kill-server trước các thiết bị adb.
mstrange

1
Điều này dường như không còn hoạt động nữa trên Android 8.1. Làm thế nào bạn tìm ra những báo cáo adb như id thiết bị?
Cachapa

Làm việc cho tôi trên Android 7.1.2
Amerzilla

@Cachapa, nó hoạt động với tất cả các phiên bản Android. Ngay cả bản mới nhất (tại thời điểm tôi viết bài này) Android P Preview 4 cũng sử dụng cùng một ID giao diện adb - android.googlesource.com/pl platform / system / core /
P. P.

vẫn hoạt động với Android 11 android.googlesource.com/pl platform / system / core /
P. P.

16

Trong Archlinux điều này đôi khi có thể xảy ra. Cách khắc phục:

$ sudo -s
# adb kill-server
# adb start-server

Tôi không chắc đó có phải là thứ duy nhất khiến nó hoạt động không ... Tôi đã thử những thứ trên. Nhưng với bài đăng này trên Ubuntu, VBox không cho phép LG G3 của tôi được ủy quyền. Cảm ơn Keenan
Lastboy

Tôi không biết tại sao nhưng sudo adb kill-server; sudo adb start-serverkhông làm việc nhưng điều này đã làm.
Hritik

9

Đối với những người sử dụng debian, hướng dẫn thiết lập thiết bị trong Ubuntu để tạo tệp "/etc/udev/rules.d/51-android.rules" không hoạt động. Tôi làm theo hướng dẫn từ đây . Đặt xuống cùng ở đây để tham khảo.

Chỉnh sửa tệp này dưới dạng siêu người dùng

sudo nano /lib/udev/rules.d/91-permissions.rules

Tìm văn bản tương tự như thế này

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0664

Sau đó thay đổi chế độ thành 0666 như bên dưới

# usbfs-like devices 
SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, \ MODE=”0666

Điều này cho phép adb hoạt động, tuy nhiên chúng ta vẫn cần thiết lập thiết bị để có thể nhận ra thiết bị. Chúng ta cần tạo tập tin này dưới dạng siêu người dùng,

sudo nano /lib/udev/rules.d/99-android.rules

và nhập

SUBSYSTEM==”usb”, ENV{DEVTYPE}==”usb_device”, ATTRS{idVendor}==”0bb4″, MODE=”0666

dòng trên dành cho HTC, hãy theo dõi bài viết của @ grebulon để biết danh sách đầy đủ.

Lưu tệp và sau đó khởi động lại udev như siêu người dùng

sudo /etc/init.d/udev restart

Kết nối điện thoại qua USB và nó sẽ được phát hiện khi bạn biên dịch và chạy một dự án.


5

Tôi đã có cùng một vấn đề, giải pháp là như đồng nghiệp: (nhân tiện, bạn không phải root thiết bị của mình.)

  1. Nhập "su" để chuyển sang siêu người dùng.
  2. your-path / adb kill-server.
  3. máy chủ khởi động đường dẫn / adb của bạn.
  4. Nếu không có lỗi xảy ra, bạn có thể xem danh sách thiết bị có "thiết bị đường dẫn / adb" trong tài khoản root.
  5. Thoát siêu người dùng.
  6. Bây giờ bạn có thể thực hiện "thiết bị adb" trong tài khoản của mình.

Thưởng thức.


1
Trong trường hợp bạn không thể quản lý để đăng nhập bằng cách sử dụng su, sử dụng sudo su. Tôi đã làm. Và ngoài ra, nếu bạn không biết cách thoát người dùng - hãy sử dụng exit.
Pijusn

4

Tôi biết điều này có thể hơi muộn nhưng đây là một bài viết rất hay về cách thêm Trình điều khiển USB ADB của Android. Thêm thủ công trình điều khiển USB ADB của Android trong Ubuntu 14.04 LTS

Đã chỉnh sửa để thêm nội dung liên kết

Các bước

Lưu ý: Đảm bảo rằng bạn đã kết nối thiết bị Android của mình ở chế độ Gỡ lỗi USB

Mở terminal ( CTRL + ALT + T) và nhập lệnh: lsusb

Bây giờ bạn có thể nhận được một câu trả lời tương tự như thế này:
Bus 002 Device 013: ID 283b:1024

Lưu ý: Có tham chiếu đến điều nàyBus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

Bây giờ hãy nhập lệnh sau: sudo gedit /etc/udev/rules.d/51-android.rules
Thao tác này sẽ tạo tệp quy tắc android ( 51-android.rules) hoặc mở tệp quy tắc hiện có trong vị trí đã chỉ định ( /etc/udev/rules.d)

Thêm một dòng mới vào tập tin này:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

Lưu ý Chỉnh sửa idVendor& idProductgiá trị với các giá trị thiết bị của bạn. Lưu và đóng.

Bây giờ hãy nhập lệnh sau:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules- cấp quyền đọc / thực thi
sudo service udev restart- Khởi động lại udevdịch vụ

Bây giờ chúng ta phải thêm idVendorvào adb_usb.ini. Nhập các lệnh sau:
cd ~/.android
gedit adb_usb.ini

Thêm giá trị sau 0x283b

Điều này không có gì ngoài 0x ( idVendorgiá trị). Vì vậy, thay thế giá trị bằng. liên quan đến giá trị thiết bị của bạn Lưu và đóng tệp.

Bây giờ nhập lệnh sau:
sudo service udev restart

Cắm thiết bị Android và kết nối lại.
Bây giờ nhập lệnh sau:
adb kill-server
adb devices

Có bạn đi! Thiết bị của bạn phải được liệt kê.

Sao chép từ trình điều khiển USB ADB Android thủ công trong Ubuntu 14.04 LTS

Đã làm cho tôi.


4

Tôi gặp vấn đề tương tự với Galaxy S3 của tôi. Vấn đề của tôi là idVendorgiá trị 04E8không đúng. Để tìm đúng thiết bị, hãy kết nối điện thoại thông minh của bạn với máy tính và chạy lsusbtrong thiết bị đầu cuối. Nó sẽ liệt kê điện thoại thông minh của bạn như thế này:

Bus 002 Device 010: ID 18d1:d002 Google Inc.

Vì vậy, idVendorgiá trị đúng là 18d1. Và dòng trong /etc/udev/rules.d/51-android.rulesphải là:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev" 

Sau đó tôi chạy sudo udevadm control --reload-rulesvà mọi thứ đã hoạt động!


1
Bạn có thể có nghĩa là:ATTR{idVendor}=="18d1"
Tanocation

3

Sử dụng M0Rf30/android-udev-rulescộ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 và nó đã giải quyết vấn đề đó cho tôi.


1
Tại sao phải bận tâm với "duy trì danh sách" khi một quy tắc duy nhất hoạt động cho tất cả? stackoverflow.com/a/45006231/1778421
Alex P.

@AlexP. cảm ơn tôi không biết về phương pháp đó Bất cứ ý tưởng tại sao hướng dẫn chính thức không áp dụng mà thay vào đó?
Ciro Santilli 郝海东 冠状 病 事件

Bởi vì sự lười biếng và kiến ​​thức quán tính là chủ yếu. Các nhà phát triển Android ban đầu đã sử dụng các thiết bị có cùng ID nhà cung cấp để họ thực hiện phương pháp dễ nhất mà họ có thể nghĩ ra. Khi nhiều nhà cung cấp tạo ra nhiều thiết bị hơn - các nhà phát triển sẽ tiếp tục thêm nhiều ID vào tệp quy tắc.
Alex P.

2
  1. Thực hiện theo các hướng dẫn tại http://developer.android.com/guide/developing/device.html (Liên kết lưu trữ)
  2. Thay thế id nhà cung cấp 0bb4bằng 18d1trong/etc/udev/rules.d/51-android.rules

    Hoặc thêm một dòng khác có nội dung:

    SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
  3. Khởi động lại máy tính hoặc chỉ khởi động lại dịch vụ udev.

1

Khi bạn khởi động lại udev, tiêu diệt máy chủ adb và khởi động máy chủ adb goto android đường dẫn cài đặt sdk và làm tất cả trên sudo. sau đó chạy các thiết bị adb nó sẽ giải quyết vấn đề cấp phép.


1

Thiết bị của tôi là POSITIVO và hệ thống hoạt động của tôi là Ubuntu 14.04 LTS Vì vậy, vấn đề của tôi là tên biến

Tôi tạo tập tin /etc/udev/rules.d/51-android.rules và đặt SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

Tôi ngắt kết nối thiết bị và thực thi:

$ sudo udevadm control --reload-rules
$ sudo service udev restart

Sau đó, tôi kết nối lại thiết bị Android ở chế độ nhà phát triển và

$ adb devices

List of devices attached 
1A883XB1K   device

1

Không rút phích cắm

Tất cả các câu trả lời được cung cấp cho rằng bạn có thể rút và kết nối lại cáp USB. Trong trường hợp không thể thực hiện được (ví dụ: khi bạn ở xa), bạn có thể thực hiện các thao tác sau để thực hiện những gì quy tắc udev được đề xuất sẽ thực hiện khi cắm lại:

lsusb

Tìm thiết bị bạn quan tâm, ví dụ:

Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus

Lưu ý số xe buýt đang bật và sau đó thực thi, ví dụ: đối với xe buýt 003:

sudo chmod a+w /dev/bus/usb/003/*

Rõ ràng điều này có thể được cho phép nhiều hơn bạn muốn (có thể có nhiều thiết bị được đính kèm hơn chỉ có thiết bị này), nhưng bạn có ý tưởng.


để áp dụng udevquy tắc mới mà không cần kết nối lại thiết bị, chỉ cần sử dụng udevadm trigger --verbose --action=add --subsystem-match=usblệnh.
Alex P.

1

Bạn KHÔNG nên chạy adbmáy chủ với quyền root như các câu trả lời khác đang gợi ý. Thay vào đó, nếu bạn đang sử dụng Arch Linux, hãy làm như sau:

  1. Cài đặt android-udevgói với Pacman
  2. Tải lại quy tắc udev:

    # udevadm control --reload-rules
  3. Thêm chính bạn vào adbusersnhóm và sau đó đăng xuất và đăng nhập:

    # usermod -aG adbusers $LOGNAME

Nguồn: https://wiki.archlinux.org/index.php/android#Configuring_adb


0

Hãy thử thay vì GROUP="plugdev"sử dụng nhóm chính của người dùng của bạn.


Tôi đang sử dụng tên người dùng của mình, nó không giúp ích gì
Leem.fin

0

Trong trường hợp của tôi trên Ubuntu 12.04 LTS, tôi đã phải thay đổi chế độ usb HTC Incredible của mình từ sạc sang Media và sau đó thiết bị xuất hiện dưới adb. Tất nhiên, gỡ lỗi đã có trong cả hai trường hợp.


0

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.


0

Tôi đã có cùng một vấn đề và tôi đã làm theo các bước sau:

# Clone this repository
git clone https://github.com/M0Rf30/android-udev-rules.git
cd android-udev-rules
# Copy rules file
sudo cp -v 51-android.rules /etc/udev/rules.d/51-android.rules
# OR create a sym-link to the rules file - choose this option if you'd like to update your udev rules using git.
sudo ln -sf "$PWD"/51-android.rules /etc/udev/rules.d/51-android.rules
# Change file permissions
sudo chmod a+r /etc/udev/rules.d/51-android.rules
# If adbusers group already exists remove old adbusers group
groupdel adbusers
# add the adbusers group if it's doesn't already exist
sudo mkdir -p /usr/lib/sysusers.d/ && sudo cp android-udev.conf /usr/lib/sysusers.d/
sudo systemd-sysusers # (1)
# OR on Fedora:
groupadd adbusers
# Add your user to the adbusers group
sudo usermod -a -G adbusers $(whoami)
# Restart UDEV
sudo udevadm control --reload-rules
sudo service udev restart
# OR on Fedora:
sudo systemctl restart systemd-udevd.service
# Restart the ADB server
adb kill-server
# Replug your Android device and verify that USB debugging is enabled in developer options
adb devices
# You should now see your device

Các bước trên được mô tả trên quy tắc android-udev . Nó làm việc cho tôi.

Chỉ cần chắc chắn để xác nhận hộp thoại sẽ xuất hiện trên màn hình điện thoại của bạn sau khi cắm lại.


0
sudo usermod -aG plugdev $LOGNAME

Lệnh này đã làm việc cho tôi


-1

Tôi đã sử dụng su và nó bắt đầu làm việc. Khi tôi sử dụng Jetbrains với người dùng thông thường, tôi thấy vấn đề này nhưng sau khi khởi động lại Jetbrains ở chế độ su, tôi có thể thấy thiết bị của mình mà không phải làm gì.

Tôi đang sử dụng Ubuntu 13.04 và Jetbrains 12.1.4


-1

Bạn cũng có thể thử chỉnh sửa tệp adb_usb.ini , được đặt tại /home/username/.android/ . Tập tin này chứa danh sách nhà cung cấp id của thiết bị bạn muốn kết nối. Bạn chỉ cần thêm nhà cung cấp id thiết bị của mình vào dòng mới (đó là một id trên mỗi dòng). Sau đó khởi động lại máy chủ adb và cắm lại thiết bị của bạn.

Nó hoạt động với tôi trên Ubuntu 12.10.


-1

Dù sao, những gì tôi đã làm để giải quyết vấn đề này (trên Ubuntu ).

  1. Được xác định trong những trường hợp tôi cần để chạy các lệnh này. Đối với hầu hết người dùng Ubuntu, có một thư mục gốc (tệp ẩn .bashrc).

    Trong đó bạn có thể ghi lại sự khởi chạy của các lệnh này. Nhưng các lệnh này sẽ được kích hoạt khi bạn nhập bashlệnh trong bàn điều khiển.

  2. Vì tôi có shell .zshrc nên tôi đã làm như sau:

    mở giao diện điều khiển: gedit .zshrc

Khi tệp mở ra, thêm dòng sau:

./.add_device_permissions.sh

Sau hoặc trước, chúng ta cần tạo tệp này: .add_device_permissions.shtrong đó chúng ta viết như sau:

#!/bin/bash
# Add permissions
ADB="/home/vadimm/Android/Sdk/platform-tools/adb"
$ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices
$ADB kill-server
cat .permissions_redmi_note | sudo -S $ADB devices

Ngoài ra, chúng tôi cần tạo .permissions_redmi_note nơi chúng tôi cần mã hóa mật khẩu của mình.

  1. Không thêm vào tệp .zshrckhông cần thiết, chúng tôi có thể chỉ định đường dẫn khi khởi động hệ thống:Startup Applications Preferences

Nơi chúng tôi nhấn vào "Thêm" và viết lệnh của chúng tôi: /home/vadimm/.add_device_permissions.sh

  1. Ngoài ra, bạn có thể thử sử dụng dòng lệnh tiếp theo: ./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices

-2

Nếu bất cứ ai phải đối mặt với thông báo lỗi sau khi họ sử dụng adb devices

no permissions (verify udev rules); see [http://developer.android.com/tools/device.html]

Thực hiện như sau

sudo -s 
adb kill-server
adb start-server

Điều đó đã khắc phục sự cố cho tôi trên thiết bị Android xây dựng tùy chỉnh

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.