Debugowanie gotowych plików APK

Android Studio w wersji 3.0 lub nowszej umożliwia profilowanie i debugowanie plików APK z włączonym debugowaniem bez konieczności tworzenia ich na podstawie projektu Android Studio.

Aby rozpocząć debugowanie pliku APK, wykonaj te czynności:

  1. Na ekranie powitalnym w Android Studio kliknij Profil lub debugowanie pliku APK.

    Jeśli masz już otwarty projekt, na pasku menu kliknij Plik > Profil lub debugowanie pliku APK.

  2. W wyświetlonym oknie wybierz plik APK, który chcesz zaimportować do Android Studio.

  3. Kliknij OK.

Jeśli nie widzisz tej opcji, sprawdź, czy masz włączoną wtyczkę „Obsługa plików APK na Androida”.

Android Studio wyświetli rozpakowane pliki APK, podobnie jak na ilustracji 1. Nie jest to w pełni zdekompilowany zestaw plików, ale zawiera pliki SMALI, które pozwalają uzyskać ich czytelniejszą wersję.

Importowanie gotowego pliku APK do Android Studio

Rysunek 1. Importowanie gotowego pliku APK do Android Studio.

Widok Android w panelu projektu umożliwia sprawdzanie tej zawartości pliku APK:

  • Plik APK: kliknij dwukrotnie plik APK, aby otworzyć analizator plików APK.
  • manifests: zawiera pliki manifestu aplikacji wyodrębnione z pakietu APK.
  • java: zawiera kod Kotlin lub Javę, który Android Studio dezasembluje (na podstawie plików SMALI) z plików DEX w pakiecie APK. Każdy plik SMALI w tym katalogu odpowiada klasie Kotlin lub Java.
  • cpp: jeśli aplikacja zawiera kod natywny, katalog ten zawiera biblioteki natywne pliku APK (pliki SO).
  • Biblioteki zewnętrzne: zawiera pakiet SDK do Androida.

Aby rozpocząć testowanie działania aplikacji, możesz użyć programu profilującego na Androidzie.

Aby debugować kod aplikacji w języku Kotlin lub Javy, musisz dołączyć źródła Kotlin lub Java i dodać punkty przerwania w plikach źródłowych Kotlin lub Java. Podobnie, aby debugować kod natywny, musisz dołączyć symbole do debugowania kodu natywnego.

Dołącz źródła Kotlin lub Java

Domyślnie Android Studio wyodrębnia z pliku APK kod Kotlin lub Javy i zapisuje go jako pliki SMALI. Aby debugować kod Kotlin lub Java za pomocą punktów przerwania, musisz wskazać IDE pliki źródłowe Kotlin lub Java odpowiadające plikom SMALI, które chcesz debugować.

Aby dołączyć źródła Kotlin lub Java, wykonaj te czynności:

  1. Kliknij dwukrotnie plik SMALI w panelu Projekt w widoku Android. Po otwarciu pliku edytor wyświetla baner z prośbą o wybór źródła Kotlin lub Java: Baner dotyczący dołączania źródeł
  2. Na banerze w oknie edytora kliknij Dołącz źródła Kotlin/Java...
  3. Przejdź do katalogu z plikami źródłowymi aplikacji Kotlin lub Java i kliknij Otwórz.

W oknie Projekt Android Studio zastępuje pliki SMALI odpowiednimi plikami źródłowymi Kotlin lub Java. Android Studio automatycznie uwzględnia klasy wewnętrzne. Teraz możesz dodawać punkty przerwania i debugować aplikację.

Dołącz symbole do debugowania kodu natywnego

Jeśli Twój plik APK zawiera biblioteki natywne (pliki SO), które nie zawierają symboli debugowania, Android Studio wyświetli baner podobny do tego przedstawionego na rys. 1. Nie można debugować kodu natywnego pliku APK ani używać punktów przerwania bez dołączenia bibliotek natywnych z możliwością debugowania.

Aby dołączyć biblioteki natywne możliwe do debugowania, wykonaj te czynności:

  1. Pobierz pakiet NDK i narzędzia, jeśli jeszcze go nie masz.
  2. W widoku Android w katalogu cpp w oknie Projekt kliknij dwukrotnie plik biblioteki natywnej, który nie zawiera symboli debugowania.

    W edytorze wyświetli się tabela wszystkich interfejsów ABI obsługiwanych przez Twój plik APK.

  3. W prawym górnym rogu okna edytora kliknij Dodaj.

  4. Przejdź do katalogu zawierającego biblioteki natywne z możliwością debugowania, które chcesz dołączyć, i kliknij OK.

Jeśli plik APK i biblioteki natywne z możliwością debugowania zostały utworzone na innej stacji roboczej, musisz też określić ścieżki do lokalnych symboli debugowania, wykonując te czynności:

  1. Dodaj ścieżki lokalne do brakujących symboli debugowania, edytując pole w kolumnie Ścieżki lokalne w oknie edytora, w sekcji Mapowanie ścieżek (jak widać na ilustracji 2).

    W większości przypadków wystarczy podać ścieżkę do folderu głównego, a Android Studio automatycznie sprawdzi podkatalogi, aby zmapować dodatkowe źródła. Android Studio automatycznie mapuje też ścieżki do zdalnego pakietu NDK w lokalnym pliku NDK.

  2. Kliknij Zastosuj zmiany w sekcji Mapowania ścieżki w oknie edytora.

Zapewnianie ścieżek do lokalnych symboli debugowania

Rysunek 2. lokalne ścieżki debugowania symboli.

Natywne pliki źródłowe pojawią się w oknie Projekt. Otwórz te natywne pliki źródłowe, by dodać punkty przerwania i zdebugować aplikację. Aby usunąć mapowania, kliknij Wyczyść w sekcji Mapowanie ścieżek w oknie edytora.

Znany problem: gdy dołączasz symbole debugowania do pliku APK, zarówno plik APK, jak i pliki SO możliwe do debugowania, muszą być utworzone na tej samej stacji roboczej lub na tym samym serwerze kompilacji.

W Android Studio 3.6 i nowszych nie musisz tworzyć nowego projektu, gdy plik APK jest aktualizowany poza IDE. Android Studio wykrywa zmiany w pliku APK i umożliwia jego ponowne zaimportowanie.

Importuj zaktualizowany plik APK

Rysunek 3. Pliki APK zaktualizowane poza Android Studio można zaimportować ponownie.