Android Debug Bridge (adb)

Android Debug Bridge (adb ) هو أداة سطر أوامر متعددة الاستخدامات تتيح لك التواصل مع أحد الأجهزة. يسهّل الأمر adb تنفيذ مجموعة متنوعة من إجراءات الجهاز، مثل تثبيت التطبيقات وتصحيح أخطائها. يتيح adb الوصول إلى هيكل Unix الذي يمكنك استخدامه لتنفيذ مجموعة متنوعة من الأوامر على الجهاز. وهو برنامج خادم عميل يتضمن ثلاثة مكونات:

  • برنامج يرسل الأوامر. يعمل العميل على جهاز التطوير الذي تستخدمه. يمكنك استدعاء برنامج من محطة طرفية سطر الأوامر من خلال إصدار أمر adb.
  • برنامج خفي (adbd)، يُشغِّل الأوامر على الجهاز. يعمل البرنامج الخفي كعملية في الخلفية على كل جهاز.
  • خادم يدير الاتصال بين العميل والبرنامج الخفي يعمل الخادم كعملية تتم في الخلفية على جهاز التطوير الذي تستخدمه.

تم تضمين adb في حزمة أدوات النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android. نزِّل هذه الحزمة باستخدام مدير SDK، الذي يثبِّتها على android_sdk/platform-tools/. إذا كنت ترغب في الحصول على حزمة أدوات النظام الأساسي لحزمة تطوير البرامج (SDK) لنظام التشغيل Android، يمكنك تنزيلها من هنا.

للحصول على معلومات عن توصيل جهاز للاستخدام عبر adb، بما في ذلك كيفية استخدام "مساعد الاتصال" لتحديد المشاكل الشائعة وحلّها، يُرجى الاطّلاع على تشغيل التطبيقات على جهاز.

آلية عمل Adb

عند بدء تشغيل برنامج adb، يتحقّق البرنامج أولاً مما إذا كانت هناك عملية خادم adb قيد التشغيل حاليًا. وإذا لم يحدث ذلك، يتم بدء عملية الخادم. عند بدء تشغيل الخادم، يرتبط بمنفذ TCP المحلي رقم 5037 ويستجيب للأوامر المُرسَلة من برامج adb.

ملاحظة: تستخدم جميع برامج adb المنفذ 5037 للاتصال بخادم adb.

ثم يُعِد الخادم الاتصالات بجميع الأجهزة قيد التشغيل. وتحدِّد أماكن المحاكيات عن طريق فحص المنافذ ذات الأرقام الفردية في النطاق من 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 في إعدادات نظام الجهاز، ضمن خيارات المطوّرين. في نظام التشغيل Android 4.2 (مستوى واجهة برمجة التطبيقات 17) والإصدارات الأحدث، يتم إخفاء شاشة خيارات المطوّرين تلقائيًا. لإظهاره، فعِّل خيارات المطوّرين.

يمكنك الآن توصيل جهازك باستخدام USB. يمكنك التأكد من أن جهازك متصل من خلال تنفيذ adb devices من دليل android_sdk/platform-tools/. إذا كان الجهاز متصلاً، سيظهر لك اسم الجهاز باعتباره "جهاز".

ملاحظة: عند توصيل جهاز يعمل بالإصدار 4.2.2 من نظام التشغيل Android (المستوى 17 لواجهة برمجة التطبيقات) أو إصدار أحدث، يعرض النظام مربّع حوار يطلب منك قبول مفتاح RSA الذي يتيح تصحيح الأخطاء من خلال هذا الكمبيوتر. تحمي آلية الأمان هذه أجهزة المستخدمين لأنها تضمن عدم تنفيذ تصحيح أخطاء USB وأوامر adb الأخرى ما لم تتمكن من فتح قفل الجهاز والإقرار بمربّع الحوار.

لمزيد من المعلومات حول الاتصال بجهاز عبر USB، يُرجى الاطّلاع على تشغيل التطبيقات على جهاز.

الاتصال بجهاز عبر Wi-Fi

ملاحظة: لا تنطبق التعليمات أدناه على أجهزة Wear OS التي تعمل بالإصدار Android 11 (المستوى 30 لواجهة برمجة التطبيقات). للحصول على مزيد من المعلومات، يمكنك الاطّلاع على دليل تصحيح الأخطاء في تطبيق Wear OS.

