uz
Feedback
AppFiles - Mobile Development

AppFiles - Mobile Development

Kanalga Telegram’da o‘tish

Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.

Ko'proq ko'rsatish
2 167
Obunachilar
+124 soatlar
+17 kunlar
+930 kunlar
Postlar arxiv
AppleLoginAnimation - анимация как в логине Apple iCloud Это воссоздание анимации, которую вы видите на экране входа в iCloud, с использованием SwiftUI и SpriteKit. AppleLoginAnimation на GitHub: https://github.com/georgecartridge/AppleLoginAnimation Объяснение в X: https://x.com/georgecartridge/status/1982483221318357253 Платформа: iOS ⭐️: 59

Hivefy - музыкальный плеер в стиле Spotify на Flutter Hivefy — это открытое музыкальное Offline-First приложение без рекламы,
Hivefy - музыкальный плеер в стиле Spotify на Flutter Hivefy — это открытое музыкальное Offline-First приложение без рекламы, вдохновленное Spotify. Создано на Flutter с использованием неофициального JioSaavn API. Изучайте популярные чарты, альбомы, плейлисты и многоязычный контент — всё с открытым исходным кодом, с соблюдением конфиденциальности и с возможностью полной настройки.  Hivefy на GitHub: https://github.com/Harish-Srinivas-07/hivefy Платформа: кроссплатформа ⭐️: 34

Мы перенесли 40,000 строк Objective-C на Swift - вот что нас чуть не убило Когда мы начинали, мы думали, что модернизируемся.
Мы перенесли 40,000 строк Objective-C на Swift - вот что нас чуть не убило Когда мы начинали, мы думали, что модернизируемся. На самом деле мы просто исправляли свои прошлые ошибки. Сделали бы мы это снова? Вероятно, но медленнее и умнее. Swift дал нам безопасность, ясность и производительность. Но он также научил нас смирению. Никакой инструмент или язык не спасёт от плохого планирования, срезок или излишней самоуверенности. Переписывание кода романтично, пока вы сами не столкнётесь с ним. И если вы когда-нибудь поймаете себя на мысли «Давайте просто всё перепишем на Swift» - сделайте глубокий вдох. Распланируйте лучше. И всё равно действуйте. Потому что, хотя это чуть не убило нас, в итоге оно сделало нас лучшими разработчиками. Статья: https://apptractor.ru/info/articles/40-000-objective-c.html Платформа: iOS

Сравниваем два View с помощью слайдера в SwiftUI Когда вам нужно визуально сравнить два изображения, экрана или состояния, слайдер «до и после» часто оказывается наиболее интуитивно понятным решением. В этой статье мы рассмотрим, как создать многоразовое представление сравнения со слайдером полностью на SwiftUI — без использования UIKit или внешних библиотек. Статья: https://apptractor.ru/info/articles/sravnivaem-dva-view-s-pomoschyu-slaydera-v-swiftui.html Платформа: iOS

За 3 дня запустить Android приложение на iOS: опыт адаптации приложения под CMP В прошлом году мы решали любопытную задачу. Н
За 3 дня запустить Android приложение на iOS: опыт адаптации приложения под CMP В прошлом году мы решали любопытную задачу. Нам нужно было вдвоем за одну рабочую неделю собрать прототип мобильного приложения для сервиса бронирования отелей. Задача осложнялась тем, что заказчик рассматривал не только нашу команду на роль подрядчика. Мы не могли отдать сырой черновик, в котором просто нажимаются нужные кнопки и работают ключевые сценарии — мы должны были превзойти конкурентов-флаттеристов. И нам удалось это сделать с помощью KMP. Да, тема довольно холиварная, и в статье я не заявляю, что KMP лучше Flutter’а во всем. Каждая технология хороша под свои задачи. Вместо этого я расскажу о конкретном проекте, на котором KMP оказался более удачным выбором. Также коснусь вопросов архитектуры и миграции Android-приложения на iOS с помощью CMP, а заодно подсвечу подводные камни, с которыми пришлось разбираться в процессе. Статья: https://habr.com/ru/companies/kts/articles/959950/ Платформа: кроссплатформа

Разница между @MainActor и DispatchQueue.main.async — вопросы с собеседования Основное различие заключается в том, что @MainA
Разница между @MainActor и DispatchQueue.main.async — вопросы с собеседования Основное различие заключается в том, что @MainActor — это современный атрибут из фреймворка Swift Concurrency, который гарантирует выполнение кода в главном потоке на этапе компиляции, а DispatchQueue.main.async — это более старая команда из Grand Central Dispatch (GCD), которая асинхронно отправляет блок кода на выполнение в главную очередь в рантайме.​ Статья: https://apptractor.ru/info/articles/raznitsa-mezhdu-mainactor-i-dispatchqueue-main-async-voprosy-s-sobesedovaniya.html Платформа: iOS

Space! - виджет с фотографиями NASA Астрономическая фотография дня от NASA — теперь на вашем главном экране с виджетами! Spac
Space! - виджет с фотографиями NASA Астрономическая фотография дня от NASA — теперь на вашем главном экране с виджетами! Space! отображает последние фотографии Astronomy Picture of the Day, публикуемые NASA каждый день. Чтобы увидеть последние фотографии, добавьте виджет на главный экран или в окно «Сегодня», или просто откройте приложение для просмотра на весь экран и ознакомления с познавательным описанием. Space! — это приложение с полностью открытым исходным кодом, разработанное на Swift и SwiftUI. Space! на GitHub: https://github.com/jtbandes/SpacePOD Платформа: iOS ⭐️: 112

📺 Видео и подкасты за неделю @AppFiles(iOS En) Building an iOS Ghibli App with SwiftUI, MVVM, and Swift Concurrency(iOS En) Create immersive media experiences for visionOS(iOS En) SwiftUI Course for Beginners – Create an iOS App from Scratch(iOS En) 5 Useful SwiftUI Modifiers(iOS En) Foundation Models Framework in Swift(iOS En) iOS 26 Style Floating Sheets Using SwiftUI(And Ru) Как обеспечить стабильную работу SDK для миллионов устройств(And En) Bringing Androidify to XR(And En) State vs. Actions vs. Events On Android & KMP(And En) Single & Multi-Choice Button Groups In Material3 Expressive(And En) What's new in Kotlin 2.2.21 (and 2.2.20!)(And En) Discussing Kotlin Coroutines with Marcin Moskała(And En) A Common Mistake when working with Kotlin Flows(And En) Your Toolchain is Production: The Case for Observability(And En) From Lag to Lightning: Transforming Dependency Update Timelines(And En) Universal Cache: It’s time for fast, reliable, and cheap CI pipelines(And En) Gradle: Your Build, Your Rules(Crs Ru) Что ждёт Kotlin Multiplatform разработчика на собесе? (все собеседования) • (Dev Ru) Как сделать Offline Mode. Секреты от Avito.Tech(Dev Ru) Бережливое управление людьми — менеджмент без переработок и выгорания(Dev En) Data Structures and Algorithms Mega Course – Master Technical Interviews in 49 Hours Прошлогодние видео: • (And Ru) Избавляемся от Context в бизнес логике — как ответить на собеседовании(Dev Ru) Backend vs Frontend: сравниваем опыт разработчиков — что сложнее, перспективнее и кому больше платят(Dev Ru) Grafana: инструкция по применению(Dev Ru) Тесты с душком(Dev Ru) Как писать библиотеки: проектирование API, обратная совместимость

Globe - вращающийся "глобус" из изображений Globe - вращающийся "глобус" из изображений (они тоже являются composable) на Compose Multiplatform. Поддерживает Android, iOS, Desktop (JVM). Globe на GitHub: https://github.com/pedromassango/compose_concepts Платформа: Android/кроссплатформа ⭐️: 29

