[title-4]Czym jest logcat i czemu służy?[/title-4]
Logcat w Androidzie to aktywny podgląd wszystkiego co dzieje się “pod maską” telefonu. Wyświetlane są wszelkie działania i operacje na aplikacjach, a także czynności wykonywane przez system. Analiza tych danych jest często niezbędna do zdiagnozowania problemu np. niespodziewanego zamknięcia aplikacji – zwanym dalej FC (Force Close).
Logcat wygląda mniej więcej tak:
Jeśli po instalacji MIUI na naszym telefonie występuje jakieś nieprawidłowe zachowanie aplikacji np. FC a problem ten nie może zostać przeze mnie odtworzony to konieczne jest przesłanie na adres mailowy (kontakt na dole strony) logcata z tego zdarzenia.
Przedstawiony tutaj sposób na rejestrację logcata jest jednym z kilku możliwych do przeprowadzenia. Opiszę tutaj metodę (dla mnie przynajmniej) najwygodniejszą i najszybszą.
Poradnik pisany jest na Ubuntu linux ale komendy i sama procedura jest taka sama dla Windows.
[title-1]Wymagania[/title-1]
- zainstalowane na komputerze Android SDK
- telefon podpięty pod USB
- włączone Debugowanie USB dostępne w MIUI 2.3 pod: 1Ustawienia > Aplikacje > Opcje programistyczne
a w MIUI v4 pod:
1Ustawienia > Opcje programistyczne
[title-1]Instalacja Android SDK[/title-1]
- instalacja SDK dla Windows i Linux jest jasno opisana tutaj i wystarczy wykonać poradnik krok po kroku.
- jeśli po wykonaniu powyższego poradnika polecenie:
[code]adb devices[/code] wprowadzone w konsoli zwraca nam identyfikator urządzenia to możemy przystąpić do dalszej części.
[title-1]Logcat[/title-1]
Często na stronie miuipolska.pl lub na forum wspominam iż by pomóc w rozwiązaniu problemu potrzebne jest przesłanie mi logcata z FC, którego mamy po uruchomieniu jakiejś aplikacji.
W tym celu dokonamy zapisu błędu z FC
1 | Tethering i Hotspot |
w MIUI v4.
Log zostanie zapisany do pliku tekstowego log.txt.
- Podpinamy telefon do USB
- Przechodzimy do miejsca w telefonie gdzie chcemy wywołać FC ale jeszcze tego nie robimy. W tym przykładzie przechodzimy do 1Ustawienia > Więcej...
. Lepiej jest to zrobić teraz, ponieważ logcat będzie rejestrował nawet nasze kroki po menu, a to nie jest nam potrzebne.
- Uruchamiamy konsolę CMD 1Uruchom > cmd
lub Terminal w Linux
- Przechodzimy do katalogu 1android-sdk/tools
- Wpisujemy: 1adb logcat > log.txt
- Czekamy chwilkę na przejście programu przez logi wstępne.
- Na telefonie wywołujemy FC. W przykładzie klikamy na 1Tethering i Hotspot
- Pojawia nam się komunikat o zamknięciu aplikacji 1Ustawienia
. NIE klikamy jeszcze OK.
- W konsoli kończymy działanie Logcata wciskając kombinację klawiszy: 1ctrl + c
. Dopóki nie klikniemy na OK w telefonie fragment logcata z tego FC będzie na końcu pliku log.txt więc łatwo dokonamy wycięcia tylko tej części, która nas interesuje.
- Otwieramy plik log.txt za pomocą edytora plików tekstowych. Tylko nie Notatnik!
Ta zabawka potrafi zapisać loga bez zawijania wierszy, a także nie radzi sobie z dużymi plikami. Radzę użyć normalnego edytora np. Notepad++ - Przewijamy na koniec pliku log.txt:
Błąd (ERROR) powodujący zakończenie działania aplikacji zaczyna się od:
1E/AndroidRuntime( 6632): FATAL EXCEPTION: maina kończy się na wpisach:
1W/ActivityManager( 176): Force finishing activity com.android.settings/.SubSettingsTaki też fragment kopiujemy i wysyłamy mailem do mnie. Warto jest też zapisać to w osobnym pliku .txt by łatwiej się czytało loga ;)
logcat będzie od razu zapisywany do pliku tekstowego więc nie będzie widoczny rezultat jego działania w konsoli.
[title-1]Czego możemy się dowiedzieć z logcata?[/title-1]
Wykonując logcat możemy stwierdzić co powoduje błąd aplikacji. W opisanym przykładzie jest to brak zasobów:
1 2 | E/AndroidRuntime( 6632): Caused by: android.content.res.Resources$NotFoundException: Resource ID #0x3060005 |
będących pod podanym ID. Prawdopodobnie string jest zdefiniowany w public.xml ale nieużyty w strings.xml.
[title-1]Rejestr bootloopa[/title-1]
Logcat jest także bardzo przydatny jeśli pomimo wgrania pliku w recovery, telefon się nie uruchamia i stoi na animacji bootowania lub ekranie startowym. Wtedy także możemy ten błąd zarejestrować.
Kolejność jest wtedy następująca:
- Wchodzimy do recovery
- Instalujemy coś co powoduje bootloop
- Restartujemy telefon
- Włączamy logcat (najlepiej bez opcji zapisu do pliku)
- Obserwujemy logcat aż wpisy zaczną się powtarzać – to jest bootloop
- Zatrzymujemy logcat, zaznaczamy treść błędu w konsoli i kopiujemy do pliku tekstowego.
- Jako ciekawostkę podam, że by wyjść z bootloopa nie trzeba wyjmować baterii.
W większości przypadków wpisanie poniższej komendy:1adb reboot recoverywymusi na telefonie powrót do recovery
[title-1]Inne możliwości[/title-1]
W markecie dostępnych jest także wiele aplikacji, które część działań wykonują za nas a logcat jest robiony bezpośrednio przez aplikację w telefonie. Niektóre mają także możliwość wysłania błędu emailem pod podany adres. Można więc się zapoznać z ich działaniem jeśli ten sposób jest zbyt skomplikowany.
Dla mnie ta metoda jest najszybsza i prosta także polecam wszystkim.
Mam nadzieję, że ten temat wyczerpał wszelkie wątpliwości o tym jak zrobić logcat.