AppFiles - Mobile Development
Open in Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Show more2 173
Subscribers
-224 hours
+17 days
-830 days
Data loading in progress...
Similar Channels
Tags Cloud
Incoming and Outgoing Mentions
---
---
---
---
---
---
Attracting Subscribers
August '26
August '26
+20
in 1 channels
July '26
+39
in 1 channels
Get PRO
June '26
+31
in 1 channels
Get PRO
May '26
+42
in 1 channels
Get PRO
April '26
+26
in 1 channels
Get PRO
March '26
+35
in 1 channels
Get PRO
February '26
+23
in 1 channels
Get PRO
January '26
+45
in 2 channels
Get PRO
December '25
+43
in 3 channels
Get PRO
November '25
+46
in 1 channels
Get PRO
October '25
+132
in 1 channels
Get PRO
September '25
+38
in 1 channels
Get PRO
August '25
+40
in 1 channels
Get PRO
July '25
+31
in 1 channels
Get PRO
June '25
+33
in 1 channels
Get PRO
May '25
+41
in 1 channels
Get PRO
April '25
+54
in 2 channels
Get PRO
March '25
+162
in 1 channels
Get PRO
February '25
+42
in 1 channels
Get PRO
January '25
+40
in 1 channels
Get PRO
December '24
+50
in 1 channels
Get PRO
November '24
+65
in 1 channels
Get PRO
October '24
+52
in 1 channels
Get PRO
September '24
+48
in 1 channels
Get PRO
August '24
+81
in 2 channels
Get PRO
July '24
+48
in 1 channels
Get PRO
June '24
+41
in 1 channels
Get PRO
May '24
+29
in 1 channels
Get PRO
April '24
+18
in 1 channels
Get PRO
March '24
+26
in 2 channels
Get PRO
February '24
+25
in 1 channels
Get PRO
January '24
+36
in 1 channels
Get PRO
December '23
+49
in 2 channels
Get PRO
November '23
+20
in 2 channels
Get PRO
October '23
+35
in 2 channels
Get PRO
September '23
+25
in 0 channels
Get PRO
August '23
+16
in 0 channels
Get PRO
July '23
+16
in 0 channels
Get PRO
June '23
+27
in 0 channels
Get PRO
May '23
+99
in 0 channels
Get PRO
April '23
+34
in 0 channels
Get PRO
March '23
+28
in 0 channels
Get PRO
February '23
+62
in 0 channels
Get PRO
January '23
+31
in 0 channels
Get PRO
December '22
+21
in 0 channels
Get PRO
November '22
+13
in 0 channels
Get PRO
October '22
+25
in 0 channels
Get PRO
September '22
+11
in 0 channels
Get PRO
August '22
+9
in 0 channels
Get PRO
July '22
+16
in 0 channels
Get PRO
June '22
+23
in 0 channels
Get PRO
May '22
+38
in 0 channels
Get PRO
April '22
+65
in 0 channels
Get PRO
March '22
+29
in 0 channels
Get PRO
February '22
+48
in 0 channels
Get PRO
January '22
+60
in 0 channels
Get PRO
December '21
+26
in 0 channels
Get PRO
November '21
+26
in 0 channels
Get PRO
October '21
+19
in 0 channels
Get PRO
September '21
+27
in 0 channels
Get PRO
August '21
+35
in 0 channels
Get PRO
July '21
+22
in 0 channels
Get PRO
June '21
+20
in 0 channels
Get PRO
May '21
+11
in 0 channels
Get PRO
April '21
+46
in 0 channels
Get PRO
March '21
+34
in 0 channels
Get PRO
February '21
+44
in 0 channels
Get PRO
January '21
+32
in 0 channels
Get PRO
December '20
+1 148
in 0 channels
| Date | Subscriber Growth | Mentions | Channels | |
| 26 August | 0 | |||
| 25 August | +1 | |||
| 24 August | +1 | |||
| 23 August | 0 | |||
| 22 August | 0 | |||
| 21 August | +4 | |||
| 20 August | +2 | |||
| 19 August | 0 | |||
| 18 August | +1 | |||
| 17 August | +1 | |||
| 16 August | 0 | |||
| 15 August | 0 | |||
| 14 August | 0 | |||
| 13 August | 0 | |||
| 12 August | +2 | |||
| 11 August | +1 | |||
| 10 August | 0 | |||
| 09 August | 0 | |||
| 08 August | 0 | |||
| 07 August | +1 | |||
| 06 August | +1 | |||
| 05 August | 0 | |||
| 04 August | +3 | |||
| 03 August | 0 | |||
| 02 August | +2 | |||
| 01 August | 0 |
Channel Posts
Один код для многих платформ - вот что вам никто не расскажет о KMP
Привет, Kotlin-разработчики. Скажу честно. Когда я начал разрабатывать своё приложение для разделения расходов на Kotlin Multiplatform, я подумал: «Напиши один раз, запускай везде. Что может быть сложного?»
Оказалось, может быть очень сложно. Но и невероятно полезно.
Это не очередной туториал «как начать работу с KMP». Таких и без того полно. Это скорее статья, которую я сам хотел бы прочитать до начала работы: реальные проблемы, реальные ошибки и реальные решения. Всё основано на моём опыте создания ExpenseSplitter KMP — полноценного приложения для совместного учёта расходов, которое работает на Android, Desktop и Web из одной общей кодовой базы.
Вот как всё было на самом деле.
Статья: https://apptractor.ru/info/articles/odin-kod-dlya-mnogih-platform-vot-chto-vam-nikto-ne-rasskazhet-o-kmp.html
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность
| 2 | Android CameraX: детекция лица в реалтайме для биометрии
Представим ситуацию: клиент хочет перевести большую сумму, используя мобильное приложение. Внутренние системы видят подозрительную активность и запрашивают проверку по селфи, человек наводит камеру на лицо — получает отказ. А все из-за того, что на бэкенде была получена размытая фотография потолка с кусочком лица пользователя, по которому никак не понять, действительно ли это владелец счета хочет провести операцию. Клиент звонит в поддержку, злится. Банк теряет доверие. Именно такие сценарии заставили нас серьезно заняться качеством записываемого фото.
Статья: https://habr.com/ru/companies/tbank/articles/900136/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 192 |
| 3 | Kadr - декларативное создание видео для платформ Apple
SwiftUI для видео. Компонуйте, трансформируйте и экспортируйте видео на Swift — так, как действительно хочется писать код. Kadr - cовременная декларативная библиотека на Swift для создания видеокомпозиций на платформах Apple. Видео собираются с помощью DSL на основе result builder, а асинхронная работа построена на async/await.
Поддерживаются многодорожечные временные шкалы, переходы, наложения, фильтры с анимацией по ключевым кадрам, собственные покадровые композиторы, привязанный ко времени звук с плавными перекрёстными переходами — всё это поверх AVFoundation и без сторонних зависимостей.
Kadr на GitHub: https://github.com/SteliyanH/kadr
Платформа: iOS
⭐️: 48
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 186 |
| 4 | Надежное выполнение фоновых задач в iOS: часть 1
Можно подумать, что если у вас в кармане лежит суперкомпьютер, то он уж точно должен уметь надёжно выполнять разные рутинные задачи в фоне, пока вы занимаетесь своими делами. Примерно так же, как cron в Unix-системах делает это ещё с 1970-х.
В первой статье этой серии из трёх частей я расскажу о начале своего пути с BGTaskScheduler — фреймворком Apple для запуска фоновых задач на iOS. А также о том, как методом проб, ошибок и наблюдений мне удалось добиться достаточно хорошей надёжности в моём приложении Calendar Copilot, которое я использую для синхронизации событий между календарями.
Сразу раскрою итог: BGTaskScheduler не настолько надёжен, как cron, но добиться достаточно стабильного расписания можно. Правда, есть важная оговорка — вам или вашим пользователям придётся открывать приложение хотя бы раз в неделю или две. Если этого не делать, iOS со временем начинает реже запускать фоновые задачи, а затем вообще прекращает это делать ради экономии батареи.
Статья: https://apptractor.ru/info/articles/nadezhnoe-vypolnenie-fonovyh-zadach-v-ios-chast-1.html
Платформа: iOS
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 243 |
| 5 | Шпаргалка: Kotlin Coroutines Channels и Actor‑модель
Пытаюсь лучше понять работу Kotlin Coroutines. Беру небольшую тему про Kotlin Coroutines и пытаюсь разобраться и написать шпаргалку (максимально кратко и лаконично). Сегодня поговорим про Каналы (Channel) и паттерн Actor.
В предыдущих частях я писал, что обычные suspend‑функции возвращают результат только один раз. Но что делать, если у нас есть непрерывный поток данных, который асинхронно генерируется в одной корутине, а обрабатываться должен в другой (или даже в нескольких)? Нам нужна потокобезопасная «труба». В мире корутин этой трубой является Channel.
Статья: https://habr.com/ru/articles/1071290/
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 232 |
| 6 | DroidGauge - Local-first регрессионное тестирование Android-приложений
DroidGauge — это инструмент командной строки, ориентированный на локальную работу, для воспроизводимых измерений производительности приложений Android. Он не требует root-доступа, APK-файла на устройстве, облачных сервисов или внешних ресурсов для создания отчетов. Он выявляет регрессии производительности и энергопотребления Android локально с помощью одной команды adb и готового автономного отчета.
Возможности:
• Сбор показателей CPU, PSS-памяти, рывков при отрисовке кадров, батареи, температуры и сетевой активности отдельных приложений — если соответствующие данные доступны в используемой версии Android.
• Устойчивый сбор данных: недоступные команды и поля отмечаются как отсутствующие метрики, а не приводят к прерыванию всего запуска.
• Стабильный JSON-формат schema_version: 1 со средним значением, p50, p95, минимумом, максимумом и изменением от первого до последнего измерения.
• Адаптивные HTML-отчёты в тёмной теме со встроенными SVG-графиками, без CDN, JavaScript, внешних шрифтов и дополнительных файлов.
• A/B-сравнение с учётом направления изменения (improved, regressed, stable) и детерминированными выводами на основе правил.
• Проверка в CI с кодом выхода 2 при обнаружении настроенных регрессий.
• Не собираются логи, списки приложений, содержимое экрана или другие персональные данные.
DroidGauge на GitHub: https://github.com/RuizheGu0/droidgauge
Платформа: Android
⭐️: 4
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 225 |
| 7 | Забавные анимации с меш-градиентами в Jetpack Compose 1.12
В Jetpack Compose всегда были интерфейсы для линейных и радиальных градиентов. Но если хотелось получить более сложное смешивание цветов, подходящего встроенного решения не было. Теперь оно появилось: в Jetpack Compose 1.12 представлен MeshGradientPainter.
Статья: https://apptractor.ru/info/articles/zabavnye-animatsii-s-mesh-gradientami-v-jetpack-compose-1-12.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 270 |
| 8 | MYCloudKit - синхронизация и и возможности обмена данными через CloudKit
MYCloudKit — это фреймворк, разработанный для упрощения и автоматизации операций синхронизации, удаления и получения данных из CloudKit для вашего приложения.
MYCloudKit на GitHub: https://github.com/mufasaYC/MYCloudKit
Платформа: iOS
⭐️: 215
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 253 |
| 9 | ⚡️⚡️Мобильные разработчики снова соберутся на Mobius этой осенью!
21–22 октября в Санкт-Петербурге и онлайне пройдет Mobius — конференция JUG Ru Group для мобильных разработчиков. По традиции в фокусе — практические задачи, нативный и кроссплатформенный подходы, архитектура и реальный опыт продуктовых команд.
✨Программа уже активно формируется, делимся наиболее интересными докладами:
🔹Портирование Android-приложений под HarmonyOS NEXT. Спикер расскажет про автоматизированный перенос с сохранением архитектуры: от преобразования Kotlin-кода в ArkTS до трансляции Jetpack Compose в ArkUI.
🔹AI-driven T-shape. Разбор реального опыта команды о том, как искусственный интеллект помогает осваивать соседние платформы и бэкенд, ускоряя развитие инженеров и уменьшая time-to-market.
🔹Liquid Glass своими руками на Metal. Анатомия визуального эффекта из iOS 26 и его воссоздание для более старых версий с разбором интеграции в кодовую базу Telegram.
📣 Встречаемся 21–22 октября (Санкт-Петербург + online).
Подробнее о программе и билетах — на сайте. | 288 |
| 10 | React Native в 2026 году: New Architecture, нативный код и AI в реальном проекте
React Native по-прежнему часто описывают формулой «один код для iOS и Android». В 2026 году она звучит слишком просто. Современное приложение на React Native — это общий продуктовый слой на TypeScript, нативный интерфейс, Hermes, Fabric, JSI, фоновые процессы, platform-specific код и довольно много решений о том, где именно должна выполняться каждая задача.
Мы столкнулись с этим в Synchra.24 — мобильном приложении для линейных и распределённых команд. В проекте больше тысячи TS/TSX-файлов и свыше ста экранов, но рядом с ними живут Kotlin и Swift: геопозиция, push-уведомления, биометрия, системные виджеты и работа с медиа. Это не история о функциях нашего продукта и не попытка его рекламировать. Это разбор того, чем на практике стала разработка на React Native к 2026 году — и какую часть этой работы действительно можно поручить нейросетям.
Статья: https://habr.com/ru/articles/1072522/
Платформа: кроссплатформа
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 303 |
| 11 | 📺 Видео и подкасты за неделю
• (iOS En) SwiftUI in motion
• (iOS En) AllTrails: Momentum without a rewrite
• (iOS En) Flow data through SwiftUI
• (iOS En) SwiftUI essentials
• (iOS En) A guide to layout in SwiftUI
• (iOS En) Design with SwiftUI
• (iOS En) Reorderable Modifier | Multi-Item Reordering | Section Reordering | SwiftUI
• (iOS En) Prominent Action Custom Tab Bar | SwiftUI
• (iOS En) Device Hub Explained - What Every Apple Developer Should Know
• (And Ru) Android Runtime под капотом
• (And En) The Multi-Agent Code Review Workflow For My Production Android Apps
• (And En) Vertical vs. Horizontal Slicing - The ONLY Right Way to Split Down Your App
• (And En) A tale of the Gradle DSLs
• (Crs En) SwiftPM support for Kotlin Multiplatform
• (Crs En) All platforms are unique but some platforms are more unique than others
• (Crs En) KMP at Scale in Kuaishou Super App for over 700M users
• (Dev Ru) Выпрямляем руки агентов: как сделать MCP удобными и действительно полезными
• (Dsg Ru) DesignOps: операционная система команды, которая работает на вас
• (Dsg Ru) Дизайн для программиста: пробую Claude Design
• (Dev En) Build a live translation broadcast app with the Gemini Live API and LiveKit
• (Dev En) Go Get It, with Kotlin Lessons Learned Evolving Uber’s Java Backend
Прошлогодние видео:
• (Dev Ru) Генерация UI Kit с использованием ИИ
• (Dev Ru) Надежность мобильных приложений: что это и как достичь
• (Dev Ru) Задача на логику из собеседования в Amazon (+ все собеседования)
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 1 824 |
| 12 | Boxlore - умный плеер подкастов для Android
Большинство приложений для подкастов обращаются к открытому API, выполняют буквальный поиск по словам, показывают чарты Apple — и на этом всё. Ошибитесь в написании названия шоу — и ничего не найдёте. Попробуйте искать по теме — получите совпадения по заголовкам, которые вообще не отражают смысл запроса. А когда вы уже внутри приложения, главный экран редко ощущается как ваш: одинаковые подборки для всех и почти никакого обучения на основе того, что вы действительно слушаете.
Boxlore создан именно вокруг этих двух проблем. Он помогает найти шоу даже при неточном написании названия или искать подкасты и отдельные эпизоды по смыслу, когда вы примерно знаете, что хотите, но не можете сформулировать точный запрос. А по мере прослушивания приложение становится персональнее: Home, Explore, очередь и загрузки переупорядочиваются прямо на устройстве с учётом ваших предпочтений. Появляются подборки по времени суток, Because You Like, персональные рекомендации For You, а также карточки для случайных открытий — когда хочется найти что-то такое, что вы сами никогда не стали бы искать. Данные о ваших предпочтениях остаются на телефоне. Можно слушать потоково или скачивать выпуски для офлайн-доступа, полноценно управлять очередью и обходиться без рекламы и платных ограничений там, где это действительно важно.
Умный каталог охватывает популярные подкасты из чартов и ежедневно расширяется — пока в нём есть не абсолютно все шоу в мире. Но даже за пределами этого индекса Boxlore продолжает работать как обычный клиент для подкастов: можно подписываться, слушать, скачивать выпуски и импортировать OPML.
Boxlore на GitHub: https://github.com/boxcreate/boxlore
Платформа: Android
⭐️: 59
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 278 |
| 13 | Как Tinder сократил холодные старты на 47%, благодаря R8 Configuration Analyzer
Используя R8 Configuration Analyzer, Tinder смог найти и удалить непреднамеренные блокировки оптимизации. Результаты оказались заметными сразу: холодные запуски сократились на 47%, размер загружаемого приложения уменьшился на 28,98% — до 61,5 МБ, а число заметных пользователю ANR снизилось на 28%.
Статья: https://apptractor.ru/info/articles/kak-tinder-sokratil-holodnye-starty-na-47-blagodarya-r8-configuration-analyzer.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 319 |
| 14 | Подготовьте ваше приложение к более широким ограничениям объема памяти
Отличный пользовательский опыт — одна из ключевых целей Android, а для этого устройства должны оставаться быстрыми, отзывчивыми и надёжными. Именно поэтому оптимизация памяти становится важнее, чем когда-либо. На фоне роста цен на память новые устройства сохраняют прежний объём оперативной памяти или даже получают меньше, однако пользователи по-прежнему ожидают такой же плавной и производительной работы приложений.
В Android 17 ввели ограничения памяти для отдельных приложений, начав с устройств Pixel. Их задача — защитить общую отзывчивость системы от приложений, которые потребляют слишком много памяти и вызывают замедление всего устройства. В течение следующего года всё больше производителей начнут использовать ограничения памяти Android для приложений на устройствах с объёмом ОЗУ от 4 ГБ до 16 ГБ и более. Если приложение превысит эти лимиты, система замедлит его работу, а затем может завершить процесс. Поэтому уменьшение объёма потребляемой приложением памяти становится критически важным: это помогает избежать ограничения производительности со стороны ОС и сохранить плавный пользовательский опыт.
В этой статье разберём, как эти ограничения работают внутри системы, как измерять потребление памяти с помощью новых метрик Android vitals и какие конкретные действия помогут оптимизировать приложение или игру.
Статья: https://apptractor.ru/info/articles/podgotovte-vashe-prilozhenie-k-bolee-shirokim-ogranicheniyam-obema-pamyati.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 331 |
| 15 | Stitch - инъекция зависимостей для SwiftUI
Stitch — это лёгкая библиотека внедрения зависимостей (DI), вдохновлённая SwiftUI и обеспечивающая безопасность на этапе компиляции. Она позволяет описывать карту зависимостей без необходимости использовать инструменты генерации кода.
Безопасность Stitch на этапе компиляции даёт уверенность в корректности настройки: если проект компилируется, значит зависимости сконфигурированы правильно. В отличие от типичных контейнеров зависимостей, здесь не возникает ошибок в рантайме из-за того, что какая-либо зависимость не была зарегистрирована.
Для описания карты зависимостей Stitch использует новые макросы Swift 5.9+, что делает API более удобным, а для получения объектов из карты предоставляет соответствующие реализации @propertyWrapper.
Stitch предлагает следующие ключевые возможности:
1. Интеграция в жизненный цикл SwiftUI и привычный для SwiftUI стиль работы — использовать Stitch можно так же, как другие оболочки свойств SwiftUI.
2. Внедрение зависимостей через протоколы внутри представлений SwiftUI. Библиотека расширяет возможности ObservableObject, позволяя работать с протокольными типами и при этом корректно обновлять представления.
3. Доступ к Combine-издателям для свойств протокольных типов без необходимости добавлять в протокол переменные вида Publisher<Object, Never> и вручную проксировать их в реализации.
Stitch на GitHub: https://github.com/entrhq/stitch
Платформа: iOS
⭐️: 19
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 300 |
| 16 | Senior инженеры замолчали, и вот почему это плохой знак
Речь не о том, что у этих инженеров закончились мнения. Мнений у них по-прежнему хватает. Изменилось другое — куда эти мнения теперь направляются. Стало меньше замечаний на дизайн-ревью. Меньше возражений в архитектурных обсуждениях. Меньше тех моментов, когда человек с десятью годами производственного опыта говорит: подождите, я уже видел нечто подобное, и вот чем всё закончилось.
Встречи по-прежнему проходят. Решения по-прежнему принимаются. Но один конкретный вид трения стал почти незаметным. А это трение выполняло важную функцию.
Статья: https://apptractor.ru/info/articles/senior-inzhenery-zamolchali-i-vot-pochemu-eto-plohoy-znak.html
Платформа: разработка
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 299 |
| 17 | ZeroDroid - инструменты для анализа сетей, сигналов и безопасности
ZeroDroid — открытое Android-приложение, которое превращает смартфон в универсальный набор инструментов для анализа беспроводных сетей, радиосигналов, датчиков и безопасности. Проект объединяет 29 инструментов в пяти категориях: Wireless, RF & Signals, Sensors, Network и Security. Для работы используются аппаратные возможности самого телефона — Wi-Fi, Bluetooth и BLE, NFC, GPS, сотовый модем, магнитометр, барометр, микрофон, USB, UWB и ИК-порт, если они присутствуют в конкретном устройстве.
Среди наиболее интересных функций — анализатор Wi-Fi, BLE-сканер с просмотром GATT, инструменты NFC, Wi-Fi Direct и Wi-Fi Aware, анализ ультразвукового диапазона 18–24 кГц, работа с внешними SDR-приёмниками через USB OTG и мониторинг датчиков смартфона. Есть также GPS-трекер с информацией о GNSS-спутниках и записью NMEA, EMF Mapper на основе магнитометра, инспектор USB-устройств и анализатор сотовых вышек.
ZeroDroid написан на Kotlin с использованием Jetpack Compose и Material 3. Архитектура построена вокруг MVVM, StateFlow и Hilt, для локального хранения используется Room, для камеры — CameraX, а для распознавания QR-кодов — ML Kit и ZXing. Минимальная поддерживаемая версия — Android 8.0, хотя для полноценной работы современных Bluetooth и Wi-Fi API автор рекомендует более новые версии Android. Не все возможности доступны на каждом смартфоне: например, UWB, ИК-передатчик или барометр зависят от конкретного аппаратного оснащения.
ZeroDroid на GitHub: https://github.com/theabhishekchandra/ZeroDroid
Платформа: Android
⭐️: 22
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 305 |
| 18 | Android Skills — что выпустил Google и почему большинство разработчиков используют навыки неправильно
Вы, скорее всего, уже видели анонс. Android Skills запустили в апреле; реакция превзошла ожидания Google, а в начале августа команда Android Developer Relations опубликовала подробный материал, в котором объяснила философию проекта.
Большинство разработчиков восприняли это как обычное описание релиза.
На самом деле это набор архитектурных решений о том, как должна выглядеть Android-разработка с помощью ИИ. И если их не понять, можно в итоге получить конфигурацию агента, которая будет стоить дороже, работать медленнее и выдавать результаты хуже, чем если бы вы вообще ничего не настраивали.
Статья: https://apptractor.ru/info/articles/android-skills-chto-vypustil-google-i-pochemu-bolshinstvo-razrabotchikov-ispolzuyut-navyki-nepravilno.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 321 |
| 19 | Архитектура Android переходит от Event-Driven UI к State-Driven UI
Состояние — это то, за чем UI наблюдает постоянно. События или эффекты — это то, что UI должен обработать только один раз. Такой подход давно распространён в архитектурах MVVM и MVI. Однако если посмотреть на актуальные рекомендации Android-разработки по событиям UI, Google предлагает пересмотреть саму эту модель.
Статья: https://apptractor.ru/info/articles/arhitektura-android-perehodit-ot-event-driven-ui-k-state-driven-ui.html
Платформа: Android
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 282 |
| 20 | JS-инъекция для iOS-тестов: как подружить WKWebView и XCTest
Мы пишем UI-тесты для Ozon Банка, и примерно каждый второй экран — с WebView. Оферты, платёжные формы, веб-флоу — всё это рендерится внутри WKWebView. И здесь XCTest оказывается почти бессилен.
Статья: https://habr.com/ru/companies/ozonbank/articles/1016596/
Платформа: iOS/тестирование
👨🦯➡️ AppFiles: код, инструменты, практики, производительность | 295 |
