android - एकाधिक डिवाइस कनेक्ट होने पर एडीबी शैल का उपयोग कैसे करें? "त्रुटि: एक से अधिक डिवाइस और एमुलेटर" के साथ विफल




shell cmd (6)

आपको प्रवेश नहीं करना चाहिए:

adb -s 7f1c864e shell

?
http://developer.android.com/tools/help/adb.html#directingcommands

$ adb --help

...

-s SERIAL  use device with given serial (overrides $ANDROID_SERIAL)

...

$ adb devices
List of devices attached 
emulator-5554 device
7f1c864e  device

...

$ adb shell -s 7f1c864e
error: more than one device and emulator

?


एक और विकल्प पर्यावरण परिवर्तनीय ANDROID_SERIAL को प्रासंगिक धारावाहिक में सेट करना होगा, यह मानते हुए कि आप विंडोज का उपयोग कर रहे हैं:

set ANDROID_SERIAL="7f1c864e"
echo %ANDROID_SERIAL%
"7f1c864e"

फिर आप किसी भी मुद्दे के बिना adb.exe shell उपयोग कर सकते हैं।


डिवाइस (या एमुलेटर) से एक धारावाहिक का चयन करने के लिए एक Bash (tools.sh) बनाएं:

clear;
echo "====================================================================================================";
echo " ADB DEVICES";
echo "====================================================================================================";
echo "";

adb_devices=( $(adb devices | grep -v devices | grep device | cut -f 1)#$(adb devices | grep -v devices | grep device | cut -f 2) );

if [ $((${#adb_devices[@]})) -eq "1" ] && [ "${adb_devices[0]}" == "#" ]
then
    echo "No device found";
    echo ""; 
    echo "====================================================================================================";
    device=""
    // Call Main Menu function fxMenu;
else
    read -p "$(
        f=0
        for dev in "${adb_devices[@]}"; do
            nm="$(echo ${dev} | cut -f1 -d#)";
            tp="$(echo ${dev} | cut -f2 -d#)";
            echo " $((++f)). ${nm} [${tp}]";
        done

        echo "";
        echo " 0. Quit"
        echo "";

        echo "====================================================================================================";
        echo "";
        echo ' Please select a device: '
    )" selection

    error="You think it's over just because I am dead. It's not over. The games have just begun.";
    // Call Validation Numbers fxValidationNumberMenu ${#adb_devices[@]} ${selection} "${error}" 
    case "${selection}" in
        0)
            // Call Main Menu function fxMenu;
        *)  
            device="$(echo ${adb_devices[$((selection-1))]} | cut -f1 -d#)";
            // Call Main Menu function fxMenu;
    esac
fi

फिर एक और विकल्प में adb -s उपयोग कर सकते हैं (वैश्विक विकल्प-उपयोग डिवाइस के साथ डिवाइस का उपयोग करें जो $ ANDROID_SERIAL ओवरराइड करता है):

adb -s ${device} <command>

मैंने मैकोज़ टर्मिनल पर इस कोड का परीक्षण किया, लेकिन मुझे लगता है कि इसका उपयोग गिट बैश टर्मिनल में विंडोज़ पर किया जा सकता है।

यह भी याद रखें कि .bash_profile फ़ाइल पर पर्यावरण चर और एंड्रॉइड एसडीके पथ कॉन्फ़िगर करें:

export ANDROID_HOME="/usr/local/opt/android-sdk/"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/tools:$PATH"

मुझे 'एक से अधिक डिवाइस' त्रुटि देखने के बाद यह प्रश्न मिला, जिसमें 2 ऑफ़लाइन फ़ोन दिखाए गए:

C:\Program Files (x86)\Android\android-sdk\android-tools>adb devices
List of devices attached
SH436WM01785    offline
SH436WM01785    offline
SH436WM01785    sideload

यदि आपके पास केवल एक डिवाइस कनेक्ट है, तो ऑफ़लाइन कनेक्शन से छुटकारा पाने के लिए निम्न आदेश चलाएं:

adb kill-server
adb devices


adb -d shell (या adb -e shell अगर आप एक एमुलेटर से कनेक्ट कर रहे हैं)।

यदि आप पूर्ण आईडी टाइप करने के लिए बहुत आलसी हैं, तो यह आदेश आपको अधिकांश मामलों में मदद करेगा।

http://developer.android.com/tools/help/adb.html#commandsummary :

-d - केवल संलग्न यूएसबी डिवाइस पर एक एडीबी कमांड डायरेक्ट करें। एक से अधिक यूएसबी डिवाइस संलग्न होने पर एक त्रुटि देता है।

-e - केवल एक चलने वाले एमुलेटर को एडीबी कमांड डायरेक्ट करें। एक से अधिक एमुलेटर चल रहा है जब एक त्रुटि देता है।





android-debug