GNU/Linux >> Znalost Linux >  >> Linux

Android – Jak zjistím, že moje zařízení ADB na Linuxu detekuje?

Povolte v zařízení ladění USB

To se provádí v Nastavení › Vývoj . Pokud tuto položku v nabídce nastavení nemáte, přejděte na Nastavení › O aplikaci , přejděte na „Číslo sestavení“ a tlučte do něj jako opice, dokud vám vaše zařízení nepogratuluje, že jste se stali vývojářem. Vraťte se na hlavní stránku Nastavení a v dolní části byste nyní měli vidět nastavení "Vývoj" (nebo "Vývojáři"). Zadejte jej a povolte Ladění USB zde.

Identifikujte zařízení

Nejprve potřebujeme vědět, jak se zařízení identifikuje na sběrnici USB. Za to se zařízením Android NE připojeno, uchopte shell a spusťte příkaz lsusb . Poté připojte zařízení a spusťte příkaz znovu. Objevte nový řádek. Pro Wileyfox Swift toto je "bezejmenné zařízení":

Bus 004 Device 003: ID 2970:2282

Nastavení pravidel pro ADB

Nyní potřebujeme čísla na konci výše uvedeného řádku:2970:2282 . Ty specifikují dodavatele (2970) a samotné zařízení (2282). Máme-li tyto podrobnosti, potřebujeme kořen shell na našem linuxovém počítači upravit (nebo vytvořit, pokud ještě neexistuje) /etc/udev/rules.d/51-android.rules soubor. Tam přidejte řádek pro vaše zařízení. Následující ukázkový řádek ukazuje, jak to vypadá pro Wileyfox Swift:¹

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2970", ATTRS{idProduct}=="2282", MODE="0666" GROUP="androiddev", SYMLINK+="android%n"

Pokud máte jiné zařízení, nahraďte při spuštění lsusb ID dodavatele a produktu tím, co jste našli výše . Krátké vysvětlení řádku:

  • SUBSYSTEMS=="usb" :toto pravidlo samozřejmě platí pouze pro USB;)
  • ATTRS{idVendor}=="2970" :ID dodavatele zařízení, pro které je toto pravidlo určeno
  • ATTRS{idProduct}=="2282" :ID zařízení
  • MODE="0666" :oprávnění, která má uzel zařízení získat. 0666 je docela laxní a dává každému uživateli ve vašem systému oprávnění ke čtení a zápisu – takže pokud máte obavy, můžete to zkusit nahradit 0660 (umožňuje čtení a zápis pouze vlastníkovi a skupině a ostatním vše odepře).
  • GROUP="androiddev" :do které skupiny by měl patřit uzel zařízení. Měla by to být skupina, do které patří uživatelé, kteří mají se zařízením pracovat.
  • SYMLINK+="android%n" :stačí dát uzlu pěkné jméno, abyste ho snadněji našli v /dev (v mém případě se to tam později ukázalo jako /dev/android5 )

Toto pravidlo bylo zadáno v /etc/udev/rules.d/51-android.rules , musíme říct udev využít toho. Nejbezpečnějším způsobem (vedle restartu;) je restartování udev servis. V závislosti na vaší distribuci Linuxu to lze provést buď pomocí service udev restart nebo /etc/init.d/udev restart .

Hotovo, ponechte kořenový obal. Odpojte a znovu připojte zařízení Android, zkuste adb devices znovu. Většina zařízení se nyní zobrazila, ale ne Wileyfox Swift – což očividně chce nějaké mazlení navíc. Pokud jste v takové situaci, otevřete (nebo vytvořte, pokud neexistuje) soubor ~/.android/adb_usb.ini a přidejte k němu jeden řádek a pojmenujte dodavatele, kterého jste zjistili, pomocí lsusb výše; pro Swift to by bylo 0x2970 (yupp, zde musíte předponu 0x abych poukázal na to, že jde o hexadecimální číslo). Poté restartujte server ADB:adb kill-server && adb start-server . Odpojte a znovu připojte zařízení. Nyní adb devices měli byste to vidět.

