AppFiles - Mobile Development
Открыть в Telegram
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Больше2 170
Подписчики
Нет данных24 часа
+57 дней
+830 день
Архив постов
Kodein DI для Android. KMP и Compose
Быть в авангарде в разработке — жизненная необходимость. Поэтому многие проекты уже переходят на Jetpack Compose, а самые смелые и продвинутые даже выпускают приложения на KMP. Мы в проекте Дринкит тоже активно переходим на Jetpack Compose (с KMP пока не сделали подход).
Ну и как же жить со всем этим без DI? Правильно, никак. Поэтому в этой статье я расскажу, как применять DI Kodein в Kotlin Multiplatform и Jetpack Compose.
Статья: https://habr.com/ru/companies/dododev/articles/766058/
Платформа: Android
BigUIPaging - коллекция элементов SwiftUI для управления страницами контента.
BigUIPaging на GitHub: https://github.com/notsobigcompany/BigUIPaging
Платформа: iOS
⭐️: 118
Самые быстрые парусные лодки
Команды SP80 и Syroco вывели на воду свои замечательные лодки. Выглядящие как космические корабли пришельцев и управляемые не парусами на мачтах, а сверхбыстрыми воздушными змеями, обе эти яхты созданы для достижения небывалых скоростей.
Текущий мировой рекорд скорости парусного спорта продержался чуть более десяти лет и составляет 121.06 км/ч. Но рекорды ставятся для того, чтобы их побивать. Обе команды установили целевую скорость в 150 км/ч, обе используют огромные воздушные змеи, прикрепленные к лодкам на прочных тросах, чтобы избежать опрокидывания, и обе прошли долгий путь с тех пор, как мы впервые рассмотрели эти конструкции в 2021 году.
Лодки: https://newatlas.com/marine/syroco-sp80-testing/
Open Interpreter позволяет LLM выполнять код (Python, Javascript, Shell и др.) локально. Вы можете общаться с Open Interpreter через ChatGPT-подобный интерфейс в терминале, запустив после установки $ interpreter.
Он обеспечивает естественно-языковой интерфейс к задачам общего назначения - таким, как:
• Создание и редактирование фотографий, видео, PDF-файлов и т.д.
• Управление браузером Chrome для проведения исследований
• Создание, очистка и анализ больших массивов данных
...и т.д.
Open Interpreter на GitHub: https://github.com/KillianLucas/open-interpreter
Платформа: разработка
Как эффективно провести модульное тестирование большого MVVM-приложения? The Unit Testing Diet Sample App - пример чат-приложения для Android, который демонстрирует, как следовать Behavior-Driven Development (BDD) путем написания модульных тестов, проверяющих поведение пользователя и результат, который он воспринимает, без проверки деталей реализации. Тесты написаны в стиле Given-When-Then и охватывают уровни ViewModel, UseCase и Repository, без использования моков.
The Unit Testing Diet Sample App на GitHub: https://github.com/steliosfran/unit-testing-diet
Платформа: Android
⭐️: 7
Подборка видео про новый фреймворк Observation
Новый фреймворк Observation в сочетании с функциями Swift Concurrency позволяет заменить Combine, который выглядит устаревшим по мнению Apple.
• Фреймворк Observation (SwiftUI + iOS 17)
• iOS 17 Data Flow with Observation Framework
• SwiftUI Data Flow in iOS 17 - Observation & @Observable
• SwiftUI Data Flow with the new Observation - simpler SwiftUI code and improved performance in iOS 17
• Swift Observation from Scratch
Платформа: iOS
Видео и подкасты за неделю:
•
(iOS Ru) Как ускорить сборку проекта и не остановить разработку
• (iOS Ru) Забудь про UITableView
• (iOS Ru) Новые подходы к работе с регулярными выражениями в Swift. Просто о сложном
• (iOS Ru) О дивный новый мир со Swift Concurrency
• (iOS En) Custom In-App Notification’s – Xcode 15 – SwiftUI Tutorials
• (iOS En) How to get started with Swift Concurrency (Beginner Tutorial)
• (iOS En) Changing Status Bar Style in 5 Min's - SwiftUI
• (iOS En) Build an Air Quality Index App with SwiftUI Map & Google AQI API
• (iOS En) How to Build a Custom Sheet in SwiftUI
• (iOS En) New and Deprecated APIs in iOS 17
• (And Ru) Как устроена логика навигации флоу в приложении Тинькофф
• (And Ru) Введение в безопасность Android-приложений
• (And Ru) Удалил один класс, а сломался весь проект: Decoupling
• (And Ru) Корутинные загадки
• (And Ru) Измеряем sequence
• (And En) Now in Android: 92 - Studio Bot expansion, Firebase integration, Android Studio, and much more!
• (And En) How to Build a Camera App With CameraX - Taking Photos
• (And En) How to Build a Custom Gradle Plugin to Share Project Config - Multi-Module Architecture
• (And En) Add Custom Google Fonts in your App
• (And En) How to make and use BOM (Bill of Materials) dependencies in Android projects
• (Crs Ru) Генератор межъязыковых мостов для мобильных приложений PyDjinni
• (Crs En) KMP Hopes & Dreamcatchers with Ritesh Gupta
Поставьте 👍, если понравилась подборка. А если вы увидели/выпустили какое-то другое интересное видео - отправьте боту🧑🏻💻AnyPass - это универсальное решение для управления паролями, генерации паролей и анализа их состояния. Внутри Kotlin, Compose Multiplatform, корутины, Swift, модуляризация, Koin, Firebase, Coil, Ktlint и многое другое.
AnyPass на GitHub: https://github.com/getspherelabs/anypass-kmp
Платформа: Android/кроссплатформа
⭐️: 92
Добавление кастомных шрифтов Google в приложение
Видео: https://www.youtube.com/watch?v=9HGbwifxirw
Платформа: Android
Осваиваем фреймворк Observation в Swift
Новый фреймворк Observation в сочетании с функциями Swift Concurrency позволяет заменить Combine, который выглядит устаревшим по мнению Apple. В этой статье мы узнаем, как использовать фреймворк Observation для обработки потоков данных в наших приложениях.
Статья: https://apptractor.ru/info/articles/osvaivaem-freymvork-observation-v-swift.html
Платформа: iOS
Papyrus - это типобезопасный HTTP-клиент для Swift. Он превращает ваши API в чистые и лаконичные протоколы Swift, в которых каждая функция представляет собой конечную точку API. А аннотации к протоколу, функциям и параметрам помогают конструировать запросы и декодировать ответы.
Papyrus на GitHub: https://github.com/joshuawright11/papyrus
Платформа: iOS
⭐️: 117
Побочные эффекты Jetpack Compose в подробностях
Цель побочных эффектов в Jetpack Compose - обеспечить возможность выполнения операций, не связанных с пользовательским интерфейсом, которые изменяют состояние приложения вне Composable-функции контролируемым и предсказуемым образом.
Побочные эффекты, такие как обновление базы данных или сетевой вызов, должны быть отделены от логики рендеринга пользовательского интерфейса для повышения производительности и удобства сопровождения кода.
Jetpack Compose предоставляет несколько функций Composable, таких как
SideEffect, LaunchedEffect и DisposableEffect.
Статья: https://apptractor.ru/info/articles/pobochnye-effekty-jetpack-compose-v-podrobnostyah.html
Платформа: AndroidКак точно пройти собеседование в ИТ-компанию?
Можно прочесть миллион статей в интернете, а можно посмотреть выпуск шоу «Как это работает» от Тинькофф.
В этом выпуске гуру собеседований и ведущий Android-разработчик в Тинькофф Александр Агейченко рассказывает, как проходит интервью, и что нужно делать, чтобы его не завалить.
Как это работает? Смотрите этот и другие выпуски тут: Как устроены собеседования в IT - Как это работает #1
Библиотека Scout — быстрый и безопасный DI на Kotlin
Яндекс выпустил свою DI-библиотеку для Kotlin. Используется в приложении Маркета.
Scout на GitHub: https://github.com/yandex/scout
Статья: https://habr.com/ru/companies/yandex/articles/764920/
Платформа: Android
⭐️: 7
Вы не так готовите Kingfisher, или как самураи работают с загрузкой изображений
У самурая нет цели, есть только путь. И никакой самурай уж точно не станет изобретать велосипед, чтобы этот путь проехать. Вот и у меня нет цели дать готовый рецепт — только указать верное направление.
В статье разберемся с тем, как использовать готовые решения, не допуская распространенных ошибок, на которые часто подталкивают авторы библиотек для загрузки и отображения картинок.
Статья: https://habr.com/ru/articles/761772/
Платформа: iOS
Notify - это простое приложение для заметок, созданное с использованием современных средств Android-разработки. Этот проект демонстрирует хорошую реализацию Android-приложения с правильным проектированием архитектуры. Используется: MVVM, Kotlin, корутины, Jetpack Compose UI Toolkit, Android Architecture Components, Dependency Injection, Material Components for Android, Accompanist и Biometric.
Notify на GItHub: https://github.com/aritra-tech/Notify
Платформа: Android
⭐️: 116
Как начать работу со Swift Concurrency
В видео:
00:00:00 - Введение
00:03:58 - Async await в Swift с примерами кода
00:50:18 - Обертывание существующего асинхронного кода в async/await в Swift
01:09:06 - Async let: параллельный вызов асинхронных функций
01:19:53 - Какую роль играют Task в системе параллелизма Swift?
01:48:00 - Понимание групп задач Swift на примере
02:11:14 - Заключение
Видео: https://www.youtube.com/watch?v=TOIUI369RzU
Платформа: iOS
Как создать Todo-приложение с помощью Cloud Firestore, MVI, Kotlin и Jetpack Compose
Плейлист: https://www.youtube.com/playlist?list=PLA7YMGupLhlGdLMlZQUuplhUfnTQUWxTc
Платформа: Android
MetaCodable - расширение возможностей реализации
Codable в Swift с помощью макросов. Фреймворк предоставляет пользовательские макросы, которые могут быть использованы для генерации динамических реализаций Codable. Ядром фреймворка является макрос Codable(), который генерирует реализацию на основе данных, предоставляемых с помощью других макросов.
MetaCodable нацелен на повышение эффективности ваших реализаций Codable, предоставляя следующие возможности:
• Позволяет объявлять пользовательские значения CodingKey для каждой переменной, вместо того чтобы писать все значения CodingKey с помощью CodedAt(_:), передавая один аргумент.
• Позволяет создавать плоскую модель для вложенных значений CodingKey с CodedAt(_:) и CodedIn(_:).
• Позволяет создавать композицию из нескольких типов Codable с помощью CodedAt(_:), не передавая никаких аргументов.
• Позволяет предоставлять значение по умолчанию в случае сбоев декодирования с помощью Default(_:).
• Позволяет создавать пользовательские стратегии декодирования/кодирования с помощью HelperCoder и использовать их с помощью CodedBy(_:), т.е. LossySequenceCoder и т.д.
• Позволяет игнорировать определенные свойства при декодировании/кодировании с помощью IgnoreCoding(), IgnoreDecoding() и @IgnoreEncoding().
• Позволяет игнорировать все инициализированные свойства типа при декодировании/кодировании с помощью функции IgnoreCodingInitialized(), если они явно не запрошены для декодирования/кодирования путем добавления каких-либо атрибутов кодирования, т.е. CodedIn(_:), CodedAt(_:), CodedBy(_:), Default(_:) и т.д.
MetaCodable на GitHub: https://github.com/SwiftyLab/MetaCodable
Платформа: iOS
⭐️: 180Использование строковых ресурсов в ViewModel
При создании приложений для Android одним из распространенных "подводных камней" является использование строковых ресурсов во ViewModel.
В этой статье мы выясним, почему включение строковых ресурсов непосредственно в ViewModel может вызвать проблемы, и рассмотрим альтернативные методы их решения.
Статья: https://apptractor.ru/info/articles/ispolzovanie-strokovyh-resursov-v-viewmodel.html
Платформа: Android
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
