Андроид водичи: пословање, архитектура и професионални развој

Последње ажурирање: Април КСНУМКС КСНУМКС
  • Андроид Ентерпрајз нуди профиле послова, наменске уређаје и управљане конфигурације за безбедно управљање корпоративним апликацијама и подацима.
  • Професионални развој захтева свеобухватан пут обуке и модерну архитектуру засновану на слојевима, моделима података и једносмерном току.
  • Комбинација тестирања са Test DPC-ом, SSO-ом са прилагођеним картицама и најбољим праксама за директно приступање осигурава скалабилне, безбедне и апликације спремне за предузећа.

Водичи за Андроид програмере

Ако улазите у свет Андроида, пре или касније ће вам требати нешто... Добри Андроид водичи који објашњавају и пословну страну и страну развоја апликацијаНије довољно знати како програмирати неколико екрана: данас је потребно разумети профиле послова, управљане уређаје, модерну архитектуру, безбедност, једнократно пријављивање, тестирање… и још много тога.

У овом свеобухватном водичу наћи ћете Комплетан и актуелан преглед начина развоја Андроид апликација дизајнираних за предузећа и за више уређајаОд основа Андроид Ентерпрајза и управљања уређајима до структурирања кода са робусном и скалабилном архитектуром, овај курс ће вам помоћи да развијете јасну менталну мапу свега што треба да савладате да бисте креирали професионалне и лако одржавајуће апликације.

Андроид Ентерпрајз: Како припремити своје апликације за корпоративна окружења

Андроид укључује скуп стандардних функција Функције за предузећа које омогућавају организацијама да безбедно управљају уређајима, апликацијама и подацимаДобра вест је да свака стандардна Андроид апликација подржава ове функције; не тако добра вест је да ако желите да ваша апликација заблиста у корпоративним окружењима, мораћете да одете корак даље и прилагодите је.

Да бисте максимално искористили Android Enterprise, најбоље је да почнете са Андроид апликација је већ креирана, спремна за измене и са минималном верзијом 5.0 Lollipop (иако се препоручује 6.0 Marshmallow или новија). Ови каснији нивои нуде напредне могућности, посебно за наменске уређаје и строже политике управљања.

Организације користе ове функције да би омогућиле Сценарији управљане мобилности: од мобилних телефона запослених са одвојеним личним и пословним подацима, до киоска за једнократну употребуКао програмер, желећете да разумете овај екосистем како бисте избегли некомпатибилности и, пре свега, спречили ограничавање усвајања ваше апликације од стране предузећа.

Пословни профили на Андроиду: раздвајање личног и професионалног живота

Кључни концепт Андроид Ентерпрајза је радни профил, корпоративни контејнер којим се управља унутар корисниковог уређајаОвај профил је повезан са главним налогом уређаја, али одржава јасно раздвајање између апликација и личних и професионалних података.

У пракси, профил посла делује као изоловани простор где пословне апликације носе посебну ознаку и њима се управља помоћу сопствених политикаКорисник задржава контролу над својим личним простором, док ИТ одељење управља само пословним подацима и апликацијама које га занимају, без заузимања остатка уређаја.

Међу најважнијим карактеристикама профила посла су следеће: безбедно одвајање података, дистрибуција апликација путем управљаног Google Play-а и специфичне могућности управљања контролише администратор, а све је подржано потпуном енкрипцијом уређаја.

Један важан детаљ је да, када уређај има и лични и пословни профил, он се обично користи један APK за оба простора, док је контролер смерница (DPC) ограничен на радни профилАдминистрација се врши путем класе DevicePolicyManager, што значи да морате узети у обзир ове API-је ако развијате напредна пословна решења.

Да би се избегли проблеми, важно је да Не претпостављајте да ће било која намера једноставно моћи да пређе са једног профила на други.Неки су блокирани из безбедносних разлога, а то ћете открити само тестирањем. Пре покретања активности, препоручљиво је позвати Intent.resolveActivity()Ако врати null, то значи да не постоји компонента која може да обради ту намеру у том профилу.

Приликом размене датотека између профила, Андроид препоручује коришћење URI-ји садржаја са FileProvider-ом, дељени путем намера са одређеним дозволамаОво осигурава да је приступ ограничен на одговарајући профил и да друге апликације виде само оно што је неопходно. Насупрот томе, стари file:// URI-ји који указују на апсолутне путање система датотека не функционишу у различитим профилима и може проузроковати грешке при покушају отварања ресурса са друге стране.

