טיפים וטריקים של ADB: פקודות שכל משתמש חזק צריך לדעת עליהן

יש הרבה ב-Android Debug Bridge שאולי לא ידעת עליהם. לחץ כאן לכמה טיפים וטריקים שימושיים לשימוש ב-ADB!

קישורים מהירים

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

אם היית חובב אנדרואיד שאורב בסצנת המודינג, או מפתח אפליקציות לכל אורך של בזמן, במוקדם או במאוחר, תתקל בכלי מסודר בשם Android Debug Bridge, או עבורו ADB קצר. הוא נמצא בשימוש נרחב ב-Android Studio ככלי עזר נלווה לשורת פקודה. מפתחי אנדרואיד משתמשים בו גם כפתרון עצמאי להתקנה ידנית ולבדיקת אפליקציות סמארטפונים אנדרואיד כמו גם מכשירי אנדרואיד מדומים.

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

יהיה עליך להפעיל את ADB במחשב שלך. הקפד לעיין במאמר שלנו בנושא כיצד להתקין ADB אם אתה צריך עזרה. במקרה שאתה משתמש ב-Windows, אתה גם צריך התקן את מנהלי ההתקן המתאימים של OEM USB עבור מכשיר האנדרואיד שלך.

גישה למעטפת

אם השתמשת בעבר ב-ADB, ייתכן שאתה רגיל להריץ פקודות בשורה אחת. אבל אתה יכול גם להשתמש ב-ADB כדי לפתוח מעטפת מסוף במכשיר שלך ולהפעיל פקודות ישירות. וזה קל!

במסוף או בחלון שורת הפקודה:

adb shell

לאחר מכן תקבל את פניך ב-a $ סמל שבו אתה יכול להפעיל פקודות ישירות במכשיר שלך.

חיבור למספר מכשירים

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

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

adb devices

עכשיו, השתמש ב- -s אפשרות לציין את המספר הסידורי של מכשיר היעד. דוגמא:

adb -s <serialnumber> shell

העברת קבצים

לחובבי שורת הפקודה, ADB מספקת דרך קלה מאוד להעביר קבצים למכשיר האנדרואיד שלך וממנו. פשוט השתמש ב pull פקודה להעתקת קבצים וספריות מהמכשיר ומה- push פקודה להעתקת קבצים וספריות למכשיר:

אם ברצונך להעתיק קובץ או ספרייה עם ספריות המשנה שלו למכשיר האנדרואיד:

adb push local_path device_path
  • דוגמא: adb push D:\image.png /sdcard

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

adb pull device_path local_path
  • דוגמא: adb pull /sdcard/backup_April.tar D:\Backup

רישום

Android Studio מספק את חלון Logcat, התומך בהצגת יומנים מהמכשיר שלך בזמן אמת. עם זאת, זה לא בדיוק שימושי לעיבוד אצווה. למרבה המזל, מכשירי אנדרואיד נשלחים עם פקודת logcat הזמינה דרך ADB, אשר ניתן להשתמש בה כדי לשפוך הודעות יומן מערכת ואפליקציות ולהדפיס אותן למסך.

התחביר הבסיסי הוא כדלקמן:

adb logcat

כדי לדעת יותר, עיין במדריך שלנו בנושא כיצד לקחת לוגקטים של מערכת, יומני ליבה ו-dmesg באנדרואיד.

ביצי פסחא

גוגל מציעה שתי ביצי פסחא נחמדות הקשורות לפקודה logcat.

  1. הראשון הוא lolcat, הנהון ל- LOLcat meme. זה נותן פלט זהה לפקודת logcat הרגילה.
    adb lolcat
  2. השני הוא longcat, המקביל לפקודה logcat -v long. הוא מציג את כל שדות המטא נתונים והודעות נפרדות עם שורה ריקה.
    adb longcat

פירוט אפליקציות מותקנות באמצעות ADB

כדי לראות את האפליקציות המותקנות במכשיר שלך, תוכל להשתמש בפקודה הבאה:

adb shell pm list packages

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

אפשרויות

