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čenoATTRS{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 nahradit0660
(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.
- Nainstalujte si nástroje pro Android, které dodají ADB (
sudo dnf install android-tools
) - Zkopírujte pravidla udev (
sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
) - Znovu načíst pravidla udev (
sudo udevadm control --reload-rules
) - 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í.