Управљане конфигурације: даљинска контрола апликације од стране ИТ службеника

Основни стуб у корпоративном окружењу је Управљане конфигурације, скуп параметара које администратори могу даљински применити на апликације корисника. Велика предност је што су универзални: раде са било којим ЕММ (Enterprise Mobility Management) решењем.

Захваљујући овим конфигурацијама, ИТ одељење може централно подесите начин на који се апликација понаша у критичним областима као што су повезивање, безбедност или ограничења коришћењаНа пример, можете да одлучите да ли се апликација синхронизује само преко Wi-Fi мреже или и преко мобилних података, које су URL адресе дозвољене у интегрисаном прегледачу, како је конфигурисан налог е-поште, да ли је штампање омогућено или које су омиљене унапред учитане.

Са становишта програмера, кључ је у Проверите ова ограничења у одговарајућим тренуцима током животног циклуса апликацијеПриликом покретања, препоручљиво је да се код провери onStart() или onResume() резултат функције getApplicationRestrictions() да бисте сазнали да ли је апликација управљана, да ли су већ дефинисана ограничења или да ли постоји статус конфигурације на чекању.

Вредност коју враћа getApplicationRestrictions() може бити пакет са одређеним ограничењима, празан пакет или структура са кључем KEY_RESTRICTIONS_PENDINGУ овом последњем случају, ваша апликација зна да је под администрацијом, али DPC још увек није правилно применио политику, тако да је разумно ограничити њену употребу и упутити корисника да контактира ИТ администратора.

Штавише, политике се могу променити у било ком тренутку, због чега ваша апликација мора Детекција измена уживо динамичким евидентирањем емисије ACTION_APPLICATION_RESTRICTIONS_CHANGEDИдеално би било да се претплатите када је активност или услуга активна и да откажете регистрацију користећи onPause(), како бисте избегли цурење података или неочекивано понашање.

Наменски уређаји: киосци, ПОС системи и дигитална сигнализација

Још једна широко распрострањена пракса у компанијама је употреба уређаји са једном наменом (наменски уређаји), као што су киосци, ПОС системи или дисплеји за сигнализацијуУ овим случајевима, Андроид је конфигурисан да приказује само једну апликацију или веома ограничен скуп, блокирајући приступ главним или недавно коришћеним апликацијама.

Када је уређај подешен као наменски, корисник види јединствено, контролисано искуство, без лаког начина да се изађе из главне апликацијеТакође можете дефинисати групу дозвољених апликација, на пример у библиотечком киоску који приказује само каталог и корпоративни веб прегледач.

Да би се дошло до ових сценарија, неопходно је пратити токове Обезбеђивање наменских уређаја како је описано у званичној документацијиУ овим сценаријима, DPC преузима улогу власника уређаја. Као програмер, морате осигурати да ваша апликација може да ради у режиму киоска, без стандардних дугмади за навигацију или обављања више задатака истовремено, и да добро реагује на контролисане падове и поновна покретања.

Једнократно пријављивање (SSO) са прилагођеним Chrome картицама

У пословном свету је веома уобичајено да корисници морају да се аутентификују у неколико различитих апликација, и ако се искуство не управља пажљиво, може завршити... понављање корисничког имена и лозинке изнова и изноваWebView се традиционално користио за пријаву, али ово решење има јасне недостатке.

С једне стране, многе имплементације са WebView-ом не нуде Право SSO, јер сваки WebView управља сопственим колачићима и сесијомС друге стране, постоје безбедносни ризици, јер је могуће прегледати колачиће или убризгати злонамерни Јаваскрипт ако се било која апликација или SDK треће стране понаша неприкладно.

Препоручена алтернатива је да се искористи Прилагођене картице, посебно прилагођене картице у Chrome-у, које су присутне од Chrome-а 45.Ове картице функционишу као интегрисани приказ системског прегледача, са безбедним контекстом где апликација домаћина не може да шпијунира садржај.

Када користите прилагођене картице за аутентификацију, статус колачића у целом прегледачу, омогућавајући јединствено пријављивање на више апликацијаКорисник се пријављује само једном, а остале апликације могу да се ослоне на тај већ аутентификовани контекст, побољшавајући употребљивост и смањујући трење.

