AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
📺 Видео и подкасты за неделю на @AppFiles

(iOS Ru) Учим Metal и image processing лишь бы не верстать на iOS
(iOS Ru) Race Condition: проблема гонки потоков — что это и как избежать?
(iOS Ru) Под капотом iOS-крешей
(iOS En) Resizable ScrollView Header | Scroll To Hide Header - SwiftUI
(iOS En) SwiftUI Theme Switcher in 3 Minutes – Light & Dark Mode Made Easy
(iOS En) Building emoji reactions in 5 minutes with SwiftUI
(iOS En) Customized Paywall using Native SwiftUI StoreKit APIs
(iOS En) Apple Engineer Shows How To Build a SwiftUI Sleep Tracker
(iOS En) 3 Ways to Initialize @State in SwiftUI
(And Ru) Тестирование Compose по-новому: простота, надежность, гибкость
(And En) The Android Show: I/O Edition
(And En) Now in Android: 116 – Google I/O, Gemini, and Jetpack Compose 1.8
(And En) What's new in Android Studio Meerkat Feature Drop
(And En) Android Testing Strategies
(And En) Tools and patterns for scalable Android app testing
(And En) 5 Anti-Patterns With Coroutines & Flows You MUST Avoid!
(And En) How Kotlin is Powering TV Broadcasts Worldwide
(And En) Android & Kotlin Development Masterclass – Full Course
(And En) Build your App from Scratch without Material 3 Color System
(Crs Ru) Kotlin Multiplatform vs Compose Multiplatform: отличия, способы создания и как запустить на iOS
(Crs Ru) Готов ли Compose iOS к продакшену?
(Crs En) ​​Kotlin Multiplatform: Have your code and eat it too
(Dev Ru) Разработчик HarmonyOS Next про ArkTS и HarmonyOS
(Dev Ru) Язык программирования Groovy: JVM языки, Java, Kotlin, Gradle, DSL
(Tcn Ru) Как работают нейроинтерфейсы: киборги, Neuralink, brain-computer interface
(Dev En) Design Messenger - Mobile System Design Mock Interview
(Dev En) C++ Course: Build an Audio Plugin

Прошлогодние видео:

(iOS Ru) TextField с автодополнением
(iOS Ru) SwiftUI-навигация: просто, нативно и декларативно
(iOS Ru) Удивительный мир внутри .ipa
(iOS Ru) Core Motion framework в финансовых приложениях
(And Ru) Путешествие к центру Композиции
(And Ru) Scout: новый фреймворк для ускоренного и безболезненного управления зависимостями
(And Ru) Компиляторные плагины: модификация и анализ Сompose
(And Ru) Как я code coverage внедрял да Gradle plugin для baseline писал
(Dev Ru) Грабим Дома на Собеседовании в Google (+ другие вопросы с собеседований)
Please open Telegram to view this post
VIEW IN TELEGRAM
WikWok - это красивое и функциональное приложение, которое превращает чтение Википедии в увлекательную ленту статей в стиле TikTok. Доступно на iOS, Android, Macos, Windows, Linux и в веб.

WikWok на GitHub: https://github.com/terrakok/WikWok
Платформа: Android
⭐️: 568
1
MagicMirror - умное зеркало своими руками

Подробная инструкция по созданию собственного MagicMirror — умного зеркала, которое отображает время, погоду, новости и другую полезную информацию прямо на поверхности зеркала.

🔧 Что входит в проект:

• Raspberry Pi в качестве основного контроллера
• Монитор за полупрозрачным зеркалом
• Корпус с элементами, напечатанными на 3D-принтере
• Настройка программного обеспечения MagicMirror² и добавление модулей для отображения различной информации.

Этот проект требует базовых навыков в электронике и программировании, а также некоторого времени на сборку и настройку. Однако результат стоит затраченных усилий: вы получите стильный и функциональный элемент интерьера, который можно адаптировать под свои нужды.

Если вы ищете интересный DIY-проект на выходные, создание MagicMirror может стать отличным выбором.

Статья: https://nerdiy.de/en/howto-magicmirror-build-your-own-magicmirror/
Платформа: интернет вещей
👍21
10 трюков Jetpack Compose, о которых вы, вероятно, не знаете

