Folosind noua aplicație Relic pentru a monitoriza aplicația Android

Atât de interesante sunt aplicațiile web, ele nu sunt singurul joc din oraș. Aceste zile, aplicațiile mobile reprezintă o parte masivă a peisajului de dezvoltare software. La fel ca și în cazul aplicațiilor web, dorim ca codul aplicației noastre mobile să fie performant.

Din fericire, în ultimul an sau doi, New Relic sa concentrat pe construirea unei soluții pentru monitorizarea performanțelor aplicațiilor dvs. mobile. Astăzi vom analiza modul în care puteți începe să utilizați New Relic pentru a monitoriza performanța unei aplicații Android.

De ce să monitorizați toate aplicațiile mobile?

Lucrul minunat în ceea ce privește construirea unei aplicații web este că aveți posibilitatea să implementați întotdeauna o nouă versiune instantaneu forțând întreaga bază de utilizatori pentru a utiliza noul cod. Deci, dacă nu v-ați monitorizat codul înainte, puteți să vă conectați cu ușurință la New Relic sau să faceți ceva personalizat, să-l împingeți și să începeți să obțineți valori în câteva minute.

Cu aplicațiile mobile, nu ești așa de norocos. Puteți, desigur, să lansați o nouă versiune ori de câte ori doriți, dar procesul este, probabil, mai lung, aprobarea magazinului de aplicații, de exemplu. Și chiar dacă noua versiune este acolo, nu puteți forța utilizatorii să facă upgrade. Prin urmare, este important să vă gândiți la orice fel de monitorizare pe care ați putea dori să o faceți înainte de a lansa prima versiune a aplicației dvs..

Chiar dacă nu trebuie să vă faceți griji pentru performanța aplicației dvs. pentru o perioadă de timp, o dată ce faceți, soluția dvs. de monitorizare va fi deja în vigoare, trebuie doar să începeți să interpretați valorile.

În plus, este o aplicație mobilă rară în aceste zile, care nu are, de asemenea, o componentă web la ea. Aproximativ fiecare aplicație în aceste zile face cereri HTTP la un API - și de multe ori API-uri diferite.

După cum știm, apelurile în rețea nu sunt întotdeauna cele mai fiabile lucruri. Ar fi minunat să aflăm frecvența apelurilor API pentru utilizatorii noștri și, mai important, cât de lente sunt apelurile noastre API în medie. Este singura modalitate de a ști dacă utilizatorii noștri au o experiență bună cu aplicația noastră sau dacă sunt frustrați de lag.

Dacă nu monitorizați aplicația, puteți ghici doar despre astfel de lucruri. Nu știu despre tine, dar de obicei sunt mult mai confortabil cu date grele.

Există multe alte întrebări importante pe care o soluție de monitorizare bună ne poate ajuta să le răspundem, dar le putem acoperi pe acelea pe măsură ce lucrăm cu aplicația noastră Android, așa că haideți să ne spargem.

Construirea unei aplicații Android de bază

În mod normal, pentru un articol introductiv ca acesta, îmi place să mă concentrez asupra subiectului la îndemână - în acest caz, New Relic pentru mobil - și să păstreze restul codului ca Salut Lume pe cat posibil.

Este ușor de a construi o Salut Lume Aplicația Android, Google chiar are un tutorial despre asta. Din păcate, aplicația este doar puțin de asemenea de bază. Nu face apeluri de rețea, ceea ce înseamnă că nu vom putea privi o mare parte din ceea ce oferă New Relic pentru monitorizarea aplicațiilor mobile. Deci, vom modifica puțin aplicația noastră de bază. 

Aplicația noastră va avea două ecrane, pe primul ecran vom putea introduce un handle Twitter și îl vom trimite. În acest moment, aplicația noastră va merge la cel de-al doilea ecran și va afișa un text cu substituent. Între timp, aplicația noastră va merge pe Twitter și va aduce cele mai recente tweet-uri pentru mânerul respectiv. Odată ce tweet-ul este disponibil, vom actualiza al doilea ecran pentru al afișa. Aplicația este încă destul de fundamentală, dar sperăm că este suficient de complexă pentru a putea obține date interesante de la New Relic.