יש גם כמה אפשרויות שבהן תוכל להשתמש כדי לאחזר רשימות ספציפיות יותר.

  • יכלול את הנתיב ל-APK הבסיסי עבור כל אפליקציה, יחד עם שם החבילה שלה.
  • יוודא שכל החבילות הידועות שאינן APEX יוחזרו.
  • יגרום לפקודה להחזיר רק חבילות מושבתות.
  • יגרום לפקודה להחזיר רק חבילות מופעלות.
  • יגרום לפקודה להחזיר רק חבילות מערכת.
  • -3 יגרום לפקודה להחזיר רק חבילות של צד שלישי.
  • -אני יכלול את שם חבילת המתקין עבור כל חבילה.
  • -U יכלול את החבילה UID עבור כל חבילה.
  • -u יכלול חבילות שהוסרו.
  • --show-versioncode יכלול את קוד הגרסה עבור כל חבילה.
  • --אייפקס בלבד יחזיר רק חבילות APEX.
  • --uid יציג רק חבילות עם ה-UID הנתון.
  • --מִשׁתַמֵשׁ יציג רק חבילות השייכות למזהה המשתמש הנתון.

התקנה והסרה של אפליקציות דרך ADB

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

התקנת APK

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

adbinstall-rsomeapk.apk

זכור להחליף someapk.apk עם הנתיב המלא ל-APK שברצונך להתקין.

אפשרויות

יש חבורה של אפשרויות להתקנת APKs דרך ADB.

  • ה האפשרות מאפשרת ל-ADB להתקין מעל אפליקציה קיימת (כלומר, עדכון). ב-Android Pie ואילך, אינך צריך לציין אפשרות זו.
  • ה אפשרות, עבור Android Pie ואילך יגרום לכשל בהתקנה אם האפליקציה כבר מותקנת.
  • ה -אני האפשרות מאפשרת לך לציין שם חבילת מתקין. זה מה שמוחזר אם אנדרואיד רוצה לדעת מה התקין את ה-APK.
  • ה אפשרות מאפשרת APK עם אנדרואיד: testOnly="true" במניפסט שלו להתקנה.
  • ה האפשרות מאפשרת ל-APK שצוין להיות שדרוג לאחור לאפליקציה שכבר מותקנת. זה עובד רק אם שתי הגרסאות של האפליקציה ניתנות לניפוי באגים.
  • ה אפשרות עבור Android Marshmallow ומאוחר יותר מעניקה אוטומטית את כל הרשאות זמן הריצה לאפליקציה המותקנת.

זה לא כולם. אם אתה רוצה רשימה מלאה, אתה יכול לבדוק את התיעוד המובנה.

חבילות APK וחבילות מרובות

אם יש לך חבורה של חבילות APK שאתה רוצה להתקין בו-זמנית, ממספר אפליקציות, או בגלל שאתה מתקין חבילת אפליקציות, אתה יכול להשתמש ב-ADB של install-multiple ו install-multi-package מאפיינים.

אם כל חבילות ה-APK שלך מיועדות לאפליקציה אחת, השתמש install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

אחרת, השתמש install-multi-package:

adbinstall-multi-packageapp1.apkapp2.apk ...

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

הסרת התקנה של אפליקציה

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

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

adb uninstall <packagename>

בדרך כלל לא תוכל להסיר את התקנת המערכת או האפליקציות המותקנות מראש באמצעות פקודה זו. עם זאת, ייתכן שתוכל להשבית אותם באמצעות ADB. בדוק את הסעיף השבתה והפעלה של כמעט כל אפליקציה לפרטים.

חילוץ APKs עם ADB

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

חילוץ אפליקציה באמצעות ADB הוא די פשוט. ראשית, תרצה למצוא את שם החבילה של האפליקציה שברצונך לחלץ. ישנן מספר דרכים לעשות זאת, אך הקלה ביותר היא בדרך כלל להשתמש באפליקציית ההגדרות של המכשיר שלך כדי להציג את רשימה של כל האפליקציות המותקנות, בחר את האפליקציה הרצויה וגלול מטה עד שתמצא את שם החבילה או האפליקציה תְעוּדַת זֶהוּת.

לאחר שיש לך את שם החבילה, הפעל את הפקודה הבאה:

adb shell pm path <packagename>

פקודה זו תחזיר את הנתיב של כל חבילות ה-APK עבור שם החבילה.

לאחר מכן תוכל להשתמש בפקודה הבאה כדי למשוך כל APK למחשב שלך:

adb pull /path/to/apk.apk

גיבוי ושחזור נתוני אפליקציה

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

