Android Debug Bridge (adb)، Android Debug Bridge (adb)

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 یا یک کد جفت شدن با ایستگاه کاری خود جفت کنید. ایستگاه کاری و دستگاه شما باید به یک شبکه بی سیم متصل باشند. برای اتصال به دستگاه خود، مراحل زیر را دنبال کنید:

  1. گزینه های توسعه دهنده را در دستگاه خود فعال کنید .

  2. اندروید استودیو را باز کنید و از منوی تنظیمات اجرا شده ، گزینه Pair Devices Using Wi-Fi را انتخاب کنید.

    منوی کشویی تنظیمات را اجرا کنید
    شکل 1. منوی تنظیمات را اجرا کنید.

    همانطور که در شکل 2 نشان داده شده است، پنجره جفت کردن دستگاه ها از طریق Wi-Fi ظاهر می شود.

    تصویر صفحه‌نمایش جفت دستگاه‌ها از طریق پنجره بازشو Wi-Fi
    شکل 2. پنجره بازشو برای جفت کردن دستگاه ها با استفاده از کد QR یا کد جفت.
  3. در دستگاه خود، روی Wireless debugging ضربه بزنید و دستگاه خود را جفت کنید:

    عکس صفحه‌نمایش تلفن پیکسلی که تنظیمات سیستم‌های اشکال‌زدایی بی‌سیم را نشان می‌دهد.
    شکل 3. تصویری از تنظیمات اشکال زدایی بی سیم در تلفن Google Pixel.
    1. برای جفت کردن دستگاه خود با یک کد QR، جفت کردن دستگاه با کد QR را انتخاب کنید و کد QR به دست آمده از دستگاه های جفت از طریق Wi-Fi را که در شکل 2 نشان داده شده است اسکن کنید.

    2. برای جفت کردن دستگاه خود با کد جفت‌سازی، از پنجره بازشو جفت کردن دستگاه‌ها از طریق Wi-Fi، جفت کردن دستگاه با کد جفت‌سازی را انتخاب کنید. در دستگاه خود، جفت کردن با استفاده از کد جفت سازی را انتخاب کنید و کد شش رقمی ارائه شده را یادداشت کنید. هنگامی که دستگاه شما در پنجره جفت کردن دستگاه ها از طریق Wi-Fi ظاهر شد، می توانید جفت شدن را انتخاب کنید و کد شش رقمی نشان داده شده در دستگاه خود را وارد کنید.

      اسکرین شات نمونه وارد کردن پین کد
      شکل 4. نمونه ای از ورود کد شش رقمی.
  4. پس از جفت شدن دستگاه، می توانید سعی کنید برنامه خود را در دستگاه خود مستقر کنید.

    برای جفت کردن دستگاه دیگری یا فراموش کردن دستگاه فعلی در ایستگاه کاری خود، به «اشکال‌زدایی بی‌سیم» در دستگاه خود بروید. روی نام ایستگاه کاری خود در قسمت Paired devices ضربه بزنید و Forget را انتخاب کنید.

  5. اگر می‌خواهید به سرعت اشکال‌زدایی بی‌سیم را روشن و خاموش کنید، می‌توانید از کاشی‌های برنامه‌نویس تنظیمات سریع برای اشکال‌زدایی بی‌سیم استفاده کنید، که در گزینه‌های برنامه‌نویس > کاشی‌های توسعه تنظیمات سریع یافت می‌شود.

    نماگرفت کاشی‌های برنامه‌نویس تنظیمات سریع از تلفن Google Pixel.
    شکل 5. تنظیمات Quick Setting developer tiles به شما امکان می دهد به سرعت اشکال زدایی بی سیم را روشن و خاموش کنید.

اتصال Wi-Fi با استفاده از خط فرمان

