1) prostredníctvom aplikácie v samotnom systéme Android
2) prostredníctvom ADB príkazovej konzoly
Prvý spôsob:
Existuje mnoho aplikácií čo dokáže zaznamenávať log(y), ale do pozornosti Vám dávam tieto 2 aplikácie - aLogCat alebo CatLog (osobne preferujem aplikáciu CatLog, lebo má krajšie UI)
- obidve aplikáciu dokážu ukladať výpisy do textového súboru čo je veľmi nápomocné práve pre vývojárov
- ak nechcete používať žiadnu spomenutú aplikáciu, môžete využiť samotnú aplikáciu Terminal (často ju obsahujú už ROM-ky), v ktorom platia tie isté príkazy ako budú spomenuté nižšie;
Druhý spôsob:
Druhým spôsobom je využitie ADB konzoly, čo je podľa mňa lepšia voľba, lebo je možné začať so zaznamenávaním už pri samotnom bootovaní zariadenia (napr. keď sa obajaví boot animácia).
Na to, aby sa začalo zaznamenávať do .txt súboru použijete príkaz:
Kód: Vybrat vše
adb logcat > nazov_suboru.txt
Kód: Vybrat vše
adb logcat -f nazov_suboru.txt
Kód: Vybrat vše
adb logcat -v long > nazov_suboru.txt
POZNÁMKA: pokiaľ pri zaznamenávaní uvidíte prázdny riadok, tak sa neľakajte. Je to normálne.
Na to, aby ste ukončili zaznamenávanie do súboru použite skratku Ctrl+C.
Najlepšie je si to všetko ukázať na príklade. Napr. keď som skúšal použiť iný ramdisk, wifi prestala fungovať takže som použil LogCat a získal som skoro 1300 riadkov výpisu (veľa vecí sa odohrávalo na pozadí). Takže ak hľadáte nejaký problém vo výpise najčastejšie hľadajte písmenko E (Error) alebo F (Fatal). Toto sú dve hlavné veci, ktoré dokážu narušiť chod systému.
Kód: Vybrat vše
D/dalvikvm( 871): GC_CONCURRENT freed 472K, 6% free 10224K/10823K, paused 1ms+6ms
V/AmazonAppstore.DiskInspectorServiceImpl( 871): Available blocks: 21981, Block size: 4096, Free: 90034176, Threshold: 5242880, withinThreshold? true
D/AmazonAppstore.UpdateService( 871): Received action: null from intent: Intent { cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService }
W/AmazonAppstore.UpdateService( 871): Confused about why I'm running with this intent action: null from intent: Intent { cmp=com.amazon.venezia/com.amazon.mas.client.framework.UpdateService }
D/dalvikvm( 890): GC_CONCURRENT freed 175K, 4% free 9375K/9671K, paused 2ms+3ms
V/AmazonAppstore.ReferenceCounter( 871): Reference (MASLoggerDB) count has gone to 0. Closing referenced object.
E/WifiStateMachine( 203): Failed to reload STA firmware java.lang.IllegalStateException: Error communicating to native daemon
V/AmazonAppstore.UpdateService( 871): runUpdateCommand doInBackground started.
V/AmazonAppstore.UpdateService( 871): Running UpdateCommand: digitalLocker
V/AmazonAppstore.UpdateCommand( 871): Not updating key: digitalLocker from: 1334228488057
V/AmazonAppstore.UpdateService( 871): Finished UpdateCommand: digitalLocker
V/AmazonAppstore.UpdateService( 871): Running UpdateCommand: serviceConfig
V/AmazonAppstore.MASLoggerDB( 871): performLogMetric: Metric logged: ResponseTimeMetric [fullName=com.amazon.venezia.VeneziaApplication_onCreate, build=release-2.3, date=Wed Apr 11 13:10:55 CDT 2012, count=1, value=1601.0]
V/AmazonAppstore.MASLoggerDB( 871): onBackgroundTaskSucceeded: Metric logged: ResponseTimeMetric [fullName=com.amazon.venezia.VeneziaApplication_onCreate, build=release-2.3, date=Wed Apr 11 13:10:55 CDT 2012, count=1, value=1601.0]
W/CommandListener( 118): Failed to retrieve HW addr for eth0 (No such device)
D/CommandListener( 118): Setting iface cfg
D/NetworkManagementService( 203): rsp <213 00:00:00:00:00:00 0.0.0.0 0 [down]>
D/NetworkManagementService( 203): flags <[down]>
E/WifiStateMachine( 203): Unable to change interface settings: java.lang.IllegalStateException: Unable to communicate with native daemon to interface setcfg - com.android.server.NativeDaemonConnectorException: Cmd {interface setcfg eth0 0.0.0.0 0 [down]} failed with code 400 : {Failed to set address (No such device)}
W/PackageParser( 203): Unknown element under <manifest>: supports-screen at /mnt/asec/com.android.aldiko-1/pkg.apk Binary XML file line #16
D/wpa_supplicant( 930): wpa_supplicant v0.8.x
D/wpa_supplicant( 930): random: Trying to read entropy from /dev/random
D/wpa_supplicant( 930): Initializing interface 'eth0' conf '/data/misc/wifi/wpa_supplicant.conf' driver 'wext' ctrl_interface 'N/A' bridge 'N/A'
D/wpa_supplicant( 930): Configuration file '/data/misc/wifi/wpa_supplicant.conf' -> '/data/misc/wifi/wpa_supplicant.conf'
D/wpa_supplicant( 930): Reading configuration file '/data/misc/wifi/wpa_supplicant.conf'
D/wpa_supplicant( 930): ctrl_interface='eth0'
D/wpa_supplicant( 930): update_config=1
D/wpa_supplicant( 930): Line: 4 - start of a new network block
D/wpa_supplicant( 930): key_mgmt: 0x4
Takže ako ste si všimli, tak sú tam 2 riadky s E a môžme spraviť nasledovné:
Kód: Vybrat vše
adb logcat WifiStateMachine:E *:S -v long > nazov_suboru.txt
V predchádzajúcom príkaze sme použili WifiStateMachine:E, kde :E znamená, to že hľadáme chyby (errors). Avšak môžme použiť aj iné možnosti ako sú:
- V — Verbose (najnižšia priorita)
D — Debug
I — Info (základná priorita)
W — Warning
E — Error
F — Fatal
S — Silent
Zdroje: XDA, LogCat, ADB