AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
KMP Liquid Search - анимированная поисковая строка для Compose. Поддерживает Android, iOS, Desktop, Web, есть множество настроек.

KMP Liquid Search на GitHub: https://github.com/mejdi14/KMP-Liquid-Search
Платформа: Android/кроссплатформа
⭐️: 21
👍2
Сборка ядра Android и модулей aircrack-ng

Думаю, кто читает эту статью, сталкиваются с проблемой драйверов для внешних устройств, в частности Wi-Fi адаптеров, таких как ALFA, TP-Link и других на чипсетах RTL. Здесь я опишу принципы компиляции ядер Samsung с использованием системы сборки Soong для Android-устройств, а также расскажу, как подготовить среду для компиляции и сборки ядра. Кроме того, я опишу, как скомпилировать внешние модули ядра aircrack-ng для мобильных устройств.

Статья: https://habr.com/ru/articles/890088/
Платформа: Android
Как я прошел Android-собеседования в Google, Amazon и Motorola

Недавно у меня была возможность пройти собеседование в трех ведущих компаниях:

• Google - Android Engineer
• Amazon - Android Engineer (Великобритания, Кембридж)
• Amazon - инженер Fire TV (Берлин)
• Motorola - Android Engineer

...и успешно прошел все из них! 🎉

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

Статья: https://apptractor.ru/info/articles/kak-ya-proshel-android-sobesedovaniya-v-google-amazon-i-motorola.html
Платформа: Android
🤡7👍2
SwiftUIKit - это Swift SDK, который добавляет дополнительную функциональность в SwiftUI и Swift. Он содержит дополнительные компоненты, множество расширений нативных типов и многое другое.

SwiftUIKit может дать толчок вашей разработке и решить множество сложных проблем.

SwiftUIKit на GitHub: https://github.com/danielsaidi/SwiftUIKit
Платформа: iOS
⭐️: 1.6K
📺 Видео и подкасты за неделю на @AppFiles

(iOS Ru) Жизнь iOS разработчика в условиях санкций
(iOS En) iOS Architecture in the Era of SwiftUI
(iOS En) Publish Your macOS App Outside the App Store: Notarization, DMG, & Gumroad Guide
(iOS En) Responsive Chips Selection - Layout API - Resizable - iOS 16+
(iOS En) Xcode 16 Debugging Tutorial for Beginners
(iOS En) Mastering Enum-Driven Tab Views in SwiftUI: A Smarter Approach
(iOS En) From Top Bar To Sidebar With The sidebarAdaptable TabView Style
(And En) Now in Android: 114 - Google I/O 2025, Android Studio at 10, Android 16 Betas, and more
(And En) Develop for Android XR
(And En) Top 4 Security Best Practices for Your Android App
(And En) Fix Kotlin App Issues in Minutes - Stop Debugging the Hard Way!
(Crs Ru) Flutter Dev Podcast #50: Flutter на ОС Аврора
(Crs Ru) Полный разбор Kotlin Inject — Dagger для Kotlin Multiplatform
(Crs En) A Pragmatic approach to use Pattern Matching and Records in Flutter and Dart
(Crs En) How to manage global app events effectively on your Flutter app
(Dev Ru) Путь UX-исследователя — эмпатия vs аналитика, поиск респондентов и происшествия на интервью
(Dev Ru) От Junior до Senior: требования к грейдам и здоровье как скилл
(Dev Ru) Как проводить собеседования интересно и продуктивно
(Dev Ru) Зачем программисту знать лямбда исчисление
(Dev Ru) Мок интервью на позицию СТО

Что было год назад:

(iOS Ru) Моменты неотзывчивости iOS-приложений: как найти и исправить
(iOS Ru) Swift-уроки: cоздание горизонтального меню с индикатором
(And Ru) Собеседование по Kotlin (все собеседования)
(And Ru) Ultron — фреймворк для тестирования Android UI и Compose
(And Ru) Собираем грабли при профилировании Android-приложений
(Crs Ru) Коллекции во Flutter
(Dev Ru) Как принимать решения, строить команды и выбирать инструменты разработки — Павел Щедухин (Ozon Tech)
(Dev Ru) Публичное собеседование по System Design
(Dev Ru) Мобильная инфраструктура. Взгляд изнутри
(Dev Ru) BDUI – удовольствие или боль?
(Dev Ru) BDUI на 100%: управляем шиммерами с бэкенда
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
OpenNote - современное Android-приложение для ведения заметок со множеством полезных функций. Внутри Kotlin, Gradle с Kotlin DSL, MVVM, Чистая архитектура, Compose, Hilt, KSP, Room, Compose Navigation, Material 3 и CommonMark для работы с Markdown.

