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

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

@Binding
@StateObject
@Environment
@Published
@State
@EnvironmentObject
@ObservedObject

Статья: https://apptractor.ru/info/articles/potok-dannyh-swiftui-s-primerami.html
Платформа: iOS
Обзор всех изменений в Android 13 для разработчиков

В видео:

• Улучшенная поддержка планшетов и больших экранов
• Разрешение на показ уведомлений
• Photo Picker
• Выбор языка для приложений
• Predictive Back Gesture
• Task Manager
• Улучшение расхода заряда батарейки
• Изменения буфера обмена
• Nearby
• Новая иконка для приложений
• Java 11
• Alarm Manager
• JobScheduler
• Программируемые шейдеры
• Улучшения ART
• Разграничение доступа к медиа
• Еще больше разрешений
• Новое поведение Intent Filter
• Ограничение скорости интернета
• Ограничение доступа в Accessibility Services
• Прочие изменения

Видео: https://apptractor.ru/info/media/razbor-android-13-dlya-razrabotchikov.html
Платформа: Android
Проект нашего читателя - Six-Sided Puzzle. Это паззлы на Flutter, в которых надо собирать картинки городов.

Если у вас есть какой-то открытый интересный проект - присылайте, тоже опубликуем.

Six-Sided Puzzle на GitHub: https://github.com/AlShevelev/HexagonalPuzzle
Платформа: Flutter/кроссплатформа
⭐️: 1
👍1
Акторы в Swift

На конференции WWDC21 компания Apple представила новую фичу под названием Actors, которая решает фундаментальную проблему при написании асинхронного кода — состояний гонки.

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

Но что такое актор как сущность? Это не класс и не структура.

Статья: https://medium.com/@uladzislau.komar/%D0%B0%D0%BA%D1%82%D0%BE%D1%80%D1%8B-%D0%B2-swift-actors-in-swift-35d6618b6d02
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
10 открытых проектов, которые заставят вас полюбить Jetpack Compose

Эти 10 проектов и библиотек дадут вам толчок для изучения или глубокого погружения в Jetpack Compose. Наслаждайтесь!

Статья: https://apptractor.ru/develop/10-otkrytyh-proektov-kotorye-zastavyat-vas-polyubit-jetpack-compose.html
Платформа: Android
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Библиотека Telephoto предлагает некоторые “строительные блоки” для пользовательского интерфейса Compose. Во-первых, это замена для Image() с поддержкой жестов панорамирования и масштабирования и автоматической субдискретизации больших изображений, которые иначе не поместились бы в память. Во-вторых, это детектор жестов, упакованный как отдельный модификатор, который можно использовать с composable, не относящимися к изображению.

Telephoto на GitHub: https://github.com/saket/telephoto
Платформа: Android
⭐️: 264
Перформанс 2ГИС для Android

Каждое большое приложение однажды сталкивается с задачей — увеличить скорость запуска. Не обошла она и приложение 2ГИС на Android. Расскажу, как команда тестирования искала причины медленного запуска.

Статья: https://habr.com/ru/companies/2gis/articles/734688/
Платформа: Android
👍1👎1
Гибкая непрерывная интеграция для iOS

Многие из наших заданий CI для iOS выполняются на компьютерах Mac, что позволяет использовать инструменты для разработчиков, предоставляемые Apple. Задания CI для всех остальных платформ в Airbnb выполняются в контейнерах на Amazon EC2 Linux. Для выполнения заданий CI на macOS мы исторически поддерживали альтернативную инфраструктуру CI вне AWS специально для iOS-разработки. Появление компьютеров Mac в AWS дало нам возможность переосмыслить наш подход к iOS CI.

Статья: https://medium.com/airbnb-engineering/flexible-continuous-integration-for-ios-4ab33ea4072f
Платформа: iOS
30 советов для эффективного проектирования пользовательского интерфейса

