Forwarded from Android Live 🤖
Koin 3.2 - New DSL
#koin
Тут совсем недавно вышло крутое обновление библиотеки Koin, которое позволяет гораздо проще настраивать сам Koin — Constructor DSL.
Раньше типичный модуль в Koin выглядел следующим образом:
Как видно, в
В новой же версии мы получаем более удобную структуру:
То есть теперь все вызовы get() останутся в прошлом, и мы получим гораздо более красивый и читаемый код.
Больше примеров кода и инфа о других изменениях по ссылке.
#koin
Тут совсем недавно вышло крутое обновление библиотеки Koin, которое позволяет гораздо проще настраивать сам Koin — Constructor DSL.
Раньше типичный модуль в Koin выглядел следующим образом:
class MyClassA()
class MyClassB(val a : MyClassA)
// Let Koin find dependencies for you with get()
module {
single { MyClassA() }
single { MyClassB(get()) }
}
Как видно, в
MyClassB нужно добавить get() по количеству параметров, которые в этот класс передаются. Если таких параметров будет много, то и число этих get() будет кратно увеличиваться. В новой же версии мы получаем более удобную структуру:
class MyClassA(val id : String)
module {
singleOf(::MyClassA)
}
// in calling code
val classA : MyClassA by inject { parametersOf("_id_")}То есть теперь все вызовы get() останутся в прошлом, и мы получим гораздо более красивый и читаемый код.
Больше примеров кода и инфа о других изменениях по ссылке.
👍2
Счетчик рекомпозиций - фича, о которой давно просило
https://developer.android.com/studio/preview/features#li-compose-counter
Android сообщество, уже совсем близко.https://developer.android.com/studio/preview/features#li-compose-counter
Android Developers
Release notes for Android Studio preview | Android Developers
Discover new features and changes in Android Studio preview.
👍1🔥1
Forwarded from Mobile Native ️️
Google Play SDK Index
Google представили прикольную штуку Google Play SDK Index – некий новый общедоступный портал, на котором собраны более 100 наиболее широко используемых коммерческих SDK с подробной инфой о каждом из них.
Посмотреть доступные sdk можно тут: Google Play SDK Index
Google представили прикольную штуку Google Play SDK Index – некий новый общедоступный портал, на котором собраны более 100 наиболее широко используемых коммерческих SDK с подробной инфой о каждом из них.
Посмотреть доступные sdk можно тут: Google Play SDK Index
Forwarded from Мобильная разработка
Приложение Now in Android от Google, совмещающее в себе несколько полезных практик разработки
Now in Android — серия материалов от команды Android, в которых рассказывают о новостях, интересных статьях и крутых инструментах для Android-разработчиков.
Google опубликовала исходный код приложения Now in Android. В репозитории на GitHub вы можете познакомиться с примером реализации дизайна на Material3, а также с передовыми практиками разработки.
Репозиторий: https://github.com/android/nowinandroid
#android
Now in Android — серия материалов от команды Android, в которых рассказывают о новостях, интересных статьях и крутых инструментах для Android-разработчиков.
Google опубликовала исходный код приложения Now in Android. В репозитории на GitHub вы можете познакомиться с примером реализации дизайна на Material3, а также с передовыми практиками разработки.
Репозиторий: https://github.com/android/nowinandroid
#android
👍2
Forwarded from Стой под стрелой (Nikita Prokopov)
В истории программирования много раз брали на лозунги шаблон Everything is a X:
- Everything is a string (TCL)
- Everything is a list (Lisp)
- Everything is a file (Unix)
- Everything is an object (OOP)
- Everything is a function (FP)
И знаете что? Каждый раз эта абстрация протекала сразу с момента ее создания. Медленно/неудобно/все равно нужно различать и т.п.
Когда нам в школе рассказывали про «everything is a file» я очень удивлялся: очевидно же, что, например, с сокетом, или с процессом, или с принтером ты хочешь делать совсем не те операции, что с файлом. Оказалось, что имеелось в виду, что в виде файла доступна какая-то ненужная тривиальщина типа пида процесса, я для нормальной работы есть нормальные специальные методы, которые не притворяются, что «все есть файл». И чего было заморачиваться, спрашивается?
Есть мнение, что и в будущем next big thing которая выберет своим лозунгом Everything is X окажется такой же дырявой еще на этапе создания. Потому что мир разный, работает по-разному и хотят от разных вещей разного. Засовывать круглое в квадратное так же логично, как носить кастрюлю в качестве головного убора. А притворяться, что это еще и удобно — ну это только программисты так могут.
Nothing is everything, короче.
- Everything is a string (TCL)
- Everything is a list (Lisp)
- Everything is a file (Unix)
- Everything is an object (OOP)
- Everything is a function (FP)
И знаете что? Каждый раз эта абстрация протекала сразу с момента ее создания. Медленно/неудобно/все равно нужно различать и т.п.
Когда нам в школе рассказывали про «everything is a file» я очень удивлялся: очевидно же, что, например, с сокетом, или с процессом, или с принтером ты хочешь делать совсем не те операции, что с файлом. Оказалось, что имеелось в виду, что в виде файла доступна какая-то ненужная тривиальщина типа пида процесса, я для нормальной работы есть нормальные специальные методы, которые не притворяются, что «все есть файл». И чего было заморачиваться, спрашивается?
Есть мнение, что и в будущем next big thing которая выберет своим лозунгом Everything is X окажется такой же дырявой еще на этапе создания. Потому что мир разный, работает по-разному и хотят от разных вещей разного. Засовывать круглое в квадратное так же логично, как носить кастрюлю в качестве головного убора. А притворяться, что это еще и удобно — ну это только программисты так могут.
Nothing is everything, короче.
👍1
Новое поделие:
https://www.youtube.com/watch?v=Z6iFhczA3NY
Media3 (от создателей ViewPager2, Camera2 и CameraX)https://www.youtube.com/watch?v=Z6iFhczA3NY
😁1🤬1
Forwarded from Mobile Compose
#Video #Youtube #GoogleIO
Performance best practices for Jetpack Compose
Доклад с прошедшего Google I/O 2022, в котором спикеры рассказывают о лучших практиках Jetpack Compose в отношении производительности, а также о связанных с этим распространённых ошибках и способах их избежать.
Performance best practices for Jetpack Compose
Доклад с прошедшего Google I/O 2022, в котором спикеры рассказывают о лучших практиках Jetpack Compose в отношении производительности, а также о связанных с этим распространённых ошибках и способах их избежать.
YouTube
Performance best practices for Jetpack Compose
Jetpack Compose can feel like magic, but what do you do when the magic isn't as performant as you want? Discover best practices in Jetpack Compose with regards to performance, common mistakes, and how to avoid them.
Resources:
JetPack Compose Performance…
Resources:
JetPack Compose Performance…
Forwarded from Android Good Reads (Egor Tolstoy)
Поддержка MotionLayout в Jetpack Compose все еще в экспериментальном состоянии, но работать с ней вполне можно. В гайде разбирается, как с помощью MotionLayout анимировать несколько связанных между собой компонентов.
Mobile Dev Notes
Using MotionLayout in Compose — Mobile Dev Notes
A demo of using MotionLayout with Jetpack Compose with motion scene set up as a JSON5
Forwarded from Mobile AppSec World (Yury Shabalin)
Доклады о мобильной безопасности с Positive Hack Days
Как вы знаете, на неделе прошла конференция Positive Hack Days и на ней были доклады про безопасность мобильных приложений.
Я ещё не все разобрал, но вот парочка достаточно интересных, которые можно посмотреть уже сейчас:
- Интервью эксперта о безопасности мобильных приложений
Достаточно интересный разговор про безопасность мобилок, текущую ситуацию с магазинами, основные вектора угроз и всякое такое. Послушать, как подкаст вполне.
- Уязвимое мобильное приложение AllSafe глазами аналитика
Доклад от аналитиков Appscreener (статический анализатор), про уязвимое приложение и разбор нескольких уязвимостей в нем, как искать и как эксплуатировать:
* Sql Injection
* Arbitrary code execution
* Insecure Content Provider
А вот и сам код приложения. Что приятно, автор на каждый «флаг» дает ссылки на статьи/репорты о реально найденных подобных багах.
По мере просмотра, если найду что-то интересное из докладов, обязательно расскажу :)
#phd #video #mobile
Как вы знаете, на неделе прошла конференция Positive Hack Days и на ней были доклады про безопасность мобильных приложений.
Я ещё не все разобрал, но вот парочка достаточно интересных, которые можно посмотреть уже сейчас:
- Интервью эксперта о безопасности мобильных приложений
Достаточно интересный разговор про безопасность мобилок, текущую ситуацию с магазинами, основные вектора угроз и всякое такое. Послушать, как подкаст вполне.
- Уязвимое мобильное приложение AllSafe глазами аналитика
Доклад от аналитиков Appscreener (статический анализатор), про уязвимое приложение и разбор нескольких уязвимостей в нем, как искать и как эксплуатировать:
* Sql Injection
* Arbitrary code execution
* Insecure Content Provider
А вот и сам код приложения. Что приятно, автор на каждый «флаг» дает ссылки на статьи/репорты о реально найденных подобных багах.
По мере просмотра, если найду что-то интересное из докладов, обязательно расскажу :)
#phd #video #mobile
YouTube
Безопасность мобильных приложений
Forwarded from Android Good Reads (Egor Tolstoy)
Mosaic – библиотека от Джейка Уортона для создания консольных интерфейсов поверх компилятора и рантайма Compose. Это – интересный кейс, потому что на его примере хорошо видно, что потенциальная сфера применения Compose намного шире, чем просто работа с UI. В статье разбирается, как библиотека устроена под капотом и как она взаимодействует с рантаймом Compose.
GitHub
GitHub - JakeWharton/mosaic: Build terminal UI in Kotlin using Jetpack Compose
Build terminal UI in Kotlin using Jetpack Compose. Contribute to JakeWharton/mosaic development by creating an account on GitHub.
👍3
Forwarded from Мобильная разработка
Первый взгляд на Privacy Sandbox для Android
В апреле вышла первая Developer Preview версия Privacy Sandbox — набора инструментов, которые позволят улучшить конфиденциальность пользователей Android-устройств.
Разработчик протестировал один из элементов «песочницы» — SDK Runtime — и рассказал, как работает среда выполнения, а также поделился своими впечатлениями:
https://proandroiddev.com/a-first-look-googles-privacy-sandbox-and-its-effect-on-sdks-93b781470df9
#android
В апреле вышла первая Developer Preview версия Privacy Sandbox — набора инструментов, которые позволят улучшить конфиденциальность пользователей Android-устройств.
Разработчик протестировал один из элементов «песочницы» — SDK Runtime — и рассказал, как работает среда выполнения, а также поделился своими впечатлениями:
https://proandroiddev.com/a-first-look-googles-privacy-sandbox-and-its-effect-on-sdks-93b781470df9
#android
Forwarded from Mobile Developer (Алексей Гладков)
Тут человек разработал тулзу, которая позволяет на компоузе делать презентации в павер поинте) и это очень интересно, что компоуз всеми силами продвигают как инструмент не только для программистов
Ссылка тут - https://github.com/fgiris/composePPT
Ссылка тут - https://github.com/fgiris/composePPT
🤔1
Forwarded from Android Good Reads (Egor Tolstoy)
Роман Елизаров написал лонгрид про то, с какими проблемами сталкиваются дизайнеры Kotlin и как они оптимизируют язык с учетом реальных потребностей его пользователей:
0️⃣Поиск компромисса между null safety и интеропом с Java
🧱 Дизайн корутин с учетом необходимости интеграции их с уже написанными библиотеками
🤝Трейдоффы в системе вывода типов, усложняющие язык, но упрощающие частые юзкейсы разработчиков
🤏Как небольшие улучшения в языке тащат за собой много сложностей
0️⃣Поиск компромисса между null safety и интеропом с Java
🧱 Дизайн корутин с учетом необходимости интеграции их с уже написанными библиотеками
🤝Трейдоффы в системе вывода типов, усложняющие язык, но упрощающие частые юзкейсы разработчиков
🤏Как небольшие улучшения в языке тащат за собой много сложностей
SIGPLAN Blog
Language Design in the Real World
Real programming languages are living things, changing and evolving. As with any production code, most of their designer’s time is spent on bug fixing and small improvements, rather than on the rad…
👍1
Теоретические аспекты и советы по использованию свойства Lazy в Kotlin.
https://proglib.io/w/dae0b47d
https://proglib.io/w/dae0b47d
Medium
Kotlin — Lazy Thread-safety modes explained
We will dive deep into the Lazy property thread-safety modes, and understand the different bettewn them
Forwarded from Android Good Reads (Egor Tolstoy)
Контекстные ресиверы – это новая языковая фича, прототип которой был выпущен в Kotlin 1.6.20. С ее помощью можно неявно передавать в функцию дополнительные параметры. В статье разбирается пример того, как контекстные ресиверы помогают сделать запутанную бизнес-логику более понятной и корректной.
A Java geek
Toying with Kotlin's context receivers
Kotlin added the idea of Context Receivers in version 1.6.20. In this post, I’d like to toy with them to understand how useful they can be. If you want to play along, you’ll need to compile with the -Xcontext-receivers flag. The main idea behind context receivers…
Forwarded from Android Guards
Сколько было разговоров о том, что Fuchsia OS заменит Android и начнется новая эра? И где теперь эта Fuchsia OS? Оказалось, что она все еще активно разрабатывается и похоже не собирается умирать. Чтобы не прозозохать все на свете и быть готовым, когда Fuchsia OS придет в ваш дом - рекомендую прочитать этот серьезный материал. Из статьи вы узнаете:
- Что из себя представлет Fuchsia OS и как выглядит ее модель безопасности
- Как собрать ОС из исходников и написать приложение для нее
- Как выглядит ядро ОС и как его подебажить с помощью GDB и QEMU
- Как разрабатывать эксплойты для ядра Fuchsia OS (Zirocon)
Под чай с печеньками прочитать не выйдет. Придется включать мозги 👨🔬
- Что из себя представлет Fuchsia OS и как выглядит ее модель безопасности
- Как собрать ОС из исходников и написать приложение для нее
- Как выглядит ядро ОС и как его подебажить с помощью GDB и QEMU
- Как разрабатывать эксплойты для ядра Fuchsia OS (Zirocon)
Под чай с печеньками прочитать не выйдет. Придется включать мозги 👨🔬
PT SWARM
A Kernel Hacker Meets Fuchsia OS
Fuchsia is a general-purpose open-source operating system created by Google. It is based on the Zircon microkernel written in C++ and is currently under active development. The developers say that Fuchsia is designed with a focus on security, updatability…
😁1
Forwarded from Mobile Native ️️
Многомодульный BDSM: стоит ли внедрять Gradle модули и какие типы модулей бывают?
Достаточно полезная статья про многомодульность, в которой рассматриваются актуальные вопросы и проблемы: стоит ли внедрять Gradle модули, для чего это нужно, какие типы модулей бывают, связи и зависимости модулей и т.д.
Читать (Ru)
Достаточно полезная статья про многомодульность, в которой рассматриваются актуальные вопросы и проблемы: стоит ли внедрять Gradle модули, для чего это нужно, какие типы модулей бывают, связи и зависимости модулей и т.д.
Читать (Ru)
Forwarded from Android Live 🤖
Как мы уменьшили ANR в 3 раза
#android
Ошибка "Приложение не отвечает" — весьма неприятное событие для пользователя, ведь в этом случае он вынужден закрывать приложение и делать незавершённое действие с начала.
Кроме этого, эти ошибки довольно непросто повторить и поправить, ведь они могут то появляться, то исчезать, а также иметь зависимость от устройств.
Вот неплохая статья, которая описывает то, откуда вообще появляются ANR и то, как с ними бороться.
Автор говорит, что они ощутимо снизили процент этих ошибок в своём приложении, а также значительно улучшили время старта приложения.
#android
Ошибка "Приложение не отвечает" — весьма неприятное событие для пользователя, ведь в этом случае он вынужден закрывать приложение и делать незавершённое действие с начала.
Кроме этого, эти ошибки довольно непросто повторить и поправить, ведь они могут то появляться, то исчезать, а также иметь зависимость от устройств.
Вот неплохая статья, которая описывает то, откуда вообще появляются ANR и то, как с ними бороться.
Автор говорит, что они ощутимо снизили процент этих ошибок в своём приложении, а также значительно улучшили время старта приложения.
Forwarded from Android Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
#compose
Lazy Grid layouts in Compose
Примеры настройки LazyGrid в различных вариациях, будет полезно если не знали о возможностях
Lazy Grid layouts in Compose
Примеры настройки LazyGrid в различных вариациях, будет полезно если не знали о возможностях
Forwarded from Mobile Native ️️
19 Things to Know About Kotlin Flow — A Quick Note
Статья-заметка, 19 пунктов о которых нужно знать про Kotlin Flow.
Читать (En)
Статья-заметка, 19 пунктов о которых нужно знать про Kotlin Flow.
Читать (En)
Mobile Native ️️
19 Things to Know About Kotlin Flow — A Quick Note Статья-заметка, 19 пунктов о которых нужно знать про Kotlin Flow. Читать (En)
This media is not supported in your browser
VIEW IN TELEGRAM
разбираемся с тем, как Flow эмитит события наглядно
😁3