#AOP #Kotlin
Aspect-oriented programming (AOP) vs functions от Roman Elizarov
Сравнение аспектно-ориентированного подхода и функционального для решения задач от папы корутин в. Kotlin 😀
Aspect-oriented programming (AOP) vs functions от Roman Elizarov
Сравнение аспектно-ориентированного подхода и функционального для решения задач от папы корутин в. Kotlin 😀
Medium
AOP vs functions
Aspect-oriented programming (AOP) is quite popular, but can we replace it with functional abstractions?
#Library #SQL #Kotlin #Multiplatform
SQLDelight 1.0 - Generates typesafe Kotlin APIs from SQL
Вышла первая стабильная версия библиотеки SQLDelight, которая позволяет вам генерировать API из ваших SQL запросов на Kotlin Multiplatform.
Механизм работы с библиотекой простой:
1️⃣ Подключаем Gradle плагин SQLDelight
2️⃣ Описываем ваши SQL запросы в .sq файлах
3️⃣ Подключаете драйвер для вашей платформы
4️⃣ Используем БД через сгенерированный код
Почему стоит использовать SQLBright:
👉 Чистый Kotlin!
👉 Проверка SQL запросов, схемы и миграций
👉 Поддержка подстветка SQL синтаксиса, рефакторинга и автодополнения в Idea/Android Studio
👉 Поддержка Android, iOS и JVM
👉 Поддержка RxJava
👉 Поддержка Kotlin Multiplatform
👉 Поддержка Android Paging библиотеки
SQLDelight 1.0 - Generates typesafe Kotlin APIs from SQL
Вышла первая стабильная версия библиотеки SQLDelight, которая позволяет вам генерировать API из ваших SQL запросов на Kotlin Multiplatform.
Механизм работы с библиотекой простой:
1️⃣ Подключаем Gradle плагин SQLDelight
2️⃣ Описываем ваши SQL запросы в .sq файлах
3️⃣ Подключаете драйвер для вашей платформы
4️⃣ Используем БД через сгенерированный код
Почему стоит использовать SQLBright:
👉 Чистый Kotlin!
👉 Проверка SQL запросов, схемы и миграций
👉 Поддержка подстветка SQL синтаксиса, рефакторинга и автодополнения в Idea/Android Studio
👉 Поддержка Android, iOS и JVM
👉 Поддержка RxJava
👉 Поддержка Kotlin Multiplatform
👉 Поддержка Android Paging библиотеки
Medium
Announcing SQLDelight 1.0
SQLDelight started as a project 4 years ago on the ContentValues and SQLiteOpenHelper APIs from Android with the goal of making writing…
#Android #Fragment #Dialog #Library
Dynamic Dialogs - Improved dialogs and dialog fragments for Android
Удобная библиотека, которая позволяет вам упростить создание диалогов с помощью шаблона Builder. Теперь вам не нужно создавать подклассы для всех диалогов (вы же все диалоги делайте на основе Fragment). Работает как с обычными диалогами, так и DialogFragment.
Dynamic Dialogs - Improved dialogs and dialog fragments for Android
Удобная библиотека, которая позволяет вам упростить создание диалогов с помощью шаблона Builder. Теперь вам не нужно создавать подклассы для всех диалогов (вы же все диалоги делайте на основе Fragment). Работает как с обычными диалогами, так и DialogFragment.
GitHub
GitHub - pranavpandey/dynamic-dialogs: Display improved dialogs and dialog fragments on Android.
Display improved dialogs and dialog fragments on Android. - pranavpandey/dynamic-dialogs
#Kotlin
Five things you might not know in Kotlin от Piotr Mądry
Все ли вы знаете о Kotlin? В статье рассказывается о:
1️⃣ Pair - создание через to
2️⃣ data класс - destructuring declaration
3️⃣ Spread оператор для vararg аргументов
4️⃣ Sealed классы - Enum на стеройдах
5️⃣ В делегатах скрыта большая сила
6️⃣ Reified типы в inline функциях!
Оставляй голос под постом и узнаем кто крут
Five things you might not know in Kotlin от Piotr Mądry
Все ли вы знаете о Kotlin? В статье рассказывается о:
1️⃣ Pair - создание через to
2️⃣ data класс - destructuring declaration
3️⃣ Spread оператор для vararg аргументов
4️⃣ Sealed классы - Enum на стеройдах
5️⃣ В делегатах скрыта большая сила
6️⃣ Reified типы в inline функциях!
Оставляй голос под постом и узнаем кто крут
Medium
Five things you might not know in Kotlin
The first article from Android Development series. Presents not obvious things from Advanced Kotlin
#DataBinding #BestPractices
Data Binding — Lessons Learnt от Chris Banes|Google
Библиотека Data Binding предлагает удобный способ для задания данных в UI, но не забывайте о правиле Человека-Паука. В связи с этим рекомендую познакомиться с советами по использованию библиотеки:
👉 Используйте стандартные binding когда это возможно
👉 Кастомные binding должны стараться избегать вызовов перерисовки UI
👉 Будьте внимательны с тем что вы объявляете как переменные
Data Binding — Lessons Learnt от Chris Banes|Google
Библиотека Data Binding предлагает удобный способ для задания данных в UI, но не забывайте о правиле Человека-Паука. В связи с этим рекомендую познакомиться с советами по использованию библиотеки:
👉 Используйте стандартные binding когда это возможно
👉 Кастомные binding должны стараться избегать вызовов перерисовки UI
👉 Будьте внимательны с тем что вы объявляете как переменные
Medium
Data Binding — Lessons Learnt
The Data Binding Library (referred to as the ‘DB library’ for the rest of this post) offers a flexible and powerful way to bind data to…
Используете ли вы Android Data Binding библиотеку у себя в проектах?
Final Results
30%
Да
70%
Нет
0%
Что это?
#Distribution #GooglePlay
10 tips to optimize app engagement от Jeni Miles
Ты самый крутой разработчик и можешь сделать крутую архитектуру, написать кучу Unit и Instrumentation тестов настроить все CI. Вы нажимаете "Опубликовать" в Google Play и не видите сумасшедшего использования вашего приложения, то вы становитесь 😞. Но не стоит рано опускать руки - готовьтесь к новой, и скорее всего самой сложной задаче для вашего проекта - его развитию и поддержке. В статье вы найдете советы как развивать ваше приложение после релиза.
10 tips to optimize app engagement от Jeni Miles
Ты самый крутой разработчик и можешь сделать крутую архитектуру, написать кучу Unit и Instrumentation тестов настроить все CI. Вы нажимаете "Опубликовать" в Google Play и не видите сумасшедшего использования вашего приложения, то вы становитесь 😞. Но не стоит рано опускать руки - готовьтесь к новой, и скорее всего самой сложной задаче для вашего проекта - его развитию и поддержке. В статье вы найдете советы как развивать ваше приложение после релиза.
Medium
10 tips to optimize app engagement
Discover insights and hear how other developers have optimized engagement to successfully retain users in the long-term.
#Dagger #Modularization #DynamicFeature
Dependency injection in a multi module project от Bew Weiss
Еще одна история о том как происходила модуляризация приложения на примере Plaid.
Dependency injection in a multi module project от Bew Weiss
Еще одна история о том как происходила модуляризация приложения на примере Plaid.
Medium
Dependency injection in a multi module project
How we introduced a DI framework into Plaid and what we learned
#Square #Payments #SDK
Square запустила SDK для платежей в приложение под Android и iOS
Ребята из Square подарили нам множество замечательных Open Source библиотек, а теперь сделали собственное SDK чтобы вы могли проводить платежи прямо внутри вашего приложения. Единственное что вам надо помнить - политику по оплате Google Play.
Square запустила SDK для платежей в приложение под Android и iOS
Ребята из Square подарили нам множество замечательных Open Source библиотек, а теперь сделали собственное SDK чтобы вы могли проводить платежи прямо внутри вашего приложения. Единственное что вам надо помнить - политику по оплате Google Play.
#UI #CustomView
How to maximize Android’s UI reusability — 5 common mistakes от Carlos Palacin Rubio
Какими свойствами должна обладать Custom View, чтобы быть удобной в использование? Основные принципы:
👉 Читабельным
👉 Тестируемым
👉 Переиспользуемым
👉 Поддерживать предпросмотр в Layout Editor
👉 Не выходить за рамки времени отведенного для отрисовки кадра
В статье вы найдете рекомендации по тому как добиваться этих результатов. Также рекомендую прочитать "Optimizing the View"
How to maximize Android’s UI reusability — 5 common mistakes от Carlos Palacin Rubio
Какими свойствами должна обладать Custom View, чтобы быть удобной в использование? Основные принципы:
👉 Читабельным
👉 Тестируемым
👉 Переиспользуемым
👉 Поддерживать предпросмотр в Layout Editor
👉 Не выходить за рамки времени отведенного для отрисовки кадра
В статье вы найдете рекомендации по тому как добиваться этих результатов. Также рекомендую прочитать "Optimizing the View"
Medium
How to maximize Android’s UI reusability — 5 common mistakes
During the last few months, I had the opportunity to revisit some of our existing UI at Groupon. As part of this process, we started by…
#Architecture
How to Ship an App Rewrite Without Risking Your Entire Business от Uber Engineering
Инженеры Uber уместили в одно APK 2 приложения: старую и новую версию клиента Uber для водителей. Хотите узнать зачем они решили таким образом тестировать новый клиент, чем их не устроил механизм раздачи альфа/бета версий в Google Play, а самое главное как они реализовывали работу приложения - прошу за подробностями в статью.
How to Ship an App Rewrite Without Risking Your Entire Business от Uber Engineering
Инженеры Uber уместили в одно APK 2 приложения: старую и новую версию клиента Uber для водителей. Хотите узнать зачем они решили таким образом тестировать новый клиент, чем их не устроил механизм раздачи альфа/бета версий в Google Play, а самое главное как они реализовывали работу приложения - прошу за подробностями в статью.
Uber Engineering Blog
How to Ship an App Rewrite Without Risking Your Entire Business
Rather than shipping out our new driver app as a simple update to Android phones, Uber engineers delivered a dual binary package, enabling a safe and structured rollout of the new app while maintaining support for the previous version.
#Coroutines #Migration #Rx
London Tube Status App — from Rx to Coroutines от Joao Alves
Описание перехода с Rx на корутины на примере London Tube Status
London Tube Status App — from Rx to Coroutines от Joao Alves
Описание перехода с Rx на корутины на примере London Tube Status
ProAndroidDev
London Tube Status App — from Rx to Coroutines
Another migration guide. Now that Coroutines are stable, I decided to migrate this app from Rx to Coroutines to give it a try.
#AndroidAcademy
Android Academy Minsk запуска Advanced Course
В понедельник 19 января стартует новый курс от Android Academy - Advanced. Занятия будут проходить в SPACE. В программе вас ждет 5 лекций:
1️⃣Android CPU, Memory | Йонатан Левин | 14 января
2️⃣Multithreading|Кирилл Розов | 4 февраля
3️⃣GPU - From Pixel to View|Алина Жданова| 25 февраля
4️⃣Network|Павел Щегельский| 18 марта
5️⃣Architecture: MVP, MVVM, MVI, Clean Architecture| Павел Слюсар, Павел Богрецов, Алексей Ивановский| 8 апреля
Обязательно проходите регистрацию и присоединяйтесь к Android Academy Slack
Android Academy Minsk запуска Advanced Course
В понедельник 19 января стартует новый курс от Android Academy - Advanced. Занятия будут проходить в SPACE. В программе вас ждет 5 лекций:
1️⃣Android CPU, Memory | Йонатан Левин | 14 января
2️⃣Multithreading|Кирилл Розов | 4 февраля
3️⃣GPU - From Pixel to View|Алина Жданова| 25 февраля
4️⃣Network|Павел Щегельский| 18 марта
5️⃣Architecture: MVP, MVVM, MVI, Clean Architecture| Павел Слюсар, Павел Богрецов, Алексей Ивановский| 8 апреля
Обязательно проходите регистрацию и присоединяйтесь к Android Academy Slack
#SQL #Kotlin #InlineClasses #SqlBrite
Inline Classes Make Great Database IDs от Jake Wharton
Замечательный пример использования нового функционала из Kotlin в 1.3 на практики - обернуть id элементов из базы данных в объект и не потерять на этом в производительности.
Inline Classes Make Great Database IDs от Jake Wharton
Замечательный пример использования нового функционала из Kotlin в 1.3 на практики - обернуть id элементов из базы данных в объект и не потерять на этом в производительности.
#AndroidLint #Kotlin #library
Lin - made Android Lint tool simpler
Для всех тех, кто пишет собственные правила в Android Lint, рекомендую обратить внимание на новую библиотеку, цель которой упростить вашу задачу с помощью изящного Kotlin API для объявление правил!
Lin - made Android Lint tool simpler
Для всех тех, кто пишет собственные правила в Android Lint, рекомендую обратить внимание на новую библиотеку, цель которой упростить вашу задачу с помощью изящного Kotlin API для объявление правил!
GitHub
GitHub - Serchinastico/Lin: Lin is an Android Lint tool made simple
Lin is an Android Lint tool made simple. Contribute to Serchinastico/Lin development by creating an account on GitHub.
#Kotlin #Security #Multiplatform
Kissme: Kotlin Secure Storage Multiplatform library. The Code Story от Samuel Urbanowicz
История разработки библиотеки для защищенного хранилища на Kotlin Multiplatform с поддержкой Android и iOS, причем на каждом хранилище обеспечивается нативными платформенными механизмами.
В статье рассказывается о том что за библиотеку смогли создать и с какими проблемами столкнулись в ходе:
👉 Взаимодействие между командами
👉 Незрелый Kotlin/Native и нехватка ресурсов и документации по нему
👉 Совместимость между Kotlin и Objective-C
Kissme Github
Kissme: Kotlin Secure Storage Multiplatform library. The Code Story от Samuel Urbanowicz
История разработки библиотеки для защищенного хранилища на Kotlin Multiplatform с поддержкой Android и iOS, причем на каждом хранилище обеспечивается нативными платформенными механизмами.
В статье рассказывается о том что за библиотеку смогли создать и с какими проблемами столкнулись в ходе:
👉 Взаимодействие между командами
👉 Незрелый Kotlin/Native и нехватка ресурсов и документации по нему
👉 Совместимость между Kotlin и Objective-C
Kissme Github
Netguru
Kissme: Kotlin Secure Storage Multiplatform library. The Code Story.
Kotlin Multiplatform key-value storage library for Android and iOS developed using Kotlin/Native, Objective-C, C-Interop and Swift ready to be used in common modules of Kotlin Multiplatform projects
#AndroidStudio #Update #Gradle
Вышла Android Studio 3.3
🎉🎉🎉Вышла Android Studio 3.3 и Android Gradle Plugin 3.3.0 🎉🎉🎉
Что нового в Android Studio:
👉 Navigation Editor
👉 Profile Tracking Options
👉 IntelliJ IDEA 2018.2.2
👉 Instant App и Dynamic Features: теперь в одном проекте
👉 Возможность удаления папок с данными от старых Android Studio
👉 Ускорение Android Lint
👉 Автоматическая загрузка компонентов SDK
👉 Single-variant синхронизация проекта - загружайте только тот build variant, с которым вы работаете
👉 Быстрый фидбек с помощью смайлов 😀🙁
Обновление профайлеров заслуживает отдельных пунктов: 👉 настройка отслеживания памяти
👉 увеличение производительности
👉 отслеживание рендеринга кадров
👉 Fragment-ы теперь отображаются на timeline
👉 Форматирование контента в HTTP запросах
Что нового в Android Gradle Plugin:
👉 Плагин построен на Gradle 4.10.3
👉 Увеличена скорость сборки проекта
👉 Task Configuration Avoidance
👉 CMake version 3.10.2
👉 Улучшена инкрементальная компиляция Java кода
👉 С помощью флага android.debug.obsoleteApi=true можно отследить что использует устаревшее API, которое будет удалено в ближайших релизах.
👉 Превью R8 (замена ProGuard)
Новинок много и рекомендую обновляться. Помните одно - чтобы получить высокую скорость сборки в проекте вы также должны обновить все использование Gradle у себя до последнего API в Gradle.
Кому хочется больше нового - Android Studio 3.4 Canary 10 уже доступна для вас. Очень жду что же будет там сделано в рамках проекта по исправлению багов и улучшению стабильности
Вышла Android Studio 3.3
🎉🎉🎉Вышла Android Studio 3.3 и Android Gradle Plugin 3.3.0 🎉🎉🎉
Что нового в Android Studio:
👉 Navigation Editor
👉 Profile Tracking Options
👉 IntelliJ IDEA 2018.2.2
👉 Instant App и Dynamic Features: теперь в одном проекте
👉 Возможность удаления папок с данными от старых Android Studio
👉 Ускорение Android Lint
👉 Автоматическая загрузка компонентов SDK
👉 Single-variant синхронизация проекта - загружайте только тот build variant, с которым вы работаете
👉 Быстрый фидбек с помощью смайлов 😀🙁
Обновление профайлеров заслуживает отдельных пунктов: 👉 настройка отслеживания памяти
👉 увеличение производительности
👉 отслеживание рендеринга кадров
👉 Fragment-ы теперь отображаются на timeline
👉 Форматирование контента в HTTP запросах
Что нового в Android Gradle Plugin:
👉 Плагин построен на Gradle 4.10.3
👉 Увеличена скорость сборки проекта
👉 Task Configuration Avoidance
👉 CMake version 3.10.2
👉 Улучшена инкрементальная компиляция Java кода
👉 С помощью флага android.debug.obsoleteApi=true можно отследить что использует устаревшее API, которое будет удалено в ближайших релизах.
👉 Превью R8 (замена ProGuard)
Новинок много и рекомендую обновляться. Помните одно - чтобы получить высокую скорость сборки в проекте вы также должны обновить все использование Gradle у себя до последнего API в Gradle.
Кому хочется больше нового - Android Studio 3.4 Canary 10 уже доступна для вас. Очень жду что же будет там сделано в рамках проекта по исправлению багов и улучшению стабильности
Android Developers Blog
Android Studio 3.3
Posted by Jamal Eason , Product Manager We are excited to kick off the new year with a stable release of Android Studio 3.3 focused ...
#GooglePlay #SMSRetrieverAPI
Reminder SMS/Call Log Policy Changes от Android Developers Blog
Google Plaу начинает более строго проверять приложение - теперь нельзя просто так опубликовать приложения с разрешениями на использование SMS и журнала звонков. Зачем это нужно? Это явная забота о пользователях и ограничения на недопустимое использование возможностей разработчиком.
Если ваше приложение содержит эти разрешения, тогда вам надо было подать специальную форму в Google для описания почему вам нужен такой доступ у приложения. В противном случае вам надо переходить на стандартное API.
Например, с SMS стоит сделать следующее:
👉 Если вы считывание SMS для автоматической верификации, то вам стоит перейти на SMS Retriever API
👉 Отправка сообщений теперь должна происходить только через приложения, предназначенные для этого
Больше подробностей о новой политики Google Plaу ищите здесь
Reminder SMS/Call Log Policy Changes от Android Developers Blog
Google Plaу начинает более строго проверять приложение - теперь нельзя просто так опубликовать приложения с разрешениями на использование SMS и журнала звонков. Зачем это нужно? Это явная забота о пользователях и ограничения на недопустимое использование возможностей разработчиком.
Если ваше приложение содержит эти разрешения, тогда вам надо было подать специальную форму в Google для описания почему вам нужен такой доступ у приложения. В противном случае вам надо переходить на стандартное API.
Например, с SMS стоит сделать следующее:
👉 Если вы считывание SMS для автоматической верификации, то вам стоит перейти на SMS Retriever API
👉 Отправка сообщений теперь должна происходить только через приложения, предназначенные для этого
Больше подробностей о новой политики Google Plaу ищите здесь
Android Developers Blog
Reminder SMS/Call Log Policy Changes
TLDR; As previously announced and directly communicated to developers via email, we’ll be removing apps from the Google Play Store that ask for SMS or Call Log permission. If you have not submitted a permissions declaration form and you’re app is removed…
#ArchComponents #Livedata #Testing
Writing effective ViewModel test от Josef Raska
Статья-реклама библиотеки LiveData Testing, которая позволяет эффективно тестировать LiveData в ViewModel.
По итогу ваш код сводится к
viewModel.counterLiveData()
.test()
.assertHasValue()
.assertValue(5)
Writing effective ViewModel test от Josef Raska
Статья-реклама библиотеки LiveData Testing, которая позволяет эффективно тестировать LiveData в ViewModel.
По итогу ваш код сводится к
viewModel.counterLiveData()
.test()
.assertHasValue()
.assertValue(5)
Medium
Effective LiveData and ViewModel Testing
Learn how you can write effective tests of LiveData and ViewModel with ease.