Jetpack Compose произвел революцию в разработке пользовательских интерфейсов для Android благодаря своему декларативному и интуитивно понятному подходу. Но даже для опытных разработчиков многие мощные функции и скрытые жемчужины остаются незамеченными. В этой статье мы рассмотрим 10 недооцененных или малоизвестных трюков с пользовательским интерфейсом в Jetpack Compose, которые помогут вам создавать более эффективные, красивые и удобные в обслуживании пользовательские интерфейсы.

1. Анимируйте видимости с помощью переходов Enter/Exit
2. Используйте модификатора Layout для создания кастомных макетов
3. Разделяйте элементы в LazyColumn
4. Используйте drawBehind для расширения фонового рисунка за пределы границ
5. Закрепляйте заголовки в LazyColumn с помощью stickyHeader
6. Используйте rememberUpdatedState, чтобы избежать устаревших лямбд
7. Не забывайте о pointerInput для кастомных жестов
8. Прокручивайте любой компонент с помощью Modifier.scrollable
9. Используйте CompositionLocal для тематического поведения
10. Используйте Modifier.graphicsLayer для создания эффектов

Статья: https://apptractor.ru/develop/10-tryukov-jetpack-compose.html
Платформа: Android
2👍1
ErrorKit - сообщения об ошибках Swift, удобные для человека

Несмотря на элегантный дизайн Swift, системные сообщения об ошибках часто бывают загадочными и бесполезными. Вместо того чтобы просто жаловаться, я создал ErrorKit, инструмент, который отображает эти сообщения в виде понятных человеку описаний. Но обработка всей экосистемы Apple - слишком большая задача для одного человека, это должна быть работа сообщества.

В этом посте я расскажу о том, как я создал основу для улучшения описаний ошибок, и приглашаю вас присоединиться ко мне в создании всеобъемлющего словаря удобных сообщений об ошибках для разработчиков Swift.

Статья: https://apptractor.ru/info/articles/errorkit.html
Платформа: iOS
👍3
Xtool - кроссплатформенная среда разработки, замена Xcode. Создавайте и развертывайте приложения для iOS с SwiftPM на Linux, Windows и macOS.

В нем есть:

• Сборка пакета SwiftPM в приложение для iOS
• Подпись и установка приложений для iOS
• Взаимодействие с Apple Developer Services программным способом

Xtool на GitHub: https://github.com/xtool-org/xtool
Платформа: iOS
⭐️: 2.4K
👍1
Новый плагин KMP для IntelliJ IDEA и Android Studio

JetBrains выпустил бета-версию нового плагина KMP для IntelliJ IDEA и Android Studio. Этот плагин упрощает все этапы работы с KMP, от настройки проекта до кроссплатформенной разработки и предварительного просмотра пользовательского интерфейса Compose.

Что нового:

• Встроенный расширенный визард для новых проектов — поддерживает все целевые комбинации Android, iOS, десктоп, веб и сервер
• Предварительные проверки — когда вы открываете проект, плагин автоматически запускает проверку окружения
• Готовность к запуску — после индексации плагин автоматически генерирует конфигурации запуска для всех платформ, доступных в вашем проекте, — Android, iOS, web, desktop и server
• Поддержка языков — для проектов с Kotlin и Swift плагин обеспечивает межъязыковую навигацию, подсветку синтаксиса, быстрое документирование и отладку в вашей IDE
• Поддержка Compose Multiplatform — Compose Multiplatform для iOS недавно получил статус Stable, что позволяет уверенно создавать красивые общие пользовательские интерфейсы для использования в производственных условиях на iOS, Android и настольных компьютерах
• Горячая перезагрузка Compose — быстрая итерация является ключевым моментом при создании пользовательских интерфейсов, с помощью Compose Hot Reload вы можете мгновенно увидеть изменения в пользовательском интерфейсе, не перезапуская приложение и не теряя его состояние

Новость: https://apptractor.ru/info/news/novyy-plagin-kmp-dlya-intellij-idea-i-android-studio.html
Платформа: кроссплатформа
KStorage — единый подход к key-value хранилищам на Kotlin Multiplatform

Key-Value хранилища — это очень удобно... пока вам не захочется большего.

SharedPreferences на Android, DataStore, NSUserDefaults на iOS, Multiplatform Settings, локальные файлы или вообще SQL - под все эти варианты нужно писать специфичный код.
Каждое из этих апи нуждается в создании дополнительных оберток, репозиториев, для повышения абстракции и упрощения замены конкретных библиотек.

KStorage — ультимативная обёртка, которая решает эту проблему. Библиотека позволяет создавать обёртки для Key-Value хранилищ, таких как DataStore. Также можно создавать Key-Value хранилище, где ключ — это название файла, а значение — это его сериализуемое значение.

Более того, вы даже можете спокойно сделать обёртку над SQL-запросом. Например, для создания пользователя, обновления или удаления.

Статья: https://habr.com/ru/articles/910392/
Платформа: Android/кроссплатформа
🤡1
Когда отладчик Swift лжет: скрытая стоимость компиляторных оптимизаций

Итак, я создаю приложение SwiftUI, а в нем параллельно вызываю две конечные точки бэкенда с помощью async let. Оба возвращают массивы пользователей, и я хочу объединить их результаты в операторе switch. Достаточно просто, верно?

Оказалось, что да, но при этом немного запутанно.

Во время отладки я заметил нечто странное: один из моих массивов (users2) оказался загадочно пуст прямо перед оператором возврата, хотя я только что перебирал его и видел все правильные данные!

Так в чем же дело? Неужели Swift съел мой массив? Это ошибка в моем API-клиенте? Или что-то более глубокое?

Статья: https://apptractor.ru/info/articles/kogda-otladchik-swift-lzhet.html
Платформа: iOS
🔥1
ZenTone - библиотека для Android, которая генерирует звуковые сигналы определенной частоты и громкости.

ZenTone на GitHub: https://github.com/nisrulz/zentone
Платформа: Android
⭐️: 123
Видим невидимое: контроль качества Android-библиотек через объектив AppTracer Lite SDK

Мы усиленно работаем над качеством нашего SDK, и одним из важных аспектов стал контроль работы SDK на устройствах пользователей. Было решено собирать краши и перформанс-метрики. Для этого отлично подходит новый инструмент AppTracer Lite SDK, разработанный в VK. Сейчас он доступен только внутри VK.

В статье я расскажу о самом инструменте, о том, для чего его можно использовать, и поделюсь подводными камнями, с которыми я столкнулся при разработке. Подход, описанный тут, универсален, при рассказе я буду говорить вещи, применимые к любой библиотеке.

Статья: https://habr.com/ru/companies/vk/articles/911120/
Платформа: Android
1
Мечтают ли андроиды о Robolectric? Разбираем фреймворк по косточкам

Robolectric — это мощный инструмент для UI‑тестирования Android‑кода без эмулятора. Когда я использовал Robolectric в работе, испытал удивление от того, как работает библиотека.

Помимо возможности в юнит‑тестах работать с Android‑компонентами, Robolectric позволяет работать с View и получать из неё Bitmap, что решает не только задачу проверки взаимодействия с View, но и позволяет проверить отображение экрана. И хотя в Android‑комьюнити у Robolectric неоднозначная репутация из‑за трудностей совместимости с другими библиотеками, его почти бесценные возможности пробудили любопытство копнуть глубже и осмыслить этот инструмент.

Статья: https://habr.com/ru/companies/alfa/articles/910226/
Платформа: Android
Комбинируем жесты и анимации в SwiftUI

В статье демонстрируют, как объединение жестов и анимаций в SwiftUI может повысить интерактивность и отзывчивость пользовательского интерфейса. Они начинают с простого примера, где изображение перемещается в соответствии с положением пальца пользователя, используя модификатор position и DragGesture. Затем они усложняют пример, добавляя анимацию возврата объекта в исходное положение с помощью withAnimation(.spring()), что делает взаимодействие более естественным и плавным. Этот подход подчеркивает важность визуальной обратной связи и демонстрирует, как SwiftUI позволяет легко создавать динамичные и интуитивно понятные интерфейсы.

