Komikku - бесплатная и открытая программа для чтения манги, основанная на TachiyomiSY и Mihon/Tachiyomi. Этот форк предназначен для предоставления новых и полезных функций, при этом регулярно заимствуя функции/обновления из Mihon или других форков, таких как SY, J2K и Neko.
Komikku на GitHub: https://github.com/komikku-app/komikku
Платформа: Android
⭐️: 1.2K
Komikku на GitHub: https://github.com/komikku-app/komikku
Платформа: Android
⭐️: 1.2K
Эффективный бэкграунд: организация стабильной фоновой работы в связке двух мобильных медтех приложений
В статье я поделюсь опытом нашей команды по организации стабильной фоновой работы в мобильном медтех-приложении, предназначенном для взаимодействия с медицинским оборудованием.
Статья: https://habr.com/ru/articles/886132/
Платформа: Android
В статье я поделюсь опытом нашей команды по организации стабильной фоновой работы в мобильном медтех-приложении, предназначенном для взаимодействия с медицинским оборудованием.
Статья: https://habr.com/ru/articles/886132/
Платформа: Android
Простая настройка модульности для нового приложения
В статье автор предлагает эффективный подход к модульной архитектуре iOS-приложений с использованием локальных пакетов Swift Package Manager. Основные преимущества модульности включают улучшение времени сборки, четкое разделение ответственности, повышенную тестируемость, облегчение совместной работы и возможность повторного использования кода. Предлагаемая структура разделяет проект на три основных слоя: Core, Domain и Presentation, что способствует чистой иерархии зависимостей и предотвращает циклические зависимости.
Локальные пакеты позволяют ускорить процесс разработки, устраняя необходимость управления версиями на начальном этапе. Однако автор отмечает, что тестовые цели модулей не отображаются в основной рабочей области приложения, что требует использования дополнительных инструментов для запуска тестов из консоли. В статье также рассматриваются рекомендации по управлению зависимостями между модулями, где основные модули (Core) должны иметь минимальные или отсутствующие зависимости, доменные модули (Domain) могут зависеть от основных, а модули представления (Presentation) могут зависеть от доменных и основных модулей.
Статья: https://www.manu.show/2025-02-27-simple-modularization-setup/
Платформа: iOS
В статье автор предлагает эффективный подход к модульной архитектуре iOS-приложений с использованием локальных пакетов Swift Package Manager. Основные преимущества модульности включают улучшение времени сборки, четкое разделение ответственности, повышенную тестируемость, облегчение совместной работы и возможность повторного использования кода. Предлагаемая структура разделяет проект на три основных слоя: Core, Domain и Presentation, что способствует чистой иерархии зависимостей и предотвращает циклические зависимости.
Локальные пакеты позволяют ускорить процесс разработки, устраняя необходимость управления версиями на начальном этапе. Однако автор отмечает, что тестовые цели модулей не отображаются в основной рабочей области приложения, что требует использования дополнительных инструментов для запуска тестов из консоли. В статье также рассматриваются рекомендации по управлению зависимостями между модулями, где основные модули (Core) должны иметь минимальные или отсутствующие зависимости, доменные модули (Domain) могут зависеть от основных, а модули представления (Presentation) могут зависеть от доменных и основных модулей.
Статья: https://www.manu.show/2025-02-27-simple-modularization-setup/
Платформа: iOS
Настройка Visual Studio Code для разработки iOS с использованием Copilot
А тут настраиваем Visual Studio Code в качестве среды разработки для iOS-приложений, что позволяет расширить функциональность по сравнению с Xcode. Для интеграции Xcode с VSCode предлагается установить xcode-build-server через Homebrew, что обеспечивает поддержку Language Server Protocol (LSP) и улучшает такие функции, как автодополнение и подсветка синтаксиса. Далее рекомендуется установить официальное расширение Swift для VSCode и расширение Sweetpad, которое добавляет поддержку разработки iOS-приложений в VSCode.
После установки необходимых расширений автор демонстрирует настройку iOS-проекта в VSCode на примере своего проекта iOSSampleApp. Процесс включает выбор рабочей области в панели Sweetpad, генерацию конфигурации сервера сборки и настройку отладчика с помощью файла launch.json. После завершения настройки разработчики могут использовать возможности GitHub Copilot для упрощения процесса разработки, получая предложения по автодополнению и открывая окно чата Copilot для получения ответов на вопросы о кодовой базе или реализации функций.
Статья: https://blog.kulman.sk/vscode-ios-setup/
Платформа: iOS
А тут настраиваем Visual Studio Code в качестве среды разработки для iOS-приложений, что позволяет расширить функциональность по сравнению с Xcode. Для интеграции Xcode с VSCode предлагается установить xcode-build-server через Homebrew, что обеспечивает поддержку Language Server Protocol (LSP) и улучшает такие функции, как автодополнение и подсветка синтаксиса. Далее рекомендуется установить официальное расширение Swift для VSCode и расширение Sweetpad, которое добавляет поддержку разработки iOS-приложений в VSCode.
После установки необходимых расширений автор демонстрирует настройку iOS-проекта в VSCode на примере своего проекта iOSSampleApp. Процесс включает выбор рабочей области в панели Sweetpad, генерацию конфигурации сервера сборки и настройку отладчика с помощью файла launch.json. После завершения настройки разработчики могут использовать возможности GitHub Copilot для упрощения процесса разработки, получая предложения по автодополнению и открывая окно чата Copilot для получения ответов на вопросы о кодовой базе или реализации функций.
Статья: https://blog.kulman.sk/vscode-ios-setup/
Платформа: iOS
Server-Driven UI с Compose Remote Layout
Автор представляет библиотеку для разработки Server-Driven интерфейсов с использованием Jetpack Compose и Multiplatform. Эта библиотека предоставляет основу для реализации серверно-управляемого UI в Jetpack Compose, позволяя динамически изменять структуру и содержимое пользовательского интерфейса без необходимости обновления приложения. Подход Server-Driven UI позволяет контролировать структуру и содержимое пользовательского интерфейса с серверной стороны, что обеспечивает более гибкое и динамичное взаимодействие с пользователем.
Статья: https://medium.com/@utsmannn/server-driven-ui-with-compose-remote-layout-bdc902d973f8
Платформа: Android
Еще про SDUI:
• Server-Driven UI с DivKit
• Глубокое погружение в Server-Driven UI систему Airbnb
• Реализация Server-Driven UI в Android
• Component Box: Server-driven UI на Kotlin Multiplatform
• Server Driven UI: 6 причин его НЕ использовать
• Паттерны SDUI
Автор представляет библиотеку для разработки Server-Driven интерфейсов с использованием Jetpack Compose и Multiplatform. Эта библиотека предоставляет основу для реализации серверно-управляемого UI в Jetpack Compose, позволяя динамически изменять структуру и содержимое пользовательского интерфейса без необходимости обновления приложения. Подход Server-Driven UI позволяет контролировать структуру и содержимое пользовательского интерфейса с серверной стороны, что обеспечивает более гибкое и динамичное взаимодействие с пользователем.
Статья: https://medium.com/@utsmannn/server-driven-ui-with-compose-remote-layout-bdc902d973f8
Платформа: Android
Еще про SDUI:
• Server-Driven UI с DivKit
• Глубокое погружение в Server-Driven UI систему Airbnb
• Реализация Server-Driven UI в Android
• Component Box: Server-driven UI на Kotlin Multiplatform
• Server Driven UI: 6 причин его НЕ использовать
• Паттерны SDUI
Собственная цветовая система Swift обеспечивает только базовую функциональность для представления цвета. Собственные цвета ограничены RGB и HSL, которые не обеспечивают единообразия восприятия. Это может привести к непоследовательному цветовому восприятию на разных устройствах и в разных средах. ColorTokensKit - мощная система цветовых маркеров для платформ Apple. ColorTokensKit расширяет возможности Swift, предлагая эргономичный доступ к цветовой системе LCH (Lightness, Chroma, Hue) и тысячам доступных цветов.
Фичи:
• Простой в использовании API цветовых маркеров
• Предопределенные цветовые палитры LCH
• Встроенная поддержка доступных коэффициентов контрастности
• Встроенная поддержка темного режима
• Встроенная тематика для всех приложений
• Легкое преобразование между пространствами RGB/HSL/LCH/LAB/XYZ
• Отсутствие зависимостей
ColorTokensKit на GitHub: https://github.com/metasidd/ColorTokensKit-Swift
Платформа: iOS
⭐️: 107
Фичи:
• Простой в использовании API цветовых маркеров
• Предопределенные цветовые палитры LCH
• Встроенная поддержка доступных коэффициентов контрастности
• Встроенная поддержка темного режима
• Встроенная тематика для всех приложений
• Легкое преобразование между пространствами RGB/HSL/LCH/LAB/XYZ
• Отсутствие зависимостей
ColorTokensKit на GitHub: https://github.com/metasidd/ColorTokensKit-Swift
Платформа: iOS
⭐️: 107
Заезжаем в Kotlin Multiplatform. Но какой ценой?
Использование Kotlin Multiplatform в разработке оказалось не таким болезненным, как может показаться на первый взгляд. Общая бизнес-логика действительно позволяет сократить затраты на разработку примерно на 30%, а аналогичную экономию можно получить и на тестировании.
При этом использование Jetpack Compose уже сейчас выглядит оправданным шагом, особенно если закладывать возможность перехода на Compose Multiplatform в будущем — это бесплатно и может дать преимущества. Однако полностью переходить на CMP пока рискованно, поскольку технология еще находится в стадии бета-тестирования. На данный момент разумнее всего экспериментировать с небольшими фичами, минимизируя потенциальные риски. Ну, и, конечно, с нетерпением ждем стабильной поддержки iOS в CMP, которая может значительно улучшить мультиплатформенную разработку.
Статья: https://habr.com/ru/articles/887574/
Платформа: кроссплатформа
Использование Kotlin Multiplatform в разработке оказалось не таким болезненным, как может показаться на первый взгляд. Общая бизнес-логика действительно позволяет сократить затраты на разработку примерно на 30%, а аналогичную экономию можно получить и на тестировании.
При этом использование Jetpack Compose уже сейчас выглядит оправданным шагом, особенно если закладывать возможность перехода на Compose Multiplatform в будущем — это бесплатно и может дать преимущества. Однако полностью переходить на CMP пока рискованно, поскольку технология еще находится в стадии бета-тестирования. На данный момент разумнее всего экспериментировать с небольшими фичами, минимизируя потенциальные риски. Ну, и, конечно, с нетерпением ждем стабильной поддержки iOS в CMP, которая может значительно улучшить мультиплатформенную разработку.
Статья: https://habr.com/ru/articles/887574/
Платформа: кроссплатформа
🤡3
Что такое структурированный параллелизм (Structured Concurrency)
Когда мы говорим о параллелизме Swift (Swift Concurrency), мы также часто упоминаем структурированный параллелизм (Structured Concurrency). Это фундаментальная часть async/await в Swift и она помогает нам понять, как работают последние усовершенствования Swift в области параллелизма.
До async/await мы писали наши асинхронные методы, используя замыкания и Grand Central Dispatch (GCD). Это работало хорошо, но часто приводило к так называемому аду замыканий - отсутствию понимания из-за перетекающих друг в друга связанных замыканий. Структурированный параллелизм упрощает выполнение асинхронного кода, но у нас все еще есть неструктурированные задачи. Поэтому пришло время углубиться в фундаментальный аспект параллелизма Swift.
Статья: https://apptractor.ru/info/articles/chto-takoe-strukturirovannyy-parallelizm-structured-concurrency.html
Платформа: iOS
Когда мы говорим о параллелизме Swift (Swift Concurrency), мы также часто упоминаем структурированный параллелизм (Structured Concurrency). Это фундаментальная часть async/await в Swift и она помогает нам понять, как работают последние усовершенствования Swift в области параллелизма.
До async/await мы писали наши асинхронные методы, используя замыкания и Grand Central Dispatch (GCD). Это работало хорошо, но часто приводило к так называемому аду замыканий - отсутствию понимания из-за перетекающих друг в друга связанных замыканий. Структурированный параллелизм упрощает выполнение асинхронного кода, но у нас все еще есть неструктурированные задачи. Поэтому пришло время углубиться в фундаментальный аспект параллелизма Swift.
Статья: https://apptractor.ru/info/articles/chto-takoe-strukturirovannyy-parallelizm-structured-concurrency.html
Платформа: iOS
Локализация в Jetpack Compose
Локализация относится к изменению текста приложения, форматов валют и других визуальных элементов для соответствия локали пользователя на основе его региональных предпочтений.
С введением языковых предпочтений для каждого приложения (Per-app Language Preference) в Android 13 (API уровня 33) управление языками, специфичными для приложений, стало намного проще.
Статья: https://apptractor.ru/info/articles/lokalizatsiya-v-jetpack-compose.html
Платформа: Android
Локализация относится к изменению текста приложения, форматов валют и других визуальных элементов для соответствия локали пользователя на основе его региональных предпочтений.
С введением языковых предпочтений для каждого приложения (Per-app Language Preference) в Android 13 (API уровня 33) управление языками, специфичными для приложений, стало намного проще.
Статья: https://apptractor.ru/info/articles/lokalizatsiya-v-jetpack-compose.html
Платформа: Android
Compose Permission Manager - легковесная библиотека Android, которая упрощает управление разрешениями в приложениях Jetpack Compose. Эта библиотека предоставляет композабл API для простого запроса, проверки и обработки разрешений приложений. Она поддерживает настраиваемые диалоги обоснований и настроек, проверку разрешений в манифесте и потоки разрешений с учетом жизненного цикла.
Compose Permission Manager на GitHub: https://github.com/meticha/permissions-compose
Платформа: Android
⭐️: 40
Compose Permission Manager на GitHub: https://github.com/meticha/permissions-compose
Платформа: Android
⭐️: 40
👍1
Как мы ускорили работу с базой данных в Android-приложении
Эта небольшая статья про то, как мы ускорили работу с БД в Android-приложении, исправив очевидные и не слишком ошибки.
Проблемы:
• Обращение к БД в циклах
• Хранение JSON-объектов в БД
Статья: https://habr.com/ru/companies/scanny/articles/883398/
Платформа: Android
Эта небольшая статья про то, как мы ускорили работу с БД в Android-приложении, исправив очевидные и не слишком ошибки.
Проблемы:
• Обращение к БД в циклах
• Хранение JSON-объектов в БД
Статья: https://habr.com/ru/companies/scanny/articles/883398/
Платформа: Android
Как очистить Xcode от мусора и освободить ценное дисковое пространство на вашем Mac
Окончательное и бесповоротное руководство по очистке Mac от мусора Xcode.
Статья: https://apptractor.ru/info/articles/kak-ochistit-xcode.html
Платформа: iOS
Окончательное и бесповоротное руководство по очистке Mac от мусора Xcode.
Статья: https://apptractor.ru/info/articles/kak-ochistit-xcode.html
Платформа: iOS
👍5
Начинаем работу с Imagen 3 в Android-приложении через Vertex AI в Firebase
Imagen 3 — самая передовая модель генерации изображений, теперь доступна через Vertex AI в Firebase, что еще больше упрощает ее интеграцию в ваши приложения для Android.
Разработанная для создания хорошо продуманных композиций с исключительной детализацией, уменьшением артефактов и богатым освещением, Imagen 3 представляет собой значительный скачок вперед в возможностях генерации изображений.
Статья: https://apptractor.ru/info/articles/imagen-3-v-android.html
Платформа: Android
Imagen 3 — самая передовая модель генерации изображений, теперь доступна через Vertex AI в Firebase, что еще больше упрощает ее интеграцию в ваши приложения для Android.
Разработанная для создания хорошо продуманных композиций с исключительной детализацией, уменьшением артефактов и богатым освещением, Imagen 3 представляет собой значительный скачок вперед в возможностях генерации изображений.
Статья: https://apptractor.ru/info/articles/imagen-3-v-android.html
Платформа: Android
VisualDebugger - элегантный и простой способ визуализации данных в исходных файлах. Особенности: поддерживает нескольких систем координат (yUp, yDown), визуальная отладка Mesh структур, визуальная отладка коллекций точек с настраиваемыми стилями, визуальная отладка кривых Безье, поддержка платформ iOS и macOS, гибкая система настройки стилей, детальное отображение и маркировка координатных осей.
VisualDebugger на GitHub: https://github.com/chenyunguiMilook/VisualDebugger
Платформа: iOS
⭐️: 23
VisualDebugger на GitHub: https://github.com/chenyunguiMilook/VisualDebugger
Платформа: iOS
⭐️: 23
🔥1
Руководство по использованию unsafe в Swift
Использование unsafe в Swift открывает дополнительные возможности для оптимизации и взаимодействия с C API, однако требует повышенной внимательности и тщательного контроля за управлением памятью. При грамотном подходе и использовании встроенных механизмов, таких как withUnsafe* и Unmanaged, можно безопасно интегрировать низкоуровневые операции в высокоуровневые приложения. Главное — не злоупотреблять прямыми указателями и ограничивать область их применения, документируя и тестируя каждое изменение.
Статья: https://habr.com/ru/articles/887914/
Платформа: iOS
Использование unsafe в Swift открывает дополнительные возможности для оптимизации и взаимодействия с C API, однако требует повышенной внимательности и тщательного контроля за управлением памятью. При грамотном подходе и использовании встроенных механизмов, таких как withUnsafe* и Unmanaged, можно безопасно интегрировать низкоуровневые операции в высокоуровневые приложения. Главное — не злоупотреблять прямыми указателями и ограничивать область их применения, документируя и тестируя каждое изменение.
Статья: https://habr.com/ru/articles/887914/
Платформа: iOS
Хабр
Руководство по использованию unsafe в Swift
В этой статье мы рассматрим различные подходы для работы с небезопасными операциями в языке программирования Swift. Swift предоставляет несколько способов для работы с указателями и низкоуровневой...
Как iOS-приложение Tinder сократило размер локализаций на 95%
В целом эти усилия привели к уменьшению размера загружаемого файла на 10,7 МБ и уменьшению размера устанавливаемого приложения на 51,3 МБ без какого-либо ущерба для разработчиков или конечных пользователей.
Статья: https://apptractor.ru/info/articles/kak-ios-prilozhenie-tinder-sokratilo-razmer-lokalizatsiy-na-95.html
Платформа: iOS
В целом эти усилия привели к уменьшению размера загружаемого файла на 10,7 МБ и уменьшению размера устанавливаемого приложения на 51,3 МБ без какого-либо ущерба для разработчиков или конечных пользователей.
Статья: https://apptractor.ru/info/articles/kak-ios-prilozhenie-tinder-sokratilo-razmer-lokalizatsiy-na-95.html
Платформа: iOS
Обработка истечения срока действия токена в Ktor: автоматическое обновление токенов для вызовов API
В статье обсуждается проблема истечения срока действия токенов в Ktor-приложениях и способы её автоматического решения. Автор объясняет, как правильно организовать механизм обновления токена, чтобы избежать ошибок при выполнении API-запросов. Рассматривается использование Ktor HttpClient и механизмов плагинов для перехвата ответов сервера с ошибкой аутентификации. Приводится реализация кастомного плагина, который автоматически обновляет токен и повторяет запрос без вмешательства пользователя. В завершение статьи описаны потенциальные проблемы, такие как гонки обновления токена, и предлагаются способы их предотвращения.
Статья: https://proandroiddev.com/handling-token-expiration-in-ktor-automatic-token-refresh-for-api-calls-e79badd379dc
Платформа: Android
В статье обсуждается проблема истечения срока действия токенов в Ktor-приложениях и способы её автоматического решения. Автор объясняет, как правильно организовать механизм обновления токена, чтобы избежать ошибок при выполнении API-запросов. Рассматривается использование Ktor HttpClient и механизмов плагинов для перехвата ответов сервера с ошибкой аутентификации. Приводится реализация кастомного плагина, который автоматически обновляет токен и повторяет запрос без вмешательства пользователя. В завершение статьи описаны потенциальные проблемы, такие как гонки обновления токена, и предлагаются способы их предотвращения.
Статья: https://proandroiddev.com/handling-token-expiration-in-ktor-automatic-token-refresh-for-api-calls-e79badd379dc
Платформа: Android
👍1
Почему в Android нет функции main?
В языках программирования, таких как C и Java, функция
Статья: https://medium.com/@sevbanbuyer/why-is-there-no-main-function-in-android-1198032a5a15
Платформа: Android
В языках программирования, таких как C и Java, функция
main служит точкой входа, с которой начинается выполнение программы. Однако в Android-приложениях отсутствует явная функция main. Это связано с архитектурой Android, где управление жизненным циклом приложения берет на себя операционная система. Вместо функции main, Android использует манифестный файл (AndroidManifest.xml), в котором указывается основная активность (Activity) приложения. Эта активность помечается фильтром намерений (intent-filter) с действиями MAIN и категорией LAUNCHER, что позволяет системе определить, с какой активности начинать выполнение приложения. Таким образом, точка входа в Android-приложении определяется не явной функцией main, а конфигурацией в манифесте, что обеспечивает гибкость и модульность в управлении компонентами приложения.Статья: https://medium.com/@sevbanbuyer/why-is-there-no-main-function-in-android-1198032a5a15
Платформа: Android
This media is not supported in your browser
VIEW IN TELEGRAM
Симметричные и асимметричные переходы в SwiftUI с помощью модификатора Scroll Transition
В статье рассматривается использование нового модификатора
Статья: https://www.createwithswift.com/symmetrical-and-asymmetrical-transitions-in-swiftui-with-the-scroll-transition-modifier/
Платформа: iOS
В статье рассматривается использование нового модификатора
scrollTransition, представленного в iOS 17, для создания анимаций при появлении и исчезновении представлений в прокручиваемых контейнерах. Этот модификатор позволяет создавать динамичные визуальные эффекты, привлекающие внимание к элементам интерфейса при их входе или выходе из видимой области.Статья: https://www.createwithswift.com/symmetrical-and-asymmetrical-transitions-in-swiftui-with-the-scroll-transition-modifier/
Платформа: iOS
Lynx - новый кроссплатформенный фреймворк
Как любитель кроссплатформенных решений не могу пройти мимо!
Сегодня представили и выложили в open source Lynx - семейство технологий, позволяющих разработчикам использовать имеющиеся у них навыки работы в Интернете для создания по-настоящему нативных пользовательских интерфейсов для мобильных и веб-приложений на основе единой кодовой базы. Разработанный для различных сценариев использования и богатой интерактивности, Lynx обеспечивает яркие и привлекательные пользовательские интерфейсы для таких масштабных приложений, как TikTok (глава проекта - нынешний архитектор ByteDance, бывший React-инженер в компании на M), благодаря быстрому и универсальному движку рендеринга, двухпоточному программированию пользовательского интерфейса, современному инструментарию на основе Rust и многому другому.
Lynx уже готов к продакшену и уже используется огромным количеством компаний. Сегодня выложили в открытый доступ именно ту версию, которую используем в проде, поэтому она начинается с версии 3.x. Она включает в себя даже устаревший код и API, которые намерены изжить, но разработчики верят в открытость исходного кода и помощь сообщества.
Платформа: кроссплатформа
Как любитель кроссплатформенных решений не могу пройти мимо!
Сегодня представили и выложили в open source Lynx - семейство технологий, позволяющих разработчикам использовать имеющиеся у них навыки работы в Интернете для создания по-настоящему нативных пользовательских интерфейсов для мобильных и веб-приложений на основе единой кодовой базы. Разработанный для различных сценариев использования и богатой интерактивности, Lynx обеспечивает яркие и привлекательные пользовательские интерфейсы для таких масштабных приложений, как TikTok (глава проекта - нынешний архитектор ByteDance, бывший React-инженер в компании на M), благодаря быстрому и универсальному движку рендеринга, двухпоточному программированию пользовательского интерфейса, современному инструментарию на основе Rust и многому другому.
Lynx уже готов к продакшену и уже используется огромным количеством компаний. Сегодня выложили в открытый доступ именно ту версию, которую используем в проде, поэтому она начинается с версии 3.x. Она включает в себя даже устаревший код и API, которые намерены изжить, но разработчики верят в открытость исходного кода и помощь сообщества.
Этот релиз - только начало. То, что мы открываем сегодня, - далеко не все. Множество периферии, которой мы гордимся, в том числе дополнительные компоненты пользовательского интерфейса, расширенные встроенные графические возможности, пользовательский рендерер и другие фреймворки, еще впереди.
Платформа: кроссплатформа
🤔2
Firebase SignIn With Email And Password - приложение на Kotlin, которое показывает, как аутентифицировать пользователей с помощью Firebase, используя компоненты архитектуры Android и архитектурный паттерн MVVM. Для создания пользовательского интерфейса используется Jetpack Compose.
Firebase SignIn With Email And Password на GitHub: https://github.com/alexmamo/FirebaseSignInWithEmailAndPassword
Платформа: Android
⭐️: 39
Firebase SignIn With Email And Password на GitHub: https://github.com/alexmamo/FirebaseSignInWithEmailAndPassword
Платформа: Android
⭐️: 39