Pull to refresh
0
0
WildFerret @DaniilKharin

Android Developer

Send message

Как натянуть сыр на страницу, или MVI Paging3 в Android

Reading time5 min
Views4.1K

Привет! Меня зовут Георгий Бердников. Я разработчик в компании 65apps, занимаюсь созданием мобильных приложений на Android. Сегодня расскажу о том, как совместить приятное с полезным, поймать двух зайцев и журавля с неба инженеру, перед которым встала сложная задача реализовать постраничную загрузку в приложении.

Библиотека Paging3 упрощает работу с пагинацией. Она всё делает сама: вам не нужно заниматься ручной передачей данных по заветам популярных архитектур, таких как MVI, MVVM и MVP. Снаружи задумка кажется хорошей, но она  может стать ложкой дёгтя в бочке мёда. Инструменты, взаимодействующие с общим состоянием (к таким относятся, например, средства отладки в фреймворке MVIKotlin), не смогут контактировать с Paging3.

В статье я покажу, как решить эту проблему.  В качестве плацдарма для модификаций был выбран небезызвестный сэмпл от Google, в который мы и внедрим подставьте сюда фреймворк своей мечты (в статье используется вышеупомянутый MVIKotlin). Наш взор падёт только на Paging3,  функциональность вставки и удаления предметов оставим в стороне.

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

Локализация Android-приложений: о чем умалчивает документация

Reading time8 min
Views12K

Локализация Android-приложений — намного более сложная задача, чем должна была бы быть. Описание в документации недостаточное: чтобы разобраться в происходящем «под капотом», нужно искать информацию во внешних источниках (на StackOverflow и в блогах) и тренироваться на базовых приложениях типа «Hello World».

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

Читать далее
Total votes 21: ↑20 and ↓1+19
Comments2

Глобальный ренейминг в Android-проекте

Reading time10 min
Views2.8K

Всем привет! Не будем мять бока и начнем максимально быстро.

Но для начала, представлюсь. Меня зовут Таскаев Евгений - я Android-разработчик в фичевой команде hh.ru. Пилю всякие интересные фичи, которыми вы пользуетесь каждый день*.

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

Читать далее
Total votes 10: ↑9 and ↓1+8
Comments9

Видео в звонках ВКонтакте: 4К-скриншеринг и Quality on-demand для тысяч участников

Reading time13 min
Views7.5K

Что нужно от картинки в видеозвонке? Базово — чтобы не пикселила, не замирала и не вешала весь звонок. Это основы real-time видео, и добиться этого не так трудно. 

Всё самое интересное начинается, когда вы хотите, чтобы в одном звонке могли участвовать сколько угодно человек. И при этом все могли включать видео, а не просто смотреть; разрешение скриншеринга было бы 4К; шеринг оставался суперчётким при любом интернете и т. д. И чтобы звонки работали на любых платформах и устройствах на мобильном нестабильном интернете. 

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

Читать далее
Total votes 47: ↑45 and ↓2+43
Comments11

Оптимизация сборок Android приложений: ProGuard, D8, R8. Тайны обфускации

Reading time17 min
Views24K

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

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments2

Navigation Component-дзюцу, vol. 3 — Corner-кейсы

Reading time15 min
Views6.9K


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


Это третья и заключительная статья в цикле про различные кейсы навигации с Navigation Component-ом. Вы также можете ознакомиться с первой и второй частями

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

Вскрытие показало: виноват пробел

Reading time5 min
Views40K


Мы — небольшой стартап в Чарльстоне, Южная Каролина. Мы принимаем заказы с помощью текстовых сообщений и распечатываем их непосредственно в ресторанах.

Мы запустили eatabit.com в Чарльстоне почти год назад. За это время наш API распечатал более 9300 заказов на еду у наших клиентов — это рестораны, стадионы, курсы гольфа. Работа с мобильной связью не отличается простотой — особенно в зонах с повышенной нагрузкой на сеть, как на стадионах во время матчей, но наши системы отслеживают ситуации вроде плохого качества сигнала или разрывов.
Читать дальше →
Total votes 50: ↑41 and ↓9+32
Comments22

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

