AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.79K photos
38 videos
11 files
3.72K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Firebase App Check с Play Integrity API в Android

Когда мы создаём Android-приложение с использованием Firebase, мы думаем, что только наше реальное приложение будет взаимодействовать с сервисами Firebase, такими как Firestore, Realtime Database или Cloud Storage. Но в реальности любой может извлечь ваши ключи Firebase и попытаться получить доступ к вашему бэкэнду, используя поддельные или модифицированные приложения.

Вот тут-то и пригодится Firebase App Check.

Статья: https://apptractor.ru/info/articles/firebase-app-check.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1
FengNiao - очистка неиспользуемых ресурсов в Xcode-проекте

FengNiao — это простая утилита командной строки для удаления неиспользуемых файлов графических ресурсов из вашего проекта Xcode.

Программа просканирует текущий проект и все его подпапки, чтобы найти неиспользуемые изображения, а затем спросит, хотите ли вы их удалить. Перед удалением изображений убедитесь, что у вас есть резервная копия или система контроля версий, в противном случае операция будет невосстановимой. Можно легко интегрировать FengNiao в процесс сборки Xcode. Таким образом, вы можете гарантировать, что ваш проект будет очищаться при каждой сборке.

FengNiao на GitHub: https://github.com/onevcat/FengNiao
Платформа: iOS
⭐️: 3.5К

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1
📺 Видео и подкасты за неделю

(iOS Ru) _VariadicView: подчеркивая скрытые возможности контейнеров
(iOS Ru) Федеративный ML на iOS: как уберечь данные пользователей в эпоху ИИ
(iOS Ru) Модульность в iOS: библиотека как инструмент декомпозиции
(iOS En) Liquid Glass Showcase: Tide Guide
(iOS En) SwiftUI Page Curl Carousel - Metal Shaders
(iOS En) SwiftUI Animated Scrollable Slider - Custom Picker
(And Ru) От идеи к CVE: как находить уязвимости в Android
(And Ru) Как справляться с ростом количества Gradle-модулей в Android-проекте
(And En) Now in Android: 123 – Android XR, Jetpack Navigation 3, and more!
(And En) The New Retain API in Jetpack Compose - Everything You Need to Know
(And En) Screen Transition Animations With Navigation3
(And En) Language Design in the Age of AI
(And En) Nobody is teaching you THIS about Onboarding
(Crs Ru) Продакшен опыт использования Flutter Web в Яндекс Смене
(Crs Ru) Compose Multiplatform: от сложного к простому
(Crs Ru) Flutter в 2025: возможности, ограничения и реальный опыт
(Dev Ru) Как построить карьеру в разработке в 2026 году и не допустить типичные ошибки
(Dev Ru) Разработка под авто — Android Automotive, CarPlay, Tesla
(Dev Ru) Применение AI и LLM в разработке и управлении
(Dev Ru) Социобиолог про ИИ и утрату навыков: выживут талантливые
(Dev En) Build a Support Agent with Vercel AI SDK – Full Tutorial
(Mrk Ru) Ошибки рекламы, из-за которых Google Play отклоняет мобильные игры

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

(iOS Ru) Мок-интервью по мобильному системному дизайну
(iOS Ru) Задачи с собеседования: LRU Cache — leetcode
(Crs Ru) PWA vs Native App. Как и зачем в Альфа-Бизнесе создавали свой MobileWeb
(Dev Ru) Mobile App Performance: метрики производительности
(Dev Ru) Релизный процесс приложений Ozon

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Perfetto в Android-разработке: когда профайлера уже недостаточно

Perfetto — крутейший инструмент. Он покажет вам те проблемы с производительностью, которые не заметит другой профайлер.

Perfetto покажет, что процессор занят системными задачами, когда ваш поток готов работать. Подсветит, что GC блокирует UI на 50 миллисекунд. А ещё расскажет, что именно планировщик ядра выкидывает поток с CPU.

Статья: https://habr.com/ru/companies/dododev/articles/977516/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
1
Open-Source Habit Tracker App - трекер привычек на React Native

