- Android Enterprise nudi profile poslova, namjenske uređaje i upravljane konfiguracije za sigurno upravljanje korporativnim aplikacijama i podacima.
- Profesionalni razvoj zahtijeva sveobuhvatan put obuke i modernu arhitekturu zasnovanu na slojevima, modelima podataka i jednosmjernom toku.
- Kombinacija testiranja s Test DPC-om, SSO-om s prilagođenim karticama i najboljim praksama za DI osigurava skalabilne, sigurne i aplikacije spremne za preduzeća.
Ako ulazite u svijet Androida, prije ili kasnije će vam trebati nešto... Dobri Android vodiči koji objašnjavaju i poslovnu stranu i stranu razvoja aplikacijaZnati programirati nekoliko ekrana nije dovoljno: danas je potrebno razumjeti profile poslova, upravljane uređaje, modernu arhitekturu, sigurnost, SSO, testiranje… i još mnogo toga.
U ovom sveobuhvatnom vodiču naći ćete Potpun i ažuriran pregled načina razvoja Android aplikacija dizajniranih za preduzeća i za više uređajaOd osnova Android Enterprise-a i upravljanja uređajima do strukturiranja koda s robusnom i skalabilnom arhitekturom, ovaj kurs će vam pomoći da razvijete jasnu mentalnu mapu svega što trebate savladati da biste kreirali profesionalne i lako održavajuće aplikacije.
Android Enterprise: Kako pripremiti svoje aplikacije za korporativna okruženja
Android uključuje skup standardnih funkcija Funkcije za preduzeća koje omogućavaju organizacijama da sigurno upravljaju uređajima, aplikacijama i podacimaDobra vijest je da svaka standardna Android aplikacija podržava ove funkcije; ne tako dobra vijest je da ako želite da vaša aplikacija zablista u korporativnim okruženjima, morat ćete ići korak dalje i prilagoditi je.
Da biste maksimalno iskoristili Android Enterprise, najbolje je započeti s Android aplikacija je već kreirana, spremna za modifikaciju i sa minimalnom verzijom 5.0 Lollipop (iako se preporučuje verzija 6.0 Marshmallow ili novija). Ovi kasniji nivoi nude napredne mogućnosti, posebno za namjenske uređaje i strože politike upravljanja.
Organizacije koriste ove funkcije kako bi omogućile Scenariji upravljane mobilnosti: od mobilnih telefona zaposlenih sa odvojenim ličnim i poslovnim podacima, do kioska za jednokratnu upotrebuKao programer, željet ćete razumjeti ovaj ekosistem kako biste izbjegli nekompatibilnosti i, prije svega, spriječili ograničavanje usvajanja vaše aplikacije od strane preduzeća.
Radni profili na Androidu: razdvajanje privatnog i profesionalnog života
Ključni koncept Android Enterprisea je radni profil, korporativni kontejner kojim se upravlja unutar korisnikovog uređajaOvaj profil je povezan s glavnim računom uređaja, ali održava jasnu odvojenost između aplikacija i ličnih i profesionalnih podataka.
U praksi, profil posla djeluje kao izolovani prostor gdje poslovne aplikacije nose određenu oznaku i njima se upravlja pomoću vlastitih pravilaKorisnik zadržava kontrolu nad svojim ličnim prostorom, dok IT odjel upravlja samo poslovnim podacima i aplikacijama koje ga zanimaju, bez zauzimanja ostatka uređaja.
Među najvažnijim karakteristikama profila posla su sljedeće: sigurno odvajanje podataka, distribucija aplikacija putem upravljanog Google Playa i specifične mogućnosti upravljanja kontrolira administrator, a sve je podržano potpunom enkripcijom uređaja.
Jedan važan detalj je da, kada uređaj ima i lični i radni profil, obično se koristi jedan APK za oba prostora, dok je kontroler pravila (DPC) ograničen na radni profilAdministracija se vrši putem klase DevicePolicyManager, što znači da morate uzeti u obzir ove API-je ako razvijate napredna poslovna rješenja.
Da bi se izbjegli problemi, važno je da Nemojte pretpostavljati da će bilo koja namjera jednostavno moći preći s jednog profila na drugi.Neki su blokirani iz sigurnosnih razloga, a to ćete otkriti samo testiranjem. Prije pokretanja aktivnosti, preporučljivo je pozvati Intent.resolveActivity()Ako vrati null, to znači da ne postoji komponenta koja može obraditi tu namjeru u tom profilu.
Prilikom razmjene datoteka između profila, Android preporučuje korištenje URI-ji sadržaja sa FileProvider-om, dijeljeni putem Intent-a sa određenim dozvolamaOvo osigurava da je pristup ograničen na odgovarajući profil i da druge aplikacije vide samo ono što je neophodno. Nasuprot tome, stari file:// URI-ji koji pokazuju na apsolutne putanje sistema datoteka ne rade u različitim profilima i može uzrokovati greške pri pokušaju otvaranja resursa s druge strane.
Upravljane konfiguracije: daljinsko upravljanje aplikacijom od strane IT odjela
Fundamentalni stub u korporativnom okruženju je Upravljane konfiguracije, skup parametara koje administratori mogu daljinski primijeniti na aplikacije korisnika. Velika prednost je što su univerzalni: rade sa bilo kojim EMM (Enterprise Mobility Management) rješenjem.
Zahvaljujući ovim konfiguracijama, IT odjel može centralno prilagoditi ponašanje aplikacije u kritičnim područjima kao što su povezivost, sigurnost ili ograničenja korištenjaNa primjer, možete odlučiti hoće li se aplikacija sinhronizirati samo putem Wi-Fi mreže ili i putem mobilnih podataka, koji su URL-ovi dozvoljeni u integriranom pregledniku, kako je konfiguriran račun e-pošte, je li omogućeno ispisivanje ili koji su favoriti unaprijed učitani.
Sa stanovišta programera, ključ je u Provjerite ova ograničenja u odgovarajućim trenucima životnog ciklusa aplikacijePrilikom pokretanja, preporučljivo je da se kod prijavi onStart() ili onResume() rezultat getApplicationRestrictions() da biste saznali da li je aplikacija upravljana, da li su već definirana ograničenja ili da li postoji status konfiguracije na čekanju.
Vrijednost koju vraća getApplicationRestrictions() može biti paket sa specifičnim ograničenjima, prazan paket ili struktura sa ključem KEY_RESTRICTIONS_PENDINGU ovom posljednjem slučaju, vaša aplikacija zna da je pod administracijom, ali DPC još nije ispravno primijenio politiku, tako da je razumno ograničiti njenu upotrebu i uputiti korisnika da kontaktira IT administratora.
Nadalje, pravila se mogu promijeniti u bilo kojem trenutku, zbog čega vaša aplikacija mora Otkrivanje modifikacija uživo dinamičkim evidentiranjem emitovanja ACTION_APPLICATION_RESTRICTIONS_CHANGEDIdealno bi bilo da se pretplatite kada je aktivnost ili usluga aktivna i da otkažete registraciju koristeći onPause(), kako biste izbjegli curenje podataka ili neočekivano ponašanje.
Namjenski uređaji: kiosci, POS sistemi i digitalna signalizacija
Još jedna široko rasprostranjena praksa u kompanijama je korištenje uređaji s jednom namjenom (namjenski uređaji), kao što su kiosci, POS sistemi ili displeji za signalizacijuU tim slučajevima, Android je konfiguriran da prikazuje samo jednu aplikaciju ili vrlo ograničen skup, blokirajući pristup glavnim ili nedavno korištenim aplikacijama.
Kada je uređaj postavljen kao namjenski, korisnik vidi jedinstveno, kontrolirano iskustvo, bez jednostavnog načina za izlazak iz glavne aplikacijeTakođer možete definirati grupu dozvoljenih aplikacija, na primjer u bibliotečkom kiosku koji prikazuje samo katalog i korporativni web preglednik.
Da bi se postigli ovi scenariji, potrebno je pratiti tokove Obezbjeđivanje namjenskih uređaja kako je opisano u službenoj dokumentacijiU ovim scenarijima, DPC preuzima ulogu vlasnika uređaja. Kao programer, morate osigurati da vaša aplikacija može raditi u kiosk modu, bez standardnih navigacijskih tipki ili multitaskinga, te da dobro reagira na kontrolirane padove i ponovna pokretanja.
Jednokratna prijava (SSO) s prilagođenim Chrome karticama
U poslovnom svijetu je vrlo uobičajeno da se korisnici moraju autentificirati u nekoliko različitih aplikacija, a ako se iskustvo ne upravlja pažljivo, može završiti... ponavljanje korisničkog imena i lozinke iznova i iznovaWebView se tradicionalno koristio za prijavu, ali ovo rješenje ima očite nedostatke.
S jedne strane, mnoge implementacije s WebViewom ne nude Pravi SSO, jer svaki WebView upravlja vlastitim kolačićima i sesijomS druge strane, postoje sigurnosni rizici, jer je moguće pregledati kolačiće ili ubrizgati zlonamjerni JavaScript ako se bilo koja aplikacija ili SDK treće strane ponaša neprikladno.
Preporučena alternativa je iskorištavanje Prilagođene kartice, posebno Chromeove prilagođene kartice, koje su prisutne od Chromea 45.Ove kartice djeluju kao integrirani prikaz sistemskog preglednika, sa sigurnim kontekstom u kojem aplikacija domaćina ne može špijunirati sadržaj.
Prilikom korištenja prilagođenih kartica za autentifikaciju, status kolačića na nivou preglednika, omogućavajući jednokratnu prijavu na više aplikacijaKorisnik se prijavljuje samo jednom, a ostale aplikacije se mogu osloniti na taj već autentificirani kontekst, što poboljšava upotrebljivost i smanjuje trenje.
Za implementaciju SSO-a s prilagođenim karticama, možete koristiti AppAuth, klijentska biblioteka otvorenog koda za OAuth koju podržava radna grupa OpenID ConnectOva biblioteka pojednostavljuje integraciju s pružateljima identiteta i obrađuje sigurnosne detalje i kompatibilnost s prilagođenim karticama.
Testiranje aplikacija u upravljanim okruženjima: DPC testiranje, profili i uređaji
Nakon što ste dodali podršku za radne profile, upravljane konfiguracije i namjenske uređaje, vrijeme je za manje glamurozan, ali kritičniji dio: Testirajte svoju aplikaciju i na radnim profilima i na zaista upravljanim uređajimaTu na scenu stupa aplikacija Test DPC.
Testni DPC je Aplikacija dizajnirana za programere koja simulira ponašanje DPC-a preduzeća u testnom okruženju.Pomoću njega možete postavljati EMM politike i upravljati vrijednostima konfiguracije kao da organizacija upravlja uređajem putem svoje konzole.
Za testiranje aplikacije u radnom profilu, osnovni tijek rada je Instalirajte Test DPC, otvorite opciju konfiguracije Test DPC u Android selektoru i slijedite upute za pripremu radnog profila.Zatim instalirate svoju aplikaciju i provjeravate kako se ponaša u tom profilu s radnom značkom, provjeravajući dozvole, namjere, pristup podacima i druga osjetljiva ponašanja.
Ako želite simulirati potpuno upravljani uređaj, morate Provjerite da terminal nema konfiguriranih drugih korisnika, radnih profila ili računa.Zatim instalirajte Test DPC i pokrenite sljedeću naredbu u adb-u:
adb shell dpm set-device-owner com.afwsamples.testdpc/.DeviceAdminReceiver
Nakon završetka ovog procesa, uređaj će biti pod punom kontrolom Test DPC-a kao vlasnika uređajaOdatle možete testirati svoju aplikaciju u kontekstu apsolutne administracije, obraćajući posebnu pažnju na to kako se primjenjuju upravljane konfiguracije, kako reagiraju ograničene namjere i šta se dešava s aplikacijom u scenarijima blokiranja i strogim politikama.
Nakon što ste potvrdili ponašanje u lokalnim testovima, idealno je da idete korak dalje i uradite... end-to-end testiranje u stvarnom cloud okruženju, replicirajući tok koji bi kupac pratioOvo uključuje korištenje testne EMM konzole, preuzimanje upravljane Google domene, povezivanje iste s tom konzolom i objavljivanje testne verzije vaše aplikacije (s drugačijim ApplicationId-om) na privatnom Google Play kanalu te domene.
Iz EMM konzole moći ćete Konfigurišite radne uređaje, distribuirajte aplikaciju, postavite upravljane konfiguracije i postavite pravila za uređajeNa ovaj način provjeravate da li sve funkcioniše kao u produkcijskom raspoređivanju, od početne registracije do primjene naprednih politika.
Vodiči za učenje Androida: od početnika do naprednog
Pored čisto poslovnog aspekta, ako želite postati dobar Android programer, potreban vam je strukturirani put učenja koji pokriva sve od osnovnih koncepata do naprednih tema i budite u toku sa Tehnološke vijesti o mobilnim telefonima, aplikacijama i digitalnoj kulturiU tom smislu, vodiči ili kursevi koji sadržaj dijele na nivoe - početni, srednji i napredni - su veoma korisni.
U početnoj fazi, fokus je na Osnove Androida, Kotlina ili Jave, životni ciklus aktivnosti, osnovni prikazi i kreiranje izgledaMnogi moderni resursi su sada 100% fokusirani na Kotlin, ali i dalje postoje odlične knjige i materijali zasnovani na Javi i okruženjima poput Eclipsea koji su, iako donekle zastarjeli, i dalje korisni za razumijevanje evolucije platforme.
Kako napredujete, ključno je uvesti teme kao što su perzistencija podataka, konkurentno programiranje, sigurnost, mrežna komunikacija i testiranjeTakođer je dobra ideja upoznati se s Fragmentom, modernim arhitekturama i konceptima poput modularizacije, kako vaši projekti ne bi postali haotični kako rastu.
Na naprednom nivou, oni već dolaze do izražaja Objavljivanje na Google Playu, upravljanje verzijama, monetizacija, zaštita plaćenih aplikacija (npr. s LVL-om) i mehanizmi ažuriranjaTeme poput AppWidgets, pristupa geolokaciji, optimizacije performansi, podrške za više verzija Androida i prilagođavanja tabletima i sklopivim uređajima također su često obrađene.
Neki klasični udžbenici pokrivaju Od pripreme razvojnog okruženja, kreiranja prve aplikacije, dizajniranja korisničkog interfejsa, do konačnog implementacije u produkcijiKao dodatna vrijednost, obično ih prate primjeri projekata koji se mogu preuzeti i koji praktično ilustruju sve što je objašnjeno u tekstu.
Moderna arhitektura Android aplikacija: temelj za ozbiljne projekte
Ako želite da se vaša aplikacija ne raspadne čim malo naraste, potreban vam je Dobro osmišljena arhitektura aplikacije, sposobna za skaliranje i prilagođavanje mobilnim telefonima, tabletima, uređajima na preklop, ChromeOS-u, automobilima i XR uređajima.Ideja je minimizirati ovisnost o komponentama okvira i osigurati da je kod jednostavan za održavanje i testiranje.
Tipična Android aplikacija se sastoji od više komponenti deklariranih u manifestu: usluge, pružatelji sadržaja, primatelji emitiranja i aktivnostiHistorijski gledano, korisnički interfejs je bio organizovan sa nekoliko aktivnosti, ali trenutna preporuka je korištenje arhitekture jedinstvena aktivnost sa ekranima zasnovanim na fragmentima ili odredištima Jetpack Compose-a.
Budući da vaša aplikacija može raditi na vrlo različitim uređajima, ne možete pretpostaviti ni fiksna orijentacija ni jedna veličina ekranaPromjene konfiguracije (rotacija, promjene prozora u ChromeOS-u, preklapanje sklopivog uređaja) zahtijevaju ponovno sastavljanje interfejsa i mogu uzrokovati ponovno kreiranje komponenti, tako da svako važno stanje treba držati izvan Aktivnosti i Fragmenata.
Nadalje, Android je okruženje s ograničenim resursima gdje sistem Može ubiti procese aplikacija u pozadini kako bi oslobodio memorijuTakođer može pokrenuti komponente na neuređen način i uništiti ih bez upozorenja. Otuda klasična preporuka: ne pohranjujte podatke o stanju ili poslovanju u Aktivnostima, Uslugama ili BroadcastReceiverima, jer su oni po prirodi kratkotrajni.
Vodeći princip je Podjela odgovornosti: korisnički interfejs je odgovoran za prikazivanje podataka i reagovanje na događaje, dok se poslovna logika i rukovanje podacima nalaze u drugim slojevima.Stoga, kada se komponenta interfejsa ponovo kreira, stanje se zadržava zahvaljujući dobro organizovanim ViewModel-ovima, repozitorijima i izvorima podataka.
Slojevi arhitekture: korisnički interfejs, podaci i domena
Preporučena arhitektura razlikuje najmanje dva sloja: UI (prezentacijski) sloj i sloj podatakaOpcionalno, može se dodati i treći sloj domene kako bi se enkapsulirala složena ili višekratno upotrebljiva poslovna logika između različitih ViewModel-ova.
UI sloj je odgovoran za prikaz podataka na ekranu i reagovanje na promjeneOvo se dešava ili putem korisničkih akcija ili eksternih unosa kao što su odgovori mreže. Tu na scenu stupaju vizuelni elementi (pogledi ili kompozitni elementi iz Jetpack Compose-a) i kontejneri stanja (ViewModel), održavajući i otkrivajući stanje interfejsa.
U adaptivnim interfejsima, ViewModels su obično izložiti stanje koje već uzima u obzir klasu veličine prozorakorištenjem uslužnih programa kao što je currentWindowAdaptiveInfo(). Komponente kao što je NavigationSuiteScaffold mogu se osloniti na ove informacije kako bi automatski prebacivale između NavigationBar, NavigationRail ili NavigationDrawer, ovisno o dostupnom prostoru.
Sloj podataka koncentriše poslovna logika i pravila koja određuju kako se podaci kreiraju, pohranjuju i mijenjajuZasnovan je na repozitorijima koji grupiraju i apstrahiraju jedan ili više izvora podataka: lokalne baze podataka, mrežne usluge, datoteke itd. Svaka vrsta informacija (filmovi, plaćanja, korisnici itd.) obično ima svoj repozitorij odgovoran za izlaganje podataka, centralizaciju promjena i rješavanje konflikata.
Izvori podataka su klase koje Oni komuniciraju direktno sa sistemom ili sa eksternim servisima: SQL upiti, pristup datotekama, HTTP zahtjevi itd.Ostatak aplikacije ne bi trebao zavisiti od njene specifične implementacije, već samo od interfejsa koje je otkrio repozitorij.
Kako se složenost povećava, korisno je uvesti sloj domena koji se sastoji od slučajevi upotrebe ili interaktori, svaki posvećen određenoj funkcionalnostiNa primjer, GetTimeZoneUseCase koji vraća odgovarajuću vremensku zonu za konstruiranje prilagođenih poruka, koje mogu ponovo koristiti više ViewModel-ova.
Modeli podataka, SSOT i jednosmjerni tok podataka
Još jedan ključni princip je da interfejs treba hraniti modelima podataka, po mogućnosti perzistentnimOvi modeli predstavljaju stanje aplikacije i potpuno su nezavisni od korisničkog interfejsa i životnog ciklusa komponenti okvira. Na ovaj način, oni preživljavaju rekreacije aktivnosti i fragmenata i nestaju tek kada sistem prekine proces.
U vezi s tim, korisno je primijeniti obrazac jedinstveni izvor istine (SSOT)Svaki važan tip podataka ima jednog vlasnika koji ga može mijenjati; ostali slojevi ga posmatraju samo kroz nepromjenjive tipove. Mutacije se izvode kroz dobro definirane funkcije ili kroz događaje koji dosežu taj izvor istine.
SSOT se obično kombinuje sa jednosmjerni tok podataka (UDF), u kojem stanje teče od vrha prema dnu, a događaji od dna prema vrhuU Androidu, to znači da podaci aplikacije putuju od izvora (mreža, baza podataka) do korisničkog interfejsa, dok se korisničke akcije transformišu u događaje koji putuju od korisničkog interfejsa do domene ili sloja podataka, gdje se stanje ažurira.
Praćenje ovog obrasca poboljšava Konzistentnost stanja smanjuje greške, olakšava rasuđivanje o ponašanju aplikacije i pojednostavljuje otklanjanje grešaka.Posjedovanje jedne komponente koja kontrolira kako se podaci mijenjaju olakšava precizno određivanje izvora kvara.
Ubrizgavanje zavisnosti i opšte najbolje prakse
Da bi se omogućila saradnja različitih klasa aplikacije bez nepotrebnog povezivanja, preporučuje se korištenje obrazac upravljanja zavisnostima kao što je ubrizgavanje zavisnosti (DI) ili lokator servisaU Androidu, rješenje na koje se treba osloniti je Hilt, koji automatizira izgradnju objekata, provjerava zavisnosti prilikom kompajliranja i kreira specifične kontejnere za komponente okvira.
Ideja je da časovi Navedite šta vam je potrebno, ali nemojte preuzimati odgovornost za izgradnju.Ovo vam omogućava da lako pređete sa žive implementacije na testnu verziju ili prilagodite ponašanja bez ponovnog pisanja pola projekta. Nadalje, smanjuje dupliranje i jasno prikazuje kako se svaki dio povezuje na jednom mjestu.
Kao opšta pravila arhitekture, preporučljivo je da Ulazne tačke (aktivnosti, usluge, prijemnici) nisu izvori podatakaUmjesto toga, oni su jednostavno koordinatori koji zahtijevaju potrebne informacije iz repozitorija ili slučaja upotrebe. Također se preporučuje minimiziranje zavisnosti od Android klasa izvan UI komponenti kako bi se olakšalo testiranje.
Važno je definisati Jasne granice odgovornosti između modula, izbjegavajući miješanje mrežnog koda, keširanja, povezivanja prikaza i poslovne logike u istoj klasiSvaki modul treba da otkrije samo ono što je neophodno, bez prečica koje otkrivaju interne detalje implementacije i koje bi u budućnosti mogle postati tehnički dug.
Još jedan savjet koji se ponavlja je Ne izmišljajte kotač: oslonite se na Jetpack biblioteke i provjerena rješenja za standardne zadatke (navigacija, perzistencija, paginacija, itd.). Rezervišite svoje vrijeme za ono što vašu aplikaciju čini posebnom, umjesto da iznova i iznova prepisujete isti infrastrukturni kod.
Prilikom dizajniranja korisničkog interfejsa, preporučljivo je odabrati Komponente za višekratnu upotrebu i sastavljanje koje se mogu preurediti kako bi se prilagodile različitim veličinama i orijentacijamaTakođer biste trebali paziti da sačuvate stanje interfejsa tokom promjena konfiguracije, posebno na uređajima koji se mogu sklopiti i velikim ekranima gdje je promjena veličine česta.
Što se tiče konkurentnosti, svaki tip mora budite odgovorni za izvršavanje svojih skupih zadataka u pravo vrijemeNa primjer, putem korutina i tokova. Zlatno pravilo je da API pozivi trebaju biti sigurni od glavne niti, prebacujući teški posao na niti u pozadini.
Konačno, vrijedi sačuvati što više relevantnih podataka lokalno, na ažuran načinNa ovaj način vaši korisnici mogu nastaviti koristiti aplikaciju čak i bez interneta ili sa slabom pokrivenošću, što je posebno uobičajeno u prenatrpanim područjima ili sa mrežama niskog kvaliteta.
Dobra arhitektura donosi vrlo opipljive prednosti: Poboljšava održavanje, olakšava više timova da rade na istoj kodnoj bazi, ubrzava uključivanje novih programera i olakšava testiranje aplikacije.Sve ovo se prevodi u manje grešaka, brža ažuriranja i stabilnije iskustvo za krajnjeg korisnika.
Sve u svemu, savladavanje Androidovih poslovnih funkcionalnosti, razumijevanje funkcioniranja radnih profila i namjenskih uređaja, implementacija sigurnog SSO-a s prilagođenim karticama, primjena upravljanih konfiguracija i usvajanje moderne arhitekture s odvajanjem slojeva, SSOT-om i DI-jem, ono je što vam omogućava da... prelazak sa izrade jednostavnih aplikacija na izgradnju profesionalnih, robusnih Android rješenja spremnih za bilo koje korporativno ili potrošačko okruženje.