Reading time4 min
Views3.5K
В новом дайджесте испорченные десктопы, свой вклад в Swift, безопасность приложений и война Дурова с Apple, качество кода и эволюция приложений, Huawei как лидер рынка и много других интересных материалов!

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

Как стать Oracle Certified Professional Java SE 8 Programmer

Reading time7 min
Views94K
В этой статье речь снова пойдет о сертификации. Не так давно я рассказывал о процессе получения сертификата от компании Google для Android разработчиков. Почитать об этом можно вот здесь. В статье я периодически приводил сравнение с процессом получения сертификатов от Oracle. Немного подумав, я решил раскрыть эту тему подробнее, благо сертификат от Oracle я получил полгода назад и еще не все забыл. Естественно, на хабре уже не раз описывали этот процесс. Например, достаточно подробные описания можно найти тут и тут. Однако, указанные статьи были написаны несколько лет назад, и затрагивают Java SE 7. Я же постараюсь сосредоточиться на особенностях экзамена по Java SE 8 и в принципе обновить информацию по процессу получения сертификата. Тех, кому все еще интерсено, прошу под кат.
Поехали
Total votes 19: ↑18 and ↓1+17
Comments9

Зарплатная вилка. Ты ж у мамы программист

Reading time7 min
Views160K
Думаю что у каждого ИТ-специалиста наступает тот момент, когда он хочет написать подобный текст может и не для себя, а для десятков знакомых, которые не работают в этой сфере и не понимают как и что. Возможно кому-то будет полезно просто дать ссылку на подобную статью, чем в 10 раз объяснять самому.

Дело в том, что ИТ-сфера одновременно бурно развивается (все еще) и в то же время полна множества устоявшихся стереотипов.
Читать дальше →
Total votes 249: ↑195 and ↓54+141
Comments472

WEB 3.0 — второй подход к снаряду

Reading time5 min
Views23K
image

Сначала немного истории.

Web 1.0 — это сеть для доступа к контенту, который размещали на сайтах их владельцы. Статичные html-страницы, доступ к информации только для чтения, основная радость — гиперссылки, ведущие на страницы этого и других сайтов. Типичный формат сайта — информационный ресурс. Эпоха переноса в сеть offline-контента: оцифровка книг, сканирование картинок (цифровые фотоаппараты были еще редкостью).
Читать дальше →
Total votes 19: ↑12 and ↓7+5
Comments11

Будущее внедрения зависимостей в Android

Reading time9 min
Views6.8K

Предлагаю вашему вниманию перевод оригинальной статьи от Jamie Sanson
image


Создание Activity до Android 9 Pie


Внедрение зависимостей (DI) — это общая модель, по ряду причин используемая во всех формах разработки. Благодаря проекту Dagger, он взят в качестве шаблона, используемого в разработке для Android. Недавние изменения в Android 9 Pie привели к тому, что теперь у нас есть больше возможностей, когда речь идет о DI, особенно с новым классом AppComponentFactory.




DI очень важно, когда речь заходит о современной разработке Android. Это позволяет сократить общее количество кода при получении ссылок на сервисы, используемые между классами, и в целом хорошо разделяет приложение на компоненты. В этой статье мы сосредоточимся на Dagger 2, самой распространенной библиотеке DI, используемой в разработке Android. Предполагается, что вы уже обладаете базовыми знаниями о том, как это работает, но не обязательно понимать все тонкости. Стоит отметить, что эта статья — нечто вроде авантюры. Это интересно и всё, но на момент её написания Android 9 Pie даже не появлялся на панели версий платформы, поэтому, вероятно, данная тема не будет иметь отношения к повседневной разработке в течение как минимум нескольких лет.

Внедрить зависимость
Total votes 8: ↑7 and ↓1+6
Comments0

Храним токены авторизации безопасно

