Как стать автором
Обновить
11
0
Артём @kolipass

Мобильный разработчик

Отправить сообщение

Удалённая сборка Android проектов на сервере прямо из Android Studio

Время на прочтение 42 мин
Количество просмотров 5.9K

Если вам случалось работать над очень крупным Android проектом, с большим количеством модулей, кода, или наоборот не самой удачной декомпозицией на модули и наличием легаси, то вы наверняка знаете что сборка подобного проекта может занимать довольно много времени. К тому же, этапы сборки множатся и усложняются, да и средние размеры проектов серьёзных мобильных приложений продолжают увеличиваться. По моим субъективным ощущениям, с каждым годом среднее время сборки проекта растёт и не похоже что эта тенденция будет меняться.

Бывает довольно обидно, когда в работу поступает задача, решение которой очевидно, фикс проблемы делается за пару минут, но чтобы проверить что всё исправлено нужно переключать ветки, пересобирать проект, потом переключаться обратно и пересобирать исходную ветку. Это может занимать очень много времени. Или бывает так, что находясь “в потоке” нужно что-то быстро проверить, но увидеть вступили ли изменения в силу можно только пересобрав и перезапустив проект, а если что-то пойдёт не по плану, или по каким-то причинам кэш сборки не отработает и проект будет собираться почти "на холодную"? Подобные, казалось бы, мелочи могут занимать огромное количество времени в течение дня, отвлекают, мешают сосредоточиться и продуктивно использовать рабочее время. Особенно много времени тратится если рабочий компьютер далеко не самый производительный, или если вы пользуетесь ноутбуком, не ориентированным на выполнение тяжёлых сборок. 

В этой статье я хочу показать вам как можно собирать огромные Android проекты на далеко не самых производительных компьютерах или ноутбуках, утилизируя для этого вычислительные мощности удалённого сервера или отдельного домашнего настольного компьютера, не потеряв при этом ни капли удобства инструментов Android Studio - графического интерфейса, отладчика, и т.д.

Интересующихся приглашаю под кат.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 6

Для тех, кто посматривает на относительные оценки, но не решается их внедрить

Время на прочтение 5 мин
Количество просмотров 1.8K

Привет! Меня зовут Елена, я недавно перешла работать в SM Lab руководителем продукта Портал поставщика. Портал – это рабочее место поставщиков товарной продукции в Спортмастер и Остин. Решение представляет собой трехслойную систему со множеством интеграций и витиеватым функционалом. Локализация интерфейсов, инструкций и обучающих курсов на трех языках, в миссии – простота и удобство пользования.

В SM Lab продуктовый подход, поэтому я зашла в готовую команду. Её особенность в том, что она достаточно большая – 17 человек. В этой статье я хочу рассказать о том, как мы внедрили относительные оценки работ и что получили в результате.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Комментарии 19

Неочевидное про Fragment API. Часть 4. Анимации и меню

Время на прочтение 6 мин
Количество просмотров 5.6K

Всем привет! С вами снова Максим Бредихин, Android-разработчик в Тинькофф. Мы добрались до заключительной части серии про интересные моменты из Fragment API. Занимайте лучшие места, мы начинаем!

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 0

Что там по автотестам на Android в 2022?

Время на прочтение 7 мин
Количество просмотров 7.2K

Всем привет!

Меня зовут Женя, и я люблю автотесты. Причем люблю так сильно, что даже стал соавтором Kaspresso, OpenSource библиотеки для написания автотестов под Android, и автором ряда докладов и статей про тесты (Kaspresso: фреймворк для автотестирования, который вы ждали, Автотесты на Android. Картина целиком, Kaspresso tutorials. Часть 1. Запуск первого теста, Дмитрий Мовчан, Евгений Мацюк — Как начать писать автотесты и не сойти с ума). Также со мной полюбил автотесты и мой товарищ, Сергей Ярцев, который является CTO в HintEd, и также вынужден трогать автотесты, причем под разные платформы.

