एंड्रॉइड डिवाइस के लिए ADB एक्सेस को कैसे कॉन्फ़िगर करें?


39

मैं Ubuntu 12.10 का उपयोग कर रहा हूं और मैंने एंड्रॉइड एसडीके स्थापित किया है, यह मेरे उपयोगकर्ता में पथ सेट .bashrcकरता है और यह काम करता है।

समस्या यह है कि मेरे फ़ोन को अनुमतियों के लिए रूट द्वारा चलाने के लिए adb की आवश्यकता है, लेकिन sudo के साथ adb चलाने से मुझे निम्न त्रुटि मिलती है:

sudo: adb: कमांड नहीं मिली

मैं बस का उपयोग करने की कोशिश की sudo -E adb start-server, लेकिन यह काम नहीं करता है। करने के लिए निर्यात पथ लाइन को जोड़ने की कोशिश की /root/.bashrcऔर (यह साकार करने के बाद मदद नहीं की) /etc/bash.bashrc

मुझे याद है कि मैं इसे अपने आर्क लिनक्स पर सेट कर सकता हूं, लेकिन मुझे लगता है कि मेरी समस्या अब उबंटू रूट खाते से जुड़ी हुई है, जैसा कि मैं इसकी अपेक्षा करता हूं, ऐसा व्यवहार नहीं करता।


जो मुझे समझ नहीं आ रहा है वह निम्नलिखित है:

ये काम नहीं करते:

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

यह (पूर्ण पथ टाइप करना):

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

यह काम नहीं करता है (sudo के साथ -E):

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

यह काम करता है (जड़ के रूप में):

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

मैं अब पूरी तरह से उलझन में हूं और मैं कुछ स्पष्ट करना चाहूंगा कि कैसे सूडो के लिए एक रास्ता तय किया जाए या मैं अपनी समस्या को कैसे हल करूं।

(और कृपया, यह मत कहो कि अदब को जड़ के रूप में नहीं चलाया जाना चाहिए।)

अग्रिम में धन्यवाद!

संपादित करें: रूट अनुमतियों की आवश्यकता से मेरा मतलब है कि मुझे उनकी आवश्यकता है क्योंकि अन्यथा मुझे मिलता है:

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

जो सुपरयुजर के रूप में नहीं होता है। क्षमा करें यदि यह गलतफहमी थी।


मैंने विंडोज और उबंटू दोनों के साथ देखा है कि एंड्रॉइड डिवाइस अक्सर दिखाई नहीं देते हैं यदि आपने उन्हें यूएसबी 3 पोर्ट में प्लग किया है, तो उन्हें गैर-यूएसबी 3 पोर्ट में प्लग करना समस्या को कम करता है।
पॉल ग्रीगोइरे

डॉक्स से: source.android.com/source/...
Paschalis

जवाबों:


48

कृपया पहले निम्नलिखित को पढ़ें: मैं एंड्रॉइड एडीबी कैसे सेट कर सकता हूं?


USB पहुँच कॉन्फ़िगर करना

यदि आपने अपने अनुसार अनुमतियाँ निर्धारित की हैं, तो पहले, आपको ADB चलाने के लिए रूट अनुमतियों की आवश्यकता नहीं है। AOSP साइट पिक्सेल / नेक्सस उपकरणों के लिए USB एक्सेस को कॉन्फ़िगर करने के लिए उदाहरण प्रदान करती है। आप गैर-नेक्सस उपकरणों के लिए निम्न योजना का उपयोग कर सकते हैं:

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

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

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

तो मेरा /etc/udev/rules.d/51-android.rulesudv नियम इस तरह दिखता है:

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

आप जरूरत पड़ने पर फास्टबूट जैसे अन्य फोन राज्यों के लिए इसे दोहराना चाह सकते हैं। परिवर्तनों को प्रभावी होने देने के लिए, udv ( sudo udevadm control --reload) या रिबूट (अनुशंसित) को पुनः लोड करें ।

कार्यक्रम उपलब्ध कराना

पथ चर को संशोधित करने के बजाय मैं निष्पादन योग्य में ~/bin/(केवल उपयोगकर्ता) या /usr/local/bin/(सिस्टम चौड़ा) में एक प्रतीकात्मक लिंक जोड़ने का सुझाव दूंगा ।

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

