גשר ניפוי הבאגים של 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 או קוד התאמה. תחנת העבודה והמכשיר צריכים להיות מחוברים לאותה רשת אלחוטית. שפת תרגום כדי להתחבר למכשיר, מבצעים את השלבים הבאים:
-
הפעלת האפשרויות למפתחים במכשיר.
-
פותחים את Android Studio ובוחרים באפשרות התאמת מכשירים באמצעות Wi-Fi תפריט ההגדרות האישיות.
החלון התאמת מכשירים באמצעות Wi-Fi קופץ, כמו שמוצג באיור 2.
-
במכשיר, מקישים על ניפוי באגים אלחוטי ומתאימים את המכשיר:
-
כדי להתאים את המכשיר באמצעות קוד QR, בוחרים באפשרות התאמת המכשיר באמצעות קוד QR וסורקים את קוד ה-QR שמתקבל מהחלון הקופץ התאמת מכשירים באמצעות Wi-Fi שמוצג באיור 2.
-
כדי להתאים את המכשיר באמצעות קוד התאמה, בוחרים באפשרות התאמת המכשיר באמצעות קוד התאמה בחלון הקופץ התאמת מכשירים באמצעות Wi-Fi. במכשיר, בוחרים באפשרות התאמה באמצעות את קוד ההתאמה ורושמים את הקוד בן 6 הספרות שקיבלתם. ברגע שהמכשיר יופיע בחלון התאמת מכשירים באמצעות רשת Wi-Fi, אפשר לבחור באפשרות התאמה ולהזין את שמוצג במכשיר.
-
-
אחרי התאמת המכשיר, אפשר לנסות לפרוס את האפליקציה במכשיר.
כדי להתאים מכשיר אחר או כדי למחוק את המכשיר הנוכחי בתחנת העבודה, מנווטים אל ניפוי באגים אלחוטי במכשיר. מקישים על השם של תחנת העבודה בקטע בהתאמה אישית. מכשירים ובוחרים באפשרות מחיקה.
-
אם אתם רוצים להפעיל ולהשבית במהירות את ניפוי הבאגים האלחוטי, תוכלו להשתמש משבצות למפתחים של ההגדרות המהירות עבור ניפוי באגים אלחוטי, נמצא באפשרויות למפתחים > מפתח של הגדרות מהירות כרטיסי מידע.
חיבור Wi-Fi באמצעות שורת פקודה
לחלופין, כדי להתחבר למכשיר באמצעות שורת הפקודה ללא Android Studio, מבצעים את הפעולות הבאות את השלבים הבאים:
-
הפעלת אפשרויות למפתחים במכשיר, כפי שמתואר למעלה.
-
מפעילים ניפוי באגים אלחוטי במכשיר, כפי שתיארנו קודם.
-
בתחנת העבודה, פותחים חלון טרמינל ומנווטים אל
android_sdk/platform-tools
-
מאתרים את כתובת ה-IP, מספר היציאה וקוד ההתאמה על ידי בחירה באפשרות התאמת המכשיר עם קוד התאמה. רשום את כתובת ה-IP, מספר היציאה וקוד ההתאמה המוצגים ב במכשיר.
-
מריצים את
adb pair ipaddr:port
במסוף של תחנת העבודה. שימוש בכתובת ה-IP ואת מספר היציאה שלמעלה. -
כשתתבקשו, הזינו את קוד ההתאמה כמו שמוצג בהמשך.
פתרון בעיות בחיבור אלחוטי
אם נתקלתם בבעיות בהתחברות למכשיר באופן אלחוטי, כדאי לנסות את הפעולות הבאות כדי לפתור את הבעיה.
לבדוק אם תחנת העבודה והמכשיר שלכם עומדים בדרישות המוקדמות
בודקים שתחנת העבודה והמכשיר עומדים בדרישות המוקדמות שמפורטות בתחילת הקטע הזה.
בדיקת בעיות ידועות אחרות
בהמשך מופיעה רשימה של בעיות ידועות בניפוי באגים אלחוטי (עם 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:
-
חיבור מכשיר Android למחשב המארח של
adb
לרשת Wi-Fi משותפת. - מחברים את המכשיר למחשב המארח באמצעות כבל USB.
-
מגדירים את מכשיר היעד להאזנה לחיבור TCP/IP ביציאה 5555:
adb tcpip 5555
- מנתקים את כבל ה-USB ממכשיר היעד.
- מאתרים את כתובת ה-IP של מכשיר Android. לדוגמה, במכשיר Nexus תוכל למצוא כתובת ה-IP בקטע Settings > מידע על הטאבלט (או מידע על הטלפון) > סטטוס > כתובת IP.
-
מתחברים למכשיר לפי כתובת ה-IP שלו:
adb connect device_ip_address:5555
-
מוודאים שהמחשב המארח מחובר למכשיר היעד:
$ adb devices List of devices attached device_ip_address:5555 device
הערה:חשוב להיזהר שלא כל נקודות הגישה
הן מתאימות. יכול להיות שיהיה צורך להשתמש בנקודת גישה (AP)
שחומת האש שלו מוגדרת כראוי לתמיכה ב-adb
.
המכשיר שלך מחובר עכשיו אל 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
.
כדי לציין את היעד, פועלים לפי השלבים הבאים:
- משתמשים בפקודה
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: יותר ממכשיר/אמולטור אחד".
אם יש לכם כמה מכשירים זמינים אבל רק אחד הוא אמולטור,
אפשר להשתמש באפשרות -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
הוראה | תיאור |
---|---|
start [options] intent
|
התחלת Activity שצוינה על ידי
intent . לצפייה מפרט לארגומנטים של Intent. האפשרויות הן:
|
startservice [options] intent
|
התחלת Service שצוינה על ידי
intent . לצפייה מפרט לארגומנטים של Intent. האפשרויות הן:
|
force-stop package
|
סגירה ידנית של כל מה שמשויך אל package .
|
kill [options] package
|
להשבית את כל התהליכים שמשויכים ל-package . הפקודה הזו מבצעת רק פעולת מחיקה
תהליכים בטוחים להרוג ושלא ישפיעו על המשתמש
חוויה אישית.
האפשרויות הן:
|
kill-all
|
מחיקת כל התהליכים ברקע. |
broadcast [options] intent
|
לפרסם כוונת שידור. לצפייה מפרט לארגומנטים של 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 . האפשרויות הן:
|
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
|
הדפסה של מפרט 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
הוראה | תיאור |
---|---|
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-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
הוראה | תיאור |
---|---|
set-active-admin [options] component
|
מגדיר את component כאדמין פעיל.
האפשרויות הן:
|
set-profile-owner [options] component
|
הגדרת component כאדמין פעיל והחבילה שלו כבעלים של הפרופיל של משתמש קיים.
האפשרויות הן:
|
set-device-owner [options] component
|
הגדרת component כאדמין פעיל והחבילה שלו כבעלי המכשיר.
האפשרויות הן:
|
remove-active-admin [options] component
|
להשבית אדמין פעיל. האפליקציה צריכה להצהיר (declare)
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
כדי לצלם את המסך.
ואת הפקודה 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.
- בחלק מהמכשירים לא תהיה אפשרות להקליט ברזולוציה של התצוגה המקורית. אם נתקלתם בבעיות בהקלטת המסך, נסו להשתמש ברזולוציית מסך נמוכה יותר.
- אין תמיכה בסיבוב של המסך במהלך ההקלטה. אם המסך מסתובב במהלך מוקלטת, חלק מהמסך נחתך בהקלטה.
אפשרויות | תיאור |
---|---|
--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 (mdns Responseer של 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.