15 кроків, і ви Android-розробник! Розповідаємо, яку мову вибрати, як навчитися писати програми і на що звернути увагу при розробці програм під мобільні пристрої.
Android-розробник – професія майбутнього. Основні тенденції в розвитку мобільних технологій в найближчі роки будуть пов’язані з наступними напрямками:
- Доповнена і віртуальна реальність. AR і VR вже застосовуються в мобільних іграх і при відвідуванні інтерактивних музеїв. Особливий шик надає спільне використання з сервісами геолокації. Мобільні пристрої – найдоступніший варіант, щоб скористатися цими технологіями.
- Алгоритми машинного навчання (ML). Ми і не помічаємо, скільки різних ML-рішень ми вже використовуємо в наших смартфонах: розпізнавання тексту, детектування осіб, читання штрих-кодів, розпізнавання пам’яток, перетворення аудіозаписів в мову, консультації з чат-ботами тощо. Всі ці технології роблять наше життя простішим. У міру зростання продуктивності пристроїв і більшої доступності хмарних обчислень будуть «входити в моду» все ресурсомісткіші алгоритми.
- Хмарні обчислення. Частка мобільного трафіку зростає, все більше користувачів за допомогою мобільних пристроїв отримують доступ до різних програм і ресурсів. Інформаційний бум вимагає продуктивних потужностей, і хмарні обчислення – ефективний спосіб задовольнити ці потреби.
- Електронні платежі. Купувати товари за допомогою смартфонів стає все простіше: і за допомогою NFC, і онлайн. А нові технології, такі, як блокчейн, забезпечують кращу безпеку платежів.
- Кібербезпека. Істотна частина нашого життя проходить зі смартфоном в руці, тут зберігається багато важливого. Мобільні пристрої – приваблива мішень для хакерських атак. Більшість вразливостей є наслідком недостатнього опрацювання концепції захисту. Поліпшення якості захисту буде стимулювати розвиток ринку.
Хто такий сеньйор-розробник та як ним стати
Але які навички потрібні, щоб стати успішним Android-розробником? З чого почати?
1. Виберіть мову програмування
Дві основні мови програмування для розробки додатків на Android – Java і Kotlin. За фактом, якщо ви будете займатися розробкою серйозно, то вам не обійтися без обох мов. Однак на конференції Google I/O 2019 було оголошено, що Kotlin найбільш прийнятний і офіційною мовою для Android. Використання Kotlin скорочує число помилок в коді, мова легко інтегрується в існуючі програми.
2. Виберіть інтерактивне середовище для Android-розробки
Вибір середовища розробки – справа смаку. Однак на першому етапі доцільніше використовувати Android Studio. Остання версія IDE 4.0 від травня 2020 року доступна для завантаження на офіційному сайті Android.
3. Вивчіть маніфест і компоненти Android-додатка
Коли ви створите чернетку свого першого проєкту в середовищі проєктування, середовище автоматично створить в папці Android-проєкту файл маніфесту AndroidManifest.xml.
Файл маніфесту містить унікальний ідентифікатор додатка і описує компоненти програми. Пройдіться по цьому списку компонентів, вам стане зрозуміло, що буде потрібно вивчити:
- Activity – вікно керування з призначеним для користувача інтерфейсом. Особливу увагу слід приділити вивченню життєвого циклу активності (Activity Lifecycle).
- Служби (Service) – компоненти, що працюють у фоновому режимі. Наприклад, служби можуть обробляти мережеві транзакції, відтворювати музику, виконувати введення-виведення файлу або взаємодіяти з постачальником контенту.
- Постачальники контенту (Content providers). Часто виникають ситуації, коли необхідно отримати доступ до інформації з іншої програми. Постачальники контенту управляють даними: аудіо, відео, зображеннями та особистою контактною інформацією (контакти, список викликів). Це єдиний спосіб спільного використання даних додатками в Android.
- Приймач повідомлень (Broadcast receiver) – компонент, що реагує на повідомлення системи Android та інших додатків: повідомлення про низький заряд батареї, недоступності мобільної мережі, появі в зоні дії Wi-Fi-мереж.
- Intents – об’єкти, що зв’язують окремі компоненти (Activity, Service і Broadcast receiver) під час роботи програми.
4. Вивчіть основні елементи призначеного для користувача інтерфейсу Android-додатка
Основними елементами призначеного для користувача інтерфейсу додатка є:
- UI Layouts – макети екранів додатка;
- UI Components – поля введення/виведення, кнопки, тулбари, елементи відображення і роботи з мультимедіа, елементи відображення даних, наприклад, RecyclerView;
- App Resources – ресурси програми: рядки, шрифти, стилі, растрова і векторна графіка, іконки та анімація;
- Fragment – модуль для користувача інтерфейсу Activity. Особливу увагу при розробці користувацького Fragment слід приділити вивченню його життєвого циклу (Fragment Lifecycle);
- Інші елементи призначеного для користувача інтерфейсу (пошуковий інтерфейс, діалогові вікна, ProgressBar, Toast/SnackBar).
Макети екранів додатка (UI Layouts) мають різну структуру:
- Linear Layout – макет, в якому дочірні елементи представлені в горизонтальних або вертикальних шпальтах;
- Relative Layout – макет, в якому можна задавати розташування дочірніх об’єктів відносно один одного або щодо батьківського об’єкта;
- Constraint Layout – найбільш універсальний і затребуваний макет, який дозволяє створювати складні композиції.
5. Вивчіть сховища даних Android
Дізнайтеся, як зберігати дані програми і користувача на пристрої: в парах ключ-значення, базі даних або інших типах даних.
Важливо також навчитися обмінюватися даними між додатками і пристроями. Корисно освоїти роботу зі службами резервного копіювання, щоб користувачі могли зберігати інформацію в хмарі, синхронізувати її між пристроями і відновлювати при придбанні нового пристрою.
Система надає кілька варіантів зберігання даних:
- Сховище додатка (app-specific storage) зберігає файли, призначені тільки для вашого застосування. Або в виділених каталогах на внутрішньому накопичувачі, або в каталогах зовнішнього сховища. Якщо інформація є конфіденційною, краще зберігати її у внутрішньому сховищі.
- Загальне сховище (shared storage) зберігає файли, які додаток має намір надати іншим програмам: мультимедіа, документи та інші файли.
- Налаштування (preferences) використовуються для зберігання примітивних даних в парах ключ-значення.
- Бази даних (databases) застосовуються для зберігання структурованих даних в приватній базі даних за допомогою бібліотеки Room.
6. Вивчіть, як працює збірка Android-додатків і плагін Gradle
Система збирання Android збирає ресурси програми і вихідний код, упаковує їх в APK-файли. Їх можна тестувати і поширювати. Android Studio використовує Gradle – просунутий інструмент автоматизації і управління процесом складання. Це дозволяє визначити різні налаштування конфігурації для різних проектів.
7. Навчіться створювати багатопотокові Android-додатки
Кожен Android-розробник стикається з необхідністю використання потоків. Коли додаток запускається, він створює основний потік виконання. Щоб додаток зберігав чуйність, необхідно уникати використання основного потоку для виконання операцій, які призводять до його блокування: мережеві операції, звернення до бази даних, завантаження компонентів. Такі процеси виконуються в окремих потоках. Android надає безліч способів створення і управління потоками. При використанні мови Kotlin для цих завдань можна використовувати Coroutines.
8. Вивчіть методи налагодження Android-додатка
Налагодження програми – це процес пошуку і виправлення помилок та іншої некоректної поведінки коду. Щоб розібратися, що відбувається, і знайти помилку, ми можемо за допомогою налагодження поставити виконання програми на паузу в потрібному нам місці і подивитися вміст об’єктів і змінних.
Налагодження програми здійснюється стандартними засобами, наданими середовищем розробки Android Studio.
9. Навчіться працювати зі сторонніми бібліотеками
Далеко не будь-яке завдання можна вирішити за допомогою стандартних засобів Android. Для багатьох задач вже розроблені власні рішення, якими гріх не скористатися. Для обробки і завантаження зображень це Glide і Picasso, для впровадження залежностей (Dependency Injection) – Dagger, Koin, Kodein і Hilt, для мережевих взаємодій – Retrofit, для багатопотокового програмування – RxJava. Не полінуйтеся також вивчити бібліотеки Google: Firebase, Google Play Services, Google Maps. Знайомство з пристроєм сторонніх бібліотек також навчить вас писати якісніший код у власних проектах.
10. Вивчіть Android Jetpack – набір бібліотек та інструментів, що прискорюють роботу Android-розробника
Android Jetpack – це набір бібліотек та інструментів, створений командою Google для спрощення розробки під Android. Бібліотеки, що входять в Jetpack, розділені на чотири види:
- Foundation – базові бібліотеки, які допомагають скоротити шаблонний код.
- Architecture Components – бібліотеки, які використовуються для побудови архітектури додатку.
- Behavior – бібліотеки-обгортки для функціональності, що надається Android SDK. Створені для поліпшення стандартного Android API: Permissions, Notifications, CameraX і інші.
- UI – компоненти для роботи з фрагментами, елементами призначеного для користувача інтерфейсу і анімацією.
11. Вивчіть архітектурні шаблони проєктування
У міру зростання програми ви неминуче зіткнетеся з питаннями проєктування, використання напрацьованих практик і досвіду інших розробників. Замість того щоб винаходити велосипед, швидко і елегантно катайтеся на перевірених моделях. Якомога раніше почніть розбирати шаблони проєктування – вони описують типові способи вирішення поширених проблем при проєктуванні Android-додатків.
За замовчуванням, корпорацією Google задокументована архітектура MVVM, але потрібно використовувати ту, яка краще відповідає нашим потребам.
Поширені три шаблони проєктування:
- MVVM (Model-View-ViewModel) – використовується для поділу моделі та її уявлення. Розробник задає логіку роботи з даними, а дизайнер працює з призначеним для користувача інтерфейсом.
- MVP (Model-View-Presenter) – шаблон, який полегшує автоматичне модульне тестування.
- MVI (Model-View-Intent) – архітектурний шаблон, що дозволяє поліпшити масштабованість додатка.
12. Вивчіть методи тестування Android-додатків
Тестування програми є невід’ємною частиною процесу розробки. Постійно виконуючи тести, ви можете перевірити правильність, функціональність і зручність використання програми до його публікації.
- Тестування дає наступні переваги:
- Швидка реакція в разі збою програми.
- Раннє виявлення несправностей.
- Більш безпечний рефакторинг коду.
- Стабільна швидкість розробки.
13. Вивчіть питання забезпечення безпеки Android-додатка
Android серйозно займається питаннями забезпечення безпеки платформи і екосистеми Android. Для забезпечення безпеки Android-додатка використовуються такі засоби і механізми: Encrypt/Decrypt, Proguard і R8.
14. Вивчіть роботу з сенсорами
Програмування – це круто, але ще більш класно використовувати фізичні компоненти телефону: GPS, камеру, NFC, акселерометр. Робота з цими датчиками по захопливості близька до високорівневого програмування мікроконтролерів – приємно бачити, як написаний тобою абстрактний алгоритм взаємодіє із зовнішнім світом.
15. Опублікуйте додаток Android у Google Play. Вітаємо, ви Android-розробник!
Нарешті, залишається лише опублікувати додаток. У цього процесу також є власний механізм і свої тонкощі. Але це вже куди простіше, ніж написання коду програми.
З описаним багажем знань ви сміливо можете рухатися вперед! Питання, розглянуті в даній статті, допоможуть у створенні портфоліо і працевлаштуванні.