AppFiles - Mobile Development – Telegram
AppFiles - Mobile Development
2.14K subscribers
2.83K photos
38 videos
11 files
3.76K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Destinations - управление потоком навигации

Destinations — это библиотека Swift для UIKit и SwiftUI, разработанная для полного разделения пользовательского интерфейса и управления потоком навигации. Она основана на философии, которая подчеркивает четкое разделение задач, то есть каждый значимый View или UIViewController в приложении не должен знать о других, и то, что пользовательский интерфейс и функциональность должны легко заменяться по мере изменения потребностей. Destinations позволяет вашим пользовательским интерфейсам снова сосредоточиться на пользователе.

• Обеспечивает четкое разделение задач между вашими интерфейсами, источниками данных и другой логикой приложения.
• Позволяет легко заменять пользовательский интерфейс и источники данных для A/B-тестирования или предоставления тестовых моков.
• Сокращает время разработки — предоставляет встроенные реализации для многих типов представления системы, уменьшает объем кода по мере изменения функциональных потоков.
• Обеспечивает удобную возможность глубокой привязки.
• Предоставляет возможность отображать и тестировать разделы ваших приложений изолированно.
• Гибкая и расширяемая система на основе протоколов, соответствующая потребностям вашего проекта, включая пользовательский интерфейс.
• Аналогичный API как для UIKit, так и для SwiftUI, и достаточно универсальный, чтобы обеспечить поддержку других платформ. Поддерживает приложения на основе UIKit и SwiftUI, а также гибридные приложения с контентом SwiftUI, размещенным в контроллерах UIKit.

Destinations на GitHubhttps://github.com/poetmountain/Destinations
Платформа: iOS
⭐️: 18

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как не сломать Android-приложение при защите от реверса

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

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

Далее мы разберем, какие участки Android‑приложения можно защитить одной кнопкой, что требует настройки, а что трогать нельзя.

Статья: https://habr.com/ru/companies/pt/articles/990092/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Про то, как я Storage Access Framework укрощал, да файлы в хранилище приручал

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

Но вот однажды пользователи стали жаловаться, что не могут найти ранее подписанные документы. Бывало, пользователь подписал файл, долго к нему не возвращался, а спустя время уже не смог его отыскать. Переустановил приложение или авторизовался с другого устройства, и все файлы как в воду канули.

Меня зовут Георгий Левченко, я Android-разработчик в ПСБ. Начал я искать источник бед пользовательских. Оказалось, виной всему было то, что все файлы хранились в кэш-директории приложения. Понял я: чтобы файлы не пропадали, им нужен менеджмент для файлов. Отыскался у Android для таких целей готовый инструмент — Storage Access Framework (SAF), он служит для доступа к файлам через стандартный интерфейс без управления разрешениями вручную. Поведаю под катом, как я решал с его помощью эту задачу.

Статья: https://habr.com/ru/companies/psb/articles/991676/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему Senior iOS-разработчики всё ещё проваливаются на System Design интервью

Вы когда-нибудь задумывались, почему программист с 8–10+ годами опыта уверенно пишет сложный код в Xcode, но за белой доской в интервью у него словно отключается «второе полушарие»? Опытный iOS-разработчик отлично знает Swift и архитектуру MVVM/Clean, но интервью по System Design проверяет не просто знания фреймворков. Это совсем другой навык — умение строить масштабирующиеся системы, аргументировать архитектурные решения и чётко объяснять свои мысли под давлением.

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

Статья: https://blog.stackademic.com/groww-ios-interview-why-senior-developers-still-fail-system-design-da24e34e4382
Платформа: iOS/System Design

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Ошибка, которую я не мог воспроизвести — пока не перестал тестировать на своём телефоне

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

«Приложение постоянно перезапускается после того, как я делаю снимок».

Оно не зависало и не выдавало ошибок. Просто закрывалось и перезапускалось.

Самое странное, что на моём телефоне всё работало идеально. И на устройствах моих коллег тоже.

Поначалу это казалось какой-то «призрачной ошибкой», которая проявляется только тогда, когда пользователь находится далеко, и вы не видите его экран.

Но это приложение — инструмент на основе GPS для сбора данных. Пользователи сканируют штрихкод, чтобы предотвратить дублирование активов, заполняют несколько экранов с подробными данными, делают снимки, регистрируют серийные и модельные номера, и мы сохраняем всё локально перед синхронизацией с сервером. Изображения автоматически сжимаются до 100 КБ или меньше, поэтому загрузка работает даже в медленных сетях.

Это серьёзный рабочий процесс. Не приложение типа «заполнил одну форму и отправил».

И где-то внутри этого процесса всё начало разваливаться.

