ตั้งค่าอุปกรณ์สำหรับการพัฒนา (ไม่มีสิทธิ์)


282

ฉันใช้โทรศัพท์ Samsung Galaxy Nexus ( แพลตฟอร์มAndroid 4.0 )

ฉันกำลังพัฒนาแอพ Android บน Ubuntu linux OS ฉันต้องการเรียกใช้แอปพลิเคชันของฉันโดยตรงบนอุปกรณ์มือถือซัมซุงดังนั้นฉันจึงทำตามขั้นตอนการตั้งค่าต่อไปนี้:

  1. ในAndroidManifest.xmlไฟล์โครงการของฉันเพิ่มลงandroid:debuggable="true"ใน<application>องค์ประกอบ

  2. บนอุปกรณ์ในการตั้งค่า> ความปลอดภัยเปิดใช้งานแหล่งที่ไม่รู้จัก

  3. บนอุปกรณ์ในการตั้งค่า> ตัวเลือกผู้พัฒนาเปิดใช้งานการแก้ไขข้อบกพร่อง USB

  4. บนคอมพิวเตอร์ของฉันสร้าง/etc/udev/rules.d/51-android.rulesไฟล์โดยมีเนื้อหาดังต่อไปนี้:

    SUBSYSTEM=="usb", ATTR{idVendor}=="04E8", MODE="0666", GROUP="plugdev" 
  5. บนคอมพิวเตอร์ของฉันเรียกใช้chmod a+r /etc/udev/rules.d/51-android.rulesคำสั่ง

จากนั้นในคอมพิวเตอร์ของฉันฉันเปิดเทอร์มินัลและดำเนินการadb devicesคำสั่งฉันได้รับ:

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

เนื่องจากฉันไม่เห็นอุปกรณ์ของฉัน แต่เพียงอย่างเดียว???????????? no permissionsฉันจึงเรียกใช้คำสั่งต่อไปนี้:

 adb kill-server
 adb start-server
 adb devices

แต่ฉันยังคงได้รับ:

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

ทำไม? ฉันพลาดอะไรไป


หลังจาก exbid adb kill-server คุณได้รับข้อความที่ * daemon ไม่ทำงาน เริ่มต้นตอนนี้ที่พอร์ต 5037 * * daemon เริ่มต้นได้สำเร็จ * --- ถ้าไม่ลองจนกว่าคุณจะได้รับข้อความนี้
Andro Selva

2
ลองตรวจสอบว่าผู้ใช้ของคุณอยู่ในplugdevกลุ่ม
Sergey Glotov

2
Run => sudo adb start-server (ใช้การเข้าถึงรูทเพื่อรัน adb)
สับสน

ในที่สุดฉันก็พบวิธีแก้ปัญหาที่ทำงานให้ฉันในลิงค์นี้github.com/snowdream/51-android
Abdulrahman Gamal

คำตอบ:


451

สิ่งที่ดีสำหรับฉันคือการฆ่าและเริ่มเซิร์ฟเวอร์ adb อีกครั้ง บนลินุกซ์: แล้วsudo adb kill-server sudo adb start-serverจากนั้นมันจะตรวจจับอุปกรณ์เกือบทุกตัวที่อยู่นอกกล่อง


1
ฉันใช้รูทเพื่อรันคำสั่ง "อุปกรณ์ adb" ภายใต้ <android-SDK> / platform-tool /, ฉันได้รับ "ไม่พบคำสั่ง" adb "พบ" ทำไม?
Leem.fin

8
ให้แน่ใจว่าคุณได้ adb + -rwxrwxr-x 1 martin martin 156K 2011-11-09 15:40 adbx ลองย้ายไปที่ไดเรกทอรีโดยตรงและเริ่มจาก "sudo ./adb devices" หากคุณสามารถทำงานได้โดยไม่ต้อง sudo คุณควรจะสามารถทำงานได้ด้วย sudo ... ฉันไม่แน่ใจว่าปัญหาของคุณอาจจะเป็น ...
WarrenFaith

8
คุณไม่จำเป็นต้องเรียกใช้ adb ในฐานะรูทหากการตั้งค่า udev ของคุณถูกต้อง ดูคำตอบ grebulons ด้านล่างหรืออ้างอิงเอกสาร Android: developer.android.com/tools/device.html
gnac

