ADB (Android Debug Bridge) — یک ابزار کنسولی چندمنظوره است که جزء Android SDK میباشد. این ابزار به کامپیوتر اجازه میدهد مستقیماً با دستگاه Android از طریق کابل USB یا Wi-Fi ارتباط برقرار کند. با استفاده از ADB میتوان برنامهها را نصب و حذف کرد، فایلها را کپی کرد، دستورات shell را اجرا کرد، لاگهای سیستمی را مشاهده کرد، اسکرینشات و ضبط صفحه گرفت، تنظیمات را مدیریت کرد و حتی تستهای خودکار را انجام داد. این ابزار برای توسعهدهندگان، تستکنندگان و علاقهمندانی که میخواهند کنترل کامل دستگاه را داشته باشند، ضروری است.
نکات اصلی
Android Debug Bridge (ADB) — یک برنامه کلاینت-سرور است که از سه مؤلفه تشکیل شده است: کلاینت (روی کامپیوتر اجرا میشود)، سرور (فرآیند پسزمینه روی کامپیوتر) و دیمن adbd (روی خود دستگاه Android اجرا میشود). هنگامی که توسعهدهنده یا مهندس گوشی هوشمند را به کامپیوتر متصل میکند، ADB یک کانال ارتباطی قابل اعتماد ایجاد میکند که از طریق آن میتوان دستورات، فایلها و دادهها را ارسال کرد.
سناریوهای اصلی استفاده از ADB شامل اشکالزدایی برنامهها روی دستگاه واقعی بدون نیاز به انتشار APK در فروشگاه، استخراج لاگها برای تحلیل خطاها، خودکارسازی تست، پشتیبانگیری از دادهها، فلش کردن تصاویر recovery و دریافت دسترسی root است. حتی اگر کدنویسی نمیکنید، ADB میتواند برای استخراج اسکرینشات از برنامهها، ضبط راهنمای تصویری از صفحه گوشی یا بازیابی دستگاه پس از فلش ناموفق مفید باشد.
پشتیبانی از ADB در تمام بیلدهای رسمی Android از نسخه 2.1 (API 7) به بعد تعبیه شده است. برای کار نیاز به فعال بودن گزینه «اشکالزدایی از طریق USB» در تنظیمات توسعهدهنده است. از Android 4.2 به بعد، در اولین اتصال، دستگاه تأییدیه میخواهد: باید اجازه اشکالزدایی را برای کامپیوتر خاص بر اساس کلید RSA آن صادر کنید.
برای Windows — Platform Tools را از سایت رسمی Google Developers دانلود کنید، آرشیو را در پوشه C:\adb استخراج کنید و این مسیر را به متغیر محیطی PATH اضافه کنید. پس از راهاندازی مجدد ترمینال، دستور adb به صورت سراسری در دسترس خواهد بود.
برای macOS — سادهترین راه نصب ADB از طریق مدیر بسته Homebrew است: brew install android-platform-tools را اجرا کنید. تمام وابستگیها به طور خودکار حل میشوند.
برای Linux — در توزیعهای مبتنی بر Debian / Ubuntu: sudo apt install adb. پس از نصب، کاربر را به گروه plugdev اضافه کنید: sudo usermod -aG plugdev $USER و دوباره وارد شوید تا ADB به دستگاههای USB دسترسی داشته باشد.
میتوان صحت نصب را با دستور adb version بررسی کرد. اگر در پاسخ شماره نسخه Android Debug Bridge نمایش داده شود، ابزار آماده کار است.
اولین اتصال همیشه با دستور adb devices شروع میشود. این دستور لیست دستگاههای متصل و وضعیت آنها را نمایش میدهد. اگر دستگاه به صورت unauthorized نمایش داده میشود، صفحه را قفلگشایی کرده و اشکالزدایی را روی تلفن تأیید کنید.
adb devices
List of devices attached
emulator-5554 device
0123456789ABCD device
نصب برنامه — یکی از رایجترین عملیاتها. فقط کافی است مسیر فایل APK را مشخص کنید:
adb install C:\apps\myapp.apk
اگر برنامه قبلاً نصب شده است اما نیاز به جایگزینی با نسخه بهروز دارد، پرچم -r (replace) را اضافه کنید:
adb install -r C:\apps\myapp-v2.apk
حذف برنامه با نام بسته انجام میشود:
adb uninstall com.example.myapp
کپی فایلها — adb pull فایل را از دستگاه به کامپیوتر استخراج میکند، adb push فایل را به دستگاه بارگذاری میکند:
adb pull /sdcard/DCIM/screenshot.png .
adb push myfile.txt /sdcard/Documents/
Shell تعاملی — دستور adb shell یک پوسته دستوری دستگاه را باز میکند. در داخل آن میتوان دستورات استاندارد Linux را اجرا کرد: ls، ps، top، dumpsys، pm، am و دیگران.
adb shell
tissot_sprout:/ $ ls -la /sdcard/
tissot_sprout:/ $ ps | grep com.android.chrome
راهاندازی فعالیت از طریق ADB به شما امکان میدهد هر برنامه یا صفحهای را بدون جستجوی دستی آیکون باز کنید:
adb shell am start -n com.android.chrome/com.google.android.apps.chrome.Main
Logcat — سیستم لاگگیری Android است که پیامهای برنامهها، سرویسهای سیستمی و هسته را جمعآوری میکند. این ابزار در اشکالزدایی ضروری است: با لاگها میتوان فهمید چرا برنامه کرش کرد، کدام متد باعث استثنا شد یا یک عملیات خاص چقدر طول میکشد.
اجرای ساده بدون فیلتر — adb logcat. جریان لاگ بینهایت است، برای توقف Ctrl+C را فشار دهید. برای فیلتر کردن پیامها بر اساس تگ، از پارامتر -s استفاده کنید:
adb logcat -s MainActivity:V
سطوح اهمیت لاگگیری (از دقیقترین به بحرانی): V (Verbose)، D (Debug)، I (Info)، W (Warning)، E (Error)، F (Fatal). ترکیب تگ و سطح به شما امکان میدهد فقط پیامهای مورد نیاز را جدا کنید.
برای پاک کردن بافر انباشته قبل از تست:
adb logcat -c
و برای ذخیره لاگها در فایل:
adb logcat -d > app_logs.txt
پرچم -d (dump) بافر فعلی را نمایش میدهد و کار را بدون مسدود کردن ترمینال پایان میدهد. این برای اسکریپتهای خودکارسازی راحت است.
اسکرینشات با دستور adb shell screencap گرفته میشود. نتیجه در یک فایل ذخیره میشود که سپس از طریق adb pull استخراج میگردد:
adb shell screencap /sdcard/screen.png
adb pull /sdcard/screen.png
میتوان هر دو عملیات را با استفاده از جانشینی و لوله در یک خط ترکیب کرد. در عمل این کار ایجاد مستندات و گزارشهای تست را سرعت میبخشد.
ضبط صفحه در Android 4.4+ (API 19) در دسترس است. مدت زمان پیشفرض ضبط — 180 ثانیه، نرخ بیت — 4 مگابیت در ثانیه. دستور اصلی:
adb shell screenrecord /sdcard/demo.mp4
برای توقف ضبط Ctrl+C را فشار دهید. وضوح ویدیو با وضوح صفحه دستگاه مطابقت دارد، اما از 1080p تجاوز نمیکند. برای تغییر نرخ بیت، --bit-rate را مشخص کنید:
adb shell screenrecord --bit-rate 8000000 /sdcard/demo.mp4
دستورات تشخیصی: adb shell dumpsys وضعیت تمام سرویسهای سیستمی را نمایش میدهد. برای دریافت اطلاعات فقط در مورد باتری:
adb shell dumpsys battery
لیست بستههای نصب شده را میتوان از طریق Package Manager دریافت کرد:
adb shell pm list packages
بازنشانی تنظیمات برنامه (معادل پاک کردن دادهها در تنظیمات):
adb shell pm clear com.example.myapp
اشکالزدایی Wi-Fi نیاز به نگهداشتن دستگاه متصل از طریق USB را برطرف میکند. مطمئن شوید کامپیوتر و دستگاه در یک شبکه هستند. ابتدا adb tcpip 5555 را اجرا کنید، USB را جدا کنید، سپس از طریق IP متصل شوید:
adb tcpip 5555
adb connect 192.168.1.100:5555
اگر آدرس IP دستگاه ناشناخته است، قبل از جدا کردن کابل آن را از طریق adb shell ip addr show wlan0 بیابید.
پشتیبانگیری از دادهها برنامه یا کل سیستم بدون root انجام میشود:
adb backup -apk -shared -all -system -f mybackup.ab
بازیابی از پشتیبان:
adb restore mybackup.ab
شبیهسازی ورود — دستور adb shell input به شما امکان میدهد لمس، سوایپ، فشار دادن کلیدها و ورود متن را شبیهسازی کنید. این اساس خودکارسازی تستهای UI بدون فریمورکهای اضافی است:
adb shell input tap 500 1000
adb shell input swipe 300 500 800 500
adb shell input text "Hello, ADB!"
راهاندازی مجدد در حالتهای مختلف:
adb reboot # راهاندازی مجدد معمولی
adb reboot recovery # حالت بازیابی
adb reboot bootloader # بوتلودر (fastboot)
حالت fastboot دسترسی به فلش کردن تصاویر، باز کردن قفل بوتلودر و نصب recovery سفارشی را فراهم میکند.
وقتی چند دستگاه یا شبیهساز همزمان متصل هستند، ADB نیاز به مشخص کردن شماره سریال خاص دارد. دستور adb devices تمام دستگاههای متصل را با شماره سریال آنها نمایش میدهد.
برای آدرسدهی دستور به دستگاه خاص از پرچم -s استفاده کنید:
adb -s 0123456789ABCD install myapp.apk
اگر دستگاه یک است، میتوان بدون پرچم کار کرد. با این حال در محیط CI که چند شبیهساز همزمان اجرا میشوند، مشخص کردن شماره سریال الزامی است.
کشتن سرور ADB — اگر دستگاه دیگر شناسایی نمیشود یا خطا میدهد، راهاندازی مجدد سرور کمک میکند:
adb kill-server
adb start-server
پس از آن adb devices را اجرا کنید — سرور دوباره راهاندازی میشود و درخواستها را به دیمنهای دستگاه هدایت میکند.
| دستور | توضیح |
|---|---|
| adb devices | نمایش لیست دستگاههای متصل |
| adb install |
نصب فایل APK روی دستگاه |
| adb uninstall |
حذف برنامه با نام بسته |
| adb shell | راهاندازی پوسته دستوری تعاملی |
| adb push |
کپی فایل از کامپیوتر به دستگاه |
| adb pull |
کپی فایل از دستگاه به کامپیوتر |
| adb logcat | مشاهده لاگهای سیستم و برنامهها |
| adb shell screencap | ایجاد اسکرینشات از صفحه |
| adb shell screenrecord | ضبط ویدیو از صفحه |
| adb reboot | راهاندازی مجدد دستگاه |
| adb tcpip 5555 | تغییر ADB به حالت TCP/IP برای Wi-Fi |
| adb connect |
اتصال به دستگاه از طریق Wi-Fi |
سؤالات متداول
«تنظیمات» → «درباره تلفن» را باز کنید و 7 بار روی «شماره بیلد» ضربه بزنید. به منوی اصلی تنظیمات برگردید — بخش «برای توسعهدهندگان» ظاهر میشود. داخل آن «اشکالزدایی از طریق USB» را فعال کنید. از Android 4.2 به بعد، در اولین اتصال به کامپیوتر باید کلید RSA اشکالزدایی را روی صفحه دستگاه تأیید کنید.
دستگاه به کامپیوتر اعتماد ندارد. صفحه تلفن را قفلگشایی کنید، وقتی دیالوگ «آیا اجازه اشکالزدایی از طریق USB داده شود؟» ظاهر شد، گزینه «همیشه برای این کامپیوتر مجاز باشد» را علامت بزنید و «OK» را فشار دهید. اگر دیالوگ ظاهر نشد، کابل USB را جدا کرده و دوباره وصل کنید یا adb kill-server && adb start-server را اجرا کنید.
ADB نیاز به تعامل با صفحه ندارد. دستگاه را از طریق USB متصل کنید، صبر کنید تا در adb devices ظاهر شود (اگر اشکالزدایی قبلاً فعال بود) و adb install <مسیر_apk> را اجرا کنید. برای باز کردن برنامه از adb shell am start -n <بسته>/<فعالیت> استفاده کنید. اگر اشکالزدایی قبلاً فعال نشده بود، بازیابی دسترسی بدون صفحه به طور قابل توجهی دشوارتر است — نیاز به recovery سفارشی خواهد بود.
ADB APK را مستقیماً نصب میکند و بررسیهای Google Play Protect را هنگام نصب دور میزند، که این امکان را میدهد برنامهها را قبل از انتشار تست کنید. با این حال، بررسی نهایی کد مخرب همچنان پس از نصب اجرا میشود. ADB نیاز به حساب Google ندارد، که برای کیوسکهای شرکتی و دستگاههای بدون سرویسهای Google مهم است.
بله، اکثریت قریب به اتفاق دستورات ADB بدون root کار میکنند. استثناها — دستوراتی که نیاز به دسترسی به پارتیشنهای سیستمی محافظتشده دارند (مثلاً dump مستقیم پارتیشن boot یا تغییر فایلهای سیستمی). برای کارهای روزمره — نصب برنامهها، لاگگیری، اسکرینشاتها، پشتیبانگیری، شبیهسازی ورود — root لازم نیست.
ADB (Android Debug Bridge) — یک ابزار اساسی برای همه کسانی است که در سطح حرفهای با Android کار میکنند. از نصب پایه برنامهها تا خودکارسازی پیچیده تست و بازیابی دستگاهها — ADB تقریباً هر سناریوی تعامل کامپیوتر با گوشی هوشمند یا تبلت را پوشش میدهد.
با تسلط بر دستورات شرح داده شده در این مقاله، میتوانید با اطمینان دستگاه Android را از طریق ترمینال مدیریت کنید، لاگها را تحلیل کنید، برای مستندات اسکرینشات بگیرید، پشتیبانگیری انجام دهید و فرآیند توسعه را تسریع کنید. تمرین منظم و مطالعه خروجی adb help شما را به یک کاربر ماهر این ابزار قدرتمند تبدیل میکند.
خلاصه
خلاصه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید