Pull to refresh
0
0
Send message

Держи свой трафик в тайне. SSL Pinning — ещё раз о том же самом

Reading time25 min
Views54K

Всем привет! Меня зовут Юрий Шабалин, я один из основателей компании Stingray Technologies. Мы разрабатываем платформу анализа защищенности мобильных приложений iOS и Android.

Сегодня я хотел бы снова затронуть тему безопасности сетевого взаимодействия между приложением и его серверной частью. На эту тему написано немало, но комплексной статьи, отвечающей на самые разные вопросы, начиная от того, что же такое SSL, до того, как работает атака MiTM и как от нее можно защититься, я еще не встречал (а может, просто плохо искал). В любом случае, мне бы хотелось поделиться своими мыслями на этот счет и внести свою малую долю в русскоязычный контент на эту тему.

Статья может быть полезна для разработчиков, которые хотят понять, как устроен процесс прикрепления (пиннинга) сертификатов и специалистам по анализу защищенности мобильных приложений.

Читать далее
Total votes 20: ↑20 and ↓0+20
Comments14

Основы Jetpack Compose: как обеспечить стабильность вашего кода

Level of difficultyMedium
Reading time13 min
Views7.8K

Привет, меня зовут Вера, я Android‑разработчик в Яндекс Диске. Мы в Диске сейчас активно работаем над переездом на Compose с использованием дизайн‑системы. Про стабильность в Compose есть немало статей, однако ошибки продолжают cовершаться, поэтому решила поделиться своим опытом в формате ликбез‑статьи.

По моему опыту, многие кто начинают писать на Compose, делают это интуитивно. Почему? Чтобы привыкнуть, понять, осознать подход к декларативному UI — нужно много времени, и поэтому к пониманию стабильности приходят, как правило, сильно позже. Однако это важно, ведь правильно организованная стабильность уменьшает количество рекомпозиций, что улучшает производительность и плавность работы приложения.

Читать далее
Total votes 26: ↑26 and ↓0+28
Comments7

Сколько зарабатывают разработчики в 2024 году в России и чего ожидать в будущем

Reading time8 min
Views29K

Рынок ИТ до сих пор нуждается в специалистах самых разных направлений. Спрос на айтишников растёт вместе с зарплатами. Так, информационное агентство Известия со ссылкой на данные Авито сообщает, что весной 2024 года спрос на сотрудников в ИТ-отрасли вырос почти в два раза по сравнению с весной 2023 года. Разбираемся, что сейчас происходит на рынке с зарплатами разработчиков.

Читать дальше →
Total votes 19: ↑14 and ↓5+11
Comments13

Автообновление через GitHub releases с помощью Hilt и Retrofit в Android

Level of difficultyMedium
Reading time8 min
Views2.7K

Как сделать автоматическое обновление непосредственно через приложение или как отказаться от маркетов приложений, части из которых нет на многих устройствах, а другие не подходят по определенному ряду причин!?

Читать далее
Total votes 13: ↑12 and ↓1+18
Comments7

Осознанная оптимизация Compose

Level of difficultyMedium
Reading time29 min
Views48K

Привет, меня зовут Андрей Богомолов, я Android-разработчик в команде Платформа приложения Ozon Seller.

Jetpack Compose — относительно молодая технология написания декларативного UI. Множество разработчиков даже не предполагают, что пишут неоптимальный код в такой критически важной части, и впоследствии это приводит к неожиданной низкой производительности и проседании метрик.

Наша команда Ozon Seller также столкнулась с этой проблемой. Мы решили собрать воедино все советы и наработки по написанию оптимизированного Compose-кода. Активное применение этих советов при оптимизации существующих экранов и написании новых существенно улучшило наши метрики: длительность лага по отношению к длительности скролла (hitch rate; чем меньше, тем лучше) экранов со списками упала в среднем с 15-19 % до 5-7 % (на 90-м перцентиле). Все эти советы и наработки мы описали в этой статье. Она будет полезна и начинающим, и опытным разработчикам, в ней подробно описаны оптимизации и механизмы Compose, а также рассказано про слабо задокументированных особенности и исправления ошибок, которые есть в других статьях. Давайте же начнём.

Читать далее
Total votes 37: ↑37 and ↓0+37
Comments15

Что нового в безопасности пользователей на Android: доклад с Google I/O 2024

Reading time12 min
Views3.8K

Привет, меня зовут Аня, и я Android-разработчица в KTS. В этой статье разберем, какие обновления для обеспечения безопасности пользователей были представлены в докладе Safeguarding user security on Android на Google I/O, и как они отразятся на разработке.

Немного вводных по 2023 году:

– к публикации не допущено более 2 миллионов приложений, нарушающих правила;

– забанено примерно 330 тысяч плохих аккаунтов;

