Android Debug Bridge (adb)

גשר ניפוי הבאגים של Android (adb) הוא כלי שורת פקודה רב-תכליתי שמאפשר ליצור קשר עם במכשיר. הפקודה adb מאפשרת מגוון פעולות במכשיר, כמו התקנה ו לניפוי באגים באפליקציות. האפליקציה adb מספקת גישה למעטפת Unix שאפשר להשתמש בה כדי להריץ מגוון של פקודות במכשיר. זוהי תוכנת שרת לקוח שכוללת שלושה רכיבים:

  • לקוח, ששולח פקודות. הלקוח פועל במכונת הפיתוח שלכם. אפשר כדי להפעיל לקוח מטרמינל בשורת הפקודה, צריך לשלוח פקודת adb.
  • דימון (daemon) (adbd), שמריץ פקודות במכשיר. הדימון פועל כרקע בכל מכשיר.
  • שרת, שמנהל את התקשורת בין הלקוח לדימון (daemon). השרת פועל כתהליך רקע במכונת הפיתוח שלכם.

adb כלול בחבילת הכלים של Android SDK Platform. להורדת הפריט את החבילה עם מנהל ה-SDK, שיותקן אותה בשעה android_sdk/platform-tools/. אם רוצים להשתמש ב-SDK הנפרד של Android חבילת Platform Tools, אפשר להוריד אותה כאן.

לקבלת מידע על חיבור מכשיר לשימוש מעל adb, כולל הוראות לשימוש בחיבור Assistant לפתרון בעיות נפוצות: הפעלת אפליקציות במכשיר חומרה.

איך adb פועל

כשמפעילים לקוח adb, הלקוח בודק קודם אם יש תהליך שרת של adb כבר פועל. אם לא, המערכת מפעילה את תהליך השרת. כאשר השרת מופעל, הוא נקשר ליציאת ה-TCP המקומית 5037 ומאזינים לפקודות שנשלחות מ: adb לקוחות.

הערה: כל הלקוחות של adb משתמשים ביציאה 5037 כדי לתקשר עם השרת adb.

לאחר מכן השרת מגדיר חיבורים לכל המכשירים שפועלים. הוא מאתר אמולטורים על ידי סריקת יציאות בעלות מספר אי-זוגי בטווח 5555 עד 5585, שהוא הטווח שמשמש את 16 האמולטורים הראשונים. איפה השרת מוצא adb daemon (adbd), הוא מגדיר חיבור ליציאה הזו.

כל אמולטור משתמש בזוג יציאות רצופות – יציאה ממוספרת עבור חיבורי מסופים ויציאה עם מספר אי-זוגי בשביל adb חיבורים. לדוגמה:

אמולטור 1, קונסולה:
5554 אמולטור 1, adb: 5555
אמולטור 2, קונסולה:
5556 אמולטור 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). לדוגמה, אפשר לפרוס את קובץ ה-builder אפליקציה למספר מכשירים מרוחקים בלי שיהיה צורך לחבר את המכשיר פיזית דרך USB. כך לא תצטרכו לטפל בבעיות נפוצות בחיבור USB, כמו מנהל התקן. בתהליך ההתקנה.

לפני שמתחילים להשתמש בניפוי באגים אלחוטי, צריך לבצע את הפעולות הבאות:

  • חשוב לוודא שתחנת העבודה והמכשיר מחוברים לאותה רשת אלחוטית.

  • צריך לוודא שבמכשיר פועלת מערכת Android בגרסה 11 (רמת API 30) ואילך לטלפון או ל-Android 13 (רמת API 33) ואילך לטלוויזיה ול-WearOS. מידע נוסף זמין במאמר הבא: בדיקה ו- לעדכן את גרסת Android.

  • אם אתם משתמשים בסביבת פיתוח משולבת (IDE), חשוב לוודא שמותקנת הגרסה העדכנית של Android Studio. אפשר להוריד אותו כאן.

  • בתחנת העבודה, מעדכנים לגרסה האחרונה של SDK Platform Tools

