AppFiles - Mobile Development
2.11K subscribers
2.69K photos
38 videos
10 files
3.61K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
SwiftfulRouting - это нативный декларативный фреймворк, который обеспечивает программную навигацию в приложениях SwiftUI.

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

При переходе на новый экран фреймворк добавляет в корень целевого View набор модификаторов представления, которые будут поддерживать все потенциальные маршруты навигации. Модификаторы основаны на дженериках и/или type-erased пунктах назначения, что сохраняет декларативную иерархию представлений и позволяет разработчику определять пункт назначения на этапе выполнения.

SwiftfulRouting на GitHub: https://github.com/SwiftfulThinking/SwiftfulRouting
Платформа: iOS
⭐️: 338
Как мы строили BDUI: опыт Яндекс Маркета

Меня зовут Алексей Морозов. Я уже несколько лет работаю в инфраструктурной команде Яндекс Маркета. Наша команда делает проекты, которые должны были улучшить скорость приложения, его качество и скорость разработки. Однако раньше такие проекты решали эти проблемы только на время, приложение снова деградировало. Всё это напоминает древнегреческий миф, в котором Сизиф толкает в гору камень, он скатывается вниз, и всё начинается по новой.

Такое положение дел нас не устраивало, поэтому было принято решение изменить подход. И мы построили BDUI (Backend Driven UI). В этой статье я расскажу о том, как это случилось, что сделали и какой в итоге получили результат.

Статья: https://habr.com/ru/companies/yandex/articles/819531/
Платформа: разработка
🔥2
Bytemask - плагин Gradle для Android, который маскирует секретные строки приложения в исходном коде, затрудняя их извлечение с помощью реверс-инжиниринга. Он шифрует строки во время компиляции с помощью ключа подписи приложения и расшифровывает во время выполнения.

Bytemask на GitHub: https://github.com/PatilShreyas/bytemask
Платформа: Android
⭐️: 102
GPT vs Copilot: кто лучший помощник в написании UI-тестов для iOS?

В этой статье я расскажу, как использовал LLM для написания UI-тестов, и сравню результаты ChatGPT и Copilot.

Статья: https://habr.com/ru/companies/lamoda/articles/819751/
Платформа: iOS
Видео и подкасты за неделю:

(iOS Ru) Как не наломать дров с Live Activity
(iOS En) Glitch Text Effect - SwiftUI
(iOS En) Vertical Circular Carousel - SwiftUI
(iOS En) Modern UIKit: Sneak Peek, Part 1
(iOS En) Meet Core Location Monitor
(iOS En) Detect animal poses in Vision
(And Ru) Кодревью опенсорс проекта или как выглядят 10 лет технического долга
(And Ru) Сколько памяти нужно для сборки? Android-разработчикам о JVM
(And Ru) Что скрывает State в Compose
(And En) Automatically Adjust Navigation Based On Screen Size With NavigationSuiteScaffold
(And En) Kotlin 2.0, Google IO, Android 15 and More
(And En) KotlinConfersations'24
(And En) Compose Migration Side Effects - What Can Go Wrong?
(Crs Ru) Best practices локальной аутентификации на Flutter
(Crs En) Full Stack Flutter, Firebase and Riverpod – Build a YouTube Clone
(Dev Ru) Баланс между скоростью и надежностью: переиспользовать нельзя перепроверять
(Ind Ru) Инди-хакинг: как программисту работать на себя — доход на пет-проектах
(Dev Ru) Разработчики против тестирования
(Dev Ru) Побывав в шкуре тимлида - взгляд разработчика изнутри

Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
#ios #android #mobile #video
Check Update iOS - проверяет наличие новой версии в App Store. Если такая есть, пользователя можно принудительно отправить на обновление или выдать диалог с возможностью скачать новую версию позднее. Работает и с TestFlight.

Check Update iOS на GitHub: https://github.com/acarolsf/checkVersion-iOS
Платформа: iOS
⭐️: 82
KotStep - это библиотека Jetpack Compose, которая упрощает создание пошаговых UI-компонентов в ваших Android-приложениях. Она позволяет легко интегрировать вертикальные и горизонтальные степперы с иконками, заголовками и различными опциями настройки.

KotStep на GitHub: https://github.com/binayshaw7777/KotStep
Платформа: Android
⭐️: 66
iOS-разработчики в 2024 году: какие нужны скилы и как проходит процесс найма

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

Статья: https://habr.com/ru/companies/yandex_praktikum/articles/819715/
Платформа: iOS
Как мы разобрали монолитное приложение для бизнеса на модули

