AppFiles - Mobile Development
2.11K subscribers
2.67K photos
38 videos
9 files
3.59K links
Библиотеки, обучающие статьи, курсы и видео для (мобильных) разработчиков. Если есть вопросы - пишите @lbogolubov.
Download Telegram
Keyguard - это альтернативный клиент для платформы Bitwarden (открытый менеджер паролей), созданный для обеспечения наилучшего пользовательского опыта. Особенности Keyguard - Material You, мощный и быстрый поиск, поиск записи с дублированными паролями, неактивной двух-факторной аутентификацией, незащищенными веб-сайтами и дублированными, неполными или просроченными записями, прекрасная производительность, поддержка автозаполнения, поддержка множественных учетных записей с безопасным входом и двух-факторной аутентификацией, загрузка больших файлов в фоне, красивая светлая и черная темы, поддержка Chrome OS. В дополнение, у Keyguard есть притягивающие глаз анимации и плавность работы, которую вы ожидаете от лучших современных приложений.

Keyguard на GitHub: https://github.com/AChep/keyguard-app
Платформа: Android
⭐️: 529
Privacy Manifest: что нужно о нём знать для внедрения в проект

На работе я столкнулся с задачей внедрения Privacy Manifest в проект. Изучение вопроса началось с прочтения документации Apple, а продолжилось просмотром WWDC-сессии на тему конфиденциальности. После внедрения оказалось, что для корректной работы над задачей нужно изучить больше информации. Поэтому я решил поделиться опытом в формате инструкции. Покажу, как внедрять Privacy Manifest на примере вымышленного проекта, и дам практические советы по внедрению манифеста конфиденциальности.

Статья: https://habr.com/ru/companies/sberbank/articles/803445/
Платформа: iOS
Context receivers — новые extension functions

Поговорим сегодня про context receivers — фиче Kotlin, про которую я узнал давно, но смог найти применение лишь пару месяцев назад. Расскажу о том, что такое context receivers, где их можно использовать, и, конечно же, про «успешный успех» — минус 60% самописного DI в Ozon ID SDK.

Статья: https://habr.com/ru/companies/ozontech/articles/802641/
Платформа: Android
🔥2
Сделайте ваше iOS-приложение меньше с помощью динамических фреймворков

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

Статья: https://apptractor.ru/info/articles/sdelayte-vashe-ios-prilozhenie-menshe-s-pomoschyu-dinamicheskih-freymvorkov.html
Платформа: iOS
Gifu добавляет в UIKit поддержку protocol-based performance-aware анимированных GIF. Не требует использования встроенного подкласса GIFImageView. Всю тяжелую работу выполняет класс Animator, а протокол GIFAnimatable раскрывает функциональность классам представления, которые соответствуют ему, используя расширения протокола. Animator имеет FrameStore, который хранит в памяти только ограниченное количество кадров, эффективно создавая буфер для анимации, не занимая всю доступную память. Такой подход делает загрузку больших GIF-файлов гораздо более дружественной к ресурсам.

Gifu на GitHub: https://github.com/kaishin/Gifu
Платформа: iOS
⭐️: 3K
👍2
Введение в Trio

Компания Airbnb начала разработку Trio более двух лет назад и использует его в продакшене уже более полутора лет. На нем построена значительная часть работающих экранов в Android-приложении Airbnb, и он позволил нашим инженерам создавать 100% функций в Compose UI.

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

Статья: https://apptractor.ru/info/articles/vvedenie-v-trio.html
Платформа: Android
Compose Rich Editor - текстовый редактор для Jetpack Compose и Compose Multiplatform, полностью настраиваемый и поддерживающие общие функции ввода текста. Основные фичи - мультиплатформенность, простота в использовании (API Compose Rich Editor использует возможности языка Kotlin для простоты и минимального количества шаблонного кода), WYSIWYG.

Compose Rich Editor на GitHub: https://github.com/MohamedRejeb/Compose-Rich-Editor
Платформа: Android
⭐️: 764
Один «подводный камень» в Jetpack Compose и как его можно исправить

В этой небольшой статье я расскажу об одном подводном камне, с которым вы вполне можете столкнуться при использовании Jetpack Compose. Я также объясню, как его обойти. Это связано с распространением касаний, макетами и Поверхностью в composable.