4
ข้อเสนอแนะที่สำคัญอย่างหนึ่งคือถอดสายเคเบิล USB ออกดังนั้นคุณจึงรีเซ็ต adb เชื่อมต่อสายเคเบิลและใช้งานได้ ในสถานการณ์ของฉันในขณะที่ฉันทำตามขั้นตอนด้วยการเชื่อมต่อสายเคเบิลมันไม่ทำงานสำหรับฉัน
androidevil

6
และคำสั่งคือ: adb kill-server sudo adb start-serverเพื่อตรวจสอบ:adb devices
Asim

350

ไม่มีอะไรทำงานให้ฉันจนกว่าฉันจะพบคำตอบได้ที่นี่: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

ฉันกำลังคัดลอกข้อความที่นี่ในกรณีที่มันจะหายไปในอนาคต

สร้างไฟล์ชื่อ /tmp/android.rules ด้วยเนื้อหาต่อไปนี้ (หมายเลขผู้ขายฐานสิบหกถูกนำมาจากหน้ารายการผู้ขาย):

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"

รันคำสั่งต่อไปนี้:

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

ปลดสาย USB ระหว่างโทรศัพท์กับคอมพิวเตอร์

เชื่อมต่อโทรศัพท์ใหม่

เรียกใช้adb devicesเพื่อยืนยันว่าตอนนี้ได้รับอนุญาตให้เข้าถึงโทรศัพท์

โปรดทราบว่ามันเป็นไปได้ที่จะใช้, USER="$LOGINNAME"แทน, MODE="0666"ใน.rulesไฟล์แทน$LOGINNAMEชื่อเข้าสู่ระบบของคุณคือสิ่งที่id -nuพิมพ์

ในบางกรณีก็อาจจำเป็นต้องให้กฎ udev z51-android.rulesไฟล์ชื่อที่ทุกประเภทปิดไปที่สิ้นสุดเช่น


7
หมายเหตุ: สำหรับ Ubuntu แม่นยำชื่อไฟล์จะ70-android.rulesเป็นไปตามโพสต์นี้: esausilva.com/2010/05/13/ … ความรุ่งโรจน์ที่แจ้งให้เราทราบว่าคุณต้องรีสตาร์ทudevและฆ่ากระบวนการ adb ทั้งหมด ทำงานเหมือนจับใจ!
Eduard Luca

แนวทางที่คล้ายกันนี้ได้รับการบันทึกอย่างเป็นทางการที่developer.android.com/tools/device.html
bjunix

4
สิ่งนี้ใช้ได้ดี แต่ตามที่ระบุโดย @luciana ในคำตอบอื่นคุณอาจต้องโทรsudo udevadm control --reload-rulesไปรีเฟรชกฎ udev หากการรีสตาร์ทเซิร์ฟเวอร์นั้นไม่เพียงพอ
serjlee

4
สิ่งนี้ควรถูกทำเครื่องหมายเป็นคำตอบที่ถูกต้องเนื่องจาก sudo-ing adb ไม่ควรเป็นข้อกำหนดสำหรับ Linux
Zac

1
นี่เป็นคำตอบเดียวที่ถูกต้องที่นี่ ขอบคุณสำหรับมัน! นอกจากนี้เรายังสามารถเห็นเอาต์พุต lsusb เพื่อให้แน่ใจว่ามีผู้ขายที่ต้องการรวมอยู่ด้วย แปลกที่สุดเพียงหนึ่งในอุปกรณ์ของฉัน (OnePlus One) ก็หยุดทำงานทันทีหลังจากอัพเกรดเป็น Android 7.1.2 (แม้เมื่อเรียกใช้ adb เป็น root) หลังจากเพิ่มกฎ udev ตามที่อธิบายไว้ข้างต้นมันทำงานได้อีกครั้ง
user1209216

77

ป้อนคำสั่งต่อไปนี้:

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

ปัญหาคือเซิร์ฟเวอร์ adb ของคุณไม่ทำงานเหมือนรูท


4
แม้ว่าความคิดจะเหมือนกับในคำตอบที่ยอมรับ แต่สิ่งนี้ช่วยฉันได้เพียงอย่างเดียวเนื่องจากตัวอย่างที่ให้มา ขอบคุณ
user907860