از طرف دیگر، برای اتصال به دستگاه خود با استفاده از خط فرمان بدون Android Studio، این مراحل را دنبال کنید:

  1. همانطور که قبلا توضیح داده شد گزینه های توسعه دهنده را در دستگاه خود فعال کنید.

  2. همانطور که قبلا توضیح داده شد، اشکال زدایی بی سیم را در دستگاه خود فعال کنید.

  3. در ایستگاه کاری خود، یک پنجره ترمینال را باز کنید و به android_sdk/platform-tools بروید.

  4. آدرس IP، شماره پورت و کد جفت شدن خود را با انتخاب جفت کردن دستگاه با کد جفت شدن پیدا کنید. به آدرس IP، شماره پورت و کد جفت‌سازی نمایش داده شده روی دستگاه توجه داشته باشید.

  5. در ترمینال ایستگاه کاری خود، adb pair ipaddr:port اجرا کنید. از آدرس IP و شماره پورت بالا استفاده کنید.

  6. هنگامی که از شما خواسته شد، مانند تصویر زیر، کد جفت شدن را وارد کنید.

    تصویری از جفت شدن در خط فرمان.
    شکل 6. یک پیام نشان می دهد که دستگاه شما با موفقیت جفت شده است.

مشکلات اتصال بی سیم را حل کنید

اگر در اتصال بی سیم به دستگاه خود مشکل دارید، مراحل عیب یابی زیر را برای حل این مشکل امتحان کنید.

بررسی کنید که آیا ایستگاه کاری و دستگاه شما با پیش نیازها مطابقت دارند یا خیر

بررسی کنید که ایستگاه کاری و دستگاه دارای پیش نیازهای ذکر شده در ابتدای این بخش باشند.

سایر مسائل شناخته شده را بررسی کنید

