ابزار ADB در لینوکس
در این بخش به بررسی ابزار ADB در لینوکس می پردازیم، در دنیای توسعه اندروید و مهندسی معکوس اپلیکیشنها، ابزارها و تکنولوژیهایی وجود دارند که امکان ارتباط، کنترل و مدیریت دستگاههای اندرویدی را از طریق سیستمعاملهایی نظیر لینوکس فراهم میکنند. یکی از کلیدیترین این ابزارها، «ADB» یا Android Debug Bridge است. این ابزار به توسعهدهندگان، تستکنندگان امنیت، و کاربران حرفهای این امکان را میدهد تا دستورات سیستمی را روی دستگاه اندرویدی اجرا کرده، فایلها را منتقل کنند، لاگها را بررسی نمایند و اپلیکیشنها را نصب یا حذف کنند.
استفاده از ADB در لینوکس به دلیل ماهیت آزاد و توسعهپذیر بودن این سیستمعامل، محبوبیت زیادی در بین کاربران فنی دارد. لینوکس بستری مناسب برای تحلیل اپلیکیشنها، انجام تستهای امنیتی، استخراج اطلاعات و حتی مدیریت گوشیهای آسیبدیده است. در این مقاله، بهصورت جامع و کاربردی، نحوه نصب، راهاندازی، و استفاده از ابزار ADB در لینوکس را بررسی خواهیم کرد.
معرفی ADB و عملکرد آن
ADB مخفف Android Debug Bridge است. این ابزار بهعنوان یک رابط خط فرمان عمل میکند که امکان ارتباط با دستگاههای اندرویدی را از طریق کابل USB یا اتصال بیسیم فراهم میسازد. درواقع ADB بهعنوان یک «پل ارتباطی» بین رایانه و دستگاه اندرویدی عمل کرده و به شما اجازه میدهد دستورات متنوعی مانند نصب یا حذف برنامه، انتقال فایل، گرفتن اسکرینشات، راهاندازی مجدد گوشی و موارد بسیار دیگر را اجرا کنید.
ADB از سه جزء اصلی تشکیل شده است:
- Client (کلاینت): در سمت رایانه اجرا میشود و دستورات را از ترمینال دریافت میکند.
- Daemon (سرور محلی): در پسزمینه اجرا شده و ارتباط بین کلاینت و دستگاه اندرویدی را مدیریت میکند.
- Server (روی دستگاه اندرویدی): به دستورات گوش داده و پاسخ میدهد.
این ساختار سهلایه باعث میشود تا ADB بتواند بهصورت کارآمد و بدون وابستگی به رابط گرافیکی، کنترل کامل دستگاه را در اختیار شما قرار دهد.
نصب ADB در لینوکس
نصب ADB در اغلب توزیعهای لینوکسی (مانند Ubuntu، Debian، Fedora و Arch) بسیار ساده است و از طریق مخازن رسمی قابل انجام میباشد.
نصب در توزیعهای Debian-based (مثل Ubuntu)
sudo apt update
sudo apt install android-tools-adb android-tools-fastboot
نصب در Arch Linux
sudo pacman -S android-tools
نصب در Fedora
sudo dnf install android-tools
پس از نصب، با اجرای دستور adb version میتوانید مطمئن شوید که ابزار به درستی نصب شده است.
adb version
# خروجی نمونه:
# Android Debug Bridge version 1.0.41
# Version 31.0.3-7562133
در این مرحله، ADB آماده استفاده است.
اتصال به دستگاه اندرویدی
برای برقراری اتصال، باید گزینه «USB Debugging» را در تنظیمات گوشی فعال کنید:
- وارد بخش Developer Options شوید (در صورت غیرفعال بودن، ۷ بار روی “Build number” در بخش “About Phone” ضربه بزنید).
- گزینه USB Debugging را فعال نمایید.
سپس با اتصال کابل USB و اجرای دستور زیر، اتصال را بررسی کنید:
adb devices
خروجی نمونه:
List of devices attached
AB1234567890device
در صورتی که پیام “unauthorized” مشاهده کردید، باید در گوشی مجوز اتصال را تایید کنید.
برای اتصال بیسیم:
adb tcpip 5555
adb connect <ip-address>:5555
دستورات کاربردی ADB در لینوکس
در این بخش به دستورات پرکاربرد ADB و کاربردهای عملی آنها میپردازیم:
1. نصب و حذف برنامهها
- نصب فایل APK:
adb install myapp.apk
- حذف اپلیکیشن:
adb uninstall com.example.myapp
2. دسترسی به شل دستگاه
adb shell
این دستور ترمینال دستگاه اندرویدی را در اختیار شما قرار میدهد. در این حالت میتوانید دستورات لینوکسی مانند ls, cd, cat و غیره را اجرا کنید.
3. انتقال فایل بین کامپیوتر و گوشی
- از کامپیوتر به گوشی:
adb push file.txt /sdcard/
- از گوشی به کامپیوتر:
adb pull /sdcard/file.txt ./
4. گرفتن اسکرینشات یا ضبط ویدیو
- گرفتن اسکرینشات:
adb shell screencap /sdcard/screenshot.png
adb pull /sdcard/screenshot.png
- ضبط ویدیو:
adb shell screenrecord /sdcard/demo.mp4
adb pull /sdcard/demo.mp4
5. ریبوت و مدیریت بوتلودر
- ریبوت گوشی:
adb reboot
- ریبوت به ریکاوری:
adb reboot recovery
- ریبوت به bootloader:
adb reboot bootloader
استفادههای پیشرفته و امنیتی از ADB
ADB تنها برای توسعهدهندگان نیست؛ بلکه در حوزه تست نفوذ و مهندسی معکوس نیز بهوفور استفاده میشود. برخی از کاربردهای پیشرفته آن عبارتاند از:
- Dump کردن اطلاعات اپلیکیشنها: با استفاده از
adb backupیا ابزارهای دیگر میتوان دادههای داخلی اپلیکیشنها را استخراج کرد. - مهندسی معکوس فایلهای APK: از طریق ADB میتوان فایلهای نصبشده را با
adb pullاستخراج و سپس با ابزارهایی مانند apktool بررسی کرد. - بررسی لاگها و کرشها:
adb logcat
این دستور برای مشاهده لاگهای زنده سیستم اندروید استفاده میشود و در تست امنیت و بررسی رفتار اپلیکیشنها بسیار کاربردی است.
- دسترسی به روت (در صورت روت بودن گوشی):
adb root
adb shell
در حالت روت، دستورات پیشرفتهتری مانند حذف برنامههای سیستمی یا تغییر فایلهای سیستمی ممکن میشود.
حتماً! در ادامه، این تجربه واقعی و مهم بهعنوان یک بخش عملی و کاربردی به محتوای آموزشی ابزار ADB در لینوکس اضافه شده تا خوانندگان بهتر با خطاهای رایج و نحوه رفع آنها آشنا شوند:
حل خطاهای رایج هنگام استفاده از ADB (با تمرکز بر Permission denied)
در هنگام کار با ADB، یکی از خطاهای پرتکرار، پیام زیر است:
adb: error: failed to stat remote object '/mnt/sdcard/...' : Permission denied
این خطا معمولاً در تلاش برای کشیدن فایل از گوشی به کامپیوتر با دستور adb pull رخ میدهد. دلیل اصلی این خطا، استفاده از مسیر نادرست یا ممنوعه توسط ADB است. بهطور خاص، مسیرهای قدیمی مانند /mnt/sdcard/ یا برخی مسیرهای محافظتشده، در نسخههای جدید اندروید دیگر بهصورت پیشفرض قابلدسترسی نیستند.
راهحل عملی
بهجای استفاده از مسیر قدیمی، از مسیر صحیح و استاندارد استفاده کنید:
نمونه خطا:
adb pull /mnt/sdcard/APK/myfile.apk
اصلاحشده:
adb pull /storage/emulated/0/APK/myfile.apk
یا:
adb pull /sdcard/APK/myfile.apk
هر دو مسیر بالا معمولاً به حافظه داخلی دستگاه و فولدرهایی مثل Download، Pictures، APK و … دسترسی دارند، بدون نیاز به دسترسی روت.
نکته فنی مهم
در سیستم فایل اندروید:
| مسیر | توضیح |
|---|---|
/mnt/sdcard/ | در گذشته استفاده میشد، اما اکنون اغلب symbolic link یا حتی مسدود شده است. |
/sdcard/ | بهصورت خودکار به /storage/emulated/0/ هدایت میشود. |
/storage/emulated/0/ | مسیر واقعی حافظه داخلی کاربر فعلی (user 0) است. |
توصیه آموزشی
پیش از اجرای adb pull برای دریافت فایل، میتوانید با استفاده از دستورات زیر مسیر دقیق فایل را تأیید کنید:
adb shell
ls /storage/emulated/0/APK/
یا در حالت کلی:
adb shell find /storage/emulated/0/ -name '*.apk'
در صورتی که فایلی در مسیر data/data/... ذخیره شده باشد، نیاز به دسترسی روت برای استخراج آن دارید.
اجرای یک اپلیکیشن با ADB و بررسی خطا یا کرش آن
1. اجرای اپلیکیشن از طریق ADB
برای اجرای برنامه نصبشده روی گوشی، ابتدا باید نام پکیج و Activity اصلی آن را داشته باشی. برای اجرای مستقیم:
adb shell monkey -p com.example.app -c android.intent.category.LAUNCHER 1
🔹 در این مثال:
com.example.app= نام پکیج اپلیکیشنmonkey= ابزار پیشفرض برای شبیهسازی رویدادها (در اینجا فقط برای اجرای اپ استفاده میکنیم)
2. دریافت نام پکیج اپلیکیشن نصبشده
برای لیست تمام پکیجهای نصبشده:
adb shell pm list packages
برای جستجوی یک اپ خاص (مثلاً شامل کلمه turkiye):
adb shell pm list packages | grep turkiye
3. مشاهده لاگها و خطاها هنگام اجرا (با Logcat)
در یک ترمینال جداگانه، دستور زیر را اجرا کن تا لاگهای سیستم را در لحظه ببینی:
adb logcat
اگر فقط بخوای لاگهای مرتبط با اپ خودت رو ببینی (مثلاً لاگهای مربوط به com.example.app):
adb logcat | grep com.example.app
4. فیلتر کردن کرشها و خطاها (Exception و StackTrace)
برای بررسی دقیق خطاها و کرشها:
adb logcat *:E
این دستور فقط لاگهایی با سطح Error نمایش میده (مثلاً NullPointerException، Crash، ANR و …)
یا اگر میخوای فقط FATAL EXCEPTION ها رو ببینی:
adb logcat | grep -i "FATAL EXCEPTION"
5. نمونه لاگ یک کرش
وقتی اپلیکیشن کرش کنه، لاگهایی مثل زیر میبینی:
FATAL EXCEPTION: main
Process: com.example.app, PID: 12345
java.lang.NullPointerException: Attempt to invoke virtual method '...' on a null object reference
at com.example.app.MainActivity.onCreate(MainActivity.java:42)
🔍 این اطلاعات بهت نشون میده دقیقاً چه خطی در کد باعث کرش شده.
نکات تکمیلی
- میتونی لاگها رو در فایل ذخیره کنی:
adb logcat -d > crash_log.txt
- برای پاککردن لاگها قبل از اجرای برنامه:
adb logcat -c
- میتونی از ابزارهای گرافیکی مثل [Android Studio Logcat Viewer] یا MatLog (روی خود گوشی) استفاده کنی.
ابزار ADB در لینوکس یکی از قویترین و منعطفترین ابزارهای توسعه، مدیریت و تحلیل دستگاههای اندرویدی است. این ابزار نه تنها به توسعهدهندگان کمک میکند تا برنامههای خود را سریعتر و دقیقتر تست کنند، بلکه برای کاربران حرفهای، متخصصان امنیت و علاقهمندان به دنیای اندروید، پلی ارتباطی قدرتمند با گوشی فراهم میسازد.
با یادگیری ADB میتوان به لایههای پنهان سیستم عامل اندروید دسترسی پیدا کرد، اپلیکیشنها را بهتر تحلیل نمود و حتی در فرآیند ریکاوری یا نجات اطلاعات گوشی نیز از آن بهره برد. استفاده صحیح و آگاهانه از این ابزار، بهویژه در محیطهای لینوکسی، شما را به یک کاربر حرفهای در زمینه مدیریت دستگاههای اندرویدی تبدیل میکند.
منابع پیشنهادی برای مطالعه بیشتر:
آیا این مطلب برای شما مفید بود ؟



