Темы



Дайджест интересных материалов для мобильного разработчика #345 (18 — 24 мая)

В этой подборке рендеринг экранов ВКонтакте, победы и поражения Flutter, архитектуры и скриншоты, продуктовая аналитика и архетипы игроков, виртуальные свидания в умных домах и много других интересных материалов!

d26tea0yyw50fsroytzkubz_jqg.png

Что делает ВКонтакте, чтобы уменьшить лаги отрисовки? Как отобразить очень большое сообщение и не убить UiThread? Как уменьшить задержки при скролле в RecyclerView? Благодаря Xamarin и моей любви к этому фреймворку я, в принципе, перешел в стан разработчиков, этот инструмент помог заработать мне немалых денег, знаний и найти замечательных коллег. Так почему же сейчас я пишу на Flutter? Короткий ответ, потому что Flutter покрывает все потребности кросс-платформенной разработки.

Этот дайджест доступен в виде еженедельной рассылки. А ежедневно новости мы рассылаем в 5ek7bfhjzilma-pbharuioaa7lw.pngTelegram-канале.

f1930ac4945596eb9707bc7a01bc5bdc.pngiOS

• (+7) Unit тесты для RxSwift кода
• (+6) Автоматические скриншоты iOS с помощью XCTestplan и XCode 11
• (+5) HandsAppMVP: iOS-архитектура для студии аутсорс разработки
• (+2) Неоморфизм с помощью SwiftUI. Часть 2: Что можно сделать с доступностью? + Часть 1
• iOS-приложение с витрины Flutter может вообще не использовать фреймворк
• Что разработчику ждать от iOS 14?
• Swift 5.3 начнет поддерживать Windows
• 377ae0333d0f4b7b97307c9eea5ee21a.gifСоздаем всплывающую кнопку оценки с помощью SwiftUI
• 377ae0333d0f4b7b97307c9eea5ee21a.gif5 забавных iOS-библиотек для улучшения UI
• 377ae0333d0f4b7b97307c9eea5ee21a.gifПревью SwiftUI в масштабе
• 377ae0333d0f4b7b97307c9eea5ee21a.gifРеализация POP в iOS-приложении
• 377ae0333d0f4b7b97307c9eea5ee21a.gifСовременные подходы к разработке пользовательского интерфейса в iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifЧто нового в Swift 5.3
• 377ae0333d0f4b7b97307c9eea5ee21a.gifCodables: лучший способ парсинга данных в Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifДинамические ссылки Firebase в приложения для iOS
• 377ae0333d0f4b7b97307c9eea5ee21a.gifСоздание полностью прозрачного UITabBar в Swift
• 377ae0333d0f4b7b97307c9eea5ee21a.gifТоп-10 самых полезных iOS-библиотек в 2020 году
• 377ae0333d0f4b7b97307c9eea5ee21a.gifКак интегрировать fastlane в iOS-проект
• 377ae0333d0f4b7b97307c9eea5ee21a.gifКак создавать градиенты в Swift с помощью CAGradientLayer
• 377ae0333d0f4b7b97307c9eea5ee21a.gifНеудобная правда об отправке вашего приложения в Apple…
• 377ae0333d0f4b7b97307c9eea5ee21a.gifКак создать повторно используемые превью SwiftUI, которое можно сохранить в JSON-файл
• 96716bcb926741e79bb1c284a88083ca.pngRHLinePlot: график, как в Robinhood
• 96716bcb926741e79bb1c284a88083ca.pngEasySwiftLayout: простая работа с Auto-Layout в iOS

e1a3cf2a8b65a0da69bbdd5c0ad040fe.pngAndroid

• (+76) Прокачиваем беговую дорожку
• (+25) Контроль пульса во время пробежки через музыкальную обратную связь — или «ищутся тестировщики, любящие бегать»
• (+16) Создание приложений с помощью Mediapipe
• (+10) CI TeamCity — Автоматизация build процессов Android и UI тестирования
• (+9) Пробуем и разбираемся с StateFlow
• (+4) Декларативное программирование клиент-серверных приложений на Android. Часть 2
• (+3) MVVM и выбор элементов в адаптере — LiveData
• Как я не создал свой бизнес по разработке Android-приложений
• 6861c1045bee84154ebf29f5cc1fb355.pngAndroid Dev Podcast #114: Новости
• 377ae0333d0f4b7b97307c9eea5ee21a.gifПрорезаем статику – поиск и устранение проблем с помощью статического анализатора кода Android Studio
• 377ae0333d0f4b7b97307c9eea5ee21a.gifBeetlens: кастомный Android UI на OpenGL
• 377ae0333d0f4b7b97307c9eea5ee21a.gifКак использовать Coil, собственный загрузчик изображений Kotlin
• 377ae0333d0f4b7b97307c9eea5ee21a.gifРасширяемый Recycler View в Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifМгновенное распознавание речи на Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifПонимание корутинов в Kotlin с этой ментальной моделью
• 377ae0333d0f4b7b97307c9eea5ee21a.gifGit репозитории как зависимости Gradle
• 377ae0333d0f4b7b97307c9eea5ee21a.gifДвижения Material Design для Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifFAB с BottomAppBar
• 377ae0333d0f4b7b97307c9eea5ee21a.gifПочему я отказался от любимого Gson в моем Kotlin-проекте
• 377ae0333d0f4b7b97307c9eea5ee21a.gifОбнаружение сбоев в опубликованном приложении для Android
• 377ae0333d0f4b7b97307c9eea5ee21a.gifНесколько навигационных графов (с нижней панелью навигации)
• 96716bcb926741e79bb1c284a88083ca.pngAGSkeletonLoading: экраны-скелеты для Android
• 96716bcb926741e79bb1c284a88083ca.pngEasyFlipViewPager: переворачивающиеся карточки
• 96716bcb926741e79bb1c284a88083ca.pngYouTag: музыкальный плеер для iOS

