AppFiles - Mobile Development
2.11K subscribers
2.7K photos
38 videos
10 files
3.63K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Продвинутая шпаргалка по корутинам в Kotlin

Итак, вы давно работаете с корутинами Kotlin и уже знакомы с такими базовыми концепциями. Но по мере того как ваши проекты становятся все сложнее, вы можете обнаружить, что часто ищете сложные решения и обращаетесь за помощью к Google или любимому искусственному интеллекту.

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

Статья: https://medium.com/@galou.minisini/advanced-kotlin-coroutine-cheat-sheet-for-android-engineer-15e0d180fc1f
Платформа: Android
Конвейеры мобильного развертывания за $0

Непрерывная интеграция (Continuous Integration, CI) - один из главных столпов продвинутых разработчиков.

Если вы живете и дышите большими проектами, то возможность пройти горнило настройки эффективных конвейеров сборки, тестирования и развертывания - обычное дело, но что делать, если вы работаете над инди-проектом?

Если вы раньше не настраивали CI-конвейеры, это ставит вас в невыгодное положение как инженера, поскольку такая автоматизация является обязательной для любого нового проекта. Сегодня я покажу вам, как настроить CI для ваших побочных проектов. Бесплатно!

Статья: https://apptractor.ru/info/articles/konveyery-mobilnogo-razvertyvaniya-za-0.html
Платформа: iOS/разработка
SafeDI - безопасная инъекция зависимостей во время компиляции для Swift-проектов. SafeDI создан для инженеров, которые хотят получить безопасность и простоту ручной инъекции зависимостей без накладных расходов на шаблонный код. SafeDI использует макросы Swift и плагины Swift Package Manager для чтения вашего кода и создания дерева зависимостей, которое проверяется во время компиляции. Зависимости могут быть либо инстанцированы SafeDI, либо направлены в дерево зависимостей.

SafeDI на GitHub: https://github.com/dfed/SafeDI
Платформа: iOS
⭐️: 61
Видео и подкасты за неделю @AppFiles

(iOS Ru) Почему Metal перестал быть страшным
(iOS Ru) Локализация iOS-приложения за 1$ в 2024 году
(iOS En) SwiftUI Floating Bottom Sheets
(iOS En) How to Refactor SwiftUI into Reusable Views
(iOS En) SwiftUI App Intro Animation's - Shape Morphing Effect
(iOS En) Xcode File Headers and Macros
(iOS En) How to Use TextField Keyboard Focus in SwiftUI with FocusState
(And Ru) Нужно ли учить Java для Android-разработки в 2024
(And En) Compose Tips for Delightful UI
(And En) Compose Migration Side Effects - What Can Go Wrong?
(And En) Building Libraries for the Next 25 Years
(And En) Turbocharge Your Data: Harnessing Kotlin and gRPC to Handle Real-Time Data From Connected Cars
(And En) Grow with the Flow: How Kotlin Flow Became a Game Changer for our Business
(And En) Coroutines: Concurrency in Kotlin
(Crs Ru) KMP на ОС Аврора: проблемы и пути их решения
(Crs En) The Kotlinx DateTime API for Compose Multiplatform
(Crs En) How to Implement Drag & Drop in Jetpack Compose
(Crs En) Hitchhiker’s Guide to Kotlin Multiplatform Libraries
(Dev Ru) Алгоритмическая сессия на собеседовании + Все собеседования
(Dev Ru) Автоматическая генерация верстки под Server-driven UI из макетов Figma
(Dev Ru) Учимся договариваться о деньгах — Офферы, Зарплаты, Повышение
(Dev Ru) Дизайн системы — это слишком модно, возможно они вам не нужны
(Dev En) How to get a FAANG Dev Job in your 40s

Что вы посмотрели за неделю?
#ios #android #mobile #video
Selenoid без симуляции: настройка, отладка и автоматизация на физическом Android-устройстве