1
मैंने अपने फोन के लिए udev नियमों को जोड़ने की कोशिश की, लेकिन इससे मुझे मदद नहीं मिली, इसलिए मैंने सोचा कि शायद मैं अपनी समस्या के बारे में स्पष्ट नहीं हूं। कृपया, यदि आपके पास समय है, तो मेरे प्रश्न का अंत देखें।
मार्टिन फेजेस

क्या आपने सही आईडी जोड़ी है? modaco.com/topic/329317-guide-ubuntu-and-the-blade ने अपनी मशीन को बाद में रिबूट किया है? adb devicesबिना रूट विशेषाधिकार के मेरे लिए काम करता है।
लाइववायरबीटी

4
हाँ, यह काम करता है! मैंने /etc/udev/rules.d/51-android-rules में udev नियम जोड़े हैं और जाहिर है यह एक गलती थी। /Lib/udev/rules.d/11-android.rules का उपयोग करने के बाद, सब कुछ ठीक था! मुझे रूट प्रमेशन की आवश्यकता नहीं है! आपका बहुत बहुत धन्यवाद!
मार्टिन फीजेस

वही था ???????????? कोई अनुमति की स्थिति नहीं है और आपके उत्तर ने इसे हल कर दिया, धन्यवाद।
पंथ्रो

किसी कारण से यहाँ काम नहीं हुआ, मुझे sudo के साथ adb सर्वर शुरू करना पड़ा; कोई भी विचार जहां मैं देख सकता था कि यह काम क्यों नहीं किया?
कुंभ राशि

29

मैं चीन के एक टैबलेट (कुछ अजीब निर्माता) के साथ एक ही मुद्दे पर टकरा गया।

/etc/udev/rules.d/51-android.rulesफाइल के अलावा , मुझे भी बदलने की जरूरत थी ~/.android/adb_usb.ini

टर्मिनल पर नीचे चलाएं;

sudo gedit ~/.android/adb_usb.ini

और आपकी 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.
# ie 0x2207
0x<!!!Your Vendor ID here!!!>

डिस्कनेक्ट और पुन: कनेक्टेड डिवाइस और टर्मिनल पर कमांड के नीचे चलाने के लिए भी आवश्यक;

adb kill-server

और उसके बाद

adb start-server

और डिवाइस का पता चला था।


मैंने आपके टिप के साथ भी कोशिश की, लेकिन कुछ भी नहीं बदला, कोई भी विचार जहां मैं यह देखने के लिए देख सकता हूं कि यहां काम क्यों नहीं किया?
कुंभ राशि

अच्छा है। मेरे लिए वह काम कर गया। इसके साथ ही, मुझे अपना adb अपडेट करना था
वफ़ल का क्रेजी मूंगफली

यह समाधान Ubuntu 14.04 पर काम नहीं करता है। उपकरणों की सूची अभी भी खाली है।
लुइस डी सूसा

1
बहुत बहुत धन्यवाद, उइगर, आखिरकार मुझे वह समाधान मिल गया है जो मेरे लिए काम करता है।
दिमित्री पोपोव

यही मुझे याद आ रहा था। वास्तव में, 0x2207आपके उदाहरण में वही विक्रेता आईडी है जो मेरा डिवाइस उपयोग करता है।
ssokolow

2

मेरे मामले में एमटीपी मोड के बजाय कुछ स्मार्टफ़ोन की ज़रूरत थी जो केवल उन डिवाइसों के विपरीत पीटीपी मोड में सेट किए जाने चाहिए जिनके लिए मेरे एंड्रॉइड स्टूडियो (v1.5.1) द्वारा एमटीपी मोड की आवश्यकता होती है।

यूनिक्स के अधिक जटिल ADP कॉन्फ़िगरेशन के लिए समय बिताने की आवश्यकता के बिना पहले MTP और PTP दोनों मोड को आज़माना सुनिश्चित करें और शायद उन्हें नुकसान पहुँचाएँ।

नए उपकरणों में आप इसे सीधे देव विकल्पों में चुन सकते हैं, जबकि पुराने में यह स्टेटस बार पर यूएसबी कनेक्टेड विकल्पों में है।

