ב-Android Studio מגרסה 3.0 ואילך אפשר ליצור פרופיל ולנפות באגים בחבילות APK שהאפשרות לניפוי באגים מופעלת בהן, בלי צורך לבצע build מתוך פרויקט Android Studio.
כדי להתחיל בניפוי באגים ב-APK, פועלים לפי השלבים הבאים:
במסך הפתיחה של Android Studio, לוחצים על Profile or debug APK (פרופיל או ניפוי באגים של APK).
אם כבר פתוח פרויקט, לוחצים על File > Profile or Debug APK (קובץ > פרופיל או APK לניפוי באגים) בסרגל התפריטים.
בתיבת הדו-שיח שנפתחת, בוחרים את קובץ ה-APK שרוצים לייבא ל-Android Studio.
לוחצים על אישור.
אם האפשרות הזו לא מופיעה, צריך לוודא שהתוסף Android APK Support מופעל.
לאחר מכן, קובצי ה-APK שחולצו מוצגים ב-Android Studio, כמו באיור 1. זו לא קבוצה מלאה של קבצים שעברו דקומפילציה, אבל היא כוללת קובצי SMALI שמציגים גרסה קריאה יותר של קובצי DEX.
איור 1. ייבוא של קובץ APK מוכן מראש ל-Android Studio.
בתצוגה Android בחלונית Project אפשר לבדוק את התוכן הבא של קובץ ה-APK:
- קובץ APK: לוחצים לחיצה כפולה על ה-APK כדי לפתוח את הכלי לניתוח APK.
- manifests: מכיל את מניפסטים האפליקציה שחולצו מקובץ ה-APK.
- java: מכיל קוד Kotlin או Java ש-Android Studio מפרק (לקובצי SMALI) מקובצי ה-DEX של ה-APK. כל קובץ SMALI בספרייה הזו תואם למחלקה ב-Kotlin או ב-Java.
- cpp: אם האפליקציה כוללת קוד מקורי, הספרייה הזו מכילה את הספריות המקוריות של ה-APK (קובצי SO).
- ספריות חיצוניות: מכילה את Android SDK.
אפשר להשתמש בכלי ליצירת פרופילים ב-Android כדי להתחיל לבדוק את ביצועי האפליקציה.
כדי לנפות באגים בקוד Kotlin או Java של האפליקציה, צריך לצרף את מקורות Kotlin או Java ולהוסיף נקודות עצירה בקובצי המקור של Kotlin או Java. באופן דומה, כדי לנפות באגים בקוד Native, צריך לצרף את הסמלים המקוריים לניפוי באגים.
צירוף מקורות Kotlin או Java
כברירת מחדל, Android Studio מחלץ קוד Kotlin או Java מקובץ ה-APK ושומר אותו כקובצי SMALI. כדי לנפות באגים בקוד Kotlin או Java באמצעות נקודות עצירה, צריך להפנות את סביבת הפיתוח המשולבת (IDE) לקובצי המקור של Kotlin או Java שמתאימים לקובצי ה-SMALI שרוצים לנפות בהם באגים.
כדי לצרף מקורות Kotlin או Java, פועלים לפי השלבים הבאים:
- לוחצים לחיצה כפולה על קובץ SMALI בחלונית Project בתצוגה Android.
אחרי שפותחים את הקובץ, מוצג בעורך באנר עם בקשה לבחור את מקורות Kotlin או Java:
- לוחצים על Attach Kotlin/Java Sources... (צירוף מקורות Kotlin/Java...) בבאנר בחלון העריכה.
- עוברים לספרייה עם קובצי המקור של האפליקציה ב-Kotlin או ב-Java ולוחצים על Open (פתיחה).
בחלון Project, Android Studio מחליף את קובצי ה-SMALI בקובצי המקור התואמים של Kotlin או Java. Android Studio כולל גם מחלקות פנימיות באופן אוטומטי. עכשיו אפשר להוסיף נקודות עצירה ולנפות באגים באפליקציה.
צירוף סמלים מקוריים של ניפוי באגים
אם קובץ ה-APK כולל ספריות מקומיות (קובצי SO) שלא כוללות סמלי ניפוי באגים, ב-Android Studio יוצג באנר, בדומה לזה שמוצג באיור 1. אי אפשר לנפות באגים בקוד Native של ה-APK או להשתמש בנקודות עצירה בלי לצרף ספריות Native שניתנות לניפוי באגים.
כדי לצרף ספריות מקוריות שאפשר לבצע בהן ניפוי באגים, פועלים לפי השלבים הבאים:
- אם עדיין לא עשיתם זאת, הורידו את NDK ואת הכלים.
בתצוגה Android, מתחת לספרייה cpp בחלון Project, לוחצים לחיצה כפולה על קובץ ספרייה מקומית שלא כולל סמלים לניפוי באגים.
בכלי העריכה מוצג טבלה של כל ה-ABI שקובץ ה-APK תומך בהם.
לוחצים על הוספה בפינה השמאלית העליונה של חלון העריכה.
מנווטים אל הספרייה שכוללת את הספריות המקוריות שאפשר לנפות בהן באגים שרוצים לצרף ולוחצים על אישור.
אם קובץ ה-APK וספריות ה-Native שניתנות לניפוי באגים נוצרו באמצעות תחנת עבודה אחרת, צריך גם לציין נתיבים לסמלי ניפוי הבאגים המקומיים. לשם כך, פועלים לפי השלבים הבאים:
כדי להוסיף נתיבים מקומיים לסמלי ניפוי באגים חסרים, עורכים את השדה שמתחת לעמודה נתיבים מקומיים בקטע מיפוי נתיבים בחלון העורך, כמו שמוצג באיור 2.
ברוב המקרים, צריך רק לספק את הנתיב לספריית שורש, ו-Android Studio בודק אוטומטית את ספריות המשנה כדי למפות מקורות נוספים. Android Studio גם ממפה באופן אוטומטי נתיבים ל-NDK מרוחק להורדה של NDK מקומי.
לוחצים על Apply Changes (החלת שינויים) בקטע Path Mappings (מיפוי נתיבים) בחלון העורך.
איור 2. נתיבים מקומיים לסמלי ניפוי באגים.
קבצי המקור המקוריים מופיעים בחלון Project (פרויקט). פותחים את קובצי המקור המקוריים כדי להוסיף נקודות עצירה ולנפות באגים באפליקציה. כדי להסיר את המיפויים, לוחצים על Clear בקטע Path Mappings בחלון העריכה.
בעיה מוכרת: כשמצרפים סמלי ניפוי באגים ל-APK, צריך לבנות את ה-APK ואת קובצי ה-SO שניתנים לניפוי באגים באמצעות אותה תחנת עבודה או אותו שרת בנייה.
ב-Android Studio 3.6 ואילך, לא צריך ליצור פרויקט חדש כשמעדכנים את ה-APK מחוץ ל-IDE. Android Studio מזהה שינויים ב-APK ומציע לייבא אותו מחדש.
איור 3. אפשר לייבא מחדש חבילות APK שעודכנו מחוץ ל-Android Studio.