AppFiles - Mobile Development
2.01K subscribers
2.57K photos
33 videos
8 files
3.46K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Оптимизируем Android приложение в пару подходов

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

Статья: https://habr.com/ru/articles/768636/
Платформа: Android
Dime - еще один бесплатный открытый трекер расходов для iOS. Из технических фич - простой, но красивый дизайн, синхронизация с iCloud, кастомные напоминания, биометрическая аутентификация, быстрые действия с домашнего экрана, темная тема, виджеты.

Dime на GitHub: https://github.com/rarfell/dimeapp
Платформа: iOS
⭐️: 127
👌5
Как Spotify бесшовно перешел на сборки Bazel

Для осуществления этого перехода потребовалось внести большой вклад как в систему сборки Bazel с открытым исходным кодом, так и в ее правила и пользовательские интеграции. Мы с гордостью сообщаем, что наше приложение для iOS - это наш первый крупный клиент, полностью построенный на Bazel.

Статья: https://apptractor.ru/develop/kak-spotify-besshovno-pereshel-na-sborki-bazel.html
Платформа: iOS
🗿3
Скриншот-тесты - это ручные тесты

В конечном счете, важно понимать, какие существуют различные инструменты тестирования, и использовать тот, который подходит для конкретной задачи. Скриншот-тесты отлично подходят для определения визуальных изменений, но при этом приходится вручную проверять эти изменения. Для тестирования поведения кода существуют более эффективные и надежные варианты.

Статья: https://apptractor.ru/info/articles/skrinshot-testy-eto-ruchnye-testy.html
Платформа: тестирование
Image Toolbox - это приложение для обработки фотографий и графический редактор, созданное на основе современного технологического стека с использованием чистой архитектуры. В нем есть такие функции, как применение фильтров, обрезка, редактирование EXIF, выбор качества и типа выходного изображения, а также множество других возможностей. Внутри Kotlin, корутины, Flow, Accompanist, Hilt, Coil, Compose Navigation Reimagined, Jetpack в разных проявлениях.

Image Toolbox на GitHub: https://github.com/T8RIN/ImageToolbox
Платформа: Android
⭐️: 748
Flutter Yandex Mapkit: как внедрить основные инструменты Яндекс Карт в проект на Flutter

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

Статья: https://habr.com/ru/companies/friflex/articles/769662/
Платформа: Flutter/кроссплатформа
На 65% меньше APK и на 70% меньше потребление памяти: оптимизация приложения для Android

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

Статья: https://apptractor.ru/info/articles/na-65-menshe-apk-i-na-70-menshe-potreblenie-pamyati-optimizatsiya-prilozheniya-dlya-android-pamyat.html
Платформа: Android
Как Tinder разрабатывает продукт (и почему так)

Я слежу за Рози Хогмаскалл (бывшим руководителем отдела роста продуктов в Peanut и Top Testing Influencer 2023 года), и она поделилась своими наблюдениями о том, как Tinder растет в дизайне и монетизации. Меня покорил подобный дизайн - когда он обусловлен небольшими изменениями в дизайне, основан на моделях роста и объясняется в таких практичных деталях.

Статья: https://adplist.substack.com/p/how-tinder-designs-product-and-why
Tagged - обертка типов для более безопасного и выразительного кода.

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

Адрес электронной почты - это не что иное, как String, но он должен быть ограничен в способах его использования. И хотя идентификатор пользователя может быть представлен в виде Int, он должен быть отличим от идентификатора подписки, который также является Int.

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

Tagged на GitHub: https://github.com/pointfreeco/swift-tagged
Платформа: iOS
⭐️: 1.2K
🤔1
Готов ли Swift OpenAPI Generator для продуктивного кода?

Мы хотим упростить работу с OpenAPI-спецификациями, внедрив кодогенерацию для автоматического создания кода на Swift из YAML- или JSON-файла спецификации. Это позволяет автоматизировать создание DTO, сделать их единообразными и повысить эффективность разработки. Кодогенератор также упрощает сетевой слой, генерируя методы API, наборы параметров, заголовки и т.д.

