Как стать автором
Обновить
288.91

Разработка под Android *

Пишем под самую популярную мобильную ОС

Сначала показывать
Порог рейтинга
Уровень сложности

Kotlin Native. Работаем с потоками с корутинами и без. Ч1

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

Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. Совсем недавно компания JetBrains выпустила preview новой модели управления памятью. Это отличный повод сделать подробный ее разбор на практике, а также сравнить с моделью, используемой в KMM в текущих версиях. Но для начала неплохо было бы поговорить о тех возможностях работы в Kotlin Native, которые мы на практике не используем.

Если вы уже знакомы с тем, как работать с корутинами в Kotlin/Native и/или читали предыдущие статьи 1 и 2 автора, то пролистайте немного вниз. Материал может немного повторяться.

Когда мы работаем с Kotlin и Kotlin Multiplatform, то самым и простым удобным способом для настройки работы с многопоточностью в приложении являются Kotlin Coroutines. Наша задача сводится к настройке скоупов CoroutineScope для запуска корутин и suspend функций в основном потоке и фоновом. Т.к. в разных платформенных версиях языка Kotlin этот механизм реализуется по-разному, то необходимо кастомизировать получение контекста корутин с помощью expect/actual:

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

Android, жизненый цикл Jetpack компонентов

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

Руководство по работе с жизненным циклом Android компонентов, рассмотрим базовые понятия, что такое LifecycleObserver, события и состояния жизненного цикла, кастомные LifecycleOwner.

Перевод статьи Lifecycle-Aware Components Using Android Jetpack.

Читать далее
Рейтинг0
Комментарии0

Последняя статья об упрощении recycler view

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

За всё время существования Recycler View регулярно выходят статьи, рассказывающие о новых путях упрощения работы с этим элементом. Они появляются так часто, что порой удивляешься тому, откуда у людей столько фантазии, чтоб придумывать всё новые и новые способы работы со списками. А потом открываешь статью и удивляешься второй раз, ведь способ-то вовсе и не новый, а что-то подобное уже было в нескольких предыдущих статьях. Так к чему это я?

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

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

Оптимизируем отображение 10 000 объектов на карте

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

В приложении ЦИАН размещены десятки тысяч объявлений о недвижимости. Нашим пользователям важно видеть географическое расположение этих объявлений на карте. Самым популярным способом отображения оказался вариант, когда каждое объявление показано отдельной точкой. Внутри команды такой вариант мы назвали «Горошек на карте».

Проблема в том, что объявлений очень много: в одной только Москве более 10 000. Из-за этого наша карта работала не очень стабильно: при зуме и движении были тормоза, дёргалась и лагала картинка. С этим нужно было что-то делать. Чтобы разобраться в причинах проблем и найти решения, мы засучили рукава и начали копаться в используемых механизмах. Под катом подробно опишем весь путь оптимизации карт в Android-приложении: от постановки задачи до результата.

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

Истории

Интеграция Huawei Mobile Services со второй попытки

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

Android-разработчики и продакты всей галактики ломают голову над одним важным вопросом — “Нужно ли делать интеграцию HMS?”. В это статьей мы расскажем, как у нас получилось затащить поддержку Huawei Mobile Services в регулярных релизах, пусть и со второй попытки. 

Здесь вы найдете актуальные цифры, архитектурно-инфраструктурные решения и подробное описание наши ошибок. У статьи есть видеоверсия, и ее можно посмотреть и послушать, если читать совсем не хочется.

Прочитать, почему на картинке XXX
Всего голосов 18: ↑16 и ↓2+14
Комментарии2

Пагинация и DiffUtils в RecyclerView c BRVAH

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

Это продолжение цикла статей про упрощение разработки адаптеров для RecyclerView.

Часть 1

В этой части рассмотрю следующие реализации потребностей отображения списков:

·       Загрузка изображения из сети, с использованием Glide

·       Пагинация (подгрузка списка)

·       Удаление элемента

·       Удаление и использование встроенного diffUtils

Читать далее
Рейтинг0
Комментарии2

Android in-app purchases, часть 5: серверная валидация покупок

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

Всем привет, я Кирилл, СТО Adapty. Я делал систему серверной валидации для наших SDK. Серверная валидация позволяет проверить подлинность покупки: устройство обращается к серверам Google за информацией, действительно ли была совершена покупка, и валидна ли она.

Сегодня расскажу про то, как её настроить для приложений на Android. 

Это пятая статья из серии, посвящённой подключению покупок в приложениях на Android. Остальные доступны по ссылкам:

