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، بما في ذلك كيفية استخدام ميزة "الاتصال" مساعد Google لتحديد المشاكل الشائعة وحلّها، راجع تشغيل التطبيقات على جهاز

آلية عمل 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):

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

  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 الفعلي.

ملاحظة: لا تنطبق التعليمات التالية على الأجهزة التي تعمل بنظام التشغيل 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 صالحًا من نظامك. للحصول على قائمة بأسماء "متوسّط مدة المشاهدة"، اكتب 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. يوفر العديد من أوامر واجهة الأوامر من قبل لألعاب Play. تتوفّر المساعدة العامة القابلة للتطبيق على جميع أوامر 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]: عند توفير اسم عملية، تحديد مستخدم عملية تفريغ البيانات. إذا لم يتم تحديده، سيتم استخدام المستخدم الحالي.
  • -b [| png | jpg | webp]: تفريغ الصور النقطية من ذاكرة الرسومات يمكنك بشكل اختياري تحديد التنسيق الذي تريد تفريغه (PNG بشكل تلقائي).
  • -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 تجريبية عند أنّك لم تشغَل تطبيقك أو صحّحت أخطائه سوى أو استخدمت Android Studio إنشاء > طوِّر APK. إذا تم إنشاء حزمة 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: الطباعة الاختيارية أيضًا لجميع نطاقات الويب المعلنة من خلال حزمة، أو "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). إذا كانت هناك البيانات أو سجلات DNS المتاحة، ستتلقى وحدة التحكم في سياسة الجهاز (DPC) onNetworkLogsAvailable() معاودة الاتصال. راجِع تسجيل الأنشطة على الشبكة.

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

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

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

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

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

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

adb shell cmd package dump-profiles package

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

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

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

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

adb shell cmd testharness enable

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