फिर भी मेरे लिए Z5 और इसके बाद के संस्करण से नवीनतम सोनी एक्सपीरिया डिवाइसेस, यूएसबी मोड से कोई फर्क नहीं पड़ेगा। हो सकता है कि मेरा एंड्रॉइड स्टूडियो पुराना है या मुझे यूनिक्स एडीपी कॉन्फ़िगरेशन के साथ भी खुदाई करने की आवश्यकता है।


1

इन कदमों का अनुसरण करें:

  1. Android var सेट करें

    प्रारंभ में अपने घर पर जाएं और दबाएं Ctrl+ Hयह आपको छिपी हुई फाइलें दिखाएगा जो अब .bashrcफ़ाइल की तलाश में है, इसे किसी भी टेक्स्ट एडिटर के साथ खोलें, फिर फ़ाइल के अंत में नीचे की पंक्तियों को रखें:

    export ANDROID_HOME=/myPathSdk/android-sdk-linux
    export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
    
  2. रीबूट

  3. डिवाइस का उपयोग डिबग करने के लिए

    कनेक्शन के लिए सुनो:

    adb -a
    

    अपने Android डिवाइस को कनेक्ट करें और इसे अधिकृत करें:

    cordova run android --device
    

0

USB पहुँच कॉन्फ़िगर करना

एक फ़ाइल बनाने के लिए अनुशंसित दृष्टिकोण है /etc/udev/rules.d/51-android.rules

कृपया टर्मिनल में टाइप करें:

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

अगली बार जब कोई डिवाइस प्लग इन किया जाता है तो वे नए नियम प्रभावी होते हैं। इसलिए डिवाइस को अनप्लग करना और उसे कंप्यूटर में वापस प्लग करना आवश्यक हो सकता है।


0

यद्यपि स्वीकृत उत्तर ने मुझे काम करने में मदद की, फिर भी मैं इसके बारे में उलझन में था:

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

और विशेष रूप से

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

इसके अनुसार sudo --help:

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

यह पता चला है, कि कई लिनक्स वितरण पर (जिसमें डेबियन और उबंटू शामिल हैं) secure_pathऔर env_resetविकल्प डिफ़ॉल्ट रूप से चालू होते हैं, जो आपके PATHचर को रीसेट करते हैं और इसे सेट करते हैं secure_path। आप इसे /etc/sudoersफाइल में विज़ूडो का उपयोग करके बदल सकते हैं ।

वैकल्पिक रूप से आप चला सकते हैं:

sudo env PATH=$PATH adb devices

-1

इस आदेश का प्रयास करें: sudo tools/android update sdk --no-ui

SDK README:

Android SDK में आपका स्वागत है! Android SDK संग्रह में प्रारंभ में केवल मूल SDK उपकरण होते हैं। इसमें Android प्लेटफ़ॉर्म या कोई तृतीय-पक्ष लाइब्रेरी नहीं है। वास्तव में, आपके पास एप्लिकेशन को विकसित करने के लिए आवश्यक सभी उपकरण भी नहीं हैं। एप्लिकेशन विकसित करना शुरू करने के लिए, आपको SDK प्रबंधक का उपयोग करके प्लेटफ़ॉर्म-टूल्स और एंड्रॉइड प्लेटफ़ॉर्म के कम से कम एक संस्करण को स्थापित करना होगा। प्लेटफ़ॉर्म-टूल्स में बिल्ड टूल होते हैं जो एंड्रॉइड प्लेटफ़ॉर्म में नई सुविधाओं का समर्थन करने के लिए समय-समय पर अपडेट किए जाते हैं (यही वजह है कि वे मूल एसडीके टूल से अलग हैं), जिसमें अदब, डीएक्सडंप, और अन्य शामिल हैं। प्लेटफ़ॉर्म-टूल्स, एंड्रॉइड प्लेटफ़ॉर्म और अन्य ऐड-ऑन स्थापित करने के लिए, आपके पास इंटरनेट कनेक्शन होना चाहिए, इसलिए यदि आप ऑफ़लाइन रहते हुए एसडीके का उपयोग करने की योजना बनाते हैं, तो कृपया ऑनलाइन रहते हुए आवश्यक घटकों को डाउनलोड करना सुनिश्चित करें। एसडीके प्रबंधक को शुरू करने के लिए, कृपया "एंड्रॉइड" प्रोग्राम को निष्पादित करें। कमांड-लाइन से आप सीधे एग्जीक्यूट करके भी ट्रिगर कर सकते हैं:tools/android update sdk --no-ui


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