1. Android in-app purchases, часть 1: конфигурация и добавление в проект.

2. Android in-app purchases, часть 2: инициализация и обработка покупок.

3. Android in-app purchases, часть 3: получение активных покупок и смена подписки.

4. Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием.

5. Android in-app purchases, часть 5: серверная валидация покупок. — Вы тут

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

Как добавить независимый Dagger Сomponent в иерархию SubComponnet-ов Hilt используя подход «component dependencies»?

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

Hilt базируется на подходе Subcomponents и описание этих компонентов скрыто от нас, поэтому мы не можем добавить зависимость на внешний компонент используя подход Component Dependencies. Как это обойти описано в статье.

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

История создания своей первой игры на Unity

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

Прежде всего, хочу сразу отметить, что я не являюсь профессиональным разработчиком. Я обычный бакалаврик технического ВУЗа, так что незнание мною некоторых терминов прошу простить, не дорос ещё. Просто однажды летним вечером делать было нечего, как говорится, и я решил попробовать свои силы в создании игОр на всем известном движке Unity.

Начал я свою "разработку" с непосредственной установки Unity и тамошних туториалов aka курсов от самой Unity. Почерпнув оттуда основы основ в виде понимания, что такое объекты и компоненты в Unity, как-куда и на что вешать скрипты и тому подобное, я приступил к созданию своей первой игры. Попытки создания, по крайней мере.

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

Как Android пришел к AAB? Что будет с APK? Разбор

Время на прочтение8 мин
Количество просмотров28K
Не так давно прогремела новость о том, что Android отказывается от APK-файлов и переходит на AAB. Вы наверняка уже эту новость прочитали, во всём разобрались и успокоились, так как новость проходная. Тем не менее, мы считаем, что переход к новой системе публикации приложений App Bundle — это часть большого пути, которую проделала система Android, чтобы стать по-настоящему быстрой, эффективной и супероптимизированной платформой. Поэтому мы подготовили большой и очень интересный материал. И сегодня мы раскроем вам массу страшных тайн Android.


  • Сегодня мы поговорим о том почему Android сначала тормозил, а потом перестал.
  • Помянем Dalvik кэш и припомним ART.
  • Узнаем во сколько внутри Android просыпается демон.
  • А также слегка затронем тему, почему Android никогда не обгонит iOS по производительность, но при этом всегда будет менее требовательным к железу.
Читать дальше →
Всего голосов 44: ↑41 и ↓3+38
Комментарии50

10 советов «Как успешно пройти Code Review»

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

Если вам надо отдать ваш код на ревью, например показать выполнение тестового задания, получить одобрение у коллеги на pull request или попасть на разбор кода в "Android Broadcast", тогда 10 советов из этой статьи помогут вам представить ваш код в максимальной красоте. Это не сделает из вас эксперта, но как минимум улучшит ваши навыки, и позволит достичь получить заветное "Одобрено"

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

Дайджест интересных материалов для мобильного разработчика #409 (30 августа — 5 сентября)

Время на прочтение3 мин
Количество просмотров2.5K
В новом дайджесте подготовка к собеседованию и целая энциклопедия интеропа, новые правила Apple и геолокация без GPS, Bluetooth в качестве сервиса, пероеход в продакт-менеджеры, красота кривых и многое, многое другое!

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

Упрощаю разработку адаптеров для RecyclerView c BRVAH. Часть 1

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

Я действующий разработчик приложений под платформу Android. Хочу поделиться крутой библиотекой, облегчающей разработку адаптеров для RecyclerView, и описать ее использование. RecyclerView – это View элемент в Android для отображения списков, и редкое современное приложение обходится без него. Стоковая реализация адаптеров и вьюхолдеров очень громоздкая и пугающая, особенно для новичков. Благо существует библиотека BaseRecyclerViewAdapterHelper облегчающая разработку этих компонентов. В 100% проектов, которые я разрабатывал – я подключал её, и все коллеги достойно оценивали это деяние.

Цель BaseRecyclerViewAdapterHelper – упростить работу с отображением списков в Android. Чтобы понять, как можно облегчить работу с RecyclerView, рассмотрим базовые потребности отображения списков и базовые потребности элементов списка

Читать далее
Рейтинг0
Комментарии5

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Автоматизация разработки для Android с помощью GitHub Actions

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

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

Если вы когда-нибудь разрабатывали приложение для Android, то знаете, насколько утомительными могут быть некоторые задачи:

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

Развенчиваем мифы про Chrome OS

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