В одной из своих статей (Автотесты на Android. Картина целиком) я описывал, что вообще в себя включают Автотесты под Android. Если кратко, то я выделял 4 большие области: Процесс написания автотестов, Runner, Инфраструктура и Остальное, которое включало в себя отчеты, интеграцию с CI/CD и тд. В свое время (2019-2020) когда мы делали Kaspresso, мы закрывали боль с написанием автотестов. Теперь разработчики и тестировщики могут писать красивый и понятный DSL и не думать про проблемы с флаканием, логами, скоростью и тд. По другим же областям были некоторые решения, но команды, выстраивающие весь процесс, должны были сами со всем этим разбираться и все это стыковать. Особенно больно было с Инфраструктурой, где приходится нырять в дивный мир DevOps и частично даже Highload.

Недавно мне стало интересно, а как сейчас обстоят дела у разных команд с автотестами. Для этого мы с Сергеем провели ряд интервью с более, чем 30 разными командами. Да, это далеко не вся выборка, и данное исследование точно не претендует на абсолютную истину. Но 30 больше, чем 1 или 2 или 5, и поэтому исследование точно может наводить на кое-какие мысли.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 3

Размер имеет значение! Часть 2

Время на прочтение 5 мин
Количество просмотров 3.3K

Как бы мы себя не обманывали - Размер имеет значение! И конечно, мы будем говорить о размере нашего андроид приложения, куда мы добавляем кучу классных features, и даже не задумываемся как это может негативно повлиять на размер приложения. Поэтому мы научимся обнаруживать регрессию размера нашего приложения на CI для автоматизации этого процесса.

В данной части, обсудим как можно проверять размер в pull request, что позволит автоматизировать весь процесс обнаружения регрессии, до того как изменения попали в development.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 0

Почему исключения в Kotlin Coroutines это сложно и как с этим жить?

Время на прочтение 10 мин
Количество просмотров 15K

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

Читать далее
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 6

Что мы используем для анализа Android-приложений

Время на прочтение 8 мин
Количество просмотров 9.9K

В этой статье расскажем про инструментарий для анализа мобильных приложений, который мы используем каждый день. Для начала поговорим про то, как запускать мобильные приложения, чем смотреть трафик, и рассмотрим инструменты для статического и динамического анализа мобильного приложения.

Читать далее
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 4

Готовим Android к пентесту — WSA edition

Время на прочтение 7 мин
Количество просмотров 9.7K

Мы в Digital Security часто проводим анализ Android-приложений, поэтому пришло время поделиться некоторыми накопленными знаниями и сделать обзор по тому окружению, который мы используем каждый день.

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

У нас есть некоторое количество рутованных девайсов с одним и тем же окружением, однако иногда приходится использовать виртуальные устройства, в основном это Android Studio AVD.

Не так давно компания Microsoft зарелизила Windows Subsystem for Android (TM). Меня заинтересовал данный инструмент на столько, что я бросил своё рабочее окружение на Fedora Linux и поставил Windows 11.

Можно было бы писать эту статью в контексте реального устройства или виртуального девайста Android Studio, но мне кажется интереснее будет разобрать Windows Subsystem For Android 😄

У данного варианта есть свои ограничения, о которых будет сказано в дальнейшем.

Читать далее
Всего голосов 17: ↑17 и ↓0 +17
Комментарии 3

Ликбез по диплинкам. Часть 1: Что такое диплинк?

Время на прочтение 8 мин
Количество просмотров 30K

Я рад приветствовать вас в первой части серии интенсива по диплинкам (deep links или глубинным ссылкам). Для начала, чтобы сформировать некоторый контекст, мы поговорим о том, что такое ссылка, затем мы рассмотрим все типы диплинков, и, в конце, мы обсудим некоторые моменты, связанные с безопасностью. Ну что ж, давайте приступим!

Читать далее
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 0

Как настроить CI в мобильных приложениях

Время на прочтение 5 мин
Количество просмотров 3.3K

Приветствую! Меня зовут Алексей Денискин, я тимлид мобильной команды СберМаркета. В этой статье я на примере покажу, как организовать CI для мобильных приложений на Android и iOS. Я буду использовать GitLab CI, но описанный подход применим к большинству стандартных стеков.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 0

Umbrella-sharing: как система проката зонтиков сделала нас фанатами Android разработки