در زیر لیستی از مشکلات شناخته شده فعلی در مورد اشکال زدایی بی سیم (با 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 دنبال کنید:

  1. دستگاه Android و رایانه میزبان adb خود را به یک شبکه Wi-Fi مشترک وصل کنید.
  2. توجه: مراقب باشید که همه نقاط دسترسی مناسب نیستند. ممکن است لازم باشد از یک نقطه دسترسی استفاده کنید که فایروال آن برای پشتیبانی از adb به درستی پیکربندی شده است.

  3. دستگاه را با کابل USB به کامپیوتر میزبان وصل کنید.
  4. دستگاه مورد نظر را برای گوش دادن به اتصال TCP/IP در پورت 5555 تنظیم کنید:
    adb tcpip 5555
    
  5. کابل USB را از دستگاه مورد نظر جدا کنید.
  6. آدرس IP دستگاه Android را پیدا کنید. برای مثال، در یک دستگاه Nexus، می‌توانید آدرس IP را در تنظیمات > درباره رایانه لوحی (یا درباره تلفن ) > وضعیت > آدرس IP پیدا کنید.
  7. با آدرس IP آن به دستگاه متصل شوید:
    adb connect device_ip_address:5555
    
  8. تأیید کنید که رایانه میزبان شما به دستگاه مورد نظر متصل است:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

دستگاه شما اکنون به 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 باید دستگاه مورد نظر را مشخص کنید. برای تعیین هدف، مراحل زیر را دنبال کنید:

  1. برای بدست آوردن شماره سریال هدف از دستور devices استفاده کنید.
  2. پس از بدست آوردن شماره سریال، از گزینه -s با دستورات adb برای تعیین شماره سریال استفاده کنید.
    1. اگر می‌خواهید دستورات adb زیادی صادر کنید، می‌توانید متغیر محیطی $ANDROID_SERIAL را طوری تنظیم کنید که شامل شماره سریال باشد.
    2. اگر از -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

جدول 1. دستورات مدیر فعالیت موجود

فرمان توضیحات
start [ options ] intent یک Activity مشخص شده توسط intent را شروع کنید.

برای آرگومان های قصد، مشخصات را ببینید.

گزینه ها عبارتند از:

  • -D : اشکال زدایی را فعال کنید.
  • -W : منتظر بمانید تا راه اندازی کامل شود.
  • --start-profiler file : نمایه ساز را شروع کرده و نتایج را به file ارسال کنید.
  • -P file : مانند --start-profiler است، اما وقتی برنامه بیکار می شود، نمایه سازی متوقف می شود.
  • -R count : count دفعات راه اندازی فعالیت را تکرار کنید. قبل از هر تکرار، فعالیت برتر به پایان می رسد.
  • -S : قبل از شروع فعالیت، برنامه هدف را اجباری متوقف کنید.
  • --opengl-trace : ردیابی توابع OpenGL را فعال کنید.
  • --user user_id | current : مشخص کنید که کدام کاربر به عنوان اجرا شود. اگر مشخص نشده است، به عنوان کاربر فعلی اجرا کنید.
startservice [ options ] intent Service مشخص شده توسط intent را شروع کنید.

برای آرگومان های قصد، مشخصات را ببینید.

گزینه ها عبارتند از:

  • --user user_id | current : مشخص کنید که به عنوان کدام کاربر اجرا شود. اگر مشخص نشده است، به عنوان کاربر فعلی اجرا کنید.
force-stop package تمام موارد مرتبط با package اجباری متوقف کنید.
kill [ options ] package تمام فرآیندهای مرتبط با package را از بین ببرید. این دستور فقط فرآیندهایی را می‌کشد که از بین بردن آنها بی‌خطر بوده و بر تجربه کاربر تأثیری نخواهد داشت.

گزینه ها عبارتند از:

  • --user user_id | all | current : مشخص کنید که کدام فرآیند کاربر را بکشد. اگر مشخص نیست، تمام فرآیندهای کاربران را بکشید.
kill-all تمام فرآیندهای پس زمینه را بکشید.
broadcast [ options ] intent یک قصد پخش صادر کنید.

برای آرگومان های قصد، مشخصات را ببینید.

گزینه ها عبارتند از:

  • [--user user_id | all | current] : مشخص کنید که به کدام کاربر ارسال شود. اگر مشخص نیست، برای همه کاربران ارسال کنید.
instrument [ options ] component نظارت را با یک نمونه Instrumentation شروع کنید. معمولاً component هدف فرم test_package / runner_class است.

گزینه ها عبارتند از:

  • -r : نتایج خام را چاپ کنید (در غیر این صورت report_key_streamresult را رمزگشایی کنید). از [-e perf true] برای تولید خروجی خام برای اندازه‌گیری عملکرد استفاده کنید.
  • -e name value : name آرگومان را روی value قرار دهید. برای دونده های آزمایشی، یک فرم رایج -e testrunner_flag value [, value ...] است.
  • -p file : داده های پروفایل را در file بنویسید.
  • -w : قبل از بازگشت منتظر بمانید تا ابزار دقیق تمام شود. برای دوندگان آزمون مورد نیاز است.
  • --no-window-animation : انیمیشن های پنجره را هنگام اجرا خاموش کنید.
  • --user user_id | current : تعیین کنید که ابزار دقیق کاربر در کدام دستگاه اجرا شود. اگر مشخص نیست، در کاربر فعلی اجرا شود.
profile start process file نمایه ساز را در process شروع کنید، نتایج را در file بنویسید.
profile stop process پروفیلر process متوقف کنید.
dumpheap [ options ] process file انبوه process تخلیه کنید، در file بنویسید.

گزینه ها عبارتند از:

  • --user [ user_id | current] : هنگام ارائه یک نام فرآیند، کاربر فرآیند مورد نظر را مشخص کنید. اگر مشخص نشده باشد، کاربر فعلی استفاده می شود.
  • -b [| png | jpg | webp] : نقشه های بیت را از حافظه گرافیکی (سطح API 35 و بالاتر) حذف کنید. به صورت اختیاری فرمت مورد نظر را برای ریختن (به طور پیش فرض PNG) مشخص کنید.
  • -n : به جای پشته مدیریت شده، پشته بومی را تخلیه کنید.
set-debug-app [ options ] package package برنامه را روی اشکال زدایی تنظیم کنید.

گزینه ها عبارتند از:

  • -w : وقتی برنامه شروع به کار کرد منتظر دیباگر باشید.
  • --persistent : این مقدار را حفظ کنید.
clear-debug-app بسته مجموعه قبلی را برای رفع اشکال با set-debug-app پاک کنید.
monitor [ options ] نظارت را برای خرابی یا ANR شروع کنید.

گزینه ها عبارتند از:

  • --gdb : gdbserv در پورت داده شده در crash/ANR شروع کنید.
screen-compat {on | off} package حالت سازگاری صفحه package را کنترل کنید.
display-size [reset | width x height ] نادیده گرفتن اندازه نمایش دستگاه. این دستور برای آزمایش برنامه شما در اندازه های مختلف صفحه با تقلید وضوح صفحه نمایش کوچک با استفاده از دستگاهی با صفحه نمایش بزرگ مفید است و بالعکس.

مثال:
am display-size 1280x800

display-density dpi نادیده گرفتن تراکم نمایش دستگاه این دستور برای آزمایش برنامه شما در تراکم های مختلف صفحه با تقلید از محیط صفحه نمایش با چگالی بالا با استفاده از صفحه نمایش کم تراکم مفید است و بالعکس.

مثال:
am display-density 480

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

جدول 2. دستورات مدیریت بسته موجود

فرمان توضیحات
list packages [ options ] filter چاپ همه بسته ها، به صورت اختیاری فقط بسته هایی که نام بسته حاوی متن در filter است.

گزینه ها:

  • -f : فایل مرتبط را ببینید.
  • -d : فیلتر کنید تا فقط بسته‌های غیرفعال را نشان دهد.
  • -e : فیلتر کنید تا فقط بسته های فعال را نشان دهد.
  • -s : فیلتر کنید تا فقط بسته های سیستم را نشان دهد.
  • -3 : فیلتر کنید تا فقط بسته های شخص ثالث نمایش داده شود.
  • -i : برای بسته ها به نصب کننده مراجعه کنید.
  • -u : شامل بسته های نصب نشده است.
  • --user user_id : فضای کاربر برای پرس و جو.
list permission-groups چاپ همه گروه های مجوز شناخته شده.
list permissions [ options ] group چاپ تمام مجوزهای شناخته شده، به صورت اختیاری فقط مجوزهای موجود در group .

گزینه ها:

  • -g : سازماندهی بر اساس گروه.
  • -f : تمام اطلاعات را چاپ کنید.
  • -s : خلاصه کوتاه.
  • -d : فقط مجوزهای خطرناک را فهرست کنید.
  • -u : فقط مجوزهایی را که کاربران می بینند فهرست کنید.
list instrumentation [ options ] لیست تمام بسته های آزمایشی

گزینه ها:

  • -f : فایل APK را برای بسته آزمایشی فهرست کنید.
  • target_package : بسته های آزمایشی را فقط برای این برنامه فهرست کنید.
list features تمام ویژگی های سیستم را چاپ کنید.
list libraries تمام کتابخانه های پشتیبانی شده توسط دستگاه فعلی را چاپ کنید.
list users همه کاربران روی سیستم را چاپ کنید.
path package مسیر APK package داده شده را چاپ کنید.
install [ options ] path بسته ای را که توسط path مشخص شده در سیستم نصب کنید.

گزینه ها:

  • -r : یک برنامه موجود را مجدداً نصب کنید و اطلاعات آن را حفظ کنید.
  • -t : اجازه نصب APKهای آزمایشی را می دهد. Gradle زمانی یک APK آزمایشی تولید می‌کند که فقط برنامه خود را اجرا یا اشکال زدایی کرده باشید یا از دستور Android Studio Build > Build APK استفاده کرده باشید. اگر APK با استفاده از یک SDK پیش‌نمایش توسعه‌دهنده ساخته شده است، اگر در حال نصب یک APK آزمایشی هستید، باید گزینه -t را با دستور install اضافه کنید.
  • -i installer_package_name : نام بسته نصب کننده را مشخص کنید.
  • --install-location location : مکان نصب را با استفاده از یکی از مقادیر زیر تنظیم کنید:
    • 0 : از محل نصب پیش فرض استفاده کنید.
    • 1 : روی حافظه داخلی دستگاه نصب کنید.
    • 2 : روی رسانه خارجی نصب کنید.
  • -f : بسته را روی حافظه داخلی سیستم نصب کنید.
  • -d : اجازه کاهش کد نسخه را می دهد.
  • -g : همه مجوزهای فهرست شده در مانیفست برنامه را اعطا کنید.
  • --fastdeploy : به سرعت یک بسته نصب شده را فقط با به روز رسانی بخش هایی از APK که تغییر کرده اند به روز کنید.
  • --incremental : به اندازه کافی APK را نصب می کند تا برنامه را راه اندازی کند در حالی که داده های باقی مانده را در پس زمینه پخش می کند. برای استفاده از این ویژگی، باید APK را امضا کنید، یک فایل APK Signature Scheme v4 ایجاد کنید، و این فایل را در همان فهرست APK قرار دهید. این ویژگی فقط در دستگاه های خاصی پشتیبانی می شود. این گزینه adb مجبور می‌کند تا از این ویژگی استفاده کند یا اگر پشتیبانی نمی‌شود، با اطلاعات دقیق درباره علت شکست آن، شکست می‌خورد. گزینه --wait را اضافه کنید تا قبل از دادن دسترسی به APK منتظر بمانید تا APK به طور کامل نصب شود.

    --no-incremental مانع از استفاده adb از این ویژگی می شود.

uninstall [ options ] package بسته ای را از سیستم حذف می کند.

گزینه ها:

  • -k : پس از حذف بسته، دایرکتوری های داده و کش را نگه دارید.
  • --user user_id : کاربری را مشخص می کند که بسته برای او حذف شده است.
  • --versionCode version_code : فقط در صورتی حذف نصب می شود که برنامه کد نسخه داده شده را داشته باشد.
clear package تمام داده های مرتبط با یک بسته را حذف کنید.
enable package_or_component بسته یا جزء داده شده را فعال کنید (نوشته شده به عنوان "package/class").
disable package_or_component بسته یا جزء داده شده را غیرفعال کنید (نوشته شده به عنوان "package/class").
disable-user [ options ] package_or_component

گزینه ها:

  • --user user_id : کاربری که باید غیرفعال شود.
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 محل نصب پیش فرض را تغییر دهید. مقادیر مکان:
  • 0 : خودکار: به سیستم اجازه دهید بهترین مکان را تعیین کند.
  • 1 : داخلی: روی حافظه داخلی دستگاه نصب کنید.
  • 2 : خارجی: نصب بر روی رسانه خارجی.

توجه: این فقط برای رفع اشکال در نظر گرفته شده است. استفاده از این می تواند باعث خرابی برنامه ها و سایر رفتارهای نامطلوب شود.

get-install-location مکان نصب فعلی را برمی‌گرداند. مقادیر برگشتی:
  • 0 [auto] : به ​​سیستم اجازه دهید بهترین مکان را تعیین کند
  • 1 [internal] : روی حافظه داخلی دستگاه نصب کنید
  • 2 [external] : روی رسانه خارجی نصب کنید
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 داده شده یا برای همه بسته‌ها در صورتی که هیچ کدام مشخص نشده است چاپ کنید. کدهای ایالتی به صورت زیر تعریف می شوند:

  • none : چیزی برای این دامنه ثبت نشده است
  • verified : دامنه با موفقیت تایید شد
  • approved : مورد تایید زور، معمولا از طریق پوسته
  • denied : به زور انکار می شود، معمولاً از طریق پوسته
  • migrated : تأیید صحت از یک پاسخ قدیمی
  • restored : تأیید صحت از بازیابی اطلاعات کاربر
  • legacy_failure : توسط یک تایید کننده قدیمی رد شد، دلیل نامعلوم
  • system_configured : به طور خودکار توسط پیکربندی دستگاه تأیید می شود
  • >= 1024 : کد خطای سفارشی که مخصوص تأیید کننده دستگاه است

گزینه ها عبارتند از:

  • --user user_id : شامل انتخاب های کاربر. شامل همه دامنه‌ها، نه فقط تأیید خودکار.
reset-app-links [ options ] [ package ]

وضعیت تأیید دامنه را برای بسته داده شده بازنشانی کنید، یا برای همه بسته ها اگر هیچ کدام مشخص نشده باشد.

  • package : بسته برای بازنشانی یا "همه" برای بازنشانی همه بسته ها

گزینه ها عبارتند از:

  • --user user_id : شامل انتخاب های کاربر. شامل همه دامنه‌ها، نه فقط تأیید خودکار.
verify-app-links [ --re-verify ] [ package ]

یک درخواست تأیید برای package داده شده، یا برای همه بسته‌ها در صورتی که هیچ کدام مشخص نشده است، پخش کنید. فقط در صورتی ارسال می شود که بسته قبلاً پاسخی ثبت نکرده باشد.

  • --re-verify : ارسال حتی اگر بسته پاسخی را ثبت کرده باشد
set-app-links [--package package ] state domains

به صورت دستی وضعیت یک دامنه را برای یک بسته تنظیم کنید. دامنه باید توسط بسته به عنوان autoVerify اعلام شود تا این کار کار کند. این دستور برای دامنه هایی که نمی توانند اعمال شوند، خرابی را گزارش نمی کند.

  • --package package : بسته ای که باید تنظیم شود یا "همه" برای تنظیم همه بسته ها
  • state : کدی که دامنه ها را روی آن تنظیم کنید. مقادیر معتبر عبارتند از:
    • STATE_NO_RESPONSE (0) : تنظیم مجدد به گونه ای که گویی هرگز پاسخی ثبت نشده است.
    • STATE_SUCCESS (1) : دامنه را به عنوان تأیید شده با موفقیت توسط عامل تأیید دامنه در نظر بگیرید. توجه داشته باشید که عامل تأیید دامنه می تواند این مورد را لغو کند.
    • STATE_APPROVED (2) : با دامنه مانند همیشه تأیید شده رفتار کنید، از تغییر آن توسط عامل تأیید دامنه جلوگیری کنید.
    • STATE_DENIED (3) : با دامنه مانند همیشه رد شده رفتار کنید و از تغییر آن توسط عامل تأیید دامنه جلوگیری کنید.
  • domains : فهرستی از دامنه‌هایی که با فاصله از هم جدا می‌شوند، یا «همه» برای تغییر هر دامنه.
set-app-links-user-selection --user user_id [--package package ] enabled domains

وضعیت انتخاب کاربر میزبان را برای یک بسته به صورت دستی تنظیم کنید. برای این کار، دامنه باید توسط بسته اعلام شود. این دستور برای دامنه هایی که نمی توانند اعمال شوند، خرابی را گزارش نمی کند.

  • --user user_id : کاربری برای تغییر انتخاب ها
  • --package package : بسته ای که قرار است تنظیم شود
  • enabled : آیا دامنه را تایید کنیم
  • domains : فهرستی از دامنه‌هایی که با فاصله از هم جدا می‌شوند، یا «همه» برای تغییر هر دامنه
set-app-links-user-selection --user user_id [--package package ] enabled domains

وضعیت انتخاب کاربر میزبان را برای یک بسته به صورت دستی تنظیم کنید. برای این کار، دامنه باید توسط بسته اعلام شود. این دستور برای دامنه هایی که نمی توانند اعمال شوند، خرابی را گزارش نمی کند.

  • --user user_id : کاربری برای تغییر انتخاب ها
  • --package package : بسته ای که قرار است تنظیم شود
  • enabled : آیا دامنه را تایید کنیم
  • domains : فهرستی از دامنه‌هایی که با فاصله از هم جدا می‌شوند، یا «همه» برای تغییر هر دامنه
set-app-links-allowed --user user_id [--package package ] allowed

تنظیم کنترل خودکار پیوند را برای یک بسته تغییر دهید.

  • --user user_id : کاربری برای تغییر انتخاب ها
  • --package package : بسته ای که باید تنظیم شود، یا "همه" برای تنظیم همه بسته ها. اگر بسته ای مشخص نشده باشد، بسته ها بازنشانی خواهند شد
  • allowed : درست برای اجازه دادن به بسته برای باز کردن پیوندهای تأیید شده خودکار، غلط برای غیرفعال کردن
get-app-link-owners --user user_id [--package package ] domains

دارندگان یک دامنه خاص برای یک کاربر معین را با اولویت کم تا بالا چاپ کنید.

  • --user user_id : کاربری که باید برای آن پرس و جو کرد
  • --package package : همچنین به صورت اختیاری برای همه دامنه های وب اعلام شده توسط یک بسته یا "all" برای چاپ همه بسته ها چاپ می شود.
  • domains : فهرستی از دامنه‌هایی که می‌توان برای آنها پرس و جو کرد

تماس با مدیر خط مشی دستگاه ( dpm )

برای کمک به توسعه و آزمایش برنامه های مدیریت دستگاه خود، دستوراتی را به ابزار مدیریت خط مشی دستگاه ( dpm ) صادر کنید. از این ابزار برای کنترل برنامه مدیریت فعال یا تغییر داده‌های وضعیت خط‌مشی در دستگاه استفاده کنید.

در حالی که در یک پوسته، نحو dpm به صورت زیر است:

dpm command

همچنین می‌توانید دستور مدیر سیاست دستگاه را مستقیماً از adb بدون وارد کردن پوسته راه دور صادر کنید:

adb shell dpm command

جدول 3. دستورات مدیر خط مشی دستگاه موجود

فرمان توضیحات
set-active-admin [ options ] component component به عنوان مدیر فعال تنظیم می کند.

گزینه ها عبارتند از:

  • --user user_id : کاربر مورد نظر را مشخص کنید. همچنین می توانید برای انتخاب کاربر فعلی --user current ارسال کنید.
set-profile-owner [ options ] component component به عنوان مدیر فعال و بسته آن را به عنوان مالک نمایه برای یک کاربر موجود تنظیم کنید.

گزینه ها عبارتند از:

  • --user user_id : کاربر مورد نظر را مشخص کنید. همچنین می توانید برای انتخاب کاربر فعلی --user current ارسال کنید.
  • --name name : نام سازمان قابل خواندن توسط انسان را مشخص کنید.
set-device-owner [ options ] component component به عنوان مدیر فعال و بسته آن را به عنوان مالک دستگاه تنظیم کنید.

گزینه ها عبارتند از:

  • --user user_id : کاربر مورد نظر را مشخص کنید. همچنین می توانید برای انتخاب کاربر فعلی --user current ارسال کنید.
  • --name name : نام سازمان قابل خواندن توسط انسان را مشخص کنید.
remove-active-admin [ options ] component یک ادمین فعال را غیرفعال کنید. برنامه باید android:testOnly در مانیفست اعلام کند. این دستور همچنین صاحبان دستگاه و پروفایل را حذف می کند.

گزینه ها عبارتند از:

  • --user user_id : کاربر مورد نظر را مشخص کنید. همچنین می توانید برای انتخاب کاربر فعلی --user current ارسال کنید.
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 در دسترس نیست.
  • برخی از دستگاه ها ممکن است نتوانند با وضوح صفحه نمایش اصلی خود ضبط کنند. اگر در ضبط صفحه با مشکل مواجه شدید، سعی کنید از وضوح صفحه نمایش کمتری استفاده کنید.
  • چرخش صفحه در حین ضبط پشتیبانی نمی شود. اگر صفحه در حین ضبط بچرخد، مقداری از صفحه در هنگام ضبط قطع می شود.

جدول 4. گزینه های screenrecord

گزینه ها توضیحات
--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 مراجعه کنید.