Open-Source Habit Tracker App - простое минималистичное приложение для отслеживания привычек с открытым исходным кодом, созданное для того, чтобы помочь людям придерживаться своих ежедневных привычек. Оно разработано с использованием Expo и React Native и использует SQLite для локального хранения данных, поэтому все данные о привычках сохраняются непосредственно на устройстве и работают полностью в автономном режиме.

Open-Source Habit Tracker App на GitHub: https://github.com/hasibhaque07/open-source-habit-tracker-app
Платформа: кроссплатформа
⭐️: 10
1
Snapshot тесты для iOS: быстро, стабильно, на Metal

В этой статье расскажу о скриншот-тестировании iOS-приложений. Разберём одну из ключевых проблем, с которой сталкиваются проекты при работе с тестами, посмотрим, на чём основано сравнение изображений в современных open-source инструментах и поймём, почему всё сложнее, чем может показаться на первый взгляд. Также попробуем разобраться, как можно выйти за рамки существующих ограничений с помощью AFSnapshotTesting и параллельных вычислений на Metal.

Статья: https://habr.com/ru/articles/980958/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему я перешел на Dagger Components (вместо Dagger Android)

В этой статье расскажу про свои эксперименты с Dagger. Наткнувшись в проекте на огромный модуль Application (11,5 Мб), я стал искать альтернативы обертке Dagger Android. Поэкспериментировал с продвигаемым Google Dagger Hilt, а также с более старым подходом — Dagger Components. Последний, как ни странно, позволяет немного сократить Application и в целом имеет больше плюсов, чем минусов.

Статья: https://habr.com/ru/companies/psb/articles/979988/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Темная сторона iOS-разработки

Я занимаюсь iOS-разработкой достаточно долго, чтобы точно знать одно. Если вы всё ещё считаете iOS-разработку «чистой и элегантной», вы ещё не испытали всех трудностей.

Со стороны всё выглядит идеально. Отполированный дизайн Apple. Премиальные устройства. Синтаксис Swift, который читается как поэзия. Зарплаты, которые заставляют родственников внезапно уважать «работу программиста».

Но что внутри этой работы?

Это тихий, медленно закипающий под давлением котёл.

Есть та часть iOS-разработки, о которой никто не рассказывает на конференциях, сессиях WWDC или в постах LinkedIn. Это то, чему вы учитесь только после многих лет выпуска приложений, срыва сроков и выяснения одной и той же невидимой ошибки в десятый раз.

Давайте поговорим об этом.

Статья: https://apptractor.ru/info/articles/temnaya-storona-ios-razrabotki.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤡2😁1🤯1
LinkSheet - управление ссылками

LinkSheet в отдельном приложении восстанавливает поведение обработки ссылок, существовавшее до Android 12, позволяя пользователям выбирать, в каком приложении открывать ссылки.

LinkSheet на GitHubhttps://github.com/LinkSheet/LinkSheet
Платформа: Android
⭐️: 1.8K

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Trailblaze - ИИ-фреймворк тестирования приложений

Trailblaze - это платформа для тестирования мобильных приложений на основе искусственного интеллекта, которая позволяет создавать и выполнять тесты, используя естественный язык.

Trailblaze позволяет использовать тесты на основе ИИ в стандартных инструментальных тестах на Android-устройствах. Это позволяет использовать существующие среды выполнения и системы отчетности, обеспечивая путь для постепенного внедрения тестов на основе ИИ в масштабе.

Поскольку Trailblaze использует модели команд Maestro для взаимодействия с пользовательским интерфейсом, это позволяет реализовать долгосрочную перспективу кроссплатформенного тестирования пользовательского интерфейса, используя при этом те же возможности создания тестов, агентов и отчетности.

Доступные функции:

• Тестирование на основе ИИ: отказоустойчивые тесты с описанием шагов тестирования на естественном языке
• Выполнение на устройстве: запускается непосредственно на устройствах Android с использованием стандартных инструментальных тестов (Espresso, UiAutomator)
• Кастомные агентские инструменты: расширение функциональности за счет предоставления агенту инструментов TrailblazeTools, специфичных для приложения
• Подробная отчетность: комплексные отчеты о выполнении тестов
• Интеграция с Maestro: использует кастомный драйвер Maestro для интуитивно понятного, платформенно-независимого взаимодействия с пользовательским интерфейсом

Trailblaze на GitHub: https://github.com/block/trailblaze
Платформа: Android
⭐️: 182

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
EZNetworking - Swift-библиотека для работы с сетью и обработки API-запросов

EZNetworking — это мощная, но легковесная библиотека для работы с сетью на Swift, которая упрощает взаимодействие с API в ваших iOS-приложениях. Созданная с использованием современных возможностей Swift, она предоставляет интуитивно понятный интерфейс для выполнения HTTP-запросов, обработки ответов и управления сетевыми операциями.

Ключевые фичи:

• Поддержка современного Swift: создана на Swift 5.9 для iOS 15.0+
• Интеграция Async/Await: первоклассная поддержка параллельного выполнения в Swift
• Типобезопасная работа с сетью: строгая типизация запросов и ответов
• Гибкое создание запросов: несколько подходов к созданию запросов
• Продвинутые перехватчики: полный контроль над конвейером запросов/ответов
• Встроенное кэширование: эффективная система кэширования ответов
• Загрузка файлов и изображений: простые в использовании утилиты для загрузки
• WebSocket: двусторонняя связь между клиентом и сервером в реальном времени
• Всестороннее тестирование: 100% покрытие модульными тестами

EZNetworking на GitHub: https://github.com/Aldo10012/EZNetworking
Платформа: iOS
⭐️: 22

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Работа с аудио в Android: опыт реализации DAF — техники терапии заикания

В этой статье я хочу поделиться практическим опытом разработки Android-приложения для терапии заикания, основанного на технике Delayed Auditory Feedback (DAF).

DAF - это метод, при котором человек слышит собственную речь с небольшой задержкой (обычно 50-200 мс) через наушники. Такая обратная связь замедляет речь, снижает автоматизм, при котором возникают судорожные повторы, усиливает контроль над артикуляцией и помогает синхронизировать дыхание с речью.

На первый взгляд идея кажется простой: считать звук с микрофона, добавить задержку и воспроизвести его обратно. Однако на практике корректная реализация DAF на Android оказалась значительно сложнее - в первую очередь из-за особенностей аудиостека и системных задержек.

Статья: https://habr.com/ru/articles/983882/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Navigation3 + Koin в Compose Multiplatform

Я Android разработчик с 5 летним стажем и недавно я решил погрузиться в кроссплатформенную разработку с Compose Multiplatform. Как мне кажется, сейчас очень хорошее время для этого, т.к. Google и Jetbrains успели уже выкатить много различных библиотек для Compose Multiplatform и разработка на kmp уже мало чем отличается от нативной разработки.

В этой статье я бы хотел поделиться своими наработками по тому, как можно удобно совмещать библиотеку Navigation3 и Koin в Compose Multiplatform проекте и какие подводные камни есть на текущий момент.

Статья: https://habr.com/ru/articles/984552/
Платформа: кроссплатформа

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Внедрение подписок в приложения с помощью StoreKit 2

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

Цель этого руководства — помочь вам создать, настроить и протестировать встроенные покупки подписок в App Store Connect через Xcode. В конце вы реализуете полную систему покупок по подписке с использованием StoreKit 2.

Статья: https://apptractor.ru/info/articles/vnedrenie-podpisok-v-prilozheniya-s-pomoschyu-storekit-2.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Echo Music - музыкальный плеер для YouTube Music

Echo Music разработан для обеспечения бесперебойного и высококачественного прослушивания музыки. Он использует обширную библиотеку YouTube Music, исключает рекламу и добавляет мощные функции, такие как загрузка музыки для прослушивания в автономном режиме, отображение текста песен в реальном времени и распознавание музыки с учетом окружающей обстановки.

