android adb - একাধিক ডিভাইস সংযুক্ত করা হয় যখন এডিবি শেল ব্যবহার করবেন? "ত্রুটির সাথে ব্যর্থ হয়েছে:একাধিক ডিভাইস এবং এমুলেটর"



driver download (9)

$ 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

?


Answers

ডিভাইসটি নির্দিষ্ট করার জন্য কমান্ডটি আগে -s বিকল্পটি ব্যবহার করুন, উদাহরণস্বরূপ:

adb -s 7f1c864e shell

আরও দেখুন http://developer.android.com/tools/help/adb.html#directingcommands


একাধিক ডিভাইস সংযুক্ত থাকলে এটি একটি মেনু দেখানোর জন্য আপনার কাজটি বেশিরভাগ কাজ করবে:

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

টাইপ এড়ানোর জন্য আপনি কেবল একটি উপনাম তৈরি করতে পারেন যা here ব্যাখ্যা হিসাবে ডিভাইস নির্বাচন অন্তর্ভুক্ত করে।


উইন্ডোজের জন্য, এখানে একটি দ্রুত 1 টি লিনিয়ার উদাহরণ রয়েছে যে ফাইলটি কিভাবে ইনস্টল করবেন ... একাধিক ডিভাইসে

FOR /F "skip=1"  %x IN ('adb devices') DO start adb -s %x install -r myandroidapp.apk

আপনি যদি ব্যাচ ফাইলে এটি অন্তর্ভুক্ত করার পরিকল্পনা করেন তবে% x,% x এর সাথে% x প্রতিস্থাপন করুন

FOR /F "skip=1"  %%x IN ('adb devices') DO start adb -s %%x install -r myandroidapp.apk

ব্যবহারকারী @janot ইতিমধ্যে এই উপরে উল্লিখিত হয়েছে, কিন্তু এটি সেরা সমাধান ফিল্টার করার জন্য আমাকে কিছু সময় দিয়েছে।

দুটি ব্রড ব্যবহার ক্ষেত্রে আছে:

1) 2 হার্ডওয়্যার সংযুক্ত, প্রথম এমুলেটর এবং অন্য একটি ডিভাইস।
সমাধান : adb -e shell....whatever-command এমুলেটর এবং adb -d shell....whatever-command জন্য adb -d shell....whatever-command ডিভাইসের জন্য adb -d shell....whatever-command

2) ইউএসবি / এডিবি-ওয়াইফাইয়ের মাধ্যমে ডিভাইসগুলির এন নম্বর সংযুক্ত করা হয়েছে (সমস্ত এমুলেটর বা ফোন / ট্যাবলেট):

সমাধান : ধাপ 1) চালান adb devices যা আপনাকে বর্তমানে যুক্ত ডিভাইসগুলির তালিকা দেবে (ইউএসবি বা এডবভারওয়্যারআইআইএফআইয়ের মাধ্যমে)
ধাপ ২) এখন adb -s <device-id/IP-address> shell....whatever-command চালান adb -s <device-id/IP-address> shell....whatever-command না কেন adb -s <device-id/IP-address> shell....whatever-command আপনার কাছে কত ডিভাইস আছে।

উদাহরণ
ওয়াইফাই এডিবিতে সংযুক্ত একটি ডিভাইসে অ্যাপ্লিকেশন ডেটা সাফ করার জন্য আমি কার্যকর করব:
adb -s 172.16.34.89:5555 shell pm clear com.package-id

আমার ইউএসবি সংযুক্ত ডিভাইসে সংযুক্ত ডেটা সাফ করার জন্য আমি কার্যকর করব:
adb -s 5210d21be2a5643d shell pm clear com.package-id


আরেকটি বিকল্প পরিবেশগত পরিবর্তনশীল ANDROID_SERIAL সেটিকে প্রাসঙ্গিক সিরিয়ালে সেট করতে হবে, এখানে আপনি উইন্ডোজ ব্যবহার করছেন বলে মনে করছেন:

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

তারপর আপনি কোন সমস্যা ছাড়াই adb.exe shell ব্যবহার করতে পারেন।


ডিভাইস (অথবা এমুলেটর) থেকে সিরিয়াল নির্বাচন করতে একটি বাশ (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 ব্যবহার করতে পারেন (বিশ্বব্যাপী adb -s প্রদত্ত ক্রমিক সংখ্যা সহ ডিভাইস ব্যবহার করুন যা $ ANDROID_SERIAL ওভাররাইড করে):

adb -s ${device} <command>

আমি MacOS টার্মিনালে এই কোডটি পরীক্ষা করেছি, তবে মনে হয় এটি গিট ব্যাশ টার্মিনালে জুড়ে উইন্ডোতে ব্যবহার করা যেতে পারে।

এছাড়াও .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"


'একাধিক ডিভাইস' ত্রুটির পরে আমি এই প্রশ্নটি খুঁজে পেয়েছি, দুটি অফলাইন ফোন দেখাচ্ছে:

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

আপনি ব্যবহারকারী সেটিংস চান,

তারপর আমি setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); সুপারিশ setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

আপনি একটি সেটিংস মেনু থেকে সেটিংস পরিবর্তন করতে পারেন।

আমার এটির প্রয়োজন কারণ আমার টাইমারগুলি পর্দায় যা আছে তার সাথে সামঞ্জস্যপূর্ণ, এবং পর্দা ঘোরানো বর্তমান ক্রিয়াকলাপটিকে ধ্বংস করবে।





android shell cmd adb android-debug