1
@ user907860 มันดีกว่าคำตอบที่ยอมรับเพราะมันอธิบายว่าทำไมคุณควรเขียน sudo :) (ซึ่งฉันไม่ได้ทำเมื่อฉันเห็นคำตอบที่ยอมรับ)
stan0

btw ความคิดใดว่าทำไม adb ควรทำงานเป็น root?
stan0

ขอโทษไม่ฉันจำไม่ได้
iancrowther

2
adb ไม่ควรทำงานเป็น root หากจำเป็นต้องระบุระบบของคุณจะได้รับการกำหนดค่าผิดพลาด หยุดการขว้าง "sudo" ต่อหน้าทุกอย่างมันมีผลกระทบด้านความปลอดภัยอย่างมาก
hackel

55

พยายามทุกอย่างแล้วไม่มีใครทำงาน .. ในที่สุดฉันก็เปลี่ยนจาก MTP เป็น Camera (PTP)


3
สำหรับผู้ที่สงสัยว่าจะทำอย่างไร ... การตั้งค่าระบบ> ที่เก็บข้อมูล> ปุ่มด้านขวาบน: การเชื่อมต่อคอมพิวเตอร์ USB> เชื่อมต่อเป็นเลือกกล้อง (PTP) แทนอุปกรณ์สื่อ (MTP)
แธดเดียส Albers

3
ชายฉันกำลังมองหาวิธีแก้ปัญหาเช่นสองชั่วโมงนี้ทำงานกับฉันใน Ubuntu 16.04 ขอบคุณ
Jorius

นี่ควรเป็นสิ่งแรกที่ต้องตรวจสอบ ทำงานให้ฉัน
m50

32

มีคำตอบที่ไม่ดีมากมายที่โพสต์ไว้ในคำถามนี้ตั้งแต่ยืนยันในการทำงานadbเป็นroot(ซึ่งไม่ควรได้รับการขนานนามว่าเป็นทางออกเดียวหรือที่แนะนำ) จนถึงการแก้ปัญหาที่ไม่เกี่ยวข้องอย่างสมบูรณ์

นี่คือสูตรที่สั้นและเป็นสากลที่สุดสำหรับการดูแลสิทธิ์ทั้งหมดadbและfastbootอุปกรณ์ในครั้งเดียว:

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

หรือคุณสามารถใช้เวอร์ชันที่ยาวกว่าเล็กน้อยที่ฉันโพสต์ไว้ในกระทู้นี้

สำหรับสิ่งที่เฉพาะเจาะจงที่ OP ทำผิดในคำถามของเขา - มันไม่ได้โหลดudevกฎใหม่หลังจากแก้ไข.rulesไฟล์

OP ยังไม่ได้บอกว่าเขาใช้ Android รุ่นใด (aka ROM) บนโทรศัพท์ของเขา idVendorค่าตั้งอยู่ในซอฟแวร์และดังนั้นจึงขึ้นอยู่กับรอม ดังนั้นคุณค่าของ04E8เขาที่ใช้ในกฎดั้งเดิมของเขาจะใช้ได้เฉพาะกับอุปกรณ์ที่มีรอมหุ้นของซัมซุงเท่านั้น แต่ตอนนี้ไม่ได้เป็นปัญหาสำหรับการนี้udevกฎ - มันตรงกับทุกอุปกรณ์ด้วยadbหรือfastbootอินเตอร์เฟซของพวกเขาโดยไม่คำนึงถึงVendorID


ขั้นตอนที่ขาดหายไปเท่านั้นที่จะเห็นการทำงานคือ adb kill-server ก่อนอุปกรณ์ adb
mstrange

1
ดูเหมือนว่ามันจะไม่ทำงานบน Android 8.1 อีกต่อไป คุณทราบได้อย่างไรว่ารายงาน adb ใดบ้างที่เป็นรหัสอุปกรณ์?
Cachapa

ทำงานสำหรับฉันใน Android 7.1.2
Amerzilla

@Cachapa ใช้ได้กับ Android ทุกรุ่น แม้แต่ตอนล่าสุด (ในขณะที่ฉันกำลังเขียน) Android P Preview 4 ใช้ ID อินเตอร์เฟส adb เดียวกัน - android.googlesource.com/platform/system/core/+/…
Alex P.

