Android cihazlar için ADB erişimi nasıl yapılandırılır?


39

Ubuntu 12.10 kullanıyorum ve Android SDK'yi yükledim, kullanıcımda yolunu belirledim .bashrcve çalışıyor.

Sorun, telefonumun izinler için root tarafından çalıştırılmasını gerektirdiği, ancak sudo ile adb çalıştıran aşağıdaki hatayı alıyorum:

sudo: adb: komut bulunamadı

Basitçe kullanmaya çalıştım sudo -E adb start-server, ama işe yaramadı. Dışa aktarma yolu satırını eklemeye çalıştım /root/.bashrcve (farkettikten sonra yardım etmedi) /etc/bash.bashrc.

Arch Linux'uma ayarlayabileceğimi hatırlıyorum, ancak sorunumun şu an beklediğim gibi davranmadığı Ubuntu kök hesabına bağlı olduğunu düşünüyorum.


Anlamadığım şey şudur:

Bunlar işe yaramıyor:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

Bunu yapar (tam yolu yazarak):

martin@alyx:~$ sudo /opt/android-sdk-linux/platform-tools/adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached 
CM7-Blade   device

Bu çalışmıyor (-E'yi sudo ile kullanma):

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

Bu (root olarak) çalışır:

martin@alyx:~$ sudo su
root@alyx:/home/martin# adb devices
List of devices attached 
CM7-Blade   device

Şimdi tamamen kafam karıştı ve sudo için nasıl bir yol çizileceği ya da sorunumu nasıl çözebileceğim konusunda netleşmeyi takdir ediyorum.

(Lütfen, adb'nin root olarak çalıştırılmaması gerektiğini söyleme)

Şimdiden teşekkürler!

Düzenleme: Kök izinleri talep ederek, onlara ihtiyacım var demek istiyorum çünkü aksi halde alırım:

$ adb devices 
List of devices attached 
????????????    no permissions

süper kullanıcı olarak oluşmaz. Yanlış anlaşıldıysa üzgünüm.


Hem Windows hem de Ubuntu ile Android aygıtlarının genellikle bir USB 3 bağlantı noktasına takılı olduklarında görünmediğini fark ettim, USB3 olmayan bir bağlantı noktasına takmak sorunu hafifletti.
Paul Gregoire

Yanıtlar:


48

Lütfen önce aşağıdakileri okuyun: Android ADB'yi nasıl ayarlarım?


USB erişimini yapılandırma

İlk önce, izinleri uygun şekilde ayarladıysanız, ADB'yi çalıştırmak için kök izinlerine ihtiyacınız yoktur. AOSP sitesi, Pixel / Nexus aygıtları için USB Erişimini Yapılandırma örnekleri sunar . Nexus olmayan cihazlar için aşağıdaki şemayı kullanabilirsiniz:

SUBSYSTEM=="usb", ATTR{idVendor}=="xxxx", ATTR{idProduct}=="xxxx", MODE="0600", OWNER="<username>"

Satıcı ve ürün kimliği, lsusbcihazınızı kullanarak ve arayarak elde edilebilir . (Not: Cihaz aslında bir Galaxy Nexus'tur.)

$ lsusb | grep -i samsung
Bus 002 Device 103: ID 04e8:6860 Samsung Electronics Co., Ltd GT-I9100 Phone [Galaxy S II]

Demek /etc/udev/rules.d/51-android.rulesudev kuralım şöyle gözüküyor:

# adb protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860", MODE="0600", OWNER="username"

Gerekirse fastboot gibi diğer telefon durumları için bunu tekrarlamak isteyebilirsiniz. Değişikliklerin geçerli olması için udev ( sudo udevadm control --reload) öğesini yeniden yükleyin veya yeniden başlatın (önerilir).

Programları kullanıma sunma

Yol değişkenini değiştirmek yerine, içinde ~/bin/(yalnızca kullanıcı) veya içinde /usr/local/bin/(sistem genelinde) yürütülebilir dosyaya sembolik bir bağlantı eklemenizi öneririm .

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/

1
Telefonum için udev kurallarını eklemeye çalıştım, ancak yardımcı olmadı bu yüzden sorunum hakkında net değildim diye düşündüm. Lütfen, zamanınız varsa, sorumun sonuna bakın.
Martin Fejes

Doğru kimlikleri eklediniz mi? modaco.com/topic/329317-guide-ubuntu-and-the-blade Daha sonra makinenizi yeniden başlattınız mı? adb devicesroot ayrıcalıkları olmadan benim için çalışıyor.
LiveWireBT

4
Yay, çalışıyor! Udev kurallarını /etc/udev/rules.d/51-android-rules dizinine ekledim ve görünüşe göre bu bir hataydı. /Lib/udev/rules.d/11-android.rules öğesini kullandıktan sonra her şey yolundaydı! Kök titremelerine ihtiyacım yok! Çok teşekkürler!
Martin Fejes

Aynı vardı ???????????? izin yok durumu ve cevabınız çözüldü, teşekkürler.
Panthro

nedense burada işe yaramadı, adb sunucusunu sudo ile başlatmak zorunda kaldım; Neden işe yaramadığını görmek için nereden bakabilirim?
Kova Gücü

29

Aynı sorunu Çin'den (bazı garip üreticilerden) bir tabletle çarptım.

/etc/udev/rules.d/51-android.rulesDosyaya ek olarak , benim de değişmem gerekiyordu ~/.android/adb_usb.ini.

Terminalde aşağıya koşun;

sudo gedit ~/.android/adb_usb.ini

ve adb_usb.inidosyanız şöyle görünmeli:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

Bağlantı kesildi ve tekrar bağlandı ve ayrıca terminaldeki komutların altında çalışılması gerekiyordu;

adb kill-server

ve sonrasında

adb start-server

Ve cihaz tespit edildi.


Ben de senin tavsiyenle denedim ama hiçbir şey değişmedi, neden burada işe yaramadığını görmek için nereye bakabileceğime dair bir fikrin var mı?
Kova Gücü

Güzel. Bu benim için çalıştı. Bununla birlikte, reklamımı güncellemek zorunda kaldım .
Waffle's Crazy Peanut

Bu çözüm Ubuntu 14.04 ile çalışmıyor. Cihazların listesi hala boş çıkıyor.
Luís de Sousa

1
Çok teşekkürler, Uygar, sonunda benim için işe yarayan çözümü buldum.
Dmitry Popov

Ben de özlüyordum. Aslında, 0x2207örneğin, cihazımın kullandığı satıcı kimliğinin aynısıdır.
ssokolow

2

MTP modu yerine benim durumumda, MTP modunun Android Studio'm tarafından tespit edilmesini gerektiren çoğu cihazın aksine, sadece PTP moduna ayarlanması gerekiyordu (v1.5.1).

Bu nedenle, önce hem MTP hem de PTP modlarını denemeye dikkat edin, daha önce Unix'in daha karmaşık ADP Yapılandırması için zaman harcamadan ve belki de onlara zarar vermeden.

Daha yeni cihazlarda, doğrudan Dev seçeneklerinden seçim yapabilirsiniz, eski cihazlarda Durum Çubuğundaki USB Bağlantılı Seçeneklerde bulunur.

Yine de benim için Z5 ve üstündeki en yeni Sony Xperia Cihazları, USB modu ne olursa olsun çalışmayacak. Belki Android Studio'm eskidir veya Unix ADP Konfigürasyonları ile de kazmam gerekiyor.


1

Bu adımları takip et:

  1. Android değişkenlerini ayarla

    Başlangıçta evinize gidin ve Ctrl+ ' ya basın H, gizli dosyaların şimdi .bashrcdosya aradığını , herhangi bir metin düzenleyicide açtıktan sonra aşağıdaki satırları dosyanın sonuna yerleştireceğini gösterir:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Yeniden Başlatma

  3. Hata ayıklamak için aygıt kullanma

    Bağlantıyı dinle:

    adb -a
    

    Android cihazınızı bağlayın ve yetkilendirin:

    cordova run android --device
    

0

USB Erişimini Yapılandırma

Önerilen yaklaşım bir dosya oluşturmaktır /etc/udev/rules.d/51-android.rules.

Lütfen Terminal yazınız:

wget -S -O - http://source.android.com/source/51-android.txt | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules

Bu yeni kurallar, bir sonraki takılışta yürürlüğe girer. Bu nedenle, cihazın fişini çekip tekrar bilgisayara takmanız gerekebilir.


0

Kabul edilen cevap işleri halletmeme yardım etmeme rağmen, yine de kafam karıştı:

martin@alyx:~$ sudo adb devices
sudo: adb: command not found

ve özellikle

martin@alyx:~$ sudo -E adb devices
sudo: adb: command not found

göre göre sudo --help:

-E, --preserve-env          preserve user environment when running command

Birçok linux dağıtımında (Debian ve Ubuntu içeren) secure_pathve env_resetseçeneklerin varsayılan olarak açık olduğu ve PATHdeğişkeninizi sıfırlayıp ayarladığı anlaşıldı secure_path. /etc/sudoersVisudo kullanarak dosyada değiştirebilirsiniz .

Alternatif olarak koşabilirsiniz:

sudo env PATH=$PATH adb devices

-1

Bu komutu dene: sudo tools/android update sdk --no-ui

SDK README:

Android SDK'ya Hoş Geldiniz! Android SDK arşivi başlangıçta yalnızca temel SDK araçlarını içerir. Bir Android platformu veya herhangi bir üçüncü taraf kütüphanesi içermez. Aslında, bir uygulama geliştirmek için ihtiyacınız olan tüm araçlara sahip değil. Uygulama geliştirmeye başlamak için, SDK Yöneticisi'ni kullanarak Platform araçlarını ve Android platformunun en az bir sürümünü yüklemelisiniz. Platform araçları, Android platformundaki (adb, dexdump ve diğerleri de dahil olmak üzere temel SDK araçlarından ayrıdır) yeni özellikleri desteklemek üzere periyodik olarak güncellenen geliştirme araçları içerir. Platform araçları, Android platformları ve diğer eklentileri yüklemek için İnternet bağlantınızın olması gerekir, bu nedenle SDK'yı çevrimdışıyken kullanmayı planlıyorsanız, lütfen gerekli bileşenleri çevrimiçi olarak indirdiğinizden emin olun. SDK Yöneticisi'ni başlatmak için lütfen "android" programını yürütün. Komut satırından, ayrıca aşağıdakileri yaparak doğrudan bir güncellemeyi tetikleyebilirsiniz:tools/android update sdk --no-ui


Bunun asıl soruyu ele
aldığından
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.