Inure App Manager - Android приложение с открытым исходным кодом для управления другими приложения, получением информации и их модификацией
Установить из Google Play, а полная версия уже за деньги
#android #пример #opensource
Установить из Google Play, а полная версия уже за деньги
#android #пример #opensource
👍11
Forwarded from Тест-раннер Emcee
Всем привет! Подготовили для вас последний в текущем году релиз. Что нового:
1⃣ Артефакты для xctestrun конфигов обрабатываются еще быстрее;
2⃣ улучшили механизм дискаверинга нативных iOS тестов;
3⃣ пофиксили баг, при котором очередь могла внезапно потерять бакет из-за перезапуска воркера;
4⃣ добавили возможность использования env- переменных в emceeplan файле для чувствительных данных - вроде пароля для artifactory user;
5⃣ добавили ресурсов в облако и сделали его работу еще быстрее.
Напоминаем, что попробовать Emcee можно бесплатно на 10 воркерах➕ при регистрации в облаке в января предоставляем 300 минут для прогона ваших тестов бесплатно! 🎁
Всех с наступающим Новым годом, до встречи в 2025!🌲
Напоминаем, что попробовать Emcee можно бесплатно на 10 воркерах
Всех с наступающим Новым годом, до встречи в 2025!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Я занимаюсь разработкой неофициального Kotlin Multiplatfrom клиента сервиса Frame.io под Android, Desktop и iOS.
Уже вышло 7 видео:
- О проекте
- Генерация клиента REST API через Open API схему
- Создание и настройка проекта в Android Studio
- Настройка GitHub Репозитория
- Что важно учесть на этапе дизайна. Дизайн приложения FrameIO
- Настройка UI Kit на основе Material3
- Реализация работы с Frame.io REST API
Вы также получите доступ к исходном коду на GitHub и дизайну на Figma! Всё обсуждение ведем в Telegram чате
Чтобы получить доступ надо оформить подписку уровня Senior или выше, либо за единоразовую оплату навсегда
#AndroidBroadcast #видео #frameio
Уже вышло 7 видео:
- О проекте
- Генерация клиента REST API через Open API схему
- Создание и настройка проекта в Android Studio
- Настройка GitHub Репозитория
- Что важно учесть на этапе дизайна. Дизайн приложения FrameIO
- Настройка UI Kit на основе Material3
- Реализация работы с Frame.io REST API
Вы также получите доступ к исходном коду на GitHub и дизайну на Figma! Всё обсуждение ведем в Telegram чате
Чтобы получить доступ надо оформить подписку уровня Senior или выше, либо за единоразовую оплату навсегда
#AndroidBroadcast #видео #frameio
👍23
Итоги года для @android_broadcast впечатляют 🤯
📈 Выросли по количеству подписчиков с 12.8 тыс до 13.9. Совсем чуть-чуть остаётся до 14 тыс
🔥 Для вас все 6 лет канала работает единственный автор - Кирилл Розов. Залетайте в мой блог @rozov_blog
🚀 Ваш интерес к каналу только растёт, что заряжает меня работать дальше
Если вам интересно узнать результаты других моих каналов - заходите:
🏝 @kotlin_broadcast
🔨 @compose_broadcast
🍏 @ios_broadcast
Я же буду отдыхать и готовить для вас новый контент в видео формате на📹 YouTube и 📹 VK Video, и много экcлюзива на 🪙 Boosty!
Увидимся с вами в 2025 года
Если вам интересно узнать результаты других моих каналов - заходите:
Я же буду отдыхать и готовить для вас новый контент в видео формате на
Увидимся с вами в 2025 года
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥50🎉18👍11❤2
Привет всем в этом году. За каникулы я занялся обновлением библиотеки ViewBindingPropertyDelegate. Изменил подход к сбросу ViewBinding и убрал ненужные проверки, что в итоге обеспечило библиотеки надёжную работу и решило проблемы с анимациями. Библиотека получает новую мажорную версию, так как меняется очистка под капотом и меняется API получения делегатов.
Ищу добровольцев, кто будет готов попробовать миграцию на 2.0 Release Candidate и поделиться тем, как работает новая версия в вашем коде.
Ищу добровольцев, кто будет готов попробовать миграцию на 2.0 Release Candidate и поделиться тем, как работает новая версия в вашем коде.
👍44🔥14❤2
Media Performance Classes (MPC) - фича Android 12, которая позволяет понять уровень производительности устройства и от него менять возможности вашего приложения. Каждую версию Android обновляются требования для соответствия классу новой версии ОС. Также функция доступна и через Jetpack Performance Core, а информация о классе устройства обновляется через Google Play Services.
Google Maps поделились своим примером использовантия MPC для оптимизации доступности функционала карт
#android #производительность #jetpack
// Пример использования
class MyActivity : Activity() {
@Inject lateinit var devicePerformance: DevicePerformance
override fun onResume() {
super.onResume()
when {
devicePerformance.mediaPerformanceClass >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE -> {
// MPC level 34+
// Самое современное устройство. Стоит включать всё
}
devicePerformance.mediaPerformanceClass == Build.VERSION_CODES.TIRAMISU -> {
// MPC level 33.
// Мощное, но не флагман
}
else -> {
// MPC level 31, 30 или не определено
// Удаляйте дополнительные плюшки для лучшей скорости работы
}
}
}
}
Google Maps поделились своим примером использовантия MPC для оптимизации доступности функционала карт
#android #производительность #jetpack
👍55
Android команда из Google сделала курс по Rust с нуля и до сложных фичей. Курс будет полезен Android разработчикам, кто работает с NDK. Также в курсе освещается работа с Chromium, Bare-metal и многопоточность
Курс также можно скачать как PDF
#android #ndk #rust
Курс также можно скачать как PDF
#android #ndk #rust
👍42🔥25❤15
Media is too big
VIEW IN TELEGRAM
👉 Больше AI функций с Gemini
👉 Поддержка превью анимаций для WearOS тайлов
👉 Эмулятор WearOS теперь поддерживает Health Services
👉 App Links Assistant упростит реализацию App Link
👉 Интеграция с Google Play SDK Insights. Прямо в IDE будут предупреждения про необходимость обновления зависимостей
👉 Motion Editor deprecated и будет удалён в следующем релизе Android Studio. Пользуйтесь Compose инструментами
👉 Новая панель с сенсорами, которая позволит симулировать возможности сенсора
🛠 Исправили 770 багов
Подробнее про изменения тут
#androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥39👍10
Android разработчик с большим опытом публикации open source делится советами (EN, 18м) по разработке подобных проектов
#opensouce
#opensouce
🔥21👍9
Google объявила запустили коалицию «Сторонников браузеров на основе Chromium» в которую вошли Google, Linux Foundation, Microsoft, Opera и Meta
Управлять фондом будет Linux Foundation, отдавая приоритет прозрачности, инклюзивности и развитию, основанному на интересах сообщества.
Скорее всего создание инициативы являются реакцией на действия Министерство юстиции США, требующего от Google продать Chrome
#chome #google
Управлять фондом будет Linux Foundation, отдавая приоритет прозрачности, инклюзивности и развитию, основанному на интересах сообщества.
Скорее всего создание инициативы являются реакцией на действия Министерство юстиции США, требующего от Google продать Chrome
#chome #google
👍32🤯17❤3
👍6🤯2❤1
Xiaomi изменила политику разблокировки загрузчика HyperOS (ОС, основаная на AOSP) на своих устройствах в Китае, начиная с 2025 года. Если раньше каждый пользователь мог разблокировать в год до трёх гаджетов, то теперь количество сократили до одного.
Всё это делается чтобы смартфоны не перепрошивали на глобальные версии и не продавали их дешевле за пределы Китая. Также тут есть и борьба с модами. Компания Xiaomi начинала как разработчик кастомных iPhone подобных прошивок для Android смартфонов, а вот теперь начала борьбу с модификацией софта своих устройств 😔
#xiaomi #hyperos
Всё это делается чтобы смартфоны не перепрошивали на глобальные версии и не продавали их дешевле за пределы Китая. Также тут есть и борьба с модами. Компания Xiaomi начинала как разработчик кастомных iPhone подобных прошивок для Android смартфонов, а вот теперь начала борьбу с модификацией софта своих устройств 😔
#xiaomi #hyperos
🤯45👍5
🎉 Готовится к релиз ViewBindingPropertyDelegate 2.0.0
Уже доступна первая Beta версия следующей мажорной версии. В ней я переработал механизм отслеживания момента, когда уничтожается View в Fragment и Activity, что позволило избавиться от костылей для решения проблем и ненужные проверки момента цикла.
В новой версии изменились артефакты, базовый пакет классов и API создания ViewBinding делегата.
Применить новую библиотеку можно без замены предыдущей и выполнить миграцию или проверить отдельные компоненты вашего приложения. Буду очень признателен вам за отзыв!
❗️ ДА-ДА. Знаю что скоро вот-вот уже Compose заменит View, но еще много кто использует View и продолжает
#android #viewbinding
Уже доступна первая Beta версия следующей мажорной версии. В ней я переработал механизм отслеживания момента, когда уничтожается View в Fragment и Activity, что позволило избавиться от костылей для решения проблем и ненужные проверки момента цикла.
В новой версии изменились артефакты, базовый пакет классов и API создания ViewBinding делегата.
Применить новую библиотеку можно без замены предыдущей и выполнить миграцию или проверить отдельные компоненты вашего приложения. Буду очень признателен вам за отзыв!
#android #viewbinding
Please open Telegram to view this post
VIEW IN TELEGRAM
❤43🤯13👍12
Разработчик поделился как после внедрения в приложения диалога "Поставьте оценку" от Google Play выросло количество оценок. В статье эффект и инструкция по интеграции с кодом.
Библиотека для отзывов из приложения - Google Play In-App Reviews API
Всё это выглядит как правда, потому что система отзывов в магазине - это не самый простой раздел для поиска.
#googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20
В каком соотношении у вас UI на Compose и XML UI в Android? (примерные цифры)
Anonymous Poll
25%
Только Compose 🏆
9%
Практически всё на Compose
10%
Большая часть на Compose ⚙️
17%
Большая часть на XML UI
13%
Практически всё на XML UI
17%
Только 100% XML UI
1%
Не пишу под Android
8%
Не участвую в опросе
👍8
Вышла LineageOS 22.1
Что нового:
👉 Основана на Android 15
👉 Обновление
👉 Переделали утилиты от ОС
👉 Новое приложения для проигрывания музыки (нужно ли с сервисами музыки)
#android #lineageos
Что нового:
👉 Основана на Android 15
👉 Обновление
👉 Переделали утилиты от ОС
👉 Новое приложения для проигрывания музыки (нужно ли с сервисами музыки)
#android #lineageos
❤17👍4🔥3
Не используйте null для отсутcтвия состояния в UI
Сталкиваюсь с решениями разработчиков, когда они используют null для задания состояния UI по умолчанию. Мне такой подход не нравится 😡. У элементов обычно всегда есть начально состояние. Например, прогресс скрыт, данных списка нету, и др. Либо вовсе эти элементы не показываются и используется экран-заглушка
В коде я выражаю такое состояние следующим образом
также Default можно заменить на ссылку на другое состояние, и при этом не сломать код выше
Использование null вместо Default приведет к неудобным аспектам работы с кодом:
1. Придется использовать null safety или операторы Flow для работы с null
2. Любые задания начальных состояний UI элементов придется привязывать не через поле в объекте состояния, а через связывание с null состоянием
3. Расширить/изменить null нельзя, а вот класс можно дополнить полями/методами и включить в анализ кода
#android #compose #AndroidBroadcast #БазаЗнаний
Сталкиваюсь с решениями разработчиков, когда они используют null для задания состояния UI по умолчанию. Мне такой подход не нравится 😡. У элементов обычно всегда есть начально состояние. Например, прогресс скрыт, данных списка нету, и др. Либо вовсе эти элементы не показываются и используется экран-заглушка
В коде я выражаю такое состояние следующим образом
private val _screenState =
MutableStateFlow<ScreenState>(ScreenState.Default)
val screenState = _screenState.asStateFlow()
sealed interface ScreenState {
object Default : ScreenState // Иногда называю None
data class DataLoaded(...) : ScreenState
data class Loading(...): ScreenState
}
@Composable
fun MyScreen() {
val state: ScreenState by stateFlow.collectAsState()
MyScreen(state)
}
@Composable
fun MyScreen(state: ScreenState): Unit = when(state) {
is ScreenState.Default -> Default(state)
is ScreenState.Loading -> ProgressScreen(state)
is ScreenState.DataLoaded -> DataScreen(state)
}
@Composable
private fun DefaultSceen(state: ScreenState.Default)
@Composable
private fun ProgressScreen(state: ScreenState.Loading)
@Composable
private fun DataScreen(state: ScreenState.DataLoaded)
также Default можно заменить на ссылку на другое состояние, и при этом не сломать код выше
sealed interface ScreenState {
data class DataLoaded(...) : ScreenState
data class Loading(...): ScreenState
companion object {
val Default: ScreenState
get() = Loading(...)
}
}Использование null вместо Default приведет к неудобным аспектам работы с кодом:
1. Придется использовать null safety или операторы Flow для работы с null
2. Любые задания начальных состояний UI элементов придется привязывать не через поле в объекте состояния, а через связывание с null состоянием
3. Расширить/изменить null нельзя, а вот класс можно дополнить полями/методами и включить в анализ кода
#android #compose #AndroidBroadcast #БазаЗнаний
👍122❤5🤯4🎉3
Погружение в код реализации Jetpack ViewModel (EN, 5м)
Разбор как реализована Jetpack ViewModel после добавления поддержки KMP: код в класса, AutoClosable, viewModelScope
Для платных подписчиков на Boosty можно найти обзор всех фичей ViewModel, которые будут полезны вам
#android #kmp #jetpack #androidx #viewmodel #подкапотом
Разбор как реализована Jetpack ViewModel после добавления поддержки KMP: код в класса, AutoClosable, viewModelScope
Для платных подписчиков на Boosty можно найти обзор всех фичей ViewModel, которые будут полезны вам
#android #kmp #jetpack #androidx #viewmodel #подкапотом
👍20🤯2