Combine – швейцарский нож iOS-разработчика. Или нет Combine – фреймворк для работы с асинхронными событиями в декларативном стиле. Он помогает разработчикам управлять потоками данных, избавляя от множества колбэков, ручного управления очередями и других сложностей, связанных с асинхронностью. Большинство статей описывают 3 сущности: Publisher (издатель), Subscriber (подписчик) и Operator'ы. Но они умалчивают еще об одном игроке – Subscription. Именно подписка управляет всей "жизнью" цепочки: кто кому и когда передаёт данные, и когда всё заканчивается. Статья: https://habr.com/ru/companies/banki/articles/958650/ Платформа: iOS

Kinetics - настраиваемые примитивы физического движения для SwiftUI Kinetics привносит естественное ощущение реальной физики
Kinetics - настраиваемые примитивы физического движения для SwiftUI Kinetics привносит естественное ощущение реальной физики в ваши анимации SwiftUI. Разработанный на основе Swift 6 с строгим соблюдением принципов многопоточности, он предоставляет современную и безопасную основу для создания анимаций, которая реагируют на действия пользователя, учитывают границы и выглядят реалистично. Kinetics на GitHub: https://github.com/roberthein/kinetics Платформа: iOS ⭐️: 156

Архитектура SwiftUI: структурируем представления для повторного использования и ясности Новая статья от Антуана ван дер Ли предлагает практический подход к организации архитектуры SwiftUI-приложений с акцентом на читаемость, повторное использование и поддержку кода. Автор начинает с примера простого списка статей, который со временем может стать перегруженным из-за добавления новых функциональностей, таких как индикаторы загрузки, обработка пустых состояний и действия с ячейками. Чтобы избежать этого, он рекомендует разделять представления на более мелкие компоненты, используя такие техники, как выделение отдельных представлений, создание расширений и вычисляемых свойств. Однако он предостерегает от чрезмерного использования этих методов, чтобы не усложнить структуру кода. В статье подчеркивается важность соблюдения принципов читаемости и повторного использования кода, что способствует более легкому тестированию и поддержке приложения в будущем. Автор также делится практическими рекомендациями по организации представлений и структуры проекта, что делает материал полезным для разработчиков, стремящихся улучшить архитектуру своих SwiftUI-приложений. Статья: https://www.avanderlee.com/swiftui/swiftui-architecture-structure-views-for-reusability-and-clarity/ Платформа: iOS

Как создать собственную библиотеку на Kotlin Multiplatform Создадим библиотеку Krashlytics на Kotlin Multiplatform для обработки отчетов о сбоях и отслеживания навигационных цепочек. Такие цепочки  —  это логи пользовательских действий, по которым выявляются последовательности событий, приведших к сбою. Статья: https://nuancesprog.ru/p/30352/ Платформа: Android/кроссплатформа

Material Pickers - Material 3 пикеры для Compose Material Pickers - компоненты выбора для Jetpack Compose, соответствующие ма
Material Pickers - Material 3 пикеры для Compose Material Pickers - компоненты выбора для Jetpack Compose, соответствующие материальному дизайну. Выразительные, настраиваемые и идеально вписывающиеся в систему дизайна Material 3. Библиотека предоставляет готовые к использованию вертикальные, горизонтальные и двойные (парные) пикеры, а также низкоуровневые примитивы для создания полностью настраиваемых макетов. Material Pickers на GitHub: https://github.com/eidam-slices/material-pickers Платформа: Android ⭐️: 7

