Android Debug Bridge (adb)

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

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

تم تضمين adb في حزمة أدوات Android SDK Platform. نزِّل هذه الحزمة باستخدام مدير 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":

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

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

إذا اختبرت تطبيقك على عدة أجهزة اختبار، قد يكون من المفيد إعادة ضبط جهازك بين الاختبارات لإزالة بيانات المستخدمين وإعادة ضبط بيئة الاختبار. يمكنك إعادة ضبط الجهاز على الإعدادات الأصلية لجهاز اختبار يعمل بنظام التشغيل 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.

خلفيات USB من Adb

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

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

خلفيات adb mDNS

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

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

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

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