Debagovanje Android Aplikacija uz Visual Studio, Trikovi i Saveti

Debagovanje Android Aplikacija uz Visual Studio, Trikovi i Saveti

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12394

Svi znamo da možemo da debagujemo Android aplikacije na uređaju koji je prikačen preko USB-a ili preko emulatora koji je instaliran na našem računaru.

Međutim to nekada prosto nije prikladno za neke određene testove iz opravdanih razloga.
Na primer, dužina USB kabla ili upotreba kamere koja baš i ne može lagano da se koristi u emulatorima.

Evo par saveta i trikova koji će vam olakšati debagovanje.

Debugging preko Wirelessa

Aplikacije iz Visual Studija možete debagovati preko Wirelessa.
Dovoljno je da uređaj bude zakačen za istu lokalnu mrežu kao i računar.



Omogućite Wireless Debugging u Developer Opcijama telefona

Uđite u opcije Wireless Debugginga i pokrenite uparivanje putem koda za uparivanje


Dobićete IP adresu, port i kod za uparivanje
Otvorite ADB iz Visual Studia

Unesite komandu adb devices
Ukoliko imate više uređaja na listi, potrebno je da za svaku komandu nadalje unesete parametar -s ID_UREĐAJA nakon adb pa tek onda ostatak komande. Na primer adb -s uredjaj1 pair
Unesite komandu : adb pair IP_Adresa:Port (koja je prikazana na uređaju prilikom podešavanja Wireless Debugginga)
Unesite kod za uparivanje koji je prikazan na uređaju
Dobićete poruku da ste uparili telefon sa ADB-om
Unesite komandu adb connect IP_Adresa:Port
Sada će se uređaj pojaviti kao opcija za pokretanje projekta


Exclamation Kod mene je takva situacija da obično pre konektovanja na uređaj, dok je uređaj na USB-u, moram da unesem komandu adb tcpip 5555 i da se onda povežem na IP adresu koju mi uređaj prikazuje, sa portom 5555.
Exclamation Ukoliko imate više uređaja, morate uvek da koristite parametar -s za svaku komandu.



Izvucite USB kabl i pokrenite projekat preko novog unosa, aplikacija će se preko Wirelessa pokrenuti u režimu debagovanja na vašem uređaju.

Kontrolisanje uređaja preko računara

Debagovanje aplikacije podrazumeva da uređaj držimo u rukama.
Međutim, možemo dosta sebi olakšati proces tako što ćemo da prikažemo ekran uređaja na ekranu i kontrolišemo ga tastaturom i mišem.

Upoznajte Scrcpy

Citat:This application mirrors Android devices (video and audio) connected via USB or over TCP/IP, and allows to control the device with the keyboard and the mouse of the computer. It does not require any root access. It works on Linux, Windows and macOS.

Scrcpy je izuzetno lagan, brz i odličan alat koji može da kopira ekran vašeg uređaja na računar i omogući upotrebu miša i tastature.
Preko USB-a radi gotovo brzo kao i sam uređaj, dok je kod WiFi-a lag očigledan.
Međutim može se koristiti i preko USB-a i preko Wireless-a, tako da možete da prilagodite svojim potrebama upotrebu samog alata.


Preuzmite najnoviju stabilnu verziju
Raspakujte u bilo koji folder na računaru
Pokrenite fajl open_a_terminal_here.bat
Otvoriće se CMD
Proverite ponovo listu uređaja tako što ćete upisati adb devices
Isto važi za parametar -s, ukoliko imate više uređaja potrebno je da ga unesete svaki put
Da pokrenete strim, unesite komandu scrcpy unesiteIDUređajaOvde


Da bi kontrolisanje mišem i tastaturom radilo na nekim uređajima, potrebno je da omogućite USB Debugging (Security Settings)


Takođe, postoje zahtevi u smislu Android Verzije, koje ograničavaju određene mogućnosti alata.

Exclamation KADA ZAVRŠITE SA DEBAGOVANJEM, NEMOJTE ZABORAVITI DA UGASITE OVE OPCIJE JER IZLAŽETE VAŠ UREĐAJ POTENCIJALNIM NAPADIMA


Za sada toliko, ukoliko neko ima još neke savete, slobodno ih podelite. Ziveli



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12394

Ukoliko radite u Xamarin Formsu, proces kreiranja interfejsa verovatno izgleda ovako :

1. Pokrenete debugging
2. Menjate kod XAML stranice, HotReload odrađuje posao i prikazuje izmene bez potrebe za ponovnim pokretanjem
3. Na uređaju pratite izmene i prilagođavate interfejs

Međutim, ukoliko u stack gurnete stranicu upotrebom PushModalAsync(), vaše izmene neće raditi zbog baga u Xamarinu koji postoji već neko vreme.

Da izbegnete to, koristite PushAsync(), i HotReload će odraditi posao u tom slučaju. Kad završite sa dizajnom interfejsa, možete da se vratite na PushModalAsync, ukoliko vam je potreban.

Drugi način da izbegnete ovu situaciju je da ulistate samu stranicu u TabBar ili koji god način prikazivanja koristite.

Koliko sam čitao po forumima, ovaj bag je ispravljen u nasledniku Xamarin Forms-a, MAUI-u.



offline
  • Pridružio: 06 Feb 2012
  • Poruke: 1872

Zar je xamarin jos živ? Nisam u mobile dev svijetu, ali već odavno vidim da se samo maui spominje.

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12394

Jeste, zvanična podrška traje do kraja ove godine, čini mi se.
MAUI jeste budućnost i Xamarin projekti mogu da se portuju u MAUI.

Ja sam počeo da radim aplikaciju u vreme kad MAUI još nije bio ni u stabilnoj verziji, tako da nisam imao kud. Međutim eto, pokušao sam da je portujem pre par dana i shvatio sam da još uvek ne postoji stabilna verzija nugeta koji mi je primaran za aplikaciju, pa sam i dalje "zaglavljen".

Isto, što je za očekivati, Xamarin još uvek ima više third party dodataka ali bar ovi popularniji se polako portuju za MAUI.

U suštini svako ko planira da radi neki projekat, ne treba da razmatra Xamarin bez preke potrebe, jer je MAUI budućnost.

P.S. Xamarin je možda i moje najgore iskustvo koje sam imao od kad programiram. Toliko je lako izgubiti se u kodu da je to strašno. Plus što Visual Studio nije baš na nekom super nivou kada su te neke specifične stvari oko razvoja u Xamarinu u pitanju, pa i nije baš od neke preterane pomoći.

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12394

Jedan novi trik koji sam upravo naučio, a baš mi mnogo znači, jer se lako izgubim u kodu jer imam tri fajla po jednoj stranici u Xamarinu jer koristim MVVM.

Visual Studio ima mogućnost da oboji tabove prozora na tri načina :




Tools -> Options ->Environment -> Tabs and Windows
☑ Colorize document tabs by :
Project - U slučaju da imate više projekata, boje tabova će biti specifične po projektu
File Extension - Boje tabova možete razvrstati po ekstenzijama fajla
Regular Expressions - Možete koristiti REGEX da razvrstate tipove fajlova


Kada omogućite opciju, videćete da je VS obojio tabove istom bojom.
Desnim klikom na bilo koji tab možete podesiti boju po želji :



To važi za prve dve opcije, a u zavisnosti od izbora, VS će promeniti boje po projektu ili po ekstenziji.

Međutim, nas interesuje treća opcija.

Da otvorite fajl u kom možete uneti regex, kliknite na zupčanik na kraju tabova -> Configure Regular Expressions


Moj konkretan slučaj za Xamarin Forms aplikaciju :
Imam .xaml fajlove sa definicijom izgleda stranice
Zatim xaml.cs fajlove koji sadrže kod za tu .xaml stranicu
Na kraju imam .cs fajlove koji u sebi sadrže naziv "ViewModel", za svaku stranicu
Tu su i standardni .cs i drugi fajlovi.

Samim tim, moj regex izgleda ovako :
.*\.xaml\.cs$ .*\.xaml .*ViewModel.* .*\.cs$ ^.*\.php$

Sačuvamo fajl i zatim promenimo boje za svaki tip fajla jednom.

Rezultat :

offline
  • Pridružio: 14 Feb 2008
  • Poruke: 12394

Portovah svoju Xamarin Forms aplikaciju u MAUI i sačekalo me je neprijatno iznenađenje koje nije moglo tako lako da se reši.

Naime, kada je aplikacija pokrenuta u debugging modu iz Visual Studia, radi očekivano, bez grešaka.
Isto tako i u release modu. Kada raskačim kabl i uklonim konekciju sa Visual Studiom, radi samo u release modu.

Prilikom pokretanja debugging verzije aplikacije, bez kabla, aplikacija se skrši i ne vrati nikakvu grešku.

Skoro je nemoguće provaliti o čemu se radi jer je ta stranica koja se učitavala došla sa gomilom koda i nemamo debugger kako bi mogli da proverimo kod, a i da imamo - prosto se greška ne dešava u toku rada aplikacije u tom slučaju.

Catlog to the rescue!

Visual Studio ima ugrađeni Device Log Android uređaja.



Vaša aplikacija i ne mora da bude pokrenuta iz Visual Studia da bi videli grešku.

Jedina začkoljica je što je ovaj log konstantan za vaš operativni sistem i prijavljuje velikom brzinom sve logove celog operativnog sistema, aplikacija itd.

Da bi rešili ovaj problem i shvatili gde dolazi do pucanja aplikacije:


prvo očistimo log klikom na Clear All dugme
a zatim namerno izazovemo bag koji skrši aplikaciju.
Ubrzo nakon toga pauziramo log, da ne bi nastavio da spamuje unose.


Rezultat je kompletna greška sa StackTrace-om koju možemo dalje da analiziramo i pokušamo da shvatimo šta je u našem kodu izazvalo problem.

Štaviše, ako imate baš ogroman log koji je opširan i ne možete da se snađete ili vam je mrsko, možete da ga prekopirate u Chat GPT i da tražite analizu, vrlo je verovatno da će kroz par sekundi uočiti problem za koji bi vam trebalo nekoliko minuta da uočite sami.


Prvo dugme u obeleženoj grupi čisti log, drugo se koristi za pauziranje loga.

Ko je trenutno na forumu
 

Ukupno su 638 korisnika na forumu :: 29 registrovanih, 9 sakrivenih i 600 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Boris90, djboj, DPera, dule10savic, Frunze, Georgius, HrcAk47, Jahorina, JimmyNapoli, Karla, Koca Popovic, Kubovac, kuntalo, kybonacci, Marko Marković, milenko crazy north, nebkv, nemkea71, Panter, sabros, stegonosa, suton, theNedjeljko, vladaa012, voja64, yrraf, YugoSlav, 125