Хорошо продуманный пользовательский интерфейс может существенно повлиять на успех продукта. Я составил список из 30 советов, которые помогут вам улучшить свои навыки проектирования пользовательского интерфейса.

Статья: https://apptractor.ru/info/articles/30-sovetov-dlya-effektivnogo-proektirovaniya-polzovatelskogo-interfeysa.html
Платформа: дизайн и прототипирование
Control Room - это приложение для macOS, позволяющее управлять симуляторами iOS, tvOS и watchOS, их внешним видом, информацией в статус баре и многим другим. Оно использует собственный инструмент командной строки simctl от Apple, поэтому вам понадобится установленный Xcode. Из фич - получение скриншотов и видео с симуляторов, в том числе с рамками устройства, настройка системного времени и даты, управление статусами Wi-Fi, сотовой сети и батареи, редактирование UserDefaults, включение темного/светлого режима, смена языка, опций доступности, указание произвольной локации для пользователя, управление приложениями, отправка тестовых пуш-уведомлений или глубоких ссылок, получение цветов прямо из симулятора.

Control Room на GitHub: https://github.com/twostraws/ControlRoom
Платформа: iOS
⭐️: 5.2K
Построения графиков в Jetpack Compose

Использование кривых Безье для улучшения построения графиков из разрозненных точек в Jetpack Compose.

Статья: https://medium.com/mobile-app-development-publication/making-graph-plotting-function-in-jetpack-compose-95c80ee6fc7f
Платформа: Android
Объяснение диапазонов в Swift с примерами кода

Диапазоны (Range) в Swift позволяют нам выбирать части строк, коллекций и других типов данных. Они являются Swift-вариантом NSRange, который мы знаем из Objective-C, хотя они и отличаются в использовании. Диапазоны позволяют нам писать элегантный Swift-код, используя всего один оператор. Ваш первый опыт работы с ними может быть связан с тем, что вам нужно выбрать диапазон символов из строки, но вы можете сделать с ними гораздо больше!

Статья: https://www.avanderlee.com/swift/ranges-explained/
Платформа: iOS/Swift
Purr - это инструмент командной строки zsh для просмотра и поиска в логах Android. Он использует fzf для обеспечения простого, но мощного пользовательского интерфейса, возможностей нечеткого поиска и многого другого.

Хотя logcat в Android Studio достаточен для большинства приложений, он ломается в таких ситуациях, как доступ только через терминал или когда требуется быстрый доступ к нескольким устройствам. При выполнении разработки на самой операционной системе Android разработчики возвращаются к использованию сырого adb logcat в shell.

Это неоптимально и тратит много времени на написание grep-запросов и копание в сплошном нефильтрованном сером тексте с плохим пользовательским опытом. Purr предназначен для решения этой проблемы - это мощная программа просмотра логов, работающая полностью в shell, способная быстро просматривать миллионы логов.

Purr на GitHub: https://github.com/google/purr
Платформа: Android
⭐️: 81
👍1
Видео и подкасты за неделю - обратите внимание, вышли все видео осеннего Mobius, аж под 40 роликов:

• (iOS En) Learn how to add SwiftLint to your iOS Apps
• (iOS En) Learn when SwiftUI re-renders views
• (iOS En) SwiftUI Gooey Effect With Shape Morphing Animation
• (iOS En) How to refactor Swift code like a pro, using Associated Values
• (iOS En) Formatted Date strings in Swift and SwiftUI
• (And Ru) ViewModels in CustomViews: как за пару секунд поменять функционал приложения
• (And Ru) @Stable vs @Immutable и анимации на Compose
• (And Ru) Gradle Review Show
• (And En) Android game graphics - OpenGL ES vs. Vulkan case study
• (And En) Squeezing out the last 5% of performance: AGDE, profile-guided optimization, and automation
• (And En) Improving game performance with Android Dynamic Performance Framework
• (And En) Now in Android: 83 - Android at Google I/O, second Beta of Android 14, and more!
• (And En) The ULTIMATE Guide to Sharing Data Between Screens in Jetpack Compose
• (And En) I've Tried the NEW Android Studio AI (Studio Bot 😱) - A True Competitor of ChatGPT?
• (Dev Ru) IT’s Tinkoff product meetup: лайфстайл
• (Dev Ru) Все видео Mobius 2022 Autumn
• (Dev Ru) Podlodka #319: как оптимизировать сложность алгоритмов
• (Mrk En) Paywall Design Examples