כדי להשתמש בניפוי באגים אלחוטי, צריך להתאים את המכשיר לתחנת העבודה באמצעות קוד QR או קוד התאמה. תחנת העבודה והמכשיר צריכים להיות מחוברים לאותה רשת אלחוטית. שפת תרגום כדי להתחבר למכשיר, מבצעים את השלבים הבאים:

  1. הפעלת האפשרויות למפתחים במכשיר.

  2. פותחים את Android Studio ובוחרים באפשרות התאמת מכשירים באמצעות Wi-Fi תפריט ההגדרות האישיות.

    תפריט נפתח להרצת הגדרות
    איור 1. הפעלת תפריט ההגדרות האישיות.

    החלון התאמת מכשירים באמצעות Wi-Fi קופץ, כמו שמוצג באיור 2.

    צילום מסך של החלון הקופץ להתאמת המכשירים באמצעות רשת Wi-Fi
    איור 2. חלון קופץ להתאמת מכשירים באמצעות קוד QR או התאמה
  3. במכשיר, מקישים על ניפוי באגים אלחוטי ומתאימים את המכשיר:

    צילום מסך של
            טלפון Pixel שבו מוצגת ההגדרה של מערכות ניפוי באגים אלחוטיות.
    איור 3. צילום מסך של ההגדרה ניפוי באגים אלחוטי מופעלת טלפון Google Pixel.
    1. כדי להתאים את המכשיר באמצעות קוד QR, בוחרים באפשרות התאמת המכשיר באמצעות קוד QR וסורקים את קוד ה-QR שמתקבל מהחלון הקופץ התאמת מכשירים באמצעות Wi-Fi שמוצג באיור 2.

    2. כדי להתאים את המכשיר באמצעות קוד התאמה, בוחרים באפשרות התאמת המכשיר באמצעות קוד התאמה בחלון הקופץ התאמת מכשירים באמצעות Wi-Fi. במכשיר, בוחרים באפשרות התאמה באמצעות את קוד ההתאמה ורושמים את הקוד בן 6 הספרות שקיבלתם. ברגע שהמכשיר יופיע בחלון התאמת מכשירים באמצעות רשת Wi-Fi, אפשר לבחור באפשרות התאמה ולהזין את שמוצג במכשיר.

      צילום מסך של דוגמה להזנת קוד אימות
      איור 4. דוגמה להזנה של קוד בן 6 ספרות.
  4. אחרי התאמת המכשיר, אפשר לנסות לפרוס את האפליקציה במכשיר.

    כדי להתאים מכשיר אחר או כדי למחוק את המכשיר הנוכחי בתחנת העבודה, מנווטים אל ניפוי באגים אלחוטי במכשיר. מקישים על השם של תחנת העבודה בקטע בהתאמה אישית. מכשירים ובוחרים באפשרות מחיקה.

  5. אם אתם רוצים להפעיל ולהשבית במהירות את ניפוי הבאגים האלחוטי, אפשר להשתמש משבצות למפתחים של ההגדרות המהירות עבור ניפוי באגים אלחוטי, נמצא באפשרויות למפתחים > מפתח של הגדרות מהירות כרטיסי מידע.

    צילום מסך של
            כרטיסי מידע למפתחים בהגדרות המהירות מטלפון Google Pixel.
    איור 5. ההגדרה משבצות למפתחים של ההגדרות המהירות מאפשר להפעיל ולכבות במהירות ניפוי באגים אלחוטי.

חיבור Wi-Fi באמצעות שורת פקודה

לחלופין, כדי להתחבר למכשיר באמצעות שורת הפקודה ללא Android Studio, מבצעים את הפעולות הבאות את השלבים הבאים:

  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 לא תומכת ב-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:

  1. חיבור מכשיר Android למחשב המארח של adb לרשת Wi-Fi משותפת.
  2. הערה:חשוב להיזהר שלא כל נקודות הגישה הן מתאימות. יכול להיות שיהיה צורך להשתמש בנקודת גישה (AP) שחומת האש שלו מוגדרת כראוי לתמיכה ב-adb.

  3. מחברים את המכשיר למחשב המארח באמצעות כבל USB.
  4. מגדירים את מכשיר היעד להאזנה לחיבור TCP/IP ביציאה 5555:
    adb tcpip 5555
    
  5. מנתקים את כבל ה-USB ממכשיר היעד.
  6. מאתרים את כתובת ה-IP של מכשיר Android. לדוגמה, במכשיר Nexus תוכל למצוא כתובת ה-IP בקטע Settings > מידע על הטאבלט (או מידע על הטלפון) > סטטוס > כתובת IP.
  7. מתחברים למכשיר לפי כתובת ה-IP שלו:
    adb connect device_ip_address:5555
    
  8. מוודאים שהמחשב המארח מחובר למכשיר היעד:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

