Современные Android-устройства достаточно безопасны и вот почему
К преимуществам Android обычно относят настраиваемость, доступные цены, широкое разнообразие устройств, а про безопасность упоминаний, как правило, нет.
Автор статьи решил выяснить насколько платформа является безопасной и вот какие плюсы он нашел:
👉 любой телефон с Android на борту соответствует CDD
👉 шифрование встроенного хранилища
👉 верифицированная загрузка
👉 безопасное хранение ключей шифрования
👉 ограниченный доступ к файлам приложениями в Android 11
К преимуществам Android обычно относят настраиваемость, доступные цены, широкое разнообразие устройств, а про безопасность упоминаний, как правило, нет.
Автор статьи решил выяснить насколько платформа является безопасной и вот какие плюсы он нашел:
👉 любой телефон с Android на борту соответствует CDD
👉 шифрование встроенного хранилища
👉 верифицированная загрузка
👉 безопасное хранение ключей шифрования
👉 ограниченный доступ к файлам приложениями в Android 11
Хабр
Современные Android-устройства достаточно безопасны и вот почему
Говоря о преимуществах платформы Android, большинство пользователей обычно называют настраиваемость, разнообразие устройств и гибкие цены. И почему-то о безопасности речи нет. Видимо, большинство...
#UI #ServerDrivenUi
Beagle - еще одно решение для реализации концепции Server-Driven UI. Эта концепция позволяет управлять интерфейсом приложения с бэкенда.
Особенности Beagle:
👉 доступно использование для Android, iOS, Web
👉 используется декларативный UI подход
👉 под капотом применяется Yoga Layout
👉 примеры кода на Kotlin и Swift
👉 имеется хорошая документация с руководствами
👉 документация для реализации подхода и со стороны бэкенда (примеры кода микросервиса тоже на kotlin)
👉 есть playground - где можно попробовать описать компоненты и страницы в json формате
👉 позволяет управлять контентом, визуальной структурой и действиями.
Действия, это например:
👉🏼 отправка http(s) запросов
👉🏼 показ диалогов и алертов
👉🏼 навигация внутри приложения
👉🏼 открытие url-ссылок в стороннем браузере
👉🏼 и также есть возможность реализовать собственные действия
Beagle - еще одно решение для реализации концепции Server-Driven UI. Эта концепция позволяет управлять интерфейсом приложения с бэкенда.
Особенности Beagle:
👉 доступно использование для Android, iOS, Web
👉 используется декларативный UI подход
👉 под капотом применяется Yoga Layout
👉 примеры кода на Kotlin и Swift
👉 имеется хорошая документация с руководствами
👉 документация для реализации подхода и со стороны бэкенда (примеры кода микросервиса тоже на kotlin)
👉 есть playground - где можно попробовать описать компоненты и страницы в json формате
👉 позволяет управлять контентом, визуальной структурой и действиями.
Действия, это например:
👉🏼 отправка http(s) запросов
👉🏼 показ диалогов и алертов
👉🏼 навигация внутри приложения
👉🏼 открытие url-ссылок в стороннем браузере
👉🏼 и также есть возможность реализовать собственные действия
#Kotlin #Generics
Generics in Kotlin
Хороший разбор основных понятий Generic в Kotlin:
👉 Type vs Class vs Subtype
👉 Вариативность
👉 Ковариативность
👉 Контрвариант
👉 Инвариант
👉 Type projection
👉 Star projection
👉 Затирание типов
👉 reified
Generics in Kotlin
Хороший разбор основных понятий Generic в Kotlin:
👉 Type vs Class vs Subtype
👉 Вариативность
👉 Ковариативность
👉 Контрвариант
👉 Инвариант
👉 Type projection
👉 Star projection
👉 Затирание типов
👉 reified
Medium
Generics in Kotlin
Generics means we use a class or an implementation in a very generic manner.
#GooglePlay
Обновление политики Google Play от 8 июля 2020
Что нового:
👉 Политики для новых приложений теперь будут применяться одновременно с существующими, а не как раньше - в день объявления о новых политиках
👉 Больше информации о том, какую политику нарушает ваше приложение и скриншоты, где это обнаружено
👉 Новые требования для приложений в категорию "Новости"
👉 Новые требования по модерации контента в AR, генерируемого пользователям. Например, нельзя разместить его в зоне военной базы или частной собственности.
👉 Обновленные требования по участии в категории "Приложения для семьи и детей"
👉 Новые требования по размещению рекламу, например нельзя будет показывать нескрываемую рекламу дольше 5 секунд в местах, где это нарушает нормальную работу приложения
👉 Новая политика Mobile Unwanted Software (MUwS).
Новые политики вступают в силу 12 августа 2020
Доступ ко всем файлам
👉 Приложения теперь должны запрашивать доступ только к тем директориям, которые критически для их работы
👉 Разрешение
👉 Изменения касательно работы с файлами вступают в силу в начале 2021. Пора готовиться!
Обновление политики Google Play от 8 июля 2020
Что нового:
👉 Политики для новых приложений теперь будут применяться одновременно с существующими, а не как раньше - в день объявления о новых политиках
👉 Больше информации о том, какую политику нарушает ваше приложение и скриншоты, где это обнаружено
👉 Новые требования для приложений в категорию "Новости"
👉 Новые требования по модерации контента в AR, генерируемого пользователям. Например, нельзя разместить его в зоне военной базы или частной собственности.
👉 Обновленные требования по участии в категории "Приложения для семьи и детей"
👉 Новые требования по размещению рекламу, например нельзя будет показывать нескрываемую рекламу дольше 5 секунд в местах, где это нарушает нормальную работу приложения
👉 Новая политика Mobile Unwanted Software (MUwS).
Новые политики вступают в силу 12 августа 2020
Доступ ко всем файлам
👉 Приложения теперь должны запрашивать доступ только к тем директориям, которые критически для их работы
👉 Разрешение
MANAGE_EXTERNAL_STORAGE
для приложения с targetSdk = 30 (Android 11) будет доступен только с начала 2021 и по критериям, одобренными Google Play. До этого времени размещать приложения с объявлением этого разрешения нельзя👉 Изменения касательно работы с файлами вступают в силу в начале 2021. Пора готовиться!
YouTube
Google Play PolicyBytes - July 2020 Policy Updates
Joe Davis, Outreach and Policy Education Lead at Google, explains the July 2020 Play policy updates, will review Google Play’s updated enforcement grace periods for this and all future policy updates, and goes over the new policy center. Stay tuned to learn…
#Animations
Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet
Наличие анимаций делает приложение более приятным для использования, однако их добавление - не всегда самая простая задача, особенно когда это касается BottomSheet.
Авторы статьи пытались использовать
Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet
Наличие анимаций делает приложение более приятным для использования, однако их добавление - не всегда самая простая задача, особенно когда это касается BottomSheet.
Авторы статьи пытались использовать
animateLayoutChanges
, setCustomAnimations
для FragmentTransaction
, Shared Element Transition
, но в итоге остановились на кастомном Transition
. Так же рассматриваются альтернативные способы и почему они не были использованы.Хабр
Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet
Написано огромное количество документации и статей о важной визуальной составляющей приложений — анимации. Несмотря на это мы смогли вляпаться в проблемы столкнулись с загвоздками при её реализации....
#GooglePlay
Implementing In-App Updates in Android
Обновление приложения может быть критически необходимым, например, в случае проблем с безопасностью или в случае падения. Однако не у всех пользователей установлено автоматическое обновление приложений в Google Play. Чтобы решить эту проблему, можно воспользоваться In-app обновлениями из Play Core library.
В статье рассматривается 2 способа настройки обновлений:
👉
👉
Implementing In-App Updates in Android
Обновление приложения может быть критически необходимым, например, в случае проблем с безопасностью или в случае падения. Однако не у всех пользователей установлено автоматическое обновление приложений в Google Play. Чтобы решить эту проблему, можно воспользоваться In-app обновлениями из Play Core library.
В статье рассматривается 2 способа настройки обновлений:
👉
Flexible
(выполняется в фоне, не прерывая пользователя)👉
Immediate
(полноэкраннный, требующий установки и перезагрузки приложения для дальнейшего использования).Medium
Implementing In-App Updates in Android
I’m sure we all must have come across the situations while working on the applications where we needed to send out an app update can say…
#DateTime
Tick Tock: Desugaring and Timezones
В Android Studio 4 появился desugaring некоторых Java 8+ APIs, в том числе и java.time. Однако для таймзон по умолчанию используется java.util.TimeZone, которая зависит от рантайма, что является проблемой для Android, так как многие устройства уже перестали получать обновления, а только в 2019 году в мире было 7 изменений таймзон.
Чтобы решить данную проблему, была создана библиотека Tick Tock, которая использует провайдер таймзон, зависящий от вшитого словаря.
Tick Tock: Desugaring and Timezones
В Android Studio 4 появился desugaring некоторых Java 8+ APIs, в том числе и java.time. Однако для таймзон по умолчанию используется java.util.TimeZone, которая зависит от рантайма, что является проблемой для Android, так как многие устройства уже перестали получать обновления, а только в 2019 году в мире было 7 изменений таймзон.
Чтобы решить данную проблему, была создана библиотека Tick Tock, которая использует провайдер таймзон, зависящий от вшитого словаря.
Zac Sweers
Tick Tock: Desugaring and Timezones
Dealing with timezone data in a desugaring world.
Какую библиотеку как основную вы используете для работы с датой и временем при разработке Android приложений?
Anonymous Poll
46%
Старый java.util.Datе
10%
Java 8 Date/Time API
16%
ThreeTen или ThreeTenABP
14%
Joda Time
1%
Другая библиотека
1%
Не разрабатываю под Android (вообще или нативные приложения)
12%
Не учавствую в опросе
#Huawei #Competation
Huawei объявляет конкурс приложений с призовым фондом в 1 млн. долларов
Конкурс инновационных приложений Huawei под названием Apps UP приглашает разработчиков со всего мира создавать инновационные приложения с использованием HMS Core. Разыгрывается 1 миллион долларов!
Huawei объявляет конкурс приложений с призовым фондом в 1 млн. долларов
Конкурс инновационных приложений Huawei под названием Apps UP приглашает разработчиков со всего мира создавать инновационные приложения с использованием HMS Core. Разыгрывается 1 миллион долларов!
AppTractor
Huawei объявляет конкурс приложений с призовым фондом в 1 млн. долларов
Конкурс инновационных приложений Huawei под названием Apps UP приглашает разработчиков со всего мира создавать инновационные приложения с использованием HMS Core.
#AndroidBroadcast #Kotlin #Coroutines
Библиотеки kotlinx.* (Livestream)
Когда: вторник, 14 июля, 20:00 (GMT+3)
Обсуждаем библиотеки Kotlin с их разработчиком. В программе Coroutines, Serialization, IO, DateTime, Стандартная Библиотека, новинки Kotlin 1.4 и ближайшее развитие экосистемы Kotlin.
В гостях Всеволод Толстопятов из JetBrains. Всеволод занимается библиотеками и экосистемой вокруг Kotlin с фокусами на Coroutines и Serialization.
Библиотеки kotlinx.* (Livestream)
Когда: вторник, 14 июля, 20:00 (GMT+3)
Обсуждаем библиотеки Kotlin с их разработчиком. В программе Coroutines, Serialization, IO, DateTime, Стандартная Библиотека, новинки Kotlin 1.4 и ближайшее развитие экосистемы Kotlin.
В гостях Всеволод Толстопятов из JetBrains. Всеволод занимается библиотеками и экосистемой вокруг Kotlin с фокусами на Coroutines и Serialization.
#Kotlin
With the receiver in scope
Kotlin поддерживает 2 типа функций:
👉 Обычные
👉 С Receiver-ом
Функции с receiver-ом позволяют сделать код более читабельным в отдельнх случаях, но всегда ли стоит прибегать к ним? Ответ - нет! Не стоит ставить во главу минимальное количество строк и символов в коде. Главное требование должно быть легкая читаемость кода разработчиками
With the receiver in scope
Kotlin поддерживает 2 типа функций:
👉 Обычные
(T) -> E
👉 С Receiver-ом
T.() -> E
Функции с receiver-ом позволяют сделать код более читабельным в отдельнх случаях, но всегда ли стоит прибегать к ним? Ответ - нет! Не стоит ставить во главу минимальное количество строк и символов в коде. Главное требование должно быть легкая читаемость кода разработчиками
Medium
With the receiver in scope
Repetition is a bane of software development. Kotlin scope functions help when they are idiomatically used.
#Activity #Fragment
BaseActivity and BaseFragment are monsters
Y вас есть
👉 Наследование от классов из Jetpack
👉 Extension-функции
👉 ActivityResultContract
👉 Lifecycle callback
BaseActivity and BaseFragment are monsters
Y вас есть
BaseActivity
и BaseFragment
в проекте? Если да - вам стоит обратить внимание на статью, где автор рассказывает что это за монстры и как их избегать:👉 Наследование от классов из Jetpack
👉 Extension-функции
👉 ActivityResultContract
👉 Lifecycle callback
Medium
BaseActivity and BaseFragment are monsters
An old tale of composition over inheritance, sort of!
#AppsCloning
Preventing Android App Cloning
"Клонирование" приложения - возможность запускать 2 инстанса одного приложения на одном и том же устройстве. Некоторые производители устройств добавляют такую функцию в свою прошивку из коробки, создавая фейкового пользователя для запуска второй копии приложения. Так же в маркете есть приложения, дающий схожий функционал, создавая некоторое подобие песочницы внутри своей
В статье можно найти советы, как защитить свое приложение от клонирования. Также вам стоит подумать, что если эта функция имеет место и популярна у пользователей, то вам стоит задуматься об интеграции ее в своё приложение
Preventing Android App Cloning
"Клонирование" приложения - возможность запускать 2 инстанса одного приложения на одном и том же устройстве. Некоторые производители устройств добавляют такую функцию в свою прошивку из коробки, создавая фейкового пользователя для запуска второй копии приложения. Так же в маркете есть приложения, дающий схожий функционал, создавая некоторое подобие песочницы внутри своей
/data
директории. В обоих случаях приложение может работать нестабильно, например при попытке доступа к файловой системе.В статье можно найти советы, как защитить свое приложение от клонирования. Также вам стоит подумать, что если эта функция имеет место и популярна у пользователей, то вам стоит задуматься об интеграции ее в своё приложение
Medium
Preventing Android App Cloning
App cloning is nothing but a technique which allows you to run two different instances of an android app at the same time.
#Android
Accelerating Android Updates
В последние годы Google делает множество попыток ускорить обновление Android устройств до новых версий ОС:
👉 Project Treble - отделение OEM и SoC зависимостей от основного кода ОС
👉 Generic System Images - чистый образ Android (без модификаций AOSP)
👉 Project Mainline - обновление части компонентов ОС через Google Play (безопасность, приватность и др.)
👉 Обновление других важный компонентов ОС: авторизациях, push уведомления, Google Play Protect, WebView и др.
Все это дала своё результаты - Android 10 стала самой быстрорастущей версией ОС за всю историю зеленого робота.
Accelerating Android Updates
В последние годы Google делает множество попыток ускорить обновление Android устройств до новых версий ОС:
👉 Project Treble - отделение OEM и SoC зависимостей от основного кода ОС
👉 Generic System Images - чистый образ Android (без модификаций AOSP)
👉 Project Mainline - обновление части компонентов ОС через Google Play (безопасность, приватность и др.)
👉 Обновление других важный компонентов ОС: авторизациях, push уведомления, Google Play Protect, WebView и др.
Все это дала своё результаты - Android 10 стала самой быстрорастущей версией ОС за всю историю зеленого робота.
Android Developers Blog
Accelerating Android Updates
Posted by Eddie Hsu (Technical Program Manager), Brent VerWeyst (Product Manager), Maya Ben Ari (Product Manager), Amith Dsouza (Technica...
#Android11 #Gradle
Preparing your Gradle build for package visibility in Android 11
В Android 11 нас ждут ограничение доступа к информации об установленных приложениях в системе (подробнее здесь). Чтобы иметь доступ к такой информации в манифесте надо будет добавлять новую секцию
Preparing your Gradle build for package visibility in Android 11
В Android 11 нас ждут ограничение доступа к информации об установленных приложениях в системе (подробнее здесь). Чтобы иметь доступ к такой информации в манифесте надо будет добавлять новую секцию
<queries>
. Поддерживается она только в Android Gradle Plug-in 4.1 выше поэтому без обновления не обойдётсяAndroid Developers Blog
Preparing your Gradle build for package visibility in Android 11
Posted by David Winer , Product Manager One of the central themes for Android 11 has been protecting user privacy. On Android 10 an...
#Android11 #Notifications
People Notification
4 минуты чтения
В Android 11 нас ждут People Notification, которые имеют в своём контексте человека или группу людей. Такие уведомления будут приоритизироваться выше, а также позволят размещать их в новой секции «Converstaion» в панели уведомлений и показать Notification Bubble.
People Notification
4 минуты чтения
В Android 11 нас ждут People Notification, которые имеют в своём контексте человека или группу людей. Такие уведомления будут приоритизироваться выше, а также позволят размещать их в новой секции «Converstaion» в панели уведомлений и показать Notification Bubble.
Medium
People notifications
In Android 11, we’re making Android more people-centric and expressive, reimagining the way we have conversations on our phones, and…
#Network
Вышел OkHttp 4.8.0
👉 Работы в направление отказа от зависимости Bouncy Castle в
👉 Улучшения для приложений с большим количеством параллельных запросов
👉 Обновление до Okio 2.7.0
👉 Теперь в логах не будет сообщения "Didn't find class org.conscrypt.ConscryptHostnameVerifier"
👉 Баг фикс
Вышел OkHttp 4.8.0
👉 Работы в направление отказа от зависимости Bouncy Castle в
okhttp-tls
👉 Улучшения для приложений с большим количеством параллельных запросов
👉 Обновление до Okio 2.7.0
👉 Теперь в логах не будет сообщения "Didn't find class org.conscrypt.ConscryptHostnameVerifier"
👉 Баг фикс
GitHub
okhttp/CHANGELOG.md at master · square/okhttp
Square’s meticulous HTTP client for the JVM, Android, and GraalVM. - square/okhttp
#Testing
Юнит-тесты переоценены
Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
Юнит-тесты переоценены
Автор статьи предлагает по-новому взглянуть на процесс тестирования вашего кода путём отказа от максимального покрытия кода юнит-тестами. Он предлагает сосредотачиваться не на тестировании каждой отдельной функции в вашей бизнес-логике, а создавать тесты, которые будут проверять use case'ы вашего приложения, при этом также максимально отказаться от мокирования зависимостей, чтобы быть на 100% уверенным в том что всё работает правильно. В качестве примера автор переписывает приложение, которое написано с учётом требований юнит-тестирования, на функциональный вариант.
Хабр
Юнит-тесты переоценены
Предлагаем вам перевод поста «Unit Testing is Overrated» от Alex Golub, чтобы подискутировать на тему юнит-тестов. Действительно ли они переоценены, как считает...
#Kotlin #R8 #Reflection
Shrinking Kotlin Libraries and Applications using Kotlin Reflection with R8
В R8 добавлена поддержка работы с Kotlin Metadata. Новый функционал доступен, начиная с Android Gradle Plugin 4.1.0-beta03.
В статье разбирается, что такое Kotlin Metadata и как это работает
Shrinking Kotlin Libraries and Applications using Kotlin Reflection with R8
В R8 добавлена поддержка работы с Kotlin Metadata. Новый функционал доступен, начиная с Android Gradle Plugin 4.1.0-beta03.
В статье разбирается, что такое Kotlin Metadata и как это работает
Medium
Shrinking Kotlin libraries and applications using Kotlin reflection with R8
Co-authored by Morten Krogh-Jespersen and Mads Ager
#Android11
Improving app startup with I/O prefetching
Улучшения в ОС Android и ART происходят каждую мажорную версию, но озвучивают их мало 😢 Вот и новую возможность IORap, направленную на улучшение времени запуска приложений. На некоторых приложения она позволяет ускорить запуск приложения на 20%+ (по заявлениям Google)
IORap работает на основе предсказания какие I/O операции будут необходимы и выполняет их заранее, например выполняет загрузку данных и делает последовательность операций чтения более быстрой.
Эта оптимизация основана на статистике что большинство приложение из Google Play проводят более 10% времени на старте в блокирующих I/O операциях и ожидают ответа.
В статье вы найдете множество графиков и подробности работы IORap на устройстве.
Improving app startup with I/O prefetching
Улучшения в ОС Android и ART происходят каждую мажорную версию, но озвучивают их мало 😢 Вот и новую возможность IORap, направленную на улучшение времени запуска приложений. На некоторых приложения она позволяет ускорить запуск приложения на 20%+ (по заявлениям Google)
IORap работает на основе предсказания какие I/O операции будут необходимы и выполняет их заранее, например выполняет загрузку данных и делает последовательность операций чтения более быстрой.
Эта оптимизация основана на статистике что большинство приложение из Google Play проводят более 10% времени на старте в блокирующих I/O операциях и ожидают ответа.
В статье вы найдете множество графиков и подробности работы IORap на устройстве.
Medium
Improving app startup with I/O prefetching
In Android 11, we introduced IORap, a new feature which greatly improves application startup times. We have observed that apps start more…