ยังคงทำงานกับ Android 11 android.googlesource.com/platform/system/core/+/…
Alex P.

16

ใน Archlinux สิ่งนี้สามารถเกิดขึ้นได้เป็นครั้งคราว การแก้ไข:

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

ฉันไม่แน่ใจว่านั่นเป็นสิ่งเดียวที่ทำให้มันทำงานได้ ... ฉันลองทำตามข้างบน แต่ไม่มีโพสต์นี้ Ubuntu บน VBox ไม่ได้ทำให้ LG G3 ของฉันได้รับอนุญาต ขอบคุณ Keenan
lastboy

ฉันไม่รู้ว่าทำไม แต่sudo adb kill-server; sudo adb start-serverไม่ทำงาน แต่อันนี้ทำ
Hritik

9

สำหรับผู้ที่ใช้เดเบียนคำแนะนำในการตั้งค่าอุปกรณ์ภายใต้ Ubuntu เพื่อสร้างไฟล์ "/etc/udev/rules.d/51-android.rules" จะไม่ทำงาน ผมทำตามคำแนะนำจากที่นี่ วางไว้ที่นี่เพื่อการอ้างอิง

แก้ไขไฟล์นี้เป็น superuser

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

ค้นหาข้อความที่คล้ายกับสิ่งนี้

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

จากนั้นเปลี่ยนโหมดเป็น 0666 เช่นด้านล่าง

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

สิ่งนี้ทำให้ adb ทำงานได้ แต่เรายังต้องตั้งค่าอุปกรณ์เพื่อให้สามารถจดจำได้ เราจำเป็นต้องสร้างไฟล์นี้เป็น superuser

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

และป้อน

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

บรรทัดด้านบนสำหรับ HTC ติดตาม @ grebulon เพื่อดูรายการทั้งหมด

บันทึกไฟล์แล้วรีสตาร์ท udev ในฐานะผู้ใช้ขั้นสูง

sudo /etc/init.d/udev restart

เชื่อมต่อโทรศัพท์ผ่าน USB และควรตรวจพบเมื่อคุณรวบรวมและเรียกใช้โครงการ


5

ฉันมีปัญหาเดียวกันทางออกคือเพื่อน: (โดยคุณไม่ต้องรูทอุปกรณ์ของคุณ)

  1. พิมพ์ "su" เพื่อเปลี่ยนเป็น super user
  2. your-path / adb kill-server
  3. your-path / adb start-server
  4. หากไม่มีข้อผิดพลาดเกิดขึ้นคุณสามารถดูรายการอุปกรณ์ด้วย "your-path / adb devices" ในบัญชีรูท
  5. ออกจากผู้ใช้ขั้นสูง
  6. ตอนนี้คุณสามารถดำเนินการ "อุปกรณ์ adb" ในบัญชีของคุณ

สนุก.


1
ในกรณีที่คุณไม่สามารถจัดการเพื่อเข้าสู่ระบบโดยใช้การใช้งานsu sudo suฉันทำ. และยังถ้าคุณไม่ทราบวิธีการที่จะเลิกการใช้ - exitการใช้งาน
Pijusn

4

ฉันรู้ว่ามันอาจจะช้าไปหน่อย แต่นี่เป็นบทความที่ดีมากเกี่ยวกับวิธีเพิ่ม Android ADB USB Driver เพิ่มไดรเวอร์ Android ADB USB ด้วยตนเองใน Ubuntu 14.04 LTS

แก้ไขเพื่อเพิ่มเนื้อหาลิงก์

ขั้นตอน

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณได้เชื่อมต่ออุปกรณ์ Android ของคุณในโหมดUSB Debugging

เปิด terminal ( CTRL + ALT + T) และป้อนคำสั่ง: lsusb

ตอนนี้คุณอาจได้รับคำตอบที่คล้ายกันนี้:
Bus 002 Device 013: ID 283b:1024

หมายเหตุ: มีการอ้างอิงถึงสิ่งนี้Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

ตอนนี้ป้อนคำสั่งต่อไปนี้: sudo gedit /etc/udev/rules.d/51-android.rules
สร้างไฟล์กฎ android ( 51-android.rules) หรือเปิดไฟล์ที่มีอยู่ในตำแหน่งที่ระบุ ( /etc/udev/rules.d)