Время на прочтение 7 мин
Количество просмотров 5K

Всем привет! Нас зовут Антон и Дима, мы ученики 11 и 9 классов. В 2022 году мы окончили «IT Школу Samsung». Нам предложили рассказать про опыт разработки нашего первого большого проекта — системы проката зонтиков. С этим проектом мы одержали победу в нескольких конкурсах, а сейчас мечтаем, чтобы система стала полноценным стартапом и у нее появилось много пользователей, которым она будет полезна.

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Комментарии 3

Deep Dive Into Deep Link. Часть 1. Введение и исходная задача

Время на прочтение 11 мин
Количество просмотров 19K

Давно хотели разобраться, как работают Deep Link-и? Мы стартуем новый цикл статей, который посвящен работе Deep Link в Android. В первой части мы зафиксируем основные понятия: ​​Deep Link, Web Link, App Link. Разберем особенности каждого вида Deep Link-ов и разницу между ними.

Читать лонгрид
Всего голосов 4: ↑4 и ↓0 +4
Комментарии 2

Как работа с ресурсами вызывает микрофризы

Время на прочтение 10 мин
Количество просмотров 5.4K

Думаю, каждый из нас периодически сталкивается с непонятными микрофризами при взаимодействии с, казалось бы, простым UI…

Просто скролишь список, и тут — бац! Лагнуло! Сегодня я бы хотел разобрать одну из множества причин такого поведения — работу с ресурсами. Мы разберёмся, в каких случаях работа с ресурсами может стать проблемой. Почему это происходит и как лучше всего от этого избавится.

Читать далее
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 9

Патчим байт-код для просмотра логов в Android. Подробная инструкция и примеры кода

Время на прочтение 8 мин
Количество просмотров 3K

Привет, Хабр! Меня зовут Саша Лепехин, я разрабатываю мобильное приложение СберИнвестор под Android. Во время разработки и тестирования мобильного приложения мне часто нужно  просматривать логи внутри приложения, причем без подключения по adb.

В принципе, есть множество приложений, которые позволяют просматривать содержимое logcat на устройств. Но с ними часто возникают самые разные проблемы:  такие приложения нуждаются в специальных разрешениях или наличии root доступа, запускают отдельные процессы или сервисы. Или же они могут просто не работать на некоторых устройствах (например, там, где выключен logd). В этой небольшой статье предложено решение большинства подобных проблем. Оно основано на трансформации байт-кода приложения. Поехали!

Читать далее
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 3

Многомодульный BDSM: как связать Gradle модули и как с ними общаться после этого?

Уровень сложности Сложный
Время на прочтение 15 мин
Количество просмотров 5.6K

В многомодульном приложении часто возникает ситуация, когда в одном модуле находится интерфейс, а вот его реализация находится в совершенно другом модуле. Как следствие, возникает потребность как-то получить реализацию при наличии лишь интерфейса. Всё так или иначе сводится к тому, чтобы обратится к какой-либо сущности, которая отдаст нам реализацию. Но ведь сначала этой сущности надо сообщить, где взять реализацию. Этот процесс я называю связыванием, так как мы связываем интерфейс с его реализацией. Видел, что многие называют это склейкой. Сегодня мне бы хотелось проговорить, какие есть для этого способы. И да, спойлер, их несколько.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 10

Рефакторинг приложения с десятилетним легаси за три месяца. Опыт Яндекс Музыки

Время на прочтение 15 мин
Количество просмотров 33K


Однажды ты просыпаешься и понимаешь: избыточность компонентов и рассинхронизация в твоём приложении начинают вредить пользователям. Однажды ты смотришь на написанное давным-давно ядро, плачешь горькими слезами, и приходит это некомфортное, но вместе с тем немного соблазнительное ощущение — что рефакторинг назрел. Добро пожаловать на экскурсию по рефакторингу Музыки, начиная с ресёрча и заканчивая эксплуатацией! Я покажу вам реальный код и постараюсь в деталях вспомнить, как мы формировали требования к механизмам и разрабатывали их, рисовали у себя в голове и в коде границы ядра, по одной переделывали очереди и внедряли то, что получилось, в SDK.
Читать дальше →
Всего голосов 57: ↑54 и ↓3 +51
Комментарии 113