לְגַבּוֹת

כדי לגבות אפליקציה בודדת, עם ה-APK שלה:

adb backup -apk <packagename> -f package_name_backup.ab

במקרה שאתה רוצה לגבות את כל נתוני האפליקציה בבת אחת:

adb backup -f all -all -apk -nosystem

מכיוון שמודול השחזור אינו יכול לבצע שחזור ספציפי לאפליקציה, עדיף ליצור גיבויים ספציפיים לחבילה. קטע הפקודה הבא (תואם ל-Linux/macOS ו-Windows Subsystem עבור Linux) יכול לעשות זאת עבורך:

for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done

לשחזר

ראשית, עליך להתקין את ה-APK השמור;

adb install <packagename>.apk

לאחר מכן תוכל לשחזר את הנתונים שלו:

adbrestorepackage_name_backup.ab

כדי להדגיש, לפונקציונליות הגיבוי והשחזור של ADB יש מספר אזהרות, כולל תוצאות משתנות בהתאם ל-ROM

פירוט רכיבי האפליקציה

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

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

adb shell dumpsys package

אוסף שלם של טקסט יוחזר.

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

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

לחלופין, אם אתה רוצה דרך קלה יותר לראות פעילויות, שירותים ומקלטים, אתה יכול להשתמש באפליקציית Root Activity Launcher מ-XDA Recognized Developer זכרי1. זה יראה לך את הרכיבים האלה עבור כל אפליקציה, יחד עם חבורה של תכונות שימושיות אחרות.

משגר פעילויות שורשמפתח: זכרי ונדר

מחיר: 0.99.

הורד

השקת פעילויות, שירותים ומקלטי שידור

ניתן להשתמש ב-ADB גם כדי להפעיל פעילויות, להפעיל שירותים ולהודיע ​​למקבלי שידור. אתה יכול אפילו לציין URI נתונים ותוספות Intent במידת הצורך.

כדי להפעיל רכיבים, תזדקק לשם הרכיב של מה שברצונך להפעיל. אתה יכול לראות איך להשיג את זה מה- רישום רכיבי אפליקציה סָעִיף.

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

am start -a <action> -n <component>

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

am startservice -a <action> -n <component>

תחביר הפקודה להודעת הודעה ל-BroadcastReceiver הוא משהו כזה:

am broadcast -a <action> -n <component>

ברוב המקרים, עבור פעילויות ושירותים, אינך צריך לציין פעולה במפורש. בדרך כלל תזדקק לזה רק אם הרכיב משתמש באחד אחר מאשר android.intent.action. רָאשִׁי.

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

  • מאפשר לך לציין URI נתונים.
  • אוֹ --es מאפשר לך לציין תוספת מחרוזת.
  • --esn מאפשר לך לציין תוספת מחרוזת null.
  • --אז משמש לציון תוספת בוליאנית.
  • --אי משמש לציון תוספת של מספר שלם.
  • --אל מיועד לציון תוספת ארוכה.
  • --ef יעביר תוספת ציפה.
  • --אירופה מעביר תוספת URI.
  • --ecn ניתן להשתמש כדי לציין שם רכיב נוסף.
  • --איה ,,... יעביר את הערכים כתוספת של מספר שלם[].
  • --eial ,,... יעביר את הערכים כרשימה.
  • אותם ארגומנטים של מערך ורשימה פועלים גם עבור longs, floats ו-Strings. פשוט תחליף את אני עם המכתב המתאים.
  • מאפשר לך לציין דגל.

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

השבתה והפעלה של כמעט כל אפליקציה

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

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

  • pm להשבית
    • כדי להפעיל מחדש, השתמש pm לאפשר
  • pm disable-user --user 0
    • כדי להפעיל מחדש, השתמש pm לאפשר
  • בערב להסתיר
    • כדי להפעיל מחדש, השתמש אחר הצהריים להסתיר
  • השעיה בערב
    • כדי להפעיל מחדש, השתמש בערב לבטל את ההשעיה
  • pm הסר את -k --user 0
    • כדי להפעיל מחדש, השתמש pm ההתקנה קיימת
      • זה למעשה מסיר את ההתקנה של האפליקציה מפרופיל המשתמש שלך. בעוד הפקודה להפעיל מחדש צריך עובד, אין ערובה שזה יעבוד. ייתכן שתצטרך לאפס להגדרות היצרן כדי לשחזר את האפליקציה.
      • אם אתה משתמש במספר פרופילי משתמש במכשיר שלך, הקפד להחליף את 0 בפקודות למעלה במזהה המשתמש האמיתי שיש לך.