เพิ่มบรรทัดใหม่ในไฟล์นี้:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

หมายเหตุแก้ไขidVendor& idProductค่าด้วยค่าอุปกรณ์ของคุณ บันทึกและปิด

ตอนนี้ป้อนคำสั่งต่อไปนี้:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules- ให้สิทธิ์ในการอ่าน / การดำเนินการ
sudo service udev restart- เริ่มudevบริการใหม่

ตอนนี้เรามีการเพิ่มการidVendor adb_usb.iniป้อนคำสั่งต่อไปนี้:
cd ~/.android
gedit adb_usb.ini

เพิ่มค่าต่อไปนี้ 0x283b

นี่คืออะไรยกเว้น 0x ( idVendorค่า) ดังนั้นแทนที่ค่าด้วย เกี่ยวกับค่าอุปกรณ์ของคุณบันทึกและปิดไฟล์

ตอนนี้ป้อนคำสั่งต่อไปนี้:
sudo service udev restart

เสียบอุปกรณ์ Android และเชื่อมต่อใหม่อีกครั้ง
ตอนนี้ป้อนคำสั่งต่อไปนี้:
adb kill-server
adb devices

ไปแล้ว! อุปกรณ์ของคุณจะต้องอยู่ในรายการ

คัดลอกจาก การเพิ่มไดรเวอร์ Android ADB USB ด้วยตนเองใน Ubuntu 14.04 LTS

ทำงานให้ฉัน


4

ฉันมีปัญหาเดียวกันกับ Galaxy S3 ของฉัน ปัญหาของฉันคือidVendorค่า04E8ไม่ถูกต้อง ในการค้นหาอุปกรณ์ที่เหมาะสมเชื่อมต่อสมาร์ทโฟนของคุณกับคอมพิวเตอร์และเรียกใช้lsusbในเครื่อง มันจะแสดงรายการสมาร์ทโฟนของคุณเช่นนี้:

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

ดังนั้นขวาค่าidVendor 18d1และบรรทัดใน /etc/udev/rules.d/51-android.rulesจะต้องมี:

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

จากนั้นฉันก็วิ่งsudo udevadm control --reload-rulesและทุกอย่างทำงานได้!


1
คุณอาจหมายถึง:ATTR{idVendor}=="18d1"
Tanasis

3

ใช้M0Rf30/android-udev-rulesชุมชน GitHub ดูแล udev-rules

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

นี่คือรายการ udev-rules ที่สมบูรณ์แบบที่สุดที่ฉันเคยเห็นมามากกว่าที่แนะนำsudo apt-get install android-tools-adb ไว้ในเอกสารอย่างเป็นทางการในปัจจุบันและแก้ไขปัญหานั้นให้ฉันได้


1
ทำไมต้องใส่ใจกับ "การดูแลรักษารายการ" เมื่อกฎเดียวใช้ได้กับทุกคน? stackoverflow.com/a/45006231/1778421
Alex P.

@AlexP ขอบคุณฉันไม่รู้เกี่ยวกับวิธีการนั้น ความคิดใดที่ว่าทำไมคู่มืออย่างเป็นทางการไม่ได้แนะนำสิ่งนั้นแทน
Ciro Santilli 郝海东冠状病六四事件法轮功

เพราะความเกียจคร้านและความรู้ความเฉื่อยเป็นส่วนใหญ่ นักพัฒนา Android ดั้งเดิมใช้อุปกรณ์ที่มีรหัสผู้ขายเดียวกันดังนั้นพวกเขาจึงใช้วิธีที่ง่ายที่สุดที่คิดได้ เมื่อผู้ขายเพิ่มเติมสร้างอุปกรณ์มากขึ้น - นักพัฒนาเพิ่งเพิ่ม ID เพิ่มเติมไปยังไฟล์กฎ
Alex P.

2
  1. ทำตามคำแนะนำที่http://developer.android.com/guide/developing/device.html (ลิงก์ที่เก็บถาวร)
  2. แทนที่รหัสผู้ขาย0bb4ด้วยด้วย18d1ใน/etc/udev/rules.d/51-android.rules

    หรือเพิ่มอีกบรรทัดที่อ่าน:

    SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"
  3. รีสตาร์ทคอมพิวเตอร์หรือเพียงแค่เริ่มบริการ udev

