ממשק הגישור של Android (adb
) הוא כלי רב-תכליתי לשורת הפקודה שמאפשר לכם לתקשר עם מכשיר. הפקודה adb
מאפשרת לבצע מגוון פעולות במכשיר, כמו התקנה וניפוי באגים של אפליקציות. adb
מספק גישה למעטפת Unix שאפשר להשתמש בה כדי להריץ מגוון פקודות במכשיר. זו תוכנית שרת-לקוח שכוללת שלושה רכיבים:
- לקוח, ששולח פקודות. הלקוח פועל במכונת הפיתוח. אפשר להפעיל לקוח ממסוף של שורת פקודה באמצעות הפקודה
adb
. - דמון (adbd), שמריץ פקודות במכשיר. הדמון פועל כתהליך ברקע בכל מכשיר.
- שרת שמנהל את התקשורת בין הלקוח לבין תהליך הרקע. השרת פועל כתהליך ברקע במכונת הפיתוח.
adb
כלול בחבילת Android SDK Platform Tools. צריך להוריד את החבילה הזו באמצעות SDK Manager, שמתקין אותה במיקום android_sdk/platform-tools/
. אם רוצים את חבילת הכלים העצמאית של Android SDK Platform Tools, אפשר להוריד אותה כאן.
למידע על חיבור מכשיר לשימוש ב-adb
, כולל איך להשתמש בכלי Connection Assistant כדי לפתור בעיות נפוצות, אפשר לעיין במאמר הפעלת אפליקציות במכשיר חומרה.
איך adb פועל
כשמפעילים לקוח adb
, הלקוח קודם בודק אם כבר פועל תהליך של שרת adb
. אם אין כזה, התהליך של השרת מתחיל.
כשהשרת מתחיל, הוא נקשר ליציאת TCP מקומית 5037 ומאזין לפקודות שנשלחות מלקוחות adb
.
הערה: כל לקוחות adb
משתמשים ביציאה 5037 כדי לתקשר עם שרת adb
.
השרת מגדיר חיבורים לכל המכשירים הפועלים.
המערכת מאתרת אמולטורים על ידי סריקה של יציאות עם מספרים אי-זוגיים בטווח 5555 עד 5585, שהוא הטווח שבו משתמשים 16 האמולטורים הראשונים. השרת מוצא דימון (adbd) בכתובת adb
, ומגדיר חיבור ליציאה הזו.
כל אמולטור משתמש בצמד של יציאות עוקבות – יציאה עם מספר זוגי לחיבורי קונסולה ויציאה עם מספר אי-זוגי לחיבורי adb
. לדוגמה:
Emulator 1, console: 5554
Emulator 1, adb
: 5555
Emulator 2, console: 5556
Emulator 2, adb
: 5557
וכן הלאה.
כמו שרואים, האמולטור שמחובר ל-adb
ביציאה 5555 הוא אותו אמולטור שהמסוף שלו מאזין ביציאה 5554.
אחרי שהשרת יגדיר חיבורים לכל המכשירים, תוכלו להשתמש בפקודות של adb
כדי לגשת למכשירים האלה. השרת מנהל את החיבורים למכשירים ומטפל בפקודות מכמה לקוחות adb
, כך שאפשר לשלוט בכל מכשיר מכל לקוח או מסקריפט.
הפעלה של ניפוי באגים באמצעות adb במכשיר
כדי להשתמש ב-adb עם מכשיר שמחובר באמצעות USB, צריך להפעיל את האפשרות ניפוי באגים ב-USB בהגדרות המערכת של המכשיר, בקטע אפשרויות למפתחים. ב-Android 4.2 (רמת API 17) ואילך, מסך אפשרויות למפתחים מוסתר כברירת מחדל. כדי להציג אותו, מפעילים את האפשרויות למפתחים.
עכשיו אפשר לחבר את המכשיר באמצעות USB. כדי לוודא שהמכשיר מחובר, מריצים את הפקודה adb devices
מהספרייה android_sdk/platform-tools/
. אם המכשיר מחובר, השם שלו יופיע ברשימה כ'מכשיר'.
הערה: כשמחברים מכשיר עם Android בגרסה 4.2.2 (רמת API 17) ומעלה, המערכת מציגה תיבת דו-שיח עם שאלה אם לאשר מפתח RSA שמאפשר ניפוי באגים דרך המחשב הזה. מנגנון האבטחה הזה מגן על מכשירי המשתמשים כי הוא מוודא שאי אפשר להפעיל ניפוי באגים ב-USB ופקודות adb אחרות, אלא אם אפשר לבטל את נעילת המכשיר ולאשר את תיבת הדו-שיח.
מידע נוסף על חיבור למכשיר באמצעות USB זמין במאמר הפעלת אפליקציות במכשיר חומרה.
התחברות למכשיר באמצעות Wi-Fi
הערה: ההוראות שבהמשך לא חלות על מכשירי Wear שמריצים את Android 11 (רמת API 30). מידע נוסף זמין במדריך בנושא ניפוי באגים באפליקציית Wear OS.
ב-Android 11 (רמת API 30) ואילך יש תמיכה בפריסה ובניפוי באגים של האפליקציה באופן אלחוטי מתחנת העבודה באמצעות ממשק הגישור של Android (adb). לדוגמה, אתם יכולים לפרוס את האפליקציה שניתנת לניפוי באגים למספר מכשירים מרוחקים בלי שתצטרכו לחבר את המכשיר שלכם פיזית באמצעות USB. כך לא צריך להתמודד עם בעיות נפוצות בחיבור USB, כמו התקנת מנהל התקן.
לפני שמתחילים להשתמש בניפוי באגים אלחוטי, צריך לבצע את הפעולות הבאות:
-
מוודאים שתחנת העבודה והמכשיר מחוברים לאותה רשת אלחוטית.
-
מוודאים שבמכשיר פועלת מערכת Android 11 (רמת API 30) ואילך בטלפון, או Android 13 (רמת API 33) ואילך בטלוויזיה וב-WearOS. מידע נוסף זמין במאמר בנושא איך בודקים את גרסת Android ומעדכנים אותה.
-
אם משתמשים ב-IDE, צריך לוודא שמותקנת הגרסה העדכנית של Android Studio. אפשר להוריד אותו כאן.
-
בתחנת העבודה, מעדכנים לגרסה האחרונה של SDK Platform Tools.
כדי להשתמש בניפוי באגים אלחוטי, צריך להתאים את המכשיר לתחנת העבודה באמצעות קוד QR או קוד התאמה. תחנת העבודה והמכשיר צריכים להיות מחוברים לאותה רשת אלחוטית. כדי להתחבר למכשיר:
-
מפעילים את האפשרויות למפתחים במכשיר.
-
פותחים את Android Studio ובוחרים באפשרות Pair Devices Using Wi-Fi (צימוד מכשירים באמצעות Wi-Fi) בתפריט של הגדרות ההפעלה.
איור 1. תפריט הגדרות ההרצה.יופיע החלון צימוד מכשירים באמצעות Wi-Fi, כמו שמוצג באיור 2.
איור 2. חלון קופץ להתאמת מכשירים באמצעות קוד QR או קוד התאמה. -
במכשיר, מקישים על ניפוי באגים אלחוטי ומצמידים את המכשיר:
איור 3. צילום מסך של ההגדרה ניפוי באגים אלחוטי בטלפון Google Pixel.-
כדי להתאים את המכשיר באמצעות קוד QR, בוחרים באפשרות התאמת מכשיר באמצעות קוד QR וסורקים את קוד ה-QR שמופיע בחלון הקופץ התאמת מכשירים דרך Wi-Fi שמוצג באיור 2.
-
כדי להתאים את המכשיר באמצעות קוד התאמה, בוחרים באפשרות התאמת מכשיר באמצעות קוד התאמה בחלון הקופץ התאמת מכשירים באמצעות Wi-Fi. במכשיר, בוחרים באפשרות התאמה באמצעות קוד התאמה ורושמים את הקוד בן שש הספרות שמופיע. אחרי שהמכשיר מופיע בחלון התאמת מכשירים באמצעות Wi-Fi, אפשר ללחוץ על התאמה ולהזין את הקוד בן שש הספרות שמופיע במכשיר.
איור 4. דוגמה להזנת קוד בן 6 ספרות.
-
-
אחרי שהמכשיר מותאם, אפשר לנסות לפרוס את האפליקציה במכשיר.
כדי לשייך מכשיר אחר או לבטל את השיוך של המכשיר הנוכחי לתחנת העבודה, עוברים אל ניפוי באגים אלחוטי במכשיר. מקישים על שם תחנת העבודה בקטע מכשירים משויכים ובוחרים באפשרות הסרה.
-
אם רוצים להפעיל או להשבית במהירות את האפשרות 'ניפוי באגים אלחוטי', אפשר להשתמש במשבצות מפתח להגדרות מהירות של ניפוי באגים אלחוטי. המשבצות האלה נמצאות בקטע אפשרויות למפתחים > משבצות מפתח להגדרות מהירות.
איור 5. ההגדרה משבצות מפתח להגדרות מהירות מאפשרת להפעיל ולכבות במהירות את ניפוי הבאגים האלחוטי.
חיבור ל-Wi-Fi באמצעות שורת הפקודה
לחלופין, כדי להתחבר למכשיר באמצעות שורת פקודה בלי Android Studio, פועלים לפי השלבים הבאים:
-
מפעילים את האפשרויות למפתחים במכשיר, כמו שמתואר למעלה.
-
מפעילים ניפוי באגים אלחוטי במכשיר, כמו שמתואר למעלה.
-
בתחנת העבודה, פותחים חלון טרמינל ועוברים אל
android_sdk/platform-tools
. -
כדי למצוא את כתובת ה-IP, מספר היציאה וקוד ההתאמה, בוחרים באפשרות התאמת מכשיר באמצעות קוד התאמה. רושמים את כתובת ה-IP, מספר היציאה וקוד ההתאמה שמוצגים במכשיר.
-
בטרמינל של תחנת העבודה, מריצים את הפקודה
adb pair ipaddr:port
. משתמשים בכתובת ה-IP ובמספר היציאה שמופיעים למעלה. -
כשתתבקשו, תצטרכו להזין את קוד ההתאמה, כמו שמוצג בהמשך.
איור 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 עם Android מגרסה 10 (רמת API 29) ומטה. מידע נוסף זמין במדריך בנושא ניפוי באגים באפליקציה ל-Wear OS.
בדרך כלל adb
מתקשר עם המכשיר באמצעות USB, אבל אפשר להשתמש גם ב-adb
באמצעות Wi-Fi. כדי לחבר מכשיר עם Android מגרסה 10 (API ברמה 29) ומטה,
פועלים לפי השלבים הראשוניים האלה באמצעות USB:
-
מחברים את מכשיר Android ואת
adb
המחשב המארח לאותה רשת Wi-Fi. - מחברים את המכשיר למחשב המארח באמצעות כבל USB.
-
מגדירים את מכשיר היעד להאזנה לחיבור TCP/IP ביציאה 5555:
adb tcpip 5555
- מנתקים את כבל ה-USB ממכשיר היעד.
- מציאת כתובת ה-IP של מכשיר Android. לדוגמה, במכשיר Nexus, אפשר למצוא את כתובת ה-IP בהגדרות > מידע על הטאבלט (או מידע על הטלפון) > סטטוס > כתובת IP.
-
מתחברים למכשיר באמצעות כתובת ה-IP שלו:
adb connect device_ip_address:5555
-
מוודאים שהמחשב המארח מחובר למכשיר היעד:
$ adb devices List of devices attached device_ip_address:5555 device
הערה: חשוב לדעת שלא כל נקודות הגישה מתאימות. יכול להיות שתצטרכו להשתמש בנקודת גישה שחומת האש שלה מוגדרת בצורה שתומכת ב-adb
.
המכשיר שלכם מחובר עכשיו ל-adb
.
אם החיבור של adb
למכשיר שלכם נותק:
- מוודאים שהמארח עדיין מחובר לאותה רשת Wi-Fi שאליה מחובר מכשיר Android.
-
כדי להתחבר מחדש, צריך לבצע שוב את שלב
adb connect
. -
אם הבעיה נמשכת, מאפסים את המארח
adb
:adb kill-server
אחר כך מתחילים מחדש.
שאילתה לגבי מכשירים
לפני שנותנים פקודות adb
, כדאי לדעת אילו מופעים של מכשירים מחוברים לשרת adb
. כדי ליצור רשימה של מכשירים שמחוברים, משתמשים בפקודה devices
:
adb devices -l
בתגובה, adb
מדפיס את פרטי הסטטוס האלה לכל מכשיר:
- מספר סידורי:
adb
יוצר מחרוזת לזיהוי ייחודי של המכשיר לפי מספר היציאה שלו. לדוגמה, מספר סידורי:emulator-5554
- State: סטטוס החיבור של המכשיר יכול להיות אחד מהבאים:
-
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 name, צריך להזין שם 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
.
כדי לציין את היעד, פועלים לפי השלבים הבאים:
- משתמשים בפקודה
devices
כדי לקבל את המספר הסידורי של היעד. - אחרי שמאתרים את המספר הסידורי, משתמשים באפשרות
-s
עם הפקודותadb
כדי לציין את המספר הסידורי.- אם אתם מתכוונים להפעיל הרבה פקודות
adb
, אתם יכולים להגדיר את משתנה הסביבה$ANDROID_SERIAL
כך שיכיל את המספר הסידורי במקום זאת. - אם משתמשים גם ב-
-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: more than one device/emulator.
אם יש לכם כמה מכשירים זמינים אבל רק אחד מהם הוא אמולטור,
אפשר להשתמש באפשרות -e
כדי לשלוח פקודות לאמולטור. אם יש כמה מכשירים אבל רק מכשיר חומרה אחד מחובר, משתמשים באפשרות -d
כדי לשלוח פקודות למכשיר החומרה.
התקנת אפליקציה
אפשר להשתמש ב-adb
כדי להתקין קובץ APK באמולטור או במכשיר מחובר באמצעות הפקודה install
:
adb install path_to_apk
כשמתקינים APK לבדיקה, צריך להשתמש באפשרות -t
עם הפקודה install
. מידע נוסף זמין במאמר -t
.
כדי להתקין כמה קובצי APK, משתמשים ב-install-multiple
. האפשרות הזו שימושית אם מורידים את כל קובצי ה-APK של האפליקציה למכשיר ספציפי מ-Play Console ורוצים להתקין אותם באמולטור או במכשיר פיזי.
מידע נוסף על יצירת קובץ APK שאפשר להתקין במופע של אמולטור או מכשיר זמין במאמר פיתוח והרצה של האפליקציה.
הערה: אם אתם משתמשים ב-Android Studio, אתם לא צריכים להשתמש ישירות ב-adb
כדי להתקין את האפליקציה שלכם באמולטור או במכשיר. במקום זאת, Android Studio מטפל באריזה ובהתקנה של האפליקציה בשבילכם.
הגדרת העברה ליציאה אחרת
משתמשים בפקודה 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
אפשר להשתמש בפקודה 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 Platform Tools מגרסה 23 ומעלה, adb
מטפל בארגומנטים באותו אופן שבו הפקודה ssh(1)
מטפלת בהם. השינוי הזה פתר הרבה בעיות שקשורות להחדרת פקודות, ומאפשר להריץ בבטחה פקודות שמכילות מטא-תווים של מעטפת, כמו adb install Let\'sGo.apk
. השינוי הזה אומר שגם הפרשנות של כל פקודה שמכילה תווי מטא של מעטפת השתנתה.
לדוגמה, adb shell setprop key 'two words'
היא עכשיו שגיאה,
כי המירכאות נבלעות על ידי המעטפת המקומית, והמכשיר רואה
adb shell setprop key two words
. כדי שהפקודה תפעל, צריך להוסיף מרכאות פעמיים, פעם אחת למעטפת המקומית ופעם אחת למעטפת המרוחקת, כמו שעושים עם ssh(1)
. לדוגמה, adb shell setprop key "'two words'"
פועל כי המעטפת המקומית לוקחת את הרמה החיצונית של המירכאות והמכשיר עדיין רואה את הרמה הפנימית של המירכאות: setprop key 'two words'
. אפשר גם להשתמש בתו בריחה, אבל בדרך כלל קל יותר להוסיף את המירכאות פעמיים.
אפשר גם לעיין במאמר בנושא כלי שורת הפקודה Logcat, שימושי למעקב אחרי יומן המערכת.
מנהל פעילות השיחות
ב-adb
shell, אפשר להשתמש בכלי לניהול פעילויות (am
) כדי להנפיק פקודות לביצוע פעולות שונות במערכת, כמו הפעלת פעילות, עצירה בכוח של תהליך, שידור של intent, שינוי המאפיינים של מסך המכשיר ועוד.
במעטפת, התחביר של am
הוא:
am command
אפשר גם להנפיק פקודה של כלי לניהול פעילות ישירות מ-adb
בלי להיכנס למעטפת מרוחקת. לדוגמה:
adb shell am start -a android.intent.action.VIEW
טבלה 1. הפקודות הזמינות בכלי לניהול פעילות
פקודה | תיאור |
---|---|
start [options] intent
|
התחלת Activity שצוין על ידי
intent . פרטים נוספים מופיעים במפרט של ארגומנטים של כוונות. האפשרויות הן:
|
startservice [options] intent
|
התחלת Service שצוין על ידי
intent . פרטים נוספים מופיעים במפרט של ארגומנטים של כוונות. האפשרויות הן:
|
force-stop package
|
סוגרים ידנית את כל מה שמשויך ל-package .
|
kill [options] package
|
הפסקת כל התהליכים שמשויכים ל-package . הפקודה הזו משביתה רק תהליכים שניתן להשבית בבטחה ושלא ישפיעו על חוויית המשתמש.
האפשרויות הן:
|
kill-all
|
הפסקת כל התהליכים ברקע. |
broadcast [options] intent
|
שליחת כוונה לשידור. פרטים נוספים מופיעים במפרט של ארגומנטים של כוונות. האפשרויות הן:
|
instrument [options] component
|
מתחילים לעקוב אחרי מופע Instrumentation .
בדרך כלל היעד component
הוא הטופס test_package/runner_class . האפשרויות הן:
|
profile start process file
|
מפעילים את הכלי לניתוח ביצועים ב-process , כותבים את התוצאות ל-file .
|
profile stop process
|
עצירת הכלי ליצירת פרופילים בתאריך process .
|
dumpheap [options] process file
|
העברת הנתונים של process , כתיבה אל file . האפשרויות הן:
|
dumpbitmaps [options] [-p process]
|
העברת מידע על מפת סיביות מ-process
(רמת API 36 ומעלה).
האפשרויות הן:
process , יתבצע dump של מפות סיביות מכל התהליכים.
|
set-debug-app [options] package
|
מגדירים את האפליקציה package לניפוי באגים. האפשרויות הן:
|
clear-debug-app
|
מנקים את החבילה שהוגדרה קודם לניפוי באגים באמצעות set-debug-app .
|
monitor [options]
|
מתחילים לעקוב אחרי קריסות או מקרי ANR. האפשרויות הן:
|
screen-compat {on | off} package
|
שליטה במצב תאימות המסך של package .
|
display-size [reset | widthxheight]
|
החלפת גודל התצוגה במכשיר.
הפקודה הזו שימושית לבדיקת האפליקציה בגדלי מסך שונים. היא מאפשרת לדמות רזולוציית מסך קטנה באמצעות מכשיר עם מסך גדול, ולהיפך.
דוגמה: |
display-density dpi
|
עקיפה של צפיפות התצוגה במכשיר.
הפקודה הזו שימושית לבדיקת האפליקציה בצפיפויות מסך שונות, על ידי חיקוי של סביבת מסך בצפיפות גבוהה באמצעות מסך בצפיפות נמוכה, ולהפך.
דוגמה: |
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 . עכשיו אפשר:
|
list permission-groups
|
הדפסה של כל קבוצות ההרשאות הידועות. |
list permissions [options] group
|
הדפסת כל ההרשאות הידועות, או רק אלה שמופיעות ב-group . עכשיו אפשר:
|
list instrumentation [options]
|
רשימה של כל חבילות הבדיקה. עכשיו אפשר:
|
list features
|
הדפסת כל התכונות של המערכת. |
list libraries
|
הדפסה של כל הספריות שנתמכות במכשיר הנוכחי. |
list users
|
הדפסת כל המשתמשים במערכת. |
path package
|
מדפיסים את הנתיב לקובץ ה-APK של package .
|
install [options] path
|
התקנת חבילה, שצוינה על ידי path , במערכת. עכשיו אפשר:
|
uninstall [options] package
|
הסרת חבילה מהמערכת. עכשיו אפשר:
|
clear package
|
מחיקת כל הנתונים שמשויכים לחבילה. |
enable package_or_component
|
הפעלה של החבילה או הרכיב שצוינו (בפורמט package/class). |
disable package_or_component
|
השבתה של החבילה או הרכיב שצוינו (בפורמט package/class). |
disable-user [options] package_or_component
|
עכשיו אפשר:
|
grant package_name permission
|
נותנים הרשאה לאפליקציה. במכשירים עם Android 6.0 (רמת API 23) ומעלה, ההרשאה יכולה להיות כל הרשאה שמוצהרת במניפסט של האפליקציה. במכשירים עם Android בגרסה 5.1 (רמת API: 22) ומטה, ההרשאה צריכה להיות אופציונלית ומוגדרת על ידי האפליקציה. |
revoke package_name permission
|
ביטול הרשאה מאפליקציה. במכשירים עם Android 6.0 (רמת API 23) ואילך, ההרשאה יכולה להיות כל הרשאה שמוצהרת במניפסט האפליקציה. במכשירים עם Android בגרסה 5.1 (רמת API: 22) ומטה, ההרשאה צריכה להיות אופציונלית ומוגדרת על ידי האפליקציה. |
set-install-location location
|
משנים את מיקום ההתקנה שמוגדר כברירת מחדל. ערכי מיקום:
הערה: האפשרות הזו מיועדת לניפוי באגים בלבד. השימוש בהגדרה הזו עלול לגרום לאפליקציות להפסיק לפעול ולבעיות אחרות. |
get-install-location
|
מחזירה את מיקום ההתקנה הנוכחי. ערכי החזרה:
|
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 נתון, או עבור כל החבילות אם לא צוינה חבילה. קודי המדינה מוגדרים כך:
האפשרויות הן:
|
reset-app-links [options] [package]
|
איפוס מצב אימות הדומיין לחבילה שצוינה, או לכל החבילות אם לא צוינה חבילה.
האפשרויות הן:
|
verify-app-links [--re-verify] [package]
|
לשדר בקשת אימות עבור package שצוין, או עבור כל החבילות אם לא צוין אף אחד. ההודעה נשלחת רק אם החבילה לא רשמה תגובה בעבר.
|
set-app-links [--package package] state domains
|
הגדרת הסטטוס של דומיין בחבילה באופן ידני. כדי שהפעולה הזו תתבצע, החבילה צריכה להצהיר על הדומיין כ-autoVerify. הפקודה הזו לא תדווח על כשל בדומיינים שלא ניתן להחיל עליהם את המדיניות.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
הגדרה ידנית של מצב הבחירה של משתמש מארח לחבילה. כדי שזה יעבוד, צריך להצהיר על הדומיין בחבילה. הפקודה הזו לא תדווח על כשל בדומיינים שלא ניתן להחיל עליהם את המדיניות.
|
set-app-links-allowed --user user_id [--package package] allowed
|
מעבירים את ההגדרה של טיפול בקישורים מאומתים אוטומטית לחבילה.
|
get-app-link-owners --user user_id [--package package] domains
|
הדפסת הבעלים של דומיין מסוים עבור משתמש נתון, בסדר עדיפות נמוך עד גבוה.
|
התקשרות למנהל מדיניות המכשירים (dpm
)
כדי לעזור לכם לפתח ולבדוק את אפליקציות ניהול המכשירים, תוכלו להשתמש בכלי לניהול מדיניות המכשירים (dpm
) כדי להנפיק פקודות למכשיר. אפשר להשתמש בכלי כדי לשלוט באפליקציית הניהול הפעילה או לשנות את נתוני הסטטוס של מדיניות במכשיר.
במעטפת, התחביר של dpm
הוא:
dpm command
אפשר גם להנפיק פקודה של מנהל מדיניות המכשיר ישירות מ-adb
בלי להיכנס למעטפת מרוחקת:
adb shell dpm command
טבלה 3. הפקודות הזמינות של מנהל מדיניות המכשיר
פקודה | תיאור |
---|---|
set-active-admin [options] component
|
הגדרת component כאדמין פעיל.
האפשרויות הן:
|
set-profile-owner [options] component
|
הגדרת component כאדמין פעיל והחבילה שלו כבעלים של הפרופיל עבור משתמש קיים.
האפשרויות הן:
|
set-device-owner [options] component
|
מגדירים את component כאדמין פעיל ואת החבילה שלו כבעלים של המכשיר.
האפשרויות הן:
|
remove-active-admin [options] component
|
להשבית אדמין פעיל. האפליקציה חייבת להצהיר על android:testOnly במניפסט. הפקודה הזו מסירה גם את הבעלים של המכשיר והפרופיל.
האפשרויות הן:
|
clear-freeze-period-record
|
מחיקת הנתונים של תקופות ההקפאה שהוגדרו בעבר במכשיר לעדכוני מערכת OTA. ההגדרה הזו שימושית כדי להימנע מהגבלות על תזמון המכשיר כשמפתחים אפליקציות שמנהלות תקופות השהיה. איך מנהלים את עדכוני המערכת
נתמך במכשירים עם Android בגרסה 9.0 (רמת API 28) ומעלה. |
force-network-logs
|
מכריחים את המערכת להכין את כל יומני הרשת הקיימים לאחזור על ידי DPC. אם יש יומני DNS או יומני חיבורים, ה-DPC מקבל את הקריאה החוזרת onNetworkLogsAvailable() . מידע נוסף זמין במאמר בנושא תיעוד הפעילות ברשת.
יש הגבלה על קצב יצירת הבקשות מהפקודה הזו. נתמך במכשירים עם Android בגרסה 9.0 (רמת API 28) ומעלה. |
force-security-logs
|
מכריחים את המערכת להפוך את יומני האבטחה הקיימים לזמינים ל-DPC. אם יש יומנים זמינים, ה-DPC מקבל את הקריאה החוזרת onSecurityLogsAvailable() . איך רושמים פעילות של מכשיר ארגוני
יש הגבלה על קצב יצירת הבקשות מהפקודה הזו. נתמך במכשירים עם Android בגרסה 9.0 (רמת API 28) ומעלה. |
יצירת צילום מסך
הפקודה screencap
היא כלי שורת פקודה לצילום מסך של תצוגת המכשיר.
במעטפת, התחביר של screencap
הוא:
screencap filename
כדי להשתמש ב-screencap
משורת הפקודה, מזינים את הפקודה הבאה:
adb shell screencap /sdcard/screen.png
דוגמה לצילום מסך באמצעות הפקודה adb
ב-Shell, והורדת הקובץ מהמכשיר באמצעות הפקודה pull
:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
לחלופין, אם לא מציינים את שם הקובץ, screencap
כותב את התמונה לפלט הסטנדרטי. בשילוב עם האפשרות -p
לציין פורמט PNG, אפשר להזרים את צילום המסך של המכשיר ישירות לקובץ במחשב המקומי.
הנה דוגמה לצילום מסך ושמירתו באופן מקומי בפקודה אחת:
# use 'exec-out' instead of 'shell' to get raw data $ adb exec-out screencap -p > screen.png
צלם סרטון.
הפקודה screenrecord
היא כלי שורת פקודה להקלטת התצוגה של מכשירים עם Android 4.4 (רמת API 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 |
מגדירים את קצב הביטים של הסרטון, במגה-ביט לשנייה. ערך ברירת המחדל הוא 20Mbps.
אתם יכולים להגדיל את קצב הביטים כדי לשפר את איכות הסרטון, אבל כתוצאה מכך קובצי הסרטונים יהיו גדולים יותר. בדוגמה הבאה, קצב הביטים של ההקלטה מוגדר ל-6Mbps:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
מגדירים את זמן ההקלטה המקסימלי בשניות. ערך ברירת המחדל והערך המקסימלי הוא 180 (3 דקות). |
--rotate |
סיבוב הפלט ב-90 מעלות. התכונה הזו היא ניסיונית. |
--verbose |
הצגת פרטי היומן במסך של שורת הפקודה. אם לא מגדירים את האפשרות הזו, כלי השירות לא מציג מידע בזמן שהוא פועל. |
קריאת פרופילים של ART לאפליקציות
החל מ-Android 7.0 (רמת API 24), סביבת זמן הריצה ל-Android (ART) אוספת פרופילים של ביצועים עבור אפליקציות מותקנות, שמשמשים לאופטימיזציה של ביצועי האפליקציה. בודקים את הפרופילים שנאספו כדי להבין אילו שיטות מופעלות לעיתים קרובות ואילו מחלקות נמצאות בשימוש במהלך הפעלת האפליקציה.
הערה: אפשר לאחזר את שם הקובץ של פרופיל ההפעלה רק אם יש לכם גישת root למערכת הקבצים, למשל באמולטור.
כדי ליצור טקסט עם פרטי הפרופיל, משתמשים בפקודה הבאה:
adb shell cmd package dump-profiles package
כדי לאחזר את הקובץ שנוצר, משתמשים בפקודה:
adb pull /data/misc/profman/package.prof.txt
איפוס מכשירי בדיקה
אם אתם בודקים את האפליקציה בכמה מכשירי בדיקה, כדאי לאפס את המכשיר בין הבדיקות, למשל כדי להסיר נתוני משתמשים ולאפס את סביבת הבדיקה. אפשר לבצע איפוס להגדרות היצרן במכשיר בדיקה עם Android מגרסה 10 (API ברמה 29) ומעלה באמצעות פקודת ה-shell 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 רק אם יש לכם גישת root למערכת הקבצים, למשל באמולטור.
מידע נוסף זמין במסמכי התיעוד של שורת הפקודה של sqlite3
.
adb USB backends
שרת ה-adb יכול ליצור אינטראקציה עם מחסנית ה-USB דרך שני קצוות עורפיים. הוא יכול להשתמש בקצה העורפי המקורי של מערכת ההפעלה (Windows, Linux או macOS) או בקצה העורפי של libusb
.
חלק מהתכונות, כמו attach
, detach
וזיהוי מהירות ה-USB, זמינות רק כשמשתמשים ב-libusb
backend.
אפשר לבחור בקצה העורפי באמצעות משתנה הסביבה ADB_LIBUSB
.
אם לא מגדירים את המדיניות, adb משתמש בקצה העורפי שמוגדר כברירת מחדל. התנהגות ברירת המחדל משתנה בהתאם למערכת ההפעלה. החל מ-ADB v34, קצה העורפי liubusb
משמש כברירת מחדל בכל מערכות ההפעלה, למעט Windows, שבה נעשה שימוש בקצה העורפי המקורי כברירת מחדל. אם ADB_LIBUSB
מוגדר, הוא קובע אם נעשה שימוש בחלק האחורי המקורי או ב-libusb
. מידע נוסף על משתני סביבה של adb זמין בדף ההוראות של adb.
קצה עורפי של adb mDNS
ADB יכול להשתמש בפרוטוקול DNS של שידור מרובה כדי לחבר באופן אוטומטי את השרת והמכשירים. שרת ה-ADB מגיע עם שני קצוות עורפיים, Bonjour (mdnsResponder של אפל) ו-Openscreen.
הקצה העורפי של Bonjour צריך דמון שפועל במכונת המארח.
ב-macOS, הדמון המובנה של אפל פועל תמיד, אבל ב-Windows וב-Linux, המשתמש צריך לוודא שהדמון mdnsd
פועל.
אם הפקודה adb mdns check
מחזירה שגיאה, סביר להניח ש-ADB משתמש בקצה העורפי של Bonjour, אבל אין שד Bonjour שפועל.
הקצה העורפי של Openscreen לא צריך דמון שפועל במחשב. התמיכה ב-Openscreen backend ב-macOS מתחילה ב-ADB v35. יש תמיכה ב-Windows וב-Linux מגרסה 34 של ADB.
כברירת מחדל, ADB משתמש ב-Bonjour backend. אפשר לשנות את ההתנהגות הזו באמצעות משתנה הסביבה ADB_MDNS_OPENSCREEN
(הגדרה לערך 1
או 0
). פרטים נוספים זמינים בדף ההוראות של ADB.
מצב צילום רציף ב-ADB (החל מ-ADB 36.0.0)
מצב פרץ הוא תכונה ניסיונית שמאפשרת ל-ADB להמשיך לשלוח מנות למכשיר גם לפני שהמכשיר הגיב למנה הקודמת. השימוש ב-ADB מגדיל מאוד את התפוקה כשמעבירים קבצים גדולים, ומקטין את זמן האחזור במהלך ניפוי הבאגים.
מצב צילום רציף מושבת כברירת מחדל. כדי להפעיל את התכונה, מבצעים אחת מהפעולות הבאות:
- מגדירים את משתנה הסביבה
ADB_DELAYED_ACK
לערך1
. - ב-Android Studio, עוברים להגדרות של מאתר הבאגים בקובץ (או ב-Android Studio ב-macOS) > הגדרות > Build, Execution, Deployment > Debugger ומגדירים את ADB Server Burst Mode לEnabled.