Android Studio dla początkujących, część 4: narzędzia do debugowania i wtyczki zwiększające produktywność

Aktualizacja: styczeń 2020 r.

Android Studio oferuje bogatą paletę wbudowanych narzędzi programistycznych i jeszcze bogatszy ekosystem wtyczek. Pierwsze trzy artykuły z tej serii dotyczyły instalacji i konfiguracji oraz kodowania i uruchamiania prostej aplikacji mobilnej w Android Studio. Teraz zapoznasz się z bardziej zaawansowanymi narzędziami: trzema wbudowanymi narzędziami i trzema wtyczkami do debugowania i poprawiania jakości i produktywności kodu aplikacji na Androida.

W tym artykule przedstawiono następujące narzędzia dla Android Studio:

Wbudowane narzędzia do debugowania

  • Logcat
  • Odpluskwić
  • Szarpie

Wtyczki zwiększające produktywność programistów

  • Pomysł ADB
  • Codota
  • Wtyczka Lombok

Co nowego w Android Studio 3.5

Dowiedz się, czego szukać w najnowszej wersji Android Studio, w tym wsparcie dla Kotlin i ulepszenia zarządzania pamięcią i responsywności interfejsu użytkownika.

Rejestrowanie i debugowanie aplikacji na Androida

Błędna aplikacja to pewny sposób na odstraszenie potencjalnych klientów. Logcat i Debug to dwa narzędzia wbudowane w Android Studio, których można używać do identyfikowania i naprawiania błędów w kodzie Androida.

Rejestrowanie Android: Logcat

Możesz nie potrzebować lub nie chcieć pełnego debuggera dla każdego „błędnego” scenariusza. W niektórych przypadkach wystarczy zarejestrować i skorygować wartości pewnych zmiennych. Logcat z Android Studio jest idealny do tego zadania.

Logcat to narzędzie wiersza polecenia (zintegrowane z Android Debug Bridge - ADB), które zrzuca dziennik komunikatów systemowych, które mogą pomóc Ci znaleźć i naprawić problemy w kodzie. Komunikaty zawierają ślady stosu, gdy urządzenie zgłasza błąd, oraz komunikaty dziennika, które zostały celowo osadzone w android.util.Logklasie. Logcat jest tak przydatny, że został zintegrowany bezpośrednio z Android Studio, gdzie można uzyskać do niego dostęp z menu Widok lub paska narzędzi.

Jeff Friesen

Okno Logcat jest podzielone na poziomy rząd list rozwijanych i innych elementów sterujących, po których następuje obszar komunikatów. Od lewej do prawej są następujące elementy sterujące:

  • Lista rozwijana identyfikująca podłączone urządzenia i emulatory. (Patrz rysunek 1.)
  • Lista rozwijana identyfikująca zainstalowane pakiety APK na wybranym urządzeniu.
  • Rozwijana lista poziomów logowania:
    • Verbose: pokaż wszystkie wiadomości.
    • Debugowanie: wyświetla komunikaty dziennika debugowania, które są przydatne tylko podczas programowania, a także poziomy komunikatów niżej na liście rozwijanej.
    • Informacje: pokaż oczekiwane komunikaty dziennika dotyczące regularnego użytkowania, a także poziomy komunikatów niżej na liście rozwijanej.
    • Ostrzegaj: pokaż możliwe problemy, które nie są jeszcze błędami, a także poziomy komunikatów niżej na liście rozwijanej.
    • Błąd: pokaż problemy, które spowodowały błędy - zgłoszone wyjątki, a także poziom komunikatu Assert.
    • Assert: pokaż problemy, których deweloper oczekuje, że nigdy nie powinny się wydarzyć.
  • Pasek wyszukiwania, w którym jedynymi wyświetlanymi wiadomościami są te zawierające tekst wpisany w tej kontrolce.
  • Pole wyboru umożliwiające używanie wyrażeń regularnych na pasku wyszukiwania. Na przykład w kontekście rysunku 1 można określić SystemClock | AlarmManager (tj. Wiadomość musi zawierać jedno ze słów).
  • Lista rozwijana służąca do filtrowania wiadomości, zawierająca następujące opcje:
    • Brak filtrów (ustawienie domyślne) powoduje wyświetlenie wszystkich komunikatów dla wybranego urządzenia, niezależnie od wybranego pakietu APK.
    • Pokaż tylko wybraną aplikację przedstawia tylko te komunikaty dla wybranego pakietu APK na wybranym urządzeniu, które mają odpowiedni lub niższy poziom logowania.
    • Edytuj konfigurację filtru umożliwia utworzenie niestandardowego filtru.

