Bagaimana cara mengkonfigurasi akses ADB untuk perangkat Android?

39

Saya menggunakan Ubuntu 12.10 dan saya telah menginstal Android SDK, mengatur jalurnya di pengguna saya .bashrcdan berfungsi.

Masalahnya adalah bahwa ponsel saya memerlukan adb untuk dijalankan oleh root untuk izin, tetapi menjalankan adb dengan sudo saya mendapatkan kesalahan berikut:

sudo: adb: perintah tidak ditemukan

Saya mencoba menggunakan saja sudo -E adb start-server, tetapi tidak berhasil. Mencoba menambahkan jalur jalur ekspor ke /root/.bashrcdan (setelah menyadari itu tidak membantu) untuk /etc/bash.bashrc.

Saya ingat saya bisa mengaturnya di Arch Linux saya, tapi saya kira masalah saya sekarang terhubung ke akun root Ubuntu tidak berperilaku seperti yang saya harapkan.


Yang tidak saya mengerti adalah sebagai berikut:

Ini tidak berfungsi:

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

Ini (mengetikkan path lengkap):

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

Ini tidak berfungsi (menggunakan -E dengan sudo):

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

Ini berfungsi (sebagai root):

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

Saya benar-benar bingung sekarang dan saya akan menghargai beberapa klarifikasi tentang cara menetapkan jalur untuk sudo atau bagaimana lagi saya bisa menyelesaikan masalah saya.

(Dan tolong, jangan katakan adb tidak boleh dijalankan sebagai root.)

Terima kasih sebelumnya!

Sunting: Dengan meminta izin root, saya maksudkan bahwa saya membutuhkannya karena jika tidak saya akan mendapatkan:

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

yang tidak muncul sebagai superuser. Maaf kalau itu salah paham.

Martin Fejes
sumber
Saya perhatikan dengan Windows dan Ubuntu bahwa perangkat Android sering tidak muncul jika Anda menyambungkannya ke port USB 3, menghubungkannya ke port non-USB3 mengatasi masalah tersebut.
Paul Gregoire
dari docs: source.android.com/source/…
Paschalis

Jawaban:

48

Silakan baca yang berikut ini terlebih dahulu: Bagaimana cara saya mengatur Android ADB?


Mengkonfigurasi akses USB

Pertama, Anda tidak perlu izin root untuk menjalankan ADB jika Anda telah menetapkan izin yang sesuai. Situs AOSP menyediakan contoh untuk Mengkonfigurasi Akses USB untuk perangkat Pixel / Nexus. Anda dapat menggunakan skema berikut untuk perangkat non-Nexus:

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

Vendor dan ID produk dapat diperoleh dengan menggunakan lsusbdan mencari perangkat Anda. (Catatan: Perangkat ini sebenarnya adalah Galaxy Nexus.)

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

Jadi /etc/udev/rules.d/51-android.rulesaturan udev saya terlihat seperti ini:

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

Anda mungkin ingin mengulang ini untuk status ponsel lainnya seperti fastboot jika diperlukan. Agar perubahan diterapkan, lakukan reload udev ( sudo udevadm control --reload) atau reboot (disarankan).

Membuat program tersedia

Alih-alih memodifikasi variabel path saya sarankan menambahkan tautan simbolik ke executable baik di ~/bin/(hanya pengguna) atau di /usr/local/bin/(sistem lebar).

mkdir ~/bin/
ln -s /opt/android-sdk-linux/platform-tools/adb ~/bin/
LiveWireBT
sumber
1
Saya mencoba menambahkan aturan udev untuk ponsel saya, tetapi tidak membantu jadi saya pikir mungkin saya tidak jelas tentang masalah saya. Tolong, jika Anda punya waktu, lihat bagian akhir dari pertanyaan saya.
Martin Fejes
Sudahkah Anda menambahkan ID yang benar? modaco.com/topic/329317-guide-ubuntu-and-the-blade Sudah mem- boot ulang mesin Anda sesudahnya? adb devicesbekerja untuk saya tanpa hak root.
LiveWireBT
4
Yay, itu berhasil! Saya menambahkan aturan udev ke /etc/udev/rules.d/51-android-rules dan ternyata itu adalah kesalahan. Setelah menggunakan /lib/udev/rules.d/11-android.rules, semuanya baik-baik saja! Saya tidak perlu penganiayaan root! Terima kasih banyak!
Martin Fejes
Apakah sama ???????????? tidak ada situasi izin dan jawaban Anda menyelesaikannya, terima kasih.
Panthro
untuk beberapa alasan itu tidak berfungsi di sini, saya harus memulai adb server dengan sudo; ada ide di mana saya bisa mencari tahu mengapa itu tidak berhasil?
Aquarius Power
29

Saya bertemu dengan masalah yang sama dengan tablet dari China (beberapa produsen aneh).

Selain /etc/udev/rules.d/51-android.rulesfile, saya perlu mengubah ~/.android/adb_usb.inijuga.

Jalankan di bawah ini di terminal;

