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

SongSync на GitHub: https://github.com/Lambada10/SongSync
Платформа: Android
⭐️: 685
Как мы «рисовали» учет времени на iOS с помощью библиотеки Charts

Недавно мы обновляли наше приложение родительского контроля и мониторинга Kaspersky Safe Kids — и в ходе редизайна пришли к выводу, что «родительские» графики активности детского устройства стали громоздкими и неудобными. Нам же требовался виджет, в котором была бы видна актуальная информация о времени использования устройства, интервалах блокировок и еще ряд полезных деталей.

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

Статья: https://habr.com/ru/companies/kaspersky/articles/881578/
Платформа: iOS
Kotlin Coroutines под капотом: CoroutineContext и CoroutineScope

Structured Concurrency это одна из главных фишек Kotlin Coroutines, позволяющая оперировать иерархиями корутин через единый интерфейс, благодаря такой организации можно легко отменить сразу все корутины, имея ссылку только на самый высокоуровневый объект. В этой статье я разберу две базовые штуки на основе которых строится Structured Concurrency - CoroutineContext и CoroutineScope. Поехали!

Статья: https://habr.com/ru/articles/883588/
Платформа: Android
📺 Видео и подкасты за неделю на @AppFiles

(iOS En) SwiftUI Maps - iOS 17 - Look Around, User Location, Directions, Markers & Annotations, Map Styles
(iOS En) Create a Custom SwiftUI Calendar with Dynamic Time and Gestures
(iOS En) Animation Challenge: Number Pad With Animated Text Effects - SwiftUI
(iOS En) Enhancing the Custom Help System in SwiftUI Without Breaking Existing Projects
(And Ru) Погружаемся в мир технологий Яндекс Переводчика
(And Ru) Мок собеседование Android разработчика в Контур: архитектура и кодинг приложения
(And En) Compose for TV | Jetpack Compose Tips
(And En) All Classes In Kotlin Explained
(And En) 3 Ways How Attackers Can Reverse Engineer Your Android App (+ How You Protect It!)
(Crs En) Building KMP Libraries: The RevenueCat Story
(Crs En) Building a Flutter Map App: Handling Location, Permissions & App Lifecycle
(Dev Ru) Aнтoн Нaзaров и Анастасия Чупова — Кофе и Код
(Dev Ru) За что тебя могут уволить в IT
(Dev Ru) Pkl — язык программирования для конфигураций от Apple

Что было год назад:

(iOS Ru) Введение в разработку под Apple Vision Pro
(And Ru) Новостное приложение: с нуля до публикации в Google Play. Часть 1
(Dev Ru) Публичное собеседование на позицию Head of QA
(Dev Ru) Обязательные знания для тимлида
(Dev Ru) Краш-курс по автоматизации тестирования
Please open Telegram to view this post
VIEW IN TELEGRAM
Yams - парсер YAML для Swift (YAML - это удобный для человека язык сериализации данных). В Yams есть три группы API преобразований: одна для использования с типами Codable, другая - для типов стандартной библиотеки Swift, а третья - для нативного представления Yams.

Yams на GitHub: https://github.com/jpsim/Yams
Платформа: iOS
⭐️: 1.1K
R8: Шакалья работа (уменьшение apk через правки R8)

Если расширить алфавит который используется в r8 для минификации, то может уменьшиться размер обновлений apk и dex файлов.

Статья: https://habr.com/ru/articles/885006/
Платформа: Android
Приватный финансовый менеджер inCourse на React Native. Опыт разработки

Идея написать финансовый менеджер в качестве пет‑проекта пришла мне в июле 2022 г. В сфере управления личными финансами у меня уже имелся достаточный опыт (в т.ч. опыт торговли акциями, валютными парами, ПФИ и проч.), и было понимание важности единого учета финансов для их анализа и управления. Учет я вел в Excel, но хотелось создать что‑то более удобное в красивой упаковке. Опыта программирования на RN у меня к тому моменту не было, и я решил изучать его по ходу разработки на конкретных задачах проекта. Изучение документации RN не заняло много времени — в основе своей это тот же React с некоторыми упрощениями.

Статья: https://habr.com/ru/articles/883844/
Платформа: кроссплатформа
Почему Ollie перешел от SwiftUI к UIKit

Несколько месяцев назад мы приняли решение отказаться от SwiftUI и Swift Concurrency в нашем приложении и перевести ядро приложения на UIKit и Dispatch. Недавно мы перевели все управление экранами и навигацией в нашем приложении на UIKit, и это позволило нам удалить сразу несколько обходных хаков и решить кучу проблем с производительностью и ошибок, которые у нас были.

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

Статья: https://apptractor.ru/info/articles/pochemu-ollie-pereshel-ot-swiftui-k-uikit.html
Платформа: iOS
Разработка5 лет опыта ИЛИ 5 раз по 1 году?

Помню, как после собеседования кто-то сказал мне, что у кандидата, которого мы только что видели, не 5 лет опыта, а 5 раз по 1 году.

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

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

