#Room #SQLite
Вышла первая альфа Room 2.2.0
Показали первую альфу следующей версии Room. В ней нас ждут:
👉 Начальные данные для заполнения БД из asset-ов или файла
👉 Возможность задания значений по умолчанию для колонок
👉 Поддержка
👉 Поддержка инкрементного процессинга аннотаций. Пока для этого надо добавить
👉 Теперь для работы с одной таблице смогут использовать несколько DAO. Новое свойство
👉 Исправление багов
Очень жду следующих альфа версий, чтобы услышать о поддержке Flow из Kotlin Coroutines.
Вышла первая альфа Room 2.2.0
Показали первую альфу следующей версии Room. В ней нас ждут:
👉 Начальные данные для заполнения БД из asset-ов или файла
👉 Возможность задания значений по умолчанию для колонок
@ColumnInfo(defaultValue=...)👉 Поддержка
m:n отношения между таблицами👉 Поддержка инкрементного процессинга аннотаций. Пока для этого надо добавить
room.incremental = true в опции процессора. В стабильном релизе будет включено по умолчанию.👉 Теперь для работы с одной таблице смогут использовать несколько DAO. Новое свойство
targetEntity в аннотация @Insert, @Update, @Delete, которое позволяет указать таблицу для которой выполняются действия метода DAO. 👉 Исправление багов
Очень жду следующих альфа версий, чтобы услышать о поддержке Flow из Kotlin Coroutines.
Android Developers
Room | Jetpack | Android Developers
#EditorConfig #IDEA
Managing Code Style on a Directory Level with EditorConfig
В IntelliJ IDEA 2019.2 добавляется расширенная поддержка EditorConfig. В рамках неё появляется поддержка специфичных параметров для IntelliJ платформы и языков программирования.
EditorConfig - это решение, которое позволяет вам описывать единый стиль кода для проектов. Особенность этого подхода в том, что формат описания не привязан к какому либо инструменту для работы с кодом.
Managing Code Style on a Directory Level with EditorConfig
В IntelliJ IDEA 2019.2 добавляется расширенная поддержка EditorConfig. В рамках неё появляется поддержка специфичных параметров для IntelliJ платформы и языков программирования.
EditorConfig - это решение, которое позволяет вам описывать единый стиль кода для проектов. Особенность этого подхода в том, что формат описания не привязан к какому либо инструменту для работы с кодом.
The JetBrains Blog
Managing Code Style on a Directory Level with EditorConfig | The IntelliJ IDEA Blog
As we announced a short while ago, in the upcoming version 2019.2, IntelliJ IDEA and other IntelliJ-based IDEs are extending EditorConfig support, thus allowing you to manage all code style settings f
#Dagger
Delect - The Gradle Plugin for Dagger Reflect
Каково это избавиться от процессинга аннотаций Dagger 2 и ускорить сборку? Ребята из Soundcloud взяли идею Jake Wharton и заменили весь сгенерированный код Dagger 2 на решение на основе рефлексии. Это снизило производительность во время работы приложения, но зато дает более быструю сборку. Такое положительно скажется на билдах для разработчиков.
Библиотека находится в версии 0.1.0
Delect - The Gradle Plugin for Dagger Reflect
Каково это избавиться от процессинга аннотаций Dagger 2 и ускорить сборку? Ребята из Soundcloud взяли идею Jake Wharton и заменили весь сгенерированный код Dagger 2 на решение на основе рефлексии. Это снизило производительность во время работы приложения, но зато дает более быструю сборку. Такое положительно скажется на билдах для разработчиков.
Библиотека находится в версии 0.1.0
GitHub
GitHub - soundcloud/delect: The Gradle Plugin for Dagger Reflect.
The Gradle Plugin for Dagger Reflect. Contribute to soundcloud/delect development by creating an account on GitHub.
Android Broadcast
#AndroidQ Android Q Beta 5 Update Вышла новая бета Android Q. В рамках нее производилась стабилизация работы системы и API, т.к. финальное SDK мы получили в предыдущей Beta версии. В Beta 5 вы сможете найти обновление в системе навигации. Google активно…
#AndroidQ
Пошли уже вторые сутки как я хожу с Android Q Beta 5 на Pixel 3 и могу сказать, что я не нашел критичных багов. То что видел:
👉 В некоторых приложениях с темной темой цвет текста тоже черный и его не видно
👉 Проблемы при шаринге ссылок. Почему-то в списке доступных приложений для шаринга не показываются те, что были на Android P
👉 Очень долго включался телефон. Держал кнопку включения секунд 10 до того как увидел что-то на экране.
Пошли уже вторые сутки как я хожу с Android Q Beta 5 на Pixel 3 и могу сказать, что я не нашел критичных багов. То что видел:
👉 В некоторых приложениях с темной темой цвет текста тоже черный и его не видно
👉 Проблемы при шаринге ссылок. Почему-то в списке доступных приложений для шаринга не показываются те, что были на Android P
👉 Очень долго включался телефон. Держал кнопку включения секунд 10 до того как увидел что-то на экране.
#HowItWorks
Android Internals 101: How Android OS Starts You Application
Более глубокое знание внутреннего устройства Android ОС даст вам знания об оптимизациях, которые вы можете использовать в разработке своих приложений. В статье вы найдете информацию о том что происходит за включением вашего телефона:
👉 Цикл загрузки Android
👉 Что такое Bootloader?
👉 Роль ядра ОС
👉 Процесс "Init"
👉 Zygote
👉 Виртуальная машина
👉 System Server
👉 За что отвечает Activity Manager?
Android Internals 101: How Android OS Starts You Application
Более глубокое знание внутреннего устройства Android ОС даст вам знания об оптимизациях, которые вы можете использовать в разработке своих приложений. В статье вы найдете информацию о том что происходит за включением вашего телефона:
👉 Цикл загрузки Android
👉 Что такое Bootloader?
👉 Роль ядра ОС
👉 Процесс "Init"
👉 Zygote
👉 Виртуальная машина
👉 System Server
👉 За что отвечает Activity Manager?
Medium
Android Internals 101: How Android OS Starts You Application
This post is targeted for Software Engineers wanting to dive deep into Android’s Internals and its workings. We’ll take a look at what…
#Dagger
Dagger Tutorial
Dagger - это очень мощное решение для Dependency Injection. Однако изучить его из-за этого сложно + на официальном сайте не найти руководства по тому как использовать его на Kotlin, а особенностей много.
На сайте Dagger сделали простое руководство по тому как начать работу с библиотекой. В нем освещаются все базовые возможности библиотеки и немного шире. Жду руководства на Kotlin.
Dagger Tutorial
Dagger - это очень мощное решение для Dependency Injection. Однако изучить его из-за этого сложно + на официальном сайте не найти руководства по тому как использовать его на Kotlin, а особенностей много.
На сайте Dagger сделали простое руководство по тому как начать работу с библиотекой. В нем освещаются все базовые возможности библиотеки и немного шире. Жду руководства на Kotlin.
dagger.dev
Dagger Tutorial
Dagger is a fully static, compile-time dependency injection framework for both Java and Android.
#AndroidQ #Text
What’s new for text in Android Q
Android Q принес ряд оптимизаций для текста:
👉 Перенос слов (hyphenation) отключен по умолчанию в Android Q и AppCompat 1.1.0. На то чтобы рассчитать переносы тратилось около 70% времени из общего времени подготовки текста к отображению
👉 Использования множества шрифтов в одном TextView
👉 Улучшение text spans API: поддержка шрифтов, тени, fontFeatureSettings and fontVariationSettings
👉 Доступ к системным шрифтам: вы можете получить список системных шрифтов
👉 Обновление шрифтов: новый шрифт Myanmar и эмоджи
What’s new for text in Android Q
Android Q принес ряд оптимизаций для текста:
👉 Перенос слов (hyphenation) отключен по умолчанию в Android Q и AppCompat 1.1.0. На то чтобы рассчитать переносы тратилось около 70% времени из общего времени подготовки текста к отображению
👉 Использования множества шрифтов в одном TextView
👉 Улучшение text spans API: поддержка шрифтов, тени, fontFeatureSettings and fontVariationSettings
👉 Доступ к системным шрифтам: вы можете получить список системных шрифтов
👉 Обновление шрифтов: новый шрифт Myanmar и эмоджи
Android Developers Blog
What’s new for text in Android Q
Displaying text is an important task in most apps, so in Android Q we're continuing to introduce new features to support your needs and improve performance. We disabled hyphenation by default, enabled creating a typeface using multiple fonts or font families…
#Java #iOS
A plan to bring Java to iOS
Планируется перезапуск над проектом OpenJDK Mobile, цель которого портировать JDK 9 на популярные мобильные платформы: Android, iOS и Windows.
OpenJDK Mobile планирует использовать ahead-of-time компиляцию для создания исполняемых файлов, которые будут запускаться на без виртуальной машины.
Что-то очень попахивает Kotlin Multiplatform Projects 🤔
A plan to bring Java to iOS
Планируется перезапуск над проектом OpenJDK Mobile, цель которого портировать JDK 9 на популярные мобильные платформы: Android, iOS и Windows.
OpenJDK Mobile планирует использовать ahead-of-time компиляцию для создания исполняемых файлов, которые будут запускаться на без виртуальной машины.
Что-то очень попахивает Kotlin Multiplatform Projects 🤔
Как вы относитесь к возможности компиляции Java в нативный код?
Final Results
12%
Уже знаю как применить
40%
Лучше Kotlin Multiplatform Projects
10%
Лучше Flutter/React Native/Xamarin и пр.
38%
Давайте писать только нативный код
#Dagger #DependencyInjection #Multibinding
Abusing Dagger with Initializers
Dagger - самое популярное решение для Dependency Injection в современной Android разработке. Он имеет множество возможностей, которыми пользуются немногие, а есть и такие которыми пользуются единицы (например Dagger Producers - асинхронный Dependency Injection).
В статье вы сможете подробнее узнать о том, как применить Dagger Multibinding на примере решения задачи выполнения различных инициализаций при запуске приложения с плагинной архитектурой.
Abusing Dagger with Initializers
Dagger - самое популярное решение для Dependency Injection в современной Android разработке. Он имеет множество возможностей, которыми пользуются немногие, а есть и такие которыми пользуются единицы (например Dagger Producers - асинхронный Dependency Injection).
В статье вы сможете подробнее узнать о том, как применить Dagger Multibinding на примере решения задачи выполнения различных инициализаций при запуске приложения с плагинной архитектурой.
Medium
Abusing Dagger with Initializers
Passing around Initializer classes in Dagger is not the best idea, here’s why…
#AndroidQ #ThermalAPI
Keeping cool in Android Q with the Thermal API
Хотите узнать насколько нагрелся ваш смартфон пока ваше приложение было на нем запущено? А может на основе этой информации оптимизировать нагрузку приложения на устройство? Тогда хорошие новости - в Android Q появилось новое Thermal API, которое позволит вам получить информацию о текущей температуре устройства (PowerManager.getCurrentThermalStatus()), а также подписываться на изменения (PowerManager.addThermalStatusListener()).
P.S. Не все устройства на текущий момент поддерживают такие возможности, так как необходима реализация на уровне HAL от производителя.
Keeping cool in Android Q with the Thermal API
Хотите узнать насколько нагрелся ваш смартфон пока ваше приложение было на нем запущено? А может на основе этой информации оптимизировать нагрузку приложения на устройство? Тогда хорошие новости - в Android Q появилось новое Thermal API, которое позволит вам получить информацию о текущей температуре устройства (PowerManager.getCurrentThermalStatus()), а также подписываться на изменения (PowerManager.addThermalStatusListener()).
P.S. Не все устройства на текущий момент поддерживают такие возможности, так как необходима реализация на уровне HAL от производителя.
Joe Birch
Keeping cool in Android Q with the Thermal API
We've all been there are some point - using our Android device and things start to feel like they're getting a bit warm in our hands. Whether we're playing a game or using an application that is performing an intensive operation, these things can often require…
#AndroidAcademy #Minsk #AndroidQ
Android Academy Minsk: Post Google I/O or what's new in Android
Прошла первая половина лета, а это значит что Android Q выходит на финишную прямую к стабильному релизу в конце лета. Android Academy Minsk организовывает митап, чтобы освежить все новинки, что нас ждёт в следующей версии Android, и что ещё представили свежего на Google I/O 2019.
Когда: 19.00 Пятницу 19 июля
Где: SPACE (Октябрьская 10Б)
Участие бесплатное по предварительной регистрации
Вас ждёт Йонатан Левин, организаторы GDG Minsk и следующие темы:
👉 Новинки Android Q: Scoped Storage, темная тема, новая система навигации, улучшения в безопасности и пр.
👉 Jetpack Compose
👉 Новиник AndroidX: CameraX, Performance Benchmark, Security
👉 In-App Updates
👉 Constraint Layout 2.0 и MotionLayout
Помимо всего этого вас ждет классная компания, возможность задать свои вопросы и обсудить все это за пиццей и пивом.
Android Academy Minsk: Post Google I/O or what's new in Android
Прошла первая половина лета, а это значит что Android Q выходит на финишную прямую к стабильному релизу в конце лета. Android Academy Minsk организовывает митап, чтобы освежить все новинки, что нас ждёт в следующей версии Android, и что ещё представили свежего на Google I/O 2019.
Когда: 19.00 Пятницу 19 июля
Где: SPACE (Октябрьская 10Б)
Участие бесплатное по предварительной регистрации
Вас ждёт Йонатан Левин, организаторы GDG Minsk и следующие темы:
👉 Новинки Android Q: Scoped Storage, темная тема, новая система навигации, улучшения в безопасности и пр.
👉 Jetpack Compose
👉 Новиник AndroidX: CameraX, Performance Benchmark, Security
👉 In-App Updates
👉 Constraint Layout 2.0 и MotionLayout
Помимо всего этого вас ждет классная компания, возможность задать свои вопросы и обсудить все это за пиццей и пивом.
Eventbrite
Post Google I/O - Or what's new in Android
Boy oh boy! Here we go again! 2019 Google I\O is over and we gathered all the interesting bits and pieces that you absolutely can’t miss.
Pavel Bogretsov, Pavel Sliusar, Vasya Drobushkov, Pavel Shchahelski and Yonatan Levin are going to tell you about the…
Pavel Bogretsov, Pavel Sliusar, Vasya Drobushkov, Pavel Shchahelski and Yonatan Levin are going to tell you about the…
#CodeQuality #KtLint
Вышел KtLint 0.34.0
Вышла новая версия KtLint - утилиты для проверки стиля
Kotlin кода.
В новой версии сделаны следующие изменения:
👉 Поддержка Kotlin 1.3.41
👉 Возможность отключения правил в .editorconfig
👉 Вновь включена настройка
👉 Удалена поддержка флагов
👉 Наличие пустой строки в конце файла теперь включено по умолчанию
👉 Исправлены баги
В экспериментальных проверках были добавлены:
👉
👉
👉
Вышел KtLint 0.34.0
Вышла новая версия KtLint - утилиты для проверки стиля
Kotlin кода.
В новой версии сделаны следующие изменения:
👉 Поддержка Kotlin 1.3.41
👉 Возможность отключения правил в .editorconfig
👉 Вновь включена настройка
no-wildcard-import👉 Удалена поддержка флагов
--ruleset-repository и --ruleset-update👉 Наличие пустой строки в конце файла теперь включено по умолчанию
👉 Исправлены баги
В экспериментальных проверках были добавлены:
👉
experimental:annotation - проверяет что несколько аннотаций не находятся на одной строке👉
experimental:multiline-if-else - проверка структуры if (...) {...}👉
experimental:package-name - проверяет имена пакетов на отсутсвие _GitHub
Release 0.34.0 · pinterest/ktlint
Added
Support for Kotlin 1.3.41
Support for globally disabling rules via custom disabled_rules property in .editorconfig (#503)
experimental:no-empty-first-line-in-method-block (#474)
Unit tests f...
Support for Kotlin 1.3.41
Support for globally disabling rules via custom disabled_rules property in .editorconfig (#503)
experimental:no-empty-first-line-in-method-block (#474)
Unit tests f...
#GooglePlay #AppBundle #Optimization
16 reasons to publish your apps and games with the Android App Bundle
Еще не начали публиковать свои приложения с помощью Android App Bundle в Google Play? Тогда изучите 16 причин почему это стоит сделать уже сегодня!
16 reasons to publish your apps and games with the Android App Bundle
Еще не начали публиковать свои приложения с помощью Android App Bundle в Google Play? Тогда изучите 16 причин почему это стоит сделать уже сегодня!
Medium
16 reasons to publish your apps and games with the Android App Bundle
Why you should switch to Android’s official publishing format
#AndroidQ
Preparing your app for Android Q
Обзор самых важных изменений в Android 10.0 Q, а также эффектов которые они окажут на ваши приложения и как лучше адаптировать ваше приложение:
👉 Запуск Activity из фона
👉 Ограничение доступа к идентификаторам устройства:IMEI, рандомизация Mac алреса и пр.
👉 Ограничение доступа к местоположению
👉 Новые жесты навигации
👉 Темная тема
Preparing your app for Android Q
Обзор самых важных изменений в Android 10.0 Q, а также эффектов которые они окажут на ваши приложения и как лучше адаптировать ваше приложение:
👉 Запуск Activity из фона
👉 Ограничение доступа к идентификаторам устройства:IMEI, рандомизация Mac алреса и пр.
👉 Ограничение доступа к местоположению
👉 Новые жесты навигации
👉 Темная тема
Medium
Preparing your app for Android Q
API’s have been marked as final & it’s a good time to see how Android Q will affect apps & what changes should be made to fully support it.
#Coroutines #Thread #Concurrency #Parallelism
Kotlin coroutines, threads, concurrency and parallelism 101
Довольно наглядное и простое объяснение разнице в работе потоков и Coroutine
Kotlin coroutines, threads, concurrency and parallelism 101
Довольно наглядное и простое объяснение разнице в работе потоков и Coroutine
Medium
Kotlin coroutines, threads, concurrency and parallelism 101
Threads are being replaced by coroutines, parallelism by concurrency…but what is the difference?
#AndroidDevSummit
Android Dev Summit 2019 Registration is Open
Открыта регистрация на конференцию Android Dev Summit 2019, которая пройдет 23-24 октября в Google Event Center (MP7), Sunnyvale, CA.
Это вам на отдельные докладики по Android, а полноценная конференция для Android разработчиков!
Билеты бесплатные, но требуется регистрация, результаты которой будут известны до 23 августа.
Android Dev Summit 2019 Registration is Open
Открыта регистрация на конференцию Android Dev Summit 2019, которая пройдет 23-24 октября в Google Event Center (MP7), Sunnyvale, CA.
Это вам на отдельные докладики по Android, а полноценная конференция для Android разработчиков!
Билеты бесплатные, но требуется регистрация, результаты которой будут известны до 23 августа.
Android Developers Blog
Android Dev Summit 2019 Registration is Open
Registration is now open for Android Dev Summit 2019! Learn, share, and connect at #AndroidDevSummit 2019. It's a great place to learn new Android development skills, share feedback and ideas with the Android engineering team, and connect with Android developers…
#Kotlin #Coroutines #Flow
Exceptions in Kotlin Flows
Kotlin Flows - это реализация холодных стримов на основе Coroutine. В новой статье от Романа Елизарова вы сможете узнать о том как правильно обрабатывать ошибки и какие для этого были добавлены операторы в
Exceptions in Kotlin Flows
Kotlin Flows - это реализация холодных стримов на основе Coroutine. В новой статье от Романа Елизарова вы сможете узнать о том как правильно обрабатывать ошибки и какие для этого были добавлены операторы в
Flow.Medium
Exceptions in Kotlin Flows
Kotlin Flow can complete normally or with an exception. When this exception is expected it has to handled. How? That’s a story.
#Exception #BestPractices
Handling Exceptions: The Easy Way
Ошибки естественным образом возникают в программах. Их причинами могут быть как неправильный код так и внешние факторы. Поэтому разработчики всегда должны писать код с учетом этих факторов.
Как понять какие ошибки стоит обрабатывать, выбрасывать, игнорировать, а возможно вообще не задумываться о их обработке? Нормальная ли практика игнорировать все ошибки, чтобы приложение не падало у пользователя?
Handling Exceptions: The Easy Way
Ошибки естественным образом возникают в программах. Их причинами могут быть как неправильный код так и внешние факторы. Поэтому разработчики всегда должны писать код с учетом этих факторов.
Как понять какие ошибки стоит обрабатывать, выбрасывать, игнорировать, а возможно вообще не задумываться о их обработке? Нормальная ли практика игнорировать все ошибки, чтобы приложение не падало у пользователя?
Medium
Handling Exceptions. The Easy Way.
A simple framework for dealing with in languages like Java, Kotlin & similar.
#Exception #BestPractices
Рекомендуемая стратегия для обработки ошибок:
1️⃣ Избегайте возникновения ошибки, например проверяйте данные перед передачей в метод или проверяйте текущие состояние перед получением данных (например получение
2️⃣ Если вы знаете как обработать возникшую проблему - делайте это: отправьте запрос повторно, вызывайте другой метод и пр.
3️⃣ Пробрасывайте исключение дальше, добавляя больше информации о его причине. Более высокий слой вполне может быть способен обработать ошибку
4️⃣ Crash приложения. Возможно кто-то считает что это плохо, но он позволяет мгновенно отловить ошибку на стадии тестирования, либо легко отследить ее в проде. Если ошибка просто игнорируются и приложение не падает, то понять причину последующей некорректной работы может быть намного труднее чем увидеть stack trace и разобраться в нем.
Не забудьте настроить Firebase Crashlytics или другой сервис по отслеживанию крэшей!
Уведомляйте пользователя об ошибках, которые не дают приложению нормально работать. Пользователь должен понимать, что есть причина некорректной работы.
Также будет хорошо показать путь которым эту ошибку можно исправить, например предоставив соответствующее разрешение или доступ.
Рекомендуемая стратегия для обработки ошибок:
1️⃣ Избегайте возникновения ошибки, например проверяйте данные перед передачей в метод или проверяйте текущие состояние перед получением данных (например получение
Activity/Context в Fragment)2️⃣ Если вы знаете как обработать возникшую проблему - делайте это: отправьте запрос повторно, вызывайте другой метод и пр.
3️⃣ Пробрасывайте исключение дальше, добавляя больше информации о его причине. Более высокий слой вполне может быть способен обработать ошибку
4️⃣ Crash приложения. Возможно кто-то считает что это плохо, но он позволяет мгновенно отловить ошибку на стадии тестирования, либо легко отследить ее в проде. Если ошибка просто игнорируются и приложение не падает, то понять причину последующей некорректной работы может быть намного труднее чем увидеть stack trace и разобраться в нем.
Не забудьте настроить Firebase Crashlytics или другой сервис по отслеживанию крэшей!
Уведомляйте пользователя об ошибках, которые не дают приложению нормально работать. Пользователь должен понимать, что есть причина некорректной работы.
Также будет хорошо показать путь которым эту ошибку можно исправить, например предоставив соответствующее разрешение или доступ.
Firebase
Firebase Crashlytics
Get clear, actionable insight into app issues with this powerful crash reporting solution for Apple, Android, Flutter, and Unity.