Я Анатолий, главный инженер-программист разработки мобильных приложений в ПСБ. В этой статье делюсь опытом миграции крупного монолитного приложения «Мой Бизнес» на модули. Расскажу все ключевые моменты, и с какими сложностями мы столкнулись на этом пути.

Статья: https://habr.com/ru/companies/psb/articles/820671/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
@Previewable: динамические превью SwiftUI

В Xcode 16 появился макрос @Previewable для превьюшек SwiftUI, позволяющий использовать динамические свойства в предварительном просмотре. Вы сможете делать более богатые и динамичные превью ваших представлений SwiftUI без необходимости оборачивать состояние внутри дочерних представлений.

Статья: https://apptractor.ru/info/articles/previewable.html
Платформа: iOS
Искусственному интеллекту – быть: какие обновления представила Apple на WWDC 2024

Значительную часть летней конференции Apple уделила внедрению искусственного интеллекта в свои устройства и традиционно рассказала об обновлениях операционных систем своих устройств. Технический директор студии разработки мобильных приложений CleverPumpkin Александр Кияйкин внимательно посмотрел презентацию и поделился главными новостями, которые нельзя пропустить.

Статья: https://apptractor.ru/info/articles/clever-wwdc-2024.html
Платформа: iOS
Проект от нашей читательницы, AnimatedWidget on LockScreen - создание анимированного виджета. Apple не предоставляет методов добавления анимации такого формата, как gif, в код. И по таймеру добиться программного метода смены изображений не получается.
Был возможный вариант менять статичную картинку через API каждую секунду, но при этом нагружается процессор и Apple отклоняет приложение. В этом примере автор создает анимированный виджет с помощью шрифта.

AnimatedWidget on LockScreen на GitHub: https://github.com/PollyVern/AnimatedWidget
Платформа: iOS
⭐️: 4
🔥3
Что нового в Swift 6?

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

Статья: https://habr.com/ru/articles/820961/
Платформа: iOS
Как сломать скомпилированный код, не нарушая бинарную совместимость

Я Антон, Android-разработчик в команде Тинькофф Бизнеса. Занимаюсь интеграцией нескольких наших внутренних SDK в приложение и иногда участвую в их разработке. Хочу поговорить про проблемы обратной совместимости, которые я встречал в своей работе, и предостеречь от выстрела себе или клиентам вашей библиотеки в ногу.

Статья: https://habr.com/ru/companies/tbank/articles/819537/
Платформа: Android
1
Почему проверка типов в Swift работает медленно

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

Статья: https://danielchasehooper.com/posts/why-swift-is-slow/
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Simple Time Tracker - простое приложение, которое помогает отслеживать, сколько времени вы тратите на бесполезные занятия.

Внутри Kotlin, многомодульность, Single Activity, MVVM, Jetpack Navigation, Jetpack Compose, Hilt, Room, корутины, Wear OS, кастомные View, Gradle Kotlin DSL, Unit и UI тесты, CI с GitHub Actions и другое.

Simple Time Tracker на GitHub: https://github.com/Razeeman/Android-SimpleTimeTracker
Платформа: Android
⭐️: 66
Android: Проблема отрисовки в Jetpack Compose

Если Compose не успел отрисовать всё до следующего изменения, он «с оптимизмом» отбрасывает старое и берется за новое. Признаться, я немного обалдел от такого оптимизма.

Отрисовка в Yandex Map не быстрая, объектов может быть очень много, если есть проблемы на относительно шустром телефоне, понятно что на старом тормозном ведре их будет гораздо больше.

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

Статья: https://habr.com/ru/articles/821433/
Платформа: Android
1
SwiftUI и MVI

Я работал несколько лет с архитектурой MVI в SwiftUI и продолжаю работать. Ранее я писал об этом подходе и недавно я решил обновить и отрефакторить репозиторий с примером MVI на SwiftUI, многое упростил и сделал удобнее, а также решил написать актуальную русскую версию статьи об архитектуре MVI на SwiftUI.

Статья: https://habr.com/ru/articles/821591/
Платформа: iOS
1
Цель проекта - расширить возможности использования протокола Codable с помощью макросов, предоставляемых Swift 5.9, и устранить недостатки различных официальных версий. CodableWrapper предоставляет значение по умолчанию, основные типы автоматически конвертируются между String, Bool, Number и т.д., кастомное множество CodingKey, вложенный словарь CodingKey, автоматическая совместимость между “верблюжьим” и “змеиным” регистром, удобство подкласса Codable, трансформатор.

CodableWrapper на GitHub: https://github.com/winddpan/CodableWrapper
Платформа: iOS
⭐️: 304