כדי לדעת יותר, עיין במדריך שלנו בנושא כיצד להסיר את התקנת bloatware של ספק ו-OEM ללא גישת שורש.

לכידת צילומי מסך

רוב ה-ROM של אנדרואיד מציעים שני כלי עזר שימושיים - כיסוי מסך ו-screenrecord - לצילום מסך והקלטת פעילויות מסך, בהתאמה. אתה יכול להתקשר אליהם ישירות מהמעטפת של ADB כדי לצלם צילום מסך סטטי או קטע וידאו של מסך הטלפון שלך ולשמור אותו ישירות באחסון הפנימי של המכשיר.

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

adb shell screencap /sdcard/screenshot.png

באופן דומה, אם אתה צריך לתפוס תמונת מסך דינמית, בצע את הפעולות הבאות:

adb shell screenrecord /sdcard/recording.mp4

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

  • --גודל WIDTHxHEIGHT
    • הגדר את הרזולוציה של קובץ הווידאו (למשל "1280x720"). כברירת מחדל, הוא מנסה לקחת את רזולוציית התצוגה הראשית של מכשיר היעד (אם נתמכת), ונופל חזרה ל-1280x720 אם לא.
  • --קצב סיביות
    • הגדר את קצב הסיביות של הסרטון, בסיביות לשנייה. הערך עשוי להיות מוגדר כסיביות או מגה-ביט, למשל. '4000000' שווה ל-'4M'.
  • --דוח שגיאות
    • אתה יכול להוסיף מידע נוסף, כגון שכבת חותמת זמן, שיכולה להיות שימושית להמחשת באגים.
  • time-limit TIME
    • הגדר את זמן ההקלטה המקסימלי, בשניות. ברירת המחדל / מקסימום הוא 180.
  • --display-id ID
    • ציין את מזהה התצוגה הפיזי שיש להקליט. ברירת המחדל מוגדרת לתצוגה הראשית. ראה "dumpsys SurfaceFlinger --display-id" עבור מזהי תצוגה חוקיים.
  • --מִלוּלִי
    • הצג מידע מעמיק לגבי סשן ההקלטה.

אתה יכול להרחיב עוד יותר את היכולות של כלי עזר ללכידת מסך מובנים של אנדרואיד על ידי scrcpy. זהו פתרון שיקוף מסך בקוד פתוח, המנצל את הכוח של ADB.

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

במקרה שאינך רוצה להוליד מעטפת ADB מלאה, אלא אוהב לשלב מעבר יעיל של נתונים בינאריים בין המחשב המארח למכשיר האנדרואיד היעד, אתה יכול לעשות שימוש ב- exec-in ו exec-out פקודות.

למרות שלהם קיום ממושך, הפקודות exec-in וה-exec-out עדיין לא מתועדות. הם עלולים להוביל לשחיתות בקבצים בגלל האופן שבו קליפות שונות מטפלות בקלט ופלט. השתמש בזהירות.

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

דוגמא:

adb exec-out "screencap -p" > "D:\screenshot.png"

זה ישתמש ב- screencap הפקודה של אנדרואיד כדי לצלם צילום מסך של תצוגת הטלפון, אך שומרת אותו ישירות כ-screenshot.png במחיצת D: של המחשב המארח (בתנאי שהוא פועל ב-Windows). מצד שני,

adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"

פעולה זו תחלץ את התוכן של קובץ backup.tar המאוחסן במחיצת D: של המחשב המארח (מריץ Windows) בשורש האחסון הפנימי של מכשיר האנדרואיד.


ADB הוא כלי חזק להפליא, והוא יכול לעשות הרבה יותר מסתם מה שמופיע למעלה. הפקודות במאמר זה הן רק נקודת התחלה שימושית. לשימוש מתקדם יותר, בדוק פקודות כמו cmd -l כדי לראות שירותים שונים שאולי תוכל ליצור איתם אינטראקציה ו ls -l /system/bin כדי לראות את קובצי ההפעלה השונים של הפקודות הזמינים ב-Android ROM שלך.

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