يوفّر الإصدار Android 11 (المستوى 30 لواجهة برمجة التطبيقات) والإصدارات الأحدث إمكانية نشر تطبيقك وتصحيح الأخطاء لاسلكيًا من محطة العمل باستخدام Android Debug Bridge (adb). على سبيل المثال، يمكنك نشر تطبيقك الذي يمكن تصحيح الأخطاء به على عدة أجهزة عن بُعد بدون الحاجة على الإطلاق إلى توصيل جهازك عبر USB. ويلغي ذلك الحاجة إلى التعامل مع المشاكل الشائعة المتعلقة باتصال USB، مثل تثبيت برنامج التشغيل.

قبل بدء استخدام ميزة "تصحيح الأخطاء اللاسلكي"، عليك اتّباع الخطوات التالية:

  • تأكَّد من اتصال محطة العمل والجهاز بالشبكة اللاسلكية نفسها.

  • تأكَّد من أنّ جهازك يعمل بنظام التشغيل Android 11 (المستوى 30 لواجهة برمجة التطبيقات) أو إصدار أحدث للهواتف أو Android 13 (المستوى 33 لواجهة برمجة التطبيقات) أو بإصدارات أحدث للتلفزيون وWearOS. لمزيد من المعلومات، يُرجى الاطّلاع على التحقّق من إصدار Android وتحديثه.

  • في حال استخدام بيئة تطوير البرامج (IDE)، تأكَّد من تثبيت أحدث إصدار من "استوديو Android". يمكنك تنزيله هنا.

  • على محطة العمل، ثبِّت أحدث إصدار من أدوات SDK Platform.

لاستخدام ميزة "تصحيح الأخطاء اللاسلكي"، يجب إقران جهازك بمحطة العمل باستخدام رمز الاستجابة السريعة أو رمز الإقران. يجب توصيل محطة العمل والجهاز بالشبكة اللاسلكية نفسها. للربط بجهازك، يُرجى اتّباع الخطوات التالية:

  1. فعِّل خيارات المطوّرين على جهازك.

  2. افتح "استوديو Android" واختَر إقران الأجهزة باستخدام Wi-Fi من قائمة تشغيل الإعدادات.

    القائمة المنسدلة "تشغيل الإعدادات"
    الشكل 1. قائمة تشغيل الإعدادات.

    تنبثق النافذة المنبثقة إقران الأجهزة عبر Wi-Fi، كما هو موضح في الشكل 2.

    لقطة شاشة لإقران الأجهزة عبر النافذة المنبثقة لشبكة Wi-Fi
    الشكل 2. نافذة منبثقة لإقران الأجهزة باستخدام رمز الاستجابة السريعة أو رمز الإقران
  3. على جهازك، انقر على تصحيح الأخطاء اللاسلكي وإقران جهازك:

    لقطة شاشة لهاتف Pixel تعرض إعدادات أنظمة تصحيح الأخطاء اللاسلكي.
    الشكل 3. لقطة شاشة لإعداد تصحيح الأخطاء اللاسلكي على هاتف Google Pixel
    1. لإقران جهازك برمز استجابة سريعة، اختَر إقران الجهاز باستخدام رمز الاستجابة السريعة وامسح ضوئيًا رمز الاستجابة السريعة الذي تم الحصول عليه من النافذة المنبثقة إقران الأجهزة عبر شبكة Wi-Fi الظاهرة في الشكل 2.

    2. لإقران جهازك باستخدام رمز إقران، اختَر إقران الجهاز باستخدام رمز الإقران من النافذة المنبثقة إقران الأجهزة عبر شبكة Wi-Fi. على جهازك، اختَر الإقران باستخدام رمز الإقران ودوِّن الرمز المكوّن من ستة أرقام المقدَّم. بعد أن يظهر جهازك في نافذة إقران الأجهزة عبر Wi-Fi، يمكنك اختيار إقران وإدخال الرمز المكوّن من ستة أرقام الذي يظهر على جهازك.

      لقطة شاشة لنموذج إدخال رمز رقم التعريف الشخصي
      الشكل 4. مثال على إدخال رمز مكوّن من ستة أرقام
  4. بعد إقران جهازك، يمكنك محاولة نشر تطبيقك عليه.

    لإقران جهاز مختلف أو حذف الجهاز الحالي على محطة العمل، انتقِل إلى تصحيح الأخطاء اللاسلكي على جهازك. انقر على اسم محطة العمل ضمن الأجهزة المقترِنة واختَر حذف.

  5. إذا أردت تفعيل ميزة "تصحيح الأخطاء اللاسلكي" وإيقافها بسرعة، يمكنك استخدام مربّعات المطوّرين في الإعدادات السريعة من أجل تصحيح الأخطاء اللاسلكي في خيارات المطوّرين > مربّعات مطوّري البرامج للإعدادات السريعة.

    لقطة شاشة لمربّعات مطوّري البرامج في "الإعدادات السريعة" من هاتف Google Pixel
    الشكل 5. يتيح لك الإعداد مربّعات المطوِّر في الإعدادات السريعة تفعيل ميزة "تصحيح الأخطاء اللاسلكي" وإيقافها بسرعة.