Статья: https://apptractor.ru/info/articles/5-let-opyta-ili-5-raz-po-1-godu.html
Платформа: карьера
This media is not supported in your browser
VIEW IN TELEGRAM
Lucky Wheel View Compose - барабан из “Поля чудес” (Lucky Wheel). Почти все элементы настраиваются, а логика работы готова, есть плавные анимации, иконки можно загружать с Coil, поддерживается Android Views и Jetpack Compose и много других приятных фич.

Lucky Wheel View Compose на GitHub: https://github.com/caneryilmaz52/LuckyWheelViewCompose
Платформа: Android
⭐️: 12
1😁1
Как создать загрузчик с вращающимися кругами в Jetpack Compose

Из этой статьи вы узнаете, как в Jetpack Compose создать пользовательскую анимацию загрузки с кругами, вращающимися вокруг центральной точки.

Статья: https://nuancesprog.ru/p/23504/
Платформа: Android
1
Task.sleep() и Task.yield(): в чем разница

В Swift Concurrency мы можем использовать Task.sleep() и Task.yield(), чтобы перевести конкретную задачу в режим ожидания или приостановки в течение определенного периода времени. Оба они выглядят и ведут себя одинаково, но есть несколько существенных различий, о которых следует знать Swift-разработчикам.

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

Статья: https://apptractor.ru/info/articles/task-sleep-i-task-yield-v-chem-raznitsa.html
Платформа: iOS
👍2
Как я прототипирую цвета в Jetpack Compose

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

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

Статья: https://apptractor.ru/info/articles/kak-ya-prototipiruyu-tsveta-v-jetpack-compose.html
Платформа: Android
1
Xcodebuild.nvim - плагин, предназначенный для переноса разработки приложений из Xcode в Neovim. Он организует все необходимые действия для разработки, включая сборку, отладку и тестирование.

Фичи - поддержка iOS, iPadOS, watchOS, tvOS, visionOS и macOS, Swift Packages, проектных конфигураций, ассетов, тестов (в том числе Swift Testing), превью для SwiftUI, UIKit и AppKit, сборка, запуск, отладка приложений на симуляторах или физических устройствах.

Xcodebuild.nvim на GitHub: https://github.com/wojciech-kulik/xcodebuild.nvim
Платформа: iOS
⭐️: 841
🔥2
Чем полезен Server Driven UI

Сегодня поговорим о Server Driven UI вот по такому плану:

• что это вообще за технология
• из чего она состоит
• рассмотрим наши подходы к ее реализации

Статья: https://habr.com/ru/companies/mkb/articles/885648/
Платформа: разработка
👍1
Прекратите использовать тестовые теги в Jetpack Compose

Тестирование UI с помощью Jetpack Compose в основном основано на поиске узлов в дереве семантики, которое состоит из composable элементов.

Я заметил, что некоторые люди используют тестовые теги (test tags) в качестве модификаторов для своих составных элементов, чтобы сделать их легкодоступными.

Статья: https://apptractor.ru/info/articles/prekratite-ispolzovat-testovye-tegi-v-jetpack-compose.html
Платформа: Android
Добавляем SharePlay в iOS-приложение

Недавно я работал над функцией NowPlaying, которая использует API SharePlay в iOS, позволяя пользователям присоединяться к сеансам прослушивания и открывать новую музыку вместе со своими друзьями.

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

Статья: https://apptractor.ru/info/articles/dobavlyaem-shareplay-v-ios-prilozhenie.html
Платформа: iOS
👍1
Video Player App - пример приложения для Android, написанный на Kotlin и Jetpack Compose, поддерживающий различное расположение навигации в зависимости от размера экрана. Media 3 Exoplayer реализован на основе single activity архитектуры. Он полностью функционален и поддерживает функцию «картинка в картинке». Еще в приложении используется MVVM, корутины и Flow, Dagger Hilt, Material 3, динамический лейаут с Windows Size Class, Gradle Kotlin DSL, базовые профили.

Video Player App на GitHub: https://github.com/ryanw-mobile/video-player-app
Платформа
: Android
⭐️: 14
This media is not supported in your browser
VIEW IN TELEGRAM
Протокол Animatable: укрощение анимаций в SwiftUI

В SwiftUI-разработке вы когда-нибудь сталкивались с ситуацией, когда, казалось бы, правильный код анимации не работает так, как ожидалось? Или анимации, которые отлично работают на одних версиях iOS, ведут себя ненормально на других? Эти досадные проблемы с анимацией часто можно решить с помощью мощного, но не слишком заметного инструмента - протокола Animatable.

Статья: https://apptractor.ru/info/articles/animatable-2.html
Платформа: iOS
👍2🔥1
Что такое Single Activity архитектура в Android

В последние годы Single Activity архитектура набирает популярность в разработке Android-приложений. Такой подход предполагает использование единственной Activity, внутри которой осуществляется навигация между различными экранами. Давайте разберёмся, в чём преимущества этого подхода, как его реализовать и какие инструменты помогут упростить работу с ним.

Статья: https://apptractor.ru/info/articles/chto-takoe-single-activity-arhitektura-v-android.html
Платформа: Android
Остерегайтесь READ_MEDIA_IMAGES

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

Статья: https://apptractor.ru/info/articles/osteregaytes-read_media_images.html
Платформа: Android