Pull to refresh
15
0
Александр @web_alex

User

Send message

Android изнутри: сравнение Dalvik и ART

Reading time6 min
Views35K
Привет, Хабр! Около полугода назад я публиковал подробный «гайд» по JVM. Пост, в целом, зашел, а в комментариях спросили, не планируется ли “чего-то по андроиду”. Наконец, у меня дошли руки.



В этом посте поговорим о среде выполнения в Android. В частности, я постараюсь кратко, но емко изложить, чем отличается ART и Dalvik, и как со временем улучшились средства разработки в Android. Тема явно не новая, но, надеюсь, придется кстати тем, кто только начинает вникать. Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 18: ↑16 and ↓2+14
Comments14

Android Vitals — Профилируем запуск приложения

Reading time8 min
Views3.1K

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

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

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

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

Reading time8 min
Views12K

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

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

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

Apollo 3.0 для работы с GraphQL в многомодульном Android приложении

Reading time5 min
Views3.3K

Давайте рассмотрим, каким образом настроить и использовать последнюю на данный момент версию клиента apollo в многомодульном приложении под android.

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

Сервис отложенных запросов для Retrofit на Android

Reading time11 min
Views5.1K

Как Вы обрабатываете отсутствие доступа в интернет в своем приложении? Показываете сообщение "Нет интернета, попробуйте позже"? Допустим случай, когда мы хотим гарантировать выполнение сетевого запроса пользователя, а не заставлять его искать интернет и снова повторять не удавшиеся запросы. Давайте создадим такую ситуацию и научимся ее обрабатывать. Реализованный пример, как обычно можно скачать по ссылке на GitHub в конце статьи!

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

Паттерны и антипаттерны корутин в Kotlin

Reading time5 min
Views27K

Паттерны и антипаттерны корутин в Kotlin


Решил написать о некоторых вещах, которых, по моему мнению, стоит и не стоит избегать при использовании корутин Kotlin.

Читать дальше →
Total votes 20: ↑18 and ↓2+16
Comments1

Оптимизация ресурсов в Android. Ускорение сборки и уменьшение размера APK

Reading time4 min
Views11K

Один из эффективных способ ускорения проектов - разделить генерацию R классов по отдельным модулям. Хоть эта возможность уде добавлена давно в Android Gradle Plugin, но её до сих пор не включили по умолчанию. Из статьи вы узнаете как выключить эту фичу и какие результаты по скорости сборки проекта удаётся достичь

Читать
Total votes 9: ↑9 and ↓0+9
Comments10

Чему я научился делая игры на LibGDX

Reading time12 min
Views18K

Привет, Хабр! 👋 В этом топике хочу поговорить о незаслуженно забытом, бесплатном фреймворке для разработки кросс-платформенных игр - LibGDX. Поделиться секретами своей кухни и решениями, которые я использую при разработке своих игр-головоломок. Ворнинг! Много кода под катом.

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

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

Reading time12 min
Views6.6K

Это вторая статья из серии, посвящённой подключению внутренних покупок в приложениях Google Play. В этой статье разберём пример пейволла и реализацию механизма покупки.

Познакомьтесь с остальными статьями из цикла:

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: серверная валидация покупок.

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

Давайте будем прямыми в своих intent

Reading time5 min
Views4.9K

В Android 12 появится важное изменение, улучшающее безопасность платформы целиком и всех приложений, предназначенных для работы с этой версией ОС. Активити, сервисы и бродкаст ресиверы (broadcast receivers), в которых указаны интент-фильтры (intent-filters), должны явно обозначать, будут ли они доступны для других приложений или компонентов системы.

Под катом — перевод статьи про проблемы и решения, которые могут возникнуть при переходе на новую версию.

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

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

Reading time17 min
Views24K

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

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

Подготовка приложений для Google Play к требованиям Android 10

Reading time2 min
Views4.9K
В северном полушарии настало лето! А это означает, что к публикации в Google Play теперь предъявляются новые требования. За прошедшие годы было несколько обновлений требований для публикации новых приложений. А также обновлений для Google Play. В этом году все сводится к обновлению вашего приложения до работы на Android 10 (API 29). Ниже приведены важные даты, которые должны быть восприняты всерьез всеми разработчиками.