Статья: https://www.createwithswift.com/combining-gestures-and-animations-with-swiftui/
Платформа: iOS
Google анонсирует Jetpack Navigation 3

Долгие годы разработчики жаловались на Jetpack Navigation (2) и теперь компания выпускает абсолютно новую библиотеку навигации, которая должна устранить все предыдущие проблемы.

Основные принципы:

• Вы владеете стеком: Вы, разработчик, а не библиотека, владеете и контролируете бэкстек.
• Не мешает: Nav3 спроектирована как открытая и расширяемая библиотека, предоставляя вам строительные блоки и полезные настройки по умолчанию.
• Выбираете свои строительные блоки: Вместо того чтобы встраивать все поведение в библиотеку, Nav3 предлагает небольшие компоненты, которые вы можете комбинировать для создания более сложной функциональности.

Ключевые особенности

• Анимации
• Адаптивные макеты
• Разграничение состояний
• Модульность

Есть пример кода и типовые решения.

В настоящее время Nav3 находится в стадии альфа-версии, что означает, что API может быть изменен на основе отзывов.
Робот Android - любимый маскот пользователей и разработчиков Android. И предыдущие версии конструктора таких ботов были очень популярны - в Google решили в этом году переделать конструктор ботов с нуля, используя новейшие технологии, поддерживаемые Gemini. Сегодня компания выпустила новое приложение с открытым исходным кодом Androidify, с помощью которого можно научиться создавать мощный опыт на базе искусственного интеллекта на Android с использованием новейших технологий, таких как Jetpack Compose, Gemini API через Firebase AI Logic SDK, CameraX и Navigation 3.

Примечание: это приложение все еще находится в стадии разработки. В настоящее время в этом приложении используется стандартная модель Imagen, но авторы работают над усовершенствованной моделью, которая специально обучена всем элементам, делающим Android-бота милым и забавным, ею поделятся позже этим летом. А пока не удивляйтесь, если это приложение выдаст несколько интересных вариантов!

Приложение сочетает в себе множество различных технологий Google, таких как:

• Gemini API - через Firebase AI Logic SDK для доступа к базовым моделям Imagen и Gemini.
• Jetpack Compose - для создания пользовательского интерфейса с восхитительными анимациями и адаптации приложения к различным размерам экрана.
• Navigation 3 - новейшая навигационная библиотека для построения навигационных графов с помощью Compose.
• CameraX и Media3 Compose - для создания кастомной камеры с пользовательскими элементами управления пользовательским интерфейсом (поддержка задней камеры, поддержка зума, тап-фокус) и воспроизведения промо-видео.

Androidify на GitHub: https://github.com/android/androidify
Статья: https://apptractor.ru/androidify-link
Платформа: Android
⭐️: 308
Современные приложения имеют сложную внутреннюю архитектуру, которую при правильном понимании можно оптимизировать для повышения производительности, эффективности и удобства использования. Rosalind от Tuist анализирует пакеты приложений, чтобы выявить скрытые структуры, предоставляя разработчикам четкие и действенные сведения об их коде, зависимостях, ресурсах и общей структуре. Делая невидимое видимым, Rosalind дает командам разработчиков возможность принимать обоснованные решения при доработке приложений.

В настоящее время Rosalind обеспечивает всесторонний анализ артефактов приложений, созданных в Xcode, а в планах есть поддержка платформ Android и React Native. Цель авторов - предложить единый подход к пониманию ДНК ваших приложений во всех основных экосистемах разработки приложений.

Rosalind на GitHub
: https://github.com/tuist/Rosalind
Платформа: iOS
⭐️: 56
1🔥1
Что нового в Jetpack Compose

На Google I/O 2025  объявили о множестве обновлений функций, производительности, стабильности, библиотек и инструментов для Jetpack Compose, рекомендуемого инструментария для создания пользовательских интерфейсов для Android. С помощью Compose вы сможете создавать отличные приложения, которые будут работать на всех устройствах. С момента своего первого анонса (на Google I/O 2019!) Compose значительно усовершенствовался, и сейчас 60% из 1000 лучших приложений в Play Store, таких как MAX и Google Drive, используют и любят его.