1

เมื่อคุณรีสตาร์ท udev, ฆ่าเซิร์ฟเวอร์ adb & เริ่มเซิร์ฟเวอร์ adb ไปยัง android sdk เส้นทางการติดตั้ง & ทำทุกอย่างบน sudo จากนั้นเรียกใช้อุปกรณ์ adb มันจะแก้ปัญหาการอนุญาต


1

อุปกรณ์ของฉันคือ POSITIVO และระบบปฏิบัติการของฉันคือUbuntu 14.04 LTS ดังนั้นปัญหาของฉันคือชื่อตัวแปร

ฉันสร้างไฟล์ /etc/udev/rules.d/51-android.rules และใส่ SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

ฉันตัดการเชื่อมต่ออุปกรณ์และดำเนินการ:

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

หลังจากนี้ฉันเชื่อมต่ออุปกรณ์ Android ในโหมดนักพัฒนาซอฟต์แวร์อีกครั้งและ

$ adb devices

List of devices attached 
1A883XB1K   device

1

โดยไม่ต้องถอดปลั๊ก

คำตอบที่ให้ทั้งหมดสมมติว่าคุณสามารถถอดและเชื่อมต่อสายเคเบิล USB ได้อีกครั้ง ในสถานการณ์ที่เป็นไปไม่ได้ (เช่นเมื่อคุณอยู่ห่างไกล) คุณสามารถทำสิ่งต่อไปนี้เพื่อทำสิ่งที่กฎ udev ที่แนะนำจะทำบนปลั๊กอีกครั้ง:

lsusb

ค้นหาอุปกรณ์ที่คุณสนใจเช่น:

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

จดบันทึกหมายเลขรถบัสที่เปิดอยู่จากนั้นเรียกใช้งานเช่นรถบัส003:

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

เห็นได้ชัดว่านี่อาจได้รับอนุญาตมากกว่าที่คุณต้องการ (อาจมีอุปกรณ์เพิ่มเติมมากกว่านี้) แต่คุณได้รับแนวคิด


เพื่อใช้udevกฎใหม่โดยไม่ต้องเชื่อมต่ออุปกรณ์ใหม่เพียงใช้udevadm trigger --verbose --action=add --subsystem-match=usbคำสั่ง
Alex P.

1

คุณไม่ควรใช้adbเซิร์ฟเวอร์เนื่องจากรูทตามคำแนะนำอื่น ๆ หากคุณใช้ Arch Linux ให้ทำดังนี้:

  1. ติดตั้งandroid-udevแพ็คเกจด้วย Pacman
  2. โหลดกฎ udev อีกครั้ง:

    # udevadm control --reload-rules
  3. เพิ่มตัวเองในadbusersกลุ่มจากนั้นออกจากระบบและเข้าสู่ระบบ:

    # usermod -aG adbusers $LOGNAME

ที่มา: https://wiki.archlinux.org/index.php/android#Configuring_adb


0

ลองแทนที่จะGROUP="plugdev"ใช้กลุ่มหลักของผู้ใช้ของคุณ


ฉันใช้ชื่อผู้ใช้ของฉันไม่สามารถช่วยได้
Leem.fin

0

ในกรณีของฉันบน Ubuntu 12.04 LTS ฉันต้องเปลี่ยนโหมด usb HTC Incredible ของฉันจากการชาร์จเป็นสื่อจากนั้นอุปกรณ์ก็ปรากฏขึ้นภายใต้ adb แน่นอนว่าการดีบักเปิดใช้งานแล้วในทั้งสองกรณี


0

โปรดอย่าทำตามวิธีแก้ปัญหาที่แนะนำให้ใช้sudo ( sudo adb start-server)! adb ที่รันในฐานะ root (ผู้ดูแลระบบ) และไม่ควรรันเช่นนั้น !!! มันเป็นวิธีแก้ปัญหาที่ไม่ดี !

ทุกอย่างที่ทำงานในฐานะรูทสามารถทำอะไรก็ได้ในระบบของคุณถ้ามันสร้างหรือแก้ไขไฟล์สามารถเปลี่ยนการอนุญาตให้รูทใช้โดยรูทเท่านั้น อีกครั้งไม่ได้!