W kodzie źródłowym można wstawiać wywołania różnych android.util.Logmetod w celu rejestrowania komunikatów. Na przykład możesz wywołać, public static int i(String tag, String msg)aby zarejestrować INFOkomunikat poziomu lub public static int w(String tag, String msg)zarejestrować WARNkomunikat poziomu.

W przypadku obu metod ciąg przekazany do tagidentyfikuje źródło komunikatu (np. Metodę, w której ta metoda rejestrowania została wywołana), a ciąg przekazany do msgidentyfikuje rejestrowany komunikat.

Alternatywnie możesz wywołać System.out's i System.err' print()oraz println()metody. Wywołania System.outmetod wykonują to samo co log.i()wywołania; wywołania System.errmetod wykonują to samo co log.w()wywołania.

Jeff Friesen

Na rysunku 2 jedyne wyświetlane komunikaty dotyczą przykładowego procesu aplikacji uruchomionego na emulowanym urządzeniu Nexus 5X. Ponadto wiadomości te muszą zawierać onCreatei zostać zaakceptowane przez filtr Pokaż tylko wybrane aplikacje .

Więcej o Logcat

Sprawdź „Zapisywanie i przeglądanie dzienników za pomocą Logcat” Google, aby dowiedzieć się więcej o Logcat. Przestudiuj także android.util.Logdokumentację zajęć.

Debugowanie systemu Android: debugowanie

Używanie Logcata do rejestrowania i poprawiania kodu jest w porządku w przypadku bardzo prostych aplikacji. W przypadku bardziej skomplikowanych aplikacji ta forma debugowania może być uciążliwa. Zamiast tego będziesz potrzebować czegoś, co pozwala debugować kod wykonywalny aplikacji. Wbudowane narzędzie debugowania systemu Android Studio oferuje wiele możliwości, w tym:

  • Wybierz urządzenie, na którym chcesz debugować aplikację.
  • Ustaw punkty przerwania w kodzie aplikacji (Java, Kotlin lub C / C ++).
  • Sprawdzaj zmienne i oceniaj wyrażenia w czasie wykonywania.

Przed użyciem tego narzędzia do debugowania należy spełnić pewne wymagania wstępne:

  1. Jeśli Twoja aplikacja zawiera kod źródłowy C / C ++, musisz zainstalować LLDB z Menedżera SDK (patrz rysunek 3). Na szczęście przykładowa aplikacja dla tej serii ( W2A ) nie zawiera kodu C / C ++, więc możemy zignorować ten warunek wstępny.

    Jeff Friesen

  2. Musisz włączyć debugowanie na podłączonym urządzeniu. Jeśli jednak używasz emulatora (którym jesteśmy w tym przykładzie), możesz zignorować ten warunek wstępny. Debugowanie jest domyślnie włączone na emulowanych urządzeniach.
  3. Musisz uruchomić wariant kompilacji z możliwością debugowania. Domyślnie jest to tworzone dla Ciebie, więc w wielu przypadkach (w tym w tym przykładzie) nie musisz się tym martwić.

Przeprowadźmy szybką sesję debugowania.

Proste debugowanie Androida

Zakładając, że używasz Android Studio z otwartym oknem edytora dla przykładowej aplikacji ( W2A.java ), pierwszym krokiem jest ustawienie punktu przerwania w public void onCreate(Bundle savedInstanceState)linii. Ustaw punkt przerwania, podświetlając tę ​​linię i wykonując jedną z następujących czynności:

  • Kliknij obszar rynny po lewej stronie linii; w odpowiedzi linia powinna zmienić kolor na różowy.
  • Wybierz Toggle Line Breakpoint z menu Run .
  • Naciśnij jednocześnie klawisze Ctrl i F8 .