Reading time6 min
Views39K
Привет %username%. Меня, независимо от темы доклада, на конференциях постоянно спрашивают один и тот же вопрос — «как безопасно хранить токены на устройстве пользователя?». Обычно я стараюсь ответить, но время не позволяет полностью раскрыть тему. Этой статьей я хочу полностью закрыть этот вопрос.
Читать дальше →
Total votes 16: ↑12 and ↓4+8
Comments49

Многомодульность в Android с точки зрения архитектуры. От А до Я

Reading time20 min
Views62K
Всем привет!

Не так давно мы с вами осознали, что мобильное приложение — это не просто тонкий клиент, а это действительно большое количество самой разной логики, которое нуждается в упорядочивании. Именно поэтому мы прониклись идеями Clean architecture, прочувствовали, что такое DI, научились использовать Dagger 2, и теперь с закрытыми глазами способны разбить любую фичу на слои.

Но мир не стоит на месте, и с решением старых проблем приходят новые. И имя этой новой проблемы — мономодульность. Обычно об этой проблеме узнаешь, когда время сборки улетает в космос. Именно так и начинаются многие доклады про переход на многомодульность (раз, два).
Но почему-то все при этом как-то забывают, что мономодульность сильно бьет не только по времени сборки, но и по вашей архитектуре. Вот ответьте на вопросы. На сколько у вас AppComponent большой? Не встречаете ли вы периодически в коде, что фича А зачем-то дергает репозиторий фичи Б, хотя вроде такого быть не должно, ну или оно должно быть как-то более верхнеуровнево? Вообще у фичи есть какой-то контракт? А как вы организовываете общение между фичами? Есть какие-то правила?
Вы чувствуете, что мы решили проблему со слоями, то есть вертикально все вроде хорошо, но вот горизонтально что-то идет не так? И просто разбиением на пакеты и контролем на ревью не решить проблему.

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

В своей статье я хочу вам рассказать, как дошел до многомодульности именно с архитектурной точки зрения. Какие проблемы меня беспокоили, и как я их старался поэтапно решать. А в конце вас ждет алгоритм перехода с мономодульности на многомодульность без слез и боли.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments18

Мои любимые примеры функционального программирования в языке Kotlin

Reading time5 min
Views29K

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


Мои любимые примеры функционального программирования в языке Kotlin

Читать дальше →
Total votes 36: ↑25 and ↓11+14
Comments17

Реализация навигации в Android приложениях с помощью Navigation Architecture Component

Reading time20 min
Views97K

image


От переводчика


Здравствуйте, хабрчане. Это перевод статьи-документации к новой технологии Navigation для Android-разработчиков. Технология сейчас находится в стадии разработки, но уже доступна для использования и очень даже работает в превью версии Android Studio 3.2 и выше. Я уже опробовал её в действии и могу сказать что меня она впечатлила. Наконец-то осуществление смены экранов перестало быть чем-то сложным, особенно если используется передача данных от одного экрана к другому. Собственно, перевод я делаю для того чтобы больше русскоязычных разработчиков обратило внимание на технологию, и чтобы упростить её изучение.
Если заметите существенные ошибки или неточности, прошу сообщать в комментариях.

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

25 занимательных Android библиотек. Весна 2018

Reading time5 min
Views20K
Это список из 25 новейших Android-библиотек, проектов и инструментов, выпущенных за последние 3 месяца. Здесь нет первого и последнего места, это просто список интересных библиотек. Они определённо заслуживают вашего внимания. Наслаждайтесь!


Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments2

«Конечные пользователи — мы с вами»: об Android-разработке в ЦФТ

Reading time7 min
Views4.9K


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

У финансовых приложений, разработанных в компании ЦФТ для различных заказчиков, суммарное число установок исчисляется миллионами — то есть немногие могут похвастаться таким опытом в этой сфере. Воспользовавшись тем, что компания присутствовала на нашей конференции Mobius, мы задали руководителю группы разработки Android приложений Михаилу Емельянову несколько вопросов о том, как в ЦФТ выглядит Android-разработка.
Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments11

Information

Rating
Does not participate
Location
Брянск, Брянская обл., Россия
Date of birth
Registered
Activity