AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
SwiftUI Flow Layout - HFlow и VFlow, аналогичные HStack и VStack. Упорядочивает представления по строкам и соответствующим образом нарезает новые строки, если элементы не помещаются в ограничивающее пространство.

SwiftUI Flow Layout на GitHub: https://github.com/tevelee/SwiftUI-Flow
Платформа: iOS
⭐️: 343
🔥2
Hotwire Native

Hotwire Native - это веб-фреймворк для создания нативных мобильных приложений. Он позволяет разработчикам создавать экраны на HTML и CSS и повторно использовать их на любой платформе. Hotwire Native предоставляет разработчикам полный доступ к базовым SDK и API для iOS и Android сразу после их выхода. Это позволяет небольшим командам создавать высокофункциональные, красивые и устойчивые мобильные приложения без головной боли и сложностей, связанных с традиционной нативной разработкой.

Сайт: https://native.hotwired.dev/
Платформа: кроссплатформа
🤡5
1726400252028198.webm
1.6 MB
Рисуя звезды: рисование с помощью Compose и Canvas

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

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

Статья: https://apptractor.ru/info/articles/risuya-zvezdy-risovanie-s-pomoschyu-compose-i-canvas.html
Платформа: Android
🏆1
YourSpace - приложение для Android с открытым исходным кодом, предназначенное для повышения безопасности семьи благодаря функциям обмена местоположением и общения в режиме реального времени. YourSpace призвано обеспечить душевное спокойствие, гарантируя безопасность ваших близких и способствуя беспрепятственному общению независимо от их местоположения.

YourSpace использует архитектурный паттерн MVVM и Jetpack Compose для декларативного построения современных пользовательских интерфейсов. Кроме того - корутины и Flow, Jetpack Navigation, Retrofit, Google Maps SDK, Fusion Location Provider, DataStore, Room, Firebase, Hilt.

YourSpace на GitHub: https://github.com/canopas/your-space-android
Платформа: Android
⭐️: 39
Предотвращение порчи кодовой базы в iOS-проектах с помощью прекоммит хуков

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

В этой статье я расскажу о том, как pre-commit Git hook может предотвратить подобные проблемы, автоматизируя проверку кода перед каждым коммитом.

Статья: https://apptractor.ru/info/articles/predotvraschenie-porchi-kodovoy-bazy-v-ios-proektah-s-pomoschyu-prekommit-hukov.html
Платформа: iOS
Koin: как сделать свой DI за 10 минут

Привет, меня зовут Иван Курак, я Android-разработчик приложения Ozon Job. В этой статье мы реализуем свой механизм, на котором построен Koin. Тем самым мы пройдём путь, который проходили его авторы при решении проблемы построения собственного DI.

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

Статья: https://habr.com/ru/companies/ozontech/articles/846482/
Платформа: Android
SymSpellSwift - Swift-реализация SymSpell, коррекции орфографии и нечеткого поиска.

Алгоритм исправления орфографии Symmetric Delete снижает сложность генерации кандидатов на редактирование и поиска по словарю для заданного расстояния Дамерау-Левенштейна. Он на шесть порядков быстрее (чем стандартный подход с удалениями + переносами + заменами + вставками) и не зависит от языка.

SymSpellSwift можно использовать для очень быстрого исправления правописания отдельных слов, для исправления поисковых запросов, для автоматической коррекции орфографии многословных входных строк, для разделения текста на слова и т.п.

SymSpellSwift на GitHub: https://github.com/gdetari/SymSpellSwift
Платформа: iOS
⭐️: 4
Как ускорить запуск iOS-приложения в 2 раза с помощью Network Instrument

Приложение — это соединение данных из сети с графическим интерфейсом. Про UI статей много, но про сеть почти никто не вспоминает, а ведь именно она влияет на время ожидания ответа пользователем. При этом со стороны разработчика это часто выглядит так: «ну я создал сессию, дёрнул запрос, обработал ошибку, что там ещё может быть?».

Если посмотреть на все запросы сбоку, то появится много вопросов: нужно ли переиспользовать URLSession.shared, почему первые запросы, даже очень простые, выполняются дольше остальных, как ускорить запуск приложения, когда запросов много, как ускорить загрузку картинок, как построить мониторинг качества работы сети и т.п.

При анализе через Network Instrument мы нашли десяток разных проблем в наших приложениях. Уверен, одна из них есть и в вашем приложении.

Статья: https://habr.com/ru/companies/dododev/articles/846662/
Платформа: iOS
Как в Duolingo удалили 10,000 строк кода с помощью Reaper

Недавно мы изучили количество строк кода в каждом выпуске приложения, начиная с Duolingo 4.0 в 2014 году. Наша кодовая база сейчас почти в 20 раз больше, чем десять лет назад! Хотя большая кодовая база не является чем-то плохим по своей сути, есть определенные преимущества в ее сокращении.

Статья: https://apptractor.ru/info/articles/kak-v-duolingo-udalili-10-000-strok-koda-s-pomoschyu-reaper.html
Платформа: iOS
Стартовые профили: быстрое решение для болезненно медленных стартов приложений

Стартовый профиль - это часть Baseline профиля, направленная на улучшение запуска приложений. Профиль главным образом организует и приоритизирует код в DEX-файлах, чтобы обеспечить более эффективную компиляцию и выполнение кода, необходимого для запуска приложения. Такая реорганизация сокращает время, необходимое для компиляции и интерпретации необходимых путей кода, что приводит к более быстрому запуску приложения.

Статья: https://proandroiddev.com/startup-profiles-the-quick-fix-for-painfully-slow-app-startups-2f1c9c0a8fd9
Платформа: Android

Поставьте 👍, если хотите эту статью на русском.
👍4
Библиотека Texty создана на основе базового текста Jetpack Compose. Это высококонфигурируемая библиотека Compose Multiplatform, которая позволяет отображать текст в различных стилях и обладает разными полезными функциями, вроде скроллинга или постепенного раскрытия. Независимо от того, создаете ли вы Android, iOS, настольное или веб-приложение, она предоставляет единый API для создания динамичных и визуально привлекательных текстовых меток.

Texty на GitHub: https://github.com/ArjunJadeja/Texty
Платформа: Android/кроссплатформа
⭐️: 38
Приглашаем на Mobile PeerLab #2 — камерную встречу для мобильных разработчиков

10 октября в Москве во второй раз пройдет PeerLab от экспертов Райдтеха Яндекс Go. Специалисты разберут кейсы, которые предложат участники: поговорят о DI-архитектуре, легаси и скорости сборки, сравнят KMP и Flutter, объяснят, чем отличаются техлиды от фичалидов, и поделятся советами о тестировании фичей.

После разбора кейсов гостей ждет afterparty, feature dev консультация и активности в реальной качалке — будем тренировать прогерские мышцы!

Реальные кейсы и ответы экспертов Яндекса на ваши вопросы о мобильной разработке — регистрируйтесь и зовите коллег!

Количество мест ограничено. После регистрации обязательно дождитесь подтверждения заявки
Быстрый доступ к VPN в iOS с помощью App Intents

Меня зовут Антон Долганов, я iOS-разработчик в компании Контур. Я работаю над инфраструктурными модулями и параллельно поддерживаю наше приложение Контур.Коннект, которое используется для подключения к внутреннему VPN и даёт доступ к корпоративным сервисам.

Недавно мы выпустили обновление Коннекта, добавив поддержку Быстрых команд (Shortcuts). Теперь можно включать и отключать VPN, даже не заходя в приложение. В этой статье я расскажу, как я это реализовал и почему это полезно.

Статья: https://habr.com/ru/companies/skbkontur/articles/846366/
Платформа: iOS
Как устроен сборщик метрик Android-проекта

Меня зовут Даниил, я Android-разработчик в команде VK ID SDK в VK. Наша команда создала легковесный SDK для авторизации через приложения экосистемы VK. Он состоит из кнопки One Tap для входа в один клик, кнопки входа в другую учётную запись и виджета для авторизации через Mail или Одноклассники.

Работая над продуктом, мы поняли, что необходимо оценивать его техническое качество: считать размер SDK, тестового покрытия, скорость сборки и многое другое. Нам был нужен сборщик метрик качества кода.

Я расскажу, как мы писали плагин для сбора метрик и с какими проблемами столкнулись. Вы узнаете, как устроен наш сборщик изнутри, и даже сможете потестить его в своём проекте.

Статья: https://habr.com/ru/companies/vk/articles/847416/
Платформа: Android
👍2
3 совета для улучшения читабельности кода

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

• Используйте ранние возвраты
• Избегайте отрицаний в условных выражениях
• Создавайте значения и переменные как можно позже

Статья: https://apptractor.ru/info/articles/3-soveta-dlya-uluchsheniya-chitabelnosti-koda.html
Платформа: программирование
Почему ваша задача выполняется в главном потоке?

Задача (Task) - это единица асинхронной работы в Swift Concurrency. Создание задачи - это самый простой способ внедрить асинхронный контекст в ваш код:
func setupView() {
Task {
self.data = await fetchData()
}
}

Используя Task, мы можем вызывать await и получать данные асинхронно, даже если сама функция setupView() не помечена как async.

Поскольку мы инициализируем их с помощью замыкания, стандартное* поведение при создании Task не сразу становится очевидным: они будут выполняться в том же потоке, в котором были созданы.

Давайте рассмотрим, как это повлияет на наш код.

Статья: https://apptractor.ru/info/articles/pochemu-vasha-zadacha-vypolnyaetsya-v-glavnom-potoke.html
Платформа: iOS
Каждое приложение в App Store должно содержать такие важные ссылки, как политика конфиденциальности и, если применимо, условия использования (для покупок в приложениях), чтобы соответствовать требованиям Apple. Многие приложения решают эту задачу, добавляя в настройках раздел «Ссылки», в котором содержатся дополнительные полезные ссылки, такие как рейтинги приложений, часто задаваемые вопросы и варианты поддержки.

Именно здесь на помощь приходит LinksKit: он предлагает простое, готовое к использованию решение для работы со всеми этими распространенными ссылками, которое сэкономит вам кучу времени. Будь то юридические, справочные или рекламные ссылки, LinksKit справится с этой задачей. А для macOS он даже поддерживает добавление этих ссылок прямо в меню «Справка».

LinksKit на GitHub: https://github.com/FlineDev/LinksKit
Платформа: iOS
⭐️: 16
Как реализовать спойлер-эффект как в Telegram на Swift?

Спойлеры стали неотъемлемой частью общения в мессенджерах и социальных сетях. Они позволяют скрывать часть информации до тех пор, пока пользователь не захочет ее увидеть. В Telegram спойлер-эффект сопровождается красивой анимацией рассыпающихся точек. В этой статье мы рассмотрим, как реализовать подобный спойлер-эффект в iOS-приложении на Swift, используя CAEmitterLayer и UITextView.

Статья: https://habr.com/ru/articles/847236/
Платформа: iOS
Новый подход к безопасному управлению состояниями в Kotlin-приложениях

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

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