AppFiles - Mobile Development
2.11K subscribers
2.73K photos
38 videos
11 files
3.66K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
SwiftUI на iOS 14: преодолевая баги и улучшая перформанс в 3 раза

Меня зовут Никита, я iOS-разработчик в команде Яндекс Диска. В этой статье я расскажу про наш опыт разработки на SwiftUI с минимальным деплоймент таргетом iOS 14. Да-да, и с ним можно жить — знаю, что многие уже перешли на iOS 15 или 16, но те, кто ещё поддерживают 14 версию, могут почитать про наш кейс и облегчить себе жизнь. В статье я собрал топ-6 багов, с которыми можно столкнуться, а еще поделился, что помогает улучшить перформанс SwiftUI и ускорить ваши view в 3 раза.

Статья: https://habr.com/ru/companies/yandex360/articles/814047/
Платформа: iOS
🔥1
KotlinConf'24 - Keynote

Видео: https://www.youtube.com/watch?v=Ar73Axsz2YA
Платформа: Android
Unidoc - это масштабируемый движок документации для языка Swift. Unidoc можно рассматривать как многоцелевой аналог компилятора DocC от Apple. Он предназначен для ведения долгоживущих централизованных индексов документации, которые хранят, связывают и предоставляют несколько версий документации для многих пакетов Swift одновременно.

Swift Unidoc на GitHub: https://github.com/tayloraswift/swift-unidoc
Платформа: iOS
⭐️: 40
1
Видео и подкасты за неделю:

(iOS Ru) Объединяем Combine и Swift Concurrency
(iOS Ru) TOP 10 горячих клавиш для Xcodу
(iOS Ru) Swift Plugins: ускоряем сборку проекта
(iOS En) SwiftUI TabView Offset Reader - Scrollable Tabs
(iOS En) Meet mergeable libraries
(iOS En) Fix failures faster with Xcode test reports
(iOS En) Dive deeper into SwiftData
(iOS En) CocoaHeadsNL Meetup: Adidas Apps Architecture/Managing our large iOS App
(iOS En) 3 Advanced Tips to Code Like a Pro in Swift (from an ex-Apple engineer 🍎)
(iOS En) Hacker Text Effect - SwiftUI
(iOS En) Build your next website in Swift
(And Ru) Обсуждаем Google I/O 2024
(And Ru) Взлом и защита Android-приложений
(And Ru) Моментальный запуск: как VK Клипы работают с плейбэком видео на Android
(And En) Sustaining best performance with Android adaptability technology
(And En) Advanced graphics features in mobile games with Vulkan
(And En) 3 things to improve your Android App experience: Edge to Edge, Predictive Back, and Glance
(And En) Make it faster - Android Developers Backstage
(And En) How to Use the Google's New Screenshot Testing Framework for Compose
(And En) KotlinConf'24 - Keynote
(Crs En) How to Setup a Room DB for Kotlin Multiplatform Compose
(Dev Ru) Как собеседовать мобильных инженеров? Системный дизайн спешит на помощь! (+ другие собеседования)
(Dev Ru) Проводим и проходим Mobile System Design-интервью
(Dev Ru) Стоит ли сегодня идти в айти?
(Dev Ru) Как сделать приложение на базе ChatGPT

Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
#ios #android #mobile #video
Compose Guard - плагин Gradle для обнаружения регрессий в Jetpack Compose. Определяет такие ситуации:

• Добавлены новые перезапускаемые, но не пропускаемые @Composables
• Добавлены новые нестабильные классы (срабатывают, только если используются в качестве параметра @Composable)
• Добавлены новые @dynamic свойства
• Добавлены новые нестабильные параметры к @Composable

Compose Guard на GitHub: https://github.com/j-roskopf/ComposeGuard
Платформа: Android
⭐️: 33
👍2🔥2
Как писать игры на Swift для Playdate

Playdate это портативная консоль с черно-белым экраном и ручкой для кручения. Недавно для нее стало можно разрабатывать на Swift, я попробовал и рассказал на встрече iOS-гильдии в Додо Инжиниринге про 4 дня экспериментов.

Видео: https://apptractor.ru/info/media/kak-pisat-igry-na-swift-dlya-playdate.html
Платформа: iOS
👍2
Пишем plugin для Jetbrains IDE: отображение файлов вне проекта в Project Tool

Меня зовут Михаил, я Android-разработчик в компании Циан. Этой статьёй я открываю для себя цикл статей по внутренней кухне разработки плагинов для Jetbrains IDE: IDEA, Android Studio (AS) и пр. На дворе 2024 год, официальная документация не так богата информацией, как хотелось бы. Но есть исходники, которые смело можно дербанить. В этом цикле статей я буду описывать свой опыт поиска нужной мне информации и её разбор.