اتصال 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 من نظام التشغيل Android (والإصدارات الأحدث)، مع الانتباه إلى أنّه يتضمّن أيضًا اتصالًا *مبدئيًا* عبر منفذ USB مادي.

ملاحظة: لا تنطبق التعليمات التالية على أجهزة Wear OS التي تعمل بنظام التشغيل Android 10 (مستوى واجهة برمجة التطبيقات 29) أو الإصدارات الأقدم. للحصول على مزيد من المعلومات، يمكنك الاطّلاع على الدليل حول تصحيح الأخطاء في تطبيق Wear OS.

يتواصل adb عادةً مع الجهاز عبر USB، ولكن يمكنك أيضًا استخدام adb عبر شبكة Wi-Fi. لربط جهاز يعمل بنظام التشغيل Android 10 (مستوى واجهة برمجة التطبيقات 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. يُرجى العِلم أنّ هذه الحالة لا تشير إلى أنّ نظام Android تم تشغيله بالكامل وأنّه يعمل بشكل كامل، لأنّ الجهاز يتصل بمشغّل شبكة الجوّال 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 محاكيًا في وقت واحد. وهناك طريقة أخرى، وهي بدء تشغيل خادم adb دائمًا قبل استخدام الأمر emulator، كما هو موضّح في الأمثلة التالية.

المثال 1: في تسلسل الأوامر التالي، يبدأ الأمر adb devices خادم adb، ولكن لا تظهر قائمة الأجهزة.

أوقِف خادم adb وأدخِل الأوامر التالية بالترتيب المعروض. بالنسبة إلى اسم "متوسّط مدة المشاهدة"، قدِّم اسمًا صالحًا له من نظامك. للحصول على قائمة بأسماء متوسط مدة المشاهدة، اكتب 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

يجب استخدام الخيار -t مع الأمر install عند تثبيت حزمة APK تجريبية. ولمزيد من المعلومات، يمكنك الاطّلاع على -t.

لتثبيت عدة حِزم APK، يُرجى استخدام install-multiple. وهذا الأمر مفيد إذا كنت تنزّل جميع حِزم APK على جهاز معيّن لتطبيقك من Play Console وتريد تثبيتها على جهاز محاكاة أو جهاز مادي.

للحصول على مزيد من المعلومات حول كيفية إنشاء ملف APK يمكنك تثبيته على نسخة افتراضية من المحاكي/الجهاز، يمكنك الاطّلاع على المقالة إنشاء تطبيقك وتشغيله.

ملاحظة: إذا كنت تستخدم "استوديو Android"، لن تحتاج إلى استخدام adb مباشرةً لتثبيت تطبيقك على المحاكي أو الجهاز. بدلاً من ذلك، تتولّى "استوديو Android" معالجة حزمة التطبيق وتثبيته نيابةً عنك.

إعداد قاعدة إعادة توجيه المنفذ

استخدِم الأمر 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.

يوفّر Android معظم أدوات سطر أوامر Unix المعتادة. للحصول على قائمة بالأدوات المتاحة، استخدم الأمر التالي:

adb shell ls /system/bin

تتوفّر المساعدة لمعظم الأوامر من خلال الوسيطة --help. يوفر toybox العديد من أوامر واجهة المستخدم. تتوفّر المساعدة العامة التي تنطبق على جميع أوامر toybox من خلال toybox --help.

في الإصدار 23 من أدوات نظام Android الأساسي والإصدارات الأحدث، يتعامل adb مع الوسيطات بالطريقة نفسها التي يتعامل بها الأمر ssh(1). ساعد هذا التغيير في حل الكثير من المشاكل المتعلّقة بإدخال الأوامر وأتاح له إمكانية تنفيذ الأوامر التي تحتوي على أحرف تعريف خاصة بواجهة سطر الأوامر، مثل adb install Let\'sGo.apk. يعني هذا التغيير أنه تم أيضًا تغيير تفسير أي أمر يحتوي على أحرف تعريف واجهة المستخدم.

على سبيل المثال، تم اعتبار adb shell setprop key 'value' الآن خطأً، لأنّه ابتلع علامة الاقتباس المفردة (') من خلال واجهة المستخدم المحلية، وسيظهر للجهاز adb shell setprop key value. لإنجاح الأمر، اقتبس الأمر مرتَين، مرة واحدة لـ التحكّم عن بُعد ومرة أخرى لوحدة تحكّم عن بُعد، كما فعلت في ssh(1). مثلاً: adb shell setprop key 'value'

راجِع أيضًا أداة سطر أوامر Logcat، وهي مفيدة لمراقبة سجلّ النظام.

مدير نشاط الاتصال

ضمن واجهة أوامر adb، يمكنك إصدار الأوامر باستخدام أداة "مدير النشاط" (am) لتنفيذ إجراءات نظام مختلفة، مثل بدء نشاط وفرض إيقاف عملية معيّنة وبث هدف وتعديل خصائص شاشة الجهاز وغير ذلك.

أثناء استخدام الواجهة في الواجهة، تكون بنية am كما يلي:

am command

يمكنك أيضًا إصدار أمر من "مدير النشاط" مباشرةً من adb بدون إدخال وحدة تحكّم عن بُعد. مثلاً:

adb shell am start -a android.intent.action.VIEW

الجدول 1. الأوامر المتاحة لمدير النشاط

Command الوصف
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]: عند تقديم اسم للعملية، حدِّد مستخدم العملية التي تريد تفريغها. إذا لم يتم تحديد ذلك، يتم استخدام المستخدم الحالي.
  • -n: نَسْخ كومة الذاكرة المؤقتة الأصلية بدلاً من كومة الذاكرة المؤقتة المُدارة.
set-debug-app [options] package اضبط التطبيق package على تصحيح الأخطاء.

الخيارات هي:

  • -w: انتظار برنامج تصحيح الأخطاء عند بدء التطبيق
  • --persistent: احتفظ بهذه القيمة.
clear-debug-app يمكنك محو الحزمة السابقة التي تم ضبطها لتصحيح الأخطاء باستخدام set-debug-app.
monitor [options] يمكنك بدء رصد الأعطال أو أخطاء ANR.

الخيارات هي:

  • --gdb: عليك بدء gdbserv في المنفذ المحدّد عند التعطُّل/ANR.
screen-compat {on | off} package التحكم في وضع توافق الشاشة في package.
display-size [reset | widthxheight] تجاوز حجم شاشة الجهاز. يفيد هذا الأمر في اختبار تطبيقك على مختلف أحجام الشاشات عن طريق محاكاة دقة الشاشة الصغيرة باستخدام جهاز بشاشة كبيرة، والعكس صحيح.

مثال:
am display-size 1280x800

display-density dpi تتجاوز كثافة عرض الجهاز. يفيد هذا الأمر في اختبار تطبيقك على مستوى كثافات الشاشة المختلفة عن طريق محاكاة بيئة شاشة عالية الكثافة باستخدام شاشة منخفضة الكثافة، والعكس صحيح.

مثال:
am display-density 480

to-uri intent اطبع مواصفات الغرض المقدمة كمعرف موارد منتظم (URI).

راجِع مواصفات وسيطات الغرض.

to-intent-uri intent اطبع مواصفات الغرض المقدَّمة كمعرف موارد منتظم (URI) لـ intent:.

راجِع مواصفات وسيطات الغرض.

مواصفات وسيطات الغرض

بالنسبة إلى أوامر مدير النشاط التي تستخدِم الوسيطة intent، يمكنك تحديد الغرض من خلال الخيارات التالية:

الاتصال بمدير حزَم (pm)

ضمن واجهة أوامر adb، يمكنك إصدار الأوامر باستخدام أداة إدارة الحِزم (pm) لتنفيذ الإجراءات وطلبات البحث على حِزم التطبيقات المثبَّتة على الجهاز.

أثناء استخدام الواجهة في الواجهة، تكون بنية pm كما يلي:

pm command

يمكنك أيضًا إصدار أمر من "مدير الحِزم" مباشرةً من adb بدون الدخول إلى وحدة تحكّم عن بُعد. مثلاً:

adb shell pm uninstall com.example.MyApp

الجدول 2. الأوامر المتاحة لمدير الحزم

Command الوصف
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 تجريبيًا عندما تشغّل تطبيقك أو تصحح الأخطاء فيه فقط أو عندما تستخدم الأمر إنشاء > إنشاء APK في استوديو Android. إذا تم إنشاء حزمة APK باستخدام حزمة تطوير برامج (SDK) لمعاينة المطوّر، يجب تضمين الخيار -t مع الأمر install في حال تثبيت حِزمة APK تجريبية.
  • -i installer_package_name: حدِّد اسم حزمة أداة التثبيت.
  • --install-location location: اضبط موقع التثبيت باستخدام إحدى القيم التالية:
    • 0: استخدِم موقع التثبيت التلقائي.
    • 1: سيتم التثبيت على وحدة تخزين الجهاز الداخلية.
    • 2: التثبيت على وسائط خارجية
  • -f: تثبيت الحزمة على ذاكرة النظام الداخلية
  • -d: السماح بالرجوع إلى إصدار رمز الإصدار السابق
  • -g: منح جميع الأذونات المُدرَجة في بيان التطبيق
  • --fastdeploy: يمكنك التحديث السريع لحزمة مثبّتة من خلال تعديل أجزاء APK التي تم تغييرها فقط.
  • --incremental: عدد مرات تثبيت ما يكفي من حزمة APK لتشغيل التطبيق مع بث البيانات المتبقية في الخلفية لاستخدام هذه الميزة، يجب توقيع ملف APK وإنشاء ملف الإصدار 4 من مخطط توقيع APK ووضع هذا الملف في الدليل نفسه الذي تتضمنه حزمة 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 (المستوى 23 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن أن يتمثل الإذن في أي إذن تم تقديمه في بيان التطبيق. على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (مستوى واجهة برمجة التطبيقات 22) والإصدارات الأقدم، يجب الحصول على إذن اختياري يحدّده التطبيق.
revoke package_name permission يمكنك إبطال إذن من تطبيق. وعلى الأجهزة التي تعمل بنظام التشغيل Android 6.0 (مستوى واجهة برمجة التطبيقات 23) والإصدارات الأحدث، يمكن أن يكون الإذن هو أي إذن تم تقديمه في بيان التطبيق. على الأجهزة التي تعمل بنظام التشغيل Android 5.1 (مستوى واجهة برمجة التطبيقات 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

يمكنك تحديد حالة نطاق لحزمة يدويًا. لكي تنجح هذه العملية، يجب تعريف النطاق من خلال الحزمة على أنّه "إثبات ملكية تلقائي". لن يبلغ هذا الأمر عن إخفاق النطاقات التي تعذَّر تطبيقها.

  • --package package: الحزمة المطلوب ضبطها أو "all" لضبط جميع الحِزم
  • 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: يتم الضبط على "true" للسماح للحزمة بفتح الروابط التي تم إثبات ملكيتها تلقائيًا، وعلى "خطأ" للإيقاف
get-app-link-owners --user user_id [--package package] domains

طباعة المالكين لنطاق محدد لمستخدم معين بترتيب من الأولوية المنخفضة إلى العالية.

  • --user user_id: المستخدم المطلوب البحث عنه
  • --package package: يمكنك أيضًا الطباعة أيضًا لجميع نطاقات الويب التي تم تعريفها من خلال حزمة، أو الطباعة "الكل" لطباعة جميع الحِزم
  • domains: قائمة بالنطاقات المفصولة بمسافات للبحث عنها

الاتصال بمدير سياسة الجهاز (dpm)

لمساعدتك في تطوير تطبيقات إدارة الأجهزة واختبارها، يمكنك إصدار الأوامر إلى أداة مدير سياسات الجهاز (dpm). يمكنك استخدام الأداة للتحكّم في تطبيق المشرف النشط أو تغيير بيانات حالة سياسة على الجهاز.

أثناء وجودك في واجهة، تكون بناء الجملة dpm هو:

dpm command

يمكنك أيضًا إصدار أمر مدير سياسة الجهاز مباشرةً من adb بدون الدخول إلى وحدة تحكّم عن بُعد:

adb shell dpm command

الجدول 3. أوامر مدير سياسة الجهاز المتاحة

Command الوصف
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 محو سجلّ الجهاز لفترات تجميد البيانات المحدَّدة مسبقًا لتحديثات النظام عبر الهواء يكون هذا مفيدًا لتجنب قيود جدولة الجهاز عند تطوير التطبيقات التي تدير فترات التجميد. يُرجى الاطّلاع على إدارة تحديثات النظام.

يتوافق هذا الإعداد مع الأجهزة التي تعمل بنظام التشغيل Android 9.0 (المستوى 28 لواجهة برمجة التطبيقات) والإصدارات الأحدث.

force-network-logs فرض أن يجعل النظام أي سجلات شبكة حالية جاهزة لاستردادها بواسطة وحدة التحكّم بسياسة الجهاز (DPC). في حال توفُّر اتصال أو سجلات لنظام أسماء النطاقات، ستتلقّى وحدة التحكّم بسياسة الجهاز onNetworkLogsAvailable() استدعاء استدعاء. راجِع تسجيل نشاط الشبكة.

هذا الأمر محدود المعدّل. يتوافق هذا الإعداد مع الأجهزة التي تعمل بنظام التشغيل Android 9.0 (المستوى 28 لواجهة برمجة التطبيقات) والإصدارات الأحدث.

force-security-logs إجبار النظام على إتاحة أي سجلات أمان حالية لوحدة التحكّم بسياسة الجهاز. وفي حال توفُّر سجلّات، ستتلقّى وحدة التحكّم بسياسة الجهاز onSecurityLogsAvailable(). يمكنك الاطّلاع على تسجيل نشاط جهاز المؤسسة.

هذا الأمر محدود المعدّل. يتوافق هذا الإعداد مع الأجهزة التي تعمل بنظام التشغيل Android 9.0 (المستوى 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 هو أداة في واجهة المستخدم لتسجيل طريقة عرض الأجهزة التي تعمل بالإصدار 4.4 من نظام التشغيل Android (مستوى واجهة برمجة التطبيقات 19) والإصدارات الأحدث. تسجِّل الأداة نشاط الشاشة في ملف MPEG-4. يمكنك استخدام هذا الملف لإنشاء فيديوهات ترويجية أو تدريبية أو لتصحيح الأخطاء والاختبار.

في واجهة أوامر، استخدم الصيغة التالية:

screenrecord [options] filename

لاستخدام screenrecord من سطر الأوامر، أدخِل ما يلي:

adb shell screenrecord /sdcard/demo.mp4

أوقِف تسجيل الشاشة من خلال الضغط على Control+C (Command+C على نظام التشغيل macOS). وبخلاف ذلك، سيتوقف التسجيل تلقائيًا عند ثلاث دقائق أو عند الحد الزمني الذي تم ضبطه من قِبل --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 widthxheight ضبط حجم الفيديو: 1280x720. وتكون القيمة التلقائية هي درجة دقة الشاشة الأصلية للجهاز (إذا كانت متاحة)، وتكون 1280×720 إذا لم تكن كذلك. للحصول على أفضل النتائج، يجب استخدام مقاس يتوافق مع برنامج الترميز المتقدّم للفيديو (AVC) على جهازك.
--bit-rate rate اضبط معدل نقل بيانات الفيديو بالميغابت في الثانية. القيمة التلقائية هي 4 ميغابت في الثانية. يمكنك زيادة معدل نقل البيانات لتحسين جودة الفيديو، ولكن سيؤدي ذلك إلى زيادة حجم ملفات الأفلام. يضبط المثال التالي معدل بت التسجيل على 6 ميغابت في الثانية:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4
--time-limit time يمكنك ضبط الحد الأقصى لوقت التسجيل بالثواني. القيمة التلقائية والحد الأقصى هي 180 (3 دقائق).
--rotate تدوير الإخراج بمقدار 90 درجة هذه الميزة تجريبية.
--verbose عرض معلومات السجلّ على شاشة سطر الأوامر وإذا لم تضبط هذا الخيار، لا تعرض الأداة أي معلومات أثناء تشغيلها.

قراءة الملفات الشخصية لـ ART للتطبيقات

يجمع "وقت تشغيل Android" (ART) بدءًا من الإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات)، الملفات الشخصية للتنفيذ للتطبيقات المثبّتة، والتي تُستخدَم لتحسين أداء التطبيقات. يمكنك فحص الملفات الشخصية التي تم جمعها لمعرفة الطرق التي يتم تنفيذها بشكل متكرر والفئات التي يتم استخدامها أثناء بدء تشغيل التطبيق.

ملاحظة: من الممكن استرداد اسم ملف الملف الشخصي للتنفيذ فقط إذا كان لديك إذن وصول جذر إلى نظام الملفات، على سبيل المثال، في محاكي.

لإنتاج نموذج نصي لمعلومات الملف الشخصي، استخدم الأمر التالي:

adb shell cmd package dump-profiles package

لاسترداد الملف الذي تم إنتاجه، استخدِم:

adb pull /data/misc/profman/package.prof.txt

إعادة ضبط أجهزة الاختبار

إذا كنت تختبر تطبيقك على عدة أجهزة اختبار، قد يكون من المفيد إعادة ضبط جهازك بين الاختبارات، على سبيل المثال، لإزالة بيانات المستخدمين وإعادة ضبط بيئة الاختبار. يمكنك إجراء إعادة ضبط على الإعدادات الأصلية لجهاز اختبار يعمل بالإصدار Android 10 (مستوى واجهة برمجة التطبيقات 29) أو إصدار أحدث باستخدام أمر Shell adb testharness، كما هو موضّح:

adb shell cmd testharness enable

عند استعادة الجهاز باستخدام testharness، يحتفظ الجهاز تلقائيًا بنسخة احتياطية من مفتاح RSA الذي يتيح تصحيح الأخطاء من خلال محطة العمل الحالية في موقع جغرافي دائم. هذا يعني أنّه بعد إعادة ضبط الجهاز، يمكن لمحطة العمل مواصلة تصحيح الأخطاء وإصدار أوامر adb في الجهاز بدون تسجيل مفتاح جديد يدويًا.

بالإضافة إلى ذلك، للمساعدة في مواصلة اختبار تطبيقك بشكل أسهل وأكثر أمانًا، يؤدي استخدام testharness لاستعادة جهاز إلى تغيير إعدادات الجهاز التالية:

  • يضبط الجهاز إعدادات نظام معيّنة بحيث لا تظهر معالجات الإعداد المبدئية للجهاز. وهذا يعني أنّ الجهاز يدخل حالة يمكنك من خلالها تثبيت تطبيقك وتصحيح أخطائه واختباره بسرعة.
  • الإعدادات:
    • يعمل على إيقاف شاشة القفل.
    • لإيقاف تنبيهات الطوارئ
    • إيقاف المزامنة التلقائية للحسابات.
    • إيقاف التحديثات التلقائية للنظام
  • سبب آخر:
    • إيقاف تطبيقات الأمان المثبتة مسبقًا.

إذا كان تطبيقك يحتاج إلى رصد الإعدادات التلقائية للأمر testharness والتكيّف معها، استخدِم ActivityManager.isRunningInUserTestHarness().

سكوليت

تبدأ "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.