Комфортная разработка мобильных проектов
TRANSCRIPT
![Page 1: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/1.jpg)
Юрий Буянов
Комфортная разработка мобильных проектов
РазработчикМобильных Приложений
OK.RU
![Page 2: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/2.jpg)
0. Предыстория
![Page 3: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/3.jpg)
1. Continuous Integration
![Page 4: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/4.jpg)
Dependensiespush hook/pollGIT
Build
Tests
Static Analysis
Notifications
Dev (master) buildCI
![Page 5: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/5.jpg)
Контроль качества кода• Собираемость
• Статический анализ кода
• iOS: clang scan-build, oclint
• Android: PMD, FindBugs, android lint
• Детектор копипасты (CPD)
• Тесты
• “Технический долг” (подсчёт “//TODO:”)
![Page 6: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/6.jpg)
![Page 7: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/7.jpg)
Контроль качества кода
• Не заменяет ревью
• Есть сомнительные ворнинги
• Нужен консенсус в команде и настройка правил
• Тесты никто не пишет ( ◔ ʖ ̯◔ )
![Page 8: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/8.jpg)
2. Доставка
![Page 9: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/9.jpg)
Distribution
• Шнурочек
• TestFlight ¯\_(⊙_ʖ⊙)_/¯
• HockeyApp ($$$)
• Self-hosted
• Google Play / ITC
![Page 10: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/10.jpg)
![Page 11: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/11.jpg)
Test (delivery) buildDependencies
Build
Upload
CI
Package (.ipa/.apk)
Versioning
Notification
Tagging
Changelog
push
push hook/pollGIT
![Page 12: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/12.jpg)
Версионирование• Независимое для каждой поставляемой ветки (test, release,
etc)
• Базируется на названии ветки и номере билда
• ${BUILD_NUMBER} = 34
• CFBundleVersion = 0.3.34
• CFBundleShortVersionString = test-34
• Версия видна пользователю (тестировщику): внутри приложения, на иконке
• Версия видна разработчику: тег в гите, отчёты об ошибках, логи
![Page 13: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/13.jpg)
Changelog• Облегчает поиск нужной версии и процесс тестирования
• Варианты составления
• “Руками”
• git log
• ссылки на тикеты / документацию
• гибридный (?)
![Page 14: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/14.jpg)
Дебаг-символы
• ProGuard mapping.txt для Android
• .dSym.zip для iOS
• Отсутствие существенно усложняет диагностику крешей
• Легко теряются если сборка проводится на локальной машине
![Page 15: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/15.jpg)
Управление правами
• HockeyApp tags, teams
• Одна ветка — один тег (команда)
![Page 16: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/16.jpg)
pushpush
develop test release
commit <ab12fe> (tag: test-23)
commit <12cd34> (tag: test-24, release-4)
![Page 17: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/17.jpg)
Подводные камни
• Поддержка работоспособности (обновление)
• Требования к окружению для разных проектов
• Поддержка масштабируемой системы
• “Сакральные знания”
![Page 18: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/18.jpg)
3. После сборки
![Page 19: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/19.jpg)
Креш-репортинг• Сбор символов для расшифровки стектрейсов
(mapping.txt/dSYM.zip)
• Интеграция SDK
• Уведомления о крешах
• Интеграция с багтрекером
• Дополнительные данные (логи, app state)
• Не только креши (зависание главного треда, обычные ошибки)
![Page 20: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/20.jpg)
Решения
• Стандартные решения (ITC, Play)
• HockeyApp
• iOS: KSCrash
• Android: ACRA
• Коммерческие решения (Crashlytics, etc)
![Page 21: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/21.jpg)
Багрепорты• Shake to report (rage shake)
• Отправка через email / багтрекер
• Сборка данных
• Описание пользователя
• Скриншот
• ViewHierarchy
• Состояние приложения
• Логи
![Page 22: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/22.jpg)
Настройка “в полёте”
• Настройки для тестировщиков (переключение сервера, сброс данных)
• in-app
• system settings (iOS only)
• browser (url scheme)
![Page 23: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/23.jpg)
![Page 24: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/24.jpg)
![Page 25: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/25.jpg)
Диагностика “в полёте”
![Page 26: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/26.jpg)
Диагностика “в полёте”• iOS: https://github.com/Flipboard/FLEX
• Android: ???
• Расширяется
• Удобно отлаживать “мистические” баги вёрстки
• Позволяет менять состояние приложения
• Не нужно подключать девайс и перезапускать приложение для отладки
![Page 27: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/27.jpg)
4. В релиз
![Page 28: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/28.jpg)
• Особенности релизной конфигурации
• Многочисленные пересборки из-за замеченных в последний момент мелочей
• Человеческий фактор и дурацкие ошибки
День релиза
![Page 29: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/29.jpg)
Способы борьбы
• Более частые релизы
• Релизный чеклист для разработчика
• Релизная конфигурация для системы сборки
• Тестируем релизный бинарник
![Page 30: Комфортная разработка мобильных проектов](https://reader031.vdocuments.net/reader031/viewer/2022020116/55a78c2b1a28ab306e8b474f/html5/thumbnails/30.jpg)
Юрий Буянов
Вопросы?
РазработчикМобильных Приложений
OK.RU
@digal
yuri.buyanov
digal