ממשק הגישור של Android (adb) הוא כלי רב-תכליתי לשורת הפקודה שמאפשר לכם לתקשר עם מכשיר. הפקודה adb מאפשרת לבצע מגוון פעולות במכשיר, כמו התקנה וניפוי באגים של אפליקציות. adb מספק גישה למעטפת Unix שבה אפשר להריץ מגוון פקודות במכשיר. זו תוכנית שרת-לקוח שכוללת שלושה רכיבים:
- לקוח, ששולח פקודות. הלקוח פועל במחשב הפיתוח. אפשר להפעיל לקוח ממסוף של שורת פקודה על ידי הרצת פקודה של
adb. - דמון (adbd), שמריץ פקודות במכשיר. הדמון פועל כתהליך ברקע בכל מכשיר.
- שרת שמנהל את התקשורת בין הלקוח לבין תהליך הרקע. השרת פועל כתהליך ברקע במחשב הפיתוח.
adb כלול בחבילת Android SDK Platform Tools. צריך להוריד את החבילה הזו באמצעות SDK Manager, שמתקין אותה במיקום android_sdk/platform-tools/. אם אתם רוצים את חבילת הכלים העצמאית של פלטפורמת Android SDK, אתם יכולים להוריד אותה כאן.
מידע על חיבור מכשיר לשימוש ב-adb, כולל איך להשתמש בכלי 'עזרה בחיבור' כדי לפתור בעיות נפוצות, זמין במאמר הפעלת אפליקציות במכשיר חומרה.
Android CLI
הורדת Android CLIניסיון להשתמש ב-Android CLI כדי לתקשר עם מכשיר
לדוגמה, אתם יכולים להשתמש בפקודות
android run או screen capture כשאתם צריכים לפרוס אפליקציה במכשיר ולבצע איתה אינטראקציה משורת הפקודה.android [install|run|screen capture|layout]איך adb פועל
כשמפעילים לקוח adb, הלקוח בודק קודם אם כבר פועל תהליך שרת adb. אם אין כזה, התהליך של השרת מתחיל.
כשהשרת מתחיל, הוא נקשר ליציאת TCP מקומית 5037 ומאזין לפקודות שנשלחות מלקוחות adb.
הערה: כל לקוחות adb משתמשים ביציאה 5037 כדי לתקשר עם שרת adb.
השרת מגדיר חיבורים לכל המכשירים הפועלים.
הוא מאתר אמולטורים על ידי סריקת יציאות עם מספרים אי-זוגיים בטווח 5555 עד 5585, שהוא הטווח שבו משתמשים 16 האמולטורים הראשונים. אם השרת מוצא דימון (daemon) של adb (adbd), הוא מגדיר חיבור ליציאה הזו.
כל אמולטור משתמש בצמד של יציאות עוקבות – יציאה עם מספר זוגי לחיבורי קונסולה ויציאה עם מספר אי-זוגי לחיבורי 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 Debug Bridge (adb). לדוגמה, אתם יכולים לפרוס את האפליקציה שניתנת לניפוי באגים למספר מכשירים מרוחקים בלי שתצטרכו לחבר את המכשיר שלכם פיזית באמצעות USB. כך לא צריך להתמודד עם בעיות נפוצות בחיבור USB, כמו התקנת מנהל התקן.
ב-Android 17, לצד adb 37.0.0, מוצגת גרסה חדשה של adb Wi-Fi (2.0), שפותרת הרבה בעיות שימושיות שהיו בגרסה הקודמת. חשוב לציין שהמכשיר יתחבר אוטומטית לתחנת העבודה כשהוא יתחבר לרשת מהימנה לניפוי באגים אלחוטי.
לפני שמתחילים להשתמש בניפוי באגים אלחוטי, צריך לבצע את הפעולות הבאות:
-
מוודאים שתחנת העבודה והמכשיר מחוברים לאותה רשת אלחוטית.
-
מוודאים שבטלפון מותקנת גרסת Android 11 (רמת API 30) ומעלה, או שבטלוויזיה וב-WearOS מותקנת גרסת Android 13 (רמת API 33) ומעלה. מידע נוסף זמין במאמר בנושא איך בודקים את גרסת Android במכשיר ומעדכנים אותה.
-
בתחנת העבודה, מעדכנים לגרסה האחרונה של SDK Platform Tools.
כדי להשתמש בניפוי באגים אלחוטי, צריך להתאים בין המכשיר לתחנת העבודה באמצעות קוד QR או קוד התאמה. תחנת העבודה והמכשיר צריכים להיות מחוברים לאותה רשת אלחוטית. כדי לשייך את האוזניות למכשיר, פועלים לפי השלבים הבאים:
הערה: צריך לשייך את המכשיר לתחנת העבודה רק פעם אחת. ההתאמה בין המכשיר לתחנת העבודה תישמר עד שתבטלו אותה באופן מפורש או עד שתבטלו את ההרשאות לניפוי באגים באמצעות adb במכשיר. המכשיר ותחנת העבודה יתחברו אוטומטית כשהם יהיו באותה רשת.
-
מפעילים את האפשרויות למפתחים במכשיר.
-
במכשיר, מקישים על ניפוי באגים אלחוטי:
איור 1. ההודעה על ניפוי באגים אלחוטי בטלפון Google Pixel. -
מאפשרים ניפוי באגים אלחוטי ברשת. שימו לב: סימון התיבה תמיד לאפשר ברשת הזו הופך את הרשת לרשת מהימנה לניפוי באגים אלחוטי. המכשיר תמיד יאפשר ניפוי באגים אלחוטי ברשת הזו ברגע שהמכשיר יתחבר לרשת.
איור 2. ההגדרה ניפוי באגים אלחוטי בטלפון Google Pixel.הערה: משתמשי Android Studio יכולים להתאים את המכשיר שלהם באמצעות קוד QR. לשם כך, הם צריכים לבחור באפשרות Pair device with QR code ולסרוק את קוד ה-QR שמופיע בPair devices over Wi-Fi dialog ב-Android Studio.
-
במכשיר, בוחרים באפשרות התאמה באמצעות קוד התאמה ורושמים את כתובת ה-IP, מספר היציאה וקוד ההתאמה שמוצגים במכשיר.
-
בתחנת העבודה, פותחים חלון טרמינל ועוברים אל
android_sdk/platform-tools. -
בטרמינל של תחנת העבודה, מריצים את הפקודה
adb pair ipaddr:port. משתמשים בכתובת ה-IP ובמספר היציאה שמופיעים למעלה. -
כשתתבקשו, תצטרכו להזין את קוד ההתאמה שמופיע למטה.
איור 3. תוצג הודעה שהמכשיר שלכם הותאם בהצלחה. -
אחרי שהמכשיר יותאם, צריך לוודא שהוא מחובר. עכשיו אפשר להשתמש במכשיר באופן אלחוטי, כמו שהייתם עושים עם חיבור USB.
כדי לבטל את ההתאמה של תחנת העבודה, עוברים אל ניפוי באגים אלחוטי במכשיר. מקישים על שם תחנת העבודה בקטע מכשירים מותאמים ובוחרים באפשרות הסרה. אפשרות אחרת היא ללחוץ על ביטול ההרשאות לניפוי באגים באמצעות adb בדף ההגדרות של המכשיר כדי לבטל את ההתאמה של תחנת העבודה ושל כל תחנות העבודה האחרות שהותאמו בעבר.
-
אם רוצים להפעיל ולהשבית במהירות את האפשרות 'ניפוי באגים אלחוטי', אפשר להשתמש בלחצני ההגדרות המהירות למפתחים של ניפוי באגים אלחוטי. הלחצנים האלה נמצאים באפשרויות למפתחים > לחצני ההגדרות המהירות למפתחים.
איור 4. ההגדרה Quick settings developer tiles מאפשרת להפעיל ולכבות במהירות את ניפוי הבאגים האלחוטי.
פתרון בעיות בחיבור אלחוטי
אם נתקלתם בבעיות בחיבור למכשיר באופן אלחוטי, נסו את השלבים הבאים לפתרון הבעיה.
בדיקה אם תחנת העבודה והמכשיר עומדים בדרישות המוקדמות
צריך לוודא שתחנת העבודה והמכשיר עומדים בדרישות המוקדמות שמפורטות בתחילת הקטע הזה.
בודקים אם הגדרת ה-adb בתחנת העבודה נכונה
כדי לוודא שהגדרת ה-ADB בתחנת העבודה שלכם נכונה, פותחים מסוף בתחנת העבודה ומזינים adb server-status. מוודאים שהפלט מציג את הפרטים הבאים:
-
version: "37.0.0"ומעלה: אם זה לא המצב, צריך להוריד את הגרסה האחרונה של SDK Platform Tools. -
mdns_enabled: true: אם ההגדרה הזו היאfalse, adb לא יוכל לגלות מכשירים ברשת באופן אוטומטי. כדי לפתור את הבעיה, צריך להגדיר את משתנה הסביבהADB_MDNSלערך1ואז להפעיל מחדש את שרת ה-adb על ידי הרצת הפקודהadb kill-serverואז הפקודהadb start-server. -
mdns_backend: LIBADBMDNS: אם זה לא המצב, סימן ש-adb משתמש בספרייה מיושנת כדי לגלות באופן אוטומטי מכשירים ברשת. כדי לפתור את הבעיה, צריך להגדיר את משתנה הסביבהADB_MDNS_OPENSCREENלערך0ואז להפעיל מחדש את שרת ה-adb על ידי הרצת הפקודהadb kill-serverואזadb start-server.
בודקים אם הרשת תומכת ב-mDNS
adb מסתמך על mDNS כדי לגלות מכשירים מותאמים ולהתחבר אליהם באופן אוטומטי. כדי לבדוק אם הרשת תומכת ב-mDNS:
-
במכשיר, מפעילים ניפוי באגים אלחוטי כמו שמתואר בקטע התחברות למכשיר באמצעות Wi-Fi.
-
בתחנת העבודה, פותחים טרמינל ומזינים
adb mdns track-services --proto-text. -
מוודאים שהפלט לא ריק ומכיל שירות tls עם כתובת ה-IP ומספר היציאה של המכשיר. אם הפלט ריק, סימן שהרשת לא תומכת ב-mDNS. פלט לדוגמה:
tls { service { instance: "adb-35121FDJH000R8-xyMD0H" service: "_adb-tls-connect._tcp" ipv4: "192.168.84.23" ipv6: "fe80:0:0:0:fc7a:299d:8d38:6c1c" port: 37895 product_model: "Pixel 8" build_version_sdk_full: "37.0" given_name: "sherifeid Pixel" serial: "35121FDJH000R8" mdns_service_version: "2.0" hostname: "Android_CXUKYJY1.local" } }
בדיקה אם המכשיר תומך ב-ADB Wi-Fi 2.0
הערה: ADB Wi-Fi 2.0 נתמך ב-Android 17 ומעלה.
כדי לבדוק אם המכשיר תומך ב-ADB Wi-Fi 2.0:
-
במכשיר, מפעילים ניפוי באגים אלחוטי כמו שמתואר בקטע התחברות למכשיר באמצעות Wi-Fi.
-
בתחנת העבודה, פותחים טרמינל ומזינים
adb mdns track-services --proto-text. -
בודקים שהפלט מכיל את המחרוזת
mdns_service_version: "2.0"או מחרוזת עם מספר גבוה יותר. אם זה לא המצב, סימן שבמכשיר שלכם לא פועלת גרסה Android 17 ומעלה, והוא לא תומך ב-ADB Wi-Fi 2.0. כדי לעדכן ל-Android 17 ואילך, צריך לבדוק אם יש במכשיר עדכוני מערכת בהמתנה. איך בודקים את גרסת Android במכשיר ומעדכנים אותה
דיווח על בעיה חדשה
אם אתם עדיין נתקלים בבעיות בהתחברות למכשיר באופן אלחוטי, אתם יכולים לדווח על בעיה חדשה. חשוב לכלול בדיווח את הפרטים הבאים:
- היומנים מהמכשיר: משחזרים את הבעיה ומצרפים את יומני המכשיר
- היומנים מ-adb בתחנת העבודה:
- מגדירים את משתנה הסביבה
ADB_TRACE=all. - מפעילים מחדש את שרת adb על ידי הפעלת הפקודה
adb kill-serverואז הפקודהadb start-server. - משחזרים את הבעיה.
- איתור קובצי היומן: מריצים את
adb server-statusומצרפים את קובץ היומן שמצוין בפלטlog_absolute_path.
- מגדירים את משתנה הסביבה
חיבור אלחוטי למכשיר אחרי חיבור ראשוני באמצעות 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.
-
מגדירים את מכשיר היעד להאזנה לקישור דרך IP מסוג 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 שאפשר להתקין במופע של אמולטור או מכשיר, אפשר לעיין במאמר בנושא Build והרצה של האפליקציה.
הערה: אם אתם משתמשים ב-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 כדי להנפיק פקודות למכשיר דרך 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
|
Dump the heap of process, write to 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
|
תדפיס את מפרט ה-Intent שצוין כ-URI של intent:. פרטים נוספים זמינים במפרט של ארגומנטים של כוונות. |
memory-limiter subcommand [options]
|
שינוי או השבתה של הגבלות הזיכרון שמוגדרות במכשירים עם Android מגרסה 17 ומעלה. אין השפעה על מכשירים עם Android 16 ומטה. פקודות המשנה הן:
|
מפרט לארגומנטים של כוונות
בפקודות של הכלי לניהול פעילות שכוללות ארגומנט 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. ערך ברירת המחדל הוא רזולוציית התצוגה המקורית של המכשיר (אם נתמכת), או 1,280x720 אם לא. כדי לקבל את התוצאות הטובות ביותר, מומלץ להשתמש בגודל שנתמך על ידי מקודד Advanced Video Coding (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) אוספת פרופילים של הרצה לאפליקציות מותקנות, שמשמשים לאופטימיזציה של ביצועי האפליקציה. בודקים את הפרופילים שנאספו כדי להבין אילו שיטות מופעלות לעיתים קרובות ואילו מחלקות נמצאות בשימוש במהלך הפעלת האפליקציה.
הערה: אפשר לאחזר את שם הקובץ של פרופיל ההפעלה רק אם יש לכם גישת שורש למערכת הקבצים, למשל באמולטור.
כדי ליצור טקסט עם פרטי הפרופיל, משתמשים בפקודה הבאה:
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.
אפשר לבחור בקצה העורפי באמצעות משתנה הסביבה ADB_LIBUSB.
אם לא מגדירים את האפשרות הזו, adb משתמש בקצה העורפי שמוגדר כברירת מחדל. התנהגות ברירת המחדל משתנה בהתאם למערכת ההפעלה. החל מ-ADB v34, קצה העורפי libusb משמש כברירת מחדל בכל מערכות ההפעלה, למעט Windows, שבה נעשה שימוש בקצה העורפי המקורי כברירת מחדל. אם ADB_LIBUSB מוגדר, הוא קובע אם נעשה שימוש בקצה העורפי המקורי או ב-libusb. מידע נוסף על משתני סביבה של adb זמין בדף המדריך של adb.
adb mDNS backends
ADB משתמש בפרוטוקול mDNS (מערכת שמות דומיין של שידור מרובה) כדי לחבר אוטומטית את השרת והמכשירים לניפוי באגים אלחוטי. החל מ-ADB גרסה 37, שרת ה-ADB מגיע עם שני קצוות עורפיים של mDNS, libadbmdns ו-openscreen.
הקצה העורפי שמוגדר כברירת מחדל ומומלץ הוא libadbmdns. אפשר לשנות את ההתנהגות הזו באמצעות משתנה הסביבה ADB_MDNS_OPENSCREEN (הגדרה ל-1 או ל-0). התמיכה ב-Openscreen backend ב-macOS מתחילה ב-ADB v35. יש תמיכה ב-Windows וב-Linux מגרסה 34 של ADB.
מצב צילום רציף ב-ADB (החל מגרסה ADB 36.0.0)
מצב פרץ הוא תכונה ניסיונית שמאפשרת ל-ADB להמשיך לשלוח מנות למכשיר גם לפני שהמכשיר הגיב למנה הקודמת. התכונה הזו מגדילה משמעותית את התפוקה של ADB כשמעבירים קבצים גדולים, וגם מקטינה את זמן האחזור במהלך ניפוי הבאגים.
מצב הצילום הרציף מושבת כברירת מחדל. כדי להפעיל את התכונה, מבצעים אחת מהפעולות הבאות:
- מגדירים את משתנה הסביבה
ADB_BURST_MODEלערך1. - ב-Android Studio, עוברים להגדרות של כלי ניפוי הבאגים דרך File (או Android Studio ב-macOS) > Settings > Build, Execution, Deployment > Debugger ומגדירים את ADB Server Burst Mode ל-Enabled.