#Kotlin #Dart #Flutter
"From Kotlin to Dart — an Android developer’s perspective" от Łukasz Wasylkowski|Tooploox
Flutter создает все больше хайпа в мире мобильной разработки, но один из самых популярных вопросов в сообществе - "Почему Dart?". В ответе на это даже есть целый развернутый ответ на FAQ Flutter. С другой стороны, я как Android разработчик уже давно наслаждаюсь всеми возможностями Kotlin и отсутсвие какого-то функционала в Dart меня смутило, например extension функций, null safety, sealed классов и прочего. В статье вы найдете сравнение Dart и Kotlin.
Я очень надеюсь, что появится поддержка Kotlin/Dart, JetBrains услышьте призыв!
"From Kotlin to Dart — an Android developer’s perspective" от Łukasz Wasylkowski|Tooploox
Flutter создает все больше хайпа в мире мобильной разработки, но один из самых популярных вопросов в сообществе - "Почему Dart?". В ответе на это даже есть целый развернутый ответ на FAQ Flutter. С другой стороны, я как Android разработчик уже давно наслаждаюсь всеми возможностями Kotlin и отсутсвие какого-то функционала в Dart меня смутило, например extension функций, null safety, sealed классов и прочего. В статье вы найдете сравнение Dart и Kotlin.
Я очень надеюсь, что появится поддержка Kotlin/Dart, JetBrains услышьте призыв!
Medium
From Kotlin to Dart — an Android developer’s perspective
How does Dart compare to Kotlin for Android development?
#Kotlin #Coroutines #LibUpdates
KotlinX.Coroutines 1.1.0 Released
Вышла новая версия библиотеки корутин. Апдейт направлен на улучшения дебага, производительности и стабильности корутин, а именно было сделано следующее:
👉 Читабельные стектрейсы корутин 🎉 - используйте системное свойство kotlinx.coroutines.debug
👉 Новый модуль kotlinx-coroutines-debug 🎉 - теперь можно получить дамп работы корутины
👉 Новый модуль kotlinx-coroutines-test 🎉 - тестировать становится удобнее, появилась функция Dispatchers.setMain() для подмены Dispatchers.Main в тестах
👉 Dispatchers.Default теперь потребляет меньше CPU ресурсов в JVM
👉 MainScope() и CoroutineScope.cancel() позволят вам в 1 строку создавать CoroutineContext для корутин
👉 Корутины теперь собираются в progressive режиме
👉 Множество других улучшений, исправлений багов и обновлений в документации
KotlinX.Coroutines 1.1.0 Released
Вышла новая версия библиотеки корутин. Апдейт направлен на улучшения дебага, производительности и стабильности корутин, а именно было сделано следующее:
👉 Читабельные стектрейсы корутин 🎉 - используйте системное свойство kotlinx.coroutines.debug
👉 Новый модуль kotlinx-coroutines-debug 🎉 - теперь можно получить дамп работы корутины
👉 Новый модуль kotlinx-coroutines-test 🎉 - тестировать становится удобнее, появилась функция Dispatchers.setMain() для подмены Dispatchers.Main в тестах
👉 Dispatchers.Default теперь потребляет меньше CPU ресурсов в JVM
👉 MainScope() и CoroutineScope.cancel() позволят вам в 1 строку создавать CoroutineContext для корутин
👉 Корутины теперь собираются в progressive режиме
👉 Множество других улучшений, исправлений багов и обновлений в документации
GitHub
kotlinx.coroutines/CHANGES.md at master · Kotlin/kotlinx.coroutines
Library support for Kotlin coroutines . Contribute to Kotlin/kotlinx.coroutines development by creating an account on GitHub.
#Dagger #LibUpdates
Release Dagger 2.20
Вышла новая версия библиотеки Dagger 2. Нового функционала релиз не принес, но сделал много улучшения:
👉 Увеличена скорость процессинга аннотаций
👉 Улучшение валидация графа
👉 Исправление багов
👉 Удаление deprecated кода
Release Dagger 2.20
Вышла новая версия библиотеки Dagger 2. Нового функционала релиз не принес, но сделал много улучшения:
👉 Увеличена скорость процессинга аннотаций
👉 Улучшение валидация графа
👉 Исправление багов
👉 Удаление deprecated кода
GitHub
google/dagger
A fast dependency injector for Android and Java. Contribute to google/dagger development by creating an account on GitHub.
Привет! Я ухожу отпуск, чтобы набраться сил, подготовиться к реализации планов на следующий год и давать вам ещё больше интересного материала, поэтому частота выхода материалов до 2 января будет ниже чем обычно.
Желаю вам всех хороших праздников 🎄 и отдыха !
Желаю вам всех хороших праздников 🎄 и отдыха !
#ARM #Hardware
“Huawei анонсирует 7-нанометровый процессор и чип для работы с искусственным интеллектом” от Hi-News.ru
Еще 7 лет назад я плевался от качества телефонов Huawei и отговаривал всех их покупать. Не так давно я подарил своей жене P20 Pro и я не видел камеру круче, крутой градиентный корпус, высокая скорость железа, но пока подводит софт. Также Huawei сейчас делает телефоны на своём железе и умудряется неплохо зарабатывать на них! Я могу только сказать что они молодцы, и я жду когда они начнут делать устройства на Android One без кастомизации и можно будет брать 👍
Но сейчас меня компания Huawei поразила новинками - серверный процессор HiSilicon Hi1620 на основе Arm v8a, 7 нм, до 64 ядер, 2.6-3.0 ГГц, Intel Xeon берегись 😁! Помимо этого представили контроллер для SSD с искусственным интеллектом.
Самое печальное, что Intel до сих пор не может освоить 7 нм тех процесс 😔
“Huawei анонсирует 7-нанометровый процессор и чип для работы с искусственным интеллектом” от Hi-News.ru
Еще 7 лет назад я плевался от качества телефонов Huawei и отговаривал всех их покупать. Не так давно я подарил своей жене P20 Pro и я не видел камеру круче, крутой градиентный корпус, высокая скорость железа, но пока подводит софт. Также Huawei сейчас делает телефоны на своём железе и умудряется неплохо зарабатывать на них! Я могу только сказать что они молодцы, и я жду когда они начнут делать устройства на Android One без кастомизации и можно будет брать 👍
Но сейчас меня компания Huawei поразила новинками - серверный процессор HiSilicon Hi1620 на основе Arm v8a, 7 нм, до 64 ядер, 2.6-3.0 ГГц, Intel Xeon берегись 😁! Помимо этого представили контроллер для SSD с искусственным интеллектом.
Самое печальное, что Intel до сих пор не может освоить 7 нм тех процесс 😔
Яндекс Дзен
Huawei анонсирует 7-нанометровый процессор и чип для работы с искусственным интеллектом
В последние несколько дней китайская компания Huawei делает анонс за анонсом. Нам рассказали об обновленном прямом конкуренте MacBook, новом телефоне Play и желании компании попасть в книгу рекордов Гиннеса.
#Security #BestPractices
Developing Secure Android Apps от Ahmed Abd-Elmeged
Хорошая статья с обзором наиболее популярных уязвимостей в плане безопасности приложение и как их стоит избегать.
В статье вы найдете следующий рекомендации:
👉 В релиз только с Proguard или R8
👉 Доступ к любым API должен осуществляться защищено. Например, используйте API ключ.
👉 Все ключи должны храниться в защищенном месте. Например, можно хранить ключи приложения в нативном коде. Ключи, получаемый динамически, лучше хранить в KeyStore.
👉 Используйте только HTTPS!
👉 Не используйте SharedPreferences для важных данных: ключей, паролей и пр.
👉 Проверяйте что попадает в логи релизной сборки приложения
👉 Важная информация должна храниться только во внутренне хранилище. Внешнее хранилище используйте только для публичных данных, которые вы можете показать кому угодно.
👉 Не передавайте данные в Intent, напр. через Broadcast Receiver. Передача данных между приложениями должна осуществляться через ContentProvider, либо LocalBroadcastManager, для обмена данными в рамках одного приложения.
👉 WebView таит много опасностей внутри себя
👉 Обновляйте ваши зависимости
👉 Доступ к Service и ContentProvider должен осуществляться только при наличие permission
👉 Шифруйте данные на внешнем хранилище, которые вы не можете разместить на внутреннем и валидируйте перед их использованием из приложения.
👉 Старайтесь минимизировать запрос личныз данных GDPR не дремлет!
👉 Рутованные устройства могут менять поведение устройств, поэтому часть функционала на них стоит отключать.Например, вам не будут давать возможности производить оплату или использовать приложения, которые имеют высокие требования к защите.
👉 Запрашивайте как можно меньше permission.
Developing Secure Android Apps от Ahmed Abd-Elmeged
Хорошая статья с обзором наиболее популярных уязвимостей в плане безопасности приложение и как их стоит избегать.
В статье вы найдете следующий рекомендации:
👉 В релиз только с Proguard или R8
👉 Доступ к любым API должен осуществляться защищено. Например, используйте API ключ.
👉 Все ключи должны храниться в защищенном месте. Например, можно хранить ключи приложения в нативном коде. Ключи, получаемый динамически, лучше хранить в KeyStore.
👉 Используйте только HTTPS!
👉 Не используйте SharedPreferences для важных данных: ключей, паролей и пр.
👉 Проверяйте что попадает в логи релизной сборки приложения
👉 Важная информация должна храниться только во внутренне хранилище. Внешнее хранилище используйте только для публичных данных, которые вы можете показать кому угодно.
👉 Не передавайте данные в Intent, напр. через Broadcast Receiver. Передача данных между приложениями должна осуществляться через ContentProvider, либо LocalBroadcastManager, для обмена данными в рамках одного приложения.
👉 WebView таит много опасностей внутри себя
👉 Обновляйте ваши зависимости
👉 Доступ к Service и ContentProvider должен осуществляться только при наличие permission
👉 Шифруйте данные на внешнем хранилище, которые вы не можете разместить на внутреннем и валидируйте перед их использованием из приложения.
👉 Старайтесь минимизировать запрос личныз данных GDPR не дремлет!
👉 Рутованные устройства могут менять поведение устройств, поэтому часть функционала на них стоит отключать.Например, вам не будут давать возможности производить оплату или использовать приложения, которые имеют высокие требования к защите.
👉 Запрашивайте как можно меньше permission.
Medium
Developing Secure Android Apps.
I’ve been developing android apps for over 3 years now and I’m also a security enthusiast. During this journey, most of the new talks and…
#Security #BestPractices
App Security Best Practices от d.android.com
И добавка - серия статей о базовых советах по безопасности Android приложений от Google !
App Security Best Practices от d.android.com
И добавка - серия статей о базовых советах по безопасности Android приложений от Google !
#Activity #LaunchMode
The Android Launch Mode Animated CheatSheet от Todd Greenberg
Визуализация различного поведения Activity при запуске, если начнете играться с launch mode будет вам в помощь. Все сделано в анимашках и как минимум человек заслуживает 👏 в посте на Medium!
The Android Launch Mode Animated CheatSheet от Todd Greenberg
Визуализация различного поведения Activity при запуске, если начнете играться с launch mode будет вам в помощь. Все сделано в анимашках и как минимум человек заслуживает 👏 в посте на Medium!
Medium
The Android Launch Mode Animated CheatSheet
Before API 11, we used activities show every new page on the screen. Now with Fragments and the navigation tools in API 28, it’s totally…
#Library #image
Stfalcon ImageViewer
Библиотека для просмотра изображений во весь экран. Из главных особенностей:
👉 Поддержка жестов
👉 Поддержка Transition
👉 Используйте что вам больше нравится для загрузки картинок: Glide или Picasso или что-то собственное
Stfalcon ImageViewer
Библиотека для просмотра изображений во весь экран. Из главных особенностей:
👉 Поддержка жестов
👉 Поддержка Transition
👉 Используйте что вам больше нравится для загрузки картинок: Glide или Picasso или что-то собственное
GitHub
GitHub - stfalcon-studio/StfalconImageViewer: A simple and customizable Android full-screen image viewer with shared image transition…
A simple and customizable Android full-screen image viewer with shared image transition support, "pinch to zoom" and "swipe to dismiss" gestures - stfalcon-studi...
#Optimizatiion #Performance
Комфортная работа с Android Studio от advance
Современная Android разработка требует хорошего железа:
👉 Intel Core I3/5/7/9 с 4 физическими ядрами и более
👉 16 Гб оперативы
👉 SSD
Не у всех есть возможности приобрести такое железо, а кто-то просто фанат AMD и влюбился в Ryzen процессоры 😍.
В статье вы найдете советы по тому как оптимизировать настройки вашей ОС для более быстрой сборки.
Мне на слабеньком железе помогало следующее:
👉 Отключение индексирования в поиске
👉 Отключить антивируса
👉 Отключение шифрования диска
👉 Отключать параллельную сборку в Gradle и Daemon
👉 Поиграйтесь c настройками выделяемой памяти для Android Studio
👉 Отключайте неиспользуемые плагины в Android Studio
👉 Используйте реальные устройства, а не эмуляторы.
👉 Не открывать миллион вкладок в браузере одновременно
Учтите что на слабой машине все оптимизации которые я описал и вы найдете в статье - это компромиссы. Что-то станет работать медленнее, что-то лучше, а Android Studio хотя бы сможет завестись и давать вам работать.
Ребята из Google пообещали в Android Studio 3.4 и 3.5 потрудиться над фиксом багов, потреблением памяти и оптимизацией IDE в рамках Project Merbel.
Комфортная работа с Android Studio от advance
Современная Android разработка требует хорошего железа:
👉 Intel Core I3/5/7/9 с 4 физическими ядрами и более
👉 16 Гб оперативы
👉 SSD
Не у всех есть возможности приобрести такое железо, а кто-то просто фанат AMD и влюбился в Ryzen процессоры 😍.
В статье вы найдете советы по тому как оптимизировать настройки вашей ОС для более быстрой сборки.
Мне на слабеньком железе помогало следующее:
👉 Отключение индексирования в поиске
👉 Отключить антивируса
👉 Отключение шифрования диска
👉 Отключать параллельную сборку в Gradle и Daemon
👉 Поиграйтесь c настройками выделяемой памяти для Android Studio
👉 Отключайте неиспользуемые плагины в Android Studio
👉 Используйте реальные устройства, а не эмуляторы.
👉 Не открывать миллион вкладок в браузере одновременно
Учтите что на слабой машине все оптимизации которые я описал и вы найдете в статье - это компромиссы. Что-то станет работать медленнее, что-то лучше, а Android Studio хотя бы сможет завестись и давать вам работать.
Ребята из Google пообещали в Android Studio 3.4 и 3.5 потрудиться над фиксом багов, потреблением памяти и оптимизацией IDE в рамках Project Merbel.
Хабр
Комфортная работа с Android Studio
Всем доброго времени суток! Насколько производительно работает Android Studio? Считаете ли Вы, что она работает шустро на Вашем ПК или Mac? Или, иногда, сталкив...
#CodeQuality #AndroidLint
Letting Android Lint fix your code от Niklas Baudy
Android Lint - очень полезная тулза, которая позволяет анализировать ваш код и выводить отчет с описанием найденных в нем проблем и способов фиксов. Я уверен, что все вы с ней сталкивались внутри Android Studio, так как именно с помощью ее подсвечиваются различные ошибки в коде.
Для себя я недавно открыл, что Android Lint может не только находить ошибки, но и исправлять их самостоятельно 😮. Для этого есть специальный Gradle task - lintFix. Авторы собственных правил могут интегрироваться с этим API. В статье вы найдете все подробности.
Letting Android Lint fix your code от Niklas Baudy
Android Lint - очень полезная тулза, которая позволяет анализировать ваш код и выводить отчет с описанием найденных в нем проблем и способов фиксов. Я уверен, что все вы с ней сталкивались внутри Android Studio, так как именно с помощью ее подсвечиваются различные ошибки в коде.
Для себя я недавно открыл, что Android Lint может не только находить ошибки, но и исправлять их самостоятельно 😮. Для этого есть специальный Gradle task - lintFix. Авторы собственных правил могут интегрироваться с этим API. В статье вы найдете все подробности.
Medium
Letting Android Lint fix your code
Android Lint is deeply integrated into Android Studio. Issues that are reported will be highlighted either as warnings or errors.
#Kotlin #VisibilityModifiers
Kotlin for Android Developers: Visibility Modifiers от Pablo Costa
Kotlin старается собрать в себе все лучшие практики от опыта разработчиков в Java и других языков. Например множество принципов из книги "Effective Java" от Joshua Bloch были сразу заложены в архитектуре языка.
Одно из важных изменений в Kotlin - модификаторы видимости, заменившие собой модификаторы доступа из Java (access modifiers).
Для всех кто хочет узнать подробнее о них рекомендую читать статью!
Kotlin for Android Developers: Visibility Modifiers от Pablo Costa
Kotlin старается собрать в себе все лучшие практики от опыта разработчиков в Java и других языков. Например множество принципов из книги "Effective Java" от Joshua Bloch были сразу заложены в архитектуре языка.
Одно из важных изменений в Kotlin - модификаторы видимости, заменившие собой модификаторы доступа из Java (access modifiers).
Для всех кто хочет узнать подробнее о них рекомендую читать статью!
Medium
Kotlin for Android Developers: Visibility Modifiers
From Java to Kotlin
#Kotlin #DSL #Architecture
Creating Kotlin DSLs от Wolfram Rittmeyer
DSL довольно удобный формат для описания конфигурация. Kotlin также дает возможность построения своего DSL, так что вы можете интегрировать его себе в свой код, Я решал с помощью DSL задачи по откажу от Builder: диалоги, NotificationCompat.Builder. В статье вы найдете как сделать свой DSL и стоит ли овчинка выделки.
Creating Kotlin DSLs от Wolfram Rittmeyer
DSL довольно удобный формат для описания конфигурация. Kotlin также дает возможность построения своего DSL, так что вы можете интегрировать его себе в свой код, Я решал с помощью DSL задачи по откажу от Builder: диалоги, NotificationCompat.Builder. В статье вы найдете как сделать свой DSL и стоит ли овчинка выделки.
Grokking Android
Creating Kotlin DSLs
With Kotlin DSLs you can write clear and understandable code. This post details of what Kotlin concepts they are made of and shows how to design them.
#BestPractices #Media
The Decalogue of a Pro Media App от Marcin Adamczewski
Для всех тех, кто пишет приложения, связанные с медиа: аудио и видео плееры и пр., и тем кто этим не занимается рекомендую ознакомиться с лучшими практиками при разработке такого рода приложений. Основные из них:
1️⃣ Необходимо поддерживать AudioFocus
2️⃣ Обрабатывайте Broadcast AudioManager.ACTION_AUDIO_BECOMING_NOISY
3️⃣ Android Media Session содержит множество информации которую стоит обрабатывать
4️⃣ Показывайте уведомление о Media. Для этого лучше использовать Notification.MediaStyle, чтобы уведомление выглядело в нативном стиле системы.
5️⃣ Media также показывается и на экране блокировки, поэтому проверяйте ее отображение: фоновую полноэкранную картинку, доступные действия для управления и пр.
6️⃣ Проигрывание медиа часто должно продолжаться и в фоне, поэтому вам стоит использовать Foreground Service для вашего плеера.
7️⃣ Чтобы ваш телефон не выключил процессор когда отключится экран важно использовать WakeLock. Для плееров, воспроизводящих онлайн контент, очень важно не дать отключиться WiFi. Сделать это можно с помощью WifiManager.WifiLock.
8️⃣ Видео всегда должно быть на экране, поэтому не даем ему погаснуть с помощью атрибута android:keepScreenOn=”true” в layout.
9️⃣ AudioTrack имеет ограничения в Android, и не стоит забывать о них!
🔟 Добавляйте поддержку Chromecast для аудио/видео сервисов, это позволит вашим пользователям наслаждаться конвентом на различных устройствах. Смотрите Google Cast SDK
The Decalogue of a Pro Media App от Marcin Adamczewski
Для всех тех, кто пишет приложения, связанные с медиа: аудио и видео плееры и пр., и тем кто этим не занимается рекомендую ознакомиться с лучшими практиками при разработке такого рода приложений. Основные из них:
1️⃣ Необходимо поддерживать AudioFocus
2️⃣ Обрабатывайте Broadcast AudioManager.ACTION_AUDIO_BECOMING_NOISY
3️⃣ Android Media Session содержит множество информации которую стоит обрабатывать
4️⃣ Показывайте уведомление о Media. Для этого лучше использовать Notification.MediaStyle, чтобы уведомление выглядело в нативном стиле системы.
5️⃣ Media также показывается и на экране блокировки, поэтому проверяйте ее отображение: фоновую полноэкранную картинку, доступные действия для управления и пр.
6️⃣ Проигрывание медиа часто должно продолжаться и в фоне, поэтому вам стоит использовать Foreground Service для вашего плеера.
7️⃣ Чтобы ваш телефон не выключил процессор когда отключится экран важно использовать WakeLock. Для плееров, воспроизводящих онлайн контент, очень важно не дать отключиться WiFi. Сделать это можно с помощью WifiManager.WifiLock.
8️⃣ Видео всегда должно быть на экране, поэтому не даем ему погаснуть с помощью атрибута android:keepScreenOn=”true” в layout.
9️⃣ AudioTrack имеет ограничения в Android, и не стоит забывать о них!
🔟 Добавляйте поддержку Chromecast для аудио/видео сервисов, это позволит вашим пользователям наслаждаться конвентом на различных устройствах. Смотрите Google Cast SDK
Medium
The Decalogue of a Pro Media App
In this short article, I’d like to reveal the 10 ancient commandments that will help you create a pro media application. I’ll present…
#Service #Background
Pitfalls of a foreground Service lifecycle от Maciej Witowski
Android 8.0 ввел новые правила для приложений - по максимум показывать пользователю активность в фоне и управлению по ее запуску отдавать системе (JobScheduler). Также ужесточением политики было необходимость в этом году всем приложением поддерживать minSdk = Android 8.0.
Одним из больших изменений, которые пришлось делать разработчикам при адаптации своих приложений - уход от обычных Service в сторону Foreground Service либо JobScheduler.
Основные правила при работе с Foreground Service:
1️⃣ Не вызывайте Service.startForeground() слишком рано
2️⃣ Вызывайте Service.stopSelf() после startForeground()
3️⃣ Останавливайте Service только из него самого
Нарушение правил карается падением приложения по принципам работы на Android 8.0+ 😢
Соблюдение этих правил сводиться к тому, что запуск Context.startForegroundService() всегда должен сводиться в обязательному наличию вызова Service.startForeground().
Pitfalls of a foreground Service lifecycle от Maciej Witowski
Android 8.0 ввел новые правила для приложений - по максимум показывать пользователю активность в фоне и управлению по ее запуску отдавать системе (JobScheduler). Также ужесточением политики было необходимость в этом году всем приложением поддерживать minSdk = Android 8.0.
Одним из больших изменений, которые пришлось делать разработчикам при адаптации своих приложений - уход от обычных Service в сторону Foreground Service либо JobScheduler.
Основные правила при работе с Foreground Service:
1️⃣ Не вызывайте Service.startForeground() слишком рано
2️⃣ Вызывайте Service.stopSelf() после startForeground()
3️⃣ Останавливайте Service только из него самого
Нарушение правил карается падением приложения по принципам работы на Android 8.0+ 😢
Соблюдение этих правил сводиться к тому, что запуск Context.startForegroundService() всегда должен сводиться в обязательному наличию вызова Service.startForeground().
Medium
Pitfalls of a foreground Service lifecycle
As part of Google Play’s target API level requirement existing apps need to target at least Android 8.0. One of the migration steps is…
#Flutter
Flutter for Android developers
Хорошая выборка информации по тому как преходить с Android разработки на Flutter. В репозитории вы найдете описание аналогов основных концепций из мира Android во Flutter, также прилагаются популярные паттерны: Dependency Injection, Rx, сетевые запросы, система сборки и пр.
Flutter for Android developers
Хорошая выборка информации по тому как преходить с Android разработки на Flutter. В репозитории вы найдете описание аналогов основных концепций из мира Android во Flutter, также прилагаются популярные паттерны: Dependency Injection, Rx, сетевые запросы, система сборки и пр.
По традиции все подводят итоги в последнем посте года, но мой канал совсем ещё маленький и только начинает свой рост. Одно я знаю наверняка - я хочу выразить всем вам спасибо за поддержку в развитие этого канала. Ваш интерес и положительные отзывы стимулируют делать больше и лучше.
В следующем году я хочу реализовать множество планов: осваивать новые форматы, улучшать интерактивность и создавать собственный контент.
Вам же хочу пожелать в следующем году быстрого профессионального роста, легкой модуляризации ваших проектов, интересных приложений
В следующем году я хочу реализовать множество планов: осваивать новые форматы, улучшать интерактивность и создавать собственный контент.
Вам же хочу пожелать в следующем году быстрого профессионального роста, легкой модуляризации ваших проектов, интересных приложений