Teraz wybierz Debuguj „aplikację” z menu Uruchom lub kliknij odpowiednią ikonę na pasku narzędzi. Jeśli emulator nie jest uruchomiony, zobaczysz okno dialogowe Wybierz miejsce docelowe wdrożenia . Wybrałem Nexus 5X API 15 i kliknąłem OK .

Podczas oczekiwania na przejście emulowanego urządzenia do trybu online kliknij przycisk Debuguj na pasku okna narzędzi, aby wyświetlić okno debugowania . W końcu powinieneś zobaczyć coś podobnego do rysunku 4.

Jeff Friesen

Okno debugowania zawiera ikony umożliwiające przechodzenie, wchodzenie i wychodzenie z metody i nie tylko. Rysunek 5 pokazuje, co się dzieje, kiedy przekraczamy metodę.

Jeff Friesen

Kliknij odpowiednią ikonę i wybierz opcję Step Over z menu Run lub naciśnij klawisz F8 . Pozwala nam to przejść głębiej do onCreate()metody podczas przechodzenia przez każde wywołanie metody.

Wybierz wiersz ze }znakiem zamykającym dla onCreate()metody, a następnie wybierz opcję Uruchom do kursora . Otrzymasz powiadomienie, że aplikacja jest uruchomiona. Po odblokowaniu urządzenia powinno zostać wyświetlone okno aktywności przykładowej aplikacji.

Jeff Friesen

Więcej o debugowaniu

Zobacz „Debuguj swoją aplikację” Google, aby dowiedzieć się więcej o debugowaniu w Android Studio; na przykład, jak używać różnych rodzajów punktów przerwania.

Debugowanie za pomocą GAPID

Chociaż nie jest to tutaj omówione, polecam wypróbowanie GAPID: Graphics API Debugger, zbiór narzędzi do debugowania, które pozwalają sprawdzać, dostosowywać i odtwarzać wywołania z aplikacji na Androida do sterownika grafiki.

Kontrola kodu za pomocą Lint

Bez względu na to, jak starannie go napiszesz, kod źródłowy może zawierać błędy, problemy stylistyczne i może odnosić się do zasobów nieaktywnych z tego czy innego powodu. Linter jest rodzajem narzędzia, które skanuje kod źródłowy dowody te i inne bity bolesnego puchu, który zgłasza się do dewelopera.

Lint to wbudowany linter dla Android SDK. Możesz go użyć do zlokalizowania problemów, takich jak przestarzałe elementy i wywołania interfejsu API, które nie są obsługiwane przez docelowy interfejs API.

Aby uruchomić Lint z poziomu Android Studio, wybierz opcję Inspect Code ... z menu Analyze . Spowoduje to aktywację okna dialogowego Określ zakres kontroli .

Jeff Friesen

W oknie dialogowym wybierz żądany zakres (w tym przypadku cały projekt), a następnie kliknij przycisk OK, aby rozpocząć kontrolę. Wyniki pojawią się w oknie Wyniki inspekcji , gdzie są uporządkowane według kategorii.

Jeff Friesen

Zgodnie ze swoją naturą Lint wybrał kilka elementów, które w przeciwnym razie mogłyby zaśmiecać kod aplikacji. Po wykryciu, łatwo jest naprawić trzy ostrzeżenia Java pokazane na rysunku 8: po prostu zadeklaruj androidAnimationprivatei usuń rzutowania z dwóch findViewById()wywołań metod.

Więcej o Lint

Zobacz „Ulepsz swój kod za pomocą sprawdzania lint”, aby dowiedzieć się więcej o korzystaniu z Lint w Android Studio oraz o samodzielnym narzędziu Lint w Android SDK.

Instalowanie i używanie wtyczek Android Studio

