Комфортная разработка мобильных проектов
Post on 16-Jul-2015
464 Views
Preview:
TRANSCRIPT
Юрий Буянов
Комфортная разработка мобильных проектов
РазработчикМобильных Приложений
OK.RU
0. Предыстория
1. Continuous Integration
Dependensiespush hook/pollGIT
Build
Tests
Static Analysis
Notifications
Dev (master) buildCI
Контроль качества кода• Собираемость
• Статический анализ кода
• iOS: clang scan-build, oclint
• Android: PMD, FindBugs, android lint
• Детектор копипасты (CPD)
• Тесты
• “Технический долг” (подсчёт “//TODO:”)
Контроль качества кода
• Не заменяет ревью
• Есть сомнительные ворнинги
• Нужен консенсус в команде и настройка правил
• Тесты никто не пишет ( ◔ ʖ ̯◔ )
2. Доставка
Distribution
• Шнурочек
• TestFlight ¯\_(⊙_ʖ⊙)_/¯
• HockeyApp ($$$)
• Self-hosted
• Google Play / ITC
Test (delivery) buildDependencies
Build
Upload
CI
Package (.ipa/.apk)
Versioning
Notification
Tagging
Changelog
push
push hook/pollGIT
Версионирование• Независимое для каждой поставляемой ветки (test, release,
etc)
• Базируется на названии ветки и номере билда
• ${BUILD_NUMBER} = 34
• CFBundleVersion = 0.3.34
• CFBundleShortVersionString = test-34
• Версия видна пользователю (тестировщику): внутри приложения, на иконке
• Версия видна разработчику: тег в гите, отчёты об ошибках, логи
Changelog• Облегчает поиск нужной версии и процесс тестирования
• Варианты составления
• “Руками”
• git log
• ссылки на тикеты / документацию
• гибридный (?)
Дебаг-символы
• ProGuard mapping.txt для Android
• .dSym.zip для iOS
• Отсутствие существенно усложняет диагностику крешей
• Легко теряются если сборка проводится на локальной машине
Управление правами
• HockeyApp tags, teams
• Одна ветка — один тег (команда)
pushpush
develop test release
commit <ab12fe> (tag: test-23)
commit <12cd34> (tag: test-24, release-4)
Подводные камни
• Поддержка работоспособности (обновление)
• Требования к окружению для разных проектов
• Поддержка масштабируемой системы
• “Сакральные знания”
3. После сборки
Креш-репортинг• Сбор символов для расшифровки стектрейсов
(mapping.txt/dSYM.zip)
• Интеграция SDK
• Уведомления о крешах
• Интеграция с багтрекером
• Дополнительные данные (логи, app state)
• Не только креши (зависание главного треда, обычные ошибки)
Решения
• Стандартные решения (ITC, Play)
• HockeyApp
• iOS: KSCrash
• Android: ACRA
• Коммерческие решения (Crashlytics, etc)
Багрепорты• Shake to report (rage shake)
• Отправка через email / багтрекер
• Сборка данных
• Описание пользователя
• Скриншот
• ViewHierarchy
• Состояние приложения
• Логи
Настройка “в полёте”
• Настройки для тестировщиков (переключение сервера, сброс данных)
• in-app
• system settings (iOS only)
• browser (url scheme)
Диагностика “в полёте”
Диагностика “в полёте”• iOS: https://github.com/Flipboard/FLEX
• Android: ???
• Расширяется
• Удобно отлаживать “мистические” баги вёрстки
• Позволяет менять состояние приложения
• Не нужно подключать девайс и перезапускать приложение для отладки
4. В релиз
• Особенности релизной конфигурации
• Многочисленные пересборки из-за замеченных в последний момент мелочей
• Человеческий фактор и дурацкие ошибки
День релиза
Способы борьбы
• Более частые релизы
• Релизный чеклист для разработчика
• Релизная конфигурация для системы сборки
• Тестируем релизный бинарник
Юрий Буянов
Вопросы?
РазработчикМобильных Приложений
OK.RU
@digal
yuriy.buyanov@corp.mail.ru
yuri.buyanov
digal
top related