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

Представьте себе мир, где каждый раз, когда вы вносите изменения в код вашего приложения, вы уверены, что ничего не сломалось. Где ошибки обнаруживаются еще до того, как пользователи успеют их заметить. Где ваш код не только работает, но и документируется автоматически, улучшая архитектуру проекта с каждым тестом. Звучит как мечта? На самом деле это реальность, если вы правильно используете тесты. В этой статье мы погрузимся в мир тестирования Android-приложений с использованием Jetpack Compose, рассмотрим различные виды тестов и научимся настраивать и писать инструментальные тесты для ваших Compose функций.

Статья: https://habr.com/ru/articles/850588/
Платформа: Android
Антипаттерны Code Review

Code Review кажется отличной идеей, верно? Два разработчика, просматривающие один и тот же код, имеют в два раза больше шансов обнаружить проблемы. Это распространяет понимание того, как развивается проект. Рецензент может узнать полезные приемы, подробно читая код автора, или найти возможность научить автора полезному приему, который он еще не знал.

Что может пойти не так?

Статья: https://apptractor.ru/info/articles/antipatterny-code-review.html
Платформа: разработка
1
Вычисление семантического расстояния между словами с помощью Natural Language Framework

Такие фрагменты текста естественного языка, как слова и предложения, могут иметь семантическое сходство между собой. На этой концепции основано большинство подсказок, и она реализуется с помощью класса NLEmbedding фреймворка Natural Language.

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

Статья: https://apptractor.ru/info/articles/vychislenie-semanticheskogo-rasstoyaniya-mezhdu-slovami-s-pomoschyu-natural-language-framework.html
Платформа: iOS
2
This media is not supported in your browser
VIEW IN TELEGRAM
Loaders - два индикатора прогресса/лоадера для Jetpack Compose. Есть шестеренки и паззл, который открывает картинку.

Loaders на GitHub: https://github.com/EranBoudjnah/Loaders
Платформа: Android
⭐️: 59
Tuist: добавляем генерацию проекта в текущее приложение

Знаете, что объединяет всех iOS-разработчиков, работающих над крупными проектами? Все мы когда-то сталкивались с этим старым знакомым — файлом .xcodeproj, который хранит в себе десятки, а то и сотни конфликтов после каждого merge. Мы тоже жили с этой проблемой много лет, пока не нашли решение.

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

Если у вас всё еще сохранился этот «реликт прошлого», то, возможно, наш опыт поможет вам наконец-то избавиться от него. Давайте разберемся, как это сделать.

Статья: https://habr.com/ru/companies/cian/articles/847688/
Платформа: iOS
Компьютерное зрение на C++: пишем приложение для поиска объектов под Android

Расскажу, как реализовать обнаружение объектов в реальном времени с помощью камеры на мобильной платформе Android с использованием библиотек PyTorch и NCNN и моделей компьютерного зрения YOLOv5 и YOLOv4. Шаблон моего приложения пригодится тем, кто хочет проверить прототип функциональности для компьютерного зрения на С++, использующий OpenCV на Android, но не хочет глубоко погружаться в программирование под Android.

Статья: https://habr.com/ru/companies/yadro/articles/850786/
Платформа: Android
Как мы улучшили производительность навигации на Android на 30%

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

Статья: https://apptractor.ru/info/articles/kak-my-uluchshili-proizvoditelnost-navigatsii-na-android-na-30.html
Платформа: Android
AppFiles - Mobile Development
Как мы улучшили производительность навигации на Android на 30% В 2019 году команда Yelp Core Android начала работу по повышению производительности навигации в приложении Yelp для потребителей. Мы перешли от создания экранов с несколькими отдельными Активити…
Ускоряем работу приложения с помощью сжатия с общим словарем

Несмотря на то, что с каждым релизом iPhone становятся все быстрее и быстрее, сетевые задержки остаются постоянным препятствием на пути пользователя. Скорость доставки информации к месту назначения ограничена скоростью света, и во многих случаях на этом пути возникают дополнительные замедления (3G-соединения, туннели метро, спутниковый интернет и т.д.). Сокращение размера передаваемых данных по-прежнему приносит пользу пользователям, и поэтому мы рассмотрим относительно новую технику — «сжатие с общим словарем» (shared dictionary compression). Хотя эта техника уже давно используется в таких компаниях, как Google и Amazon, в последнее время она получила широкое распространение в сообществе разработчиков. В основном это касается браузеров, но в этой статье я покажу, как можно легко использовать сжатие с общим словарем в приложениях для iOS.

Статья: https://apptractor.ru/info/articles/uskoryaem-rabotu-prilozheniya-s-pomoschyu-szhatiya-s-obschim-slovarem.html
Платформа: автор говорит, что iOS, но вообще ничего специфичного там нет, поэтому разработка
iOS Swift for VS Code - разрабатывайте, собирайте, отлаживайте и тестируйте свои проекты в VS Code с помощью ваших любимых расширений. Поддерживает iOS/MacOS/WatchOS/VisionOS/TvOS, есть автодополнение Swift/Objective-C/C++ кода, совместимость с CodeLLDB, поддержка проектов/воркспейсов, парсинг логов и отображение ошибок.

iOS Swift for VS Code на GitHub: https://github.com/fireplusteam/ios-swift-for-vs-code
Платформа: iOS
⭐️: 21
👍2😨1
Lets-Plot - это мультиплатформенная библиотека JetBrains для черчения, построенная на принципах Грамматики Графики. «Грамматика графики» - работа Леланда Уилкинсона, описывающая глубинные особенности, которые лежат в основе всей статистической графики: “Эта грамматика [...] состоит из набора независимых компонентов, которые могут быть составлены множеством различных способов. Это делает [ее] очень мощной, потому что вы не ограничены набором заранее заданных графиков, а можете создавать новые графики, точно подходящие для решения вашей задачи”. Lets-Plot работает с Python, Kotlin и Compose Multiplatform.