Статья: https://apptractor.ru/info/articles/odin-podvodnyy-kamen-v-jetpack-compose-i-kak-ego-mozhno-ispravit.html
Платформа: Android
Оптимизация приложения для сетевой доступности

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

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

Статья: https://apptractor.ru/info/articles/optimizatsiya-prilozheniya-dlya-setevoy-dostupnosti.html
Платформа: iOS
Протокол Identifiable в SwiftUI с примерами

Протокол Identifiable позволяет выполнять итерации по коллекции объектов внутри ForEach в SwiftUI. Хотя этот протокол выглядит простым и имеет всего одно свойство, в нем легко допустить распространенную ошибку, которая может привести к неожиданному поведению вашего представления.

Статья: https://apptractor.ru/info/articles/identifiable.html
Платформа: iOS
isowords - игра для iOS по поиску слов на кубиках. Надо соединять буквы, чтобы составить слова, чем длиннее, тем лучше, а когда буква будет использована в третий раз, кубик исчезнет, открыв новые буквы внутри. isowords - это большое и сложное приложение, построенное полностью на Swift. Логика iOS-клиента построена на Composable Architecture, а пользовательский интерфейс - в основном на SwiftUI с небольшим количеством SceneKit. Сервер также построен на Swift с использованием экспериментальных библиотек.

isowords на GitHub: https://github.com/pointfreeco/isowords
Платформа: iOS
⭐️: 2.5K
Сам себе экосистема. Часть 4: как я реализовал клиент Telegram на Android-смартфоне 14-летней давности

Я решил реализовать клиент Telegram на смартфоне 14-летней давности на базе официальной реализации MTProto от команды Telegram — TDLib. Сегодня мы с вами: узнаем новые причины мотивации вернуть в строй смартфоны прошлых лет, напишем на C# реле-сервер, который обрабатывает пакеты MTProto и кодирует их в простой текстовый формат датасетов, который можно моментально обработать даже при нестабильном GPRS-соединении на 21-летнем Siemens C60, а также узнаем о разработке миниатюрных Android-приложений на базе «голого» API-системы, которые не тянут за собой никаких зависимостей, в том числе и AppCompat/androidx. Интересно?

Статья: https://habr.com/ru/companies/timeweb/articles/804033/
Платформа: Android
🔥1
Игра в безопасность Android-приложений

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

Статья: https://habr.com/ru/companies/cian/articles/804835/
Платформа: Android
Обработка сетевых вызовов в Swift с помощью Moya

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

Статья: https://apptractor.ru/info/articles/moya.html
Платформа: iOS
GreenStash - это простое cвободное и открытое приложение для Android, которое поможет вам легко планировать и управлять своими сбережениями, а также выработает привычку экономить деньги. Внутри Material 3 и Material You, биометрия, MAD (пользовательский интерфейс и логика написаны на чистом Kotlin, единая активити, никаких фрагментов, только Composable Destinations.

GreenStash на GitHub: https://github.com/Pool-Of-Tears/GreenStash
Платформа: Android
⭐️: 428
This media is not supported in your browser
VIEW IN TELEGRAM
SwiftUI Environment Overrides - небольшая библиотека, которая добавляет панель управления для тестирования того, как приложение SwiftUI адаптируется под различные цветовые темы, настройки доступности и локализации. Вдохновлена панелью "Environment Overrides" в Xcode, но позволяет проверять реальное работающее приложение вместо предварительного просмотра в Xcode.

SwiftUI Environment Overrides на GitHub: https://github.com/nalexn/EnvironmentOverrides
Платформа: iOS
⭐️: 304
Конструкторы-самозванцы в Kotlin

Сегодня я хочу поговорить про интересные моменты в Kotlin, связанные с вызовами конструкторов классов. Или не совсем конструкторов? Или же совсем не конструкторов? Давайте разбираться.

Статья: https://habr.com/ru/articles/805767/
Платформа: Android
1
This media is not supported in your browser
VIEW IN TELEGRAM
Tap Target Compose - это Jetpack Compose реализация “мишеней” (Tap Target) из Material Design, используемых для указания пользователю на новые функции.

Tap Target Compose на GitHub: https://github.com/PierfrancescoSoffritti/tap-target-compose
Платформа: Android
⭐️: 32