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

Предварительный просмотр может быть подвержен неожиданным сбоям. Например, кто-то из вашей команды добавляет свойство в представление, использующее @EnvironmentObject. Если он забудет обновить каждый вызов, чтобы установить окружение, приложение упадет. Любой предварительный просмотр, использующий представление без environment, также будет аварийно завершен, когда Xcode попытается отобразить предварительный просмотр. Эта проблема еще более сложная, потому что в Xcode нет встроенного способа проверить, что превью не упадут, без ручного тестирования каждого из них — а это заняло бы невероятно много времени.

Статья: https://apptractor.ru/info/articles/uluchshaem-predvaritelnye-prosmotry-xcode-s-pomoschyu-pokrytiya-modulnymi-testami.html
Платформа: iOS
👍1
FlipNumberView имитирует аналоговый перекидной дисплей (например, такой, как в аэропорту или на вокзале). Он хорошо абстрагирован и прост в использовании. Еще есть FlipImageView, который позволяет запускать аналогичную анимацию на любом представлении, например, на изображениях. Рабочие примеры смотрите в примере проекта (чтобы быстро открыть пример проекта, можно запустить pod try JDFlipNumberView).

FlipNumberView на GitHub: https://github.com/calimarkus/JDFlipNumberView
Платформа: iOS
⭐️: 787
Распознавание текста в реальном времени с Jetpack Compose

Используя современный инструментарий пользовательского интерфейса Compose - Jetpack CameraX - и мощь ML Kit, мы создадим плавный, интуитивно понятный опыт для распознавания текста в реальном времени. Создаете ли вы сканер документов, помощника для ввода данных или просто хотите поэкспериментировать с крутыми технологиями, это руководство обеспечит практический пошаговый подход к интеграции этих функций в ваше приложение.

Статья: https://apptractor.ru/info/articles/raspoznavanie-teksta-v-realnom-vremeni-s-jetpack-compose.html
Платформа: Android
1🥰1
Visual Code Space - это современный редактор кода, разработанный для устройств на Android. С его помощью вы сможете создавать код на ходу, используя удобную и эффективную среду. Забудьте о громоздких настройках, погрузитесь в кодинг с интуитивно понятным интерфейсом и мощными функциями.

Visual Code Space на GitHub: https://github.com/Visual-Code-Space/Visual-Code-Space
Платформа: Android
⭐️: 265
😱1
Reddit улучшил скорость запуска приложений более чем на 50% с помощью базовых профилей и R8

Reddit - один из крупнейших в мире интернет-форумов, объединяющий бесчисленные сообщества, ищущие развлечения, ответы на повседневные вопросы и многое другое. Недавно команда оптимизировала свое приложение для Android, чтобы улучшить скорость запуска и повысить производительность рендеринга с помощью Baseline Profiles. Но на этом команда не остановилась. Разработчики приложения Reddit также включили компилятор R8 на полный режим, чтобы максимально оптимизировать байткод, и использовали Jetpack Compose для переписывания устаревшего пользовательского интерфейса, улучшая работу пользователей и разработчиков.

Статья: https://android-developers.googleblog.com/2024/12/reddit-improved-app-startup-speed-using-baseline-profiles-r8.html
Платформа: Android
👍3
CoordinatorX - навигационный фреймворк SwiftUI для iOS, macOS, tvOS, watchOS и visionOS, основанный на паттерне Координатор.

CoordinatorX на GitHub: https://github.com/edon2005/CoordinatorX
Платформа: iOS
⭐️: 5

Еще: видео "Паттерн Координатор для навигация в iOS-приложении"
Как собрать и внедрить высоконагруженный модуль. Опыт Звука

На связи Ринат Кутуев, iOS-разработчик в платформенной команде HiFi-стриминга Звук. В iOS-разработке уже 5 лет. Успел заложить архитектуру для 3 высоконагруженных приложений, которые стабильно расширяют свой функционал. Сегодня я поделюсь своим опытом построения сложного модуля на примере сетевого слоя и расскажу, какими инструментами и подходами мы пользовались в процессе работы.

Статья: https://habr.com/ru/companies/zvuk/articles/864166/
Платформа: iOS
1😁1
Добавляем Image Playground в приложение

Помимо приложения для пользователей, разработчикам Image Playground предлагает фреймворк, позволяющий интегрировать генерацию изображений в приложения, встраивая компоненты, вызывающие и представляющие интерфейс Image Playground, доступный как в UIKit, так и в SwiftUI.

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

Статья: https://apptractor.ru/info/articles/dobavlyaem-image-playground-v-prilozhenie.html
Платформа: iOS
1👍1
Интегрируем Rust в Android-приложение

Rust — это язык системного программирования общего назначения, который существует уже довольно давно. Его можно использовать для выполнения задач, которые реализуются сейчас на C и C++, но с гораздо большей безопасностью памяти. Это позволяет использовать Rust для написания программ или скриптов для многих операционных систем, включая Android. Вы можете задаться вопросом, как это возможно и есть ли простой способ сделать это. Вот об этом эта статья!