Lets-Plot на GitHub: https://github.com/JetBrains/lets-plot
Платформа: Android
⭐️: 1.6K
Корзина в Додо Пицце на iOS 14: баг длиной в полгода

Меня зовут Лёша Берёзка. Я iOS техлид в Додо Пицце. Сегодня я расскажу вам историю о том, как внимательность и упорство творят чудеса, и помогают решать задачи, на которые другие бы просто забили.

Статья: https://habr.com/ru/companies/dododev/articles/843216/
Платформа: iOS
Динамические модули в приложениях на Android: опыт использования Dynamic Feature Delivery

Для внедрения одной из SDK, основанной на Flutter, мы прибегли к механизму Dynamic Feature Delivery (DFD). Но оказалось, что в русскоязычном сегменте информации о DFD крайне мало, поэтому я решил поделиться нашим опытом работы с этим механизмом на Android с Google Play Feature Delivery Library. Также мы нашли способ интегрировать динамические фичи на устройства без Google Play, но это тема для отдельной статьи, поэтому в рамках данного материала я на этом останавливаться не буду.

Сегодня мы подробно разберём, как интегрировать механизм DFD в современную архитектуру Android‑приложения с использованием корутин, а также протестируем загрузку и установку динамического модуля, использующего Flutter.

Статья: https://habr.com/ru/companies/yandex/articles/845344/
Платформа: Android/Flutter
This media is not supported in your browser
VIEW IN TELEGRAM
PIPKit - библиотека для реализации картинки-в-картинке на iOS (iPhone, iPad).

PIPKit на GitHub: https://github.com/Kofktu/PIPKit
Платформа: iOS
⭐️: 281
Макросы в Swift: Практическое руководство по использованию

Недавно я столкнулся с задачей, которая требовала написания большого объема шаблонного кода. Вспомнив, что в Swift 5.9 появились макросы, созданные специально для генерации шаблонного кода, я решил попробовать их в действии. Ранее я работал с макросами в Objective-C и C++, поэтому ожидал увидеть нечто похожее. Однако, поискав информацию, я понял, что макросы в Swift — это совсем другое, не похожее на то, что я встречал в других языках.

Статья: https://habr.com/ru/articles/852118/
Платформа: iOS
Забудьте про терминал! Как я избавлялся от рутинных ADB команды с помощью Shortcuts

До этого года я спокойно пользовался терминалом для установки приложений на тестовые устройства android: каждый раз вручную копировал название файла, выбирал нужную команду из истории терминала, стирал старое название и вставлял новое. Это меня очень раздражало, но я не искал решений. А ведь кроме установки, есть множество других команд ADB, которые приходится использовать время от времени. Например, выгрузка последних логов из logcat на компьютер, для чего тоже нужно было прописывать путь для сохранения файла — очень неудобно и отнимает драгоценное время.

Так продолжалось, пока коллега не принесла автоматизированный сценарий в Automator на Mac. Классная вещь, которая позволяет создавать автоматизированные процессы без глубоких знаний программирования. Однако, с пачкой минусов, из-за которых, я в итоге оставил только идею и переписал всё на Shortcuts.

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

Статья: https://habr.com/ru/articles/852114/
Платформа: Android
🤔1
Модульная навигация в SwiftUI: Исчерпывающее руководство

Недавно я начал создавать проект SwiftUI. Цель, которую я хочу достичь, - создать проект, который можно будет использовать в качестве эталона для создания больших production приложений.

С этой целью я решил применить в проекте Модульную и Чистую архитектуры.

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

Статья: https://ericsspace.com/articles/modular-navigation-in-swiftui-a-comprehensive-guide/
Платформа: iOS

Поставьте 10 лайков, если хотите эту статью на русском
👍9
Анализ сведений о запуске и завершении приложений в Android 15

В Android 11 появилась ApplicationExitInfo, из которой можно узнать исторические причины, по которым приложение было выключено/завершено.

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

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

Статья: https://apptractor.ru/info/articles/analiz-svedeniy-o-zapuske-i-zavershenii-prilozheniy-v-android-15.html
Платформа: Android
GroupTrack - приложение для Android с открытым исходным кодом от Canopas, предназначенное для повышения безопасности семьи благодаря функциям обмена местоположением и общения в режиме реального времени. GroupTrack призван обеспечить душевное спокойствие, гарантируя безопасность ваших близких и облегчая бесперебойную связь с ними независимо от их местоположения. Технический стек: MVVM, Jetpack Compose, Koltin, Coroutines + Flow, Jetpack Navigation, Retrofit, DataStore и Room, Firebase, Google Maps SDK,
Hilt.

GroupTrack на GitHub: https://github.com/canopas/group-track-android
Платформа: Android
⭐️: 53
Как в eXpress достигали мгновенного рендера отправки сообщения: оптимизация локальной базы данных

Меня зовут Воронская Дарья, я работаю в Android Core команде eXpress и занимаюсь оптимизацией работы приложения. Я расскажу про подходы, которые мы использовали, чтобы довести скорость отправки и рендера сообщения до того самого идеального результата.

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

Наш стек: Kotlin, Room, Coroutines, WebSocket, OkHttp.

Статья: https://habr.com/ru/companies/express/articles/852268/
Платформа: Android
Objective-C не кусается: как перестать бояться Legacy и стать настоящим iOS-ниндзя

Хочу поговорить о теме, которая волнует многих разработчиков: использование старых технологий в iOS-разработке, таких как Objective-C. Тут возникает очень насущный вопрос, являются ли он легаси?

Статья: https://habr.com/ru/articles/848788/
Платформа: iOS
😁1