Как мы ускоряли Android-сборку «селлера»
Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание.
Статья: https://habr.com/ru/companies/ozontech/articles/894364/
Платформа: Android
Скорость сборки проекта напрямую влияет на time to market продукта и (внезапно) удовольствие от процесса разработки. Если каких-то 50 лет назад время компиляции могло доходить до нескольких дней, и это считалось нормальным, то сейчас даже лишняя пара минут сборки проекта в Android Studio может заставить понервничать. Чтобы сберечь здоровье себе и CI, скорости сборки проекта нужно уделять внимание.
Статья: https://habr.com/ru/companies/ozontech/articles/894364/
Платформа: Android
Dagger 2 и жизненный цикл
У нас было приложение‑монолит с главным ComponentManager, где строился весь граф зависимостей. Файл был немаленький. Также во всех фрагментах необходимо было вручную создавать DI‑компонент и следить за его чисткой, а разработчики то и дело забывали про это или чистили неправильно.
Потом началась кампания по выносу фичёвого кода в отдельные модули. С каждым новым модулем всё чаще выстреливала циклическая зависимость, и приходилось писать обвязку (прокси‑класс). Главный ComponentManager оставался связующим звеном между фичёвыми модулями, через которое происходил переброс зависимостей, так что он всё ещё был большим и сложным. Иногда рефакторинг, связанный с перемещением кода из одного модуля в другой, вызывал многочасовую борьбу за нахождение пути решения проблемы «почему сборка никак не соберётся?». Иногда, чтобы доставить зависимость из одного модуля в другой, нужно было строить сложные конструкции, как при игре в «Твистер».
Вся эта увлекательная и мучительная игра продолжалась довольно долго, пока на помощь, как бы странно это ни звучало, не пришёл новомодный Compose. Тогда мы только начинали его осваивать, и я решил сделать небольшой pet‑проект, состоящий из двух экранов, с применением Compose для его изучения. Естественно, в этот проект подключил всё самое современное из библиотек, включая Dagger 2. Как обычно, немного повозившись с настройкой DI, в голове всплыла вся та боль, которую мы испытываем в нашем проекте.
Статья: https://habr.com/ru/companies/sberbank/articles/893856/
Платформа: Android
У нас было приложение‑монолит с главным ComponentManager, где строился весь граф зависимостей. Файл был немаленький. Также во всех фрагментах необходимо было вручную создавать DI‑компонент и следить за его чисткой, а разработчики то и дело забывали про это или чистили неправильно.
Потом началась кампания по выносу фичёвого кода в отдельные модули. С каждым новым модулем всё чаще выстреливала циклическая зависимость, и приходилось писать обвязку (прокси‑класс). Главный ComponentManager оставался связующим звеном между фичёвыми модулями, через которое происходил переброс зависимостей, так что он всё ещё был большим и сложным. Иногда рефакторинг, связанный с перемещением кода из одного модуля в другой, вызывал многочасовую борьбу за нахождение пути решения проблемы «почему сборка никак не соберётся?». Иногда, чтобы доставить зависимость из одного модуля в другой, нужно было строить сложные конструкции, как при игре в «Твистер».
Вся эта увлекательная и мучительная игра продолжалась довольно долго, пока на помощь, как бы странно это ни звучало, не пришёл новомодный Compose. Тогда мы только начинали его осваивать, и я решил сделать небольшой pet‑проект, состоящий из двух экранов, с применением Compose для его изучения. Естественно, в этот проект подключил всё самое современное из библиотек, включая Dagger 2. Как обычно, немного повозившись с настройкой DI, в голове всплыла вся та боль, которую мы испытываем в нашем проекте.
Статья: https://habr.com/ru/companies/sberbank/articles/893856/
Платформа: Android
👍2
Неожиданно легко допустить утечку памяти в вашем приложении, даже не осознавая этого. Если утечки памяти остаются без внимания, они могут увеличить объем занимаемой памяти вашего приложения, что приводит к более быстрому завершению работы приложения в фоновом режиме. В тяжелых случаях ваше приложение может быть завершено даже во время работы на переднем плане.
Но проблема не только в использовании памяти. Утечка объектов может привести к неожиданным и скрытым ошибкам, которые гораздо сложнее отследить.
DriftCheck - это легковесная библиотека, которая поможет вам обнаружить циклы удержания и забытые ссылки, привязав ваши объекты к четко определенному жизненному циклу представлений UIKit/SwiftUI.
DriftCheck на GitHub: https://github.com/chrsmys/DriftCheck
Платформа: iOS
⭐️: 22
Но проблема не только в использовании памяти. Утечка объектов может привести к неожиданным и скрытым ошибкам, которые гораздо сложнее отследить.
DriftCheck - это легковесная библиотека, которая поможет вам обнаружить циклы удержания и забытые ссылки, привязав ваши объекты к четко определенному жизненному циклу представлений UIKit/SwiftUI.
DriftCheck на GitHub: https://github.com/chrsmys/DriftCheck
Платформа: iOS
⭐️: 22
❤1
Как правильно организовать проект c модульной архитектурой в iOS-разработке
Модульный подход не просто разделяет приложение на более управляемые части, но и закладывает возможность многократного использования кода в других проектах, позволяет организовать разработку и тестирование функциональных блоков независимо от основного приложения.
В этом материале я расскажу про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для ее внедрения и применения в наших проектах.
Статья: https://habr.com/ru/companies/ru_mts/articles/892444/
Платформа: iOS
Модульный подход не просто разделяет приложение на более управляемые части, но и закладывает возможность многократного использования кода в других проектах, позволяет организовать разработку и тестирование функциональных блоков независимо от основного приложения.
В этом материале я расскажу про ключевые моменты модульной архитектуры в iOS-приложениях, инструментах для ее внедрения и применения в наших проектах.
Статья: https://habr.com/ru/companies/ru_mts/articles/892444/
Платформа: iOS
👍1
Tack Android - это современное приложение-метроном для Android с красивым интерфейсом, которое имеет все функции, необходимые для отработки музыкального произведения. Также доступно отдельное приложение Wear OS с тактильными битами и множеством опций прямо на вашем запястье.
Tack Android на GitHub: https://github.com/patzly/tack-android
Платформа: Android
⭐️: 261
Tack Android на GitHub: https://github.com/patzly/tack-android
Платформа: Android
⭐️: 261
❤1
Трекер поездов и погоды с Raspberry Pi и E-Ink
Разработчик Сэм Бронер создал проект с использованием Raspberry Pi и E-Ink дисплея для отслеживания расписания поездов и прогноза погоды. Устройство отображает время прибытия ближайших поездов линий F и G нью-йоркского метро, а также текущую дату, время и погодные условия. Дисплей разделен на четыре секции: заголовок с датой и временем, трекер поездов, информация о погоде и "погодная шкала" на следующие 12 часов.
Аппаратная часть проекта включает 9,7-дюймовый E-Ink дисплей с разрешением 1200x825 пикселей, подключенный к Raspberry Pi 4b. Для программирования использовалась модульная архитектура, состоящая из движка отображения, системы компоновки, сервисов данных и контроллера приложения. Особое внимание уделено оптимизации обновления дисплея и обеспечения стабильности работы.
Подробные инструкции, список необходимых компонентов и исходный код доступны в репозитории на GitHub.
Статья: https://sambroner.com/posts/raspberry-pi-train
Платформа: разработка
Разработчик Сэм Бронер создал проект с использованием Raspberry Pi и E-Ink дисплея для отслеживания расписания поездов и прогноза погоды. Устройство отображает время прибытия ближайших поездов линий F и G нью-йоркского метро, а также текущую дату, время и погодные условия. Дисплей разделен на четыре секции: заголовок с датой и временем, трекер поездов, информация о погоде и "погодная шкала" на следующие 12 часов.
Аппаратная часть проекта включает 9,7-дюймовый E-Ink дисплей с разрешением 1200x825 пикселей, подключенный к Raspberry Pi 4b. Для программирования использовалась модульная архитектура, состоящая из движка отображения, системы компоновки, сервисов данных и контроллера приложения. Особое внимание уделено оптимизации обновления дисплея и обеспечения стабильности работы.
Подробные инструкции, список необходимых компонентов и исходный код доступны в репозитории на GitHub.
Статья: https://sambroner.com/posts/raspberry-pi-train
Платформа: разработка
❤1
Конкатенация против интерполяции текста в SwiftUI
можно сказать, что хотя конкатенация текста хорошо работает для простых сценариев стилизации, лучше всего всегда отдавать предпочтение интерполяции для локализованного текста, чтобы обеспечить грамматически правильный и естественный перевод. В реальных проектах также рекомендуется включать комментарии, особенно для строк с определителями формата, чтобы переводчики понимали, что представляет собой каждый заполнитель.
Статья: https://apptractor.ru/info/articles/konkatenatsiya-protiv-interpolyatsii-teksta-v-swiftui.html
Платформа: iOS
можно сказать, что хотя конкатенация текста хорошо работает для простых сценариев стилизации, лучше всего всегда отдавать предпочтение интерполяции для локализованного текста, чтобы обеспечить грамматически правильный и естественный перевод. В реальных проектах также рекомендуется включать комментарии, особенно для строк с определителями формата, чтобы переводчики понимали, что представляет собой каждый заполнитель.
Статья: https://apptractor.ru/info/articles/konkatenatsiya-protiv-interpolyatsii-teksta-v-swiftui.html
Платформа: iOS
👍1
Документируем код с помощью DocC
В настоящее время Apple предоставляет нам компилятор документации под названием DocC. DocC преобразует текст на основе Markdown в расширенную документацию для фреймворков и пакетов Swift. Сегодня мы изучим основы DocC, что позволяет нам предоставлять надлежащую документацию для нашего кода.
Статья: https://apptractor.ru/info/articles/docc.html
Платформа: iOS
В настоящее время Apple предоставляет нам компилятор документации под названием DocC. DocC преобразует текст на основе Markdown в расширенную документацию для фреймворков и пакетов Swift. Сегодня мы изучим основы DocC, что позволяет нам предоставлять надлежащую документацию для нашего кода.
Статья: https://apptractor.ru/info/articles/docc.html
Платформа: iOS
👍2
Профилирование и бенчмаркинг Android-сборок
Оптимизация времени сборки — важный аспект эффективной разработки. В статье на ProAndroidDev рассмотрены инструменты для анализа и улучшения производительности сборки Gradle.
• Build Analyzer в Android Studio показывает длительность выполнения задач и предлагает рекомендации по оптимизации.
• Профилирование Gradle (--profile) создаёт локальный HTML-отчет с детальным разбором всех процессов.
• Gradle Scan (--scan) формирует удаленный отчёт, где можно увидеть влияние кеширования, зависимостей и сетевых операций.
• Gradle Profiler позволяет тестировать разные сценарии сборки, оценивать влияние изменений кода, ресурсов и макетов.
Использование этих инструментов поможет ускорить процесс разработки и выявить узкие места в вашем проекте.
Статья: https://proandroiddev.com/profile-benchmark-android-builds-b572948c5be5
Платформа: Android
Обязательно поставьте 👍, если хотите эту статью на русском.
Оптимизация времени сборки — важный аспект эффективной разработки. В статье на ProAndroidDev рассмотрены инструменты для анализа и улучшения производительности сборки Gradle.
• Build Analyzer в Android Studio показывает длительность выполнения задач и предлагает рекомендации по оптимизации.
• Профилирование Gradle (--profile) создаёт локальный HTML-отчет с детальным разбором всех процессов.
• Gradle Scan (--scan) формирует удаленный отчёт, где можно увидеть влияние кеширования, зависимостей и сетевых операций.
• Gradle Profiler позволяет тестировать разные сценарии сборки, оценивать влияние изменений кода, ресурсов и макетов.
Использование этих инструментов поможет ускорить процесс разработки и выявить узкие места в вашем проекте.
Статья: https://proandroiddev.com/profile-benchmark-android-builds-b572948c5be5
Платформа: Android
Обязательно поставьте 👍, если хотите эту статью на русском.
❤1
VDAnimation предоставляет мощный, декларативный способ создания сложных анимаций в SwiftUI с минимальным кодом. Создавайте анимации последовательно, параллельно, с настраиваемым временем и кривыми.
VDAnimation на GitHub: https://github.com/dankinsoid/VDAnimation
Платформа: iOS
⭐️: 20
VDAnimation на GitHub: https://github.com/dankinsoid/VDAnimation
Платформа: iOS
⭐️: 20
Как мы сделали дизайн-систему для мобильных устройств и TV
Наша цель — показать концепцию дизайн-системы, поэтому в статье мы сознательно опустили некоторые технические нюансы, не влияющие на суть. Например, мы не затрагиваем оптимизацию рекомпозиций, а в примерах компонентов вы не найдете Modifier. Используйте представленный код как отправную точку для собственных решений, а не как финальную реализацию.
Статья: https://habr.com/ru/companies/vk/articles/896134/
Платформа: Android
Наша цель — показать концепцию дизайн-системы, поэтому в статье мы сознательно опустили некоторые технические нюансы, не влияющие на суть. Например, мы не затрагиваем оптимизацию рекомпозиций, а в примерах компонентов вы не найдете Modifier. Используйте представленный код как отправную точку для собственных решений, а не как финальную реализацию.
Статья: https://habr.com/ru/companies/vk/articles/896134/
Платформа: Android
BundledSQLiteDriver: новый взгляд на SQLite в Android и Kotlin Multiplatform
BundledSQLiteDriver из библиотеки androidx.sqlite — это специальная сборка встраиваемой СУБД SQLite от команды разработчиков Android Jetpack, предназначенная для использования в Kotlin Multiplatform проектах. В этой статье мы рассмотрим особенности её использования по сравнению со встроенным в Android вариантом SQLite.
Статья: https://habr.com/ru/articles/896794/
Платформа: Android
BundledSQLiteDriver из библиотеки androidx.sqlite — это специальная сборка встраиваемой СУБД SQLite от команды разработчиков Android Jetpack, предназначенная для использования в Kotlin Multiplatform проектах. В этой статье мы рассмотрим особенности её использования по сравнению со встроенным в Android вариантом SQLite.
Статья: https://habr.com/ru/articles/896794/
Платформа: Android
❤1
Вы уже знаете, как настроить Gradle для работы с мультипроектными/мультимодульными сборками с Kotlin DSL и Spring Dependency Management? Gradle, Kotlin, Spring Skeleton - пример, в котором автор абстрагировал самые важные логические компоненты и упаковал их в отдельные модули buildSrc. Это делает сборку очень модульной и также очень понятной.
Gradle, Kotlin, Spring Skeleton на GitHub: https://github.com/mrclrchtr/gradle-kotlin-spring
Платформа: Android
⭐️: 135
Gradle, Kotlin, Spring Skeleton на GitHub: https://github.com/mrclrchtr/gradle-kotlin-spring
Платформа: Android
⭐️: 135
👍2
Google AI Studio: макеты Figma -> iOS приложение на Gemini 2.5 Experimental
Мне случайно попалось задание с собеседования 2-х годичной давности на позицию "iOS разработчик" , в котором требовалось создать iOS приложения для бронирования номера в Отеле на основе макетов экранов из Figma, в которых использовалась "карусель" из фото.
Я решила попробовать использовать ИИ для разработки такого iOS приложения по макетам из Figma. Прямо скажем, что текст на прототипах экранов не очень отчетливо виден, так что ИИ предстоит его сначала прочитать, а уже потом создать iOS приложение.
Статья: https://habr.com/ru/articles/896498/
Платформа: iOS
Мне случайно попалось задание с собеседования 2-х годичной давности на позицию "iOS разработчик" , в котором требовалось создать iOS приложения для бронирования номера в Отеле на основе макетов экранов из Figma, в которых использовалась "карусель" из фото.
Я решила попробовать использовать ИИ для разработки такого iOS приложения по макетам из Figma. Прямо скажем, что текст на прототипах экранов не очень отчетливо виден, так что ИИ предстоит его сначала прочитать, а уже потом создать iOS приложение.
Статья: https://habr.com/ru/articles/896498/
Платформа: iOS
👍1
Как я писал проводник для Wear OS и что из этого вышло
Однажды настал момент, когда мне было необходимо поработать с файлами на своих часиках. Я просто хотел создать папку, накидать туда фоточек со шпорами... классика, не правда ли?
Открыв Google Play я ожидал увидеть обилие разнообразного программного обеспечения, которое позволит мне это сделать. Каково же было моё удивление, когда я увидел всего два приложения для управления файлами на часах...
Статья: https://habr.com/ru/articles/897170/
Платформа: Android
Однажды настал момент, когда мне было необходимо поработать с файлами на своих часиках. Я просто хотел создать папку, накидать туда фоточек со шпорами... классика, не правда ли?
Открыв Google Play я ожидал увидеть обилие разнообразного программного обеспечения, которое позволит мне это сделать. Каково же было моё удивление, когда я увидел всего два приложения для управления файлами на часах...
Статья: https://habr.com/ru/articles/897170/
Платформа: Android
"ИИ-агенты для начинающих" - бесплатный курс Microsoft
У Microsoft появился еще один бесплатный курс по ИИ для самостоятельного обучения, предназначенный для новичков. Этот курс состоит из 10 уроков, которые охватывают основы создания ИИ-агентов.
Новость: https://apptractor.ru/learn/ai-agents-for-beginners.html
Платформа: обучение
У Microsoft появился еще один бесплатный курс по ИИ для самостоятельного обучения, предназначенный для новичков. Этот курс состоит из 10 уроков, которые охватывают основы создания ИИ-агентов.
Новость: https://apptractor.ru/learn/ai-agents-for-beginners.html
Платформа: обучение
•
(iOS Ru) Одна билд-система, чтоб править всеми•
(iOS Ru) Влияние Swift Runtime на производительность приложения•
(iOS Ru) Разрабатываем CLI-инструменты на Swift•
(iOS En) Disable Interactive Dismissal of Navigation Zoom Transition•
(iOS En) Localizing Apple UI in 2025•
(iOS En) Monitoring iOS apps•
(iOS En) SwiftUI in UIKit?! Watch Me Inject Animations into a UIKit App•
(iOS En) SwiftUI Animation Bugs? Here's How I Fixed Them!•
(iOS En) Animated Dialogs Like Family App Using SwiftUI•
(iOS En) Creating an Over Top View in SwiftUI: A Unique Way to Present Edit Views•
(iOS En) Swift Protocols - An Introduction•
(And Ru) Как мы разработали свой фреймворк SingleState-навигации на Android•
(And Ru) Танцы вокруг дерева семантики: UI-тесты Compose-экранов•
(And Ru) Многомодульность — ответы на вопросы с экспертами•
(And En) Enhancing app performance in Android•
(And En) Anatomy of the SDK Runtime•
(And En) No more Manual Koin Initialization - New Context Binding is Awesome•
(Crs Ru) Kotlin в GitHub Actions. Расширяем горизонты KMP•
(Crs Ru) Как я перестал бояться и полюбил компилятор Dart•
(Crs En) Using Platform-Specific APIs in KMP Apps•
(Dev Ru) Avito UX meetup: взаимодействие, метрики и мемы•
(Dev Ru) Полный обзор новой операционной системы HarmonyOS Next. Получилось ли?•
(Dev Ru) Профессия: cистемный аналитик•
(Dev En) Full 2025 Backend Dev Crash Course for Beginners With Spring Boot (Kotlin, JWT Auth, MongoDB)•
(Dev En) Code DeepSeek V3 From Scratch in Python - Full Course•
(Dev En) How to Survive in 2025 Tech Job Market?Что было год назад:
•
(And Ru) Как работает Android Work Profile•
(And Ru) Разбор кода магазина приложений•
(And Ru) Опыт, Java vs Kotlin и работа со списками•
(Crs Ru) Как Compose Multiplatform for iOS может убить Flutter?•
(Dev Ru) Открытое алгоритмическое собеседование•
(Dev Ru) Как разрабатывать Яндекс Маркет, обеспечивать качество и работать с BDUI•
(Dev Ru) Собеседование продуктового аналитика в АвитоPlease open Telegram to view this post
VIEW IN TELEGRAM
Визуально-ориентированная шпаргалка по алгоритмам
Обзор некоторых ключевых алгоритмов, используемых в реальном мире.
Статья: https://photonlines.substack.com/p/visual-focused-algorithms-cheat-sheet
Платформа: алгоритмы
Обзор некоторых ключевых алгоритмов, используемых в реальном мире.
Статья: https://photonlines.substack.com/p/visual-focused-algorithms-cheat-sheet
Платформа: алгоритмы
👍1
SmartCodable выводит анализ данных Swift на новый уровень, дополняя собственный Codable от Apple гибкостью и отказоустойчивостью, которые готовы к использованию в проде. Там, где стандартный Codable не справляется с реальными данными, SmartCodable обеспечивает надежный синтаксический анализ с минимальным количеством шаблонного кода.
Ключевые преимущества:
• На 30% лучше производительность
• Более стабильная и безопасная реализация
• Встроенная диагностика ошибок
• Превосходная комплексная обработка данных
SmartCodable на GitHub: https://github.com/intsig171/SmartCodable
Платформа: iOS
⭐️: 632
Ключевые преимущества:
• На 30% лучше производительность
• Более стабильная и безопасная реализация
• Встроенная диагностика ошибок
• Превосходная комплексная обработка данных
SmartCodable на GitHub: https://github.com/intsig171/SmartCodable
Платформа: iOS
⭐️: 632
Воспроизведение и редактирование видео с AVFoundation. Часть 1. Ассеты простые
C 2023 по 2025 год мы с командой развивали модуль создания контента в одном из приложений по просмотру коротких видео в России. Я присоединился к ней в середине пути и успел глубоко изучить как сам фреймворк AVFoundation, так и задачи, которые с помощью него можно решать. Хочу поделиться полученным опытом.
Представляю первую статью из цикла, который посвящён идеям воспроизведения и редактирования медиа с использованием AVFoundation.
Цикл поможет программистам без опыта работы с AVFoundation получить минимальную теоретическую базу (подчеркну – не практическую, для этого в светлом будущем я планирую выпустить отдельный цикл), чтобы создавать свои видеоплееры и видеоредакторы. В некоторых разделах я буду кратко упоминать ключевые моменты, а в других — подробно разбирать тонкости.
Статья: https://habr.com/ru/articles/897008/
Платформа: iOS
C 2023 по 2025 год мы с командой развивали модуль создания контента в одном из приложений по просмотру коротких видео в России. Я присоединился к ней в середине пути и успел глубоко изучить как сам фреймворк AVFoundation, так и задачи, которые с помощью него можно решать. Хочу поделиться полученным опытом.
Представляю первую статью из цикла, который посвящён идеям воспроизведения и редактирования медиа с использованием AVFoundation.
Цикл поможет программистам без опыта работы с AVFoundation получить минимальную теоретическую базу (подчеркну – не практическую, для этого в светлом будущем я планирую выпустить отдельный цикл), чтобы создавать свои видеоплееры и видеоредакторы. В некоторых разделах я буду кратко упоминать ключевые моменты, а в других — подробно разбирать тонкости.
Статья: https://habr.com/ru/articles/897008/
Платформа: iOS