สิ่งที่ถูกต้องที่จะทำคือการตั้งค่าระบบของคุณเพื่อให้ผู้ได้รับอนุญาตให้ตรวจสอบคำแนะนำนี้ผมเขียนเกี่ยวกับวิธีการทำอย่างถูกต้อง


0

ฉันมีปัญหาเดียวกันและฉันทำตามขั้นตอนเหล่านี้:

# 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

ขั้นตอนข้างต้นจะมีคำอธิบายเกี่ยวกับหุ่นยนต์ udev กฎ มันใช้งานได้สำหรับฉัน

เพียงแค่ให้แน่ใจว่าได้ยืนยันการโต้ตอบที่จะปรากฏบนหน้าจอโทรศัพท์ของคุณหลังจากที่มันมาแทนที่



-1

ฉันใช้ su และมันเริ่มทำงาน เมื่อฉันใช้ Jetbrains กับผู้ใช้ปกติฉันเห็นปัญหานี้ แต่หลังจากรีสตาร์ท Jetbrains ในโหมด su ฉันสามารถดูอุปกรณ์ของฉันได้โดยไม่ต้องทำอะไรเลย

ฉันใช้ Ubuntu 13.04 และ Jetbrains 12.1.4


-1

นอกจากนี้คุณยังสามารถลองแก้ไขadb_usb.iniไฟล์อยู่ที่/home/username/.android/ ไฟล์นี้มีรายการผู้ขาย id ของอุปกรณ์ที่คุณต้องการเชื่อมต่อ คุณเพียงแค่เพิ่มผู้ขาย id ของอุปกรณ์ของคุณในบรรทัดใหม่ (มันเป็นหนึ่ง id ต่อบรรทัด) จากนั้นรีสตาร์ทเซิร์ฟเวอร์ adb และทำการเชื่อมต่ออุปกรณ์ของคุณใหม่

มันใช้งานได้สำหรับฉันใน Ubuntu 12.10


-1

อย่างไรก็ตามสิ่งที่ฉันทำเพื่อแก้ไขปัญหานี้ (บนUbuntu )

  1. กำหนดในกรณีใดบ้างที่ฉันต้องเรียกใช้คำสั่งเหล่านี้ สำหรับผู้ใช้ Ubuntu ส่วนใหญ่จะมีโฮมโฟลเดอร์ (ไฟล์ที่ซ่อน.bashrc)

    ซึ่งคุณสามารถบันทึกการเรียกใช้คำสั่งเหล่านี้ได้ แต่คำสั่งเหล่านี้จะถูกทริกเกอร์เมื่อคุณป้อนbashคำสั่งในคอนโซล

  2. เนื่องจากฉันมีเชลล์. zshrc ดังนั้นฉันจึงทำสิ่งต่อไปนี้:

    เปิดคอนโซล: gedit .zshrc

เมื่อไฟล์เปิดขึ้นให้เพิ่มบรรทัดต่อไปนี้:

./.add_device_permissions.sh

หลังจากหรือก่อนหน้าเราต้องสร้างไฟล์นี้: .add_device_permissions.shซึ่งเราจะเขียนสิ่งต่อไปนี้:

#!/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

นอกจากนี้เรายังต้องสร้าง. permissions_redmi_note ที่เราต้องการให้ hardcode รหัสผ่าน

  1. ไม่ต้องเพิ่มลงในไฟล์ .zshrcโดยไม่จำเป็นเราสามารถระบุพา ธ เมื่อเริ่มต้นระบบเอง:Startup Applications Preferences

ที่ที่เรากดที่ "เพิ่ม" และเขียนคำสั่งของเรา: /home/vadimm/.add_device_permissions.sh

  1. นอกจากนี้คุณสามารถลองใช้ในบรรทัดคำสั่งคำสั่งถัดไป: ./adb devices ./adb kill-server sudo ./adb devices ./adb kill-server ./adb devices

-2

หากทุกคนประสบข้อผิดพลาดต่อไปนี้เมื่อพวกเขาใช้ adb devices

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

ดำเนินการต่อไปนี้

sudo -s 
adb kill-server
adb start-server

ที่แก้ไขปัญหาสำหรับฉันในอุปกรณ์ Android สร้างที่กำหนดเอง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.