Właśnie dostałem nowy, błyszczący Wileyfox Swift - i przed oddaniem go do użytku chcę oem unlock
i korzeń to (jak zwykle zrobić z nowymi urządzeniami;) Problem w tym, choć USB debugowanie jest włączone w urządzeniu, a odpowiednia linia /etc/udev/rules.d/51-android.rules
istnieje , urządzenie nie jest widoczne dla adb devices
.
Wiem, że istnieje kilka odpowiedzi rozrzuconych po tej stronie, ale są one trudne do znalezienia, obejmują tylko konkretne urządzenie lub nie obejmują wszystkich kroków, których w końcu potrzebowałem. Biorę to za szansę na kanoniczne, niezależne od urządzenia pytanie i podam szczegółową odpowiedź poniżej:
Jak mogę zobaczyć i używać mojego urządzenia z Androidem adb
w systemie Linux?
Odpowiedzi:
Włącz debugowanie USB na urządzeniu
Odbywa się to w Ustawieniach ›Rozwój . Jeśli nie masz tego wpisu w menu ustawień, przejdź do Ustawienia ›Informacje , przewiń do„ Numer kompilacji ”i młotkuj go jak małpa, aż urządzenie pogratuluje Ci zostania programistą. Wróć do strony głównej menu Ustawienia i blisko dołu powinieneś teraz zobaczyć ustawienia „Programowanie” (lub „Programiści”). Wpisz go i włącz tutaj debugowanie USB .
Zidentyfikuj urządzenie
Najpierw musimy wiedzieć, jak urządzenie identyfikuje się na magistrali USB. W tym celu, gdy urządzenie Android NIE jest podłączone, chwyć powłokę i uruchom polecenie
lsusb
. Następnie podłącz urządzenie i ponownie uruchom komendę. Znajdź nową linię. W przypadku Wileyfox Swift jest to „urządzenie bezimienne”:Konfigurowanie reguł dla ADB
Musimy teraz numery na końcu powyższej linii:
2970:2282
. Określają one dostawcę (2970) i samo urządzenie (2282). Mając te szczegóły, potrzebujemy powłoki root na naszym komputerze z systemem Linux, aby edytować (lub tworzyć, jeśli jeszcze nie istnieje)/etc/udev/rules.d/51-android.rules
plik. Tam dodaj linię do swojego urządzenia. Poniższy przykładowy wiersz pokazuje, jak wygląda Wileyfox Swift: ¹Jeśli masz inne urządzenie, zastąp identyfikatory dostawcy i produktu tymi, które znalazłeś powyżej podczas uruchamiania
lsusb
. Krótkie wyjaśnienie linii:SUBSYSTEMS=="usb"
: oczywiście ta reguła dotyczy tylko USB;)ATTRS{idVendor}=="2970"
: identyfikator dostawcy urządzenia, którego dotyczy ta regułaATTRS{idProduct}=="2282"
: identyfikator urządzeniaMODE="0666"
: uprawnienia, które powinien otrzymać węzeł urządzenia.0666
jest dość luźny, dając każdemu użytkownikowi w twoim systemie uprawnienia do odczytu i zapisu - więc jeśli się martwisz, możesz spróbować zastąpić to0660
(dając tylko właścicielowi i grupie do odczytu i zapisu i odmawiając wszystkim innym).GROUP="androiddev"
: do której grupy powinien należeć węzeł urządzenia. Powinna to być grupa, do której należą użytkownicy zamierzający pracować z urządzeniem.SYMLINK+="android%n"
: tylko po to, aby nadać węzłu ładną nazwę, abyś mógł łatwiej go znaleźć/dev
(w moim przypadku później pojawił się tam jako/dev/android5
)Zasada została wprowadzona
/etc/udev/rules.d/51-android.rules
, musimy powiedzieć,udev
aby z niej skorzystać. Najbezpieczniejszym sposobem (po ponownym uruchomieniu;) jest ponowne uruchomienieudev
usługi. W zależności od dystrybucji Linuksa można to zrobić za pomocąservice udev restart
lub/etc/init.d/udev restart
.Wykonaj to, pozostaw skorupę roota. Odłącz i ponownie podłącz urządzenie z Androidem, spróbuj
adb devices
ponownie. Pojawiło się teraz większość urządzeń, ale nie Wileyfox Swift - który oczywiście potrzebuje dodatkowych przytulanek. Jeśli znajdujesz się w takiej sytuacji, otwórz (lub utwórz, jeśli nie istnieje) plik~/.android/adb_usb.ini
i dodaj do niego pojedynczy wiersz, podając nazwę dostawcy, o którym wieszlsusb
powyżej; dla Swift , która byłaby0x2970
(yupp, tutaj trzeba poprzedzić go0x
podkreślić, że jest to liczba szesnastkowa). Następnie należy zrestartować serwer ADB:adb kill-server && adb start-server
. Odłącz i ponownie podłącz urządzenie. Terazadb devices
powinien to zobaczyć.Podłączanie urządzenia
Być może zauważyłeś
adb devices
coś podobnego0123456789ABCDEF unauthorized
. To jest OK i dla twojego (urządzeń) bezpieczeństwa: twój komputer musi być najpierw autoryzowany, aby mieć dostęp do urządzenia. Więc po prostu wydajadb shell
teraz - który zostanie zakończony poleceniemerror: device unauthorized. Please check the confirmation dialog on your device.
Postępuj zgodnie z tą radą (opcjonalnie zaznacz pole wyboru, aby trwale autoryzować komputer) i gotowe: Teraz możesz użyć adb, aby uzyskać dostęp do urządzenia.Aktualizacje:
¹ Zauważ, że w późniejszych wersjach systemu Linux składnia reguł UDEV uległa nieznacznej zmianie, jak np. Jcomeau_ictx w swoim komentarzu. Dla wartości, które znaleźliśmy powyżej, będą to:
Dwie różnice: teraz
SUBSYSTEM
(bez liczby mnogiej), a grupa zmieniła się zandroiddev
naplugdev
(pierwsza nie istnieje w najnowszych systemach, druga ma i zwykle jest przypisana przynajmniej pierwszemu użytkownikowi).Ponadto może być konieczne dodanie identyfikatora vendorID do
~/.android/adb_usb.ini
(jeden identyfikator w wierszu w zapisie szesnastkowym):źródło
jcomeau@aspire:~$ tail -n 1 /etc/udev/rules.d/99-android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", ATTR{idProduct}=="201d", MODE="0666", GROUP="plugdev", SYMLINK+="android%n" jcomeau@aspire:~$ cat ~/.android/adb_usb.ini # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x0e8d
musiałem zignorować poradę, aby uruchomićandroid update adb
i wprowadzić ją ręcznie, jak powiedziałeś.plugdev
zamiastandroiddev
). Nie zweryfikowano, ale powiedziałbym, że ważną częścią jest to, że jest to grupa, którą ma również użytkownik (z którym chcesz korzystać z USB).SUBSYSTEM
zamiastSUBSYSTEMS
,ATTR
zamiastATTRS
, przecinek poMODE="0666"
nie wiem, czy wszystkie te zmiany były konieczne, ale to, co działało.sudo wget -O /etc/udev/rules.d/51-android.rules
z tu pracował dla mnie przez mojego Xiaomi Mi A1. Oczywiście lepiej się uczyć, ale dobrze jest być leniwym :)Kilka komentarzy z nowszej dystrybucji Linuksa. Fedora 29 z Nexusem 5X lub telefonem Nokia 7.1 (Android One).
Najpierw odłącz telefon, jeśli jest już podłączony.
sudo dnf install android-tools
)sudo cp /usr/share/doc/android-tools/51-android.rules /etc/udev/rules.d
)sudo udevadm control --reload-rules
)sudo systemctl restart adb
)Teraz podłącz telefon i uruchom
adb devices
z wiersza poleceń. Prawdopodobnie zobaczysz urządzenie z „brakiem uprawnień”. Jest okej.JEŚLI nie ma go na liście, będziesz musiał dodać swoje urządzenie do pliku reguł udev, ale dla mnie testowane urządzenia po prostu działały z predefiniowanymi regułami.
Uruchom
adb shell
i miejmy nadzieję, że dostaniesz powiadomienie bezpieczeństwa na telefonie z pytaniem, czy chcesz zaufać komputerowi, wybierz tak.JEŚLI zamiast tego komputer wyświetla komunikat „błąd: niewystarczające uprawnienia dla urządzenia”, musisz upewnić się, że w telefonie ustawiono port USB w tryb „Przesyłanie plików”, a nie „Naładuj to urządzenie”. W Androidzie 8.1 znajduje się to w ustawieniach w „Podłączonych urządzeniach”> „USB”.
Zauważyłem, że nawet jeśli wszystko działa dzisiaj, jutro może nagle pęknąć bez wyraźnego powodu. Jeśli tak się stanie, najpierw sprawdź ustawienie portu USB w urządzeniu, które mogło zmienić się z powrotem w tryb ładowania, a jeśli to się nie powiedzie, unieważnij autoryzację debugowania USB na urządzeniu (w ustawieniach w Opcjach programisty), a mam nadzieję, że otrzymasz pop -up ponownie, gdy biegniesz
adb shell
.Dzięki temu mogę uruchomić Android Studio i uruchomić na podłączonym urządzeniu.
źródło