هناك الكثير من الأمور التي قد لا تعرفها عن Android Debug Bridge. انقر هنا للحصول على بعض النصائح والحيل المفيدة لاستخدام ADB!
روابط سريعة
- الوصول إلى القشرة
- الاتصال بأجهزة متعددة
- نقل الملفات
- تسجيل
- قائمة التطبيقات المثبتة من خلال ADB
- تثبيت وإلغاء تثبيت التطبيقات من خلال ADB
- استخراج ملفات APK باستخدام ADB
- النسخ الاحتياطي واستعادة بيانات التطبيق
- قائمة مكونات التطبيق
- إطلاق الأنشطة والخدمات وأجهزة استقبال البث
- تعطيل وتمكين أي تطبيق تقريبًا
- التقاط لقطات الشاشة
- نقل البيانات الثنائية بين جهاز الكمبيوتر وجهاز Android
إذا كنت من عشاق Android المتربصين في مشهد التعديل، أو مطور تطبيقات لأي مدة بمرور الوقت، عاجلاً أم آجلاً، ستعثر على أداة رائعة تسمى Android Debug Bridge، أو ADB for قصير. يتم استخدامه على نطاق واسع في Android Studio كأداة مساعدة مصاحبة لسطر الأوامر. يستخدمه مطورو Android أيضًا كحل مستقل لتثبيت التطبيقات واختبارها يدويًا الهواتف الذكية التي تعمل بنظام أندرويد وكذلك أجهزة Android التي تمت محاكاتها.
ولكن هناك الكثير الذي يمكن أن يفعله ADB، ومعظمه ليس مفيدًا للمطورين فقط. حتى لو لم تكن مطورًا، وأنت تقرأ هذا المقال، فمن المحتمل أنك استخدمت ADB مرة أو مرتين
تحميل التطبيق بشكل جانبي أو تعديل إذن. ولكن هذا ليس كل ما يمكن استخدام ADB من أجله. استمر في القراءة للحصول على بعض النصائح والحيل لاستخدام ADB التي ربما لم تكن على علم بها.ستحتاج إلى تشغيل ADB على جهاز الكمبيوتر الخاص بك. تأكد من مراجعة مقالتنا على كيفية تثبيت بنك التنمية الآسيوي إذا كنت بحاجة إلى مساعدة. إذا كنت تستخدم نظام التشغيل Windows، فستحتاج أيضًا إلى ذلك قم بتثبيت برامج تشغيل USB المناسبة لـ OEM لجهاز Android الخاص بك.
الوصول إلى القشرة
إذا كنت قد استخدمت ADB من قبل، فقد تكون معتادًا على تشغيل الأوامر كلها في سطر واحد. ولكن يمكنك أيضًا استخدام ADB لفتح غلاف طرفي على جهازك وتشغيل الأوامر مباشرة. وهذا سهل!
في المحطة الطرفية أو نافذة موجه الأوامر:
adb shell
سيتم بعد ذلك الترحيب بك مع أ $
رمز حيث يمكنك تشغيل الأوامر مباشرة على جهازك.
الاتصال بأجهزة متعددة
يمكن لـ ADB التواصل مع أجهزة متعددة في نفس الوقت. ومع ذلك، يجب عليك تحديد الجهاز الهدف عند إصدار أوامر ADB في مثل هذه السيناريوهات.
للقيام بذلك، ستحتاج إلى معرفة الرقم التسلسلي للجهاز المستهدف. يمكنك الحصول على المسلسل باستخدام أمر الأجهزة:
adb devices
الآن، استخدم -s
خيار لتحديد الرقم التسلسلي للجهاز المستهدف. مثال:
adb -s <serialnumber> shell
نقل الملفات
بالنسبة لعشاق سطر الأوامر، يوفر ADB طريقة سهلة للغاية لنقل الملفات من وإلى جهاز Android الخاص بك. مجرد استخدام pull
أمر لنسخ الملفات والدلائل من الجهاز و push
أمر نسخ الملفات والدلائل إلى الجهاز:
إذا كنت تريد نسخ ملف أو دليل بأدلته الفرعية إلى جهاز Android:
adb push local_path device_path
- مثال:
adb push D:\image.png /sdcard
سيقوم الأمر التالي بنسخ ملف أو دليل بأدلته الفرعية من جهاز Android إلى الكمبيوتر المضيف:
adb pull device_path local_path
- مثال:
adb pull /sdcard/backup_April.tar D:\Backup
تسجيل
يوفر Android Studio نافذة لوجكات، والذي يدعم عرض السجلات من جهازك في الوقت الفعلي. ومع ذلك، فهو ليس مفيدًا تمامًا لمعالجة الدفعات. لحسن الحظ، تأتي أجهزة Android مزودة بالأمر logcat المتوفر من خلال ADB، والذي يمكن استخدامه لتفريغ رسائل سجل النظام والتطبيقات وطباعتها على الشاشة.
بناء الجملة الأساسي هو كما يلي:
adb logcat
لمعرفة المزيد، قم بإلقاء نظرة على برنامجنا التعليمي حول كيفية أخذ سجلات النظام وسجلات kernel وdmesg على Android.
بيض عيد الفصح
تقدم Google اثنتين من بيضات عيد الفصح الرائعة المتعلقة بالأمر logcat.
- الأول هو lolcat، إشارة إلى ميمي LOLcat. إنه يعطي نفس إخراج أمر logcat العادي.
adb lolcat
- والثاني هو longcat، وهو ما يعادل الأمر logcat -v long. يعرض جميع حقول البيانات التعريفية ويفصل الرسائل بسطر فارغ.
adb longcat
قائمة التطبيقات المثبتة من خلال ADB
لرؤية التطبيقات المثبتة على جهازك، يمكنك استخدام الأمر التالي:
adb shell pm list packages
سيؤدي هذا إلى إرجاع قائمة بأسماء حزم التطبيقات المثبتة، مع إضافة كل منها على سطر خاص بها package:
.
خيارات
هناك أيضًا بعض الخيارات التي يمكنك استخدامها لاسترداد قوائم أكثر تحديدًا.
- -F سيتضمن المسار إلى ملف APK الأساسي لكل تطبيق، بالإضافة إلى اسم الحزمة الخاصة به.
- -أ سيتأكد من إرجاع جميع الحزم المعروفة غير APEX.
- -د سيؤدي الأمر إلى إرجاع الحزم المعطلة فقط.
- -ه سيؤدي الأمر إلى إرجاع الحزم الممكّنة فقط.
- -س سيؤدي الأمر إلى إرجاع حزم النظام فقط.
- -3 سيؤدي الأمر إلى إرجاع حزم الطرف الثالث فقط.
- -أنا سيتضمن اسم حزمة التثبيت لكل حزمة.
- -U سوف تتضمن الحزمة UID لكل حزمة.
- -ش سوف تشمل الحزم التي تم إلغاء تثبيتها.
- --show-versioncode سيتضمن رمز الإصدار لكل حزمة.
- --القمة فقط سوف يقوم بإرجاع حزم APEX فقط.
- --uid سيعرض فقط الحزم ذات المعرف الفريد (UID) المحدد.
- --مستخدم سوف تظهر فقط الحزم التي تنتمي إلى معرف المستخدم المحدد.
تثبيت وإلغاء تثبيت التطبيقات من خلال ADB
يعد هذا استخدامًا شائعًا نسبيًا لـ ADB، ولكن من الجدير بالذكر على أي حال. ومن بين الطرق الأخرى، يمكنك أيضًا الاستفادة من ADB للقيام بذلك تثبيت وإلغاء تثبيت تطبيقات Android إلى جهاز Android الخاص بك.
تثبيت APK
إذا كان لديك ملف APK على جهاز الكمبيوتر الخاص بك، فيمكنك تثبيته على جهازك باستخدام ما يلي:
adbinstall-rsomeapk.apk
تذكر أن تحل محل someapk.apk
مع المسار الكامل إلى APK الذي تريد تثبيته.
خيارات
هناك مجموعة من الخيارات لتثبيت ملفات APK من خلال ADB.
- ال -ص يسمح الخيار لـ ADB بالتثبيت على تطبيق موجود (أي التحديث). في نظام Android Pie والإصدارات الأحدث، لا يتعين عليك تحديد هذا الخيار.
- ال -ر الخيار، لنظام Android Pie والإصدارات الأحدث سوف يتسبب في فشل التثبيت إذا كان التطبيق مثبتًا بالفعل.
- ال -أنا يتيح لك الخيار تحديد اسم حزمة المثبت. هذا هو ما يتم إرجاعه إذا أراد Android معرفة ما قام بتثبيت APK.
- ال -ر يتيح الخيار APK مع أندرويد: testOnly = "صحيح" في البيان الخاص به ليتم تثبيته.
- ال -د يتيح الخيار لملف APK المحدد الرجوع إلى إصدار سابق من تطبيق مثبت بالفعل. يعمل هذا فقط إذا كان كلا الإصدارين من التطبيق قابلين للتصحيح.
- ال -ز خيار Android Marshmallow والإصدارات الأحدث يمنح تلقائيًا جميع أذونات وقت التشغيل للتطبيق المثبت.
هذا ليس كل منهم. إذا كنت تريد قائمة كاملة، يمكنك التحقق من الوثائق المضمنة.
ملفات APK وحزم متعددة
إذا كان لديك مجموعة من ملفات APK التي تريد تثبيتها مرة واحدة، إما من تطبيقات متعددة، أو لأنك تقوم بتثبيت حزمة تطبيق، فيمكنك استخدام ADB install-multiple
و install-multi-package
سمات.
إذا كانت جميع ملفات APK الخاصة بك مخصصة لتطبيق واحد، فاستخدمها install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
وإلا استخدم install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
تتشابه خيارات هذه الأوامر مع install
، ولكن مع بعض القيود. تحقق من وثائق ADB المضمنة بشأن الخيارات المتاحة.
إلغاء تثبيت أحد التطبيقات
لإلغاء التثبيت باستخدام ADB، ستحتاج إلى اسم حزمة التطبيق الذي تريد إلغاء تثبيته. تحقق من القسم ل قائمة التطبيقات المثبتة إذا لم تكن قد فعلت ذلك بالفعل.
بمجرد حصولك على اسم الحزمة، تكون عملية إلغاء التثبيت بسيطة مثل:
adb uninstall <packagename>
لا يمكنك عمومًا إلغاء تثبيت النظام أو التطبيقات المثبتة مسبقًا باستخدام هذا الأمر. ومع ذلك، قد تتمكن من تعطيلها باستخدام ADB. تحقق من القسم تعطيل وتمكين أي تطبيق تقريبًا للتفاصيل.
استخراج ملفات APK باستخدام ADB
هناك الكثير من الأسباب التي قد تدفعك إلى استخراج ملفات APK لأحد التطبيقات. ربما تريد نسخه احتياطيًا لاستخدامه في المستقبل، أو ربما لم يعد متاحًا عبر الإنترنت وتريد نقله إلى جهاز آخر.
يعد استخراج التطبيق باستخدام ADB أمرًا بسيطًا جدًا. أولاً، ستحتاج إلى العثور على اسم حزمة التطبيق الذي تريد استخراجه. هناك عدة طرق للقيام بذلك، ولكن أسهلها عادة هو استخدام تطبيق الإعدادات على جهازك لعرض قائمة بجميع التطبيقات المثبتة، وحدد التطبيق الذي تريده، ثم قم بالتمرير لأسفل حتى تجد اسم الحزمة أو التطبيق بطاقة تعريف.
بمجرد حصولك على اسم الحزمة، قم بتشغيل الأمر التالي:
adb shell pm path <packagename>
سيعيد هذا الأمر مسار جميع ملفات APK لاسم الحزمة هذا.
يمكنك بعد ذلك استخدام الأمر التالي لسحب كل ملف APK إلى جهاز الكمبيوتر الخاص بك:
adb pull /path/to/apk.apk
النسخ الاحتياطي واستعادة بيانات التطبيق
على الرغم من أن Google لم تتوصل بعد إلى منهجية النسخ الاحتياطي بنقرة واحدة لنظام التشغيل iOS، إلا أنه يمكنك استخدام ADB لإجراء نسخ احتياطي واستعادة التطبيقات المثبتة مع بياناتها. ومع ذلك، فإن الوظيفة أبعد ما تكون عن الكمال، وقد قامت جوجل بذلك بالفعل تم وضع علامة على الميزة على أنها مهملة.
دعم
لعمل نسخة احتياطية من تطبيق واحد باستخدام ملف APK الخاص به:
adb backup -apk <packagename> -f package_name_backup.ab
في حالة رغبتك في عمل نسخة احتياطية لجميع بيانات التطبيق مرة واحدة:
adb backup -f all -all -apk -nosystem
نظرًا لأن وحدة الاستعادة لا يمكنها إجراء استعادة فردية خاصة بالتطبيق، فمن الأفضل إنشاء نسخ احتياطية خاصة بالحزمة. يمكن لمقتطف الأمر التالي (المتوافق مع Linux/macOS ونظام Windows الفرعي لنظام Linux) القيام بذلك نيابةً عنك:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
يعيد
أولاً، تحتاج إلى تثبيت ملف APK المحفوظ؛
adb install <packagename>.apk
وبعد ذلك يمكنك استعادة بياناته:
adbrestorepackage_name_backup.ab
للتكرار، تحتوي وظائف النسخ الاحتياطي والاستعادة في ADB على تحذيرات متعددة، بما في ذلك النتائج المتغيرة اعتمادًا على ذاكرة القراءة فقط (ROM).
قائمة مكونات التطبيق
مكونات التطبيق هي أشياء مثل أنشطته، وأجهزة استقبال البث، والخدمات، وما إلى ذلك. في بعض الأحيان يكون من المفيد معرفة أسماء هذه المكونات في تطبيق معين، خاصة إذا كنت تريد تشغيل أنشطة مخفية أو إرسال بث ببيانات محددة.
لسوء الحظ، لا يمتلك ADB طريقة نظيفة جدًا لإدراج مكونات التطبيق. لكن هذا ممكن. قم بتشغيل الأمر التالي:
adb shell dumpsys package
سيتم إرجاع مجموعة كاملة من النص.
- قم بالتمرير حتى تجد جدول محلل النشاط عنوان لرؤية الأنشطة.
- انظر تحت جدول محلل الاستقبال لأجهزة استقبال البث
- افحص ال جدول حل الخدمة للخدمات.
- وما إلى ذلك وهلم جرا.
سيُظهر كل مكون الإجراء المطلوب لتشغيله، واسم المكون، وربما بعض المعلومات الإضافية.
وبدلاً من ذلك، إذا كنت تريد طريقة أسهل لرؤية الأنشطة والخدمات وأجهزة الاستقبال، فيمكنك استخدام تطبيق Root Activity Launcher من XDA Recognized Developer زكريا1. وسوف يعرض لك تلك المكونات لكل تطبيق، بالإضافة إلى مجموعة من الميزات المفيدة الأخرى.
السعر: 0.99.
إطلاق الأنشطة والخدمات وأجهزة استقبال البث
يمكن أيضًا استخدام ADB لبدء الأنشطة وبدء الخدمات وإخطار BroadcastReceivers. يمكنك أيضًا تحديد عناوين URI للبيانات وإضافات Intent إذا لزم الأمر.
لتشغيل المكونات، ستحتاج إلى اسم المكون الذي تريد تشغيله. يمكنك أن ترى كيفية الحصول على ذلك من قائمة مكونات التطبيق قسم.
صيغة الأمر لبدء النشاط هي كالتالي:
am start -a <action> -n <component>
يكون بناء جملة الأمر لبدء الخدمة كما يلي:
am startservice -a <action> -n <component>
صيغة الأمر لإخطار BroadcastReceiver هي شيء من هذا القبيل:
am broadcast -a <action> -n <component>
في معظم الحالات، بالنسبة للأنشطة والخدمات، لا تحتاج إلى تحديد إجراء بشكل صريح. ستحتاج إليه عادةً فقط إذا كان المكون يستخدم مكونًا آخر غير android.intent.action. رئيسي.
علاوة على بناء الجملة الأساسي، إليك كيفية تحديد المزيد من البيانات لتمريرها. بشكل عام، يجب وضع كافة قيم البيانات بين علامتي اقتباس.
- -د يسمح لك بتحديد URI للبيانات.
- -ه أو --es يسمح لك بتحديد سلسلة إضافية.
- --esn يسمح لك بتحديد سلسلة إضافية فارغة.
- --ez يستخدم لتحديد قيمة منطقية إضافية.
- --ei يستخدم لتحديد عدد صحيح إضافي.
- --el هو لتحديد اضافية طويلة.
- --ef سوف تمر تعويم اضافية.
- --الاتحاد الأوروبي يمرر URI إضافي.
- --ecn يمكن استخدامها لتحديد اسم مكون إضافي.
-
--eia
سيتم تمرير القيم كعدد صحيح[] إضافي., ,... -
--eial
سوف يمرر القيم كقائمة, ,... . - تعمل نفس وسيطات المصفوفة والقائمة أيضًا مع الأحرف الطويلة والعوامات والسلاسل. فقط استبدل أنا بالحرف المناسب.
- -F يسمح لك بتحديد العلم.
هناك المزيد من خيارات السلوك التي يمكنك استخدامها، لذا راجع الوثائق المضمنة للحصول على التفاصيل.
تعطيل وتمكين أي تطبيق تقريبًا
لا يمكن إلغاء تثبيت تطبيقات النظام في Android، ولسوء الحظ، لا يمكن أيضًا تعطيل الكثير منها من خلال الإعدادات. على الرغم من أن ADB لن يسمح لك بإلغاء تثبيتها، إلا أنه قد يساعدك على تعطيلها.
أولاً، تأكد من الحصول على اسم حزمة التطبيق الذي تريد تعطيله. ثم جرب هذه الأوامر. إذا فشل أحد، حاول الخيار التالي.
-
مساء تعطيل
- لإعادة التمكين، استخدم مساء تمكين
-
مساء تعطيل المستخدم - المستخدم 0
- لإعادة التمكين، استخدم مساء تمكين
-
إخفاء مساءا
- لإعادة التمكين، استخدم مساء إظهار
-
مساءا تعليق
- لإعادة التمكين، استخدم مساء إلغاء التعليق
-
مساءً إلغاء التثبيت -k --user 0
- لإعادة التمكين، استخدم مساءً التثبيت موجود
- يؤدي هذا إلى إلغاء تثبيت التطبيق بشكل فعال من ملف تعريف المستخدم الخاص بك. بينما الأمر لإعادة التمكين يجب العمل، ليس هناك ما يضمن أنه سيفعل ذلك. قد تحتاج إلى إعادة ضبط المصنع لاستعادة التطبيق.
- إذا كنت تستخدم ملفات تعريف مستخدمين متعددة على جهازك، فتأكد من استبدال 0 في الأوامر أعلاه بمعرف المستخدم الفعلي لديك.
- لإعادة التمكين، استخدم مساءً التثبيت موجود
لمعرفة المزيد، تحقق من البرنامج التعليمي لدينا على كيفية إلغاء تثبيت برامج الناقل وbloatware OEM دون الوصول إلى الجذر.
التقاط لقطات الشاشة
توفر معظم ROMs التي تعمل بنظام التشغيل Android أداتين مساعدتين مفيدتين - Screencap وScreenrecord - لالتقاط لقطات الشاشة وتسجيل أنشطة الشاشة، على التوالي. يمكنك الاتصال بهم مباشرة من ADB Shell لالتقاط لقطة شاشة ثابتة أو مقطع فيديو لشاشة هاتفك وحفظه مباشرة على وحدة التخزين الداخلية للجهاز.
إن بناء جملة التقاط لقطة الشاشة بسيط جدًا:
adb shell screencap /sdcard/screenshot.png
وبالمثل، إذا كنت بحاجة إلى التقاط لقطة شاشة ديناميكية، فقم بما يلي:
adb shell screenrecord /sdcard/recording.mp4
كما قد تتوقع، فإن أداة Screencap بسيطة إلى حد ما، في حين توفر الأداة المساعدة لتسجيل الشاشة العديد من المعلمات. الخيارات لهذا الأخير هي كما يلي:
-
--الحجم العرض × الارتفاع
- اضبط دقة ملف الفيديو (على سبيل المثال "1280x720"). افتراضيًا، يحاول الحصول على دقة العرض الرئيسية للجهاز المستهدف (إذا كان مدعومًا)، ويعود إلى 1280 × 720 إذا لم يكن كذلك.
-
- معدل معدل البت
- ضبط معدل البت للفيديو، بالبت في الثانية. يمكن تحديد القيمة على أنها بتات أو ميغابت، على سبيل المثال. "4000000" يعادل "4M".
-
--تقرير الشوائب
- يمكنك إضافة معلومات إضافية، مثل تراكب الطابع الزمني، والذي يمكن أن يكون مفيدًا لتوضيح الأخطاء.
-
--الوقت المحدد TIME
- اضبط الحد الأقصى لوقت التسجيل بالثواني. الافتراضي / الحد الأقصى هو 180.
-
--معرف معرف العرض
- حدد معرف العرض الفعلي للتسجيل. يتم تعيين الافتراضي على العرض الأساسي. راجع "dumpsys SurfaceFlinger --display-id" للحصول على معرفات العرض الصالحة.
-
--مطول
- عرض معلومات متعمقة بخصوص جلسة التسجيل.
يمكنك توسيع قدرات الأدوات المساعدة المدمجة في التقاط الشاشة في نظام Android من خلال com.scrcpy. إنه حل مفتوح المصدر لعكس الشاشة، والذي يستخدم قوة ADB.
نقل البيانات الثنائية بين جهاز الكمبيوتر وجهاز Android
في حالة عدم رغبتك في إنشاء غلاف ADB متكامل، ولكنك ترغب في دمج عبور مبسط للبيانات الثنائية بين الكمبيوتر المضيف وجهاز Android المستهدف، يمكنك الاستفادة من exec-in
و exec-out
الأوامر.
على الرغم من وجود طويل، لا تزال أوامر exec-in و exec-out غير موثقة. قد تؤدي إلى تلف الملف بسبب الطريقة التي تتعامل بها الأصداف المختلفة مع المدخلات والمخرجات. استخدم بحذر.
يساعدك الأول على تنفيذ أمر على Android وتغذية مدخلات وحدة التحكم غير المصفاة كمعلمة خاصة به، في حين أن والثاني يفعل العكس تمامًا، أي تشغيل أمر على Android والتقاط مخرجاته الثنائية التي لم تتم تصفيتها بواسطة نظام التشغيل المضيف.
مثال:
adb exec-out "screencap -p" > "D:\screenshot.png"
سوف يستخدم هذا screencap
أمر Android لالتقاط لقطة شاشة لشاشة الهاتف، ولكنه يحفظها مباشرة بتنسيق Screen.png في القسم D: بالكمبيوتر المضيف (شريطة أن يعمل بنظام Windows). على الجانب الآخر،
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
سيؤدي هذا إلى استخراج محتويات ملف Backup.tar المخزن في القسم D: للكمبيوتر المضيف (الذي يعمل بنظام Windows) في جذر وحدة التخزين الداخلية لجهاز Android.
يعد ADB أداة قوية بشكل لا يصدق، ويمكنه أن يفعل أكثر بكثير مما هو مذكور أعلاه. الأوامر الواردة في هذه المقالة هي مجرد نقطة بداية مفيدة. لمزيد من الاستخدام المتقدم، تحقق من أوامر مثل كمد -ل لرؤية الخدمات المختلفة التي قد تتمكن من التفاعل معها و ليرة سورية -l /النظام/bin لرؤية الملفات التنفيذية المختلفة للأوامر المتوفرة في ذاكرة القراءة فقط (ROM) لنظام Android.
بالنسبة لرحلات Android الأخرى، راجع أدلةنا على كيفية عمل روت لهاتفك الذكي الذي يعمل بنظام Android, كيفية تثبيت ريكفري TWRP، و كيفية تثبيت ROM مخصص على جهاز Android الخاص بك.