Статья: https://habr.com/ru/companies/cian/articles/816149/
Платформа: Android
Путь Android-приложения к поддержке темной темы: пример Tokopedia

В этой статье будет рассказано и объяснено, как команда Tokopedia реализовала в своем Android-приложении поддержку темного режима.

• Что нужно для начала
Базовое понимание темного режима
Вспомогательная библиотека цветов
Принудительно перевести приложение в светлый режим
• Как с минимальными усилиями преобразовать сотни модулей в темный режим?
• Скрипт автоматизации
• Как это работает
• Другие инструменты
• Лучшие практики
• Результат

Статья: https://apptractor.ru/info/articles/put-android-prilozheniya-k-podderzhke-temnoy-temy-primer-tokopedia.html
Платформа: Android
DeskPad - виртуальный монитор для шаринга экрана.

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

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

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

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

DeskPad на GitHub: https://github.com/Stengo/DeskPad
Платформа: Swift/macOS
⭐️: 793
Почему я продолжаю ставить на Flutter

Мобильные разработчики часто беспокоятся, что Google может внезапно отказаться от Flutter, как и от многих других продуктов в печально известном списке “Убитых Google«. Это справедливое опасение, но я всегда считал его маловероятным, как в 2017 году, когда я впервые вскочил на поезд Flutter, так и сейчас, в 2024 году.

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

Статья: https://apptractor.ru/info/articles/pochemu-ya-prodolzhayu-stavit-na-flutter.html
Платформа: Flutter
💩9🔥2
Библиотека Blueprint предоставляет возможность визуализировать размеры Composable в пользовательском интерфейсе с помощью простого определения на основе DSL. Работает и с превью в Android Studio.

Blueprint на GitHub: https://github.com/popovanton0/Blueprint
Платформа: Android
⭐️: 127
This media is not supported in your browser
VIEW IN TELEGRAM
Стэнфордский курс CS193P “Разработка iOS приложений в SwiftUI” Весна 2023: русскоязычный конспект с адаптацией к iOS 17

В иллюстрированных русскоязычных конспектах этого курса сделаны пометки, касающиеся изменений в iOS 17, а также восполнены некоторые фрагменты Лекций, где есть звук, но пропадает изображение, когда профессор демонстрирует что-то «в живую». Для большинства Лекций представлена версия с использование макроса @Observable вместо протокола ObservableObject, в ряде случаев это потребовало нетривиальных решений.

Статья: https://habr.com/ru/articles/816995/
Платформа: iOS
Как создать Android-приложение чат-бота с генеративным ИИ Google

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

Поэтому в Gemini имеется множество способов совершенствования того или иного продукта. Создадим приложение чат-бота с ИИ для Android, использовав SDK-пакеты чата Compose от Stream и генеративного ИИ Google для Android.

Статья: https://link.medium.com/RSJi0aFnYJb
Платформа: Android
Работает — не трогай: как Snapchat переписал свое приложение для Android

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

Статья: https://apptractor.ru/info/articles/snapchat-rewrite.html
Платформа: Android
👍1
Sword - это библиотека для инъекции зависимостей во время компиляции для Swift, вдохновленная Dagger.

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

Sword на GitHub: https://github.com/rockname/sword
Платформа: iOS
⭐️: 19
Основы iOS-разработки в Revolut

Давайте заглянем за кулисы iOS-разработки в Revolut, где мы стремимся предоставить исключительные финансовые услуги и беспроблемный опыт для клиентов, которые полагаются на наши iOS-приложения для управления своей финансовой жизнью.

Мы верим, что можно быстро создать высококачественное программное обеспечение. Для этого мы следуем ряду важных принципов и применяем ряд современных Agile-практик, в основном вдохновленных XP (eXtreme Programming).

Перевод: https://apptractor.ru/info/articles/osnovy-ios-razrabotki-v-revolut.html
Платформа: iOS
Раньше было: Основы Android-разработки в Revolut
🤮2
Openpanel — альтернатива Mixpanel с открытым исходным кодом. Это простой инструмент аналитики для регистрации событий на сайте, в приложениях и на бэкенде. Авторы попытались объединить Mixpanel и Plausible в одном продукте. Сейчас есть аналитика в реальном времени, отслеживание произвольного количества событий, любые кастомные свойства для них, графики, отчеты и воронки, хостинг в любом облаке.

SDK для мобильных платформ (кроме React Native) пока нет, но есть API.

Openpanel на GitHub: https://github.com/Openpanel-dev/openpanel
Платформа: аналитика
⭐️: 2.3K
Видео и подкасты за неделю:

(iOS Ru) Как писать игры на Swift для Playdate
(iOS Ru) Мок-собеседование iOS-разработчика. SwiftUI (+ все собеседования)
(iOS Ru) Макросы Swift: проще, чище, быстрее
(iOS Ru) Мы решили все проблемы работы в модульном проекте. Хотите так же?
(iOS En) Flip Clock Text Effect - SwiftUI
(iOS En) Expandable Search Bar using SwiftUI
(iOS En) Hacker Text Effect using SwiftUI
(iOS En) Spotlight your app with App Shortcuts
(iOS En) Update Live Activities with push notifications
(iOS En) Discover Calendar and EventKit
(iOS En) Create a great ShazamKit experience
(iOS En) How to cache the result of API calls (using NSCache)
(And Ru) Разработка новостного приложения. Часть 7. Загрузка в Google Play
(And Ru) Разработка новостного приложения. Часть 6. Что я сделал не так
(And Ru) Оптимизация Compose: проблемы, опыт, тактика, стратегия
(And En) Now in Android: 105 - I/O ‘24, Android 15, KMP, Compose, AndroidX, and more
(And En) List + Detail Screens Just Got SO MUCH Easier - NavigableListDetailPaneScaffold
(And En) Building an Android Video Calling App With the Stream SDK
(And En) Mastering Feature Flags: Best Practices with Firebase Remote Config
(And En) The Essence of Coroutines
(Crs Ru) 5 лет с Flutter: эволюция кроссплатформенности
(Crs Ru) Flutter-диета. Как сбросить вес, выпиливая модули
(Crs En) Can a backend engineer learn Flutter with AI?
(Dev Ru) Прокачиваем Code Review: как выжать максимум?
(Dev Ru) Пишем нативно под Аврора ОС как под iOS: Clean-архитектура, Coordinator и UDF
(Dev Ru) Avito Product meetup: ML-продукты
(Dev Ru) Маргарита Лукина про Frontend, высшее образование, софт-скиллы и женщин в IT
(Dev Ru) Observability, Profiling и Benchmarking как основа High Performance
(Dev En) Linear Algebra Course – Mathematics for Machine Learning and Generative AI
(Mrk En) Why Duolingo’s Engagement Strategy Won’t Work For Every App — Asya Paloni, Welltory

Посоветуйте в комментариях интересные каналы по мобильной или не очень разработке? 🌐 @AppFiles
#ios #android #mobile #video
Jetmagic - фреймворк для создания отзывчивых приложений для Android с использованием Jetpack Compose. Основная задача Jetmagic - предоставить инфраструктуру, необходимую для управления composable элементами, а вы при этом сможете сосредоточиться на создании основной задачи вашего продукта. Фреймворк состоит из следующих компонентов:

• Менеджер навигации: Замена стандартного навигационного API Jetpack Compose для Android.
• Composable Resource Manager (CRM): Обеспечивает поддержку отзывчивых макетов, позволяя приложениям легко переключаться между «макетами», подобно тому, как альтернативные xml-макеты выбираются на основе конфигурации устройства с использованием таких параметров, как язык/регион, ориентация устройства, размер экрана, плотность экрана и т. д.
• Менеджер изображений: Управляет композитными изображениями.
• Deep Linking: Обеспечивает поддержку глубоких ссылок.

Jetmagic на GitHub: https://github.com/JohannRosenberg/Jetmagic
Платформа: Android
⭐️: 158
DPE University - обучение Gradle, Apache Maven и Develocity

Разработчики Gradle запустили новый учебный портал - DPE University. Он содержит курсы для самостоятельного обучения и призван помочь разработчикам программного обеспечения и инженерам по сборке получить максимум от инструментов сборки Gradle и Maven, а также от Develocity, платформы для повышения производительности разработчиков для предприятий.

Сейчас в DPE University уже есть десять основополагающих курсов, которые можно изучать по отдельности или в рамках четырех учебных потоков:

• Кэширование сборок в Gradle
• Кэширование сборок Maven с помощью Develocity
• Кэширование Gradle с Develocity
• Основы Develocity

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

Сайт: https://dpeuniversity.gradle.com/
Платформа
: Android
1
This media is not supported in your browser
VIEW IN TELEGRAM
SweetPad - разработка Swift/iOS-приложений с помощью VSCode. Долгосрочная цель этого проекта - сделать VSCode жизнеспособной альтернативой Xcode для разработки под iOS, интегрировав в VSCode такие инструменты с открытым исходным кодом, как swift-format, swiftlint, xcodebuild, xcrun, xcode-build-server, sourcekit-lsp и так далее.

Сейчас в нем реализовано автодополнение кода, сборка, запуск и отладка приложения, форматирование кода, управление симуляторами, управление инструментами.

SweetPad на GitHub: https://github.com/sweetpad-dev/sweetpad
Платформа: iOS
⭐️: 77