Аналитика в декларативном стиле с поддержкой многомодульности

Время на прочтение 14 мин
Количество просмотров 2.9K

С приходом Compose в голове всё чаще всплывают мысли, что же ещё можно написать в декларативном стиле. И как мне кажется, на эту роль хорошо подходит аналитика, точнее, описание её событий. В среде разработчиков тема аналитики нечасто всплывает в обсуждениях. Отправка аналитики не является целью фичи, а лишь обязательной дополнительной частью. Сама отправка — задача довольно тривиальная и поэтому воспринимается обычно как «обязаловка», а не как интересный процесс, в котором можно блеснуть своими знаниями архитектуры. Тем не менее, если сложить время всех задач по отправке аналитики, то получится довольно приличное количество часов. Поэтому хочется, чтобы работа с этой частью была максимально комфортной. В этом и поможет декларативный подход.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 4

Улучшаем производительность android-приложения с помощью Baseline profiles

Время на прочтение 7 мин
Количество просмотров 7.7K


Производительность важна для формирования положительного пользовательского опыта использования приложения, поэтому разработчики стремятся ускорить работу своих программ. Для приложений в области безопасности важно время инициализации: пара секунд может стать роковой для пользователя. Поэтому в «Лаборатории Касперского» мы пристально следим за производительностью наших приложений, анализируем влияние новых доработок на ключевые метрики и регулярно улучшаем их.

В большинстве случаев работа над производительностью сводится к оптимизации исходного кода: сперва находят узкие места при помощи метрик, утилит и инструментов, затем разработчик обращается к коду для поиска и устранения проблем. Иногда Google предоставляет дополнительные возможности для оптимизации. Baseline profile стал одной из таких возможностей и был анонсирован совсем недавно. Безусловно, такие доработки очень приятны для разработчиков и полезны для приложений, поэтому мы с огромным интересом знакомимся с новой возможностью и начинаем применять ее к нашему проекту.

В этой статье я хочу поделиться нашим опытом и результатами. Сперва мы коротко вспомним виды компиляции в Android, поймем принцип, на котором основывается данная оптимизация. Затем ознакомимся с пошаговой инструкцией по интеграции в свой проект и посмотрим на полученные результаты. В конце я расскажу о наших дальнейших шагах и планах.
Читать дальше →
Всего голосов 21: ↑18 и ↓3 +15
Комментарии 1

Полдюжины правил для статического анализатора Detekt

Время на прочтение 4 мин
Количество просмотров 2.8K

Техлид Android-команды KODE Дмитрий Суздалев выпустил полноценный опенсорс-проект: набор улучшений для статического анализатора Kotlin-кода Detekt, которые обучают его проверять соблюдение различных правил при использовании библиотеки Jetpack Compose.

Набор правил попал в еженедельный Compose Newsletter, так что теперь самое время поделиться им с сообществом Хабра.

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

Многомодульный BDSM: стоит ли внедрять Gradle модули и какие типы модулей бывают?

Уровень сложности Средний
Время на прочтение 17 мин
Количество просмотров 9K

С каждым годом многомодульность в Android становится всё популярнее и популярнее. Выходит всё больше и больше статей, рассказывающих о ней. Но есть ощущение, что везде описывается просто подход, применяемый в рамках конкретного проекта. При этом можно заметить, что каждая компания применяет многомодульность по-своему.

Многомодульность — это лишь подход. Кому-то он может помочь, а кому-то и навредить. Во многих статьях лишь кратко касаются типов и структуры модулей. В этой статье я бы хотел это исправить, расписав, какие типы модулей вижу лично я. Потому что читая другие статьи мне постоянно не хватало каких-то типов модулей под конкретные ситуации.

Надеюсь, к концу статьи вы станете на чуточку ближе к ответам на вопросы: «Каким образом вообще можно внедрить многомодульность в свой проект?», «Какие типы модулей есть?» и «Нужна ли многомодульность в моём проекте?»

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 3

Информация

В рейтинге
Не участвует
Откуда
Россия
Работает в
Дата рождения
Зарегистрирован
Активность