Решение трудностей — развернуть Selenoid без Докера на сервере для работы с реальными устройствами, а также обеспечить полную автоматизацию при создании конфигураций для подключаемых Android девайсов через USB-порт.

Об этой и других задачах развёртывания инфраструктуры для запуска тестов на реальных Android-устройствах на Linux и Mac расскажу в этой статье. А также продемонстрирую реализованные нами кастомные скрипты для генерации конфигурационных файлов для подключенных устройств.

Статья: https://habr.com/ru/companies/alfa/articles/833136/
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Compose Game Engine - простой игровой движок для 2D-игр, созданный с помощью Jetpack Compose. Эта библиотека обеспечивает базовую функциональность игрового движка, включая управление игровыми объектами, обнаружение столкновений и рендеринг. Она использует Animatable и Canvas API. Однако она (пока) подходит только для небольших игр.

Compose Game Engine на GitHub: https://github.com/vgupta98/compose-game
Платформа: Android
⭐️: 14
👍3
Как iOS-команда Medium эффективно работает с legacy кодом

Кодовой базе iOS-приложения Medium уже более 10 лет, и у нас все еще есть код 2013 и 2014 годов, который используется до сих пор.

Здесь вы можете подумать, почему, черт возьми, они никогда не переписывали его полностью?

На самом деле в iOS-команде Medium мы носим это как почетный знак, и сегодня я хочу объяснить, почему рассказываю о том, как эффективно работать с устаревшим кодом, и одновременно не мешать ему (слишком сильно).

Статья: https://apptractor.ru/info/articles/kak-ios-komanda-medium-effektivno-rabotaet-s-legacy-kodom.html
Платформа: iOS
WhatsApp Clone Compose - приложение-клон WhatsApp, созданное с помощью Stream Chat SDK for Compose для реализации систем обмена сообщениями и Stream Video SDK for Compose для видеозвонков.

Цель этого репозитория - продемонстрировать следующее:

• Реализация всего пользовательского интерфейса с помощью Jetpack Compose.
• Реализация компонентов архитектуры Android с помощью библиотек Jetpack, таких как Hilt и AppStartup.
• Выполнение фоновых задач с помощью корутин Kotlin.
• Интеграция систем чата с Stream Chat SDK для обработки событий в реальном времени.
• Интеграция систем видеозвонков с Stream Video SDK с использованием WebRTC под капотом.

Примечание: Stream SDK бесплатны для простого использования, но если вы захотите использовать их в реальном приложении, то за них придется много платить.

WhatsApp Clone Compose на GitHub: https://github.com/GetStream/whatsApp-clone-compose
Платформа: Android
⭐️: 1.2K
Реализация Server-Driven UI в Android

Управляемый сервером пользовательский интерфейс (Server-driven UI) — это сценарий, в котором клиент получает информацию от API о том, какие компоненты и контент следует показать. В этом могут использоваться все три основные платформы — iOS, Android и веб. Я считаю, что подобная разработка улучшает отзывчивость и управляемость нативных приложений. Сегодня мы поговорим о том, как этого добиться.

Статья: https://apptractor.ru/info/articles/realizatsiya-server-driven-ui-v-android.html
Платформа: Android
iOS Clean Architecture демонстрирует реализацию чистой архитектуры, MVVM и Combine в приложении на Swift. Архитектура разделяет проблемы на отдельные слои, делая кодовую базу более удобной для сопровождения, тестирования и масштабирования. Следуя этим принципам, вы сможете создавать надежные приложения, которые легко расширять и адаптировать к меняющимся требованиям.

iOS Clean Architecture на GitHub: https://github.com/tuan188/CleanArchitecture
Платформа
: iOS
⭐️: 269
Дизайн-система в SwiftUI

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

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