Уменьшающиеся слоны В статье команда инженеров Block рассказывает о проблеме масштабных монорепозиториев — когда проект разби
Уменьшающиеся слоны В статье команда инженеров Block рассказывает о проблеме масштабных монорепозиториев — когда проект разбит на тысячи подпроектов и IDE синхронизирует десятки миллионов строк кода, разработка становится неэффективной. В примере приводят ситуацию, когда «холодная» (cold) синхронизация в IntelliJ с Gradle занимает около 24 минут, и при этом используется порядка 36 ГБ оперативной памяти — очевидно, что для разработчика такое ожидание неприемлемо. Чтобы решить эту проблему, авторы вводят ряд «интервенций» — изменений поверх обычного Gradle-процесса, направленных на уменьшение объёма работы IDE при синхронизации. Среди них — параллельная загрузка моделей, ограничение числа проектов, которые синхронизируются (Spotlight), отключение транзитивной синхронизации зависимостей (intransitive sync), замена подпроектов на заранее собранные артефакты (artifact swap), предпроскачивание зависимостей (pre-fetch). В совокупности эти меры позволили снизить время синхронизации с нескольких минут до ~15 секунд — улучшение порядка 97% — и значительно снизить нагрузку на ресурсы. Статья: https://engineering.block.xyz/blog/shrinking-elephants Платформа: Android

Продвинутые Codable В статье автор показывает, как выйти за рамки стандартного Codable в Swift, когда JSON-структура не совпа
Продвинутые Codable В статье автор показывает, как выйти за рамки стандартного Codable в Swift, когда JSON-структура не совпадает с моделью данных. Вместо громоздких init(from:) предлагается разделять DTO (структуру, соответствующую JSON) и модель, используя протоколы AdvancedDecodable и AdvancedEncodable. Они позволяют автоматически кодировать и декодировать данные через промежуточный слой, где можно добавлять валидацию и преобразования, не теряя простоту Codable. Помимо этого, автор предлагает обёртки Maybe, Either и Both — универсальные решения для обработки некорректных или неоднородных данных. Такой подход сохраняет читаемость и устойчивость к изменениям API, делая код надёжнее и понятнее. Статья: https://nothingtocommitworkingtreeclean.com/advanced_codable.html Платформа: iOS

Продвинутые Codable В статье \ автор показывает, как выйти за рамки стандартного Codable в Swift, когда JSON-структура не совпадает с моделью данных. Вместо громоздких init(from:) предлагается разделять DTO (структуру, соответствующую JSON) и модель, используя протоколы AdvancedDecodable и AdvancedEncodable. Они позволяют автоматически кодировать и декодировать данные через промежуточный слой, где можно добавлять валидацию и преобразования, не теряя простоту Codable. Помимо этого, автор предлагает обёртки Maybe, Either и Both — универсальные решения для обработки некорректных или неоднородных данных. Такой подход сохраняет читаемость и устойчивость к изменениям API, делая код надёжнее и понятнее.

Что такое ANR и как с ним работать правильно Когда пользователь открывает приложение, нажимает на кнопку — и ничего не происходит несколько секунд, Android начинает считать, что “приложение не отвечает”. Через 5 секунд на главном потоке система показывает диалог: “Приложение не отвечает. Закрыть?” Это и есть ANR (Application Not Responding). Статья: https://habr.com/ru/articles/958278/ Платформа: Android

Сам себе Шерлок: 7 способов найти логи и поймать баг на iOS Знакома ситуация, когда кнопка не работает, приложение виснет, анимации тормозят, но при этом нет никаких ошибок на экране? Можно часами играть в детектива, гадая по UI и строя догадки, что пошло не так. А можно за несколько минут найти настоящего преступника — ведь iOS щедро оставляет улики в виде логов. Нужно лишь знать, где их искать. Секрет — в грамотном выборе способа, как собрать доказательства. Статья: https://habr.com/ru/articles/958142/ Платформа: iOS

MarkdownView - отображение markdown контента в SwiftUI MarkdownView предлагает невероятно простой и гибко настраиваемый спосо
MarkdownView - отображение markdown контента в SwiftUI MarkdownView предлагает невероятно простой и гибко настраиваемый способ отображения markdown разметки в вашем приложении. Он использует Swift-Markdown для анализа разметки, полностью совместим со спецификацией CommonMark. Фичи: • Полностью совместима с CommonMark • Поддерживает рендеринг SVG  • Поддерживает LaTeX • Настраиваемые шрифты, подсветка кода, цветов • Нативная реализация для SwiftUI MarkdownView на GitHub: https://github.com/LiYanan2004/MarkdownView Платформа: iOS ⭐️: 440