Nu voi trece prin crearea întregii aplicații, dar aici sunt părțile interesante. Conform tutorialului Google, când apăsăm butonul de pe primul ecran, acesta va trece de-a lungul valorii câmpului de text la cel de-al doilea ecran, dar în cazul nostru va fi un mâner Twitter:

public void sendMessage (Vedere vedere) Intent intent = intenție nouă (aceasta, DisplayMessageActivity.class); EditText editText = (EditareText) findViewById (R.id.edit_message); String message = editareText.getText (). ToString (); intent.putExtra (EXTRA_MESSAGE, mesaj); startActivity (intenție); 

Pe cel de-al doilea ecran, dorim să preluăm cel mai recent tweet pentru acel mâner. Dar nu putem face asta UIThread, avem nevoie de un AsyncTask. Vom crea unul și vom lovi cu piciorul înăuntru onCreate metoda celei de-a doua activități:

@Override protejate void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_display_message); setupActionBar (); String mâner = getIntent (). GetStringExtra (MainActivity.EXTRA_MESSAGE); TextView textView = TextView nou (acesta); textView.setTextSize (40); nou FetchLatestTweetTask (textView, mâner) .execute (); // Setați vizualizarea text ca set de activitate setContentView (textView);  

Sarcina reală arată astfel:

public class FetchLatestTweetTask extinde AsyncTask private TextView textView; maner String privat; public FetchLatestTweetTask (TextView textView, mâner String) this.textView = textView; this.handle = mâner;  @Override protejate String doInBackground (Void ... args) Twitter twitter = noul TwitterFactory (). GetInstance (); String status = null; încercați User user = twitter.showUser (handle); starea = user.getStatus (). getText ();  captură (Excepție e) e.printStackTrace ();  stare de returnare;  void protejat onPreExecute () textView.setText (String.format ("Fetching tweet by @% s ...", mâner));  void protejat onPostExecute (tweet string) textView.setText (tweet); 

Afișăm un text cu substituent înainte de a prelua mesajul tweet și actualizăm textul cu substituentul după ce l-am preluat. Utilizăm Twitter4J pentru a vorbi cu API-ul Twitter. Pentru ca biblioteca API să funcționeze, am eliminat a twitter4j.properties fișier în / src folder al proiectului, astfel încât să se încheie pe calea de clasă conform documentației. 

Fișierul de proprietăți conține cheia de consum OAuth, secretul de consum, cheia cu indicații de acces și secretul de acces pentru aplicația Twitter pe care am configurat-o doar pentru aceasta.

Acesta este tot codul interesant din aplicația noastră, restul este doar boilerplate generic ca pe tutorialul introductiv Google.

Configurarea unei noi aplicații Relic pentru dvs.

Configurarea noului Relic pentru a începe monitorizarea aplicației Android este foarte ușoară. În contul dvs. New Relic, faceți clic pe Mobil din meniu. Aici vor trăi toate aplicațiile dvs. mobile, la fel ca și aplicațiile web live în cadrul aplicației Aplicații articol din meniu.

Acum faceți clic pe Adăugați o aplicație nouă buton:

Aceasta vă va duce la un alt ecran în care New Relic vă va ajuta să configurați o nouă aplicație:

Facem click pe Android și dați aplicației noastre un nume. După ce ai dat numele aplicației, trebuie să apăsați Continua astfel încât New Relic generează o nouă cheie API pentru aplicația dvs..

Apoi, trebuie să instalăm agentul New Relic. Eu folosesc Eclipse, așa că mă duc Ajutor> Instalați software-ul nou ... și adăugați New Relic ca site:

Clic Următor → și așteaptă ca Eclipse să-și facă treaba. Odată ce ați terminat, trebuie să reporniți Eclipse. În acest moment, ar trebui să aveți posibilitatea să faceți clic dreapta pe proiectul dvs. în Eclipse și ar trebui să existe un Instalați noua relicvă opțiune de meniu. Cand o apasam, bara de agent New Relic se va termina in / libs dosarul proiectului nostru.

De altfel, dacă vine o nouă versiune a agentului New Relic, îl actualizați în același mod. În primul rând Ajutor> Verificați pentru actualizări pentru a obține ultimele actualizări. După aceea, faceți clic dreapta pe proiectul dvs. și ar trebui să existe un Actualizați noua relicvă opțiune de meniu, care va actualiza borcanul New Relic atunci când se dă clic pe:

Acum trebuie să acordăm permisiunea pentru aplicația noastră INTERNET și ACCESS_NETWORK_STATE ca New Relic va trebui să trimită date înapoi la serverele lor. Al nostru AndroidManifest.xml va arata astfel:

    ...  

Acum trebuie să lansăm agentul. În a noastră MainActivity.java noi importăm New Relic:

import com.newrelic.agent.android.NewRelic;

Apoi pornim agentul în interiorul lui onCreate metodă:

protejat void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); . NewRelic.withApplicationToken ( "XXXXXXXXXXXXXXXXXXX") începe (this.getApplication ()); 

Notați jetonul aplicației. Dacă ați apăsat Continua când ți-ai dat numele, aceasta ar trebui să fie deja pre-completă pentru tine. Odată ce aplicația dvs. este în funcțiune, puteți oricând să o căutați din nou în Setări pentru aplicația dvs..

După acest pas, vom construi proiectul și îl vom implementa într-un emulator sau într-un dispozitiv fizic. Prefer să-mi implementez un dispozitiv de testare, deoarece îl consider mai rapid, mai receptiv și mai ușor de utilizat. Îmi voi folosi Nexus 4.

Dacă ne uităm la fila LogCat când aplicația se desfășoară, ar trebui să vedem o ieșire similară cu aceasta:

02-23 17: 25: 17.004: I / com.newrelic.agent.android (25592): Configurație încărcată: HarvestConfiguration collect_network_errors = true, cross_process_id = "null", data_report_period = 60, data_token = [0, = 50, report_max_transaction_age = 600, report_max_transaction_count = 1000, answer_body_limit = 2048, server_timestamp = 0, stack_trace_limit = 100, activity_trace_max_size = 65534, activity_trace_max_report_attempts = 1, activity_trace_min_utilization = 0.30000001192092896, at_capture = ActivityTraceConfiguration maxTotalTraceCount = : 17.054: I / com.newrelic.agent.android (25592): a început monitorul de stare a aplicației 02-23 17: 25: 17.104: I / com.newrelic.agent.android (25592): motorul de măsurare a fost inițializat. 02-23 17: 25: 17.114: I / com.newrelic.agent.android (25592): Agent Relic New v3.264.0

De aceea știm că New Relic sa încărcat. După aceea, dacă ne uităm la LogCat, vom vedea așa ceva în fiecare minut:

02-23 17: 55: 40.410: I / com.newrelic.agent.android (31413): Harvester: conectat 02-23 17: 55: 40.410: I / com.newrelic.agent.android (31413) 2 tranzacții HTTP. 02-23 17: 55: 40.410: I / com.newrelic.agent.android (31413): Harvester: Trimiteți 0 erori HTTP. 02-23 17: 55: 40.410: I / com.newrelic.agent.android (31413): Harvester: Trimitere 0 urme de activitate.

Acesta este noul Relic care sună acasă pentru a trimite date. Dacă revenim acum la interfața de utilizator New Relic, ar trebui să vedem datele.

Explorarea tablourilor de bord

Când te duci să te uiți la aplicația ta în New Relic, vei lovi mai întâi Prezentare generală ecran. Similar cu ecranul de prezentare generală a aplicațiilor web, acesta afișează câteva valori importante despre aplicația dvs., cum ar fi Timpul de răspuns Http, Cele mai slabe interacțiuni, etc.

Activitatea pe aceste grafice este sporadică, deoarece avem doar un client care trimite date înapoi și am făcut doar câteva interacțiuni.

Deci, care sunt unele dintre cele mai interesante lucruri pe care le puteți vedea în aplicația New Relic pentru aplicația dvs. mobilă? Ei bine, nu este Aplicații> Dispozitive care vă arată pe care dispozitive utilizatorii dvs. utilizează aplicația. Acest lucru este interesant, deoarece puteți afla dintr-o privire ce fel de telefoane / mese utilizează cea mai mare parte a bazei dvs. de utilizatori. Sunt cei mai mulți oameni pe dispozitive mai vechi sau mai noi? Sunt mai ales pe tablete sau telefoane? Acestea sunt date valoroase.

Puteți examina fiecare dispozitiv și puteți vedea cât de bine funcționează aplicația dvs. acolo. Durata de interacțiune pentru acest dispozitiv este mai lent decât ceea ce v-ați aștepta? Cum rămâne cu timpul de răspuns Http? Câți utilizatori activ utilizează în prezent aplicația dvs. pe acest tip de dispozitiv? În cazul nostru:

Există doar un singur dispozitiv, deci nu este atât de mult de văzut. Dar dacă un procent mare din baza dvs. de utilizatori a fost pe un dispozitiv în care aplicația dvs. nu funcționa foarte bine, ați vedea imediat și ați putea aborda problema.

Similar cu Dispozitive tab, există Versiuni de sistem de operare , care distruge utilizarea aplicației dvs. de versiunea Android pe care au instalat-o utilizatorii dvs.:

Puteți afla dacă trebuie să vă concentrați mai mult atenția asupra versiunilor mai noi ale sistemului Android sau dacă majoritatea bazei dvs. de utilizatori se află încă într-o versiune mai veche.

Apoi este Reţea fila și copiii săi. În Hartă , puteți vedea care dintre API-urile la care se conectează aplicația dvs. și cât de bine funcționează fiecare dintre ele. Care este debitul, timpul de răspuns și rata de eroare:

În cazul nostru, avem doar API Twitter și este destul de lent de fapt. Poate că am putea lua în considerare cachearea unor răspunsuri pentru o perioadă de timp.

În Rețele> Solicitări Http , putem examina fiecare punct final al fiecărui API pe care îl folosim în mod similar cu modul în care analizăm dispozitivele și versiunile de sisteme de operare. Putem afla care sunt obiectivele cele mai utilizate și care sunt cele mai lente. Acest lucru ne oferă niște convingeri solide cu privire la direcția în care să direcționăm eforturile noastre de optimizare. Acest lucru este valabil mai ales dacă controlăm și API-urile care sunt utilizate.

În Rețea> Geografie , puteți afla unde provin majoritatea utilizatorilor dvs. din și în transportatorii puteți vedea ce fel de conexiune la internet au utilizatorii dvs. În cazul nostru, sunt pe Wi-Fi:

Este foarte important să știți dacă baza de utilizatori utilizează Wi-Fi, 3G sau 4G deoarece eforturile de optimizare pot fi complet diferite în funcție de defalcare.

Sub Setări> Alerte, puteți defini, de asemenea, anumite condiții pentru API-urile dvs. externe pentru New Relic pentru a vă anunța dacă timpii de răspuns depășesc un anumit prag sau dacă rata de eroare depășește un anumit procentaj.

Acest lucru este potențial mai puțin valabil pentru API-urile pe care nu le controlați, dar este încă un indicator bun dacă un API pe care îl utilizați este instabil sau nu este foarte performant.

Ultimele două sunt interesante Utilizare> Versiuni și Utilizare> Unique lunar. Prima vă arată care versiuni ale aplicației dvs. sunt utilizate în sălbăticie. Acest lucru vă permite să spuneți cum vă descarcă cu nerăbdare utilizatorii actualizările aplicației dvs. De asemenea, vă arată cât de bine funcționează fiecare versiune a aplicației dvs. pe dispozitiv. Noua versiune utilizează mai multă memorie decât versiunea anterioară?

Unicul lunar vă oferă o idee dacă oamenii interacționează de fapt cu aplicația dvs. Este posibil să aveți 10 milioane de descărcări, dar dacă numărul de unicuri lunare este scăzut, atunci lucrurile nu sunt la fel de mari ca ele par a fi.

Concluzie

Aceasta este o prezentare de ansamblu a unor caracteristici ale aplicațiilor New Relic pentru aplicații Android, dar nu toate. În sine, niciuna dintre caracteristici nu suflă mințile, dar datele solide sunt bune că, pentru o aplicație mobilă, nu puteți obține nici un alt mod.

Modul în care este folosit aplicația dvs. și pe ce dispozitive, cât de bine efectuează apelurile în rețea într-o conexiune lentă, este tipul de date care vă forțează să întrerupeți ghicitul și să luați decizii informate cu privire la modul de îmbunătățire a aplicației și să îi oferiți utilizatorilor experiență mai bună.

Amintiți-vă că performanța este la fel de importantă pentru aplicațiile mobile ca și pentru aplicațiile web și nu există niciun motiv pentru a ghici despre ceea ce face ca aplicația dvs. să fie lentă atunci când există o modalitate mult mai bună disponibilă.

Cod