#AndroidGradlePlugin
Google Play Instant feature plugin deprecation
В Android Gradle Plugin 3.4.0 (AGP) помечены как deprecated 2 Gradle плагина:
Для тех кто использовал одни из старых плагинов нужно мигрировать на плагин
Руководство по миграции
Google Play Instant feature plugin deprecation
В Android Gradle Plugin 3.4.0 (AGP) помечены как deprecated 2 Gradle плагина:
com.android.feature и com.android.instantapp. Изменения связаны с тем что в AGP 3.3.0 была добавлена поддержка Instant приложений в Android App Bundle.Для тех кто использовал одни из старых плагинов нужно мигрировать на плагин
com.android.dynamic-feature.Руководство по миграции
👍1
#Kotlin #Coroutines #Flows
Cold flows, hot channels
На подходе обновление kotlinx.coroutines в рамках которого добавляется поддержка Flow - "холодный" стрим данных. Flow является аналогом Sequence (синхронный блокирующий), но только асинхронным на основе корутин.
Ключевым отличием Flow является что любой вызов операции такой как
Важно: На текущий момент Flow находится в превью, это значит что возможно изменений API и совместимости на уровне байткода, также не оптимизирована производительность.
Замечание: В предыдущей версии библиотеки kotlinx.coroutines был ReceiveChannel, который представляет из себя "горячий" стрим.
Cold flows, hot channels
На подходе обновление kotlinx.coroutines в рамках которого добавляется поддержка Flow - "холодный" стрим данных. Flow является аналогом Sequence (синхронный блокирующий), но только асинхронным на основе корутин.
Ключевым отличием Flow является что любой вызов операции такой как
map(), filter() и пр. не приводит к выполнению flow. Выполнение начинается только при вызове терминальной операции, например collect.Важно: На текущий момент Flow находится в превью, это значит что возможно изменений API и совместимости на уровне байткода, также не оптимизирована производительность.
Замечание: В предыдущей версии библиотеки kotlinx.coroutines был ReceiveChannel, который представляет из себя "горячий" стрим.
👍1
#MobilePeopleTalks #Podcast
Mobile People Talks #2 - Есть ли будущее у Flutter?
Вышел второй эпизод подкаста Mobile People Talks, в котором я с товарищами устроили допрос Александру Денисову, который занимается развитием Flutter в EPAM. В рамках допроса вы узнаете:
👉 Почему Flutter заслуживает внимание?
👉 Чем кроссплатформенные инструменты отличаются от мультиплатформенных?
👉 Почему не Kotlin?
👉 Что Flutter слизал с React?
👉 Зачем вообще для Flutter понадобился Dart?
👉 Как обстоят дела с инструментарием, библиотеками и сообществом?
Допрос устроили
👉 Данис Тазетдинов, драйвер мобильного комьюнити EPAM, автор канала по iOS разработке AppleDevNews
- Кирилл Розов, Lead GDG Minsk и SchoolKt, автор канала о Android разработке Android Broadcast
- Владимир Иванов, активный спикер, член программного комитета Mobius
Google Podcasts
Apple Podcasts
Mobile People Talks #2 - Есть ли будущее у Flutter?
Вышел второй эпизод подкаста Mobile People Talks, в котором я с товарищами устроили допрос Александру Денисову, который занимается развитием Flutter в EPAM. В рамках допроса вы узнаете:
👉 Почему Flutter заслуживает внимание?
👉 Чем кроссплатформенные инструменты отличаются от мультиплатформенных?
👉 Почему не Kotlin?
👉 Что Flutter слизал с React?
👉 Зачем вообще для Flutter понадобился Dart?
👉 Как обстоят дела с инструментарием, библиотеками и сообществом?
Допрос устроили
👉 Данис Тазетдинов, драйвер мобильного комьюнити EPAM, автор канала по iOS разработке AppleDevNews
- Кирилл Розов, Lead GDG Minsk и SchoolKt, автор канала о Android разработке Android Broadcast
- Владимир Иванов, активный спикер, член программного комитета Mobius
Google Podcasts
Apple Podcasts
SoundCloud
Flutter
Mobile People Talks - есть ли будущее у Flutter?
Александр пытается рассказать про Flutter, но благодаря активному участию остальных ведущих, рассказ плавно перетекает в перекрестный допрос! Тем не
Александр пытается рассказать про Flutter, но благодаря активному участию остальных ведущих, рассказ плавно перетекает в перекрестный допрос! Тем не
👍1
#Kotlin
Вышел Kotlin 1.3.30
Вышел очередной релиз Kotlin в рамках которого были сделаны улучшения в производительности KAPT, обновления Kotlin/Native, улучшения плагина для IDE и багфикс.
KAPT
👉Поддержка инкрементального процессинга аннотаций в KAPT (экспериментально)
👉Различные улучшения производительности KAPT
Kotlin/Native
👉Улучшения логирования крешей на iOS
👉Поддержка Cocoapods (экспериментально)
👉Улучшения в C interop
👉Поддержка Kotlin/Native в IDE
Улучшения в плагине Kotlin для IntelliJ IDEA
👉 Новые возможности для дебага корутин: “Async stack trace” - позволяет просмотреть переменные в suspend точке.
👉 Теперь будут видны настоящие названия переменных из кода, а не то что генерируются компилятором
👉 Интерактивный режим в scrath файлах: на каждой строке видны результаты выполнения кода, как в debug режиме
👉 Поддержка много строчных TODO
👉 Исправление багов
👉 Улучшения в производительности
Прочее
👉 Возможность задать версию target JVM байткода от 9 до 12
👉 Добавлена поддержка платформенных Android nullability аннотаций
👉 Исправление багов
👉 Улучшения в производительности компилятора
Вышел Kotlin 1.3.30
Вышел очередной релиз Kotlin в рамках которого были сделаны улучшения в производительности KAPT, обновления Kotlin/Native, улучшения плагина для IDE и багфикс.
KAPT
👉Поддержка инкрементального процессинга аннотаций в KAPT (экспериментально)
👉Различные улучшения производительности KAPT
Kotlin/Native
👉Улучшения логирования крешей на iOS
👉Поддержка Cocoapods (экспериментально)
👉Улучшения в C interop
👉Поддержка Kotlin/Native в IDE
Улучшения в плагине Kotlin для IntelliJ IDEA
👉 Новые возможности для дебага корутин: “Async stack trace” - позволяет просмотреть переменные в suspend точке.
👉 Теперь будут видны настоящие названия переменных из кода, а не то что генерируются компилятором
👉 Интерактивный режим в scrath файлах: на каждой строке видны результаты выполнения кода, как в debug режиме
👉 Поддержка много строчных TODO
👉 Исправление багов
👉 Улучшения в производительности
Прочее
👉 Возможность задать версию target JVM байткода от 9 до 12
👉 Добавлена поддержка платформенных Android nullability аннотаций
👉 Исправление багов
👉 Улучшения в производительности компилятора
The JetBrains Blog
Kotlin 1.3.30 released | The Kotlin Blog
We’re happy to announce the release of Kotlin 1.3.30, a new bug fix and tooling update for Kotlin 1.3. The main areas of focus for this release have been around Kotlin/Native, KAPT performance, as well as improvements for IntelliJ IDEA. As always, we’d like…
👍1
#GooglePlay #Subnoscriptions #Analytics
Optimize your subnoscriptions with new insights in the Play Console
В Google Play добавили новые фичи:
👉 Аналитика подписок: конвертация из триала в платную подписку, вернувшиеся подписчики и другие метрики
👉 Просмотр результатов опроса при отмене подписок. Теперь можно понять по какой причине пользователь отменяет подписку
👉 Возможно узнать эффективность grace period (предоставления подписки со скидкой на ограниченное время) и account hold (возможность использования подписки в случае если не смогла пройти автоматическое продление) для сохранения ваших подписчиков
Optimize your subnoscriptions with new insights in the Play Console
В Google Play добавили новые фичи:
👉 Аналитика подписок: конвертация из триала в платную подписку, вернувшиеся подписчики и другие метрики
👉 Просмотр результатов опроса при отмене подписок. Теперь можно понять по какой причине пользователь отменяет подписку
👉 Возможно узнать эффективность grace period (предоставления подписки со скидкой на ограниченное время) и account hold (возможность использования подписки в случае если не смогла пройти автоматическое продление) для сохранения ваших подписчиков
Android Developers Blog
Optimize your subnoscriptions with new insights in the Play Console
Since launching on Google Play nearly 7 years ago, subnoscriptions have proven to be an essential element in creating sustainable mobile app businesses; 89 of the top 100 highest grossing apps on Google Play in the US now provide subnoscription products. As the…
#Kotlin #ktlint
Внимание всем тем кто захочет обновиться до Kotlin 1.3.30 и в вашем проекте используется KtLint, то я вас огорчу - после обновления при попытке анализа происходит ошибка. Я уже создал issue в репозитории проекта и буду ждать обновления
Внимание всем тем кто захочет обновиться до Kotlin 1.3.30 и в вашем проекте используется KtLint, то я вас огорчу - после обновления при попытке анализа происходит ошибка. Я уже создал issue в репозитории проекта и буду ждать обновления
#Kotlin #Coroutines #LibUpdates
Вышла библиотека kotlinx.coroutines 1.2.0
В обновление вы можете найти:
👉Добавлены поддержка Flow - холодных каналов. Подробности в статьи Романа Елизарова "Cold flows, hot channels"
👉 Улучшение дебага корутин
👉
👉
👉 Значительно улучшена скорость инициализации
👉 Представлен
👉 Больше не используются приватные API на последних версиях Android
👉 Добавлена invoke() функция для
👉 Kotlin 1.3.30
👉 Исправлены баги
👉 Улучшения в производительности, генерируемом коде и обработке исключений
Важное замечание: из-за обновления Kotlin в вашем проекте вам также надо его обновить + есть сейчас проблема работы KtLint с новой версией языка.
Вышла библиотека kotlinx.coroutines 1.2.0
В обновление вы можете найти:
👉Добавлены поддержка Flow - холодных каналов. Подробности в статьи Романа Елизарова "Cold flows, hot channels"
👉 Улучшение дебага корутин
👉
Dispatchers.Unconfined, MainCoroutineDispatcher.immediate, MainScope and CoroutineScope.cancel теперь стабильны👉
withContext() теперь проверяет статус активности корутины перед выполнением👉 Значительно улучшена скорость инициализации
Dispatcher.Main👉 Представлен
CompletableJob, который теперь возвращается в результате создания Job и SupervisorJob👉 Больше не используются приватные API на последних версиях Android
👉 Добавлена invoke() функция для
Dispatcher: теперь можно вместо withContext(UI) { ... } выполнять UI { ... }👉 Kotlin 1.3.30
👉 Исправлены баги
👉 Улучшения в производительности, генерируемом коде и обработке исключений
Важное замечание: из-за обновления Kotlin в вашем проекте вам также надо его обновить + есть сейчас проблема работы KtLint с новой версией языка.
👍1
#AndroidStudio #ProjectMarbel #AndroidLint
Android Studio Project Marble: Lint Performance
Project Marbel все больше раскрывает свои детали и в четвертой статье из серии рассказывается о том, как оптимизировали скорость Android Lint.
Спойлер: в Android Studio 3.3 смогли достичь сокращения времени анализа в несколько раз на некоторых проектах.
Чтоб сделать анализ работы правил более эффективным в Google разработали утилиту Android Lint Performance Probe (ALPP). ALPP позволит вам понять какие правила для вашего проекта тратят большую часть времени или съедают много оперативки.
Также не забывайте, чтобы Android Lint работал быстро, нужно соблюдать best practices. Для этого я делал перевод руководства от Tom Norbye, автора Android Lint. Кликни сюда чтобы открыть его.
Android Studio Project Marble: Lint Performance
Project Marbel все больше раскрывает свои детали и в четвертой статье из серии рассказывается о том, как оптимизировали скорость Android Lint.
Спойлер: в Android Studio 3.3 смогли достичь сокращения времени анализа в несколько раз на некоторых проектах.
Чтоб сделать анализ работы правил более эффективным в Google разработали утилиту Android Lint Performance Probe (ALPP). ALPP позволит вам понять какие правила для вашего проекта тратят большую часть времени или съедают много оперативки.
Также не забывайте, чтобы Android Lint работал быстро, нужно соблюдать best practices. Для этого я делал перевод руководства от Tom Norbye, автора Android Lint. Кликни сюда чтобы открыть его.
Medium
Android Studio Project Marble: Lint performance
Details on recent Lint performance fixes and a tool we made to pinpoint bottlenecks.
👍1
#GooglePlay #InstantApp #BestPractices
5 tips for using showInstallPrompt in your instant experience
Для всех тех кто имеет в свое портфолио Instant App разработчики из Google рассказали о практиках, которых стоит придерживаться, чтобы обеспечить наиболее комфортный переход пользователя к полной версии приложения:
👉 Используйте самую последнюю доступную версию библиотеки
👉 Если полная версия вашего приложения/игры еще не доступна - используйте раннюю регистрацию (pre-register)
👉 Запоминайте состояние вашего instant приложения для последующей его передачи в полное приложение на основе Cookie API. Таким образом пользователь сможет продолжить там где остановился.
👉 Не мешайте пользователю выполнить сценарий предложение установки полной версии приложения. Например, пользователь должен иметь сделать возможность покупки и после этого уже ему будет предложено установить в полное приложение.
👉 Сделайте явный способ установки полного приложения. Добавьте FAB "Install" или "Pre-register"
5 tips for using showInstallPrompt in your instant experience
Для всех тех кто имеет в свое портфолио Instant App разработчики из Google рассказали о практиках, которых стоит придерживаться, чтобы обеспечить наиболее комфортный переход пользователя к полной версии приложения:
👉 Используйте самую последнюю доступную версию библиотеки
play-services-instantapps👉 Если полная версия вашего приложения/игры еще не доступна - используйте раннюю регистрацию (pre-register)
👉 Запоминайте состояние вашего instant приложения для последующей его передачи в полное приложение на основе Cookie API. Таким образом пользователь сможет продолжить там где остановился.
👉 Не мешайте пользователю выполнить сценарий предложение установки полной версии приложения. Например, пользователь должен иметь сделать возможность покупки и после этого уже ему будет предложено установить в полное приложение.
👉 Сделайте явный способ установки полного приложения. Добавьте FAB "Install" или "Pre-register"
👍1
#R8 #Optimizations #JackWharton
R8 Optimization: Method Outlining
Продолжение серии статей от Jake Wharton об оптимизациях, выполняемых R8.
R8 умеет избавляться от констант, коротких методов, или методов, которые вызываются в одном месте, вставкой этого кода в место вызова. Это называется method inlining.
R8 также умеет избавляться от дублирующегося кода выделением его в новый метод и заменой оригинального кода на новый метод 🔥. Это называется method outlining.
R8 Optimization: Method Outlining
Продолжение серии статей от Jake Wharton об оптимизациях, выполняемых R8.
R8 умеет избавляться от констант, коротких методов, или методов, которые вызываются в одном месте, вставкой этого кода в место вызова. Это называется method inlining.
R8 также умеет избавляться от дублирующегося кода выделением его в новый метод и заменой оригинального кода на новый метод 🔥. Это называется method outlining.
👍1
#Gradle
Вышел Gradle 5.4
Вышла новая версия Gradle. В обновлении вас ждут:
👉 Поддержка работы на Java 12
👉 Новое API для инкрементальных task-ов
👉 Поддержка Swift 5
👉 Исправление багов
Новое API для инкрементальных task-ов
Теперь есть более точечный способ выполнять ваши task-и инкрементально: можно получать разницу по файлам и в зависимости от этого выполнять только часть работы в task. Ранее если происходило какое-либо изменение входных или выходных данных, то приходилось выполнять task с нуля.
Вышел Gradle 5.4
Вышла новая версия Gradle. В обновлении вас ждут:
👉 Поддержка работы на Java 12
👉 Новое API для инкрементальных task-ов
👉 Поддержка Swift 5
👉 Исправление багов
Новое API для инкрементальных task-ов
Теперь есть более точечный способ выполнять ваши task-и инкрементально: можно получать разницу по файлам и в зависимости от этого выполнять только часть работы в task. Ранее если происходило какое-либо изменение входных или выходных данных, то приходилось выполнять task с нуля.
👍1
#Kotlin #KtAcademy
Abstract class vs interface in Kotlin
В чем разница между интерфейсом и абстрактным классом? В Kotlin она минимизирована:
👉 у интерфейсов функции есть реализации по умолчанию
👉 свойства могу быть добавлены в интерфейс
👉 даже хранение состояния можно сделать синтетически
Так получается разница (в Kotlin) сводится только к тому, что абстрактный класс отличается наличием конструкторов и ограничениями в наследовании?
Abstract class vs interface in Kotlin
В чем разница между интерфейсом и абстрактным классом? В Kotlin она минимизирована:
👉 у интерфейсов функции есть реализации по умолчанию
👉 свойства могу быть добавлены в интерфейс
👉 даже хранение состояния можно сделать синтетически
Так получается разница (в Kotlin) сводится только к тому, что абстрактный класс отличается наличием конструкторов и ограничениями в наследовании?
👍1
#UI #Material #BottomNavigation
WindowInsets — Listeners to layouts
В Android, начиная с версии 5.0, есть очень эффектная возможность, которая позволяет вам рисовать UI вашего приложения под системными панелями: панелями навигации и статуса. В статье Chris Banes написал руководство как сделать BottomNavigationView, отображающимся под панелью навигации.
WindowInsets — Listeners to layouts
В Android, начиная с версии 5.0, есть очень эффектная возможность, которая позволяет вам рисовать UI вашего приложения под системными панелями: панелями навигации и статуса. В статье Chris Banes написал руководство как сделать BottomNavigationView, отображающимся под панелью навигации.
Medium
WindowInsets — listeners to layouts
Moving where we handle insets to where our views live, layout files
👍1
Forwarded from paradiSEcurity
Вы просили — мы сделали. Вебинар на тему IT & Security уже 27 апреля!
Темы:
♤ Роль информационной безопасности в IT-мире
♤ Практические советы и профессиональные знания из отрасли
♤ Базовые навыки аудита
♤ Рекомендации по сокрытию личных данных
Скорее регистрируйся 👉 тут
Темы:
♤ Роль информационной безопасности в IT-мире
♤ Практические советы и профессиональные знания из отрасли
♤ Базовые навыки аудита
♤ Рекомендации по сокрытию личных данных
Скорее регистрируйся 👉 тут
👍1
#AndroidStudio #ProjectMarble
Вышла Android Studio 3.4
Вышла новая стабильная версия Android Studio (AS). В рамках ее можно увидеть первые результаты Project Marble. Project Marble - это инициатива в рамках которой команда разработки инструментария для Android исправляет в нем баги и улучшает производительность.
Что вас ждет нового после обновления:
👉 R8, пришедший на замену Proguard, теперь включен по умолчанию. Возможность использовать Proguard пока есть.
🎉 Новый менеджер ресурсов
🚀 Обновленный эмулятор, с улучшенной производительностью и меньшим потреблением ресурсов
🚀 Увеличена скорость работы Android Lint
🚀 Увеличена скорость сборки проектов
👉 Теперь для библиотек AndroidX и Firebase при их использование кода из них и отсутствие в зависимостях, AS будет предлагает их подключить
👉 Обновленный редактор свойств View в Layout Editor
👉 Обновленный диалог структуры проекта (кто-то им пользуется?)
🚀 Поддержка инкрементального процессинга аннотаций в Kotlin (требуется Kotlin 1.3.30 или выше)
👉 Новая Android Studio построена на основе IntelliJ 2018.3 и все фичи, который появились в ней теперь есть и в Android Studio. Подробнее читайте в анонсе "IntelliJ IDEA 2018.3".
Project Marble продолжит свое шествие и его результаты будут также в Android Studio 3.5, которая уже доступна в Canary канале.
Вышла Android Studio 3.4
Вышла новая стабильная версия Android Studio (AS). В рамках ее можно увидеть первые результаты Project Marble. Project Marble - это инициатива в рамках которой команда разработки инструментария для Android исправляет в нем баги и улучшает производительность.
Что вас ждет нового после обновления:
👉 R8, пришедший на замену Proguard, теперь включен по умолчанию. Возможность использовать Proguard пока есть.
🎉 Новый менеджер ресурсов
🚀 Обновленный эмулятор, с улучшенной производительностью и меньшим потреблением ресурсов
🚀 Увеличена скорость работы Android Lint
🚀 Увеличена скорость сборки проектов
👉 Теперь для библиотек AndroidX и Firebase при их использование кода из них и отсутствие в зависимостях, AS будет предлагает их подключить
👉 Обновленный редактор свойств View в Layout Editor
👉 Обновленный диалог структуры проекта (кто-то им пользуется?)
🚀 Поддержка инкрементального процессинга аннотаций в Kotlin (требуется Kotlin 1.3.30 или выше)
👉 Новая Android Studio построена на основе IntelliJ 2018.3 и все фичи, который появились в ней теперь есть и в Android Studio. Подробнее читайте в анонсе "IntelliJ IDEA 2018.3".
Project Marble продолжит свое шествие и его результаты будут также в Android Studio 3.5, которая уже доступна в Canary канале.
Android Developers Blog
Android Studio 3.4
After nearly six months of development, Android Studio 3.4 is ready to download today on the stable release channel. This is a milestone release of the Project Marble effort from the Android Studio team.
This media is not supported in your browser
VIEW IN TELEGRAM
Новый менеджер ресурсов
This media is not supported in your browser
VIEW IN TELEGRAM
Новый UI для редактирования свойств в Layout Editor
#R8 #Proguard
Важно: R8 на моем проекте в этом релизе AS завелся сразу, но при включение full режима требуется дополнительная настройка. Самый безопасный режим включения R8 сейчас это добавить в gradle.properties вашего проекта следующее:
Если вы столкнетесь с проблемами при переходе, то в первую очередь попробуйте перенастроить правила для обфускации и оптимизации кода.
Если это не помогает - откатитесь на Proguard (пока есть возможность) и сообщите о баге.
Важно: R8 на моем проекте в этом релизе AS завелся сразу, но при включение full режима требуется дополнительная настройка. Самый безопасный режим включения R8 сейчас это добавить в gradle.properties вашего проекта следующее:
android.enableR8=trueandroid.enableR8.fullMode=falseЕсли вы столкнетесь с проблемами при переходе, то в первую очередь попробуйте перенастроить правила для обфускации и оптимизации кода.
Если это не помогает - откатитесь на Proguard (пока есть возможность) и сообщите о баге.
👍1