AppFiles - Mobile Development
2.11K subscribers
2.68K photos
38 videos
10 files
3.61K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Как я доказывал Google, что мне нужны данные юзеров, но я не скамер

Сегодня поделюсь темой, из-за которой я фрустрировал три месяца, столько же общался с проверяющими из около-гугловой компании, наблюдая, как наше приложение теряет баллы в сторе. Речь пойдёт про спортивный челлендж. Именно так, вы не ослышались. Однажды мы пригласили сотрудников посоревноваться в количестве шагов. Согласовали дизайн челленджа, выбрали название — Alfa Energy, раздали задачи продуктовой команде.

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

Статья: https://habr.com/ru/companies/alfa/articles/811835/
Платформа: Android
SwiftUI: наконец-то пора? Опыт разработки на SwiftUI в контексте UIKit приложения

Меня зовут Алексей Непомнящих и я мобильный разработчик Леруа Мерлен. В этой статье я бы хотел поделиться своим опытом внедрения первой большой фичи на SwiftUI в приложение, целиком состоящее из UIKit с минимальной требуемой версией iOS 14.

Статья: https://habr.com/ru/companies/leroy_merlin/articles/813979/
Платформа: iOS
ComposeLife - это учебный для автора проект, игра “Жизнь” на современных мультиплатформенных технологиях. Внутри Kotlin, UI на Jetpack Compose для приложения, десктопа и обложки для часов, инъекция зависимостей на kotlin-inject и context receivers, AGSL и OpenGL рендеринг, CI на GitHub Actions.

ComposeLife на GitHub: https://github.com/alexvanyo/composelife
Платформа: Android
⭐️: 109
Как создать аудиоплеер. Часть 1. Что под капотом

Меня зовут Дмитрий Булгаков, я Android-разработчик в HiFi-стриминге Звук, и я расскажу, как можно создать аудиоплеер в приложении. Поговорим об инструментах разработки и устройстве плеера — разберем его «анатомию», компоненты и их применение, а также способы улучшения звука с помощью эквалайзера.

Статья: https://habr.com/ru/companies/zvuk/articles/814017/
Платформа: Android
Скриншот-тестирование для превью Compose

Скриншот-тестирование - эффективный способ проверить, как ваш пользовательский интерфейс выглядит для пользователей. Инструмент Compose Preview Screenshot Testing сочетает в себе простоту и возможности composable превью с повышением производительности при выполнении скриншот-тестов на собственном компьютере. Compose Preview Screenshot Testing разработан для того, чтобы быть таким же простым в использовании, как и сами composable превью.

Статья: https://apptractor.ru/info/articles/skrinshot-testirovanie-dlya-prevyu-compose.html
Платформа: Android
Вышел Kotlin 2.0.0

Что нового: https://github.com/JetBrains/kotlin/releases/tag/v2.0.0
Платформа: Android
Foil - легковесная обертка свойств для UserDefaults, "сделанная по уму". Упрощает работу с локальным хранилищем и упрощает наблюдение за переменными.

Foil на GitHub: https://github.com/jessesquires/Foil
Платформа: iOS
⭐️: 425
Утечки памяти в мобильных приложениях: руководство для QA-инженеров

Меня зовут Ира и я руковожу отделом тестирования мобильной платформы: наш отдел занимается разработкой инструментов для автоматизации тестирования мобильных приложений Ozon и тестированием внутренних библиотек, которые используются в наших приложениях. Около года назад мы пытались понять, почему у одной из команд джоба с автотестами отваливается по тайм-ауту. К слову, это был проект мобильного приложения для продавцов, и на нем у нас для автоматизации тестирования используются нативные фреймворки: Kaspresso + Kotlin для Android и XCTest + Swift для iOS.

Статья: https://habr.com/ru/companies/ozontech/articles/815041/
Платформа: тестирование
Победители Global Gamers Challenge

В течение 103 дней команды придумывали, создавали, искали отзывы и дорабатывали свои проекты. В результате получились захватывающие игры, которые побуждают нас глубже задуматься о том, как мы можем жить более устойчиво. Вот Топ-10 игр победители в алфавитном порядке - с исходниками.

Статья: https://apptractor.ru/info/github/pobediteli-global-gamers-challenge.html
Платформа: Flutter
Ketch - это простая, мощная, настраиваемая библиотека загрузчика файлов для Android, полностью построенная на Kotlin. Она упрощает процесс загрузки файлов в Android-приложениях, используя возможности WorkManager. Ketch гарантирует загрузку независимо от состояния приложения.

Ketch на GitHub: https://github.com/khushpanchal/Ketch
Платформа: Android
⭐️: 167
Геймдев, про который мы забыли: как работали 2D-игры на кнопочных телефонах нулевых

А вы помните, какими были мобильные игры в 2000-х годах? Помните, как разработчики умудрялись уместить целые миры в устройство с небольшим дисплеем, аппаратной клавиатурой, весьма слабым железом и парой сотен килобайт памяти? Но задумывались ли вы, как в своё время работали эти сами игры «под капотом»? В сегодняшней статье-ретроспективе предлагаю вспомнить мобильный геймдев нулевых и узнать, как же работали 2D Java-игры, какие API были доступны и что из себя представлял средний телефон тех лет.

Статья: https://habr.com/ru/companies/timeweb/articles/814975/
Платформа: разработка
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