AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.12K subscribers
2.76K photos
38 videos
11 files
3.69K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
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
Совместить DDD и MVVM: Разработка приложения-трекера расходов по правилу 50-30-20 на .NET MAUI

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

Статья: https://habr.com/ru/articles/867768/
Платформа: кроссплатформа
👍1
Понимаем аннотации Hilt за 5 минут

Hilt - это библиотека инъекции зависимостей для Android, которая позволяет сократить количество ручных инъекций зависимостей в вашем проекте. Она построена на основе хорошо зарекомендовавшей себя библиотеки Dagger2.

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

Статья: https://proandroiddev.com/5-minute-guide-on-understanding-hilt-annotations-50fe33b1919b
Платформа: Android
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Ловушки и меры борьбы с аномальными вызовами onAppear в SwiftUI

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

Статья: https://fatbobman.com/en/posts/traps-and-countermeasures-for-abnormal-onappear-calls-in-swiftui/
Платформа: iOS
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Ifrit - это библиотека нечеткого (fuzzy) поиска, написанная на чистом Swift

Алгоритм нечеткого поиска предназначен для поиска приблизительных совпадений по заданному поисковому запросу. Допустим, у вас есть список товаров, и пользователь ищет «Czy Swetr». Точное совпадение ничего не даст, но нечеткий поиск найдет «Cozy Sweater». Если вам нужно точное совпадение - используйте стандартную функцию .filter { } вместо этой библиотеки.

Преимущества Ifrit:

• Суперлегкий
• Никаких зависимостей
• Поддерживает MacOS, iOS, visionOS, watchOS, twOS, Linux
• Асинхронный поиск (async/await + callbacks)
• Поддерживает выделения текста (AttributedString)
• Покрыт тестами

Ifrit на GitHub: https://github.com/ukushu/Ifrit
Платформа: iOS
⭐️: 33
1