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 من واجهة برمجة التطبيقات (المستوى 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 على جهازك وتحديثه.

  • في حال استخدام بيئة التطوير المتكاملة، يجب التأكّد من أنّ أحدث إصدار من "استوديو 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 والإصدارات الأقدم)

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

يجب استخدام الخيار -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.

في أدوات نظام Android الأساسية رقم 23 والإصدارات الأحدث، يعالج 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 طباعة مواصفات الغرض المحدد كمعرّف موارد منتظم (URI).

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

to-intent-uri 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 من واجهة برمجة التطبيقات) والإصدارات الأحدث، يمكن أن يكون الإذن عبارة عن أي إذن تم توضيحه في بيان التطبيق. على الأجهزة التي تعمل بنظام التشغيل 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: الحزمة المطلوب ضبطها أو "الكل" لضبط جميع الحِزم
  • 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: الحزمة المطلوب ضبطها أو "all" لضبط جميع الحزم، ستتم إعادة ضبط الحزم إذا لم يتم تحديد حزمة.
  • allowed: صحيح للسماح للحزمة بفتح الروابط التي تم التحقّق منها تلقائيًا، وعلى "خطأ" لإيقافها
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. أوامر مدير سياسة الجهاز المتاحة

الأمر الوصف
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). في حال توفّر اتصال أو سجلات لنظام أسماء النطاقات، ستتلقّى وحدة التحكّم بسياسة الجهاز (DPC) معاودة الاتصال بـ onNetworkLogsAvailable(). راجِع تسجيل نشاط الشبكة.

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

force-security-logs يمكنك فرض إتاحة أي سجلات أمان حالية لوحدة التحكّم بسياسة الجهاز على النظام. في حال توفّر سجلّات، ستتلقّى وحدة التحكّم بسياسة الجهاز (DPC) معاودة الاتصال بـ 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 هو أداة مساعدة في واجهة الأوامر لتسجيل طريقة عرض الأجهزة التي تعمل بنظام التشغيل Android 4.4 (مستوى واجهة برمجة التطبيقات 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 للتطبيقات

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

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

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

adb shell cmd package dump-profiles package

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

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

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

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

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.