AppFiles - Mobile Development
1.99K subscribers
2.53K photos
33 videos
8 files
3.41K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Сам себе экосистема: Как я адаптировал старый смартфон под современные реалии и написал клиенты нужных мне сервисов

Время неумолимо бежит вперед: выходят новые гаджеты, постепенно заменяя старые, превращая их в тыкву или в лучшем случае, в «тапочек» для звонков. Сейчас смартфоны стали практически одинаковы во всем: дисплей на всю площадь передней панели, почти полное отсутствие аппаратных кнопок, беспроводная зарядка… Это всё, конечно, здорово, но ведь иногда так хочется взять в руки старый, но такой необычный в наше время QWERTY-смартфон и попытатьфся его использовать как основной, да и цены на них могут приятно удивить: БУ девайс можно купить за несколько сотен рублей (~5-10$). Одна проблема — клиенты приложений на версии Android 1.6-2.0 безбожно устарели и давно не работают. Но иногда желание воскресить старый девайс превыше потребительского качества и тут я пришёл к мысли… а почему бы не написать с нуля свои клиенты популярных приложений? ВК с музыкой, YouTube, трекинг посылок. Так я и сел писать необходимые в повседневной жизни приложения, с нуля, на голом API Android, без каких либо фреймворков (и даже AppCompat).

Статья: https://habr.com/ru/companies/timeweb/articles/726086/
Платформа: Android
😱21
Pocket Shop - мобильный магазин, выполненный в лучших правилах MAD. Внутри Kotlin, Coroutines + Flow, Jetpack, MVVM, Retrofit2 & OkHttp3, Moshi и все остальные инструменты.

Pocket Shop на GitHub: https://github.com/AYOMITIDE-OAJ/pocketshop
Платформа: Android
⭐️: 1
Вышла стабильная версия Android Studio Flamingo

Этот выпуск включает улучшения, помогающие создавать до пикселя идеальный пользовательский интерфейс с помощью Live Edit, шаблоны проектов с Jetpack Compose и Material 3, новые функции, помогающие инспектировать ваше приложение, обновления IntelliJ, App Quality Insights и многое другое.

Анонс: https://android-developers.googleblog.com/2023/04/android-studio-flamingo-is-stable.html
Платформа: Android
Освоение Canvas в SwiftUI

В SwiftUI можно рисовать 2D-графику с помощью Shape API, но в итоге фреймворк преобразует все фигуры в представления SwiftUI и рендерит их. У этого подхода есть свои плюсы и минусы. К счастью, мы можем рисовать насыщенную 2D-графику, не комбинируя несколько фигур. На этой неделе мы узнаем, как использовать представление Canvas в SwiftUI.

Статья: https://swiftwithmajid.com/2023/04/11/mastering-canvas-in-swiftui/
Платформа: iOS
👍1
Mockingbird - библиотека для мокирования, позволяет легко подражать, создавать заглушки и проверять объекты в модульных тестах Swift. Вы можете тестировать как Swift, так и Objective-C код без написания шаблонов или модификации производственного кода.

Mockingbird на GitHub: https://github.com/birdrides/mockingbird
Платформа: iOS
⭐️: 573
KotlinConf 2023 Keynote

На открытии KotlinConf 2023 представители JetBrains сделали несколько интересных анонсов о языке Kotlin и развитии экосистемы вокруг него.

Так:

• Компилятор K2 будет выпущен с Kotlin 2.0.
• Gradle Kotlin DSL будет использоваться по умолчанию в новых сборках.
• В Google наблюдается стремительный рост внедрения языка Kotlin.
• Kotlin Foundation запускает программу финансирования для авторов библиотек и программу членства для компаний.
• Kotlin Multiplatform станет стабильным в этом году.
• Вышла альфа-версия Compose для iOS.
• Экспериментальный Compose для Web будет работать на базе Kotlin/Wasm.