На WWDC `23 Apple представила свой Open Source-генератор Swift OpenAPI Generator, который как раз и решает эту задачу. Давайте рассмотрим, готов ли в текущем виде Swift OpenAPI Generator для решения нашей проблемы.

Статья: https://habr.com/ru/companies/ozontech/articles/769624/
Платформа: iOS
Twine - это многоплатформенное приложение для чтения RSS-лент, созданное с использованием Kotlin и Compose Multiplatform. Оно обладает приятным пользовательским интерфейсом и удобным просмотром потоков, а также поддерживает динамическое тематическое оформление контента на основе Material 3. Внутри Kotlin Multiplatform, корутины, Compose Multiplatform, Ktor, SQLDelight, Decompose и Kotlin-inject.

Twine на GitHub: https://github.com/msasikanth/twine
Платформа: Android/кроссплатформа
⭐️: 593
👍1
Видео и подкасты за неделю:

(iOS Ru) Автоматизация ревью ресурсных картинок в iOS
(iOS Ru) ChatGPT в мобильной разработке: как использовать, чтобы получить пользу
(iOS Ru) Реальное iOS собеседование в Яндекс
(iOS En) Mastering TipKit in iOS 17
(iOS En) SwiftUI: Building Notes App + SwiftData + CRUD
(iOS En) Build a Twitch-Like Live Streaming App With SwiftUI
(iOS En) Resizable Custom Tab Bar for macOS
(iOS En) Lock SwiftUI View With Biometric/Custom Number Lock - Local Authentication
(And Ru) Собеседование в Яндекс: платформа Android
(And Ru) Kodein в Android. Что за зверь и как его готовить
(And Ru) Готовим конфигурацию Android-приложения с помощью Dynamic Proxy и рефлексии
(And En) #TheAndroidShow: faster and easier to build excellent apps, across devices!
(And En) Play PolicyBytes
(And En) 95% Don't Understand THIS About Coroutines (Main-Safety)
(And En) Which Compile Options Should You Choose? (Java & Kotlin Version)
(Crs En) Building a Spotify Music Player with Real-Time Lyrics using Flutter
(Dev Ru) Avito Platform engineering meetup #2
(Dev Ru) Ozon Tech Community ML&DS Meetup
(Tst Ru) Полный курс по QA. Как правильно писать тесты?
(Tst Ru) Как изменились подходы к автоматизированному тестированию в Тинькофф
(Tst En) Beginner Guide to Mutation Testing in Kotlin

Поставьте 👍, если понравилась подборка. А если вы увидели/выпустили какое-то другое интересное видео - отправьте боту🧑🏻‍💻
👍2
Обновил подборку онлайн собеседований мобильных разработчиков

Всего 60! записей - для Junior, Middle и Sénior собеседователей.

Все видео: https://apptractor.ru/sobesedovaniya
👍3
Aidoku - открытое бесплатное приложение для чтения манги для iOS и iPadOS.

Aidoku на GitHub: https://github.com/Aidoku/Aidoku
Платформа: iOS
⭐️: 1.1K
👍1
Как устроены собеседования в SberDevices — Максим Сидоров

Второе интервью с Максимом Сидоровым из SberDevices, в котором он рассказывает про процесс собеседований в компании.

Интервью: https://apptractor.ru/info/interview/kak-ustroeny-sobesedovaniya-v-sberdevices-maksim-sidorov.html
Платформа: Android/собеседования
👍1
Регулировка громкости наушников Bluetooth

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

Статья: https://blog.ornx.net/post/bluetooth-volume-fix/
This media is not supported in your browser
VIEW IN TELEGRAM
Что будет если команда, не видавшая Compose, решила делать новую сложную фичу на нём?

Меня зовут Дмитрий Максимов, я Android разработчик в Dodo Engineering. Больше 2-х лет я пробовал Jetpack Compose в пет-проектах, но хотелось прокачать свои знания по полной и попробовать фреймворк в настоящем проде. В этой статье расскажу, как мы сделали сложный Compose экран с нестандартным скроллом и снаппингом контента.

Статья: https://habr.com/ru/companies/dododev/articles/764540/
Платформа: Android
👍2
FlorisBoard - это бесплатная клавиатура с открытым исходным кодом для устройств на базе Android 7.0+. Она нацелена на то, чтобы быть современной, удобной и настраиваемой, при этом полностью уважать конфиденциальность пользователей. В настоящее время находится в состоянии ранней бета-версии. Внутри AndroidX, Accompanist Compose UI, KotlinX, ICU4C.

FlorisBoard на GitHub: https://github.com/florisboard/florisboard
Платформа: Android
⭐️: 4.6K
Moya - слой сетевых абстракций поверх Alamofire, который в достаточной степени инкапсулирует непосредственные вызовы сетевой библиотеки. Некоторые замечательные функции Moya:

• Проверка корректности доступа к конечным точкам API во время компиляции.
• Четкое определение использования различных конечных точек с соответствующими перечислениями.
• Тестовые заглушки рассматриваются как рабочие, поэтому Unit-тестирование становится очень простым.

Moya на GitHub: https://github.com/Moya/Moya
Статья: Обработка сетевых вызовов в Swift с помощью Moya
Платформа: iOS
⭐️: 14.8K
Backend Driven UI с точки зрения бэкенда: к чему готовиться, если вы решили на него перейти

В этой статье я постараюсь рассказать, что такое BDUI с точки зрения бэкенд-разработчика, как мы прошли путь от стандартного API с данными для фронтенда до UI JSON-файлов, по которым строятся экраны приложения. Этот пост будет интересен тем, кто планирует перейти на этот подход, но пока не знает, как это сделать максимально плавно и сразу обойти проблемы, с которыми повстречались мы.

Статья: https://habr.com/ru/companies/yandex/articles/768282/
Платформа: разработка
2