Chociaż wbudowane narzędzia mają swoje zalety, wiele innych narzędzi jest dostępnych jako wtyczki. W tej sekcji przyjrzymy się trzem wtyczkom poprawiającym produktywność kodowania w Android Studio:

  • Pomysł ADB
  • Codota
  • Wtyczka Lombok

Menedżer wtyczek Android Studio

Menedżer wtyczek w Android Studio bardzo ułatwia znajdowanie i instalowanie wtyczek. Aktywuj menedżera wtyczek, wybierając Plik > Ustawienia, a następnie Wtyczki w oknie dialogowym Ustawienia :

Jeff Friesen

Następnie kliknij Przeglądaj repozytoria ..., aby aktywować okno dialogowe Przeglądaj repozytoria , które przedstawia pełną listę obsługiwanych wtyczek. W tym oknie dialogowym wybierzemy naszą pierwszą wtyczkę, ADB Idea.

Jeff Friesen

Zwiększ produktywność w systemie Android

Skróty w kodzie: ADB Idea

ADB Idea przyspiesza codzienne tworzenie systemu Android, zapewniając szybki dostęp do często używanych poleceń ADB, takich jak uruchamianie i odinstalowywanie aplikacji.

Wybierz ADB Idea na liście repozytoriów wtyczek, a następnie kliknij przycisk Instaluj . Android Studio rozpocznie pobieranie i instalowanie wtyczki. Następnie zmienia etykiety Zainstaluj, aby ponownie uruchomić Android Studio . Dla każdej wtyczki musiałem ponownie wybrać wtyczkę po kliknięciu Restart Android Studio , a następnie kliknąć ten przycisk po raz drugi, aby ponownie uruchomić Android Studio.

Jeff Friesen

Po zainstalowaniu Android Studio umożliwia dostęp do ADB Idea z menu Narzędzia . Wybierz Narzędzia> ADB Idea i wybierz odpowiednie polecenie z wyskakującego menu.

Jeff Friesen

Po wybraniu aplikacji ADB Restart App zauważyłem następujące komunikaty w oknie dziennika zdarzeń, a także ponownie uruchomioną aplikację na moim urządzeniu Amazon Kindle.

Jeff Friesen

Znajdź użyteczny kod: Codota

Możesz użyć wtyczki Codota, aby uzyskać dostęp do wyszukiwarki Codota, która umożliwia przeglądanie milionów publicznie dostępnych fragmentów kodu źródłowego Java w celu znalezienia rozwiązań problemów z kodowaniem w systemie Android.

Jeff Friesen

Wybierz Codota z listy wtyczek repozytorium, a następnie kliknij przycisk Instaluj . Po pobraniu i zainstalowaniu wtyczki Android Studio, ponownie oznaczy przycisk Instaluj , aby ponownie uruchomić Android Studio . Ponowne uruchomienie aktywuje Codota.

Po ponownym uruchomieniu pojawi się okno dialogowe Codota Authentication . Kliknij łącze i postępuj zgodnie z instrukcjami, aby otrzymać token. Następnie wklej token do wyżej wymienionego okna dialogowego i kliknij Idź .

Jeff Friesen

Android Studio umożliwia dostęp do Codota, klikając prawym przyciskiem myszy kod Java w oknie edytora i wybierając element menu Pobierz odpowiednie przykłady , jak pokazano na rysunku 16.

Jeff Friesen

Kliknięcie tej pozycji menu powoduje, że przeglądarka prezentuje stronę z odpowiednimi przykładami kodu. Na przykład na poniższej stronie przedstawiono przykłady, które są istotne dla findViewById:

Jeff Friesen

Automatycznie generuj kod Java: Lombok

Project Lombok oferuje zestaw adnotacji, których możesz użyć zamiast standardowego kodu, oszczędzając w ten sposób czas na ręczne pisanie tego kodu.

Jeff Friesen

Wybierz wtyczkę Lombok z listy wtyczek repozytorium, a następnie kliknij Zainstaluj . Po pobraniu i zainstalowaniu wtyczki przez Android Studio, pojawi się monit o ponowne uruchomienie Android Studio . Ponowne uruchomienie aktywuje wtyczkę Lombok.