Видео: https://youtu.be/c4f4SCEYA5Q
Сайт: https://blog.jetbrains.com/kotlin/2023/04/kotlinconf-2023-opening-keynote/
Платформа: Android
👍2
Цикломатическая сложность в Swift

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

Цикломатическая сложность — это модный термин, обозначающий количество точек принятия решений в коде. На самом деле это очень просто. По сути, чем больше у вас точек принятия решений — например, операторов if, switch, циклов и так далее, — тем сложнее становится ваш код. А чем сложнее код, тем труднее его понимать, тестировать и поддерживать.

Статья: https://apptractor.ru/info/articles/tsiklomaticheskaya-slozhnost-v-swift.html
Платформа: Swift/программирование
Что такое Gradle Kotlin DSL?

В этой статье мы поговорим о Gradle, почему именно Kotlin DSL, и о переходе от Groovy к Kotlin DSL.

Статья: https://medium.com/@talhafaki/what-is-gradle-kotlin-dsl-a995aafc5e5c
Платформа: Android
Redukks - простая, типобезопасная и тестируемая реализация архитектуры Redux/Uniflow для Kotlin Multiplatform. Она упрощает создание хранилищ, редукторов и действий, а также предоставляет простой способ их тестирования.

Архитектура Uniflow основана на одной простой идее - ваше приложение представляет собой постоянный цикл данных, которые текут в одном направлении. Состояние и его изменения управляются пользовательским интерфейсом, а пользовательский интерфейс управляется состоянием. Это позволяет вам иметь единый источник истины и предоставляет вам простой способ думать и рассуждать о вашем приложении.

Эта библиотека находится в стадии альфа-версии.

Redukks на GitHub: https://github.com/ianrumac/redukks/
Платформа: Android/KMM
⭐️: 22
This media is not supported in your browser
VIEW IN TELEGRAM
Анимация Apple Hello

В настоящее время я работаю над неанонсированным проектом, но могу сообщить, что в нем будет использована анимация "hello" от Apple. Это знаковая анимация, в которой от руки написано слово "привет". Вы можете увидеть ее в действии в весеннем кейноуте Apple 2020 года. К сожалению, в SwiftUI нет встроенной функции для достижения этого эффекта, поэтому мне пришлось создавать все с нуля.

Статья (En): https://thisdevbrain.com/apple-hello-animation/
Платформа: iOS

Поставьте 👍, если хотите эту статью на русском!
💩1
Как Slack отправляет миллионы сообщений в режиме реального времени

В этой статье мы опишем архитектуру, которую мы используем для отправки сообщений в режиме реального времени в таких масштабах. Мы подробно рассмотрим сервисы, которые отправляют сообщения в чаты и рассылают различные события онлайн-пользователям в режиме реального времени. Наши основные службы написаны на Java - это серверы каналов (Channel Servers, CS), серверы шлюзов (Gateway Servers, GS), серверы администраторов (Admin Servers, AS) и серверы присутствия (Presence Servers, PS).

Статья: https://apptractor.ru/slack-online
Платформа: разработка
👍1
Cheetah - приложение для macOS, работающее на основе искусственного интеллекта и предназначенное для помощи разработчикам во время удаленных интервью путем предоставления незаметных подсказок в режиме реального времени и интеграции с платформами лайв-кодинга. С Cheetah вы сможете улучшить свои результаты на собеседовании и повысить шансы получить работу, не тратя свои выходные на зубрежку задач Leetcode и заучивание алгоритмов, которые вы никогда не будете использовать.

Cheetah использует Whisper для расшифровки аудио в реальном времени и GPT-4 для генерации подсказок и решений. Для использования приложения вам необходимо иметь собственный ключ API OpenAI. Если у вас нет доступа к GPT-4, в качестве альтернативы можно использовать gpt-3.5-turbo.

Whisper запускается локально на вашей системе, используя whisper.cpp Георгия Герганова. Для оптимальной работы требуется последний Mac M1 или M2.