sudo gedit ~/.android/adb_usb.ini

dan adb_usb.inifile Anda akan terlihat seperti:

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

Perangkat terputus dan terhubung kembali dan juga perlu menjalankan perintah di bawah ini di terminal;

adb kill-server

dan sesudahnya

adb start-server

Dan perangkat itu terdeteksi.

Uygar Y
sumber
Saya mencoba dengan tip Anda juga tetapi tidak ada yang berubah, ada ide di mana saya bisa melihat untuk melihat mengapa itu tidak berhasil di sini?
Aquarius Power
Bagus Itu berhasil bagi saya. Bersamaan dengan itu, saya harus memperbarui adb saya .
Waffle's Crazy Peanut
Solusi ini tidak berfungsi di Ubuntu 14.04. Daftar perangkat masih keluar kosong.
Luís de Sousa
1
Terima kasih banyak, Uygar, akhirnya saya menemukan solusi yang cocok untuk saya.
Dmitry Popov
Itu yang saya lewatkan. Bahkan, 0x2207dalam contoh Anda adalah ID vendor yang sama yang digunakan perangkat saya.
ssokolow
2

Dalam kasus saya alih-alih mode MTP, beberapa Smartphone hanya perlu diatur dalam mode PTP tidak seperti kebanyakan perangkat yang membutuhkan mode MTP untuk dideteksi oleh Android Studio saya (v1.5.1).

Jadi pastikan untuk terlebih dahulu mencoba mode MTP dan PTP sebelumnya tanpa perlu menghabiskan waktu untuk Konfigurasi ADP Unix yang lebih kompleks dan mungkin membahayakan mereka.

Di perangkat yang lebih baru, Anda dapat memilihnya secara langsung di opsi Dev, sedangkan di perangkat yang lebih lama ada di Opsi Terhubung USB di Bilah Status.

Namun bagi saya Perangkat Sony Xperia terbaru dari Z5 ke atas, tidak akan berfungsi apa pun mode USB. Mungkin Android Studio saya sudah tua atau saya perlu menggali juga dengan Unix ADP Configurations.

George Goodporter
sumber
1

Ikuti langkah ini:

  1. Atur vars android

    Mulanya pergi ke rumah Anda dan tekan Ctrl+ Hitu akan menampilkan file tersembunyi sekarang mencari .bashrcfile, buka dengan editor teks lalu letakkan baris di bawah di akhir file:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. Mulai ulang

  3. Menggunakan perangkat untuk debug

    Dengarkan koneksi:

    adb -a
    

    Hubungkan perangkat Android Anda dan beri otorisasi:

    cordova run android --device
    
Vladimir Tamayo
sumber
0

Mengkonfigurasi Akses USB

Pendekatan yang disarankan adalah membuat file di /etc/udev/rules.d/51-android.rules.

Silakan ketik Terminal:

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

Aturan-aturan baru tersebut mulai berlaku pada saat perangkat dicolokkan. Oleh karena itu mungkin perlu mencabut perangkat dan menghubungkannya kembali ke komputer.

Benny
sumber
0

Meskipun jawaban yang diterima membantu saya menyelesaikan sesuatu, saya masih bingung tentang:

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

dan khususnya

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

karena menurut sudo --help:

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

Ternyata, bahwa pada banyak distribusi linux (yang mencakup Debian dan Ubuntu) secure_pathdan env_resetopsi diaktifkan secara default, yang mengatur ulang PATHvariabel Anda dan mengaturnya secure_path. Anda dapat mengubahnya di /etc/sudoersfile menggunakan visudo.

Atau Anda dapat menjalankan:

sudo env PATH=$PATH adb devices
maksnorbi
sumber
-1

Coba perintah ini: sudo tools/android update sdk --no-ui

README SDK:

Selamat datang di Android SDK! Arsip Android SDK awalnya hanya berisi alat SDK dasar. Itu tidak mengandung platform Android atau perpustakaan pihak ketiga mana pun. Bahkan, ia bahkan tidak memiliki semua alat yang Anda butuhkan untuk mengembangkan aplikasi. Untuk mulai mengembangkan aplikasi, Anda harus menginstal Platform-tools dan setidaknya satu versi platform Android, menggunakan SDK Manager. Platform-tools berisi alat bangun yang diperbarui secara berkala untuk mendukung fitur-fitur baru di platform Android (itulah sebabnya mereka terpisah dari alat SDK dasar), termasuk adb, dexdump, dan lainnya. Untuk menginstal Platform-tools, platform Android dan add-on lainnya, Anda harus memiliki koneksi Internet, jadi jika Anda berencana untuk menggunakan SDK saat offline, pastikan untuk mengunduh komponen yang diperlukan saat online. Untuk memulai Manajer SDK, silakan jalankan program "android". Dari baris perintah, Anda juga dapat langsung memicu pembaruan dengan menjalankan:tools/android update sdk --no-ui

pengguna121040
sumber
Saya tidak yakin ini menjawab pertanyaan awal ...
landroni