Статья: https://apptractor.ru/info/articles/chto-novogo-v-jetpack-compose.html
Платформа: Android
Большое обновление DivKit: визуальный редактор, поддержка форм, аниматоры

Команда DivKit надеется, что новые фичи помогут пользователям фреймворка и облегчат повседневные задачи. А пока мы продолжаем развитие DivKit: сейчас наше внимание направлено на feature parity между платформами и обновление документации.

Статья: https://habr.com/ru/companies/yandex/articles/909300/
Платформа: разработка
👍1
Унифицируем проверку форм с помощью TCA

В статье разработчик из AVIV делится опытом стандартизации валидации форм в приложениях iOS с использованием The Composable Architecture (TCA). Он подчеркивает, что при наличии множества форм в приложении важно избегать дублирования кода и несогласованности в логике валидации. Для решения этих проблем была разработана структура FormValidationReducer, которая позволяет централизованно определять правила валидации для каждого поля формы, обеспечивая единообразие и упрощая тестирование. Это решение способствует более чистой архитектуре и облегчает масштабирование приложения.

Статья: https://medium.com/aviv-product-tech-blog/unifying-form-validation-using-tca-e582b919cc02
Платформа: iOS
🔥1
Шаблоны проектирования - важные инструменты, широко используемые при разработке программного обеспечения. Эти паттерны позволяют улучшить качество кода, его согласованность и возможность повторного использования, контролируя создание, сборку и взаимодействие объектов.

Jetpack Compose Design Patterns - различные шаблоны проектирования, реализованные в Jetpack Compose (и Compose Multiplatform). Показаны примеры их использования и интеграции в современную разработку для Android.

Jetpack Compose Design Patterns на GitHub: https://github.com/meticha/jetpack-compose-design-patterns
Платформа: Android
⭐️: 189
📺 Видео и подкасты за неделю на @AppFiles

(iOS Ru) Работа в Aviasales, уход в сторону от iOS, поиск информации
(iOS En) SwiftUI - Task Management App UI
(iOS En) Building Scrollable Tab View Using SwiftUI
(iOS En) How to Cancel a Task at anytime in Swift Concurrency
(iOS En) Mastering Custom Container Views in SwiftUI
(And Ru) Память в Android, утечки и OOM
(And En) What's new in Android
(And En) What's new in Google Play
(And En) What's new in Android development tools
(And En) Adaptive Android development makes your app shine across devices
(And En) Seamless video capture, editing and playback with CameraX and Media3
(And En) Building differentiated apps for Android XR with 3D content
(And En) Unlock user productivity with desktop windowing and stylus support
(And En) Finding the perfect Gemini fit on Android
(And En) Best practices for using web in your Android apps
(And En) New in-car app experiences
(And En) Mastering text input in Compose
(And En) Build next-level UX with Material 3 Expressive
(And En) Android notifications and Live Updates
(And En) Google Home APIs, tools, and Gemini capabilities for your apps
(And En) How You Get Your Compose UI From Hundreds of Recompositions to Almost Zero
(And En) KotlinConf'25 – Day 1 Livestream (Feat. Keynote)
(And En) Gradle Configuration Cache: 2x faster, 4x smaller, and ready for Gradle 9.0
(Crs Ru) Настраиваем навигацию во Flutter-приложении через AutoRoute
(Crs En) Demystify KMP builds and structure
(Dev Ru) Стажировок мало, а джуны должны уметь всё: как становятся ИТ-специалистом в 2025 году
(Dev Ru) Как тимлиду принимать сложные решения
(Dev Ru) Язык программирования будущего – английский: визионерство, LLM, новая парадигма

Прошлогодние видео:

(iOS Ru) TOP 10 горячих клавиш для Xcode
(iOS Ru) Swift Plugins: ускоряем сборку проекта
(iOS Ru) Объединяем Combine и Swift Concurrency
(And Ru) Взлом и защита Android-приложений
(And Ru) Моментальный запуск: как VK Клипы работают с плейбэком видео на Android
(Dev Ru) Как собеседовать мобильных инженеров? Системный дизайн спешит на помощь! (все собеседования)
(Dev Ru) Проводим и проходим Mobile System Design-интервью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3