Интересный подход для реализации навигации в многомодульном Android-приложении.
https://overflow.buffer.com/2019/07/30/library-module-navigation-in-android-applications/
https://overflow.buffer.com/2019/07/30/library-module-navigation-in-android-applications/
Автор рассматривает преимущества и недостатки различных подходов для получения данных внутри ViewModel.
https://proandroiddev.com/when-to-load-data-in-viewmodels-ad9616940da7
https://proandroiddev.com/when-to-load-data-in-viewmodels-ad9616940da7
Medium
When to load data in ViewModels
Recently I had a surprisingly long discussion on an ostensibly easy question. Where in our code should we actually trigger the loading of…
Опубликован исходный код приложения Google I/O 19. Google пытается показать людям лучшие практики в использовании Android Architecture Components. Изучить определенно стоит.
https://github.com/google/iosched
https://github.com/google/iosched
GitHub
GitHub - google/iosched: The Google I/O Android App
The Google I/O Android App. Contribute to google/iosched development by creating an account on GitHub.
Как же не хватало еще одно библиотеки для загрузки изображений. Вот она - Coil. (Жаль, что не Koil)
Киллер-фичи:
- реализована на Kotlin,
- на корутинах,
- относительно малое количество строк кода,
- не использует annotation processing,
- dynamic image sampling.
https://coil-kt.github.io/coil/
https://github.com/coil-kt/coil/
Киллер-фичи:
- реализована на Kotlin,
- на корутинах,
- относительно малое количество строк кода,
- не использует annotation processing,
- dynamic image sampling.
https://coil-kt.github.io/coil/
https://github.com/coil-kt/coil/
coil-kt.github.io
An image loading library for Android backed by Kotlin Coroutines
Вышла стабильная Android Studio 3.5.
Как заверяют разработчики было поправлено около 600 багов, 50 утечек памяти, 20 зависаний. Сколько утечек памяти было добавлено почему-то не сообщается.
Некоторые особенности:
- Instant Run убрали, ему на замену Apply Changes
- IDE стала давать больше рекомендаций о необходимости добавить память или выключить антивирус
- улучшена инкрементальная сборка
- правки в Layout Editor
- наконец-таки добавили возможность использования нескольких версий NDK (!!!)
Полная информация тут:
https://android-developers.googleblog.com/2019/08/android-studio-35-project-marble-goes.html
https://www.youtube.com/watch?v=OJ3K90FpQ6A
Как заверяют разработчики было поправлено около 600 багов, 50 утечек памяти, 20 зависаний. Сколько утечек памяти было добавлено почему-то не сообщается.
Некоторые особенности:
- Instant Run убрали, ему на замену Apply Changes
- IDE стала давать больше рекомендаций о необходимости добавить память или выключить антивирус
- улучшена инкрементальная сборка
- правки в Layout Editor
- наконец-таки добавили возможность использования нескольких версий NDK (!!!)
Полная информация тут:
https://android-developers.googleblog.com/2019/08/android-studio-35-project-marble-goes.html
https://www.youtube.com/watch?v=OJ3K90FpQ6A
Android Developers Blog
Android Studio 3.5: Project Marble goes into stable
Posted by Jamal Eason , Product Manager, Android Have you ever wished that Android Studio was faster, more performant, and more memo...
Автор рассказывает, как с помощью ProcessLifecycleOwner можно достаточно легко реализовать механизм, вычисляющий продолжительность сессии приложения.
https://proandroiddev.com/android-processlifecycleowner-by-example-2f965061b9da
https://proandroiddev.com/android-processlifecycleowner-by-example-2f965061b9da
Medium
Android ProcessLifecycleOwner by example
The ProcessLifecycleOwner is an extension for getting information about lifecycle for the whole application process. Let’s explore it.
Мигающий layout - это определенно то, чего не хватает в современном Android-приложении. Достаточно забавная пасхалка от Romain Guy.
https://medium.com/@anoopss/you-thought-you-knew-android-e46a556d0773
https://medium.com/@anoopss/you-thought-you-knew-android-e46a556d0773
Medium
You thought you knew Android
Did you know that Android has a ViewGroup called blink? Surprised right? Same was my expression when I first found out about it.
Обзор библиотеки для внедрения зависимостей Koin.
Простота использования, удобство DSL, поддержка из коробки ViewModel из AAC - основные особенности, на которые обращает внимание автор.
Также присутствует сравнение с Dagger и обзор фишек, появившихся в Koin 2.0.
https://www.youtube.com/watch?v=chCsNkjotfc
Простота использования, удобство DSL, поддержка из коробки ViewModel из AAC - основные особенности, на которые обращает внимание автор.
Также присутствует сравнение с Dagger и обзор фишек, появившихся в Koin 2.0.
https://www.youtube.com/watch?v=chCsNkjotfc
YouTube
Dependency injection from zero to hero with Koin by Arnaud Giuliani EN
This session was given at Paris Android Makers 2019 by Arnaud Giuliani.
More info: http://androidmakers.fr/schedule/?sessionId=JOO-6049
Koin (https://insert-koin.io) is a pragmatic dependency injection framework for Kotlin/Android developers. Let's see…
More info: http://androidmakers.fr/schedule/?sessionId=JOO-6049
Koin (https://insert-koin.io) is a pragmatic dependency injection framework for Kotlin/Android developers. Let's see…
Достаточно удобный ресурс, где в одном месте можно посмотреть актуальную версию и релиз-ноуты AndroidX библиотек.
https://androidx.tech/
https://androidx.tech/
Троян в приложении, которое скачали более 100 миллионов раз? Почему бы и нет. Именно на этом попался CamScanner – Phone PDF creator.
Шифрование и удаленная загрузка модулей - схема знакомая и стандартная.
https://securelist.com/dropper-in-google-play/92496/
Шифрование и удаленная загрузка модулей - схема знакомая и стандартная.
https://securelist.com/dropper-in-google-play/92496/
Securelist
An advertising dropper in Google Play
Recently, the popular CamScanner – Phone PDF creator app caught our attention. After analyzing the app, we saw that the developer added an advertising library to it that contains a malicious dropper component.
Автор рассматривает режимы наложения одного изображения на другое с помощью PorterDuff.Mode. Статья насыщена большим количеством примеров.
https://medium.com/better-programming/practical-image-porterduff-mode-usage-in-android-3b4b5d2e8f5f
https://medium.com/better-programming/practical-image-porterduff-mode-usage-in-android-3b4b5d2e8f5f
Medium
Practical Image PorterDuff Mode Usage in Android
Blending two images to produce the desired image output using PorterDuff
В новой версии библиотек AndroidX Fragment и AndroidX Activity появилась возможность устанавливать необходимый файл разметки, передавая его через конструктор. В таком случае необходимость в
https://www.bignerdranch.com/blog/activity-and-fragment-layouts-with-androidx/
setContentView отпадает. В некоторых случаях - это было единственное действие в onCreate, что, в конечном итоге, позволяет его не переопределять.https://www.bignerdranch.com/blog/activity-and-fragment-layouts-with-androidx/
Digital product development agency | Big Nerd Ranch
Activity and Fragment Layouts with AndroidX - Digital product development agency | Big Nerd Ranch
Recent AndroidX updates add a simpler way to inflate layouts.
Corbind - аналог RxBinding, только построен на Kotlin корутинах. Данная библиотека предоставляет возможность осуществлять связывание с вьюшками Android SDK.Поддерживает
Flow, ReceiveChannel и Actor.Пример:
findViewById<EditText>(R.id.et_name)
.textChanges() // Flow<CharSequence>
.onEach { /* handle text change events */ }
.launchIn(scope)
https://ldralighieri.github.io/Corbind/
Corbind
Coroutines binding APIs for Android UI widgets from the platform and support libraries.
CalendarView - достаточно гибкая реализация календаря, основанная на RecyclerView.Использует
ThreeTenABP для обратной совместимости работы с датами на старых версиях Android SDK.https://github.com/kizitonwose/CalendarView
GitHub
GitHub - kizitonwose/Calendar: A highly customizable calendar view and compose library for Android and Kotlin Multiplatform.
A highly customizable calendar view and compose library for Android and Kotlin Multiplatform. - kizitonwose/Calendar
Когда не хватает собственных утечек памяти, гугл добавляет свои. Ну, подумаешь
https://issuetracker.google.com/issues/139738913
Activity утекает по нажатию кнопки назад и это фактически может быть в каждом приложении на 10ке. "Ничего, в следующих релизах, обязательно пофиксим" - подождите годик, другой.https://issuetracker.google.com/issues/139738913
На удивление качественный доклад, который за 25 минут может удивить повидавших всякого Android-девелоперов.
1. Автор рассказывает о возможности внедрения зависимостей через сеттер в любую активити в несколько строк кода с помощью
2. Автор рассказывает о возможности внедрения зависимостей через сеттер в любой фрагмент в несколько строк кода с помощью
3. Автор рассказывает о возможности внедрения зависимостей через конструктор в кастомную вьюшку с помощью
4 И последнее - затрагивает появление компонента
https://www.youtube.com/watch?v=ZnIv79j_iuY
1. Автор рассказывает о возможности внедрения зависимостей через сеттер в любую активити в несколько строк кода с помощью
ActivityLifecycleCallbacks (ок, об этом думаю знали многие).2. Автор рассказывает о возможности внедрения зависимостей через сеттер в любой фрагмент в несколько строк кода с помощью
FragmentLifecycleCallbacks (ну кто бы знал, причем работает рекурсивно и распространяется на чайлдов).3. Автор рассказывает о возможности внедрения зависимостей через конструктор в кастомную вьюшку с помощью
LayoutInflater.Factory (еще один грязный хак).4 И последнее - затрагивает появление компонента
AppComponentsFactory, который позволяет, начиная с апи 28, указывать конструкторы, которые будут вызваны для активити, фрагментов, сервисов.https://www.youtube.com/watch?v=ZnIv79j_iuY
YouTube
Публичное API, которое не рекламирует Google (Владимир Генович, Яндекс.Деньги)
Буду рвать шаблоны и ломать стереотипы — покажу, как внедрять синглтоны из ниоткуда, как забыть про базовые activity и fragment и научу легально делать то, чего раньше делать было нельзя.
Шпаргалка по основным командам
https://www.cheatography.com/citguy/cheat-sheets/android-package-manager-pm/
Android Package Manager (pm).https://www.cheatography.com/citguy/cheat-sheets/android-package-manager-pm/
Cheatography
Android Package Manager (pm) Cheat Sheet
How to use the Android Package Manager (pm)
Автор рассказывает о реализации периодического обновления местоположения с помощью
https://proandroiddev.com/android-tutorial-on-location-update-with-livedata-774f8fcc9f15
Android Architecture Components и FusedLocationProviderClient. https://proandroiddev.com/android-tutorial-on-location-update-with-livedata-774f8fcc9f15
Medium
Android Tutorial On Location Update With LiveData
In this tutorial, I will introduce you to how to implement continuous location update with Android architecture components and Google…
Интересный доклад с весеннего мобиуса, где автор рассказывает о реализации кэша сообщений ВКонтакте.
Особенности:
1. Долгосрочный локальный кэш с информацией о разрывах в общей ленте сообщений.
2. Использует малое количество SQLite-таблиц, сложные сущности просто хранят в сериализованном виде и не парятся.
3. Ускорение SQLite (индексы, плейсхолдеры, размер кэша скомпилированных запросов, WAL, сборка собственного SQLite).
Стоит отметить, что советы из 3 группы можно смело применять в качестве инструкции, если придётся реализовывать похожую функциональность «Сообщений» или оптимизировать работу с базой данных.
https://www.youtube.com/watch?v=S7_hdLtDwcA
Особенности:
1. Долгосрочный локальный кэш с информацией о разрывах в общей ленте сообщений.
2. Использует малое количество SQLite-таблиц, сложные сущности просто хранят в сериализованном виде и не парятся.
3. Ускорение SQLite (индексы, плейсхолдеры, размер кэша скомпилированных запросов, WAL, сборка собственного SQLite).
Стоит отметить, что советы из 3 группы можно смело применять в качестве инструкции, если придётся реализовывать похожую функциональность «Сообщений» или оптимизировать работу с базой данных.
https://www.youtube.com/watch?v=S7_hdLtDwcA
YouTube
Александр Сорокин — Реализация кэша сообщений ВКонтакте
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
. . .
. Сложный и интересный доклад про то, как под капотом работает мессенджер VK. Сложная бизнес-логика, оптимизации БД и другие тонкости того, как сделать, чтобы диалоги пользователя всегда были…
— —
. . .
. Сложный и интересный доклад про то, как под капотом работает мессенджер VK. Сложная бизнес-логика, оптимизации БД и другие тонкости того, как сделать, чтобы диалоги пользователя всегда были…
Еще один доклад с весеннего мобиуса, где автор делится советами как можно ускорить сборку
Большинство советов являются нетипичными и позволяют проводить собственные эксперименты:
1. Использовать
2.
3. Вынесение кусков конфигурации (общей логики) в
4. Перестать использовать
5. Написание собственного чистого
6. Вынесение констант из
7. Использование
8. Отключение тасок через
9. Сборка собственной
https://www.youtube.com/watch?v=ez3mQoMZUBY
android gradle проекта.Большинство советов являются нетипичными и позволяют проводить собственные эксперименты:
1. Использовать
Configuration Avoidance API.2.
afterEvaluate зло.3. Вынесение кусков конфигурации (общей логики) в
buildSrc.4. Перестать использовать
doLast.5. Написание собственного чистого
Kotlin, Java плагина с поддержкой android-зависимостей.6. Вынесение констант из
BuildConfig в AndroidManifest.xml.7. Использование
Ramdisk при сборке.8. Отключение тасок через
exclude.9. Сборка собственной
JVM на базе OpenJDK, GraalVM, OpenJ9.https://www.youtube.com/watch?v=ez3mQoMZUBY
YouTube
Степан Гончаров — Gradle pipeline optimisation: Beyond basics
Подробнее о конференции Mobius: https://jrg.su/ojGU3B
— —
. . .
. С ростом размера мобильных проектов вопрос времени сборки становится все более важным. Для Android оптимизация сборки в Gradle является критичным в этом вопросе. Нюансы этого процесса мы и…
— —
. . .
. С ростом размера мобильных проектов вопрос времени сборки становится все более важным. Для Android оптимизация сборки в Gradle является критичным в этом вопросе. Нюансы этого процесса мы и…