– каждый день сканировалось около 200 миллиардов приложений в поисках вредоносного ПО;

–  более 10 миллионов долларов выплачено в качестве награды за обнаружение ошибок в безопасности.

И это еще не все. Благодаря Google Play Protect обнаружено более 500 тысяч вредоносных приложений и вынесено более 3 миллионов предупреждений.

Google Play Protect может предложить просканировать приложения во время установки, если они не были проверены до этого. Это помогает Google намного быстрее отслеживать угрозы безопасности. 

Читать далее
Total votes 40: ↑40 and ↓0+41
Comments0

Android: Проблема отрисовки в jetpack compose

Level of difficultyMedium
Reading time3 min
Views3.5K

Привет всем! Хочу поделится одной интересной проблемой (и ее решением), с которой пришлось столкнуться при использовании jetpack compose.

Я пишу с нуля программу аренды велосипедов. Соответственно могу использовать современные frameworks и стараться сделать все по феншую :)

Для UI я выбрал jetpack compose и использую MVI для взаимодействия между UI и ViewModel.

Во ViewModel, отвечающую за взаимодействие с Yandex Map, приходят разные события: если клиент двигает карту, с сервера запрашивается информация о находящихся в этом месте велосипедах, 2-х видах парковок и медленных зонах. Кроме того периодически с сервера запрашивается информация об активной аренде клиентом велосипеда. Все эти данные асинхронно передаются на UI.

Читать далее
Total votes 5: ↑3 and ↓2+1
Comments20

От потоков к корутинам: как и почему видоизменились примитивы синхронизации в языке Kotlin (Часть 1)

Level of difficultyMedium
Reading time18 min
Views13K

В этой статье мы рассмотрим, как и почему изменилась реализация примитивов синхронизации из стандартной библиотеки Java и пакета java.util.concurrent для Kotlin Coroutines и для языка Kotlin в целом.

Разберемся, какие реализации примитивов синхронизации потоков актуальны в контексте корутин, а какие надо использовать с осторожностью.

Оценим готовность текущих решений к использованию в Kotlin Multiplatform.

Разработаем аналоги нескольких полезных классов пакета java.util.concurrent, до которых еще не добрались разработчики корутин.

В рамках статьи будут разобраны следующие примитивы синхронизации: критические секции, атомарные переменные, реактивные переменные и барьерная синхронизация.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments9

Превращаем Android-смартфон в USB-клавиатуру, мышь и флешку

Level of difficultyHard
Reading time29 min
Views26K

Android-смартфон при подключении к компьютеру через USB может выглядеть как медиаустройство, модем или хранилище файлов. В этой статье мы научимся делать из него USB-клавиатуру, мышь и флешку.
Читать дальше →
Total votes 59: ↑59 and ↓0+82
Comments48

ViewModel + Kotlin Multiplatform. Пробуем нативное решение

Level of difficultyMedium
Reading time9 min
Views8.9K


Всем привет! На связи Анна Жаркова, руководитель группы мобильной разработки в компании Usetech. Компания Google объявили о своем интересе к Koltin Multiplatform на прошлом Google I/O 2023. Следом был обозначен вектор развития имеющихся решений архитектурных библиотек Jetpack для поддержки KMP. Буквально считанные часы назад компания Google опубликовали ожидаемую многими новинку, а именно ViewModels из библиотеки Lifecycle с поддержкой API Kotlin Multiplatform. И сейчас мы с вами проверим, насколько это удобно, что уже готово, а что нужно доработать.

Для начала освежим, с чем же мы работали до ViewModels из Lifecycle.

Сами по себе ViewModel как часть паттерна MVVM применительно к кросс-платформенным решениям идея не новая. Многие давно использовали собственную реализацию, совмещая также с платформенными архитектурами.
Читать дальше →
Total votes 21: ↑21 and ↓0+21
Comments5

Чем так хороши Lottie-анимации и почему вам стоит о них узнать

Level of difficultyMedium
Reading time4 min
Views20K

Всем привет. Сегодня наш дизайнер Артем Сафаров расскажет, как дизайнеры используют Lottie-анимации на своих проектах и научит этому вас ;)

Технология в разы круче GIF, AVI, mp4 и анимированных HTML-элементов, поэтому грех вас с ней не познакомить.

Читать далее
Total votes 3: ↑3 and ↓0+3
Comments14

Как запихнуть свой сенсор в Android OS

Reading time38 min
Views22K

Как-то раз программисты сидели и писали очередной температурный сенсор и программы с кнопочками. И вдруг оказалось, что этот сенсор хочет себе один небольшой производитель телефонов в будущей модели. Так образовалась задача поддержать I2C/GPIO сенсор на уровне Android OS, так как сенсор обещает быть неотъемлимой частью самого телефона.