OpenNote на GitHub: https://github.com/YangDai2003/OpenNote-Compose
Платформа: Android
⭐️: 386
1
Формализация принципа Open/Closed: как сохранить обратную совместимость с помощью SOLID

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

Статья: https://habr.com/ru/companies/psb/articles/873612/
Платформа: iOS
👍1
Шпаргалка: Kotlin suspend функции

Пытаюсь лучше понять работу Kotlin Coroutine. Беру небольшую тему про Kotlin Coroutine и пытаюсь разобраться и написать шпаргалку. Сегодня про suspend функции.

Статья: https://habr.com/ru/articles/888932/
Платформа: Android
1
Go Cycling - это приложение-трекер для велосипедистов, созданное для iOS с помощью SwiftUI. Оно должно быть очень простым в использовании для велосипедистов любого уровня.

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

Go Cycling использует многие фреймворки и API Apple, включая:

• Core Location для данных о местоположении
• MapKit для встроенных карт
• Core Data для хранения данных о велосипедных маршрутах и предпочтениях пользователей
• CloudKit для хранения и синхронизации маршрутов, записей и предпочтений в iCloud
• Combine для обработки событий обновления местоположения

Go Cycling на GitHub: https://github.com/AnthonyH93/GoCycling
Платформа: iOS
⭐️: 155
👍3
Рендеринг пиксель-арта в SwiftUI

Пиксельная графика может выглядеть размыто на современных дисплеях, если ее неправильно масштабировать. В статье рассказывается, как в SwiftUI можно отображать пиксель-арт с четкими границами, используя модификатор .interpolation(.none), который предотвращает сглаживание при увеличении изображения. Также автор предлагает создать собственную структуру Bitmap, хранящую массив цветов, и визуализировать ее с помощью Image или Canvas.

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

Статья: https://twocentstudios.com/2025/03/10/pixel-art-swift-ui/
Платформа: iOS

👍 если хотите эту статью на русском
1👍1
В защиту простых архитектур

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

Статья: https://apptractor.ru/info/articles/v-zaschitu-prostyh-arhitektur.html
Платформа: архитектура
2
This media is not supported in your browser
VIEW IN TELEGRAM
HandWriting - библиотека инструментов для рисования на основе Compose, построенная на Kotlin Multiplatform.

Поддерживает рисование, стирание, выделение и манипуляции, отмену/повтор и функцию масштабирования.

HandWriting на GitHub: https://github.com/henni99/Handwriting
Платформа: Android/кроссплатформа
⭐️: 13
1
This media is not supported in your browser
VIEW IN TELEGRAM
Cursor Talk to Figma MCP - проект реализует интеграцию протокола Model Context Protocol (MCP) между Cursor AI и Figma, позволяя Cursor взаимодействовать с Figma для чтения проектов и их программной модификации.

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

Cursor Talk to Figma MCP на GitHub: https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp
Платформа: дизайн и прототипирование
⭐️: 647
👍3🔥1
10 хаков для оптимизации производительности iOS-приложений

Вот 10 практических хаков для повышения производительности вашего iOS-приложения, проверенных на производственных проектах.

1. Безжалостно профилируйте с помощью инструментов
2. Оптимизируйте Auto Layout с помощью isActive
3. Сокращайте динамическую диспетчеризацию с помощью final и private
4. Кешируйте дорогостоящие операции
5. Используйте CALayer.shouldRasterize для сложных представлений
6. Выгружайте работы в фоновые потоки
7. Используйте UILabel.preferredMaxLayoutWidth для ячеек
8. Выбирайте UIImage(named:) вместо UIImage(contentsOfFile:)
9. Минимизировать drawRect: переопределения
10. Лениво загружайте невидимое содержимое

Статья: https://apptractor.ru/info/articles/10-hakov-dlya-optimizatsii-proizvoditelnosti-ios-prilozheniy.html
Платформа
: iOS
👍1
Soundscape - это попытка сообщества вернуть возможности Microsoft Soundscape слепым и слабовидящим путешественникам. Начав с компонентов, выпущенных Microsoft Research с открытым исходным кодом, авторы восполнили некоторые недостающие части и службы, чтобы сохранить функциональность.

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

Soundscape на GitHub: https://github.com/soundscape-community/soundscape
Платформа: iOS
⭐️: 21
1
Выжимаем максимум из код-ревью и спасаем нервные клетки

Большинство разработчиков не любит проводить код-ревью. Все понимают, что это важно и нужно, могут с ходу назвать три-четыре причины необходимости этого процесса. Но раз за разом они всячески избегают его. Или участвуют в нём неэффективно.

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

Статья: https://habr.com/ru/companies/surfstudio/articles/892304/
Платформа: разработка
1
Ликбез по разрешениям в Android

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

Статья: https://habr.com/ru/companies/otus/articles/892020/
Платформа: Android
1
Demeter: реактивное профилирование Android-приложений

Наша команда часто сталкивалась с проблемами при поиске «узких мест» в производительности приложения. Мы пробовали различные инструменты профилирования, но все они требовали слишком много времени на сбор метрик, анализ и фильтрацию нужных данных. Чтобы решить эту проблему, мы разработали собственное решение, которое сочетает скорость анализа и простоту поиска проблем. Мы создали библиотеку Demeter, которую легко интегрировать в отладочную версию Android‑приложения. Она позволяет получать отчёты о производительности во время использования приложения и переходов между экранами. Такую сборку можно передать команде тестирования, а затем проанализировать отчёты и изучить изменения.

Статья: https://habr.com/ru/companies/yandex/articles/891592/
Платформа: Android
1
5 причин плохого настроения. История одного Flutter-проекта, который заставил нас поломать голову

В общем и целом я насчитал пять компонентов проекта, над которыми нам пришлось крепко поразмышлять:

1. Видеоплеер. Фоновое изображение на главном экране представляло собой видео. Бэкенд нам его присылал в 4K, и далеко не каждый телефон справлялся с обработкой такого тяжеловеса.
2. Модальные окна. Они были практически везде — клиент хотел, чтобы всё красиво поднималось и опускалось. Из-за этого видео в фоне (см. пункт 1) играло всегда. Так что модальные окна были большой проблемой.
3. Всплывающие подсказки. Мы видели приложения, в которых много всплывающих подсказок. Но тут их было больше, чем много — пользователям должно было быть максимально комфортно. К тому же затемнение экрана не всегда работало корректно — пришлось решать.
4. Архитектура. Проект разрабатывался в сжатые сроки, и поэтому в архитектуре учли не всё. С самого начала было сложно предусмотреть, что ждет приложение в будущем и нужно ли будет добавлять в него новые фичи.
5. Офлайн-режим. Сюда входит и кэширование страниц, и сохранение каких-то справочников в базе данных. Изначально мы выбрали для реализации Isar — NoSQL базу данных. Но позже поняли, что нам придется от него отказаться.

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

Статья: https://habr.com/ru/companies/agima/articles/892278/
Платформа: Flutter
Shader Ripple Effect Playground - библиотека шейдерных эффектов AGSL для Android. Есть эффект пульсации, реагирующий на касание, непрерывная волновая анимация с настраиваемыми параметрами, переход раскрытия содержимого с эффектом пульсации - все с настрйоками. Полная совместимость с любым элементом пользовательского интерфейса Jetpack Compose, простая интеграция с минимальным количеством кода.

Shader Ripple Effect Playground на GitHub: https://github.com/mejdi14/Android-AGSL-Shader-Playground
Платформа: Android
⭐️: 215
1
📺 Видео и подкасты за неделю на @AppFiles

Дивный мир Swift Concurrency
(iOS Ru) Задачи с собеседований: Leetcode — Недостающее число
(iOS Ru) Why The Composable Architecture is Overrated
(iOS En) Animated Async Button With Custom Spinner Using SwiftUI
(iOS En) Master SwiftUI Layout With EASY Spacing And Padding
(iOS En) ChatGPT Pro for iOS Devs: HONEST Review
(iOS En) Create Custom Tab Bars in SwiftUI – An Alternative to Default Tabs
(iOS En) VisionOS Style Menus for iOS Using SwiftUI
(And Ru) Кастомные лейауты в Jetpack Compose
(And En) Full 2025 Kotlin Crash Course For Beginners
(And En) Create Boilerplate Files With ONE Click With Multi-File Templates In Android Studio
(And En) Mastering UI Events and States in Jetpack Compose
(And En) Parsing XML namespaces and trying not to lose our minds
(Dev Ru) Javanoscript для бэкенда – отличная идея: Node.js, NPM, Typenoscript
(Dev En) Building MCP with Kotlin: Claude Desktop Controls My Smart Home Lights

Что было год назад:

(iOS Ru) Разработка под Apple Vision Pro
(iOS Ru) Как встроить в TextField индикатор загрузки и кастомную View
(And Ru) Мапим данные из domain в ui модуль в многомодульном проекте
(Crs Ru) Рецепт приготовления кроссплатформенного мобильного видеоредактора
(Dev Ru) Собеседование по System Design: проектируем клон Авито
(Dev Ru) Демистифицируем машинное обучение – из разработчика в ML-инженеры
(Dev Ru) Программисты не нужны
Please open Telegram to view this post
VIEW IN TELEGRAM