12.04 पर `अदब पुश` कमांड पर 'अपर्याप्त अनुमतियाँ' त्रुटि


57

जब मैंने अपनी एपीके फ़ाइल को एक टैबलेट में धकेलने की कोशिश की, तो मुझे यह त्रुटि मिली, कृपया मेरी मदद करें।

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

मदद के लिए अग्रिम धन्यवाद।


1
User84207 का उत्तर, जो आधिकारिक एंड्रॉइड डेवलपर प्रलेखन के संदर्भ द्वारा समर्थित है, अनवर शाह द्वारा स्वीकार किए गए उत्तर से बहुत बेहतर है, क्योंकि जब भी संभव हो, हमें रूट के रूप में डेमॉन चलाने से बचना चाहिए। रूट के रूप में अदब चलाना कंप्यूटर को अधिक हमलों के लिए असुरक्षित बनाता है।
17

जवाबों:


20

मैंने उबंटू पर कभी-कभी यही त्रुटि देखी है। इसके लिए एक वर्कअराउंड sudoकमांड के साथ adb चल रहा है । उदाहरण के लिए, यदि आप app.apksdcard पर जोर दे रहे हैं तो कमांड होगा

sudo adb push app.apk /mnt/sdcard

इसके अलावा, सुनिश्चित करें कि आपने एप्लिकेशन सेटिंग्स (जिंजरब्रेड में) या डेवलपमेंट सेक्शन (आइसक्रीम सैंडविच और ऊपर) में "यूएसबी डिबगिंग" मोड का चयन किया है। यदि adb पहले से चल रहा है, तो आपको पहले इसे कमांड से मारना चाहिएsudo adb kill-server

आशा है कि यह मदद करेगा।


मैं समझ गया, लेकिन अभी भी इस विधि की कोशिश करता हूँ ... मदद के लिए धन्यवाद
नेहा शरद उमाचिगी

5
"मुझे मिल गया है" ... यदि आपके पास कोई समाधान है, तो कृपया साझा करने के लिए शिष्टाचार रखें, ताकि दूसरों को लाभ हो सके (जैसा कि आपने प्रश्न पूछने पर खुद को लाभान्वित करने की मांग की थी)। उदाहरण के लिए, मुझे अब यह समस्या है, लेकिन मैं कहीं और देखने के लिए मजबूर हूं, हालांकि यह वही सटीक समस्या है जिसका आप वर्णन करते हैं।
एरजालगो

2
यह उत्तर जोखिम भरा है क्योंकि adb में कीड़े पूरे कंप्यूटर पर ले जा सकते हैं। User84207 द्वारा udv नियमों का उपयोग करने वाला उत्तर, जो आधिकारिक Android डेवलपर प्रलेखन के संदर्भ द्वारा समर्थित है, उस समस्या से बचा जाता है।
nealmcb

यह समस्या के लिए सबसे सरल और सबसे आसान और कम से कम काम करने वाला वर्कअराउंड है।
अनवर

नोट: यह मेरे लिए काम करता है क्योंकि गैर-सूडो sudoकी adbतुलना में एक अलग स्थापित संस्करण पाता है । इसलिए यह काम करता है, इसलिए नहीं कि adbस्वयं को अधिक विशेषाधिकार की आवश्यकता होती है।
केविन कूपर

61

मैं इसी समस्या में भाग गया। यहाँ एक udv नियम जोड़ना जैसा कि यहाँ बताया गया है:

रूट के रूप में लॉग इन करें, एक फ़ाइल बनाएं /etc/udev/rules.d/51-android.rulesऔर plugdevसमूह में किसी को भी अनुमति देने के लिए इस तरह एक पंक्ति जोड़ें :

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

इस उदाहरण में, विक्रेता आईडी एचटीसी है। आपको अपने डिवाइस के लिए विक्रेता आईडी का उपयोग करने की आवश्यकता है, जिसे चलाने lsusbऔर लाइन की तरह खोजकर प्राप्त किया जा सकता है

Bus 002 Device 009: ID 2a47:9e18

इस उदाहरण में अपने विक्रेता ID होगा 2a47, तो आप को बदलने के लिए होता है 0bb4के साथ 2a47। सही लाइन इस प्रकार पढ़ी जाएगी:

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

अब फाइलों पर रीड अनुमतियाँ असाइन करें, udev को पुनः लोड करें और adb डेमन को पुनः लोड करें:

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

आपको अपने डिवाइस को फिर से डिस्कनेक्ट और कनेक्ट करना पड़ सकता है यूएसबी पोर्ट।


9
आप USB वेंडर आईडी को lsusb कमांड द्वारा प्राप्त कर सकते हैं। यह बृहदान्त्र पृथक जोड़ी का पहला भाग है। उदाहरण के लिए 18d1: 4e22 का मतलब होगा कि विक्रेता आईडी 18d1 है।
पीटर लैम्बबर्ग

नई नियम फ़ाइल को जोड़ने के बाद आपको udv "ट्रिगर" करने की आवश्यकता हो सकती है (हालांकि मुझे यकीन नहीं है)। यहाँ "ट्रिगर" करने का एक तरीका है askubuntu.com/questions/82470/…
user29020

2
और / या आपको डिवाइस को डिस्कनेक्ट और पुन: कनेक्ट करने की आवश्यकता हो सकती है? लेकिन इस जवाब ने मेरे लिए काम किया, और रूट के रूप में एडीबी चलाने से बहुत बेहतर है। आपका उबंटू उपयोगकर्ता भी plugdevसमूह का हिस्सा होना चाहिए । idपता लगाने के लिए भागो ।
nealmcb

2
यदि आप उपकरणों का एक बहुत कुछ के साथ काम करने के लिए है यह रेपो अत्यंत उपयोगी है github.com/M0Rf30/android-udev-rules
zamber


22

StackOverflow पर Jorch914 के जवाब ने मेरे लिए इस समस्या को हल कर दिया:

ठीक है, तो मुझे अंततः समस्या मिल गई, जाहिरा तौर पर इस डिवाइस पर आपको कैमरे के रूप में कनेक्ट करने के लिए सेट करना होगा (भले ही यूएसबी डिबगिंग पहले से ही सक्षम है)

यहाँ छवि विवरण दर्ज करें

साथ ही यह लिंक सेटिंग अप प्रोसेस का वर्णन करता है


1
हाँ, यह बात थी! मुझे एंड्रॉइड एन पर "यूएसबी कॉन्फ़िगरेशन का चयन करें" था, जो डिफ़ॉल्ट रूप से "चार्जिंग" पर सेट था।
डैन डैस्कलेस्कु

1
जो भी कारण के लिए मैं हमेशा अपने पिक्सेल को एक मैक में प्लग करने में सक्षम था और काम करना शुरू कर देता था, लेकिन जब मैं सेंटोस देव वर्कस्टेशन में स्थानांतरित हो गया तो मुझे इसे डीबगिंग अनुमति के लिए तुरंत प्राप्त करना पड़ा। धन्यवाद
bsautner

2
मेरे लिए काम किया। लगता है कि चाल इसे "चार्जिंग" से बदलकर कुछ और, क्यों भी हो।
बिम

11

इन दो सरल आदेशों ने मेरे लिए समस्या हल कर दी:

adb kill-server
adb start-server

ध्यान दें कि अर्ध-नौसिखिया जवाब के विपरीत मुझे इसकी आवश्यकता नहीं है sudo


1
इसने मेरे लिए काम किया
सुदीप भंडारी

जब मैंने चलाने की कोशिश की, तो Ubuntu 16.04 से जुड़े एक Nexus 5X के लिए काम नहीं किया adb shell ls
डैन डैस्कलेस्क्यू

10