Připojení zařízení

Možná jste si všimli adb devices vám řekl něco jako 0123456789ABCDEF unauthorized . To je v pořádku a pro vaši bezpečnost (zařízení):váš počítač musí být nejprve autorizován, aby měl k zařízení přístup. Jednoduše zadejte adb shell now – který bude ukončen s error: device unauthorized. Please check the confirmation dialog on your device. Postupujte podle této rady (volitelně zaškrtněte políčko pro trvalou autorizaci počítače) a je hotovo:Nyní můžete pro přístup ke svému zařízení použít adb.

Aktualizace:

¹ Všimněte si, že v pozdějších verzích Linuxu se syntaxe pravidel UDEV mírně změnila, např. jcomeau_ictx poukázal ve svém komentáři. Pro hodnoty, které jsme našli výše, by to bylo:

SUBSYSTEM=="usb", ATTR{idVendor}=="2970", ATTR{idProduct}=="2282", MODE="0666", GROUP="plugdev", SYMLINK+="android%n"

Dva rozdíly:nyní je to SUBSYSTEM (bez množného čísla) a skupina se změnila z androiddev na plugdev (první na novějších systémech neexistuje, druhý ano a obvykle je přiřazen alespoň prvnímu uživateli).

Navíc může být nutné přidat vendorID do vašeho ~/.android/adb_usb.ini (jedno ID na řádek, v hexadecimálním zápisu):

# ANDROID 3RD PARTY USB VENDOR ID LIST
# 1 USB VENDOR ID PER LINE.
0x2970

Pár komentářů z novější distribuce Linuxu. Fedora 29 s telefonem Nexus 5X nebo Nokia 7.1 (Android One).

Nejprve odpojte telefon, pokud je již připojen.

  1. Nainstalujte si nástroje pro Android, které dodají ADB (sudo dnf install android-tools )
  2. Zkopírujte pravidla udev (sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d )
  3. Znovu načíst pravidla udev (sudo udevadm control --reload-rules )
  4. Pro jistotu restartujte ADB (sudo systemctl restart adb )

Nyní připojte telefon a spusťte adb devices z příkazového řádku. Pravděpodobně uvidíte zařízení v seznamu bez oprávnění. Toto je v pořádku.
KDYŽ není uveden, budete muset své zařízení přidat do souboru pravidel udev, ale pro mě testovaná zařízení fungovala pouze s předdefinovanými pravidly.

Spusťte adb shell a doufejme, že na telefonu dostanete bezpečnostní upozornění s dotazem, zda chcete počítači důvěřovat, vyberte ano.
KDYŽ místo toho váš počítač říká „chyba:nedostatečná oprávnění pro zařízení“, musíte se ujistit, že v telefonu máte port USB nastaven na režim „Přenos souborů“ a ne „Nabít toto zařízení“. V systému Android 8.1 se toto nachází v nastavení v části „Připojená zařízení“> „USB“.

Všiml jsem si, že i když dnes všechno funguje, zítra se to může náhle rozbít bez zjevného důvodu. Pokud k tomu dojde, nejprve zkontrolujte nastavení portu USB na zařízení, které se mohlo změnit zpět do režimu nabíjení, a pokud se to nezdaří, zrušte oprávnění k ladění USB na zařízení (v nastavení v části Možnosti vývojáře) a doufejme, že by se vám mělo objevit pop. -up znovu, když spustíte adb shell .

Díky tomu mohu spustit Android Studio a spustit jej na připojeném zařízení.


Linux
  1. Jak programově získat informace o dodavateli USB a produktu v systému Linux?

  2. Jak získat název hostitele z IP (Linux)?

  3. Jak připojit zařízení v Linuxu?

  1. Jak nainstalovat ovladač zařízení v systému Linux

  2. Jak na SSH na Linuxu z Androidu

  3. Jak získat masku sítě z bash?

  1. Jak získat velikost adresáře v Linuxu

  2. Jak vytvořit virtuální blokové zařízení (smyčkové zařízení/systém souborů) v Linuxu

  3. Jak získat ldapsearch na Scientific Linux?