Многие считают, что всё знают о системе Chrome OS, ни разу не пользовавшись ей: «Ну я ж знаю Хром, а тут в ОС только браузер и есть, всё понятно». Но на самом деле даже в словах «только браузер» уже содержится ошибка.

В 2019-м я купил Google Pixelbook (не как основное устройство, а как мобильное дополнение к десктопу). Тогда же проехал с ним по всей России, как следует попользовавшись, и с тех пор на многие стереотипы о Chrome OS смотрю как на устаревшие мифы. И когда позавчера появилась новость «Google создаёт собственный Arm-процессор для хромбуков», в её интернет-обсуждениях снова увидел тот же набор стереотипов. Поэтому решил, что раз уж знаю больше, надо поделиться этим с Хабром.

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

Дикая природа Gradle Task: руководство по выживанию

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

Приветствую, Gradle-адепт! В статье тебя ждёт авторский тур по Gradle Task. В маршрут включено хождение по граблям, изучение секретных практик buildscript-тасок, проведение раскопок по deprecated API, а ближе к концу зарядимся силой Custom Gradle Task, попрактикуемся в строительстве билд-кеша и узнаем, кто такой Worker API.

Читать далее
Всего голосов 17: ↑16 и ↓1+15
Комментарии2

Энциклопедия интеропа: Kotlin-Swift-Interopedia

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

Как и множество других компаний, мы в hh.ru с интересом приглядываемся к Kotlin Mobile Multiplatform. Особенно нас заинтересовал вопрос, связанный с удобством работы iOS-разработчиков с общим SDK. Наши iOS-инженеры пишут на Swift, поэтому нам важно было убедиться: то публичное API, которое мы сформируем, будет выглядеть на Swift так же удобно и классно, как и в Kotlin. Мы провели объёмный ресёрч, в рамках которого подготовили специальный репозиторий "Kotlin-Swift-Interopedia", которым и хотим поделиться с сообществом.

На портале документации KMM можно найти страницу, посвящённую интеропу между Kotlin и Swift. Но в ней не рассматриваются все возможные конструкции языка Kotlin-а, поэтому даже после чтения документации оставалось множество вопросов.

Как поведут себя abstract-классы? Что будет с sealed-интерфейсами? Удобно ли мне будет работать с лямбдами в качестве аргументов функций? Enum-ы превратятся в Swift-овые enum-ы?

Чтобы ответить на эти и множество других вопросов, мы и создали нашу "интеропедию". В ней мы собрали в единую табличку часто встречающиеся фичи языка Kotlin и указали, чем можно пользоваться без проблем, с какими придётся произвести дополнительные манипуляции , а какие пока что не работают совсем. Мы запилили этот репозиторий, чтобы помочь всем, кто тоже проводит ресёрч KMM, определиться с использованием этой технологии. 

Относительно недавно на Хабре анонсировали специальный инструмент, который может немного улучшить опыт iOS-разработчиков — плагин moko-kswift от компании IceRock. Но даже с его помощью не все боли могут быть исправлены прямо сейчас.

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

Осенний экспресс прибывает: анонс TechTrain 2021 Autumn

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

IT-экспресс TechTrain мчится в онлайн и открывает наш осенний сезон конференций.

Это бесплатное мероприятие, где с 8 докладами на самые разные темы выступят спикеры самого разного профиля. Пишете вы на Kotlin или C++, ближе вам DevOps или дата-инжиниринг — найдется доклад для вас.

Чтобы запрыгнуть на бесплатный осенний поезд, который отправится 18 сентября, достаточно пройти регистрацию на сайте.

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

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

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

Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием

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

Сегодня мы поговорим о кодах ошибок, которые мы можем получить от Billing Library в методе getResponseCode(). Это наш четвёртый туториал по внедрению внутренних покупок в приложения на Android. Остальные доступны по ссылкам:

1. Android in-app purchases, часть 1: конфигурация и добавление в проект.

2. Android in-app purchases, часть 2: инициализация и обработка покупок.

3. Android in-app purchases, часть 3: получение активных покупок и смена подписки.

4. Android in-app purchases, часть 4: коды ошибок от Billing Library и как не облажаться с тестированием. — Вы тут.

5. Android in-app purchases, часть 5: серверная валидация покупок.

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

Безопасная приостановка в Android View. Прощайте обработчики, поприветствуем корутины

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

Приостановки и ожидания на Android, а так же длительные операции — это всегда больно. Однако, команда JetBrains предоставила нам отличное решение в виде Kotlin Coroutines. Давайте посмотрим, как сделать ожидание безопасным и красивым способом!

Читать далее
Рейтинг0
Комментарии2
12 ...
50