android - विकास के लिए डिवाइस सेट अप करें(?????? कोई अनुमति नहीं)




linux ubuntu (15)

मैं सैमसंग गैलेक्सी नेक्सस फोन ( एंड्रॉइड 4.0 प्लेटफ़ॉर्म) का उपयोग कर रहा हूं।

मैं उबंटू लिनक्स ओएस पर एंड्रॉइड ऐप विकसित कर रहा हूं। मैं सीधे अपने सैमसंग हैंडसेट डिवाइस पर अपना एप्लिकेशन चलाने के लिए चाहता हूं, इसलिए मैंने निम्न सेटअप चरणों का पालन किया:

  1. मेरे प्रोजेक्ट में AndroidManifest.xml फ़ाइल, android:debuggable="true" जोड़ें android:debuggable="true" <application> तत्व पर android:debuggable="true"

  2. डिवाइस पर, सेटिंग्स> सुरक्षा अज्ञात स्रोत सक्षम करें

  3. डिवाइस पर, सेटिंग्स> डेवलपर विकल्प यूएसबी डिबगिंग सक्षम करते हैं

  4. मेरे कंप्यूटर पर, फ़ाइल /etc/udev/rules.d/51-android.rules बनाएं, फ़ाइल की सामग्री है:

    SUBSYSTEM == "यूएसबी", एटीटीआर {idVendor} == "04E8", MODE = "0666", GROUP = "plugdev"

  5. मेरे कंप्यूटर पर, रन कमांड chmod a+r /etc/udev/rules.d/51-android.rules

फिर, मैं अपने कंप्यूटर पर एक टर्मिनल खोलता हूं और कमांड adb devices निष्पादित करता हूं, मुझे मिला:

List of devices attached 
????????????    no permissions

चूंकि मैंने अपना डिवाइस नहीं देखा लेकिन केवल "??????? कोई अनुमति नहीं है", तो मैं निम्न आदेश चलाता हूं:

 adb kill-server
 adb start-server
 adb devices

लेकिन मुझे अभी भी मिलता है:

List of devices attached 
 ????????????   no permissions

क्यूं कर? मैं क्या खो रहा हूँ??


अनप्लगिंग के बिना

सभी प्रदत्त उत्तरों का मानना ​​है कि आप यूएसबी केबल को अनप्लग और पुनः कनेक्ट करने में सक्षम हैं। ऐसी परिस्थितियों में जहां यह संभव नहीं है (उदाहरण के लिए, जब आप रिमोट होते हैं), तो आप अनिवार्य रूप से ऐसा करने के लिए निम्नलिखित कर सकते हैं जो सुझाए गए udev नियम पुनः प्लग पर करेंगे:

lsusb

जिस डिवाइस की आप परवाह करते हैं उसे ढूंढें, उदाहरण के लिए:

Bus 003 Device 005: ID 18d1:4ee4 Google Inc. Nexus

बस संख्या पर ध्यान दें और फिर निष्पादित करें, उदाहरण के लिए बस 003 :