Да бисте имплементирали SSO са прилагођеним картицама, можете користити AppAuth, клијентска библиотека отвореног кода за OAuth коју подржава радна група OpenID ConnectОва библиотека поједностављује интеграцију са добављачима идентитета и обрађује безбедносне детаље и компатибилност са прилагођеним картицама.

Тестирање апликација у управљаним окружењима: DPC тестирање, профили и уређаји

Када додате подршку за радне профиле, управљане конфигурације и наменске уређаје, време је за мање гламурозан, али критичнији део: Тестирајте своју апликацију и на пословним профилима и на заиста управљаним уређајимаТу на сцену ступа апликација Test DPC.

Тест DPC је Апликација дизајнирана за програмере која симулира понашање корпоративног DPC-а у тестном окружењуПомоћу њега можете подесити EMM политике и управљати вредностима конфигурације као да организација управља уређајем путем своје конзоле.

Да бисте тестирали апликацију у радном профилу, основни ток рада је Инсталирајте Test DPC, отворите опцију конфигурације Test DPC у Android селектору и пратите упутства за креирање радног профила.Затим инсталирате апликацију и проверите како се понаша у том профилу са радном значком, проверавајући дозволе, намере, приступ подацима и друга осетљива понашања.

Ако желите да симулирате потпуно управљани уређај, морате Уверите се да терминал нема конфигурисане друге кориснике, радне профиле или налоге.Затим, инсталирајте Test DPC и покрените следећу команду у adb-у:

адб шел дпм сет-власник-уређаја цом.афвсэмплес.тестдпц/.ДевицеАдминРецеивер

Након завршетка овог процеса, уређај ће бити под пуном контролом Test DPC-а као власника уређајаОдатле можете тестирати своју апликацију у контексту апсолутне администрације, обраћајући посебну пажњу на то како се примењују управљане конфигурације, како реагују ограничене намере и шта се дешава са апликацијом у сценаријима блокирања и строгим политикама.

Када потврдите понашање у локалним тестовима, идеално је да одете корак даље и урадите... тестирање од почетка до краја у реалном облачном окружењу, реплицирање тока који би купац пратиоОво подразумева коришћење тест EMM конзоле, полагање права на управљани Google домен, његово повезивање са том конзолом и објављивање тест верзије ваше апликације (са другачијим ApplicationId-ом) на приватном Google Play каналу тог домена.

Из EMM конзоле моћи ћете да Конфигуришите радне уређаје, дистрибуирајте апликацију, подесите управљане конфигурације и подесите смернице за уређајеНа овај начин проверавате да ли све функционише као што би функционисало у производном систему, од почетне регистрације до примене напредних политика.

Водичи за учење Андроида: од почетника до напредног нивоа

Поред чисто пословног аспекта, ако желите да постанете добар Андроид програмер, потребан вам је структурирани пут учења који покрива све, од основних концепата до напредних тема и будите у току са Технолошке вести о мобилним телефонима, апликацијама и дигиталној културиУ том смислу, водичи или курсеви који деле садржај на нивое - почетни, средњи и напредни - су веома корисни.

У почетној фази, фокус је на Основе Андроида, Котлина или Јаве, животни циклус активности, основни прикази и креирање распоредаМноги модерни ресурси су сада 100% фокусирани на Котлин, али и даље постоје одличне књиге и материјали засновани на Јави и окружењима попут Еклипса који су, иако донекле застарели, и даље корисни за разумевање еволуције платформе.

Како напредујете, кључно је да представите теме као што су перзистентност података, конкурентно програмирање, безбедност, мрежна комуникација и тестирањеТакође је добра идеја да се упознате са Fragment-ом, модерним архитектурама и концептима попут модуларизације, како ваши пројекти не би постали хаотични како расту.

На напредном нивоу, они већ долазе до изражаја Објављивање на Google Play-у, управљање верзијама, монетизација, заштита плаћених апликација (нпр. са LVL-ом) и механизми ажурирањаТеме као што су AppWidgets, приступ геолокацији, оптимизација перформанси, подршка за више верзија Андроида и прилагођавање таблетима и склопивим уређајима су такође често обухваћене.

Неки класични уџбеници покривају Од припреме развојног окружења, креирања прве апликације, дизајнирања корисничког интерфејса, до коначног имплементирања у продукцијиКао додатна вредност, обично их прате примери пројеката који се могу преузети и који практично илуструју све што је објашњено у тексту.