7081c634ec176ab6b953d9d19e82a09a.pngРазработка

• (+32) Уменьшение размера React Native-приложения на 60% за несколько простых шагов
• (+25) Программирование игры для embedded-устройства на ESP32
• (+24) Azure DevOps и App Center вместо тестовых ферм: упрощаем и ускоряем мобильную разработку с помощью облачных сервисов
• (+11) Материальный Python. Кастомные карточки с OpenGL-эффектами
• (+10) Лор и сюжет в несюжетных играх на примере Throne: Kingdom at War
• (+10) Как улучшить производительность вашего Flutter приложения
• (+5) Тенденции тестирования, к которым стоит присмотреться в 2020 году
• (+4) Подробно о пакете Provider для Flutter
• Podlodka #164: Продуктовая безопасность
• make sense: о переходе на удаленку, спаде производительности и осознанности
• Google и Apple запустили API для отслеживания контактов
• Citrix представил App Protection для защиты данных на персональных устройствах
• King открывает Defold
• Плагин для Adobe XD экспортирует готовый код во Flutter
• Где и как размещать Floating Action Buttons в мобильных приложениях
• UX для недизайнеров, или что должен учитывать разработчик мобильных приложений
• 377ae0333d0f4b7b97307c9eea5ee21a.gifОт отсутствия опыта в программировании к офферу от Microsoft за 1 год
• 377ae0333d0f4b7b97307c9eea5ee21a.gifСоздание паззла на Flutter
• 377ae0333d0f4b7b97307c9eea5ee21a.gif4 новых продукта GitHub, которые изменят ваш код
• 377ae0333d0f4b7b97307c9eea5ee21a.gifТрассировка лучей в Notepad.exe со скоростью 30 кадров в секунду
• 377ae0333d0f4b7b97307c9eea5ee21a.gif3 ловушки, из-за которых разработчики перестают учиться
• 377ae0333d0f4b7b97307c9eea5ee21a.gifДинамические темы Flutter в 3 строчки

509dc9bde69347ecbe0c21ff2973d7e7.jpgАналитика, маркетинг и монетизация

• (+6) Видеозаписи докладов митапа по продуктовой аналитике
• (+4) Работающая геймификация: Octalysis Framework
• GameRefinery отслеживает «Мотивацию игроков и их архетипы»
• Маркетплейс RapidAPI привлек еще $25 млн.
• «Руководство по работе с обратной связью пользователей» от Instabug
• Трафик загрузки приложений вырос на треть
• Checkaso выпустили инструмент для работы над текстовым ASO
• Workstream: поиск не офисных работников
• Rumble Hockey отдаст 100% дохода всем инфлюэнсерам
• AirBnB и Bumble предлагаю виртуальные свидания
• Constellation Software покупает TUNE
• Mozilla начинает принимать заявки в Builders Incubator
• Контента для Oculus Quest продано на $100 млн.
• Как потратить $300 тысяч и узнать все о доставке кофе
• «Второе пришествие» Apple Search Ads в Россию: какие первые выводы можно сделать
• Как сделать мобильное приложение заметным в App Store и Google Play: инструкция по размещению и оптимизации
• Построение прогноза аудитории и дохода с помощью когортного анализа в Excel/Google Spreadsheets

8538129f5e7b404a720121cb9c3814db.jpgAI, Устройства, IoT

• (+22) Хождение по граблям в чистом поле или как собрать MAC-адреса близлежащих Wi-Fi-устройств
• (+19) Как построить “Умный дом" и не сойти с ума
• (+8) IoT там, где вы не ждали (часть 3). Построение имитационной модели + (часть 2) + (часть 1)
• Magic Leap получил еще $350 млн.
• Samsung прекращает работу приложений виртуальной реальности
• Mail.ru Group будет бесплатно готовить специалистов по анализу данных и машинному обучению
• Sony и Microsoft сделали модуль камеры с ИИ
• 377ae0333d0f4b7b97307c9eea5ee21a.gifПрограммирование Raspberry Pi на Swift: светофоры
• 377ae0333d0f4b7b97307c9eea5ee21a.gifПинбол на Arduino, который играет сам

← Предыдущий дайджест. Если у вас есть другие интересные материалы или вы нашли ошибку — пришлите, пожалуйста, в почту.

© Habrahabr.ru