AppFiles - Mobile Development
2.01K subscribers
2.61K photos
33 videos
8 files
3.51K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Glur - библиотека SwiftUI, использующая Metal для отображения эффективных прогрессивных размытий, подобных тем, что использует сама Apple.

В этом проекте используется новый упрощенный Shader API для SwiftUI. Сначала автор написал шейдер Metal, который эффективно создает гауссово размытие для представления с правильным распределением гауссовых весов. Затем модифицировал его так, чтобы он изменял радиус размытия по вертикальной или горизонтальной оси, задавая значения смещения и интерполяции. Учитывая, что шейдер применяется через собственный API для SwiftUI, он ограничен этим API. Это означает, что он может применяться только к чистым представлениям SwiftUI, исключая представления, поддерживающие UIKit, такие как ScrollView.

Glur на GItHub: https://github.com/joogps/Glur
Платформа: iOS
⭐️: 820
1
This media is not supported in your browser
VIEW IN TELEGRAM
Как с помощью ChatGPT реализовать раскраску во Flutter

Недавно появилась задача - реализовать фичу с раскраской картинок. Сегодня мы рассмотрим, как реализовать такую раскраску для растровых изображений с помощью алгоритма flood fill. Посмотрим, что уже есть на pub.dev, заглянем немного в теорию этого алгоритма, реализуем его на dart с помощью ChatGPT и применим во Flutter приложении.

Статья: https://habr.com/ru/articles/791886/
Платформа: кроссплатформа
Работаем с размером шрифта для обеспечения доступности

Если пользователь увеличит размер шрифта, это может вызвать проблемы, например, с переполнением или обрезанием текста. Мы рассмотрим некоторые из этих проблем в этой статье.

Статья: https://apptractor.ru/info/articles/rabotaem-s-razmerom-shrifta-dlya-obespecheniya-dostupnosti.html
Платформа: Android
Записываем видео App Preview в симуляторе Xcode

Создание качественного видеоролика для предварительного просмотра приложения может занять много времени, тем более что у Apple есть несколько спецификаций, которым должно соответствовать ваше видео. Например, его продолжительность должна составлять от 15 до 30 секунд, а в видео должен присутствовать звук, даже если он выключен. К счастью, есть простой способ создать правильный ролик.

Статья: https://apptractor.ru/info/articles/zapisyvaem-video-app-preview-v-simulyatore-xcode.html
Платформа: iOS
Podcaster - минималистичное приложение для прослушивания подкастов, демонстрирующее использование Jetpack Media3 в реальном offline-first приложении. Кроме Media3, в приложении есть доступ к миллионам подкастов, подписка на подкасты по URL-адресу RSS-ленты, изменяющаяся скорость воспроизведения, загрузка для воспроизведения в автономном режиме, автоматическое фоновое обновление/синхронизация подписок, продолжение воспроизведения эпизодов с того места, на котором вы остановились, динамические темы Material3 и светлые/темные темы.

Podcaster на GitHub: https://github.com/mr3y-the-programmer/Podcaster
Платформа: Android
⭐️: 7
🔥1
На помойку? Никак нет! Пишем нативные приложения для дешевых китайских телефонов

Если сейчас приехать в пункт приема металлолома, то можно обнаружить просто огромные кучи различных телефонов и прочих электронных «отходов», которые стоят под открытым небом и ждут, когда придёт их черёд окончательного разложения. Однако при ближайшем рассмотрении выясняется, что многие девайсы оказываются полностью рабочими даже после недельного лежания под палящим солнцем и проливными дождями, а сдали их в чермет по причинам «не нужен, надоел, купил новый» и т. п. Я не считаю это правильным, ведь даже в простые кнопочные звонилки имеется возможность вдохнуть новую жизнь, если знать один интересный, но малоизвестный факт: для них можно писать нативные приложения на C и использовать железо телефона в своих целях. А это, на минуточку, как минимум: дисплей с подсветкой, вибромотор, динамик, клавиатура и GSM-радиомодуль с возможностью выхода в сеть. Сегодня мы с вами: узнаем, на каких аппаратных платформах работают китайские телефоны, какие существуют программные платформы и где взять для них SDK, а в практической части мы напишем 2D-игру с нуля, которая будет работать на многих китайских кнопочниках.

Статья: https://habr.com/ru/companies/timeweb/articles/791072/
Платформа: разработка
👍2
Вопросы с собеседований: Что такое модификатор памяти weak в Swift

Модификатор памяти weak в Swift используется для создания ссылок на объекты без увеличения счетчика ссылок, что позволяет объектам освобождаться из памяти, когда на них больше никто не ссылается. Другими словами, это способ создания ссылок на объекты без сохранения их в памяти, если на них больше нет активных ссылок. Это помогает избежать проблем с утечками памяти и циклическими зависимостями в коде на Swift.

Вот несколько ситуаций, когда использование слабых ссылок может быть уместным:

1. Связи между объектами, которые могут образовать циклическую зависимость: Если два объекта имеют взаимную зависимость, но один из них должен быть освобожден, когда другой удаляется, используйте слабую ссылку для предотвращения циклической зависимости и утечек памяти.
2. Долгосрочные ссылки на объекты в коллекциях: Если объекты добавляются в коллекцию, которая долго существует и может содержать объекты дольше, чем нужно, используйте слабые ссылки, чтобы не удерживать объекты в памяти дольше, чем это необходимо.
3. Взаимодействие с делегатами или замыканиями, которые могут удерживать объект: Если объект содержит ссылку на делегата или замыкание, которое, в свою очередь, имеет сильную ссылку на этот объект, используйте слабую ссылку для предотвращения циклической зависимости.
4. Слабые ссылки в блоках замыканий: При использовании замыканий, которые могут захватывать объекты и удерживать их в памяти, используйте слабые ссылки для предотвращения утечек памяти.
5. Связь между родителем и дочерними объектами: В некоторых случаях, когда родительский объект должен иметь ссылку на дочерние объекты, но эти дочерние объекты могут существовать и без родительского, использование слабых ссылок помогает предотвратить удержание родителя в памяти дочерними объектами.