Cheetah на GitHub: https://github.com/leetcode-mafia/cheetah
Платформа: разработка
⭐️: 2K
👍3🔥1
Создайте собственные задачи и плагины Gradle менее чем за 10 минут

Перестаньте бояться Gradle и заставьте его работать на вас.

Статья: https://proandroiddev.com/make-gradle-do-more-work-for-you-than-just-build-your-android-app-9462baa08951
Платформа: Android
Обработка глубоких ссылок в SwiftUI

Глубокие ссылки позволяют открыть приложение и перейти в определенное место сразу после запуска. Примером может быть глубокая ссылка на рецепт или фильм на основе нажатой ссылки. Вы можете определить целевую страницу на основе метаданных, предоставленных URL.

Вы можете использовать модификатор представления в SwiftUI или метод AppDelegate для обработки входящих URL и соответствующей навигации. При грамотной настройке можно извлечь выгоду из открытия URL-адресов внутри приложения и перехода к нужному пункту внутри приложения.

Статья: https://www.avanderlee.com/swiftui/deeplink-url-handling/
Платформа: iOS
👍1
Секрет идеально сбалансированных пустых пространств

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

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

Статья: https://apptractor.ru/develop/design/sekret-idealno-sbalansirovannyh-pustyh-prostranstv.html
Платформа: дизайн и прототипирование
👍1👎1
Ultron - это простой и мощный фреймворк для разработки UI-тестов для Android. Он делает ваши тесты простыми, стабильными и поддерживаемыми. Ultron основан на Espresso, UI Automator и фреймворке тестирования Compose UI. Он предоставляет множество новых замечательных возможностей и дает вам полный контроль над вашими тестами, легко настраивается и расширяется.

Ultron на GitHub: https://github.com/open-tool/ultron
Статья: https://habr.com/ru/articles/730144/
Платформа: Android
⭐️: 36
👍1
Обработка сетевых вызовов в Swift с помощью Moya

Moya - это сетевая библиотека Swift, построенная поверх Alamofire. Она выполняет сетевые вызовы без прямого взаимодействия с Alamofire и ориентирована на выполнение сетевых запросов типобезопасным способом с использованием перечислений (например, enum).

Статья: https://medium.com/simform-engineering/handling-network-calls-in-swift-with-moya-c82908c93e5
Платформа: iOS
🤷1
Ускоряем дебаг в разы. Зачем и как использовать брейкпоинты

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

Сейчас я покажу эту силу и вам.

Статья: https://habr.com/ru/companies/agima/articles/730008/
Платформа: Android
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Показываем расширяемые текстовые поля в SwiftUI

Традиционно в iOS и macOS существует два вида элементов управления вводом текста: текстовые поля и текстовые представления. Разница между ними заключается в том, что текстовое поле принимает одну строку текста, а текстовое представление обеспечивает многострочное редактирование текста.

Хотя в macOS возможно - но не так часто - переопределить поведение текстового поля по умолчанию и игнорировать правило одной строки с помощью AppKit, в iOS такого не было. Но все это до iOS 16 и macOS 13 (Ventura), где в четвертой ревизии SwiftUI появилась функция, которую большинство разработчиков назвали бы... подарком. Речь идет о текстовых полях, которые могут расширяться как по горизонтали, так и по вертикали, что приводит к появлению нескольких строк, когда применяется последний вариант.

Плохая новость о расширяемых текстовых полях, также называемых прокручиваемыми текстовыми полями, заключается в том, что они не обеспечивают обратной совместимости. Мы не можем использовать их в проектах, поддерживающих iOS версии ниже 16 и macOS версии ниже 13. В таких случаях нам остается прибегнуть к уже готовым решениям, таким как текстовые представления.

Статья: https://serialcoder.dev/text-tutorials/swiftui/presenting-expandable-textfields-in-swiftui/
Платформа: iOS
1