12.04'te "adb push" komutunda 'yetersiz izinler' hatası


57

Apk dosyamı bir tablete itmeye çalıştığımda, bu hatayı aldım, lütfen bana yardım et.

adb server is out of date.  killing... 
* daemon started successfully * 
error: insufficient permissions for device.

Yardımlarınız için şimdiden teşekkür ederiz.


1
Resmi Android geliştirici dokümantasyonuna referansla desteklenen user84207 tarafından verilen cevap, Anwar Shah tarafından kabul edilen cevaptan çok daha iyidir, çünkü mümkün olan her durumda kötülük kullanmaktan kaçınmalıyız. Adb'yi root olarak çalıştırmak, bilgisayarı daha fazla saldırıya karşı savunmasız hale getirir.
nealmcb

Yanıtlar:


20

Bu hatayı bazen Ubuntu'da da gördüm. Bunun için çalışan bir geçici çözüm, adb sudokomutuyla çalışıyor . Örneğin, eğer app.apksd kartını zorluyorsanız , komut

sudo adb push app.apk /mnt/sdcard

Ayrıca, Uygulama ayarlarında (GingerBread'de) veya Geliştirme bölümünde (IceCream Sandwich'de ve üzeri) "USB hata ayıklama" modunu seçtiğinizden emin olun. Adb zaten çalışıyorsa, önce komutunu kullanarak onu öldürmelisinsudo adb kill-server

Umarım bu yardımcı olur.


Anladım ama yine de bu yöntemi deneyeceğim ... Yardımlarınız için teşekkürler
Neha Sharad Umachigi

5
“Anladım” ... Bir çözüm bulursanız, başkalarının fayda sağlayabilmesi için (soruyu sorduğunuzda kendinize fayda sağlamaya çalıştığınız gibi), nezaketiniz olsun. Mesela şimdi bu problemim var, ama tarif ettiğinizle aynı problem olsa bile başka bir yere bakmak zorundayım.
erjoalgo

2
Bu cevap risklidir çünkü adb'deki hatalar tüm bilgisayarı ele geçirebilir. Resmi Android geliştirici dokümantasyonuna atıfta bulunulan udev kurallarını user84207 kullanarak cevaplamak bu sorunu önler.
nealmcb

Bu, sorun için en basit ve en kolay ve en azından çalışan bir geçici çözümdür.
Anwar

Not: Bu benim için çalıştı çünkü sudo olmayan sudofarklı bir yüklü sürümü bulur adb. Bu yüzden bu işe yarıyor, çünkü adbkendisi daha fazla ayrıcalık gerektiriyor.
Kevin Cooper

61

Ben de aynı problemle karşılaştım. Burada belirtildiği gibi bir udev kuralı eklemek , püf noktasını yaptı:

Kök olarak giriş yapın, bir dosya oluşturun /etc/udev/rules.d/51-android.rulesve plugdevgruptaki herkese izin vermek için buna benzer bir satır ekleyin :

SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"

Bu örnekte, satıcı kimliği HTC'dir. Cihazınız için satıcı kimliğini kullanmanız gerekir; bu, lsusbbenzer bir hat çalıştırarak ve arayarak elde edilebilir.

Bus 002 Device 009: ID 2a47:9e18

Bu örnekte sizin satıcı kimliği olacağını 2a47değiştirmek zorunda kalacak, böylece 0bb4ile 2a47. Doğru çizgi böylece okuyacaktı:

SUBSYSTEM=="usb", ATTR{idVendor}=="2a47", MODE="0666", GROUP="plugdev"

Şimdi dosyalara okuma izinleri atayın, udev'i yeniden yükleyin ve adb arka planını yeniden yükleyin:

sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo udevadm control --reload-rules
adb kill-server
adb start-server

Cihazınızı USB portuna takmanız ve tekrar bağlamanız gerekebilir.


9
USB satıcı kimliğini lsusb komutuyla alabilirsiniz. Kolon ayrılmış çiftin ilk kısmıdır. Örneğin, 18d1: 4e22, satıcı kimliğinin 18d1 olduğu anlamına gelir.
Peter Lamberg

Yeni kural dosyasını ekledikten sonra udev'i "tetiklemeniz" gerekebilir (emin olmasam da). Askubuntu.com/questions/82470/… "tetiklemenin" yolu .
user29020

2
ve / veya cihazın bağlantısını kesmeniz ve yeniden bağlamanız gerekebilir mi? Ancak bu cevap benim için işe yaradı ve adb'ı root olarak çalıştırmaktan çok daha iyi. Ubuntu kullanıcınız da plugdevgrubun bir parçası olmalıdır . Öğrenmek idiçin koş .
nealmcb

2
Bir çok cihazla çalışmak zorundaysanız, bu depo son derece yararlıdır github.com/M0Rf30/android-udev-rules
zamber


22

Jorch914'ün StackOverflow konusundaki cevabı benim için bu sorunu çözdü:

Tamam Sonunda sorunu buldum, görünüşe göre bu cihazda kamera olarak bağlanmanız gerekiyor (USB hata ayıklama zaten etkinleştirilmiş olsa bile)

görüntü tanımını buraya girin

Ayrıca bu bağlantı kurma işlemini açıklar.


1
Evet, öyleydi! Varsayılan olarak "Şarj" olarak ayarlanmış olan Android N'de "USB yapılandırmasını seç" seçeneğim vardı.
Dan Dascalescu

1
Sebebi ne olursa olsun her zaman pikselimi bir mac'a bağlayıp çalışmaya başladım ancak bir CentOS dev iş istasyonuna taşındığımda hata ayıklama izni almak için bunu almak zorunda kaldım. Teşekkürler
bsautner 21:17