Статья: https://apptractor.ru/info/articles/oshibka-kotoruyu-ya-ne-mog-vosproizvesti-poka-ne-perestal-testirovat-na-svoyom-telefone.html
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Обратное маскирование в SwiftUI с использованием режимов наложения

Представьте себе карточку, залитую цветом, на поверхности которой вырезана фигура.

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

В UIKit вы можете использовать Core Graphics или маски слоев.

В SwiftUI решение заключается в режимах наложения.

Статья: https://apptractor.ru/info/articles/obratnoe-maskirovanie-v-swiftui-s-ispolzovaniem-rezhimov-nalozheniya.html
Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Skelter Project - готовый шаблон проекта на Flutter

Skelter Project - готовый проект, включающий в себя лучшие практики, современную архитектуру и шаблонный код для быстрой разработки приложений.

Технологический стек:

• Flutter: ^3.35.7
• Dart SDK: ^3.9.2
• Управление состояниями: BLoC
• Навигация: Auto Route
• Бэкенд: Firebase (Core, Analytics, Crashlytics, Auth)
• Аутентификация: Firebase Auth, Google Sign-In, Apple Sign-In
• UI-компоненты: кастомные виджеты, Flutter SVG, эффекты мерцания
• Тестирование: Flutter Test, Bloc Test, Alchemist (Golden Tests), Mocktail
• Генерация кода: Build Runner, Auto Route Generator, Flutter Gen Runner

Skelter Project на GitHub: https://github.com/solguruz/skelter
Платформа: кроссплатформа/Flutter
⭐️: 79
Combine умер?

Да, Combine теряет часть своей роли на фоне Swift Concurrency и новых средств наблюдения.

Но ни официально не признан устаревшим, ни полностью не прекращает быть полезным, особенно в существующих кодовых базах и для определённых архитектурных задач.

Платформа: iOS

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Как мы помогали Стэнфорду следить за акулами

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

Продолжаем рассказывать об интересных проектах студентов ФИИТ. В этот раз речь пойдёт о приложении для интерактивного мониторинга белых акул по заказу Стэнфордского университета. 🦈 В статье ребята рассказали, какие возможности реализовали внутри приложения, какой стек технологий выбрали и что за сложности случились на фронтенде и бэкенде.

Статья: https://habr.com/ru/companies/skbkontur/articles/992662/
Платформа: разработка

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Модульная архитектура — это не просто теория, вот доказательства

Среднестатистический разработчик, если его попросят дать определение модульности, вероятно, скажет что-то вроде:

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

Здесь нет ничего неверного, но это опасно неполно; отсутствует объяснение того, почему это важно — а это крайне важно для понимания того, что такое хорошая модульность.

Статья: https://apptractor.ru/info/articles/modulnaya-arhitektura-eto-ne-prosto-teoriya-vot-dokazatelstva.html
Платформа: iOS/архитектура

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Kotlin Android MVVM Template - шаблон Android-приложения

Kotlin Android MVVM Template - простой и легкий шаблон для приложения Jetpack Compose с полностью настроенной навигацией, Retrofit и Dagger-Hilt для вашего удобства, чтобы вы могли сосредоточиться только на важном.

Фичи:

• Полностью на Jetpack Compose
• Jetpack Compose Navigation
• Полностью настроенный Retrofit 
• MVVM
• Kotlin DSL
• Gradle Version Catalog для инъекции зависимостей
• detekt для проверки кода
• Dependabot для обновления зависимостей
• GitHub Actions CI/CD для проверки линтера, тестов и сборки APK
• Coil для изображений

Kotlin Android MVVM Template на GitHub: https://github.com/its-me-debk007/kotlin-android-mvvm-template
Платформа: Android
⭐️: 62

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Под капотом Android Automotive: Что такое VHAL и почему это сердце машины

В прошлой статье мы запустили эмулятор и убедились, что Android Automotive OS (AAOS) — это не просто зеркало вашего телефона. Это самостоятельная экосистема. Но пока мы запускали только стандартные медиа-плееры, мы скользили по поверхности.

Настоящая магия начинается там, где софт встречается с «железом».

В телефоне у вас есть стандартный набор датчиков: GPS, акселерометр, гироскоп. В современном автомобиле таких датчиков тысячи: от давления в шинах и температуры масла до угла поворота руля и статуса каждой двери. Как Android-разработчику получить доступ к этому океану данных? Не будем же мы тянуть провода к OBDII разъему?

Конечно, нет. Для этого Google построила мощный мост, по которому мы сегодня и пройдемся. Добро пожаловать в мир Car API и VHAL.

Статья: https://habr.com/ru/articles/992868/
Платформа: Android

👨‍🦯‍➡️ AppFiles: код, инструменты, практики, производительность
Please open Telegram to view this post
VIEW IN TELEGRAM