Android Debug Bridge ( adb
) یک ابزار خط فرمان همه کاره است که به شما امکان می دهد با یک دستگاه ارتباط برقرار کنید. دستور adb
انواع اعمال دستگاه مانند نصب و اشکال زدایی برنامه ها را تسهیل می کند. adb
دسترسی به پوسته یونیکس را فراهم می کند که می توانید از آن برای اجرای انواع دستورات روی دستگاه استفاده کنید. این یک برنامه مشتری-سرور است که شامل سه جزء است:
- یک کلاینت که دستورات را ارسال می کند. مشتری روی ماشین توسعه شما اجرا می شود. با صدور دستور
adb
می توانید یک کلاینت را از ترمینال خط فرمان فراخوانی کنید. - یک دیمون (adbd) که دستورات را روی دستگاه اجرا می کند. دیمون به عنوان یک فرآیند پس زمینه در هر دستگاه اجرا می شود.
- سروری که ارتباط بین کلاینت و دیمون را مدیریت می کند. سرور به عنوان یک فرآیند پس زمینه در ماشین توسعه شما اجرا می شود.
adb
در بسته Android SDK Platform Tools گنجانده شده است. این بسته را با مدیر SDK دانلود کنید، که آن را در android_sdk /platform-tools/
نصب میکند. اگر بسته مستقل Android SDK Platform Tools را میخواهید، آن را از اینجا دانلود کنید .
برای اطلاعات در مورد اتصال دستگاه برای استفاده از طریق adb
، از جمله نحوه استفاده از «دستیار اتصال» برای عیبیابی مشکلات رایج، به اجرای برنامهها در دستگاه سختافزاری مراجعه کنید.
adb چگونه کار می کند
هنگامی که یک کلاینت adb
راه اندازی می کنید، مشتری ابتدا بررسی می کند که آیا یک فرآیند سرور adb
قبلاً در حال اجرا است یا خیر. اگر وجود نداشته باشد، فرآیند سرور را شروع می کند. هنگامی که سرور راه اندازی می شود، به پورت TCP محلی 5037 متصل می شود و به دستورات ارسال شده از مشتریان adb
گوش می دهد.
توجه: همه کلاینت های adb
برای ارتباط با سرور adb
از پورت 5037 استفاده می کنند.
سپس سرور اتصالات را به تمام دستگاه های در حال اجرا تنظیم می کند. شبیه سازها را با اسکن پورت های فرد در محدوده 5555 تا 5585، که محدوده ای است که توسط 16 شبیه ساز اول استفاده می شود، مکان یابی می کند. در جایی که سرور یک دیمون adb
(adbd) پیدا می کند، یک اتصال به آن پورت برقرار می کند.
هر شبیه ساز از یک جفت پورت متوالی استفاده می کند - یک پورت با شماره زوج برای اتصالات کنسول و یک پورت با شماره فرد برای اتصالات adb
. به عنوان مثال:
شبیه ساز 1، کنسول: 5554
شبیه ساز 1، adb
: 5555
شبیه ساز 2، کنسول: 5556
شبیه ساز 2، adb
: 5557
و غیره
همانطور که نشان داده شده است، شبیه ساز متصل به adb
در پورت 5555 مشابه شبیه سازی است که کنسول آن در پورت 5554 گوش می دهد.
هنگامی که سرور اتصالات را به همه دستگاه ها تنظیم کرد، می توانید از دستورات adb
برای دسترسی به آن دستگاه ها استفاده کنید. از آنجایی که سرور اتصالات به دستگاه ها را مدیریت می کند و دستورات چندین کلاینت adb
را مدیریت می کند، می توانید هر دستگاهی را از هر کلاینت یا از یک اسکریپت کنترل کنید.
اشکال زدایی adb را در دستگاه خود فعال کنید
برای استفاده از adb با دستگاهی که از طریق USB متصل است، باید اشکال زدایی USB را در تنظیمات سیستم دستگاه، در قسمت گزینه های برنامه نویس فعال کنید. در اندروید 4.2 (سطح API 17) و بالاتر، صفحه Developer options به طور پیش فرض پنهان است. برای قابل مشاهده کردن، گزینه های برنامه نویس را فعال کنید.
اکنون می توانید دستگاه خود را با USB وصل کنید. میتوانید با اجرای adb devices
از پوشه android_sdk /platform-tools/
تأیید کنید که دستگاه شما متصل است. در صورت اتصال، نام دستگاه را میبینید که بهعنوان «دستگاه» فهرست شده است.
توجه: هنگامی که دستگاهی را که دارای Android نسخه 4.2.2 (سطح API 17) یا بالاتر است وصل میکنید، سیستم گفتگویی را نشان میدهد که از شما میپرسد آیا کلید RSA را میپذیرد که امکان اشکالزدایی را از طریق این رایانه فراهم میکند یا خیر. این مکانیسم امنیتی از دستگاه های کاربر محافظت می کند زیرا تضمین می کند که اشکال زدایی USB و سایر دستورات adb نمی توانند اجرا شوند مگر اینکه بتوانید قفل دستگاه را باز کنید و گفتگو را تأیید کنید.
برای اطلاعات بیشتر درباره اتصال به دستگاه از طریق USB، اجرای برنامهها در دستگاه سختافزاری را بخوانید.
از طریق Wi-Fi به دستگاه متصل شوید
توجه: دستورالعملهای زیر برای دستگاههای Wear دارای Android 11 (سطح API 30) اعمال نمیشود. برای اطلاعات بیشتر به راهنمای اشکال زدایی برنامه Wear OS مراجعه کنید.
Android 11 (سطح API 30) و بالاتر از استقرار و اشکال زدایی برنامه شما به صورت بی سیم از ایستگاه کاری خود با استفاده از Android Debug Bridge (adb) پشتیبانی می کند. به عنوان مثال، می توانید برنامه قابل اشکال زدایی خود را در چندین دستگاه راه دور بدون نیاز به اتصال فیزیکی دستگاه خود از طریق USB، مستقر کنید. این امر نیاز به پرداختن به مشکلات رایج اتصال USB، مانند نصب درایور را از بین می برد.
قبل از شروع استفاده از اشکال زدایی بی سیم، موارد زیر را انجام دهید:
مطمئن شوید که ایستگاه کاری و دستگاه شما به یک شبکه بی سیم متصل هستند.
مطمئن شوید که دستگاه شما دارای Android 11 (سطح API 30) یا بالاتر برای تلفن یا Android 13 (سطح API 33) یا بالاتر برای تلویزیون و WearOS است. برای اطلاعات بیشتر، نسخه Android خود را بررسی و بهروزرسانی کنید.
اگر از IDE استفاده می کنید، مطمئن شوید که آخرین نسخه اندروید استودیو را نصب کرده اید. می توانید آن را از اینجا دانلود کنید.
در ایستگاه کاری خود، به آخرین نسخه SDK Platform Tools را بهروزرسانی کنید.
برای استفاده از اشکال زدایی بی سیم، باید دستگاه خود را با استفاده از یک کد QR یا یک کد جفت شدن با ایستگاه کاری خود جفت کنید. ایستگاه کاری و دستگاه شما باید به یک شبکه بی سیم متصل باشند. برای اتصال به دستگاه خود، مراحل زیر را دنبال کنید:
اندروید استودیو را باز کنید و از منوی تنظیمات اجرا شده ، گزینه Pair Devices Using Wi-Fi را انتخاب کنید.
همانطور که در شکل 2 نشان داده شده است، پنجره جفت کردن دستگاه ها از طریق Wi-Fi ظاهر می شود.
در دستگاه خود، روی Wireless debugging ضربه بزنید و دستگاه خود را جفت کنید:
برای جفت کردن دستگاه خود با یک کد QR، جفت کردن دستگاه با کد QR را انتخاب کنید و کد QR به دست آمده از دستگاه های جفت از طریق Wi-Fi را که در شکل 2 نشان داده شده است اسکن کنید.
برای جفت کردن دستگاه خود با کد جفتسازی، از پنجره بازشو جفت کردن دستگاهها از طریق Wi-Fi، جفت کردن دستگاه با کد جفتسازی را انتخاب کنید. در دستگاه خود، جفت کردن با استفاده از کد جفت سازی را انتخاب کنید و کد شش رقمی ارائه شده را یادداشت کنید. هنگامی که دستگاه شما در پنجره جفت کردن دستگاه ها از طریق Wi-Fi ظاهر شد، می توانید جفت شدن را انتخاب کنید و کد شش رقمی نشان داده شده در دستگاه خود را وارد کنید.
پس از جفت شدن دستگاه، می توانید سعی کنید برنامه خود را در دستگاه خود مستقر کنید.
برای جفت کردن دستگاه دیگری یا فراموش کردن دستگاه فعلی در ایستگاه کاری خود، به «اشکالزدایی بیسیم» در دستگاه خود بروید. روی نام ایستگاه کاری خود در قسمت Paired devices ضربه بزنید و Forget را انتخاب کنید.
اگر میخواهید به سرعت اشکالزدایی بیسیم را روشن و خاموش کنید، میتوانید از کاشیهای برنامهنویس تنظیمات سریع برای اشکالزدایی بیسیم استفاده کنید، که در گزینههای برنامهنویس > کاشیهای توسعه تنظیمات سریع یافت میشود.
اتصال Wi-Fi با استفاده از خط فرمان
از طرف دیگر، برای اتصال به دستگاه خود با استفاده از خط فرمان بدون Android Studio، این مراحل را دنبال کنید:
همانطور که قبلا توضیح داده شد گزینه های توسعه دهنده را در دستگاه خود فعال کنید.
همانطور که قبلا توضیح داده شد، اشکال زدایی بی سیم را در دستگاه خود فعال کنید.
در ایستگاه کاری خود، یک پنجره ترمینال را باز کنید و به
android_sdk/platform-tools
بروید.آدرس IP، شماره پورت و کد جفت شدن خود را با انتخاب جفت کردن دستگاه با کد جفت شدن پیدا کنید. به آدرس IP، شماره پورت و کد جفتسازی نمایش داده شده روی دستگاه توجه داشته باشید.
در ترمینال ایستگاه کاری خود،
adb pair ipaddr:port
اجرا کنید. از آدرس IP و شماره پورت بالا استفاده کنید.هنگامی که از شما خواسته شد، مانند تصویر زیر، کد جفت شدن را وارد کنید.
مشکلات اتصال بی سیم را حل کنید
اگر در اتصال بی سیم به دستگاه خود مشکل دارید، مراحل عیب یابی زیر را برای حل این مشکل امتحان کنید.
بررسی کنید که آیا ایستگاه کاری و دستگاه شما با پیش نیازها مطابقت دارند یا خیر
بررسی کنید که ایستگاه کاری و دستگاه دارای پیش نیازهای ذکر شده در ابتدای این بخش باشند.
سایر مسائل شناخته شده را بررسی کنید
در زیر لیستی از مشکلات شناخته شده فعلی در مورد اشکال زدایی بی سیم (با adb یا Android Studio) و نحوه حل آنها آمده است:
Wi-Fi متصل نمی شود : شبکه های Wi-Fi ایمن، مانند شبکه های Wi-Fi شرکتی، ممکن است اتصالات p2p را مسدود کنند و به شما اجازه اتصال از طریق Wi-Fi را ندهند. سعی کنید با کابل یا شبکه Wi-Fi دیگر (غیر شرکتی) وصل شوید. اتصال بیسیم با استفاده از
adb connect ip : port
روی tcp/ip (به دنبال اتصال USB اولیه) گزینه دیگری است، در صورتی که توسل به یک شبکه غیر شرکتی یک گزینه باشد.adb
از طریق Wi-Fi گاهی اوقات به طور خودکار خاموش می شود : اگر دستگاه شبکه های Wi-Fi را تغییر دهد یا از شبکه جدا شود، این اتفاق می افتد. برای حل، دوباره به شبکه متصل شوید.دستگاه پس از جفت شدن با موفقیت وصل نمی شود :
adb
برای کشف و اتصال خودکار به دستگاه های جفت شده به mDNS متکی است. اگر پیکربندی شبکه یا دستگاه شما از mDNS پشتیبانی نمیکند یا آن را غیرفعال کرده است، باید با استفاده ازadb connect ip : port
به صورت دستی به دستگاه متصل شوید.
پس از اتصال USB اولیه به صورت بی سیم با دستگاهی متصل شوید (فقط گزینه موجود در Android 10 و پایین تر)
توجه: این گردش کار برای اندروید 11 (و بالاتر) نیز قابل اجرا است، نکته مهم این است که شامل یک اتصال *اولیه* از طریق USB فیزیکی نیز می شود.
توجه: دستورالعملهای زیر برای دستگاههای Wear دارای Android 10 (سطح API 29) یا پایینتر اعمال نمیشود. برای اطلاعات بیشتر به راهنمای اشکال زدایی برنامه Wear OS مراجعه کنید.
adb
معمولا از طریق USB با دستگاه ارتباط برقرار می کند، اما می توانید از adb
از طریق Wi-Fi نیز استفاده کنید. برای اتصال دستگاهی که دارای Android 10 (سطح API 29) یا پایینتر است، این مراحل اولیه را از طریق USB دنبال کنید:
- دستگاه Android و رایانه میزبان
adb
خود را به یک شبکه Wi-Fi مشترک وصل کنید. - دستگاه را با کابل USB به کامپیوتر میزبان وصل کنید.
- دستگاه مورد نظر را برای گوش دادن به اتصال TCP/IP در پورت 5555 تنظیم کنید:
adb tcpip 5555
- کابل USB را از دستگاه مورد نظر جدا کنید.
- آدرس IP دستگاه Android را پیدا کنید. برای مثال، در یک دستگاه Nexus، میتوانید آدرس IP را در تنظیمات > درباره رایانه لوحی (یا درباره تلفن ) > وضعیت > آدرس IP پیدا کنید.
- با آدرس IP آن به دستگاه متصل شوید:
adb connect device_ip_address:5555
- تأیید کنید که رایانه میزبان شما به دستگاه مورد نظر متصل است:
$ adb devices List of devices attached device_ip_address:5555 device
توجه: مراقب باشید که همه نقاط دسترسی مناسب نیستند. ممکن است لازم باشد از یک نقطه دسترسی استفاده کنید که فایروال آن برای پشتیبانی از adb
به درستی پیکربندی شده است.
دستگاه شما اکنون به adb
متصل است.
اگر اتصال adb
به دستگاه شما قطع شد:
- مطمئن شوید که هاست شما همچنان به همان شبکه Wi-Fi دستگاه Android شما متصل است.
- با اجرای مجدد مرحله
adb connect
دوباره وصل شوید. - اگر کار نکرد، میزبان
adb
خود را بازنشانی کنید:adb kill-server
سپس از اول شروع کنید.
پرس و جو برای دستگاه ها
قبل از صدور دستورات adb
، دانستن اینکه چه دستگاه هایی به سرور adb
متصل هستند مفید است. لیستی از دستگاه های متصل را با استفاده از دستور devices
ایجاد کنید:
adb devices -l
در پاسخ، adb
این اطلاعات وضعیت را برای هر دستگاه چاپ می کند:
- شماره سریال:
adb
رشته ای ایجاد می کند تا دستگاه را با شماره پورت آن به طور منحصر به فرد شناسایی کند. در اینجا یک مثال شماره سریال آمده است:emulator-5554
- وضعیت: وضعیت اتصال دستگاه می تواند یکی از موارد زیر باشد:
-
offline
: دستگاه بهadb
متصل نیست یا پاسخ نمی دهد. -
device
: دستگاه به سرورadb
متصل است. توجه داشته باشید که این حالت به این معنی نیست که سیستم اندروید به طور کامل بوت شده و عملیاتی شده است، زیرا دستگاه در حالی که سیستم هنوز در حال بوت شدن است بهadb
متصل می شود. پس از راهاندازی، این وضعیت عملکرد عادی یک دستگاه است. -
no device
: هیچ دستگاهی متصل نیست.
-
- توضیحات: اگر گزینه
-l
وارد کنید، دستورdevices
به شما می گوید که دستگاه چیست. این اطلاعات زمانی مفید است که چندین دستگاه متصل شده باشید تا بتوانید آنها را از هم جدا کنید.
مثال زیر فرمان devices
و خروجی آن را نشان می دهد. سه دستگاه در حال اجرا هستند. دو خط اول در لیست شبیه ساز هستند و خط سوم یک دستگاه سخت افزاری است که به رایانه متصل است.
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
شبیه ساز لیست نشده است
دستور adb devices
دارای یک دنباله دستور گوشهای است که باعث میشود شبیهسازهای در حال اجرا در خروجی adb devices
نشان داده نشوند، حتی اگر شبیهسازها روی دسکتاپ شما قابل مشاهده باشند. این زمانی اتفاق می افتد که همه شرایط زیر درست باشد:
- سرور
adb
در حال اجرا نیست. - شما از دستور
emulator
با گزینه-port
یا-ports
با مقدار پورت فرد بین 5554 و 5584 استفاده می کنید. - پورت فرد با شماره انتخابی شما اشغال نیست، بنابراین اتصال پورت را می توان با شماره پورت مشخص شده برقرار کرد - یا اگر مشغول باشد، شبیه ساز به پورت دیگری سوئیچ می کند که الزامات 2 را برآورده می کند.
- شما سرور
adb
را بعد از راه اندازی شبیه ساز راه اندازی می کنید.
یکی از راههای جلوگیری از این وضعیت این است که به شبیهساز اجازه دهید پورتهای خود را انتخاب کند و بیش از 16 شبیهساز را همزمان اجرا نکند. راه دیگر این است که همیشه قبل از استفاده از دستور emulator
سرور adb
را راه اندازی کنید، همانطور که در مثال های زیر توضیح داده شده است.
مثال 1: در دنباله دستور زیر، دستور adb devices
سرور adb
را راه اندازی می کند، اما لیست دستگاه ها ظاهر نمی شود.
سرور adb
را متوقف کنید و دستورات زیر را به ترتیب نشان داده شده وارد کنید. برای نام AVD، یک نام AVD معتبر از سیستم خود ارائه دهید. برای دریافت لیستی از نام های AVD، emulator -list-avds
را تایپ کنید. دستور emulator
در دایرکتوری android_sdk /tools
قرار دارد.
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
مثال 2: در دستور زیر، adb devices
لیستی از دستگاهها را نشان میدهند زیرا ابتدا سرور adb
راهاندازی شده است.
برای مشاهده شبیه ساز در خروجی adb devices
، سرور adb
را متوقف کرده و پس از استفاده از دستور emulator
و قبل از استفاده از دستور adb devices
، دوباره آن را راه اندازی کنید.
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
برای اطلاعات بیشتر درباره گزینههای خط فرمان شبیهساز، گزینههای راهاندازی خط فرمان را ببینید.
دستورات را به یک دستگاه خاص ارسال کنید
اگر چندین دستگاه در حال اجرا هستند، هنگام صدور دستور adb
باید دستگاه مورد نظر را مشخص کنید. برای تعیین هدف، مراحل زیر را دنبال کنید:
- برای بدست آوردن شماره سریال هدف از دستور
devices
استفاده کنید. - پس از بدست آوردن شماره سریال، از گزینه
-s
با دستوراتadb
برای تعیین شماره سریال استفاده کنید.- اگر میخواهید دستورات
adb
زیادی صادر کنید، میتوانید متغیر محیطی$ANDROID_SERIAL
را طوری تنظیم کنید که شامل شماره سریال باشد. - اگر از
-s
و$ANDROID_SERIAL
استفاده میکنید،-s
$ANDROID_SERIAL
را لغو میکند.
- اگر میخواهید دستورات
در مثال زیر، لیست دستگاه های متصل به دست می آید و سپس از شماره سریال یکی از دستگاه ها برای نصب helloWorld.apk
بر روی آن دستگاه استفاده می شود:
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
توجه: اگر فرمانی را بدون تعیین دستگاه مورد نظر در زمانی که چندین دستگاه در دسترس هستند صادر کنید، adb
خطای «adb: بیش از یک دستگاه/شبیهساز» را نمایش میدهد.
اگر چندین دستگاه در دسترس دارید اما تنها یکی شبیه ساز است، از گزینه -e
برای ارسال دستورات به شبیه ساز استفاده کنید. اگر چندین دستگاه وجود دارد اما فقط یک دستگاه سخت افزاری متصل است، از گزینه -d
برای ارسال دستورات به دستگاه سخت افزاری استفاده کنید.
یک برنامه نصب کنید
میتوانید adb
برای نصب یک APK روی شبیهساز یا دستگاه متصل با دستور install
استفاده کنید:
adb install path_to_apk
هنگام نصب یک APK آزمایشی باید از گزینه -t
با دستور install
استفاده کنید. برای اطلاعات بیشتر، -t
ببینید.
برای نصب چندین APK از install-multiple
استفاده کنید. اگر همه فایلهای APK را برای یک دستگاه خاص برای برنامه خود از کنسول Play دانلود کنید و بخواهید آنها را روی یک شبیهساز یا دستگاه فیزیکی نصب کنید، مفید است.
برای اطلاعات بیشتر در مورد نحوه ایجاد یک فایل APK که میتوانید آن را روی نمونه شبیهساز/دستگاه نصب کنید، به ساخت و اجرای برنامه خود مراجعه کنید.
توجه: اگر از اندروید استودیو استفاده می کنید، نیازی به استفاده مستقیم از adb
برای نصب برنامه خود بر روی شبیه ساز یا دستگاه ندارید. در عوض، Android Studio بسته بندی و نصب برنامه را برای شما انجام می دهد.
ارسال پورت را تنظیم کنید
از دستور forward
برای راهاندازی ارسال پورت دلخواه استفاده کنید، که درخواستهای یک پورت میزبان خاص را به پورت دیگری در دستگاه ارسال میکند. مثال زیر ارسال پورت میزبان 6100 به پورت دستگاه 7100 را تنظیم می کند:
adb forward tcp:6100 tcp:7100
مثال زیر ارسال پورت میزبان 6100 را به local:logd تنظیم می کند:
adb forward tcp:6100 local:logd
اگر میخواهید تعیین کنید چه چیزی به یک پورت معین روی دستگاه ارسال میشود، میتواند مفید باشد. تمام داده های دریافتی در دیمون ثبت سیستم نوشته می شود و در گزارش های دستگاه نمایش داده می شود.
فایلها را به و از دستگاه کپی کنید
از دستورات pull
و push
برای کپی کردن فایل ها به و از دستگاه استفاده کنید. بر خلاف دستور install
که فقط یک فایل APK را در یک مکان خاص کپی می کند، دستورات pull
و push
به شما امکان می دهد فهرست ها و فایل های دلخواه را در هر مکانی در دستگاه کپی کنید.
برای کپی کردن یک فایل یا دایرکتوری و زیرشاخه های آن از دستگاه، موارد زیر را انجام دهید:
adb pull remote local
برای کپی کردن یک فایل یا دایرکتوری و زیرشاخه های آن در دستگاه، موارد زیر را انجام دهید:
adb push local remote
مسیرهای دسترسی به فایلها/دایرکتوری هدف را در دستگاه توسعه خود (محلی) و روی دستگاه (ریموت) جایگزین local
و remote
کنید. به عنوان مثال:
adb push myfile.txt /sdcard/myfile.txt
سرور adb را متوقف کنید
در برخی موارد، ممکن است لازم باشد فرآیند سرور adb
را خاتمه دهید و سپس آن را مجددا راه اندازی کنید تا مشکل برطرف شود. به عنوان مثال، اگر adb
به دستوری پاسخ ندهد، ممکن است این اتفاق بیفتد.
برای متوقف کردن سرور adb
، از دستور adb kill-server
استفاده کنید. سپس می توانید با صدور هر دستور adb
دیگری سرور را راه اندازی مجدد کنید.
دستورات adb را صادر کنید
دستورات adb
را از یک خط فرمان در ماشین توسعه خود یا از یک اسکریپت با استفاده از موارد زیر صادر کنید:
adb [-d | -e | -s serial_number] command
اگر فقط یک شبیه ساز در حال اجرا باشد یا فقط یک دستگاه متصل باشد، دستور adb
به طور پیش فرض به آن دستگاه ارسال می شود. اگر چندین شبیهساز در حال اجرا هستند و/یا چندین دستگاه متصل هستند، باید از گزینه -d
، -e
، یا -s
استفاده کنید تا دستگاه هدفی را که دستور باید به آن هدایت شود، مشخص کنید.
با استفاده از دستور زیر می توانید لیستی دقیق از تمام دستورات adb
پشتیبانی شده را مشاهده کنید:
adb --help
دستورات پوسته را صادر کنید
می توانید از دستور shell
برای صدور دستورات دستگاه از طریق adb
یا برای راه اندازی یک پوسته تعاملی استفاده کنید. برای صدور یک فرمان واحد، از دستور shell
به صورت زیر استفاده کنید:
adb [-d |-e | -s serial_number] shell shell_command
برای شروع یک پوسته تعاملی بر روی یک دستگاه، از دستور shell
مانند زیر استفاده کنید:
adb [-d | -e | -s serial_number] shell
برای خروج از پوسته تعاملی، Control+D
را فشار دهید یا exit
را تایپ کنید.
اندروید اکثر ابزارهای معمول خط فرمان یونیکس را ارائه می دهد. برای لیستی از ابزارهای موجود، از دستور زیر استفاده کنید:
adb shell ls /system/bin
راهنما برای اکثر دستورات از طریق آرگومان --help
در دسترس است. بسیاری از دستورات پوسته توسط جعبه اسباب بازی ارائه می شود. راهنمای عمومی قابل اجرا برای همه دستورات جعبه اسباب بازی از طریق toybox --help
در دسترس است.
با Android Platform Tools 23 و بالاتر، adb
آرگومان ها را به همان روشی که دستور ssh(1)
انجام می دهد، مدیریت می کند. این تغییر بسیاری از مشکلات مربوط به تزریق دستور را برطرف کرده است و امکان اجرای ایمن دستوراتی را که حاوی متاکاراکترهای پوسته هستند، مانند adb install Let\'sGo.apk
را ممکن می سازد. این تغییر به این معنی است که تفسیر هر دستوری که حاوی متاکاراکترهای پوسته باشد نیز تغییر کرده است.
به عنوان مثال، adb shell setprop key ' two words '
اکنون یک خطا است، زیرا نقل قول ها توسط پوسته محلی بلعیده می شوند و دستگاه adb shell setprop key two words
را می بیند. برای اینکه دستور کار کند، دو بار نقل قول کنید، یک بار برای پوسته محلی و یک بار برای پوسته راه دور، همانطور که با ssh(1)
انجام می دهید. برای مثال، adb shell setprop key "' two words '"
کار می کند زیرا پوسته محلی سطح بیرونی نقل قول را می گیرد و دستگاه همچنان سطح داخلی نقل قول را می بیند: setprop key 'two words'
. فرار نیز یک گزینه است، اما دو بار نقل قول معمولا آسان تر است.
ابزار خط فرمان Logcat را نیز ببینید که برای نظارت بر گزارش سیستم مفید است.
با مدیر فعالیت تماس بگیرید
در یک پوسته adb
، میتوانید با ابزار Activity manager ( am
) دستوراتی را برای انجام اقدامات مختلف سیستم مانند شروع یک فعالیت، توقف اجباری یک فرآیند، پخش یک هدف، اصلاح ویژگیهای صفحه نمایش دستگاه و موارد دیگر صادر کنید.
در حالی که در یک پوسته، دستور am
به صورت زیر است:
am command
همچنین میتوانید دستور مدیریت فعالیت را مستقیماً از adb
بدون وارد کردن پوسته راه دور صادر کنید. به عنوان مثال:
adb shell am start -a android.intent.action.VIEW
فرمان | توضیحات |
---|---|
start [ options ] intent | یک Activity مشخص شده توسط intent را شروع کنید.برای آرگومان های قصد، مشخصات را ببینید. گزینه ها عبارتند از:
|
startservice [ options ] intent | Service مشخص شده توسط intent را شروع کنید.برای آرگومان های قصد، مشخصات را ببینید. گزینه ها عبارتند از:
|
force-stop package | تمام موارد مرتبط با package اجباری متوقف کنید. |
kill [ options ] package | تمام فرآیندهای مرتبط با package را از بین ببرید. این دستور فقط فرآیندهایی را میکشد که از بین بردن آنها بیخطر بوده و بر تجربه کاربر تأثیری نخواهد داشت.گزینه ها عبارتند از:
|
kill-all | تمام فرآیندهای پس زمینه را بکشید. |
broadcast [ options ] intent | یک قصد پخش صادر کنید. برای آرگومان های قصد، مشخصات را ببینید. گزینه ها عبارتند از:
|
instrument [ options ] component | نظارت را با یک نمونه Instrumentation شروع کنید. معمولاً component هدف فرم test_package / runner_class است.گزینه ها عبارتند از:
|
profile start process file | نمایه ساز را در process شروع کنید، نتایج را در file بنویسید. |
profile stop process | پروفیلر process متوقف کنید. |
dumpheap [ options ] process file | انبوه process تخلیه کنید، در file بنویسید.گزینه ها عبارتند از:
|
set-debug-app [ options ] package | package برنامه را روی اشکال زدایی تنظیم کنید.گزینه ها عبارتند از:
|
clear-debug-app | بسته مجموعه قبلی را برای رفع اشکال با set-debug-app پاک کنید. |
monitor [ options ] | نظارت را برای خرابی یا ANR شروع کنید. گزینه ها عبارتند از:
|
screen-compat {on | off} package | حالت سازگاری صفحه package را کنترل کنید. |
display-size [reset | width x height ] | نادیده گرفتن اندازه نمایش دستگاه. این دستور برای آزمایش برنامه شما در اندازه های مختلف صفحه با تقلید وضوح صفحه نمایش کوچک با استفاده از دستگاهی با صفحه نمایش بزرگ مفید است و بالعکس. مثال: |
display-density dpi | نادیده گرفتن تراکم نمایش دستگاه این دستور برای آزمایش برنامه شما در تراکم های مختلف صفحه با تقلید از محیط صفحه نمایش با چگالی بالا با استفاده از صفحه نمایش کم تراکم مفید است و بالعکس. مثال: |
to-uri intent | مشخصات intent داده شده را به عنوان URI چاپ کنید. برای آرگومان های قصد، مشخصات را ببینید. |
to-intent-uri intent | مشخصات intent داده شده را به عنوان یک intent: URI.برای آرگومان های قصد، مشخصات را ببینید. |
مشخصات برای استدلال های قصد
برای دستورات اکتیویتی منیجر که آرگومان intent
می گیرند، می توانید intent را با گزینه های زیر مشخص کنید:
تماس با مدیر بسته ( pm
)
در یک پوسته adb
، میتوانید با ابزار مدیریت بسته ( pm
) دستوراتی را برای انجام اقدامات و پرس و جوها در بستههای برنامه نصب شده در دستگاه صادر کنید.
در حالی که در یک پوسته، نحو pm
به صورت زیر است:
pm command
همچنین می توانید دستور مدیریت بسته را مستقیماً از adb
بدون وارد کردن پوسته راه دور صادر کنید. به عنوان مثال:
adb shell pm uninstall com.example.MyApp
فرمان | توضیحات |
---|---|
list packages [ options ] filter | چاپ همه بسته ها، به صورت اختیاری فقط بسته هایی که نام بسته حاوی متن در filter است.گزینه ها:
|
list permission-groups | چاپ همه گروه های مجوز شناخته شده. |
list permissions [ options ] group | چاپ تمام مجوزهای شناخته شده، به صورت اختیاری فقط مجوزهای موجود در group .گزینه ها:
|
list instrumentation [ options ] | لیست تمام بسته های آزمایشی گزینه ها:
|
list features | تمام ویژگی های سیستم را چاپ کنید. |
list libraries | تمام کتابخانه های پشتیبانی شده توسط دستگاه فعلی را چاپ کنید. |
list users | همه کاربران روی سیستم را چاپ کنید. |
path package | مسیر APK package داده شده را چاپ کنید. |
install [ options ] path | بسته ای را که توسط path مشخص شده در سیستم نصب کنید.گزینه ها:
|
uninstall [ options ] package | بسته ای را از سیستم حذف می کند. گزینه ها:
|
clear package | تمام داده های مرتبط با یک بسته را حذف کنید. |
enable package_or_component | بسته یا جزء داده شده را فعال کنید (نوشته شده به عنوان "package/class"). |
disable package_or_component | بسته یا جزء داده شده را غیرفعال کنید (نوشته شده به عنوان "package/class"). |
disable-user [ options ] package_or_component | گزینه ها:
|
grant package_name permission | به یک برنامه مجوز بدهید. در دستگاههای دارای Android نسخه 6.0 (سطح API 23) و بالاتر، این مجوز میتواند هر مجوزی باشد که در مانیفست برنامه اعلام شده است. در دستگاههای دارای Android نسخه 5.1 (سطح API 22) و پایینتر، باید مجوز اختیاری تعریف شده توسط برنامه باشد. |
revoke package_name permission | لغو مجوز از یک برنامه در دستگاههای دارای Android نسخه 6.0 (سطح API 23) و بالاتر، این مجوز میتواند هر مجوزی باشد که در مانیفست برنامه اعلام شده است. در دستگاههای دارای Android نسخه 5.1 (سطح API 22) و پایینتر، باید مجوز اختیاری تعریف شده توسط برنامه باشد. |
set-install-location location | محل نصب پیش فرض را تغییر دهید. مقادیر مکان:
توجه: این فقط برای رفع اشکال در نظر گرفته شده است. استفاده از این می تواند باعث خرابی برنامه ها و سایر رفتارهای نامطلوب شود. |
get-install-location | مکان نصب فعلی را برمیگرداند. مقادیر برگشتی:
|
set-permission-enforced permission [true | false] | مشخص کنید که آیا مجوز داده شده باید اجرا شود یا خیر. |
trim-caches desired_free_space | برای رسیدن به فضای خالی داده شده، فایل های کش را کوتاه کنید. |
create-user user_name | یک کاربر جدید با user_name ایجاد کنید و شناسه کاربری جدید کاربر را چاپ کنید. |
remove-user user_id | کاربر با user_id داده شده را حذف کنید و تمام داده های مرتبط با آن کاربر را حذف کنید |
get-max-users | حداکثر تعداد کاربران پشتیبانی شده توسط دستگاه را چاپ کنید. |
get-app-links [ options ] [ package ] | وضعیت تأیید دامنه را برای package داده شده یا برای همه بستهها در صورتی که هیچ کدام مشخص نشده است چاپ کنید. کدهای ایالتی به صورت زیر تعریف می شوند:
گزینه ها عبارتند از:
|
reset-app-links [ options ] [ package ] | وضعیت تأیید دامنه را برای بسته داده شده بازنشانی کنید، یا برای همه بسته ها اگر هیچ کدام مشخص نشده باشد.
گزینه ها عبارتند از:
|
verify-app-links [ --re-verify ] [ package ] | یک درخواست تأیید برای package داده شده، یا برای همه بستهها در صورتی که هیچ کدام مشخص نشده است، پخش کنید. فقط در صورتی ارسال می شود که بسته قبلاً پاسخی ثبت نکرده باشد.
|
set-app-links [--package package ] state domains | به صورت دستی وضعیت یک دامنه را برای یک بسته تنظیم کنید. دامنه باید توسط بسته به عنوان autoVerify اعلام شود تا این کار کار کند. این دستور برای دامنه هایی که نمی توانند اعمال شوند، خرابی را گزارش نمی کند.
|
set-app-links-user-selection --user user_id [--package package ] enabled domains | وضعیت انتخاب کاربر میزبان را برای یک بسته به صورت دستی تنظیم کنید. برای این کار، دامنه باید توسط بسته اعلام شود. این دستور برای دامنه هایی که نمی توانند اعمال شوند، خرابی را گزارش نمی کند.
|
set-app-links-user-selection --user user_id [--package package ] enabled domains | وضعیت انتخاب کاربر میزبان را برای یک بسته به صورت دستی تنظیم کنید. برای این کار، دامنه باید توسط بسته اعلام شود. این دستور برای دامنه هایی که نمی توانند اعمال شوند، خرابی را گزارش نمی کند.
|
set-app-links-allowed --user user_id [--package package ] allowed | تنظیم کنترل خودکار پیوند را برای یک بسته تغییر دهید.
|
get-app-link-owners --user user_id [--package package ] domains | دارندگان یک دامنه خاص برای یک کاربر معین را با اولویت کم تا بالا چاپ کنید.
|
تماس با مدیر خط مشی دستگاه ( dpm
)
برای کمک به توسعه و آزمایش برنامه های مدیریت دستگاه خود، دستوراتی را به ابزار مدیریت خط مشی دستگاه ( dpm
) صادر کنید. از این ابزار برای کنترل برنامه مدیریت فعال یا تغییر دادههای وضعیت خطمشی در دستگاه استفاده کنید.
در حالی که در یک پوسته، نحو dpm
به صورت زیر است:
dpm command
همچنین میتوانید دستور مدیر سیاست دستگاه را مستقیماً از adb
بدون وارد کردن پوسته راه دور صادر کنید:
adb shell dpm command
فرمان | توضیحات |
---|---|
set-active-admin [ options ] component | component به عنوان مدیر فعال تنظیم می کند. گزینه ها عبارتند از:
|
set-profile-owner [ options ] component | component به عنوان مدیر فعال و بسته آن را به عنوان مالک نمایه برای یک کاربر موجود تنظیم کنید. گزینه ها عبارتند از:
|
set-device-owner [ options ] component | component به عنوان مدیر فعال و بسته آن را به عنوان مالک دستگاه تنظیم کنید. گزینه ها عبارتند از:
|
remove-active-admin [ options ] component | یک ادمین فعال را غیرفعال کنید. برنامه باید android:testOnly در مانیفست اعلام کند. این دستور همچنین صاحبان دستگاه و پروفایل را حذف می کند.گزینه ها عبارتند از:
|
clear-freeze-period-record | سابقه دستگاه از دورههای توقف قبلی تنظیم شده برای بهروزرسانیهای OTA سیستم را پاک کنید. این برای جلوگیری از محدودیتهای زمانبندی دستگاه هنگام توسعه برنامههایی که دورههای توقف را مدیریت میکنند مفید است. به مدیریت به روز رسانی های سیستم مراجعه کنید. در دستگاههای دارای Android 9.0 (سطح API 28) و بالاتر پشتیبانی میشود. |
force-network-logs | سیستم را مجبور کنید تا هرگونه گزارش شبکه موجود را برای بازیابی توسط DPC آماده کند. اگر گزارشهای اتصال یا DNS موجود باشد، DPC پاسخ تماس onNetworkLogsAvailable() را دریافت میکند. گزارش فعالیت شبکه را ببینید.این دستور با نرخ محدود است. در دستگاههای دارای Android 9.0 (سطح API 28) و بالاتر پشتیبانی میشود. |
force-security-logs | سیستم را مجبور کنید تا هرگونه گزارش امنیتی موجود را در دسترس DPC قرار دهد. اگر گزارشهای موجود وجود داشته باشد، DPC پاسخ تماس onSecurityLogsAvailable() را دریافت میکند. به گزارش فعالیت دستگاه سازمانی مراجعه کنید.این دستور با نرخ محدود است. در دستگاههای دارای Android 9.0 (سطح API 28) و بالاتر پشتیبانی میشود. |
اسکرین شات بگیرید
دستور screencap
یک ابزار پوسته برای گرفتن اسکرین شات از نمایشگر دستگاه است.
در حالی که در یک پوسته، نحو screencap
به این صورت است:
screencap filename
برای استفاده از screencap
از خط فرمان، موارد زیر را وارد کنید:
adb shell screencap /sdcard/screen.png
در اینجا یک نمونه جلسه اسکرین شات، با استفاده از پوسته adb
برای گرفتن عکس از صفحه و دستور pull
برای دانلود فایل از دستگاه آورده شده است:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
یک ویدیو ضبط کنید
دستور screenrecord
یک ابزار پوسته برای ضبط نمایش دستگاه های دارای Android 4.4 (سطح API 19) و بالاتر است. ابزار فعالیت صفحه نمایش را در یک فایل MPEG-4 ثبت می کند. شما می توانید از این فایل برای ایجاد فیلم های تبلیغاتی یا آموزشی یا برای رفع اشکال و تست استفاده کنید.
در یک پوسته، از نحو زیر استفاده کنید:
screenrecord [options] filename
برای استفاده از screenrecord
از خط فرمان، موارد زیر را وارد کنید:
adb shell screenrecord /sdcard/demo.mp4
ضبط صفحه را با فشار دادن Control+C متوقف کنید. در غیر این صورت، ضبط به طور خودکار در سه دقیقه یا محدودیت زمانی تعیین شده توسط --time-limit
متوقف می شود.
برای شروع ضبط صفحه دستگاه خود، دستور screenrecord
را برای ضبط ویدیو اجرا کنید. سپس، دستور pull
را اجرا کنید تا ویدیو را از دستگاه به کامپیوتر میزبان دانلود کنید. در اینجا یک نمونه جلسه ضبط است:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
ابزار screenrecord
میتواند با هر رزولوشن و نرخ بیتی که درخواست میکنید، ضبط کند، در حالی که نسبت ابعاد نمایشگر دستگاه را حفظ میکند. این ابزار به طور پیشفرض با وضوح و جهت نمایش اصلی، با حداکثر طول سه دقیقه ضبط میکند.
محدودیت های ابزار screenrecord
:
- صدا با فایل ویدئویی ضبط نمی شود.
- ضبط ویدیو برای دستگاههای دارای سیستم عامل Wear OS در دسترس نیست.
- برخی از دستگاه ها ممکن است نتوانند با وضوح صفحه نمایش اصلی خود ضبط کنند. اگر در ضبط صفحه با مشکل مواجه شدید، سعی کنید از وضوح صفحه نمایش کمتری استفاده کنید.
- چرخش صفحه در حین ضبط پشتیبانی نمی شود. اگر صفحه در حین ضبط بچرخد، مقداری از صفحه در هنگام ضبط قطع می شود.
گزینه ها | توضیحات |
---|---|
--help | نمایش دستور دستور و گزینه ها |
--size width x height | اندازه ویدیو را تنظیم کنید: 1280x720 . مقدار پیش فرض رزولوشن صفحه نمایش اصلی دستگاه (در صورت پشتیبانی)، 1280x720 در غیر این صورت است. برای بهترین نتایج، از اندازه ای استفاده کنید که توسط رمزگذار کدگذاری ویدیوی پیشرفته (AVC) دستگاه شما پشتیبانی می شود. |
--bit-rate rate | نرخ بیت ویدیو را بر حسب مگابیت بر ثانیه تنظیم کنید. مقدار پیش فرض 20 مگابیت بر ثانیه است. برای بهبود کیفیت ویدیو میتوانید نرخ بیت را افزایش دهید، اما انجام این کار باعث میشود فایلهای فیلم بزرگتر شوند. مثال زیر نرخ بیت ضبط را روی 6 مگابیت بر ثانیه تنظیم می کند: screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time | حداکثر زمان ضبط را بر حسب ثانیه تنظیم کنید. مقدار پیش فرض و حداکثر 180 (3 دقیقه) است. |
--rotate | خروجی را 90 درجه بچرخانید. این ویژگی آزمایشی است. |
--verbose | نمایش اطلاعات گزارش در صفحه خط فرمان. اگر این گزینه را تنظیم نکنید، ابزار در حین اجرا هیچ اطلاعاتی را نمایش نمی دهد. |
نمایههای ART را برای برنامهها بخوانید
با شروع Android 7.0 (سطح API 24)، Android Runtime (ART) نمایه های اجرایی برنامه های نصب شده را جمع آوری می کند، که برای بهینه سازی عملکرد برنامه استفاده می شود. نمایههای جمعآوریشده را بررسی کنید تا بفهمید کدام روشها اغلب اجرا میشوند و کدام کلاسها در هنگام راهاندازی برنامه استفاده میشوند.
توجه: بازیابی نام فایل نمایه اجرا فقط در صورتی امکان پذیر است که به سیستم فایل، به عنوان مثال، در یک شبیه ساز، دسترسی ریشه داشته باشید.
برای تولید یک فرم متنی از اطلاعات پروفایل، از دستور زیر استفاده کنید:
adb shell cmd package dump-profiles package
برای بازیابی فایل تولید شده، از:
adb pull /data/misc/profman/package.prof.txt
دستگاه های تست را بازنشانی کنید
اگر برنامه خود را در چندین دستگاه آزمایشی آزمایش میکنید، ممکن است بازنشانی دستگاهتان در بین آزمایشها مفید باشد، برای مثال، برای حذف دادههای کاربر و بازنشانی محیط آزمایش. میتوانید با استفاده از دستور testharness
adb
shell یک دستگاه آزمایشی دارای Android 10 (سطح API 29) یا بالاتر را به تنظیمات کارخانه بازنشانی کنید، همانطور که نشان داده شده است:
adb shell cmd testharness enable
هنگام بازیابی دستگاه با استفاده از testharness
، دستگاه به طور خودکار از کلید RSA نسخه پشتیبان تهیه می کند که امکان اشکال زدایی را از طریق ایستگاه کاری فعلی در یک مکان ثابت فراهم می کند. یعنی پس از ریست شدن دستگاه، ایستگاه کاری می تواند بدون ثبت دستی کلید جدید، به اشکال زدایی و صدور دستورات adb
به دستگاه ادامه دهد.
علاوه بر این، برای کمک به آسانتر و ایمنتر کردن آزمایش برنامهتان، استفاده از testharness
برای بازیابی دستگاه، تنظیمات دستگاه زیر را نیز تغییر میدهد:
- دستگاه تنظیمات سیستم خاصی را تنظیم می کند تا جادوگران راه اندازی اولیه دستگاه ظاهر نشوند. یعنی دستگاه وارد حالتی می شود که می توانید به سرعت برنامه خود را نصب، اشکال زدایی و آزمایش کنید.
- تنظیمات:
- صفحه قفل را غیرفعال می کند.
- هشدارهای اضطراری را غیرفعال می کند.
- همگامسازی خودکار حسابها را غیرفعال میکند.
- به روز رسانی خودکار سیستم را غیرفعال می کند.
- دیگر:
- برنامه های امنیتی از پیش نصب شده را غیرفعال می کند.
اگر برنامه شما نیاز به شناسایی و تطبیق با تنظیمات پیشفرض فرمان testharness
دارد، از ActivityManager.isRunningInUserTestHarness()
استفاده کنید.
sqlite
sqlite3
برنامه خط فرمان sqlite
را برای بررسی پایگاه داده های SQLite راه اندازی می کند. این شامل دستوراتی مانند .dump
برای چاپ محتویات یک جدول و .schema
برای چاپ دستور SQL CREATE
برای یک جدول موجود است. شما همچنین می توانید دستورات SQLite را از خط فرمان اجرا کنید، همانطور که نشان داده شده است:
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
توجه: دسترسی به پایگاه داده SQLite تنها در صورتی امکان پذیر است که به سیستم فایل، به عنوان مثال، در یک شبیه ساز، دسترسی ریشه داشته باشید.
برای اطلاعات بیشتر، به مستندات خط فرمان sqlite3
مراجعه کنید.
adb USB backends
سرور adb می تواند از طریق دو پشته با پشته USB تعامل داشته باشد. میتواند از پشتیبان اصلی سیستمعامل (ویندوز، لینوکس یا macOS) استفاده کند یا میتواند از باطن libusb
استفاده کند. برخی از ویژگیها، مانند attach
، detach
، و تشخیص سرعت USB، فقط در صورت استفاده از باطن libusb
در دسترس هستند.
می توانید با استفاده از متغیر محیطی ADB_LIBUSB
یک Backend انتخاب کنید. اگر تنظیم نشده باشد، adb از backend پیش فرض خود استفاده می کند. رفتار پیش فرض در بین سیستم عامل ها متفاوت است. با شروع نسخه ADB v34 ، باطن liubusb
به طور پیشفرض در تمام سیستمعاملها به جز ویندوز استفاده میشود، جایی که باطن اصلی بهطور پیشفرض استفاده میشود. اگر ADB_LIBUSB
تنظیم شده باشد، تعیین می کند که از backend اصلی یا libusb
استفاده شود. برای اطلاعات بیشتر در مورد متغیرهای محیط adb به صفحه راهنمای adb مراجعه کنید.
adb mDNS backends
ADB می تواند از پروتکل multicast DNS برای اتصال خودکار سرور و دستگاه ها استفاده کند. سرور ADB با دو پشتیبان، Bonjour (mdnsResponder اپل) و Openscreen عرضه می شود.
باطن Bonjour به یک دیمون نیاز دارد تا روی دستگاه میزبان اجرا شود. در macOS، دیمون داخلی اپل همیشه در حال اجرا است، اما در ویندوز و لینوکس، کاربر باید مطمئن شود که دیمون mdnsd
فعال است. اگر دستور adb mdns check
خطایی را برمیگرداند، احتمالاً ADB از باطن Bonjour استفاده میکند اما هیچ شبح Bonjour در حال اجرا نیست.
پشتیبان Openscreen برای اجرا شدن روی دستگاه نیازی به دیمون ندارد. پشتیبانی از باطن صفحه باز در macOS از نسخه ADB نسخه 35 شروع می شود. ویندوز و لینوکس در نسخه ADB نسخه 34 پشتیبانی می شوند.
به طور پیش فرض ADB از باطن Bonjour استفاده می کند. این رفتار را می توان با استفاده از متغیر محیطی ADB_MDNS_OPENSCREEN
(بر روی 1
یا 0
تنظیم کرد) تغییر داد. برای جزئیات بیشتر به صفحه راهنمای ADB مراجعه کنید.