sudo chmod a+w /dev/bus/usb/003/*

स्पष्ट रूप से यह आपकी इच्छा से अधिक अनुमोदित हो सकता है (केवल इस से अधिक डिवाइस संलग्न हो सकते हैं), लेकिन आपको विचार मिलता है।


  1. http://developer.android.com/guide/developing/device.html पर निर्देशों का पालन करें
  2. /etc/udev/rules.d/51-android.rules में "0bb4" के विक्रेता आईडी को "18d1" के साथ बदलें। या पढ़ने वाली एक और पंक्ति जोड़ें: SUBSYSTEM == "यूएसबी", SYSFS {idVendor} == "18d1", MODE = "0666"
  3. कंप्यूटर को पुनरारंभ करें या बस udev सेवा को पुनरारंभ करें।

आप /home/username/.android/ पर स्थित adb_usb.ini फ़ाइल को संपादित करने का भी प्रयास कर सकते हैं। इस फ़ाइल में उन डिवाइसों की आईडी विक्रेता सूची शामिल है जिन्हें आप कनेक्ट करना चाहते हैं। आप बस अपनी डिवाइस के आईडी विक्रेता को नई लाइन में जोड़ें (यह प्रति पंक्ति एक आईडी है)। फिर एडीबी सर्वर को पुनरारंभ करें और अपने डिवाइस को दोबारा बदलें।

यह उबंटू 12.10 पर मेरे लिए काम किया।


आपको adb सर्वर को रूट के रूप में नहीं चलाया जाना चाहिए क्योंकि अन्य उत्तरों सुझाव दे रहे हैं। इसके बजाय यदि आप आर्क लिनक्स का उपयोग कर रहे हैं तो निम्न कार्य करें:

  1. Pacman के साथ android-udev पैकेज स्थापित करें
  2. Udev नियम पुनः लोड करें:

    # udevadm control --reload-rules
    
  3. अपने आप को adbusers समूह में जोड़ें और फिर लॉगआउट करें और लॉगिन करें:

    # usermod -aG adbusers $LOGNAME
    

स्रोत: https://wiki.archlinux.org/index.php/android#Configuring_adb


उपरोक्त सभी की कोशिश की, कोई भी काम नहीं किया .. आखिर में काम किया जब मैं एमटीपी से कैमरा (पीटीपी) के रूप में कनेक्ट स्विच।


उबंटू 12.04 एलटीएस पर मेरे मामले में, मुझे अपना एचटीसी इनक्रेडिबल यूएसबी मोड चार्ज से मीडिया में बदलना पड़ा और फिर डिवाइस एडीबी के तहत दिखाई दिया। बेशक, दोनों मामलों में डीबगिंग पहले ही चल रही थी।


जब आप udev को पुनरारंभ करते हैं, adb सर्वर को मारते हैं और adb सर्वर goto android sdk स्थापना पथ प्रारंभ करते हैं और सब सूडो पर करते हैं। फिर एडीबी डिवाइस चलाएं यह अनुमति समस्या हल करेगा।


जब तक मुझे अंत में जवाब नहीं मिला, तब तक मेरे लिए कुछ भी काम नहीं किया: http://ptspts.blogspot.co.il/2011/10/how-to-fix-adb-no-permissions-error-on.html

अगर मैं भविष्य में गायब हो जाता हूं तो मैं यहां पाठ की प्रतिलिपि बना रहा हूं।

निम्नलिखित सामग्री के साथ /tmp/android.rules नाम की एक फ़ाइल बनाएं (हेक्स विक्रेता संख्या विक्रेता सूची पृष्ठ से ली गई थी):

SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="1bbb", MODE="0666"

निम्न आदेश चलाएं:

sudo cp /tmp/android.rules /etc/udev/rules.d/51-android.rules
sudo chmod 644   /etc/udev/rules.d/51-android.rules
sudo chown root. /etc/udev/rules.d/51-android.rules
sudo service udev restart
sudo killall adb

फोन और कंप्यूटर के बीच यूएसबी केबल डिस्कनेक्ट करें।

फोन दोबारा कनेक्ट करें।

यह पुष्टि करने के लिए अब adb devices चलाएं कि अब उसे फोन तक पहुंचने की अनुमति है।

कृपया ध्यान दें कि , USER="$LOGINNAME" बजाय , MODE="0666" , USER="$LOGINNAME" , MODE="0666" बजाय .rules फ़ाइल में उपयोग करना .rules है, जो आपके लॉगिन नाम के लिए $LOGINNAME को प्रतिस्थापित करता है, यानी id -nu प्रिंट्स।

कुछ मामलों में udev नियमों को एक नाम दर्ज करना आवश्यक हो सकता है जो अंत के करीब है, जैसे z51-android.rules


निम्न आदेश दर्ज करें:

adb kill-server sudo ./adb start-server adb devices

मुद्दा यह है कि आप रूट के रूप में adb सर्वर नहीं चल रहे हैं।


पूरी तरह से असंबंधित मुद्दों को हल करने के लिए चल रहे adb को root (जिसे केवल एकमात्र या यहां तक ​​कि अनुशंसित समाधान के रूप में नहीं बताया जाना चाहिए) पर जोर देने से इस सवाल पर पोस्ट किए गए बहुत से बुरे उत्तर हैं।

सभी adb और fastboot उपकरणों के लिए अनुमतियों की देखभाल करने के लिए यहां एकमात्र सबसे छोटी और सबसे सार्वभौमिक नुस्खा है:

echo 'ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:ff420?:*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-android.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --verbose --action=add --subsystem-match=usb

विशिष्ट प्रश्न के लिए कि ओपी ने अपने प्रश्न में गलत किया - यह .rules फ़ाइल को संपादित करने के बाद udev नियमों को पुनः लोड नहीं कर रहा था।

इसके अलावा ओपी ने यह नहीं बताया कि एंड्रॉइड बिल्ड (उर्फ रॉम) उसके फोन पर था। idVendor मान सॉफ़्टवेयर में सेट है और इसलिए यह रोम पर निर्भर करता है। इसलिए 04E8 का मूल्य वह अपने मूल नियम में इस्तेमाल करता था, केवल सैमसंग स्टॉक रोम के साथ ही काम करता था। लेकिन यह इस udev नियम के लिए कोई समस्या नहीं है - यह अपने VendorID के बावजूद adb या फास्टबूट इंटरफेस के साथ सभी उपकरणों से मेल खाता है।


मुझे पता है कि यह थोड़ा देर हो सकता है लेकिन एंड्रॉइड एडीबी यूएसबी ड्राइवर को मैन्युअल रूप से जोड़ने के तरीके पर एक बहुत अच्छा लेख है। उबंटू 14.04 एलटीएस में मैन्युअल रूप से एंड्रॉइड एडीबी यूएसबी ड्राइवर जोड़ना

लिंक सामग्री जोड़ने के लिए संपादित किया गया

कदम

नोट: सुनिश्चित करें कि आपने यूएसबी डिबगिंग मोड में अपने एंड्रॉइड डिवाइस को कनेक्ट किया है

टर्मिनल खोलें ( CTRL + ALT + T ) और कमांड दर्ज करें: lsusb

अब आपको इसका एक ही जवाब मिल सकता है:
Bus 002 Device 013: ID 283b:1024

नोट: इस Bus 002 Device 008: ID 283b:1024 संदर्भ में Bus 002 Device 008: ID 283b:1024
{idVendor}==”283b” {idProduct}==”1024″

अब निम्न आदेश दर्ज करें: sudo gedit /etc/udev/rules.d/51-android.rules
यह एंड्रॉइड नियम फ़ाइल ( 51-android.rules ) बनाता है या निर्दिष्ट स्थान ( /etc/udev/rules.d ) में मौजूदा एक को /etc/udev/rules.d

इस फ़ाइल में एक नई लाइन जोड़ें:
SUBSYSTEM==”usb”, ATTRS{idVendor}==”283b”, ATTRS{idProduct}==”1024″, MODE=”0666″

नोट idVendor और idProduct मानों को अपने डिवाइस मानों के साथ संपादित करें। सहेजें और बंद करें।

अब निम्न आदेश दर्ज करें:
sudo chmod a+rx /etc/udev/rules.d/51-android.rules - अनुदान पढ़ने / निष्पादन अनुमति
sudo service udev restart - udev सेवा को पुनरारंभ करें

अब हमें idVendor में adb_usb.ini । निम्न आदेश दर्ज करें:
cd ~/.android
gedit adb_usb.ini

निम्न मान 0x283b जोड़ें

यह 0x ( idVendor मान) के idVendor कुछ भी नहीं है। तो मूल्य के साथ प्रतिस्थापित करें। अपने डिवाइस मान का सम्मान फ़ाइल को सहेजें और बंद करें।

अब निम्न आदेश दर्ज करें:
sudo service udev restart

एंड्रॉइड डिवाइस को प्लग करें और इसे फिर से कनेक्ट करें।
अब निम्न आदेश दर्ज करें:
adb kill-server
adb devices

तुम वहाँ जाओ! आपका डिवाइस सूचीबद्ध होना चाहिए।

उबंटू 14.04 एलटीएस में मैन्युअल रूप से एंड्रॉइड एडीबी यूएसबी ड्राइवर जोड़ने से कॉपी किया गया

मेरे लिए काम किया


मेरा डिवाइस पॉजिटिवो है और मेरा परिचालन तंत्र Ubuntu 14.04 LTS , इसलिए मेरी समस्या परिवर्तनीय नाम में थी

मैं फ़ाइल /etc/udev/rules.d/51-android.rules बनाते हैं और SUBSYSTEM SUBSYSTEM=="usb", SYSFS{idVendor}=="1662", MODE="0666"

मैंने डिवाइस को डिस्कनेक्ट किया और निष्पादित किया:

$ sudo udevadm control --reload-rules
$ sudo service udev restart

इसके बाद मैंने एंड्रॉइड डिवाइस को डेवलपर मोड में फिर से जोड़ा और

$ adb devices

List of devices attached 
1A883XB1K   device

मेरे लिए क्या काम करता है एडीबी सर्वर को फिर से मारना और शुरू करना। लिनक्स पर: sudo adb kill-server और फिर sudo adb start-server । फिर यह बॉक्स के बाहर लगभग हर डिवाइस का पता लगाएगा।


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

मैं उबंटू 13.04 और जेटब्रेन 12.1.4 का उपयोग कर रहा हूं


गिटहब समुदाय ने udev-rules बनाए रखा

https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules

यह अब तक की सबसे पूर्ण udev-rule सूची है जिसे मैंने अभी तक देखा है, वर्तमान में अनुशंसित sudo apt-get install android-tools-adb https://github.com/M0Rf30/android-udev-rules/blob/master/51-android.rules sudo apt-get install android-tools-adb , इसे आज़माएं।





adb