Demeter - open source библиотека от разработчиков из Яндекс для замера производительности работы Android приложения во время работы, чтобы после анализировать проблемы
Библиотека предназначена для использования в дебажных сборках приложения. Добавление в прод на свой страх и риск!
#android #производительность #opensource
Библиотека предназначена для использования в дебажных сборках приложения. Добавление в прод на свой страх и риск!
#android #производительность #opensource
👍36
Статья с рассказом истории написания файлового менеджера для WearOS
🛒 Приложение в Google Play
🐱 Исходный код на GitHub
#android #wearos #opensource
#android #wearos #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18
Исходный код не доступен, но автор осветил архитектуру приложения, модуляризацию, публикацию, решение проблем, локализацию
#opensource #media3 #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
Как найти неиспользуемые зависимости в Dagger Component (EN,11м)
С помощью Dagger SPI автор написал анализатор графа Dagger c целью поиска неиспользуемых зависимостей и описал подход в статье. Также подход можно использовать для визуализации графа зависимостей, считать разные метрики графа и пр.
🐱 Исходный код на GitHub
🔗 Альтернативная ссылка
#dagger #di #opensource
С помощью Dagger SPI автор написал анализатор графа Dagger c целью поиска неиспользуемых зависимостей и описал подход в статье. Также подход можно использовать для визуализации графа зависимостей, считать разные метрики графа и пр.
🔗 Альтернативная ссылка
#dagger #di #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍25
Demeter хорош тем, что он не заменяет привычные инструменты анализа производительности, а дополняет собираемую информацию для лучшего понимания скорости работы кода приложения. Также всю информацию можно увидеть прямо на экране устройства.
Инструмент имеет плагинную архитектуру и открытый исходный код, что позволяет вам сделать собственные расширения. Из коробки доступны плагины:
• Замер времени выполнения методов и добавление большей информации для профайлера
• Подсчет количества рекомпозиций в Composable функциях
• Время инициализации зависимостей из Dagger графа
(предлагайте в комментариях, какие замеры было бы полезно сделать в ваших приложениях, а я буду делиться своими)
Demeter может работать через плагин Kotlin компилятора (только с исходным кодом в вашем проекте) и/или через модификацию байткода, где уже можно следить за кодом в подключённых библиотеках без исходного кода. Подробнее можно ознакомиться в статье.
Измерять производительность на дебаг билдах смысла не имеет, так как там много лишнего, а вот когда проходит регресс или через автотесты замерять, то как раз Demeter тут будет полезен, так как важна оценка в одинаковых условиях.
Задавайте свои вопросы по библиотеке, и ещё сделаем отдельное интервью про производительность приложений и тем как за ней постоянно следить, выдерживая заданную планку качества работы.
#android #производительность #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
👍28
AstraCrypt — это бесплатное опенсорс приложение с шифрованием данных в нем
Tech Stack
- Architecture: многомодульная Clean Architecture. Presentation Pattern - MVVM.
- Build: Gradle + Convention Plugin.
- Security: Google Tink.
- Database: AndroidX Room & Paging.
- Background: Kotlin Coroutines, AndroidX Work.
- Multimedia: Coil, Exif-Interface, AndroidX DocumentFile.
- UI Framework: Jetpack Compose & Metrics.
- Navigation: AndroidX Navigation-Compose.
- Unit Tests: Junit v4, Mockk, Robolectric, KotlinX Coroutines Test.
- Persistent Data: AndroidX DataStore, KotlinX Serialization, Kotlin Parcelize.
- DI: Dagger Hilt.
- Miscellaneous: Haptic Feedback.
🛒 Скачать на Google Play
#android #opensource #пример
Tech Stack
- Architecture: многомодульная Clean Architecture. Presentation Pattern - MVVM.
- Build: Gradle + Convention Plugin.
- Security: Google Tink.
- Database: AndroidX Room & Paging.
- Background: Kotlin Coroutines, AndroidX Work.
- Multimedia: Coil, Exif-Interface, AndroidX DocumentFile.
- UI Framework: Jetpack Compose & Metrics.
- Navigation: AndroidX Navigation-Compose.
- Unit Tests: Junit v4, Mockk, Robolectric, KotlinX Coroutines Test.
- Persistent Data: AndroidX DataStore, KotlinX Serialization, Kotlin Parcelize.
- DI: Dagger Hilt.
- Miscellaneous: Haptic Feedback.
Публикация ссылки на проект не является рекомендацией использования данного продукта или то что, подходы используемые в нем рекомендуются к применению. Изучите и посмотрите что интересно вам
#android #opensource #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🤔4
// Создаем NavigationManager и передаем в него начальное состояние
val navigationManager = rememberNavigationManager(
NavigationState(
NavigationHost(
hostName = "Main",
initialDestination = FirstSampleDestination(),
)
)
)
@Parcelize
class FirstSampleDestination : ComposeDestination {
@IgnoredOnParcel
override val composable: @Composable (Destination) -> Unit = {
FirstSamplePane()
}
}
// инициализируем навигацию в Compose
Navigation(
navigationManager = navigationManager
) {
Pane(rememberNavigationHost("Main"))
}
// Пример перехода
navigationManager.execute(
ForwardCommand(SecondSampleDestination(text))
)
@Parcelize
data class SecondSampleDestination(val text: String) : ComposeDestination {
@IgnoredOnParcel
override val composable: @Composable (Destination) -> Unit = { destination ->
SecondSamplePane((destination as SecondSampleDestination).text)
}
}
Делитесь в комментариях как вам решение и я тоже пошел обсуждать
#compose #навигация #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔21🔥6❤2
Разработчик решил реализовать простую затею - обрезать видео на основе выбранного отрезка текста из расшифровки дорожки. Использовал Jetpack Media3 и EventLabs API. ПО итогу вышло приложение
🔗 Альтернативная ссылка тут
#android #androidjetpack #media3 #opensource #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥12❤1🤯1
Forwarded from Compose Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
LazyTimetable - open source Jetpack Compose библиотека для реализация lazy расписания мероприятия или в школе/универе. Работает только на Android
#compose #android #opensource
#compose #android #opensource
🔥32👍3
#opensource #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍11
Стек: Kotlin, Compose, Navigation3, Arch Components, MVVM, SQLDelight, Koin, Coroutines, Fastlane
#opensource #android #deeplink #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍33❤2
🎉 Новый инструмент управления состоянием для Flutter - yx_state
Команда Городских сервисов Яндекса разработала и выложила в опенсорс новый state management для Flutter. Около года назад они выпустили yx_scope — фреймворк для Dependency Injection.
yx_state — это набор библиотек для управления состоянием в Dart‑ и Flutter‑приложениях, созданный с фокусом на простоту использования и гибкость настройки. В наборе три библиотеки:
👉 yx_state — библиотека для управления состоянием
👉 yx_state_flutter — набор виджетов для интеграции с Flutter
👉 yx_state_transformers — набор трансформеров для управления стратегиями выполнения операций.
Ключевые особенности:
👉 Простота. Методы вместо событий — никаких дополнительных классов и маппингов.
👉 Последовательность выполнения. Если вы несколько раз подряд вызовете методы, использующие handle, то каждая новая операция будет ждать завершения предыдущей, образуя очередь.
👉 Удобство. Можно дождаться выполнения операции привычным способом через await.
👉 Гибкие стратегии. По умолчанию все операции выполняются последовательно, но можно изменить поведение на другое, например, параллельное выполнение.
👉 Глобальные переопределения. Можно настроить поведение всех StateManager в приложении в одном месте, не изменяя код каждого отдельного StateManager.
👉 Обработка ошибок. У StateManager есть встроенный механизм для обработки исключений. Если вы не перехватываете исключения, они будут автоматически перехвачены и обработаны.
👉 Интеграция с Flutter. StateBuilder для перестройки UI при изменении состояния, StateListener — виджет для выполнения сайд‑эффектов без перестройки UI и другие.
В Яндекс Про этот инструмент уже использовался для создания сотен разных фич, теперь с ним может ознакомиться каждый — исходный код уже лежит на🐱 GitHub.
❗️ Примеры и подробный обзор в статье на Хабре.
#flutter #opensource
Команда Городских сервисов Яндекса разработала и выложила в опенсорс новый state management для Flutter. Около года назад они выпустили yx_scope — фреймворк для Dependency Injection.
yx_state — это набор библиотек для управления состоянием в Dart‑ и Flutter‑приложениях, созданный с фокусом на простоту использования и гибкость настройки. В наборе три библиотеки:
👉 yx_state — библиотека для управления состоянием
👉 yx_state_flutter — набор виджетов для интеграции с Flutter
👉 yx_state_transformers — набор трансформеров для управления стратегиями выполнения операций.
Ключевые особенности:
👉 Простота. Методы вместо событий — никаких дополнительных классов и маппингов.
👉 Последовательность выполнения. Если вы несколько раз подряд вызовете методы, использующие handle, то каждая новая операция будет ждать завершения предыдущей, образуя очередь.
👉 Удобство. Можно дождаться выполнения операции привычным способом через await.
👉 Гибкие стратегии. По умолчанию все операции выполняются последовательно, но можно изменить поведение на другое, например, параллельное выполнение.
👉 Глобальные переопределения. Можно настроить поведение всех StateManager в приложении в одном месте, не изменяя код каждого отдельного StateManager.
👉 Обработка ошибок. У StateManager есть встроенный механизм для обработки исключений. Если вы не перехватываете исключения, они будут автоматически перехвачены и обработаны.
👉 Интеграция с Flutter. StateBuilder для перестройки UI при изменении состояния, StateListener — виджет для выполнения сайд‑эффектов без перестройки UI и другие.
В Яндекс Про этот инструмент уже использовался для создания сотен разных фич, теперь с ним может ознакомиться каждый — исходный код уже лежит на
#flutter #opensource
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔22🔥5❤3👍2