המכשיר שלך מחובר עכשיו אל adb.

אם החיבור של adb למכשיר יתנתק:

  • מוודאים שהמארח עדיין מחובר לאותה רשת Wi-Fi שאליה מחובר מכשיר Android.
  • כדי להתחבר מחדש, צריך לבצע שוב את השלב adb connect.
  • אם הבעיה נמשכת, צריך לאפס את המארח של adb:
    adb kill-server
    

    לאחר מכן צריך להתחיל מחדש מההתחלה.

שאילתה לגבי מכשירים

לפני שמבצעים פקודות adb, כדאי לדעת אילו מופעי מכשירים מחוברים לשרת adb. ליצור רשימה של מכשירים מחוברים באמצעות הפקודה devices:

  adb devices -l
  

בתגובה, adb מדפיסה את פרטי הסטטוס האלה לכל מכשיר:

  • מספר סידורי: הפונקציה adb יוצרת מחרוזת כדי לזהות את המכשיר באופן ייחודי במספר היציאה שלו. מספר סידורי לדוגמה: emulator-5554
  • מצב: מצב החיבור של המכשיר יכול להיות אחד מהבאים:
    • offline: המכשיר לא מחובר אל adb או לא ומגיבה.
    • device: המכשיר מחובר לשרת של adb. שימו לב המצב הזה לא מרמז על כך שמערכת Android מופעלת במלואה ופועלת באופן מלא, המכשיר מתחבר אל adb בזמן שהמערכת עדיין באתחול. לאחר האתחול, זוהי תדירות הפעולה הרגילה במצב של המכשיר.
    • no device: אין מכשיר מחובר.
  • תיאור: אם כוללים את האפשרות -l, devices מספרת לכם מה המכשיר. המידע הזה שימושי כשיש לך כמה מכשירים מחובר, כדי להבחין ביניהם.

בדוגמה הבאה מוצגת הפקודה devices והפלט שלה. יש שלושה סוגים שבהם פועלים. שתי השורות הראשונות ברשימה הן אמולטורים, והשורה השלישית היא חומרה של המכשיר שמחובר למחשב.

$ adb devices
List of devices attached
emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64
emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86
0a388e93      device usb:1-1 product:razor model:Nexus_7 device:flo

האמולטור לא רשום

בפקודה adb devices יש רצף פקודות עם אותיות רישיות שגורמות להרצה אמולטורים שלא יופיעו בפלט adb devices למרות האמולטורים גלויים במחשב. מצב זה מתרחש כשכל התנאים הבאים אם מתקיימים התנאים הבאים:

  • השרת adb אינו פועל.
  • משתמשים בפקודה emulator עם -port או אפשרות -ports עם ערך יציאה ממוספר בין 5554 ל-5584.
  • היציאה עם המספור האי-זוגי שבחרת לא עמוסה, לכן ניתן לבצע את החיבור ליציאה את מספר היציאה שצוין — או, אם היא עסוקה, האמולטור עובר יציאה אחרת שעומדת בדרישות של 2.
  • השרת של adb מופעל אחרי הפעלת האמולטור.

דרך אחת למנוע את המצב הזה היא לאפשר לאמולטור לבחור את היציאות שלו, כך שלא יפעלו יותר מ-16 אמולטורים בו-זמנית. דרך נוספת היא תמיד להפעיל את השרת adb לפני צריך להשתמש בפקודה emulator, כמו שמוסבר בדוגמאות הבאות.

דוגמה 1: ברצף הפקודות הבא, הפקודה adb devices מתחילה השרת adb, אבל רשימת המכשירים לא מופיעה.

צריך לעצור את השרת adb ולהזין את הפקודות הבאות לפי הסדר שמוצג. ל-AVD שם AVD, עליך לספק שם AVD חוקי מהמערכת. כדי לקבל רשימה של שמות 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 Studio, אין צורך להשתמש ב- adb ישירות כדי להתקין את האפליקציה באמולטור או במכשיר. במקום זאת, כדאי להשתמש ב-Android Studio שמטפל באריזה ובהתקנה של האפליקציה עבורכם.