Посмотрели какое-то другое интересное видео? Отправьте боту -> 🧑🏻‍💻
This media is not supported in your browser
VIEW IN TELEGRAM
Squirrel (произносится как Scroll-Wheel) - приложение для macOS, которое добавляет нормальный скрол в симулятор Xcode. Теперь в нем можно скролить стандартным колесиком мыши!

Squirrel на GitHub: https://github.com/aheze/Squirrel
Платформа: iOS
⭐️: 562
👍3
Бесплатный курс "Промпт-инжиниринг ChatGPT для разработчиков"

DeepLearning.AI и OpenAI выпустили бесплатный курс, обучающий новому ключевому навыку, который нужен разработчикам для создания приложений с помощью ChatGTP. Курс представляет Эндрю Нг, основатель DeepLearningAI, соучредитель Coursera и известный многим по своему курсу машинного обучения. Основной материал предоставлен Исой Фулфорд, работницей OpenAI.

Курс: https://www.deeplearning.ai/short-courses/chatgpt-prompt-engineering-for-developers/
Платформа: обучение
Безопасная локализация строк в iOS: Localinter

Меня зовут Сергей Балалаев, я руковожу отделом разработки мобильного приложения «Пункт Ozon». Я хочу рассказать, как мы побороли типичные проблемы локализации для наших iOS-проектов, зачем собрали свой линтер для локализации и как это всё помогло упростить и автоматизировать процесс.

Статья: https://habr.com/ru/companies/ozontech/articles/734214/
Платформа: iOS
This media is not supported in your browser
VIEW IN TELEGRAM
Как создать анимированные шейдеры в Jetpack Compose

Jetpack Compose — молодой, но бурно развивающийся фреймворк для разработки под Android, который обладает множеством не всегда очевидных фичей. Сегодня я хотел бы описать одну из таких встроенных возможностей: речь идет об использовании OpenGL-шейдеров. Они позволяют делать красивые анимированные интерфейсы, как на картинке.

Статья: https://habr.com/ru/companies/timeweb/articles/736192/
Платформа: Android
👍2
Coffee Drop - UI кофейного приложения, созданный с помощью Kotlin и Jetpack Compose. Дизайн вдохновлен концептом на Dribbble. Сам же код основан на Чистой архитектуре (или, по крайней мере, на ее понимании автором). Это не полнофункциональное приложение, скорее пример отработки пользовательского интерфейса.

Coffee Drop на GitHub: https://github.com/dev-xero/coffee-drop-ui
Платформа: Android
⭐️:26
Измерение задержки старта iOS-приложений в масштабе Uber

С введением функции предварительного прогрева в iOS 15, сама ОС может принимать решение о запуске процесса приложения в памяти на основе внешних условий, которые предвидят запуск приложения пользователем. Это сокращает время, которое пользователь должен ждать, пока приложение станет доступным при следующем его тапе на иконку. Но это нововведение усложнило процесс измерения задержки холодного старта для iOS, так как теперь уже не представлялось возможным указывать время от создания процесса до первого просмотра. Это привело к пересмотру процесса измерения задержки холодного запуска в Uber.

• Задержка при запуске
• Измерение времени запуска до iOS 15
• Измерение времени запуска с предварительным прогревом
• Объединение метрик на основе пользователя и сеанса
• Обработка данных MetricKit
• Заключение

Статья: https://apptractor.ru/info/articles/izmerenie-zaderzhki-starta-ios-prilozheniy-v-masshtabe-uber.html
Платформа: iOS/Отслеживание сбоев