2
Benim için çalıştı. İşin püf noktası "Şarj etmek" den başka bir şeyle değiştirmek gibi görünüyor.
Bim


10

Sadece aynı konuyu inceliyorum ama işte bunun üzerinden nasıl geçebileceğimi anladım:

  • aşağıdaki komutu vererek varolan adb sunucusunu öldürmelisin: adb kill-server(yanlış olabilir, ama ben sudo olmadan VE ile verdim
  • adb sunucusunu aşağıdakileri yaparak uygun izinlerle başlatmak: sudo adb start-server
  • işte. İhtiyacınız olan herhangi bir komutu vereceğinizi biliyor olabilirsiniz

Biliyorsanız emin değilim, ama adb içeren bir paket var. Bundan bahsettim, çünkü adb'nin eski bir versiyonuna referans aldığınızı fark ettim. Aşağıdakileri komut satırınıza vererek yükleyebilirsiniz:sudo apt-get install android-tools-adb

Umarım bu yardımcı olur.


Platform araçlarının ADB'si daha yeni olabilir; Bu araçlar, bu arada ayrı indirme olarak bile mevcuttur.
Martin Zeitler,

2

Bugün insufficient permissions for devicehatayla karşılaştım, adbbirkaç dakika önce beklendiği gibi çalışıyor olmama rağmen . Şimdi anladım:

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

$ adb shell
error: insufficient permissions for device

Hatayla karşılaşmadan kısa bir süre önce, Media device (MTP)kullanmam gerekmeyeceğini düşündüğüm gibi devre dışı bıraktım MTP. Ancak, USB hata ayıklamanın veya en azından bazı adbkomutların Media device (MTP)etkinleştirilmesini gerektirdiği anlaşılıyor .

Media device (MTP)Android 4.4'te etkinleştirmek için şu adrese gidin:

Settings
Storage
The "..." menu (in the upper right corner)
USB computer connection
Media device (MTP)

Ne zaman MTPdevre dışıdır lsusbşunu gösterir:

Bus 002 Device 071: ID [idVendor1]:[idProduct1] Google Inc.

Etkinleştirdikten sonra MTP, lsusb aşağıdakileri gösterir:

Bus 002 Device 072: ID [idVendor2]:[idProduct2] [idVendor string]

İdVendor ve idProduct MTP, etkin veya devre dışı olup olmamasına bağlı olarak değişir .

Ben bir Android uzmanı değilim, bu yüzden yukarıdaki davranış benim telefon modelime özgü olabilir.


0

Başka bir sebepten olabilir. Ben sadece bu hatayı cihaza bir apk yüklemeye çalışırken alıyorum:

$ adb install platforms/android/build/outputs/apk/android-armv7-release.apk 
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
error: insufficient permissions for device
- waiting for device -

Cihaz doğru modda hazır olmadığı için oldu. Cihaz 4G bağlantısını USB üzerinden paylaşıyordu.

Bu şekilde bilinir:

$ adb devices -l
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

33332EF19F3D00EC       no permissions usb:1-1.2

Telefondaki bağlantı paylaşımını devre dışı bırakmak ve tekrar başlamak yeterliydi.

Genel adb deviceolarak, aygıttaki dosyaları itmeye çalışmadan önce komutla aşağıdaki sonucun alındığından emin olun.

$ adb devices -l
List of devices attached
33332EF19F3D00EC       device usb:1-1.2

Bu durumlarda, adb sunucusunu öldürmeye veya yeniden başlatmaya gerek yoktur.

Cihazı USB üzerinden veri aktarımı için taktıysanız muhtemelen aynı durum söz konusudur.


0

Aynı sorunu yaşadım ve bu yetersiz izinleri aldım. Yaptığım şey dizüstü bilgisayarım için USB yetkilisini iptal etmek oldu. Sonra durdu ve USB hata ayıklamayı başlattı. Onu tekrar dizüstü bilgisayara bağladı ve usb hata ayıklama yetkilileri verdi.


1
Lütfen bu işlem hakkında daha fazla bilgi verebilir misiniz? Adım adım ideal olacaktır, böylece OP örneğinizi takip edebilir. :)
ThatGuy

0

Aynı sorunla karşı karşıyayım ve bunu your_android_sdk_path yolunu aşağıdaki gibi ortam değişkenine ekleyerek çözdüm

sudo export $PATH:/your_android_sdk_path/platform-tools/adb

Bu dosya ~/.bashrcdosyasını düzenleyerek ya ~/.profile da /etc/profile, /etc/bash.bashrc, or /etc/environmentsistem genelinde erişime eklemek isterseniz, bunu hesabınıza veya sistem genelinde nasıl eklemek istediğinizi dileğiyle .

ve daha sonra çöp kutusuna bunun linkini oluşturun.

sudo ln -s /your_android_sdk_path/platform-tools/adb /bin/adb

Eğer adb cihazlarını veya herhangi bir komutu kullandıysanız, ilk önce sunucuyu öldürün.

adb kill-server

sonra sunucuyu gibi başlat

adb start-server
adb devices

Artık cihazlarınızın sorunsuz bir şekilde listelendiğini görebilirsiniz


0

Bu sorunun cevabı burada: https://github.com/snowdream/51-android

Bir Android geliştiricisi olarak, adb kullanımını her yerde kullanmaya zorlamak için "sudo" kullanmamanızı öneririm. Yapmamız gereken şey bu değil. Kurallar, politikalar ve kısıtlamalar kendi güvenliğimiz için var.


0

Yine bir başka olasılık: USB bağlantısı da adb ile çakışıyor. Bunu devre dışı bırakmak benim için sorunu çözer.

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.