Модерна архитектура Андроид апликација: темељ за озбиљне пројекте

Ако желите да се ваша апликација не распадне чим мало порасте, потребан вам је Добро осмишљена архитектура апликације, способна за скалирање и прилагођавање мобилним телефонима, таблетима, склопивим уређајима, ChromeOS-у, аутомобилима и XR уређајима.Идеја је да се минимизира зависност од компоненти фрејмворка и осигура да је код једноставан за одржавање и тестирање.

Типична Андроид апликација се састоји од више компоненти декларисаних у манифесту: услуге, добављачи садржаја, примаоци емитовања и активностиИсторијски гледано, кориснички интерфејс је био организован са неколико активности, али тренутна препорука је да се користи архитектура јединствена активност са екранима заснованим на фрагментима или одредиштима за Jetpack Compose.

Пошто ваша апликација може да ради на веома различитим уређајима, не можете претпоставити ни фиксна оријентација нити једна величина екранаПромене конфигурације (ротација, промене прозора у ChromeOS-у, склапање склопивог уређаја) захтевају рекомпоновање интерфејса и могу проузроковати рекреацију компоненти, тако да свако важно стање треба држати ван активности и фрагмената.

Штавише, Андроид је окружење са ограниченим ресурсима где систем Може да уништи процесе апликација у позадини како би ослободио меморијуТакође може покренути компоненте на неуређен начин и уништити их без упозорења. Отуда класична препорука: не чувајте податке о стању или пословању у активностима, услугама или пријемницима емитовања, јер су они по природи ефемерни.

Водећи принцип је Подела одговорности: кориснички интерфејс је одговоран за приказивање података и реаговање на догађаје, док се пословна логика и руковање подацима налазе у другим слојевима.Стога, када се компонента интерфејса поново креира, стање се задржава захваљујући добро организованим ViewModel-овима, спремиштима и изворима података.

Архитектонски слојеви: кориснички интерфејс, подаци и домен

Препоручена архитектура разликује најмање два слоја: Слој корисничког интерфејса (презентација) и слој податакаОпционо, може се додати трећи слој домена како би се обухватила сложена или поново употребљива пословна логика између различитих ViewModel-ова.

Кориснички слој је одговоран за приказују податке на екрану и реагују на променеОво се дешава или путем корисничких акција или спољних улаза као што су мрежни одговори. Овде долазе до изражаја визуелни елементи (прикази или композибилни елементи из Jetpack Compose-а) и контејнери стања (ViewModel), одржавајући и откривајући стање интерфејса.

У адаптивним интерфејсима, ViewModels су обично изложити стање које већ узима у обзир класу величине прозоракоришћењем услужних програма као што је currentWindowAdaptiveInfo(). Компоненте као што је NavigationSuiteScaffold могу се ослонити на ове информације да би аутоматски пребацивале између NavigationBar, NavigationRail или NavigationDrawer у зависности од расположивог простора.

Слој података концентрише пословна логика и правила која одређују како се подаци креирају, чувају и мењајуЗаснован је на репозиторијумима који групишу и апстрахују један или више извора података: локалне базе података, мрежне сервисе, датотеке итд. Свака врста информација (филмови, плаћања, корисници итд.) обично има свој репозиторијум који је одговоран за излагање података, централизацију промена и решавање сукоба.

Извори података су класе које Они комуницирају директно са системом или са спољним сервисима: SQL упити, приступ датотекама, HTTP захтеви итд.Остатак апликације не би требало да зависи од њене специфичне имплементације, већ само од интерфејса које је изложио репозиторијум.

Како се сложеност повећава, корисно је увести слој домена који се састоји од случајеви употребе или интерактори, сваки посвећен одређеној функционалностиНа пример, GetTimeZoneUseCase који враћа одговарајућу временску зону за конструисање прилагођених порука, које могу поново користити више ViewModel-ова.

Модели података, SSOT и једносмерни ток података

Још један кључни принцип је да интерфејс треба да хранити моделима података, пожељно перзистентнимОви модели представљају стање апликације и потпуно су независни од корисничког интерфејса и животног циклуса компоненти оквира. На овај начин, они преживљавају рекреације активности и фрагмената и нестају тек када систем прекине процес.