Echo Music на GitHub: https://github.com/iad1tya/Echo-Music
Платформа: Android
⭐️: 207

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как укротить SwiftLint в масштабах компании

Именно в корпоративной разработке особенно остро чувствуется: чем больше проектов и команд, тем сложнее удерживать единый стиль кода.

В этой статье я делюсь опытом настройки SwiftLint сразу для нескольких репозиториев — так, чтобы кодстайл оставался единым и не расползался со временем.

Статья: https://habr.com/ru/companies/naumen/articles/981474/
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1🥱1
Ошибки Kotlin, которые медленно убивают кодовые базы

Многие разработчики переходят на Kotlin, продолжая писать в стиле Java, что лишает код лаконичности и безопасности. Одной из главных «болезней» кодовых баз становится злоупотребление оператором !! (not-null assertion) и свойством lateinit. Вместо использования безопасных вызовов ?., функций стандартной библиотеки вроде let или грамотной обработки null через elvis-конструкцию, программисты создают хрупкие структуры, которые неизбежно приводят к NullPointerException. Также автор подчеркивает проблему игнорирования преимуществ функционального программирования: использование громоздких циклов for там, где операторы map, filter или flatmap могли бы сделать код чище и понятнее.

Другая критическая ошибка — неэффективная работа с многопоточностью и ресурсами через корутины. Частое использование GlobalScope или блокировка основного потока (Main Thread) тяжелыми операциями медленно «убивает» производительность приложения. Кроме того, создание избыточных объектов внутри часто вызываемых функций и пренебрежение модификатором inline для функций высшего порядка приводит к ненужным накладным расходам памяти.

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

Статья: https://medium.com/@mahesh31.ambekar/kotlin-mistakes-that-slowly-kill-android-codebases-bb67f51adf05
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍1🤮1
Вайбкодинг
😁2
SwiftDataTables - показ таблиц в iOS

SwiftDataTables позволяет отображать наборы данных в виде красиво отформатированных таблиц для iOS. Главная цель для конечного пользователя - как можно быстрее получить полезную информацию из таблицы с помощью таких функций, как упорядочивание, поиск и листание. Для разработчика - обеспечить простую реализацию с расширяемыми опциями.

Основные возможности включают:

• Сортировка - Нажмите на заголовки столбцов для сортировки по любому столбцу
• Поиск - Встроенная строка поиска фильтрует по всем полям
• Фиксированные столбцы - Заморозьте столбцы с левой или правой стороны
• Гибкий размер - Автоматически рассчитываемая или пользовательская ширина столбцов и высота строк
• Настраиваемый - Настройте заголовки, нижние колонтитулы, цвета и многое другое через делегат или объект конфигурации
• Шаблон источника данных - Статические данные или динамический контент по протоколу

SwiftDataTables на GitHub: https://github.com/pavankataria/SwiftDataTables
Платформа: iOS
⭐️: 451

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как начать тестировать внутренние покупки (In-App Purchases) на Android

Эта статья основана на моем опыте и, надеюсь, поможет быстрее стартовать коллегам в ручном тестировании внутренних покупок в Android-приложениях. Это не исчерпывающее руководство, просто хочется дать стартовые инструкции, чтобы можно было увереннее начать.

IAP - важный элемент монетизации мобильных приложений. К примеру, частый сценарий, предложение подписки через paywall. Корректная работа этого механизма критична как для бизнеса, так и для пользовательского опыта.

Статья: https://habr.com/ru/articles/930204/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Рендеринг маркдаун в SwiftUI

SwiftUI поддерживает Markdown, но с некоторыми нюансами. Начиная с iOS 15, Text может отображать встроенный Markdown. Но есть ограничения, которые нужно понимать. В этом руководстве мы рассмотрим, как работать с Markdown в SwiftUI без сторонних библиотек.

Статья: https://artemnovichkov.com/blog/rendering-markdown-in-swiftui
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM