AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.13K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Циклы в Swift: скрытые трюки для повышения производительности, которые сделают ваш код в 10 раз быстрее

В начале своего пути в программировании я думал, что циклы — это просто… циклы. Знаете, те самые базовые for и while, которые изучают на первых уроках? Как же я ошибался.

Только когда я начал отлаживать кошмарное приложение, которое тратило больше трёх секунд на отрисовку простого списка, я понял, что система циклов Swift гораздо сложнее, чем показывают большинство руководств. Тот самый невинный цикл for-in, который я везде копировал? Да, он был узким местом.

Вот в чём дело: Swift предоставляет нам три основных типа циклов, но знание того, когда использовать каждый из них, может радикально повлиять на производительность вашего приложения. Мы говорим о разнице между плавной прокруткой со скоростью 60 кадров в секунду и тем, как пользователи в ярости удаляют ваше приложение.

Статья: https://apptractor.ru/info/articles/swift-loops.html
Платформа: iOS
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
SnapNotify - Snackbar для Jetpack Compose

SnapNotify - легковесная, потокобезопасная библиотека Snackbar для Jetpack Compose с предельно простой настройкой. Показывайте снекбары из любого места с красивой стилизацией, управлением очередью и опциональной интеграцией с Hilt. Полностью на Kotlin.

SnapNotify на GitHub: https://github.com/ivamsi/snapnotify
Платформа: Android
⭐️: 18
👍1
Превратите свои фотографии в миниатюрное волшебство с помощью Nano Banana

В статье разработчик Питер Фризе подробно описывает, как интегрировать новую модель генерации изображений от Google, известную как "Nano Banana" (официальное название gemini-2.5-flash-image-preview), в iOS-приложения. Автор объясняет, что с помощью Firebase AI Logic можно безопасно использовать возможности Gemini для создания и редактирования изображений прямо в приложении, не храня на устройстве пользователя API-ключи. В качестве примера он создает приложение для генерации миниатюрных диорам комнат, демонстрируя, как с помощью нескольких строк кода на Swift можно превращать текстовые описания и существующие фотографии в новые уникальные изображения.

Статья: https://peterfriese.dev/blog/2025/gemini-nano-banana-ios/
Платформа: iOS
👍1
Вопрос на 16 КБ: почему так важны изменения в памяти Android и как подготовить приложение

Годами Android управлял памятью блоками по 4 КБ. Но с появлением современных устройств с большим объёмом оперативной памяти это стало неэффективным. С 1 ноября 2025 года Google Play требует, чтобы все новые приложения и обновления для Android 15 (API 35) или выше были совместимы с этим новым размером страницы в 16 КБ.

Если ваше приложение полностью написано на Kotlin/Java, вы, вероятно, можете расслабиться. Но если ваше приложение использует нативный код (C/C++) — а вы удивитесь, как много таких приложений используют благодаря сторонним SDK, — вам нужно действовать прямо сейчас.

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

Статья: https://apptractor.ru/develop/16kb-question.html
Платформа: Android
👍1
StepsShare - трекер шагов на Compose Multiplatform

StepsShare - cовременное кроссплатформенное приложение для отслеживания шагов, созданное на Kotlin Multiplatform и Compose Multiplatform. Отслеживайте количество шагов за день, ставьте персональные цели и отслеживайте свой прогресс на устройствах Android и iOS.

Внутри, кроме KMP и CMP, Material Design 3 с анимациями, MVVM, Compose Navigation, локальное хранение данных в Room, Koin, Compose Charts, Kotlinx Serialization.

StepsShare на GitHubhttps://github.com/tamtom/StepsShare-oss
Платформа: кроссплатформа
⭐️: 78
👍1
Как я научил Jetpack Compose показывать рекомпозиции в реальном времени

Представьте, вы открываете пул‑реквест и взгляд цепляется за знакомые паттерны: нестабильный параметр в Composable‑функции, remember без ключа, применение трансформаций на Layout‑фазе. Сразу хочется написать комментарий‑лекцию о том, почему это ударит по производительности и почему лучше так не делать.

Вот только объяснения отнимают время и не всегда наглядно доносят суть проблемы. Особенно это актуально для новичков, которым сложно сопоставить абстракции с реальным поведением UI. А ведь для сложных асинхронных штук вроде RxJava или корутин есть визуализаторы — RxMarbles и FlowMarbles, а для самой частой головной боли в Compose до сих пор нет. Вот бы вместо стены текста просто кинуть ссылку со словами: «Смотри, вот что твой код делает на самом деле».

В этой статье я расскажу о разработке собственного приложения, которое в реальном времени визуализирует рекомпозиции. Чтобы заставить его работать, пришлось залезть под капот компилятора Kotlin и подружиться с его внутренними API: FIR и IR.

Статья: https://habr.com/ru/companies/yandex/articles/945276/
Платформа: Android
2
Как Swift Runtime влияет на производительность iOS-приложений

Для больших iOS-приложений, написанных на Swift, понимание работы Swift Runtime и его влияния на производительность — важный навыĸ разработчиĸов. Swift Runtime при исполнении ĸода отвечает за фундаментальные вещи языĸа Swift: управление памятью и систему типов в рантайме.

В статье сосредоточимся на механизмах приведения типов и создания generic-типов внутри Swift Runtime и рассмотрим один ĸонĸретный метод, ĸоторый является узĸим местом в производительности приложения. Разберем примеры ĸода, демонстрирующие, ĸогда и почему этот метод вызывается, ĸаĸово его влияние на отзывчивость приложения и ĸаĸие стратегии использовать для смягчения негативного воздействия.

Статья: https://habr.com/ru/companies/tbank/articles/947486/
Платформа: iOS
👍2
ImmutableData - простое управление состояниями для SwiftUI

ImmutableData - новый подход к архитектуре приложений для SwiftUI, основанный на более чем десятилетнем опыте работы с декларативными UI-фреймворками. Вдохновленная принципами Flux и Redux, архитектура использует современные возможности Swift, чтобы сделать ваш код чище, быстрее и проще для понимания. Вместо традиционного императивного и объектно-ориентированного программирования, авторы делают ставку на декларативное мышление, функциональный стиль и неизменяемые (immutable) данные. В основе всего — однонаправленный поток данных, который обеспечивает строгое разделение ответственности: действия декларируют, что произошло; слой состояния реагирует на эти действия, изменяя данные; а представления (views) — просто отображают обновлённое состояние.

Это строгое разделение позволяет избавиться от таких проблем, как двусторонняя привязка данных и "спагетти-код", вызванный изменяемыми объектами. Архитектура ImmutableData делает код надёжнее, его легче тестировать, а новичкам — проще в нём разобраться. Пакет предоставляет три основных модуля: ImmutableData для управления данными, ImmutableUI для работы с представлениями SwiftUI и AsyncSequenceTestUtils для тестирования. Чтобы начать, достаточно добавить пакет в свой проект через Swift Package Manager. Например, для простого счётчика вам нужно определить состояние, действия и редьюсер, а затем использовать @ImmutableUI.Selector и @ImmutableUI.Dispatcher, чтобы связать ваш UI с глобальным состоянием приложения. Это позволяет создавать масштабируемые и легко поддерживаемые приложения.

ImmutableData на GitHub: https://github.com/Swift-ImmutableData/ImmutableData
Платформа: iOS
⭐️: 37
🤔1
Андроид всё еще не готов к RAW-видео

Сегодня вам предстоит увлекательное путешествие по стыку технологий, кода и технических решений, которые и расскажут вам то, о чем адепты съемки мобильного RAW-видео предпочитают не говорить.

Я разберу лишь основные моменты, которые и убедили меня в том, что эффективная съемка RAW‑видео на Андроид на сегодняшний день невозможна без »костылей» и ухищрений. Костылей, которые нивелируют все те преимущества RAW, которые так жаждут получить на своих смартфонах видеографы. Ухищрений, которые по итогу делают менее ресурсоемкие форматы записи видео на смартфоне даже более эффективными и качественными, чем RAW.

Да, будет интересно!

Статья: https://habr.com/ru/articles/947578/
Платформа: Android
To Do - ведение дел на Jetpack Compose

To Do - простое приложение для ведения дел на Jetpack Compose с настраиваемыми темами Material Design 3.

To Do на GitHub: https://github.com/Super12138/ToDo
Платформа: Android
⭐️: 41
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI: Горизонтальный пикер/слайдер/линейка

Если стандартные слайдеры уже надоели, посмотрите, как создать кастомный горизонтальный Dial Picker — компонент, похожий на линейку или шкалу настройки.

В статье автор подробно разбирает создание такого элемента с нуля.

Статья: https://levelup.gitconnected.com/swiftui-horizontal-dial-picker-slider-ruler-8b3681fc9a00
Платформа: iOS

Поставь 👍, если хотите перевод на русский.
👍4
Все, что вы хотели знать о флагах в эмодзи (но не знали, что вам это нужно)

Допустим, вы создаете аналитическое приложение и вам нужен простой способ обозначить местоположение аналитического события. Если вы, как и я, подумали: «Да, флажки эмодзи — забавный способ показать страны», то наверняка сразу же начали создавать такой словарь

let emojiFlags = [
"AU": "🇦🇺",
"BE": "🇧🇪",
"BR": "🇧🇷",
"BS": "🇧🇸",
...
]

Но подождите. Оказывается, есть гораздо более простой способ сделать это (ну как «простой»… с программной точки зрения).

Статья: https://apptractor.ru/info/articles/vse-chto-vy-hoteli-znat-o-flagah-v-emodzi-no-ne-znali-chto-vam-eto-nuzhno.html
Платформа: iOS
Foqos - блокировка приложений с помощью NFC-метки или QR-кода

Foqos поможет вам одним касанием отключить самые отвлекающие приложения — с помощью NFC-меток или QR-кодов — чтобы вы могли сосредоточиться и выработать полезные цифровые привычки. Это бесплатное приложение с открытым исходным кодом, которое является альтернативой Brick, Bloom, Unpluq, Blok и другим.

Foqos на GitHub: https://github.com/awaseem/foqos
Платформа: iOS
⭐️: 172
Строки в Swift

Сегодня поговорим о теме, которая вроде бы знакома каждому разработчику, но при этом часто остаётся в тени. Речь пойдёт о строках в Swift.

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

Статья: https://habr.com/ru/articles/948870/
Платформа: iOS
Расширяем возможности GitHub Copilot для IDEA или как писать unit-тесты в пару кликов

В этой статье расскажу, как мне удалось «влезть» в плагин GitHub Copilot, обойти ограничения проприетарного инструмента и научить его помогать писать unit-тесты буквально в пару кликов. Думаю это будет полезно тем, кто хочет узнать как влезать в работу сторонних плагинов, ускорить написание тестов и тем, кто ищет способы прокачать работу с ИИ-помощниками в своих проек

Статья: https://habr.com/ru/companies/cian/articles/920328/
Платформа: Android
Горизонтальный селектор/слайдер/линейка на SwiftUI

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

В интернете есть несколько решений. Однако ни одно из них не делало того, чего я хочу, и не было реализовано так, как мне нравится. И, как вы, возможно, уже знаете меня, если мне не понравится то, что есть, я просто ДЕЛАЮ ЭТО САМ.

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

Давайте посмотрим.

Статья: https://apptractor.ru/info/articles/gorizontalnyy-selektor-slayder-lineyka-na-swiftui.html
Платформа: iOS
ADB Keep Screen On - включенный экран при работе с ADB

ADB Keep Screen On - это простая утилита для командной строки, написанная на Go, которая предотвращает переход устройства Android в спящий режим при подключении через ADB по USB.

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

ADB Keep Screen On на GitHub: https://github.com/nisrulz/adb-keep-screen-on
Платформа: Android
⭐️: 11
Как Shopify перевела свои крупнейшие приложения на новую архитектуру React Native

Команда JavaScript for Devs подготовила перевод кейса Shopify о миграции их крупнейших приложений на новую архитектуру React Native. Результат впечатляет: еженедельные релизы не остановились, стабильность сохранилась, а производительность выросла.

Статья: https://habr.com/ru/articles/949002/
Платформа: кроссплатформа
👍1
Новые подходы в Swift для тестирования: разбор технологии Swift Testing

Тестирование на Swift долгие годы держалось на трех китах: XCTest, сторонние библиотеки и собственная смекалка. Но на WWDC 24 Apple представила новый, современный фреймворк — Swift Testing, который предлагает концептуально новый подход к тестированию. Кирилл Гусев из ОК рассказывает о том, какие возможности предоставляет Swift Testing и как они в компании планируют применять их.

Статья: https://habr.com/ru/companies/vk/articles/949260/
Платформа: iOS
👍1
Проблема при выделении текста в TextView на Android 15+

При использовании TextView с выравниванием текста по ширине (justificationMode = JUSTIFICATION_MODE_INTER_WORD) возникает следующая проблема: во время выделения текста маркеры и подсветка часто смещаются. В результате выделяется не то слово, которое должно быть, маркеры не совпадают с символами.

Статья: https://android-tools.ru/coding/problema-pri-vydelenii-teksta-v-textview-na-android-15/
Платформа: Android
😱1