Najnovija putanja učenja za Android u 2026. (preporuka za čuvanje 🔥)
Članovi zajednice pitali su me da li imam preporuke za put učenja Androida. Iako nisam profesionalni Android inženjer, nekada sam s priličnim oduševljenjem učio Android izvesno vreme i kupio sam knjigu „Prva linija koda — Android" autora Guo Lina, koja bi sada trebalo da je u trećem izdanju i prilično je poznata u industriji.
Iako nisam profesionalni Android inženjer, sposoban sam da članovima ponudim jednu pouzdanu putanju učenja — znam šta je dobro, a šta loše. Ako ste početnik, sadržaj ispod može vam pomoći da pronađete liniju učenja; ako ste iskusan, ovo što je ovde izlistano može vam pomoći da otkrijete šta vam nedostaje. Ako imate druge predloge, slobodno ostavite komentar i razgovarajmo.
Preporučeni materijali
Programming
Java
Java jeste podrazumevani jezik za razvoj Android aplikacija, a i Android Framework podrazumevano koristi Java; dobro poznavanje Java-e obavezna je veština za Android programere.
Oni koji žele da prodube poznavanje Java virtuelne mašine mogu pogledati i sledeće dve knjige:
- „Duboko razumevanje Java virtuelne mašine (treće izdanje)" autora Zhou Zhiming-a
- „Duboko razumevanje Android Java virtuelne mašine ART" profesora Deng-a
Kotlin
Google je pre nekoliko godina krenuo putem „Kotlin First"; trenutno mnoge zvanične dokumentacije i Demo primeri koriste Kotlin kao podrazumevani jezik, pa značaj KOTlin-a nije potrebno posebno naglašavati.
Google je zvanično objavio i tutorijal „Refactoring to Kotlin", koji se ovako predstavlja:
Ovaj Codelab je namenjen svakom programeru koji koristi Java i razmišlja o prelasku svog projekta na Kotlin. Krenućemo od nekoliko Java klasa i vodićemo vas da ih pomoću IDE-a prebacite u Kotlin. Zatim ćemo pregledati prebačeni kod, proučiti kako ga poboljšati da bude idiomatskiji i izbeći uobičajene greške.
Flutter
Flutter je Google-ov miljenik, čija je zvanična podrška svima očigledna.
Razvoj Flutter-a možete pratiti na članku Gityuan-a Flutter evolucija cross-platform arhitekture — uvod; trenutno više aplikacija kompanije ByteDance već koristi Flutter za hibridni razvoj.
Android Studio
Android Studio IDE Overview
Android Studio jeste podrazumevani alat za Android programere; ažuriranja verzija su rešila mnoge ranije probleme sa performansama. Iako i dalje prilično zahteva hardverske resurse, jednom kada prihvatite tu činjenicu — pravo je zadovoljstvo!
Potrebno je da se upoznate sa sledećim u AS:
- AS prečice
- AS dodaci (pluginovi)
- AS Profile (memorija, CPU, IO, mreža)
Project Structure
Upoznajte se sa strukturom direktorijuma različitih projekata, resource datotekama i Gradle datotekama.
Osnove Androida
Četiri glavne komponente
Ovde nema potrebe za previše objašnjenja; u nastavku su navedene dobro poznate četiri komponente Androida, osnova Android razvoja.
- Activity — Activity Lifecycle, Tasks & Back Stack
- Service
- Broadcast Receiver
- Content Provider
Intents
- Types of Intent - Implicit, Explicit
- Intent Filter
Static User Interface
- View — Button, ImageView, TextView, EditText itd.: ovo su komponente koje se često sreću u razvoju; mnoge složene izglede čine kombinacije jednostavnih osnovnih View komponenti
- ViewGroup - LinearLayout, RelativeLayout, FrameLayout: tri klasična layouta, za različite situacije
- ConstraintLayout: novi layout koji je Google izbacio, zamenio je RelativeLayout i postao podrazumevani layout aplikacija; za konkretne detalje pogledajte zvaničnu dokumentaciju
Dynamic User Interface
- RecyclerView — najbolji izbor za liste, sa nešto boljim performansama od ListView-a i više funkcija
- ViewPager
- Spinner
CustomView
Podrazumevani layout-i Androida često ne mogu da zadovolje dizajnerske zahteve, pa je tada potrebno definisati sopstveni View; potrebno je da savladate sledeće:
- Canvas
- Bitmap
- Paint
UI Resources
U poredjenju sa hardkodiranjem, korišćenje resource datoteka čini kod znatno izmenjivijim.
- Drawables
- String
- Styles
Fragments
Mnogi zagovaraju kombinaciju jedan Activity + više Fragment-a, što pokazuje značaj Fragment-a u razvoju. Ali upravljanje Fragment-ima je i sama veština; zamke Fragment-a mogu se popuniti samo u stvarnom razvoju. Ipak, osnove Fragment-a morate čvrsto da savladate:
- Fragment Lifecycle
- Fragment Manager
Support User Interface
Ovde su navedene funkcionalne komponente; treba da znate šta su i kako se osnovno koriste.
- ProgressBar — indikator napretka
- Dialogs — dijalozi
- Toast & Snackbar — obaveštenja
Storage
Razvoj aplikacija neizbežno uključuje rad sa datotekama — čitanje, pisanje i skladištenje su neophodni. U nastavku su navedeni neki od znanja o skladištenju u Androidu.
- Shared Preferences — za čuvanje polja
- File Systems — skladištenje datoteka
- Database — RoomDB — skladištenje u bazi; RoomDB je nova baza podataka koju je Google izbacio (u okviru AndroidX-a); za detalje pogledajte zvaničnu dokumentaciju
Build
Android aplikacije se podrazumevano kompajliraju sa Gradle; potrebno je da dobro poznajete upotrebu Gradle-a, da znate kako razlikovati razvojnu i Release verziju, kao i kinesku tehniku pakovanja za više kanala i ASM.
- Gradle
- Debug / Release Configuration
- Pakovanje za više kanala
- ASM
Threading
Razumevanje Thread-a je vrlo važno; Android aplikacija ima samo jednu glavnu nit, a ostale nazivamo radnim nitima. Mnogo posla zahteva prebacivanje izmedju radne niti i glavne niti; kako efikasno kreirati i oslobađati niti, bazen niti, komunikaciju izmedju niti, model Message-Looper-Handler — sve to morate dobro da znate. Za naprednije, Binder komunikacija je takođe znanje koje treba savladati.
- Threads
- Handler / Looper / Message / MessageQueue
- AIDL / Binder
Debugging
Ovde su navedeni osnovni načini otklanjanja grešaka; u stvarnom razvoju, pri rešavanju konkretnih problema, obično ćete se njima koristiti. Neki zahtevaju više vremena da se savladaju. Alati za debagovanje su mnogobrojni, izvan navedenih.
- Memory profiling - MAT, AS Memory Profile
- Logging - Log sadrži vrlo bogate informacije koje nam pomažu da rekonstruišemo situaciju
- Systrace - alat Systrace može da prikaže stanje svih procesa telefona u odredjenom vremenskom intervalu; za detalje pogledajte seriju tutorijala o Systrace-u na mom blogu
- Exceptions - razne izuzetke, obezbedite robusnost programa
- Error Handling - Error se obavezno mora rešiti; obično dovodi do direktnog pada aplikacije i zahteva veliku pažnju
Memory Leak
Curenje memorije je velika tema; obuhvata curenje Java memorije i curenje Native memorije, sa mnogo tačaka znanja, pa se može izdvojiti kao zasebna oblast. Generalno, curenje Java memorije se relativno lako detektuje i popravi, dok je curenje Native memorije teže.
- Detecting and Fixing Memory Leaks - detekcija i popravka curenja memorije jeste veliki poduhvat; možete pogledati open-source alate kao što su LeakCanary, Matrix
- Context - nepravilna upotreba može dovesti do toga da objekti koji su trebali biti oslobođeni to ne budu, izazivajući curenje memorije
- Native Memory Leaks
3rd Party Library
Klasične biblioteke trećih strana mogu znatno da uštede vreme u razvoju.
- Image Loading - Glide, Picasso
- Dependency Injection - Dagger
- Networking - Fast Android Networking Library, Retrofit
- MultiThreading - RxJava, Coroutines
Data Format
Uobičajeni formati za čuvanje i prenos podataka.
- JSON — GSON
- Flat Buffer
- Protocol Buffer
Android Jetpack
Jetpack je skup biblioteka, alata i smernica koje je Google izbacio da bi pomogao programerima da lakše pišu kvalitetne aplikacije. Ove komponente vam pomažu da pratite najbolje prakse, oslobadjaju vas pisanja boilerplate koda i pojednostavljuju složene zadatke, kako biste se koncentrisali na kod koji vam zaista treba. Jetpack obuhvata androidx.* pakete biblioteka koji su decoupled od API-ja platforme. To znači da pruža unazad kompatibilnost i ažurira se češće od same Android platforme, čime se osigurava da uvek imate pristup najnovijoj i najboljoj verziji Jetpack komponenti.
Ovde preporučujem knjigu čitaoca „Android Jetpack razvoj: analiza principa i praktična primena"; Erge je za nju napisao preporuku, kao što se vidi na naslovnoj strani.
- Foundation Components — AppCompat, Android KTX, Multidex
- Architecture Components — LiveData, ViewModel, DataBinding, Paging, Work Manager, Navigation
- Behaviour Components - Download Manager, Media Playback, Notification, Permissions, Preference, Sharing, Slice
- UI Component - Animation & Transition, Android Auto, Emoji, Palette, Android TV, Android Wear
Architecture
Tradicionalne razvojne arhitekture nemaju apsolutno dobru ili lošu; pitanje je šta odgovara, a šta ne. Trebalo bi da poznajete i razumete sve tri navedene.
- MVVM - MVVM je skraćenica od Model-View-ViewModel. Suštinski je poboljšana verzija MVC-a. MVVM apstraktuje stanje i ponašanje View-a, omogućavajući nam da razdvojimo UI od poslovne logike
- MVI ?
- MVP - MVP je evoluirao iz ranijeg MVC okvira i delimično je sličan sa MVC: Controller/Presenter je zadužen za logiku, Model pruža podatke, a View prikazuje
Unit Testing
- Local Unit Testing
- Instrumentation Testing
Firebase
Firebase mnogi kineski programeri ne koriste, pa ovde samo ukratko bacite pogled (ko zna, možda jednog dana postane dostupan).
- FCM
- Crashlytics
- Analytics
- Remote Config
- App Indexing
- Dynamic Link
Security
U pogledu bezbednosti najviše se sreću enkripcija, dekripcija i obfuskacija; bezbednost korisničkih podataka važnija je od svega, a ko je ne shvati ozbiljno ispašta.
- Encrypt / Decrypt
- Proguard
- R8
App Release
Znanja vezana za objavljivanje aplikacije; na kineskom tržištu dodaju se i pakovanje za više kanala i plugin arhitektura.
- .keystore file
- App Bundle
- Playstore
- Pakovanje za više kanala
- Plugin arhitektura
Keep Learning and Improving
Kao ambiciozan Android programer, posedovanje sopstvenog tehničkog steka i plana je veoma važno. Tehnički stek osigurava konkurentnost na tržištu i formira šanac oko vas, dok vam tehnički plan daje jasan cilj učenja. Deinstalirajte TikTok, Weibo, Douyu i igre, napravite godišnji plan i Keep Learning and Improving — držimo se zajedno.
Ako ne znate kako da upravljate vremenom, pogledajte ovaj video Kako pravim nedeljni plan | povećanje produktivnosti | moj metod — ovo je metod za rad i učenje koji koristi jedan stručnjak koga poznajem, i toplo ga preporučujem.
Ko se unapred pripremi, uspe; ko se ne pripremi, propadne. Godišnji plan je predug, dnevni prekratak. U praksi se pokazalo da je upravljanje vremenom po nedeljama najpouzdanije: obuhvata i kratkoročno i dugoročno, omogućava vam da dugo istrajete na nečemu i daje dovoljno vremena da izdvojite stvari koje vrede.