Требования и даты по Android 10


  • 3 августа 2020 г. — новые приложения должны быть ориентированы на Android 10 (API 29).
  • 2 ноября 2020 г. — все приложения и обновления приложений должны быть ориентированы на Android 10 (API 29).


Сегодня давайте пройдемся по обновлению существующего приложения Android, чтобы оно полностью соответствовало требованиям.
Читать дальше →
Total votes 10: ↑7 and ↓3+4
Comments0

Анимация в Android: плавные переходы фрагментов внутри Bottom Sheet

Reading time19 min
Views17K
Написано огромное количество документации и статей о важной визуальной составляющей приложений — анимации. Несмотря на это мы смогли вляпаться в проблемы столкнулись с загвоздками при её реализации.

Данная статья о проблеме и анализе вариантов её решения. Я не дам вам серебряную пулю против всех монстров, но покажу, как можно изучить конкретного, чтобы создать пулю специально для него. Разберу это на примере того, как мы подружили анимацию смены фрагментов с Bottom Sheet.


Читать дальше →
Total votes 22: ↑21 and ↓1+20
Comments17

Как настроить Apollo для работы с GraphQL в Android

Reading time5 min
Views7.5K

Зачем статья


Недавно у меня появилась необходимость реализовать работу с бэком на GraphQL. Туториалов по настройке на Android, в отличие от REST не так много и большинство из них уже не совсем актуальны.

Что такое GraphQL


GraphQL — модная альтернатива REST API, которая позволяет запрашивать данные более оптимизированным способом, отдавая только нужные вам данные.

Настройка окружения


Делать запросы к серверу мы будем через Apollo — самая популярная библиотека для работы с GraphQL на данный момент.

Приступим к работе. Первым делом давайте добавим в манифест нужные разрешения для работы с сетью:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

Далее необходимо подключить apollo. Идём в основной build.gradle и в разделе dependencies добавляем следующую строчку:

classpath 'com.apollographql.apollo:apollo-gradle-plugin:2.0.0'

Теперь необходимо в файле build.gradle модуля app подключить дополнительные зависимости:

implementation("com.apollographql.apollo:apollo-runtime:2.0.0")
implementation "com.apollographql.apollo:apollo-android-support:2.0.0"

Кроме того, в самый верх файла добавим подключение плагина:

apply plugin: 'com.apollographql.apollo'

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

Свернем среду разработки и откроем терминал. Переходим в папку с вашим проектом:
Читать дальше →
Total votes 3: ↑3 and ↓0+3
Comments1

Материалы с нижегородского Android-митапа. MotionLayout, Kotlin Coroutines, CI/CD инфраструктура и дизайн-системы

Reading time3 min
Views4.3K

Всем привет! В прошлую субботу, 29 февраля, прошёл наш первый митап для Android-разработчиков в Нижнем Новгороде. Спикеры выступали с докладами о создании красивых анимаций с помощью MotionLayout, Kotlin Coroutines, CI/CD инфраструктуре для Android и дизайн-системе Авито.


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


Total votes 11: ↑11 and ↓0+11
Comments0

AdColony: 89% издателей мобильных приложений и игр используют рекламные видео

Reading time3 min
Views3.5K
image

89% издателей наиболее прибыльных приложений и игр для мобильных устройств в той или иной форме используют рекламные видео. Таковы данные ежегодного опроса, проведённого компанией AdColony, занимающейся мобильным маркетингом.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments2

MVP для Android — преимущества использования Moxy в качестве вспомогательной библиотеки

Reading time8 min
Views12K

В данной статье описываются преимущества использования Moxy в качестве вспомогательной библиотеки при использовании MVP для Android-приложения.


Важно: здесь не сравнивается MVP с другими архитектурными подходами типа MVVM, MVI и т.п. В статье описывается почему, если в качестве архитектуры UI-ной части приложения выбран MVP, то лучше не использовать самописную реализацию MVP, а использовать Moxy.


Библиотека Moxy позволяет избежать boilerplate кода для обработки lifecycle фрагментов и активитей, и работать с View как будто оно всегда активно.
Далее под View понимается имплементация View в виде фрагмента или активити.
Под интерактором понимается сущность бизнес-логики, т.е. класс, который лежит на более низком уровне абстракции, чем Presenter.