Подробнее: https://apptractor.ru/info/techhype/weak.html
Платформа: вопросы с собеседований
2
Delta - это приложение для iOS, которое позволяет эмулировать и играть в видеоигры для нескольких классических игровых систем, включая Game Boy Advance, Nintendo 64 и Nintendo DS. Delta является духовным наследником GBA4iOS - эмулятора Game Boy Advance для iOS-устройств, который автор этого проекта с Полом Торсеном сделали еще в школе. Но Delta переделана с нуля, с современными функциями iOS и поддержкой большего количества систем.

Delta на GitHub: https://github.com/rileytestut/Delta
Платформа: iOS
⭐️: 2.7K
Масштабирование iOS в Bumble: вызовы

Эта статья — первая в серии из трех. В ней мы расскажем о работе, проделанной в течение 2022 и 2023 годов и направленной на решение проблем масштабирования наших производственных приложений для iOS.

Статья: https://apptractor.ru/info/articles/masshtabirovanie-ios-v-bumble-vyzovy.html
Платформа: iOS
Предварительный просмотр представлений Jetpack Compose за считанные секунды

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

Представляем вам Preview Generator, созданный с помощью KSP (Kotlin Symbol Processing) и доступный в репозитории Sonatype.

Статья: https://apptractor.ru/info/articles/predvaritelnyy-prosmotr-predstavleniy-jetpack-compose-za-schitannye-sekundy.html
Платформа: Android
1
Kotlin Cheatsheet (Шпаргалка по Kotlin) - это краткое справочное руководство, содержащее описание наиболее важных синтаксисов и функций Kotlin. Большая часть информации в этой шпаргалке взята из официальной документации по Kotlin, при этом она избегает подробных объяснений. Однако эта шпаргалка как раз и предназначена для быстрого ознакомления, а не для предоставления подробной информации.

Kotlin Cheatsheet на GitHub: https://github.com/alidehkhodaei/kotlin-cheat-sheet
Платформа: Android
⭐️: 202
👍2
Material Design 3 для Compose 1.2

Вышел релиз 1.2 Compose Material 3, в котором появились новые компоненты, некоторые изменения в старых компонентах и расширение системы цветов Material3.

Статья: https://apptractor.ru/info/articles/material-design-3-dlya-compose-1-2.html
Платформа: Android
Автоматический аудит доступности SwiftUI в Xcode 15

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

Статья: https://apptractor.ru/info/articles/swiftui-accessibility.html
Платформа: iOS
OKLCHGradient - это замена встроенных в SwiftUI форм LinearGradient, RadialGradient, EllipticalGradient и AngularGradient, которая использует смешивание цветов OKLCH для создания более визуально привлекательных градиентов. Реализовано с использованием Shader API iOS 17, поскольку это, похоже, единственный способ писать стили форм с кастомным рендерингом, не полагаясь на закрытые API.

OKLCHGradient на GitHub: https://github.com/fwrs/OKLCHGradient
Платформа: iOS
⭐️: 18
Тренды Android-разработки

Продолжаем разговор с Андреем Белоусом (@tzkt1) о том, куда движется Android и мобильная разработка.

Android-разработка движется в сторону упрощения и стандартизации. Когда Android-разработка только зарождалась, не было единых подходов к разработке, все писали приложения как умеют. Использовали разные инструменты, не было единого подхода к архитектуре, и не было “золотых” стандартов от Google. Сейчас же есть набор Jetpack библиотек,лучшие практики от Google. Есть удобные и легкие для освоения решения для многопоточности, написания UI, баз данных, DI, навигации.


Интервью: https://apptractor.ru/info/interview/trendy-android-razrabotki.html
Платформа: Android/разработка
Опровергаю пять архитектурных заблуждений

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

1. MVC — это архитектура приложения
2. Разработка — это только написание кода
3. Бизнес-логика — это все, кроме UI
4. Самый верхний слой — это UI
5. В UI логику не держим

Статья: https://habr.com/ru/companies/tinkoff/articles/793398/
Платформа: iOS/разработка
Вопросы с собеседований: Как в Android определяется приоритет приложений перед системой

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

Статья: https://apptractor.ru/info/techhype/voprosy-s-sobesedovaniy-kak-v-android-opredelyaetsya-prioritet-prilozheniy-pered-sistemoy.html
Платформа: Android
1👎1
Minimum - минималистичный лаунчер для эффективной работы. Основные моменты: улучшенный дизайн с интуитивно понятными иконками и минималистичным интерфейсом для плавной навигации, оптимизированная производительность с быстрым запуском и отзывчивой навигацией в любимых приложениях, упрощенная настройка с темами и схемами, философия минимализма в чистом и сфокусированном пользовательском опыте, улучшенная совместимость.

Minimum на GitHub: https://github.com/JunioJsv/minimum
Платформа: Android
⭐️: 17
Знакомимся с пакетом Swift Algorithms

Пакет Swift Algorithms содержит множество ценных алгоритмов для работы с коллекциями и последовательностями. Охватить их в рамках одного поста практически невозможно, но я расскажу о своих любимых.

Статья: https://apptractor.ru/info/articles/znakomimsya-s-paketom-swift-algorithms.html
Платформа: iOS