הגדרת העברה ליציאה אחרת

משתמשים בפקודה forward כדי להגדיר העברה שרירותית ליציאה אחרת, מעבירה בקשות ביציאה של מארח ספציפי ליציאה אחרת במכשיר. בדוגמה הבאה מוגדרת העברה של יציאת המארח 6100 ליציאה 7100 של המכשיר:

adb forward tcp:6100 tcp:7100

בדוגמה הבאה מוגדרת העברה של יציאה 6100 למארח ל-local:logd:

adb forward tcp:6100 local:logd

זה יכול להיות שימושי אם אתה מנסה לחלץ את מה שנשלח ליציאה מסוימת במכשיר. כל הנתונים שיתקבלו ייכתבו לדימון (daemon) לרישום המערכת ויוצגו ביומני המכשיר.

העתקת קבצים למכשיר וממנו

משתמשים בפקודות 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 זמינה דרך toybox --help.

בכלי הפלטפורמה של Android מגרסה 23 ואילך, adb מטפל בארגומנטים באותו אופן הפקודה ssh(1) עושה. השינוי הזה תיקן הרבה בעיות החדרת פקודה ומאפשרת להריץ בצורה בטוחה פקודות שמכילות מעטפת מטא-תווים, כמו adb install Let\'sGo.apk. המשמעות של שינוי זה היא כל פקודה שמכילה מטא-תווים במעטפת השתנתה גם היא.