Общие преимущества Moxy


  • Активная поддержка и разработка библиотеки.
  • Поддержка фичей Kotlin вроде val presenter by moxyPresenter { component.myPresenter } и presenterScope для корутин.
  • Автоматическое восстановление состояния View.
  • Автоматическая увязка с жизненным циклом (а отсюда отсутствие утечек Активити и прочей подобной прелести).
  • Обращения к View происходят через не-nullable viewState. Нет риска, что какая-то команда View потеряется.
  • Весь lifecycle экрана сводится к двум коллбэкам презентера — onFirstViewAttach() и onDestroy().
  • Время разработки экранов сокращается — не нужно писать лишний код для обработки lifecycle и сохранения состояний.
Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments8

Почему Мистер Робот — лучший сериал про IT-индустрию

Reading time12 min
Views112K
Доброго времени суток, уважаемые читатели Хабра!

23 декабря 2019 года в свет вышла заключительная серия одного из самых популярных сериалов про IT — Мистер Робот. Посмотрев сериал до конца, я твёрдо решил написать статью о сериале на Хабре. Выход этой статьи приурочен к моему юбилею на портале. Моя первая статья появилась ровно 2 года назад.

Disclaimer


Я понимаю, что читатели Хабрахабра — люди работающие в IT-индустрии, опытные пользователи и заядлые гики. Данная статья не несёт в себе какой-то важной информации и не является обучающей. Здесь я хотел бы поделиться мнением о сериале, но не как кинокритик, а как человек из мира IT. Если вы согласны или же не согласны со мной в каких-то вопросах, давайте обсудим их в комментариях. Расскажите своё мнение. Оно будет интересно.

Если вам, читателям Хабрахабра, понравится данный формат, я обещаю продолжить работу над другими фильмами и сериалами, стараясь выбрать лучшие, на мой взгляд, работы.

Что же, давайте приступим к разбору сериала.
Осторожно! Спойлеры.


Читать дальше →
Total votes 55: ↑42 and ↓13+29
Comments158

Что нового в Android 11 для пользователей и разработчиков

Reading time5 min
Views30K


На днях внезапно выкатили превью-версию Android 11 для разработчиков. Google говорит «разработчики, вы в прошлом году хорошо нам нафидбечили, поэтому в этот раз мы даём вам превью раньше, чем когда-либо» (релиз намечен на третий квартал, то есть до него примерно полгода).

Из-за этого версия особенно сырая, в неё могли попасть не все готовящиеся фичи (что-то привлекательное небось припасли для Google I/O), и часть вещей до релиза ещё могут откатить обратно. Но всё равно же интересно разобраться, что нового!

Как водится, сайты вроде 9to5Google и Android Police тут же потестировали превью-версию в хвост и в гриву, а в итоге выпустили кучу текстов: про каждое нововведение по отдельности. А мы продрались через эту кучу текстов и сделали для Хабра сводную подборку на русском — такую, чтобы была понятна и обычному пользователю Android, но с приписками конкретно для мобильных разработчиков.

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

Трансформация кода в Android

Reading time12 min
Views5K

Вместо вступления


Всё началось с того, что мне захотелось изучить тонкости настройки Gradle, понять его возможности в Android разработке (да и вообще). Начал с жизненного цикла и книги, постепенно писал простые таски, попробовал создать свой первый Gradle плагин (в buildSrc) и тут понеслось.


Решив сделать что-то, приближенное к реальному миру Android разработки, написал плагин, который парсит layout xml файлы разметки и создает по ним Java объект со ссылками на вьюхи. Затем побаловался с трансформацией манифеста приложения (того требовала реальная задача на рабочем проекте), так как после трансформации манифест занимал порядка 5к строк, а работать в IDE с таким xml файлом довольно тяжело.


Так я разобрался как генерировать код и ресурсы для Android проекта, но со временем захотелось чего-то большего. Появилась мысль, что было бы круто трансформировать AST (Abstract Syntax Tree) в compile time как это делает Groovy из-под коробки. Такое метапрограммирование открывает много возможностей, была бы фантазия.


Дабы теория не была просто теорией, я решил подкреплять изучение темы созданием чего-то полезного для Android разработки. Первое, что пришло на ум — сохранение состояния при пересоздании системных компонентов. Грубо говоря, сохранение переменных в Bundle максимально простым способом с минимальным бойлерплейтом.

Читать дальше →
Total votes 18: ↑18 and ↓0+18
Comments1
1
23 ...

Information

Rating
Does not participate
Registered
Activity