У вези са тим, вредно је применити образац једини извор истине (SSOT)Сваки важан тип података има једног власника који га може модификовати; остали слојеви га посматрају само кроз непроменљиве типове. Мутације се изводе кроз добро дефинисане функције или кроз догађаје који досежу до тог извора истине.

SSOT се обично комбинује са једносмерни ток података (UDF), у коме стање тече одозго надоле, а догађаји одоздо надолеУ Андроиду, то значи да подаци апликације путују од извора (мрежа, база података) до корисничког интерфејса, док се корисничке акције трансформишу у догађаје који путују од корисничког интерфејса до домена или слоја података, где се стање ажурира.

Праћење овог обрасца побољшава Конзистентност стања смањује грешке, олакшава расуђивање о понашању апликације и поједностављује отклањање грешака.Имање једне компоненте која контролише како се подаци мењају олакшава утврђивање извора квара.

Убризгавање зависности и опште најбоље праксе

Да би се омогућила сарадња различитих класа апликације без непотребног повезивања, препоручује се коришћење образац управљања зависностима као што је убризгавање зависности (DI) или локатор сервисаУ Андроиду, решење је Hilt, који аутоматизује изградњу објеката, проверава зависности током компајлирања и креира специфичне контејнере за компоненте фрејмворка.

Идеја је да часови Наведите шта вам је потребно, али не преузимајте одговорност за његову изградњу.Ово вам омогућава да лако пређете са живе имплементације на тест верзију или да прилагодите понашања без преписивања пола пројекта. Штавише, смањује дуплирање и јасно приказује како се сваки део повезује на једном месту.

Као општа правила архитектуре, препоручљиво је да Улазне тачке (активности, услуге, примаоци) нису извори податакаУместо тога, они су једноставно координатори који захтевају потребне информације из спремишта или случаја употребе. Такође се препоручује минимизирање зависности од Андроид класа ван корисничког интерфејса како би се олакшало тестирање.

Важно је дефинисати Јасне границе одговорности између модула, избегавајући мешање мрежног кода, кеширања, повезивања приказа и пословне логике у истој класиСваки модул треба да открије само оно што је неопходно, без пречица које откривају интерне детаље имплементације и које би у будућности могле постати технички дуг.

Још један савет који се понавља је Не измишљајте точак: ослањајте се на Jetpack библиотеке и успостављена решења за стандардне задатке (навигација, перзистентност, пагинација итд.). Резервишите време за оно што чини вашу апликацију посебном, уместо да преписујете исти инфраструктурни код изнова и изнова.

Приликом дизајнирања корисничког интерфејса, препоручљиво је да се одлучите за Компоненте за вишекратну употребу и саставиве компоненте које се могу преуредити како би се прилагодиле различитим величинама и оријентацијамаТакође би требало да се побринете да сачувате стање интерфејса током промена конфигурације, посебно на склопивим уређајима и великим екранима где је промена величине честа.

Што се тиче конкурентности, сваки тип мора бити одговоран за извршавање ваших скупих задатака у правом рокуНа пример, путем корутина и токова. Златно правило је да API позиви треба да буду безбедни од главне нити, пребацујући тешки посао на позадинске нити.

Коначно, вреди га чувати што више релевантних података локално, на ажуриран начинНа овај начин ваши корисници могу да наставе да користе апликацију чак и без интернет конекције или са лошом покривеношћу, што је посебно уобичајено у загушеним подручјима или са мрежама лошег квалитета.

Добра архитектура доноси веома опипљиве предности: Побољшава одржавање, олакшава вишеструким тимовима рад на истој кодној бази, убрзава укључивање нових програмера и олакшава тестирање апликације.Све ово се претвара у мање грешака, бржа ажурирања и стабилније искуство за крајњег корисника.

Узето заједно, савладавање Андроидових пословних функционалности, разумевање функционисања радних профила и наменских уређаја, имплементација безбедног SSO са прилагођеним картицама, примена управљаних конфигурација и усвајање модерне архитектуре са раздвајањем слојева, SSOT-ом и DI-јем, је оно што вам омогућава да... прелазак са прављења једноставних апликација на изградњу професионалних, робусних Андроид решења спремних за било које корпоративно или потрошачко окружење.

Андроид вести
Повезани чланак:
Андроид вести: ажурирања, промене и трендови које бисте требали знати