Mobile Development Vocabulary: iOS, Android, and Cross-Platform Terms (англійською)
35 основних термінів мобільного розробника пояснені: рідна проти крос-платформи, APK, IPA, життєвий цикл, push-повідомлення, глибокі посилання, огляд App Store і багато іншого.
Мобільний розвиток має свій власний словник, який перетинається, але відрізняється від веб-розробки і розробки бекенду. Незалежно від того, працюєте ви з рідними додатками iOS/Android або крос-платформовими фреймворками, такими як React Native і Flutter, ці терміни ви зустрінете з першого дня.
Платформи та підходи
Національна аптечка
** Національна програма ** створюється спеціально для однієї платформи за допомогою її офіційної мови програмування і SDK:
- iOS: Swift або Objective-C з SDK Apple
- Android: Kotlin або Java з Android SDK від Google
Нативні програми мають повний доступ до функцій пристрою і, як правило, пропонують найкращу продуктивність і користувацький досвід.
Крос-платформне застосування
** Крос-платформова ** програма побудована з однієї кодової бази, яка працює як на iOS, так і на Android. Приклади: React Native (JavaScript), Flutter (Dart), Xamarin (C#), Ionic (HTML/JS).
Комбінація: записати один раз, запустити всюди — але з деякими обмеженнями швидкодії і наявного інтерфейсу користувача.
Гібридна аплікація
** Гібридна програма ** — це веб- програма, загорнута у національний контейнер. Інтерфейс користувача відтворено у вигляді WebView. Приклади: Cordova, старі програми Ionic. Загалом менш продуктивний, ніж нативний або сучасний крос-платформений.
Прогресивно-веб-апплікація (англ. Progressive Web App, PWA)
PWA це веб- програма, яка поводиться як рідна програма — її можна встановити з переглядача, вона працює автономно, надсилає повідомлення Push. Не вимагає подачі до магазину додатків.
Дистриб’ютор
Android Package Kit (APK) — пакет для Android
APK є форматом файлів для додатків Android — пакет, що містить код, ресурси і манифест додатка. Ви можете встановити APK безпосередньо (завантаження з боку) або розповсюдити через Google Play Store.
Android (англійською)
AAB є новим форматом розповсюдження додатків для магазину Google Play. Play генерує менші APK для кожного типу пристрою з набору, зменшуючи розмір завантаження. Google Play тепер вимагає AAB.
IPA (англійською)
** IPA ** - формат файлів для додатків iOS (застосунок iPhone). Він використовується для розповсюдження через TestFlight або App Store, а також для прямого розповсюдження на підприємстві.
Google Play Store (англійською)
Офіційні платформи розповсюдження:
- App Store (Apple) — для додатків iOS; вимагає облікового запису розробника, огляду додатків
- Google Play Store (Google) — для додатків Android; процес перегляду швидший
Sideloading
** Sideloading ** означає встановлення програми безпосередньо на пристрій, не проходячи через офіційний магазин додатків. На Android це дозволено (з ввімкненим параметром); на iOS це набагато обмеженіше.
TestFlight
** TestFlight ** це офіційна платформа Apple для розповсюдження передвипускних додатків iOS для тестувальників перед наданням в App Store.
Бета-тестування / Внутрішнє тестування
Google Play еквівалент TestFlight — ** внутрішній тестовий трек ** дозволяє вам розповсюджувати невеликий набір тестерів безпосередньо. ** Beta ** треки дозволяють ширше передвипускне розповсюдження.
Терміни
Система управління проектами (SDM)
Apple iOS SDK (тепер частина Xcode) забезпечує API, фреймворки та інструменти, необхідні для створення додатків iOS.
Xcode
Xcode - це офіційний інтегрований середовище розробки Apple для iOS, macOS, watchOS і tvOS. Потрібно для створення і надсилання програм iOS.
Swift
** Swift ** це сучасна мова програмування Apple для розробки iOS і macOS. Введений в 2014 році, він замінив Objective-C як основну мову iOS.
Об’єктив-С
Objective-C — це старіша мова, що використовується для розробки iOS і macOS. Ще присутній у застарілих базах коду.
Сценарій/Сценарій/Сценарій
- Storyboard — візуальний конструктор інтерфейсу користувача Apple (заснований на XML)
- SwiftUI — сучасний декларативний інтерфейс користувача Apple, представлений в 2019 році
Надання профілю
** Профіль забезпечення ** пов’ язує ваш сертифікат розробника, ідентифікатор програми, дозволені пристрої (у стадії розробки) або метод розповсюдження. Потрібно для встановлення або розповсюдження програм iOS.
Терміни Android
Android Studio (англійською)
Android Studio - це офіційне середовище розробки Google для Android, засноване на JetBrains IntelliJ.
Kotlin
Kotlin є улюбленою мовою Google для розробки Android — сучасною, короткою і повністю сумісною з Java.
Gradle
Gradle — це система збирання, що використовується в проектах Android. Керує залежностями, варіантами збирання і підписуванням налаштувань.
Маніфест (AndroidManifest.xml)
Android Manifest декларує компоненти програми (діяльність, служби, приймачі), права доступу і метадані.
Activity
Діяльність в Android представляє один екран з інтерфейсом користувача. Програма зазвичай має декілька дій.
Fragment
** Фрагмент ** — це частина інтерфейсу користувача, яку можна використовувати повторно і яку можна вбудувати у дію. Надає змогу створювати модульні, гнучкі макети.
Життєвий цикл та стан
Життєвий цикл
** Цикл життя програми ** описує стани, у яких перебуває програма: передній план (активний, видимий), фон (запускається, але не видимий) і вбито/ завершено. Розробники повинні обробляти переходи станів — збереження даних під час роботи у фоновому режимі, відновлення стану під час відновлення.
Передній план/ фон
- ** Перший план ** — програма видима і запущена
- ** Фон ** — програма запущена, але не видима (наприклад, відтворення музики, відстеження розташування)
Глибокий зв’язок
** Глибоке посилання ** це адреса URL, яка відкриває певний екран у програмі (а не домашній екран). Приклад: сповіщення з глибоким посиланням, яке відкриває вікно з подробицями замовлення.
Варіанти: Universal Links (iOS), App Links (Android), Custom URI Schemes (myapp:// ).
Сповіщення Push
Повідомлення Push
** Push- сповіщення ** — це повідомлення, надіслане з сервера на пристрій користувача, яке буде показано навіть якщо програма не відкрита.
Apple Push Notification Service (APNs) — служба попередження про пуски Apple
APNs — це сервіс Apple для доставки сповіщень push на пристрої iOS. Ваш сервер надсилає повідомлення до APNs, а APNs доставляє їх до пристрою.
Firebase Cloud Messaging (FCM) — мережевий сервер
FCM це крос-платформова служба push-повідомлень Google — обробляє доставку як на Android, так і на iOS.
Кваліфікація та професіоналізм
Звіт про аварію
** Звіт про аварію ** містить відомості про аварію програми — слідування стека, інформацію про пристрій, версію ОС. Сервіси: Firebase Crashlytics, Sentry, Bugsnag.
ANR (Програма не відповідає)
** ANR ** це помилка, характерна для Android, яка з’являється, коли головна ниточка програми заблокована занадто довго (зазвичай 5+ секунд). Користувач побачить діалогове вікно з запитом на закриття програми.
Jank
** Небажаний ** означає видиме затримування або падіння кадрів під час анімації і прокрутки. Небажаний ефект виникає, коли потік інтерфейсу користувача не може відтворювати 60 кадрів за секунду. Вимірюється частотою кадрів.
OTA Update (англійською)
** OTA update ** забезпечує зміни до програми без необхідності повного випуску магазину. Для React Native і Expo, такі інструменти, як Expo Updates дозволяють оновлення коду JavaScript OTA.
Краткий справочник
| Term | One-liner |
|---|---|
| Native app | Built specifically for one platform (iOS or Android) |
| Cross-platform | Single codebase for both iOS and Android |
| APK | Android app package file |
| IPA | iOS app archive file |
| TestFlight | Apple’s pre-release distribution for beta testers |
| Deep link | URL that opens a specific screen in the app |
| ANR | Android app blocked the main thread too long |
| Jank | Visible stuttering/frame drops in the UI |
| APNs | Apple’s push notification delivery service |
| FCM | Google’s push notification service (iOS + Android) |
| Lifecycle | App states: foreground, background, killed |
На практиці: Навігація нюансів для не-народжені мовці
Словниковий запас мобільного програмування може бути особливо щільним, коли ви не повністю знайомі з нюансами англійської мови. Одне, щоб зрозуміти такий термін як «життєвий цикл» - він явно відноситься до етапів, через які проходить програма - але * як * ви обговорюєте його, і очікування навколо цієї дискусії, часто є найбільшими викликами для розробників, чия перша мова не є англійською. Розгляньте цей сценарій: під час перегляду коду нової функції для соціального медіа-програми, старший розробник може сказати: «Цей компонент повинен бути більш стійким; нам потрібно грациозно обробляти потенційні нульові значення протягом життєвого циклу програми». Негайна проблема полягає не лише в розумінні «стійкості» або «нульових значень», але й у розумінні * чому * це підкреслюється. Це не просто технічна коректність, це сигнал, що існує очікування надійного оброблення помилок і розгляду всіх можливих станів під час роботи додатка - від запуску до фонових процесів.
Інша поширена ситуація виникає в Pull Requests (PRs). Розробник може написати: « Впроваджено навігацію за глибинними посиланнями у вікно профілю ». Хоча це технічно вірно, але для рецензента, який не знайомий з терміном « глибинні посилання », це не відповідає контексту. Він може запитати: « Чи можете ви розібратися, * чому * ви обрала навігацію за глибинними посиланнями замість стандартної навігації за допомогою інтерфейсу користувача? » Який поток користувачів очікується тут? “Відповіддю є розуміння потенційних складностей - можливо, необхідність обробки різних орієнтацій пристроїв або версій системи - і бажання ясності щодо рішення про дизайн. Крім того, такі фрази як «реалізація» проти «додання» можуть незначно змінити сприйнятий рівень зусиль або складності. Використання більш описової мови, наприклад, «Інтеграція функціональності глибоких посилань для спрощення впровадження користувача», демонструє більшу обізнаність про ширший вплив зміни.
Важливим елементом, який часто втрачається, є розуміння неявних очікувань в рамках професійного спілкування. Наприклад, при документуванні звіту про помилку, простого зауваження «Програма аварійно завершується» недостатньо. Ефективнішим описом буде: «При ініціалізації функціональності «Share» з головної подачі, програма постійно завершується без доступних журналів помилок або стеків. Це свідчить про потенційну проблему з інтеграцією сторонньої бібліотеки під час процесу спільного використання. » Цей рівень деталізації — включаючи конкретну дію, яка спричинила проблему і * відсутність * діагностичної інформації — демонструє активний підхід до зневадження і надає цінний контекст для розробників, які намагаються розв’ язати проблему.
Нарешті, пам’ятайте про ідіоми. Фрази на кшталт «дотик бази» або «круг назад» є поширеними в мобільних розмовах, але їх точне значення може відрізнятися в різних командах і культурах. Завжди краще прояснити, якщо є якісь неоднозначності, ніж припустити спільне розуміння. Наприклад, замість того, щоб сказати «Давайте торкнемося цього пізніше», ви можете сказати «Чи можемо ми запланувати швидку зустріч для обговорення прогресу?»
Ось приклад, який показує, як використовувати Gradle для керування залежностями:
dependencies {
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.google.code.gson:gson:2.8.0'
// ... other dependencies
}