जवाबों:
-s
उदाहरण के लिए, डिवाइस निर्दिष्ट करने के लिए कमांड से पहले विकल्प का उपयोग करें :
adb -s 7f1c864e shell
Http://developer.android.com/tools/help/adb.html#directingcommands भी देखें
adb -e shell
या adb emu <command>
। अगर एक से अधिक एमुलेटर जा रहे हैं तो वे विफल हो जाएंगे और आपको वापस आना होगा-s
-s
पहले विकल्प का उपयोग करना होगा shell
। यह एक बहुत बुरा उपयोगकर्ता अनुभव है कि आप इसे दूसरे तरीके से नहीं कर सकते ...
adb -d shell
(या adb -e shell
)।
यह कमांड आपको ज्यादातर मामलों में मदद करेगी, अगर आप पूरी आईडी टाइप करने के लिए बहुत आलसी हैं।
से http://developer.android.com/tools/help/adb.html#commandsummary :
-d
- केवल संलग्न यूएसबी डिवाइस के लिए एक एडीबी कमांड को निर्देशित करें । एक से अधिक USB डिवाइस संलग्न होने पर एक त्रुटि देता है।
-e
- केवल चल रहे एमुलेटर के लिए एक एडीबी कमांड को निर्देशित करें । एक से अधिक एमुलेटर चलने पर एक त्रुटि देता है।
-d
के लिए है "डिवाइस" और -e
के लिए है "एमुलेटर" । और अगर आपने पहले ही यह पता लगा लिया है, तो अपने आप को पीठ पर थपथपाएं। ;)
एक और विकल्प प्रासंगिक धारावाहिक के लिए पर्यावरण चर ANDROID_SERIAL सेट करना होगा, यहां यह मानते हुए कि आप विंडोज का उपयोग कर रहे हैं:
set ANDROID_SERIAL="7f1c864e"
echo %ANDROID_SERIAL%
"7f1c864e"
फिर आप adb.exe shell
बिना किसी समस्या के उपयोग कर सकते हैं।
set ANDROID_SERIAL=7f1c864e
, यानी। बिना उद्धरण।
export ANDROID_SERIAL=7f1c864e
।
मुझे यह प्रश्न question एक से अधिक डिवाइस में त्रुटि ’देखने के बाद मिला, जिसमें 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 kill-server
ऑफ़लाइन एमुलेटर के साथ समस्या को ठीक करता है
जब आप एक से अधिक डिवाइस कनेक्ट होते हैं, तो यह जिप आपके लिए ज्यादातर काम करेगा।
$ adb $(android-select-device) shell
1) 02783201431feeee device 3) emulator-5554
2) 3832380FA5F30000 device 4) emulator-5556
Select the device to use, <Q> to quit:
टाइपिंग से बचने के लिए आप केवल एक उपनाम बना सकते हैं जिसमें उपकरण चयन शामिल है जैसा कि यहां बताया गया है ।
उपयोगकर्ता @janot
ने पहले ही ऊपर उल्लेख किया है, लेकिन मुझे सबसे अच्छा समाधान फ़िल्टर करने में कुछ समय लगा।
दो व्यापक उपयोग के मामले हैं:
1) 2 हार्डवेयर जुड़े हुए हैं, पहला एमुलेटर है और दूसरा एक डिवाइस है।
समाधान : adb -e shell....whatever-command
एमुलेटर के लिए और adb -d shell....whatever-command
डिवाइस के लिए।
2) n / USB (ADB-WiFi:
Solution : Step1) रन adb devices
थिसिस के माध्यम से उपकरणों की संख्या एन (सभी एमुलेटर या फ़ोन / टैबलेट) जुड़े हुए हैं, जो आपको वर्तमान में कनेक्ट किए गए उपकरणों की सूची देगा (USB या ADBoverWiFI के माध्यम से)
Step2) अब adb -s <device-id/IP-address> shell....whatever-command
कोई फर्क नहीं पड़ता कि कैसे आपके पास कई उपकरण हैं।
वाईफाई एडीबी I से जुड़े डिवाइस पर ऐप डेटा साफ़ करने के लिए उदाहरण मैं निष्पादित करूंगा:
adb -s 172.16.34.89:5555 shell pm clear com.package-id
मेरे usb से जुड़े डिवाइस पर ऐप डेटा कनेक्ट करने के लिए मैं निष्पादित करूंगा:
adb -s 5210d21be2a5643d shell pm clear com.package-id
अपने किसी एमुलेटर पर एपीके इंस्टॉल करने के लिए:
पहले उपकरणों की सूची प्राप्त करें:
-> adb devices
List of devices attached
25sdfsfb3801745eg device
emulator-0954 device
फिर -s
ध्वज के साथ अपने एमुलेटर पर एपीके इंस्टॉल करें :
-> adb -s "25sdfsfb3801745eg" install "C:\Users\joel.joel\Downloads\release.apk"
Performing Streamed Install
Success
आशा है कि यह किसी की मदद करता है!
सभी कनेक्टेड डिवाइस पर रनिंग अदब कमांड
बैश बनाएं (adb +)
adb devices | while read line
do
if [ ! "$line" = "" ] && [ `echo $line | awk '{print $2}'` = "device" ]
then
device=`echo $line | awk '{print $1}'`
echo "$device $@ ..."
adb -s $device $@
fi
इसके साथ प्रयोग करें
adb + // + कमांड
विंडोज के लिए, यहाँ एक त्वरित लाइनर का उदाहरण है कि एक फ़ाइल कैसे स्थापित की जाए..एक से अधिक डिवाइस
FOR /F "skip=1" %x IN ('adb devices') DO start adb -s %x install -r myandroidapp.apk
यदि आप बैच फ़ाइल में इसे शामिल करने की योजना बनाते हैं, तो% x को %% x से बदल दें, जैसा कि नीचे है
FOR /F "skip=1" %%x IN ('adb devices') DO start adb -s %%x install -r myandroidapp.apk
उपकरणों (या एमुलेटर) से एक धारावाहिक का चयन करने के लिए एक बैश (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
(वैश्विक विकल्प -s उपयोग डिवाइस दिए गए सीरियल नंबर के साथ, जो $ ANDROID_SERIAL से आगे निकल सकता है):
adb -s ${device} <command>
मैंने मैकओएस टर्मिनल पर इस कोड का परीक्षण किया, लेकिन मुझे लगता है कि इसका उपयोग गिट बैश टर्मिनल में खिड़कियों पर किया जा सकता है।
यह भी याद रखें कि .bash_profile
फ़ाइल पर पर्यावरण चर और Android SDK पथ कॉन्फ़िगर करें :
export ANDROID_HOME="/usr/local/opt/android-sdk/"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
export PATH="$ANDROID_HOME/tools:$PATH"
fxMenu
और fxValidatonNumberMenu
सिर्फ संदर्भ के लिए हैं। मैंने त्रुटि कोड से बचने के लिए यह टिप्पणी की थी। आप मेरे रिपॉजिटरी पर पूरा कार्यान्वयन देख सकते हैं: github.com/equiman/hardhatmac/blob/master/tools.sh
किसी विशेष उपकरण पर शेल चलाने का सबसे अच्छा तरीका है:
adb -s << emulator UDID >> shell
For Example:
adb -s emulator-5554 shell
100% काम करता है
प्लीज इसे थम्स अप दे दो
यहाँ एक शेल स्क्रिप्ट है जो मैंने अपने लिए बनाई है:
#! /bin/sh
for device in `adb devices | awk '{print $1}'`; do
if [ ! "$device" = "" ] && [ ! "$device" = "List" ]
then
echo " "
echo "adb -s $device $@"
echo "------------------------------------------------------"
adb -s $device $@
fi
done
adb -s 192.168.56.101:5555 shell