Android Debug Bridge (adb)

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

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

تم تضمين adb في حزمة أدوات نظام Android SDK Platform. نزِّل هذه الحزمة باستخدام أداة إدارة حِزم تطوير البرامج (SDK) التي تعمل على تثبيتها في android_sdk/platform-tools/. إذا كنت تريد حزمة "أدوات النظام الأساسي" (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 التي تعمل بالإصدار Android 11 (المستوى 30 من واجهة برمجة التطبيقات). راجِع دليل تصحيح الأخطاء في تطبيق Wear OS للحصول على مزيد من المعلومات.

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

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

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

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

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

  • في محطة العمل، عليك التحديث إلى أحدث إصدار من أدوات النظام الأساسي لحزمة تطوير البرامج (SDK).

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

  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":

  1. فعِّل خيارات المطوّرين على جهازك، كما هو موضَّح سابقًا.

  2. فعِّل تصحيح الأخطاء اللاسلكي على جهازك كما هو موضَّح سابقًا.

  3. في محطة العمل، افتح نافذة طرفية وانتقِل إلى android_sdk/platform-tools.

  4. يمكنك العثور على عنوان IP ورقم المنفذ ورمز الإقران من خلال اختيار إقران الجهاز باستخدام رمز الإقران. دوِّن عنوان IP ورقم المنفذ ورمز الإقران المعروضة على الجهاز.

  5. على الوحدة الطرفية في محطة العمل، شغِّل "adb pair ipaddr:port". استخدِم عنوان IP ورقم المنفذ المذكور أعلاه.

  6. أدخِل رمز الإقران، كما هو موضّح أدناه، عندما يُطلب منك ذلك.

    لقطة شاشة للإقران في سطر الأوامر.
    الشكل 6. تشير الرسالة إلى أنّه تم إقران جهازك بنجاح.

حل مشاكل الاتصال اللاسلكي

إذا كنت تواجه مشاكل في الاتصال بجهازك لاسلكيًا، جرِّب الخطوات التالية لتحديد المشاكل وحلّها.

التحقق مما إذا كانت محطة العمل والجهاز يلبيان المتطلبات الأساسية

تأكَّد من أنّ محطة العمل والجهاز تستوفيان المتطلبات الأساسية الواردة في بداية هذا القسم.

البحث عن المشاكل المعروفة الأخرى

في ما يلي قائمة بالمشاكل المعروفة الحالية في ميزة "تصحيح الأخطاء اللاسلكي" (باستخدام adb أو "استوديو Android") وكيفية حلّها:

  • تعذُّر الاتصال بشبكة 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 والإصدارات الأقدم).

ملاحظة: ينطبق سير العمل هذا أيضًا على نظام التشغيل Android 11 (والإصدارات الأحدث). نودّ تذكيرك بأنّ هذا الإجراء يتضمّن أيضًا اتصالاً *أوليًا* عبر جهاز USB.

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

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

عليك استخدام الخيار -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. أوامر "مدير النشاط" المتاحة

الأمر الوصف
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 اطبع مواصفات intent المحددة كمعرّف موارد منتظم (URI).

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

to-intent-uri 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 تجريبية عندما يتم تشغيل تطبيقك أو تصحيح أخطائه فقط أو عند استخدام الأمر إنشاء > إنشاء 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 لواجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن أن يكون الإذن بأي إذن تم تعريفه في بيان التطبيق. على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 22 لواجهة برمجة التطبيقات) والإصدارات الأقدم، يجب أن يكون هناك إذن اختياري يحدّده التطبيق.
revoke package_name permission إبطال إذن من تطبيق. على الأجهزة التي تعمل بالإصدار 6.0 من نظام التشغيل Android (المستوى 23 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن أن يكون الإذن هو أي إذن تم تعريفه في بيان التطبيق. على الأجهزة التي تعمل بالإصدار 5.1 من نظام التشغيل Android (المستوى 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: الحزمة المطلوب ضبطها أو "الكل" لإعداد جميع الحزم
  • 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" للسماح للحزمة بفتح الروابط التي تم التحقق منها تلقائيًا، والخطأ "false" للإيقاف
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 يؤدي هذا الإجراء إلى محو سجلّ الجهاز الذي تم ضبطه مسبقًا لفترات إيقاف التحديثات التي يتم إجراؤها على تحديثات النظام عبر الهواء. ويفيد ذلك في تجنُّب قيود جدولة الجهاز عند تطوير التطبيقات التي تدير فترات تجميد البيانات. يُرجى الاطّلاع على إدارة تحديثات النظام.

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

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

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

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

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

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

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

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

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

adb shell cmd package dump-profiles package

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

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

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

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

adb shell cmd testharness enable

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

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

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

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

SQL Lite

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

خلفيات Ab USB

يمكن لخادم adb التفاعل مع حزمة USB من خلال خلفيتين. يمكن استخدام الواجهة الخلفية الأصلية لنظام التشغيل (Windows أو Linux أو macOS) أو استخدام الواجهة الخلفية libusb. ولا تتوفّر بعض الميزات، مثل attach وdetach ورصد سرعة USB إلا عند استخدام الخلفية libusb.

يمكنك اختيار واجهة خلفية باستخدام متغيّر البيئة ADB_LIBUSB. إذا لم يتم ضبط السياسة، يستخدم adb واجهته الخلفية التلقائية. ويختلف السلوك التلقائي باختلاف نظام التشغيل. بدءًا من الإصدار 34 من ADB، يتم استخدام الواجهة الخلفية liubusb بشكل تلقائي على جميع أنظمة التشغيل باستثناء Windows حيث يتم استخدام الواجهة الخلفية الأصلية بشكل تلقائي. أمّا في حال ضبط السياسة ADB_LIBUSB، فإنّها تحدّد ما إذا كان سيتم استخدام الواجهة الخلفية الأصلية أو libusb. اطّلِع على صفحة دليل adb للحصول على مزيد من المعلومات حول متغيّرات بيئة adb.

خلفيات adb mDNS

يمكن لـ ADB استخدام بروتوكول نظام أسماء النطاقات للبث المتعدد الوجهات للاتصال بالخادم والأجهزة تلقائيًا. يشحن خادم ADB مع خلفيتين، Bonjour (mdnsResponseer من Apple) وOpenscreen.

تحتاج الواجهة الخلفية Bonjour إلى برنامج خفي لتشغيله على الجهاز المضيف. يعمل البرنامج الخفي لنظام التشغيل macOS من Apple دائمًا، ولكن على المستخدم التأكّد من أنّ البرنامج الخفي "mdnsd" يعمل على نظامَي التشغيل Windows وLinux. إذا عرض الأمر adb mdns check خطأ، فمن المحتمل أن ADB يستخدم الواجهة الخلفية Bonjour ولكن ليس هناك برنامج خفي لـ Bonjour قيد التشغيل.

لا تحتاج الخلفية Openscreen إلى تشغيل برنامج خفي على الجهاز. يبدأ دعم خلفية Openscreen على نظام التشغيل macOS من خلال الإصدار ADB v35. يعتمد الإصدار 34 من ADB على نظامي Windows وLinux.

يستخدم ADB بشكل افتراضي خلفية Bonjour. يمكن تغيير هذا السلوك باستخدام متغيّر البيئة ADB_MDNS_OPENSCREEN (الضبط على 1 أو 0). للاطّلاع على مزيد من التفاصيل، يُرجى الانتقال إلى صفحة دليل Ads Data Hub يدويًا.