Будучи глубоким субподрядом, надежды на быстрый и регулярный отклик от конечного заказчика не было, решили потренироваться на кошках и засунуть нашу железяку в какое-нибудь доступное устройство с Android.
Как оно было
Total votes 29: ↑28 and ↓1+27
Comments10

Hello, World! Глубокое погружение в Терминалы

Reading time24 min
Views93K


На написание данной статьи меня вдохновила статья об анализе Сишного printf. Однако, там был пропущен момент о том, какой путь проходят данные после того, как они попадают в терминальное устройство. В данной статье я хочу исправить этот недочет и проанализировать путь данных в терминале. Также мы разберемся, чем отличается Terminal от Shell, что такое Pseudoterminal, как работают эмуляторы терминалов и многое другое.

Читать дальше →
Total votes 110: ↑110 and ↓0+110
Comments44

Permissions в Android: как не допустить ошибок при разработке

Level of difficultyMedium
Reading time13 min
Views14K

Всем привет! На связи Юрий Шабалин, ведущий архитектор Swordfish Security и генеральный директор Стингрей Технолоджиз. Эта статья написана в соавторстве с Android-разработчиком Веселиной Зацепиной @VeselinaZatsepinaa). В материале мы поговорим про один из ключевых механизмов в Android, а именно про разрешения. Разберем, что это такое, как с ними работать, а главное, какие ошибки могут возникнуть и как их не допустить. Будет интересно, поехали!

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments3

Работа с COM портом в Android приложениях

Reading time2 min
Views75K
Все доброго времени суток!

Однажды я задумался над разработкой приложения, которое требовало бы общения с hardware устройством, через COM порт. Хотя Android заботливо предоставляет api для работы с usb устройствами, оно мне к сожалению не подходило, так как хотелось осуществлять поддержку моего старого планшета на базе андроид версии 2.2. Стандартное api ото Гугла, не подходило
Читать дальше →
Total votes 18: ↑17 and ↓1+16
Comments19

Осознанная оптимизация Compose 2: В борьбе с композицией

Level of difficultyMedium
Reading time15 min
Views11K

Jetpack Compose постоянно развивается, открывая перед разработчиками новые горизонты для оптимизации. С момента нашего последнего обзора, мы добились значительного прогресса, сократив задержки при скролле с 5-7% до нуля. В этом материале мы поделимся свежими находками и передовыми практиками в оптимизации Compose. Чтобы максимально углубиться в тему, рекомендуем ознакомиться с первой частью.

Читать далее
Total votes 12: ↑12 and ↓0+12
Comments14

Списки с душой и стилем: Ваш путь к Jetpack Compose

Level of difficultyEasy
Reading time10 min
Views8.9K

С каждым днём всё больше и больше разработчиков присоединяются к использованию Jetpack Compose. Этот рост связан с тем, что фреймворк предлагает ускоренную и упрощённую разработку пользовательского интерфейса (UI).

Если ранее вы разрабатывали приложения с использованием Android View, то переход на Jetpack Compose будет естественным шагом. В этой статье мы сфокусируемся на работе со списками в Jetpack Compose, так как списки являются неотъемлемой частью большинства приложений.

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments5

Оптимизация анимации на Compose: крутим лоадеры, ищем неочевидные функции

Level of difficultyMedium
Reading time10 min
Views5.5K

Android-разработчик red_mad_robot Серёжа Чумиков рассказывает о том, как сделать классную анимацию, не перегрузив смартфон, почему ей не нужна рекомпозиция и как её избежать.

Читать далее
Total votes 1: ↑1 and ↓0+1
Comments1

Работа с асинхронными операциями с помощью Kotlin Coroutines

Level of difficultyMedium
Reading time20 min
Views30K

Всем привет! Меня зовут Сергей, я Android-разработчик Студии Олега Чулакова на проектах Сбера. Недавно я написал статью Многопоточность в мобильной разработке. В ней был затронут один из наиболее популярных инструментов для работы с асинхронными операциями — Kotlin Coroutines. 

Сегодня я хочу углубиться в Kotlin Coroutines и разобрать их основные компоненты. Мы рассмотрим Kotlin Coroutines, предполагая, что у вас уже есть базовое понимание языка Kotlin и некоторый опыт разработки Android-приложений. Мы изучим основные концепции Kotlin Coroutines, способы работы с асинхронными операциями, управление потоком выполнения, обработку ошибок и исключений, а также многое другое.

Моя цель — помочь вам овладеть Kotlin Coroutines и научиться использовать их для упрощения и оптимизации вашего кода, обеспечения более гладкого пользовательского опыта и более эффективного управления асинхронными операциями. Приятного прочтения, мы начинаем!

Читать далее
Total votes 8: ↑8 and ↓0+8
Comments10

Information

Rating
Does not participate
Registered
Activity