לדוגמה, adb shell setprop key 'value' היא עכשיו שגיאה, כי המעטפת המקומית נבלעת על ידי מירכאות בודדות ('), והמכשיר רואה adb shell setprop key value. כדי שהפקודה תפעל, מצטטים פעמיים: פעם אחת למעטפת המקומית ופעם אחת למעטפת המרוחקת, כפי שנעשה עם ssh(1) לדוגמה: adb shell setprop key 'value' .

אפשר להיעזר גם בכלי שורת הפקודה Logcat למעקב אחרי יומן המערכת.

מנהל פעילות השיחה

בתוך מעטפת של adb, אפשר ליצור פקודות באמצעות הכלי 'מנהל הפעילות' (am) כדי לבצע פעולות שונות במערכת, כמו התחלת פעילות, אילוץ עצירה של תהליך לשדר Intent, לשנות את מאפייני המסך של המכשיר ועוד.

בתוך המעטפת, התחביר am הוא:

am command

אפשר גם להריץ פקודה של מנהל הפעילות ישירות מ-adb בלי להיכנס למעטפת מרוחקת. לדוגמה:

adb shell am start -a android.intent.action.VIEW

טבלה 1. הפקודות הזמינות של מנהל הפעילות

הוראה תיאור
start [options] intent התחלת Activity שצוינה על ידי intent.

לצפייה מפרט לארגומנטים של 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.

לצפייה מפרט לארגומנטים של Intent.

האפשרויות הן:

  • --user user_id | current: ציון המשתמש שישמש להרצה. אחרת שצוין, ולאחר מכן מריצים בתור המשתמש הנוכחי.
force-stop package סגירה ידנית של כל מה שמשויך אל package.
kill [options] package להשבית את כל התהליכים שמשויכים ל-package. הפקודה הזו מבצעת רק פעולת מחיקה תהליכים בטוחים להרוג ושלא ישפיעו על המשתמש חוויה אישית.

האפשרויות הן:

  • --user user_id | all | current: ציון התהליכים של המשתמש שרוצים להסיר. אם הוא לא מוגדר, לוחצים על כל המשתמשים תהליכים.
kill-all מחיקת כל התהליכים ברקע.
broadcast [options] intent לפרסם כוונת שידור.

לצפייה מפרט לארגומנטים של 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.

לצפייה מפרט לארגומנטים של Intent.

to-intent-uri intent הדפסה של מפרט ה-Intent הנתון כ-URI של intent:.

לצפייה מפרט לארגומנטים של Intent.

מפרט לארגומנטים של 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 לבדיקה כאשר רק הרצתם את האפליקציה שלכם או ניפוי באגים ממנה, או שהשתמשתם ב-Build > של 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 (רמת 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 שינוי מיקום ההתקנה שמוגדר כברירת מחדל. ערכי מיקום:
  • 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

הגדרה ידנית של מצב הדומיין לחבילה. הדומיין חייב להיות החבילה הוצהרה כ-autoVerify כדי שהאימות יפעל. הפקודה הזו לא ידווח על כשל בדומיינים שלא ניתן היה להחיל.

  • --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 כדי לאפשר לחבילה לפתוח קישורים שאומתו באופן אוטומטי. FALSE כדי להשבית
get-app-link-owners --user user_id [--package package] domains

אפשר להדפיס את הבעלים של דומיין ספציפי של משתמש מסוים בסדר עדיפות נמוך לגבוה.

  • --user user_id: המשתמש שעליו רוצים לשלוח את השאילתה
  • --package package: אפשר להדפיס גם עבור כל הדומיינים של האינטרנט הוצהר על ידי חבילה, או 'הכול' כדי להדפיס את כל החבילות
  • domains: רשימה מופרדת ברווחים של דומיינים שעליהם יש לשלוח שאילתות

שיחה למנהל מדיניות המכשיר (dpm)

כדי לעזור לכם לפתח ולבדוק את האפליקציות לניהול המכשירים, עליכם פקודות לכלי לניהול מדיניות המכשיר (dpm). להשתמש בכלי כדי לשלוט ברכיבים הפעילים אפליקציית אדמין או לשנות את נתוני הסטטוס של המדיניות במכשיר.

בתוך המעטפת, התחביר dpm הוא:

dpm command

אפשר גם להנפיק פקודה של מנהל מדיניות המכשיר ישירות מ-adb מבלי להיכנס למעטפת מרוחקת:

adb shell dpm command

טבלה 3. הפקודות הזמינות של מנהל מדיניות המכשיר

הוראה תיאור
set-active-admin [options] component מגדיר את component כאדמין פעיל.

האפשרויות הן:

  • --user user_id: ציון משתמש היעד. אפשר גם להעביר --user current כדי לבחור את המשתמש הנוכחי.
set-profile-owner [options] component הגדרת component כאדמין פעיל והחבילה שלו כבעלים של הפרופיל של משתמש קיים.

האפשרויות הן:

  • --user user_id: ציון משתמש היעד. אפשר מעבירים גם את --user current כדי לבחור את המשתמש הנוכחי.
  • --name name: ציון שם הארגון הקריא לאנשים.
set-device-owner [options] component הגדרת component כאדמין פעיל והחבילה שלו כבעלי המכשיר.

האפשרויות הן:

  • --user user_id: ציון משתמש היעד. אפשר גם להעביר --user current כדי לבחור את המשתמש הנוכחי.
  • --name name: ציון שם הארגון הקריא לאנשים.
remove-active-admin [options] component להשבית אדמין פעיל. האפליקציה צריכה להצהיר (declare) android:testOnly במניפסט. הפקודה הזו גם מסירה את הבעלים של המכשיר והפרופיל.

האפשרויות הן:

  • --user user_id: ציון משתמש היעד. אפשר גם להעביר --user current כדי לבחור את המשתמש הנוכחי.
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 כדי לצלם את המסך. ואת הפקודה pull כדי להוריד את הקובץ מהמכשיר:

$ adb shell
shell@ $ screencap /sdcard/screen.png
shell@ $ exit
$ adb pull /sdcard/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 יכול להקליט בכל רזולוציה וקצב העברת נתונים נתמכים תוך שמירה על יחס הגובה-רוחב של מסך המכשיר. רשומות השירות בקובץ ה-Native הרזולוציה והכיוון של המסך כברירת מחדל, באורך מקסימלי של שלוש דקות.

המגבלות של הכלי screenrecord:

  • לא מוקלט אודיו בקובץ הווידאו.
  • הקלטת וידאו אינה זמינה במכשירים עם מערכת ההפעלה Wear OS.
  • בחלק מהמכשירים לא תהיה אפשרות להקליט ברזולוציה של התצוגה המקורית. אם נתקלתם בבעיות בהקלטת המסך, נסו להשתמש ברזולוציית מסך נמוכה יותר.
  • אין תמיכה בסיבוב של המסך במהלך ההקלטה. אם המסך מסתובב במהלך מוקלטת, חלק מהמסך נחתך בהקלטה.

טבלה 4. screenrecord אפשרויות

אפשרויות תיאור
--help הצגת התחביר והאפשרויות של הפקודה
--size widthxheight מגדירים את גודל הסרטון: 1280x720. ערך ברירת המחדל הוא הערך המקורי של המכשיר רזולוציית המסך (אם נתמכת), 1280x720 אם לא. לקבלת התוצאות הטובות ביותר, מומלץ להשתמש בגודל נתמך באמצעות מקודד 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) אוסף פרופילים של ביצוע עבור אפליקציות מותקנות, שמשמשות לאופטימיזציה של ביצועי האפליקציות. צריך לבדוק את הפרופילים שנאספו כדי להבין אילו שיטות מריצים בתדירות גבוהה ובאילו כיתות נעשה שימוש במהלך ההפעלה של האפליקציה.

הערה: אפשר לאחזר רק את פרופיל הביצוע filename אם יש לך גישה לרמה הבסיסית (root) למערכת הקבצים, לדוגמה, באמצעות אמולטור.

כדי ליצור טופס טקסט של פרטי הפרופיל, משתמשים בפקודה הבאה:

adb shell cmd package dump-profiles package

כדי לאחזר את הקובץ שהופק, משתמשים ב:

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

איפוס מכשירי הבדיקה

אם בודקים את האפליקציה בכמה מכשירי בדיקה, כדאי לאפס את המכשיר בין המכשירים בדיקות, לדוגמה, להסרת נתוני משתמשים ולאיפוס סביבת הבדיקה. אפשר לבצע מפעל איפוס של מכשיר בדיקה שמותקנת בו גרסת Android 10 (API ברמה 29) ואילך באמצעות פקודת מעטפת adb testharness, כפי שמוצג:

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

שרת ה-adb יכול לקיים אינטראקציה עם מקבץ ה-USB דרך שני קצוות עורפיים. הוא יכול להשתמש בתבנית המקורית של מערכת ההפעלה (Windows, Linux או macOS) או להשתמש בקצה העורפי libusb. תכונות מסוימות, כמו attach, detach וזיהוי מהירות USB, זמינה רק כשמשתמשים בקצה העורפי libusb.

אתם יכולים לבחור קצה עורפי באמצעות משתנה הסביבה ADB_LIBUSB. אם לא מגדירים את הפרמטר, adb משתמש בקצה העורפי שמוגדר כברירת מחדל. התנהגות ברירת המחדל משתנה בין מערכת ההפעלה. תאריך ההתחלה: עם ADB v34, הקצה העורפי liubusb משמש כברירת מחדל בכל מערכות ההפעלה מלבד Windows, שבהן הקצה העורפי המקורי הוא בשימוש כברירת מחדל. אם ADB_LIBUSB הוא היא קובעת אם ייעשה שימוש בקצה העורפי המקורי או ב-libusb. לצפייה דף ידני ב-adb כדי לקבל מידע נוסף על משתני סביבה של adb.

קצוות עורפיים של adb mDNS

ADB יכול להשתמש בפרוטוקול Multicast DNS כדי לחבר באופן אוטומטי את השרת והמכשירים. שרת ה-ADB נשלח עם שני קצוות עורפיים, Bonjour (mdnsResponseer של Apple) ו-Openscreen.

לקצה העורפי של Bonjour נדרש דימון כדי לפעול במחשב המארח. ב-macOS, הדימון המובנה של Apple פועל תמיד, אבל ב-Windows וב-Linux המשתמש צריך לוודא שהדימון (daemon) של mdnsd פועל. אם הפקודה adb mdns check מחזירה שגיאה, סביר להניח ש-ADB משתמש בקצה העורפי של Bonjour, אבל לא פועל דימון (daemon) של Bonjour.

הקצה העורפי של Openscreen אינו זקוק לדימון (daemon) כדי לפעול במחשב. התמיכה בקצה העורפי Openscreen ב-macOS מתחילה ב-ADB v35. החל מ-ADB v34 יש תמיכה ב-Windows וב-Linux.

כברירת מחדל, ADB משתמש בקצה העורפי של Bonjour. אפשר לשנות את ההתנהגות הזו באמצעות משתנה הסביבה ADB_MDNS_OPENSCREEN (מוגדר ל-1 או 0). פרטים נוספים זמינים בדף הידני של ADB.