मैं बस एक ही मुद्दे से गुजरता हूँ लेकिन यहाँ है कि मैं इसके माध्यम से कैसे जा सकता था:

  • आपको निम्न आदेश जारी करके मौजूदा adb सर्वर को मारना होगा: adb kill-server(यह गलत हो सकता है, लेकिन मैंने इसे sudo के साथ और इसके बिना जारी किया है
  • जारी करके उचित अनुमतियों के साथ अदब सर्वर शुरू करें: sudo adb start-server
  • देखा। तुम्हें पता है कि आप की जरूरत है किसी भी आदेश जारी कर सकते हैं

यकीन नहीं होता अगर आप जानते हैं, लेकिन एक पैकेज है जिसमें adb शामिल है। मैं इसका उल्लेख करता हूं क्योंकि मैंने देखा है कि आपको एडीबी के पुराने संस्करण का संदर्भ मिल रहा है। आप अपनी कमांड लाइन में निम्नलिखित जारी करके स्थापित कर सकते हैं:sudo apt-get install android-tools-adb

आशा है कि ये आपकी मदद करेगा।


प्लेटफ़ॉर्म टूल का ADB नया हो सकता है; ये उपकरण अलग-अलग डाउनलोड के रूप में उपलब्ध हैं, इस बीच।
मार्टिन ज़िट्लर

2

आज मुझे insufficient permissions for deviceत्रुटि का सामना करना पड़ा , भले ही adbकुछ ही मिनट पहले उम्मीद के मुताबिक काम किया गया हो। अब मुझे मिलता है:

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

$ adb shell
error: insufficient permissions for device

त्रुटि का सामना करने से कुछ समय पहले, मैं अक्षम हो गया था Media device (MTP), क्योंकि मुझे लगा कि मुझे उपयोग करने की आवश्यकता नहीं होगी MTP। हालाँकि, ऐसा प्रतीत होता है कि USB डीबगिंग, या कम से कम कुछ adbकमांड की आवश्यकता है, जो Media device (MTP)सक्षम होना चाहिए।

Media device (MTP)Android 4.4 पर सक्षम करने के लिए , यहां जाएं:

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

जब MTPअक्षम किया जाता है, lsusbतो निम्न दिखाता है:

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

सक्षम करने के बाद MTP, lsusb निम्नलिखित दिखाता है:

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

MTPसक्षम या अक्षम होने या न होने के आधार पर, idVendor और idProduct परिवर्तन करते हैं ।

मैं एक एंड्रॉइड विशेषज्ञ नहीं हूं, इसलिए यह संभव है कि उपरोक्त व्यवहार मेरे विशेष मॉडल के फोन के लिए विशिष्ट हो।


0

यह किसी अन्य कारण से हो सकता है। मुझे यह त्रुटि डिवाइस पर एपीके इंस्टॉल करने की कोशिश में लगी है:

$ 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 -

ऐसा इसलिए हुआ क्योंकि डिवाइस सही मोड पर तैयार नहीं था। डिवाइस USB के माध्यम से अपने 4 जी कॉन्सेप्ट को साझा कर रहा था।

इसे इस तरह जाना जा सकता है:

$ 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

इसलिए यह फोन पर कॉनक्सेशन शेयरिंग को अक्षम करने और फिर से शुरू करने के लिए पर्याप्त था।

सामान्य तौर adb deviceपर, डिवाइस पर फ़ाइलों को पुश करने की कोशिश करने से पहले कमांड के माध्यम से निम्नलिखित परिणाम सुनिश्चित करें

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

इन मामलों में, एडीबी सर्वर को मारने या पुनः आरंभ करने की आवश्यकता नहीं है।

यदि USB के माध्यम से डेटा ट्रांसफर के लिए आपने डिवाइस को माउंट किया है तो शायद यह वही स्थिति होगी


0

मेरे पास एक ही मुद्दा था और उस अपर्याप्त अनुमति को प्राप्त किया। मैंने जो किया वह मेरे लैपटॉप के लिए USB अधिकारियों को रद्द कर दिया गया। फिर बंद कर दिया और USB डीबग करना शुरू कर दिया। इसे वापस लैपटॉप में प्लग किया और यूएसबी डिबगिंग अधिकारियों को दिया।


1
क्या आप इस प्रक्रिया के बारे में अधिक जानकारी प्रदान कर सकते हैं? चरण दर चरण आदर्श होगा, इसलिए ओपी आपके उदाहरण का अनुसरण कर सकता है। :)
थाटयू

0

मुझे एक ही समस्या का सामना करना पड़ रहा है और मैंने इसे पर्यावरण चर जैसे your_android_sdk_path के पथ को जोड़कर हल कर लिया है

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

इसकी आपकी इच्छा है कि आप इन फ़ाइल ~/.bashrcफ़ाइल को संपादित करके ~/.profile या /etc/profile, /etc/bash.bashrc, or /etc/environmentयदि आप सिस्टम में व्यापक पहुँच जोड़ना चाहते हैं, तो आप इसे अपने खाते या सिस्टम में कैसे जोड़ना चाहते हैं।

और फिर बिन में उस का लिंक बनाएं

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

अगर आपने adb डिवाइस या किसी कमांड का इस्तेमाल किया है तो पहले सर्वर को मारें

adb kill-server

इसके बाद सर्वर को शुरू करें

adb start-server
adb devices

अब आप देख सकते हैं कि आपके डिवाइस बिना किसी समस्या के ठीक से सूचीबद्ध हैं


0

इस समस्या का जवाब यहाँ है: https://github.com/snowdream/51-android

एक एंड्रॉइड डेवलपर के रूप में मेरा सुझाव है कि आप कहीं भी अदब के उपयोग को मजबूर करने के लिए "sudo" का उपयोग नहीं करते हैं। यह वह नहीं है जो हमें करना चाहिए। हमारी अपनी सुरक्षा के लिए नियम, नीतियां और प्रतिबंध हैं।


0

फिर भी एक और संभावना: यूएसबी टेथरिंग भी अदब के साथ संघर्ष करता है। इसे अक्षम करना मेरे लिए समस्या का हल करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.