Статья: https://apptractor.ru/info/articles/dizayn-sistema-v-swiftui.html
Платформа: iOS
Disk - это мощная и простая библиотека управления файлами, созданная с учетом рекомендаций Apple по хранению данных в iOS. Disk максимально эффективно использует новый протокол Codable, представленный в Swift 4, и дает вам возможность сохранять структуры, не заботясь о кодировании/декодировании. Disk также помогает сохранять изображения и другие типы данных на диск всего одной строкой кода.

Disk на GitHub: https://github.com/saoudrizwan/Disk
Платформа: iOS
⭐️: 3.1K
Жутко, но факт: как Uber тестирует платежи в продакшене

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

Статья: https://apptractor.ru/info/articles/zhutko-no-fakt-kak-uber-testiruet-platezhi-v-prodakshene.html
Платформа: тестирование
Как автоматически обнаруживать утечки памяти в CI/CD с помощью UI-тестов

Хотя эта функция осталась незамеченной многими разработчиками, при правильном использовании она может стать мощным инструментом для автоматического обнаружения утечек памяти в ваших iOS-приложениях в CI/CD-средах.

Статья: https://apptractor.ru/info/articles/kak-avtomaticheski-obnaruzhivat-utechki-pamyati-v-ci-cd-s-pomoschyu-ui-testov.html
Платформа: iOS/тестирование
This media is not supported in your browser
VIEW IN TELEGRAM
Zoomable - это библиотека Jetpack Compose, позволяющая масштабировать содержимое с помощью жеста щипка, двойного тапа или двойного касания и жеста перетаскивания. Zoomable можно использовать как с любыми composable компонентами, такими как Image, Text и т.д., так и с асинхронными изображениями, такими как AsyncImage от Coil.

Zoomable на GitHub: https://github.com/usuiat/Zoomable
Платформа: Android
⭐️: 354
👍1
Пишем своё приложение для установки PIN на другие приложения

Ещё с детства мой отец приучил меня пользоваться антивирусами. Соблюдая традиции, я купил себе подписку на антивирус для Андроида. Оказалось, в приложении есть крайне интересная фича - установка ПИН-кода для других приложений на устройстве. Интересной она была для меня тем, что я, как мобильный разработчик, не имел ни малейшего понятия, как подобное можно сделать. И вот теперь, после непродолжительных раскопок и проделанной работы, я делюсь своим опытом.

Статья: https://habr.com/ru/articles/834768/
Платформа: Android
Swift Semantic Search - демонстрационное приложение показывает, как создавать нативные приложения с ИИ работающие в реальном времени для устройств Apple. Оно использует библиотеку Unum для Swift и квантованные модели. Под капотом приложение использует UForm для понимания и "встраивания" мультимодальных данных, таких как многоязычные тексты и изображения, обрабатывая их на лету в фиде камеры. После того как векторные вложения вычислены, приложение использует USearch для обеспечения поиска в семантическом пространстве в режиме реального времени. Этот же механизм обеспечивает геопространственный поиск по координатам изображений и, как было показано, легко масштабируется даже до 100M+ записей на iPhone.

Swift Semantic Search на GitHub: https://github.com/ashvardanian/SwiftSemanticSearch
Платформа: iOS
⭐️: 66
Как улучшить время сборки в iOS с помощью модуляризации

Большинство команд мобило понимают и ценят преимущества быстрой сборки. Возможность быстро компилировать и тестировать код означает ускорение разработки и итераций, что, в свою очередь, позволяет команде осуществлять доставку новых версий более регулярно и эффективно. Но на самом деле бывает сложно добиться стабильно быстрой сборки и внедрить долгосрочное решение, позволяющее поддерживать высокую скорость сборки по мере роста кодовой базы. Существует множество различных тактик, и если некоторые из них относительно тривиальны — например, уменьшение размера доставляемых ресурсов, — то другие могут быть гораздо более сложными и даже опасными (вспомните сомнительные трюки с компилятором)!

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

Статья: https://habr.com/ru/companies/piter/articles/834724/
Платформа: iOS