Статья: https://apptractor.ru/info/articles/integriruem-rust-v-android-prilozhenie.html
Платформа: Android
👍2
ADBR-Server - современная реализация сервера Android Debug Bridge (ADB), написанная на Rust, с упором на сопровождаемость кода, стабильность и лучшую обработку ошибок. В настоящее время поддерживает только Linux-системы и USB-устройства (пока что).

Этот сервер работает в тандеме с ADBR Client, чтобы обеспечить полную замену ADB. Вместе они обеспечивают повышенную стабильность, лучшую обработку ошибок и уникальные возможности при использовании в паре. В будущих выпусках будут представлены эксклюзивные функции, использующие совместную работу клиента и сервера.

Проект ADBR направлен на улучшение возможностей отладки Android-приложений.

ADBR-Server на GitHub: https://github.com/xDvir/ADBRServer
Платформа: Android
⭐️: 21
👍2
Ищем неиспользуемый код с Periphery

Недавно мне рассказали о Periphery, инструменте командной строки для поиска неиспользуемого кода в проектах на Swift. Для чего нужен свободный от работы день, как не для того, чтобы весело поиграть с новым инструментом?

Статья: https://apptractor.ru/info/articles/ischem-neispolzuemyy-kod-s-periphery.html
Платформа: iOS
👍2
Почему никогда не следует использовать !! в Kotlin

Использование !! - это плохая практика; множество альтернатив покрывают все остальные возможные случаи. Использование этого оператора - это хак и сокращение, которое приведет к обратному результату и не сэкономит вам много времени даже в момент написания. Не стоит использовать его, если только вы не пишете короткий личный скрипт.

Статья: https://apptractor.ru/info/articles/pochemu-nikogda-ne-sleduet-ispolzovat-v-kotlin.html
Платформа: Android
2
Понимаем целостность ViewModel при изменении конфигурации в Android

Одна из самых распространенных проблем, с которой сталкиваются Android-разработчики - управление данными при изменении конфигурации, например при повороте экрана. Традиционно для сохранения и восстановления данных требовалась обработка onSaveInstanceState() или использование сохраненных фрагментов. Архитектурный компонент ViewModel упрощает этот процесс, выживая при изменении конфигурации и сохраняя данные, связанные с пользовательским интерфейсом. Но как ViewModel достигает этого сохранения внутри себя? Давайте погрузимся в механику и внутреннюю реализацию системы ViewModel.

Статья: https://proandroiddev.com/understanding-viewmodel-persistence-across-configuration-changes-in-android-4dc26fa8ae59
Платформа: Android
1
Фоновая загрузка на сервер в iOS 🚀

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

Статья: https://medium.com/@diananareiko8/background-upload-in-ios-f885ed439bd3
Платформа: iOS
👍2🔥1
SRNetworkManager - это мощный и гибкий сетевой уровень для приложений Swift. Он обеспечивает общий, ориентированный на протоколы подход к обработке API-запросов, поддерживая как Combine, так и парадигму async/await. Этот пакет разработан как простой в использовании, хорошо настраиваемый и полностью совместимый со Swift 6 и протоколом Sendable.

SRNetworkManager на GitHub: https://github.com/siamakrostami/SRNetworkManager
Платформа: iOS
⭐️: 16
Интеграция Расширений в большие iOS-приложения

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

Статья Lyft: https://eng.lyft.com/integrating-extensions-into-large-scale-ios-apps-8f15dc5f3be9
Платформа: iOS
👍1
Как обычно :), для статьи, получившей вчера больше всего просмотров, русский перевод.

Фоновая загрузка файлов на сервер в iOS

Когда приложение переходит в приостановленное состояние, все задачи останавливаются. Но не волнуйтесь! iOS предоставляет несколько способов продолжить выполнение задач в фоновом режиме.

Статья: https://apptractor.ru/info/articles/fonovaya-zagruzka-faylov-na-server-v-ios.html
Платформа: iOS
👍1
Dagger 2: как сделать свой DI за 10 минут

Эта статья будет полезна тем, кто использует Dagger 2 в своих приложениях и иногда/часто попадает в ситуации непонимания, почему Dagger 2 ведёт себя не так, как мы ожидаем. А это может создавать определённые трудности, особенно при отладке сложных проблем или при необходимости настройки более сложных сценариев внедрения зависимостей.

Статья: https://habr.com/ru/companies/ozontech/articles/866452/
Платформа: Android
👍1
Inure - это менеджер пакетов для Android. Он может сканировать внутренние компоненты любого приложения и изменять их на ходу. Кроме того, в нем есть эмулятор терминала, статистика использования, установщик Split/APK и другие инструменты, хотя многие из них еще ждут своей реализации. Кроме того, все функции Inure работают как в режиме Root, так и в режиме Shizuku.

Разработка Inure началась как независимый учебный проект, который впоследствии стал одним из самых амбициозных и удобных приложений для Android, разработанных одним человеком. Приложение на 100% основано на кастомных UI API, разработанных для использования только в этом приложении с собственным движком тем, обработчиком крешей, рендерером изображений и красивым анимационным фреймворком.

Inure на GitHub: https://github.com/Hamza417/Inure
Платформа: Android
⭐️: 1.2K
👍1