Дерево зависимостей Gradle
#gradle #android
Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓
На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
#gradle #android
Кайфовая статья, которая по шагам рассказывает про Gradle и конкретно про дерево зависимостей. Особенно будет полезно тем, кто не чувствует себя уверенно в Gradle. 🤓
На небольшой примере описывается:
- что такое зависимости и транзитивные зависимости в Gradle?
- что такое дерево зависимостей в Gradle?
- какие есть конфигурации зависимостей в Gradle?
- а также описывает несколько способов создать дерево зависимостей в вашем проекте Gradle.
👍14🤔2
Kotlin for-loop
#kotlin
Короткая, но ёмкая статья про работу циклов в Kotlin. Будет особенно полезна новичкам.
Автор рассматривает большинство ситуаций использования циклов в Kotlin. Да и в целом, описывает, что такое Iterable, почему циклы могут описываться именно таким образом и содержит сразу несколько примеров того, как они работают.
#kotlin
Короткая, но ёмкая статья про работу циклов в Kotlin. Будет особенно полезна новичкам.
Автор рассматривает большинство ситуаций использования циклов в Kotlin. Да и в целом, описывает, что такое Iterable, почему циклы могут описываться именно таким образом и содержит сразу несколько примеров того, как они работают.
👍6😐6🔥1
Как полностью удалить Android Studio?
#разработка
Иногда есть необходимость в полном удалении Android Studio, например если: есть аномалии в работе, огромный кэш, который заполнил всё дисковое пространство, или вы просто хотите начать всё с начала. 🙃
1️⃣ Первое что стоит сделайть – резервная копия настроек через File -> Manage IDE Settings -> Export Settings. Это действие спасёт вас от того, чтобы долго и нудно настраивать студию с нуля.
2️⃣ Дальше надо закрыть студию. Вы можете использовать скрипт, который сделает всю работу за вас и удалит кэш и настроки. Если же вам лень использовать скрипт, то можно использовать несколько команд, которые сделают почти то же самое.
Дальше не забудьте импортировать настройки на первом шаге, и у вас будет чистая Android Studio где можно начинать творить.
#разработка
Иногда есть необходимость в полном удалении Android Studio, например если: есть аномалии в работе, огромный кэш, который заполнил всё дисковое пространство, или вы просто хотите начать всё с начала. 🙃
1️⃣ Первое что стоит сделайть – резервная копия настроек через File -> Manage IDE Settings -> Export Settings. Это действие спасёт вас от того, чтобы долго и нудно настраивать студию с нуля.
2️⃣ Дальше надо закрыть студию. Вы можете использовать скрипт, который сделает всю работу за вас и удалит кэш и настроки. Если же вам лень использовать скрипт, то можно использовать несколько команд, которые сделают почти то же самое.
Дальше не забудьте импортировать настройки на первом шаге, и у вас будет чистая Android Studio где можно начинать творить.
👍14😁2
JavaScriptSandbox
#android
Мало кто заметил (вероятно, потому что это довольно редкая штука), но Google работает над новой возможностью выполнять JS-код в Android.
Если у вас когда-то был опыт запуска JS-кода в Android-приложении, то вы должны знать о том, что для его запуска существует только одна возможность — использование инстанса WebView в фоне.
Это далеко не всегда удобно: нужно создавать дополнительные интерфейсы и функции для связи с JS, да и создавать инстанс WebView бывает накладно. Однако появляется новое решение — JavaScriptSandbox.
Вот пара преимуществ:
🎯 более низкое потребление ресурсов, так как не требуется создавать WebView;
🎯 можно запустить работу в Service, или WorkManager;
🎯 возможность выполнять несколько задач одновременно;
🎯 и передавать большие объёмы данных;
Я бы пока не рискнул тащить это в боевой проект, потому что JavascriptEngine ещё в начальной alpha-версии, но, надеюсь, Google и дальше продолжит развитие этой библиотеки. 🤓
#android
Мало кто заметил (вероятно, потому что это довольно редкая штука), но Google работает над новой возможностью выполнять JS-код в Android.
Если у вас когда-то был опыт запуска JS-кода в Android-приложении, то вы должны знать о том, что для его запуска существует только одна возможность — использование инстанса WebView в фоне.
Это далеко не всегда удобно: нужно создавать дополнительные интерфейсы и функции для связи с JS, да и создавать инстанс WebView бывает накладно. Однако появляется новое решение — JavaScriptSandbox.
Вот пара преимуществ:
🎯 более низкое потребление ресурсов, так как не требуется создавать WebView;
🎯 можно запустить работу в Service, или WorkManager;
🎯 возможность выполнять несколько задач одновременно;
🎯 и передавать большие объёмы данных;
Я бы пока не рискнул тащить это в боевой проект, потому что JavascriptEngine ещё в начальной alpha-версии, но, надеюсь, Google и дальше продолжит развитие этой библиотеки. 🤓
🔥16👍5💩1
K2 Compiler — stable в Kotlin 2.0
#kotlin
Крутейшая новость — скоро нас ожидает появление Kotlin 2.0 вместе с K2 Compiler. 🎉
А это значит, что грядет переход Kotlin на новую архитектуру, а это даст дорогу новым фичам и исправлению старых багов. Как мы видим, это значимое изменение в языке и идёт повышение мажорной версии. К счастью, нам ничего не придётся переделывать, и весь старый код будет корректно работать. Ну и скоро будет обновление Kotlin IDE plugin, который будет поддерживать новый Compiler по умолчанию.
Если хотите знать больше технической информации, то можно начать с этого видео, а продолжить этим.
Кстати, вы уже можете использовать K2 Compiler, начиная с версии языка 1.8.20 и дать свой фидбек.
Желаем команде Kotlin успешного релиза и с нетерпением ждём анонса. 👍
#kotlin
Крутейшая новость — скоро нас ожидает появление Kotlin 2.0 вместе с K2 Compiler. 🎉
А это значит, что грядет переход Kotlin на новую архитектуру, а это даст дорогу новым фичам и исправлению старых багов. Как мы видим, это значимое изменение в языке и идёт повышение мажорной версии. К счастью, нам ничего не придётся переделывать, и весь старый код будет корректно работать. Ну и скоро будет обновление Kotlin IDE plugin, который будет поддерживать новый Compiler по умолчанию.
Если хотите знать больше технической информации, то можно начать с этого видео, а продолжить этим.
Кстати, вы уже можете использовать K2 Compiler, начиная с версии языка 1.8.20 и дать свой фидбек.
Желаем команде Kotlin успешного релиза и с нетерпением ждём анонса. 👍
🔥23👍2
Zero Bug Policy
#разработка
Интересный пример того, как ребята из SkyEng избавлялись от багов, а потом пришли к Zero Bug Policy.
Предпосылкой к этому шагу был багатон — спринт, который позволил бы убрать большую часть багов в приложении.
ZBP, в общих чертах, заключается в том, чтобы решать любые баги сразу после их появления — если они важные, то исправлять их немедленно, а если не важные, то не обращать на них внимание и жить с ними в проде.
В итоге, в SkyEng не получилось уйти полностью от багов, и появилось несколько подвидов политики:
- классическая строгая — когда все баги исправляются немедленно;
- "спринты любви" — когда некоторые баги фиксируются раз в несколько итераций;
- по стоимости — когда идёт сравнение с текущими фичами.
В итоге, статья описывает как плюсы, так и минусы этого подхода. Как минимум, интересно почитать, а как максимум — взять что-то на вооружение.
Интересно, среди читателей есть те, кто использует подобный подход на практике?
#разработка
Интересный пример того, как ребята из SkyEng избавлялись от багов, а потом пришли к Zero Bug Policy.
Предпосылкой к этому шагу был багатон — спринт, который позволил бы убрать большую часть багов в приложении.
ZBP, в общих чертах, заключается в том, чтобы решать любые баги сразу после их появления — если они важные, то исправлять их немедленно, а если не важные, то не обращать на них внимание и жить с ними в проде.
В итоге, в SkyEng не получилось уйти полностью от багов, и появилось несколько подвидов политики:
- классическая строгая — когда все баги исправляются немедленно;
- "спринты любви" — когда некоторые баги фиксируются раз в несколько итераций;
- по стоимости — когда идёт сравнение с текущими фичами.
В итоге, статья описывает как плюсы, так и минусы этого подхода. Как минимум, интересно почитать, а как максимум — взять что-то на вооружение.
Интересно, среди читателей есть те, кто использует подобный подход на практике?
👍8👎6
String pool и безопасность
#android
Для большинства разработчиков не секрет, что существует такая вещь как String pool. Если в двух словах, то это область в памяти, которая позволяет экономить ресурсы при работе со строками: если мы создаём одинаковую строку при помощи двойных кавычек (как обычно и делаем), то происходит не дублирование строк, а просто изменение ссылок.
При этом есть важный нюанс: нельзя на 100% быть уверенным в том, что строки удалены из памяти.
Тут автор провел крутейшее исследование, где описал, что делать со строками, которые важно не хранить в памяти: например, ключи или токены. Вообще тут здорово показан пример, как исследовать работу с памятью.
Не буду спойлерить, лучше почитать всё с самого начала. Вот ссылка на статью. 😎
#android
Для большинства разработчиков не секрет, что существует такая вещь как String pool. Если в двух словах, то это область в памяти, которая позволяет экономить ресурсы при работе со строками: если мы создаём одинаковую строку при помощи двойных кавычек (как обычно и делаем), то происходит не дублирование строк, а просто изменение ссылок.
При этом есть важный нюанс: нельзя на 100% быть уверенным в том, что строки удалены из памяти.
Тут автор провел крутейшее исследование, где описал, что делать со строками, которые важно не хранить в памяти: например, ключи или токены. Вообще тут здорово показан пример, как исследовать работу с памятью.
Не буду спойлерить, лучше почитать всё с самого начала. Вот ссылка на статью. 😎
🔥19👍3🤔1💩1
KMM Knowledge Base
#kmm #kotlin
Не могу не поделиться 🔝 ресурсом, если вы работаете с KMM — KMM Knowledge base.
Ребята заморочились и сделали крутейший русскоязычный ресурс, где можно найти массу полезного:
- какие библиотеки есть для решения типовых задач;
- с чего начать работу с KMM;
- а что там с многопоточностью;
- примеры кода и приложений.
Точно в закладки, чтобы не потерять! 👍
#kmm #kotlin
Не могу не поделиться 🔝 ресурсом, если вы работаете с KMM — KMM Knowledge base.
Ребята заморочились и сделали крутейший русскоязычный ресурс, где можно найти массу полезного:
- какие библиотеки есть для решения типовых задач;
- с чего начать работу с KMM;
- а что там с многопоточностью;
- примеры кода и приложений.
Точно в закладки, чтобы не потерять! 👍
👍17🔥3
Android Studio Flamingo
#android
Тут свежая версия Android Studio перешла в Beta4, а это значит, что самое время посмотреть, что там появилось новенького.
Вот некоторые изменения:
1️⃣ Themed app icons and dynamic color — с появлением Android 13 можно использовать themed app icons (подробнее о них писал тут) и динамических тем. Теперь добавилось превью, что позволяет прямо в IDE посмотреть внешний вид.
2️⃣ Dynamic color preview — дополнение к предыдущему пункту, но для тех, кто использует Compose: можно добавить тег wallpaper для превью, чтобы посмотреть, как будет выглядеть функция с разными фонами пользователя.
3️⃣ Compose Tracing — теперь можно смотреть, насколько качественно работают ваши Compose-функции, правда надо не забыть добавить нужную зависимость в проект.
4️⃣ Network Inspector — крутая фича, которая позволяет подебажить запросы к серверу внутри IDE. Можно изменить запрос, добавить headers или кастомные правила для разных ответов сервера.
5️⃣ App Quality Insights — улучшили фичу, добавили фильтры и возможность закрывать краши прямо из IDE. Удобно, но пока нравится больше смотреть за статистикой в Firebase.
Весь список изменений можно найти тут.
#android
Тут свежая версия Android Studio перешла в Beta4, а это значит, что самое время посмотреть, что там появилось новенького.
Вот некоторые изменения:
1️⃣ Themed app icons and dynamic color — с появлением Android 13 можно использовать themed app icons (подробнее о них писал тут) и динамических тем. Теперь добавилось превью, что позволяет прямо в IDE посмотреть внешний вид.
2️⃣ Dynamic color preview — дополнение к предыдущему пункту, но для тех, кто использует Compose: можно добавить тег wallpaper для превью, чтобы посмотреть, как будет выглядеть функция с разными фонами пользователя.
3️⃣ Compose Tracing — теперь можно смотреть, насколько качественно работают ваши Compose-функции, правда надо не забыть добавить нужную зависимость в проект.
4️⃣ Network Inspector — крутая фича, которая позволяет подебажить запросы к серверу внутри IDE. Можно изменить запрос, добавить headers или кастомные правила для разных ответов сервера.
5️⃣ App Quality Insights — улучшили фичу, добавили фильтры и возможность закрывать краши прямо из IDE. Удобно, но пока нравится больше смотреть за статистикой в Firebase.
Весь список изменений можно найти тут.
🔥22👍2
👋🏻 Я некоторое время нахожусь в Белграде 🇷🇸
Вдруг из моих подписчиков кто-то находится тут? Буду рад выпить чашку кофе и поговорить про разработку и быт разработчика ☕️
Вдруг из моих подписчиков кто-то находится тут? Буду рад выпить чашку кофе и поговорить про разработку и быт разработчика ☕️
👍13🔥4🤮3🤡2🖕2
Lottie Editor
#android
Думаю, что вы слышали о библиотеке Lottie. Если нет — то в нескольких словах опишу её вам: эта библиотека позволяет встравлять готовые анимации из Adobe AE в Android или iOS проект. Чаще всего — это классные стилизованные изображения, которые намного сложнее делать при помощи средств разработки. А ещё есть масса крутых бесплатных изображений.
Возможно вы как и я пропустили, но появился Lottie Editor — инструмент, который позволяет редактировать уже готовые анимации.
Пока возможностей не много, по сравнению с Adobe AE, но для простых изменений — самое то. Можно поменять слои, цвета, текст, а ещё оптимизировать само изображение. Как по мне, отличная штука, особенно для небольших команд. 👍🏻
#android
Думаю, что вы слышали о библиотеке Lottie. Если нет — то в нескольких словах опишу её вам: эта библиотека позволяет встравлять готовые анимации из Adobe AE в Android или iOS проект. Чаще всего — это классные стилизованные изображения, которые намного сложнее делать при помощи средств разработки. А ещё есть масса крутых бесплатных изображений.
Возможно вы как и я пропустили, но появился Lottie Editor — инструмент, который позволяет редактировать уже готовые анимации.
Пока возможностей не много, по сравнению с Adobe AE, но для простых изменений — самое то. Можно поменять слои, цвета, текст, а ещё оптимизировать само изображение. Как по мне, отличная штука, особенно для небольших команд. 👍🏻
👍10🔥9
Паттерн Command
#android
Command — это паттерн проектирования, который может значительно упростить код. На самом деле, не так много разработчиков используют паттерны проектирования у себя в проектах, а зря ведь их использование может сделать код сильно лучше. Вот вам удачный пример использования.
Довольно часто при работе с экранами, вам необходимо передать действия пользователя обратно во ViewModel:
Всё усложняется, когда подобных команд становится больше, и вам требуется передавать не одну, а несколько функций:
Паттерн Command поможет упростить эту зависимость и сделать код более читаемым и в итоге он будет похож на первую реализацию вне зависимости от набора методов:
Подробнее можно почитать тут.
#android
Command — это паттерн проектирования, который может значительно упростить код. На самом деле, не так много разработчиков используют паттерны проектирования у себя в проектах, а зря ведь их использование может сделать код сильно лучше. Вот вам удачный пример использования.
Довольно часто при работе с экранами, вам необходимо передать действия пользователя обратно во ViewModel:
MyModelScreen(
items = item.data,
onSave = viewModel::addMyModel,
modifier = modifier
)
Всё усложняется, когда подобных команд становится больше, и вам требуется передавать не одну, а несколько функций:
MyModelScreen(
items = item.data,
onSave = viewModel::onSaveClicked,
onAdd = viewModel::onAddClicked,
onUpdate = viewModel::onTextUpdate,
onDelete = viewModel::onDeleteClicked,
onList = viewModel::onListClicked,
modifier = modifier
)
Паттерн Command поможет упростить эту зависимость и сделать код более читаемым и в итоге он будет похож на первую реализацию вне зависимости от набора методов:
MyModelCommandScreen(
items = items.data,
modifier = modifier,
commandProcessor = viewModel::processCommand
)
Подробнее можно почитать тут.
🔥11👍4👎3
Github RSA SSH host key
Если вы используете GitHub, то инфа для вас. Сегодня ночью GitHub изменил host key для своего сайта, и некоторые пользователи столкнулись с проблемой, связанной с работой GitHub.
Если у вас есть неполадки в работе, то надо перегенерировать ключи и обновить работу репозитория. Всё довольно легко делается, вот вам инструкция.
Если вы используете GitHub, то инфа для вас. Сегодня ночью GitHub изменил host key для своего сайта, и некоторые пользователи столкнулись с проблемой, связанной с работой GitHub.
Если у вас есть неполадки в работе, то надо перегенерировать ключи и обновить работу репозитория. Всё довольно легко делается, вот вам инструкция.
🔥6🤔3❤1
Compose Multiplatform Wizard
#kmm
О, тут появился Wizard для создания приложений, который сделает за вас часть рутины и добавит необходимые зависимости.
Поддерживается Android, iOS, Desktop и Web. После генерации запускаете
Люблю инструменты, которые упрощают жизнь, так что срочно сохраняйте в закладки.
#kmm
О, тут появился Wizard для создания приложений, который сделает за вас часть рутины и добавит необходимые зависимости.
Поддерживается Android, iOS, Desktop и Web. После генерации запускаете
./gradlew run
и готово. 🚀Люблю инструменты, которые упрощают жизнь, так что срочно сохраняйте в закладки.
❤6🔥3👍2
Fastlane с Google Play и Huawei App Gallery
#android
В разработке, помимо написания кода важно автоматизировать большинство рутинных действий. И один из инструментов, который поможет вам это сделать — Fastlane.
Если вы не знакомы с этим замечательным инструментом, то вот вам краткое intro. Эта консольная утилита позволяет при помощи скриптов автоматизировать загрузку релизов, создание скриншотов и т.д. Идея очень простая, но фишка в том, что уже есть достаточно много готовых плагинов, чтобы не писать код самостоятельно.
Но рассмотрим кейс с загрузкой релизов: для автомазации этой рутины существует плагит upload_to_play_store, который очень удобен и легко настраивается: ещё он автоматически заберёт metadata и release-notes для вновь созданных билдов, что суперудобно, если у вас много языков в приложении.
Для Huawei App Gallery не всё так гладко. Есть huawei_appgallery_connect, который довольно легко настраивается, но при этом нельзя загрузить release notes в автоматическом режиме по версии сборки, как у предыдущего плагина. Но и это лучше, чем ничего 🙃 нормальных альтернатив я пока не нашёл.
Помимо этого, можно настроить загрузку тестовых сборок в Firebase, а также Fastlane легко интегрируется в CI, что позволяет вам один раз писать скрипты и использовать их везде, где хочется. 👌
#android
В разработке, помимо написания кода важно автоматизировать большинство рутинных действий. И один из инструментов, который поможет вам это сделать — Fastlane.
Если вы не знакомы с этим замечательным инструментом, то вот вам краткое intro. Эта консольная утилита позволяет при помощи скриптов автоматизировать загрузку релизов, создание скриншотов и т.д. Идея очень простая, но фишка в том, что уже есть достаточно много готовых плагинов, чтобы не писать код самостоятельно.
Но рассмотрим кейс с загрузкой релизов: для автомазации этой рутины существует плагит upload_to_play_store, который очень удобен и легко настраивается: ещё он автоматически заберёт metadata и release-notes для вновь созданных билдов, что суперудобно, если у вас много языков в приложении.
Для Huawei App Gallery не всё так гладко. Есть huawei_appgallery_connect, который довольно легко настраивается, но при этом нельзя загрузить release notes в автоматическом режиме по версии сборки, как у предыдущего плагина. Но и это лучше, чем ничего 🙃 нормальных альтернатив я пока не нашёл.
Помимо этого, можно настроить загрузку тестовых сборок в Firebase, а также Fastlane легко интегрируется в CI, что позволяет вам один раз писать скрипты и использовать их везде, где хочется. 👌
❤6👍2
Inline, noinline в Kotlin
#android #новичкам
Полезная и краткая статья, где описывается разница между такими непонятными для новичков ключевыми словами как inline, noinline, crossinline, reified в Kotlin.
Круто, что автор даёт для каждого из ключевых слов небольшой пример кода, так что разобраться можно довольно быстро. Ну а если недостаточно — дока Kotlin весьма неплохая.
#android #новичкам
Полезная и краткая статья, где описывается разница между такими непонятными для новичков ключевыми словами как inline, noinline, crossinline, reified в Kotlin.
Круто, что автор даёт для каждого из ключевых слов небольшой пример кода, так что разобраться можно довольно быстро. Ну а если недостаточно — дока Kotlin весьма неплохая.
👍11🥰5❤1👎1🥴1
Auto-archive для aab
#android
Иногда пользователи удаляют приложение по причине нехватки места на устройстве. Под удаление может попасть любое приложение 😔 Однако, тут появилась фича, которая позволит пользователям не удалять, а "архивировать" приложения, чтобы можно было и сохранить место, и не удалять пользовательские данные.
🤫 Как это работает?
В момент, когда пользователь пытается удалить приложение, появляется окошко, которое предлагает архивировать приложение вместо полного удаления. Есть пара условий, чтобы всё заработало:
- вы должны выкладывать приложение через aab;
- приложение должно поддерживать архивирование;
К сожалению, не уверен, что фича будет работать в случае, если пользователь удаляет приложение из системы, но может быть эту фичу добавят в одной из будущих версий Android. Тут можно почитать больше деталей об архивации.
#android
Иногда пользователи удаляют приложение по причине нехватки места на устройстве. Под удаление может попасть любое приложение 😔 Однако, тут появилась фича, которая позволит пользователям не удалять, а "архивировать" приложения, чтобы можно было и сохранить место, и не удалять пользовательские данные.
🤫 Как это работает?
В момент, когда пользователь пытается удалить приложение, появляется окошко, которое предлагает архивировать приложение вместо полного удаления. Есть пара условий, чтобы всё заработало:
- вы должны выкладывать приложение через aab;
- приложение должно поддерживать архивирование;
К сожалению, не уверен, что фича будет работать в случае, если пользователь удаляет приложение из системы, но может быть эту фичу добавят в одной из будущих версий Android. Тут можно почитать больше деталей об архивации.
👍9
Jetpack Compose Lectures
#android
Вы могли пропустить, а ребята из Android Academy выпустили подробный курс про Jetpack Compose. Выглядит прям 🔥
Курс подойдёт для всех, кто только думает тащить Compose в проект (ну или хочет посмотреть, что за зверь такой), а также для тех, кто только начал изучать его.
Тут 8 видео с теоритей, и 8 видео с лайв-кодингом. Ссылка на весь курс тут.
Ребята делают полезное дело, так что не скупитесь на лайки. 🤫
#android
Вы могли пропустить, а ребята из Android Academy выпустили подробный курс про Jetpack Compose. Выглядит прям 🔥
Курс подойдёт для всех, кто только думает тащить Compose в проект (ну или хочет посмотреть, что за зверь такой), а также для тех, кто только начал изучать его.
Тут 8 видео с теоритей, и 8 видео с лайв-кодингом. Ссылка на весь курс тут.
Ребята делают полезное дело, так что не скупитесь на лайки. 🤫
❤36
Вход в приложение
#security #android
Почти в любом приложении, которое хоть как-то связано с хранением и работой с приватными данными, имеется аутентификация: или вход по паролю, или вход по биометрии + паролю.
И кажется, что задача супер простая: добавь сверху экран, который будет появляться при старте приложения, сохрани пароль на устройстве и сверяй с тем, что ввёл пользователь. Но на практике — большинство приложений в большей или меньшей степени реализуют вход некорректно: неправильно хранят пароль, не используют
Я поискал за вас и даю сразу несколько статей и уроков, которые с огромной вероятностью помогут вам корректно реализовать вход в приложение:
1️⃣ Тут автор рассказывает про пример некорректной авторизации в приложение и про свойства
2️⃣ Отличное видео, где по шагам описывается процесс создания биометрической авторизации в приложение: разницу между различными классами для авторизации, как затащить alpha-версию библиотеки для входа (удивился, что она до сих пор в alpha) и наконец-то сделать корректный вход по отпечатку.
3️⃣ Библиотека PINkman, которая позволяет добавить вход по пину в приложение: можете не тащить всю либу в проект, но внутри — много крутых идей по корректному хранению пароля в системе. А можете и затащить, если не хочется разбираться.
4️⃣ Статья, где автор описывает ещё одно хитрое свойство — setUserAuthenticationValidityDurationSeconds, которое также может быть использовано как уязвимость для входа.
5️⃣ Ну и напоследок — больше информации про составляющие качественной криптографии в Android:
Конечно, идеальной защиты не существует и от "паяльника" в руках злоумышленника врядли поможет какой-то из методов защиты. Но для всех остальных случаев ваша защита способна защитить приложение и приватные данные пользователя.
#security #android
Почти в любом приложении, которое хоть как-то связано с хранением и работой с приватными данными, имеется аутентификация: или вход по паролю, или вход по биометрии + паролю.
И кажется, что задача супер простая: добавь сверху экран, который будет появляться при старте приложения, сохрани пароль на устройстве и сверяй с тем, что ввёл пользователь. Но на практике — большинство приложений в большей или меньшей степени реализуют вход некорректно: неправильно хранят пароль, не используют
CryptoObject
, дают возможность обойти экран входа и т.д.Я поискал за вас и даю сразу несколько статей и уроков, которые с огромной вероятностью помогут вам корректно реализовать вход в приложение:
1️⃣ Тут автор рассказывает про пример некорректной авторизации в приложение и про свойства
CryptoObject
, setUserAuthenticationRequired
и о том, как эксплуатировать эти хаки. 2️⃣ Отличное видео, где по шагам описывается процесс создания биометрической авторизации в приложение: разницу между различными классами для авторизации, как затащить alpha-версию библиотеки для входа (удивился, что она до сих пор в alpha) и наконец-то сделать корректный вход по отпечатку.
3️⃣ Библиотека PINkman, которая позволяет добавить вход по пину в приложение: можете не тащить всю либу в проект, но внутри — много крутых идей по корректному хранению пароля в системе. А можете и затащить, если не хочется разбираться.
4️⃣ Статья, где автор описывает ещё одно хитрое свойство — setUserAuthenticationValidityDurationSeconds, которое также может быть использовано как уязвимость для входа.
5️⃣ Ну и напоследок — больше информации про составляющие качественной криптографии в Android:
KeyStore
, MasterKeys
, Blocking
, Padding
и другие страшные слова.Конечно, идеальной защиты не существует и от "паяльника" в руках злоумышленника врядли поможет какой-то из методов защиты. Но для всех остальных случаев ваша защита способна защитить приложение и приватные данные пользователя.
🔥17👍6❤4😁1