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

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

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

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

Выходим на рынок Huawei, или Как мы адаптировали приложение для работы с HMS

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


Привет, Хабр! Меня зовут Георгий Гигаури, я разрабатываю Android-приложение Delivery Club. Эта статья появилась после доклада на конференции Mobius 2020, где мы выступали вместе с Павлом Борзиковым. Для тех, кто любит видео, — ищите его в конце статьи.

Почему мы вообще обратили внимание на Huawei-устройства? Всё началось с того, что Huawei теперь не может распространять свои устройства с сервисами Google Play. Да, они могут использовать ОС Android, так как это открытая операционная система, но чтобы распространять устройства с сервисами Google Play, необходимо иметь лицензию. К сожалению, Huawei не может получить её из-за разногласий между Китаем и США. Поэтому Huawei приходится разрабатывать свои собственные Mobile Services. Справедливости ради, они этим занимались уже давно, но теперь им приходится расширять кодовую базу, активно увеличивать количество сервисов.
Всего голосов 36: ↑34 и ↓2+32
Комментарии4

Как мы в 2 раза увеличили скорость формирования ленты в UGC-приложении

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

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

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

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

Как выйти на китайский рынок с mini-app для WeChat, чтобы не прогореть

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

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

Почти нет примеров когда некитайская продуктовая компания вышла в WeChat с собственной мини-программой, да ещё с in-house разработкой вне Китая. Поэтому мы  познавали все нюансы разработки самостоятельно, от устройства китайской цифровой экосистемы и мини-приложений в WeChat, до вывода продукта на китайский рынок. Об этом и расскажем в этом большом «разборе» китайских приложений.

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

Кроссплатформенная мобильная разработка: история вопроса

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

Когда речь заходит о разработке «сразу для Android и iOS», начинаются холивары и гадания на кофейной гуще. Что перспективнее, Flutter или Kotlin Multiplatform? Будущее за ними, или завтра их оба забудут?

Уверенно делать прогнозы — занятие весёлое, но не очень конструктивное. Я захотел подойти иначе. Поскольку мы проводим конференцию Mobius, я общался со многими мобильными разработчиками, в том числе об их опыте использования старых кроссплатформых решений. И теперь решил вспомнить, какими были эти решения, и понять их судьбу.

Как известно, «кто забывает об истории, обречён на её повторение». Если мы разберёмся с прошлым — возможно, тогда и будущее станет нам понятнее. А если вы сами работали с описанными технологиями — можете дополнять в комментариях своим опытом.

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

Истории

SafetyNet Attestation — описание и реализация проверки на PHP

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

В эту тему пришлось детально погрузиться во время работы над обеспечением стандартных механизмов верификации устройств для разных мобильных платформ. Задача сводилась к разработке полноценной реализацию проверки JWS-токенов по протоколу SafetyNet на серверной стороне.

После многочасовых поисков и скрупулёзного изучения официальной документации Google решил поделиться полученным опытом. Потому что, кроме официальной документации, я нашел только отрывочные описания частных примеров реализации на разных ЯП. И ни намека на комплексное объяснение особенностей проверки по SafetyNet на сервере.

Статья будет полезна разработчикам, которые хотят подробнее разобраться с технологией верификации устройств по протоколу SafetyNet Attestation. Для изучения описательной части не обязательно знать какой-либо язык программирования. Я сознательно убрал примеры кода, чтобы сфокусироваться именно на алгоритмах проверки. Сам пример реализации на PHP сформулирован в виде подключаемой через composer библиотеки и будет описан ниже.

А в конце статьи — ссылка на разработанную мной библиотеку на PHP, которая обеспечивает полный цикл верификации JWS.

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

Как root-права и альтернативные прошивки делают ваш android смартфон уязвимым

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

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

Часто для этого рекомендуется получение прав суперпользователя в системе (root-права), удаление системных приложений от Google и от производителя устройства, или даже полная замена стандартной ОС на альтернативные сборки, чаще всего LineageOS (бывший CyanogenMod). При этом первым шагом в этом процессе всегда будет так называемая "разблокировка загрузчика". Во время её выполнения устройство несколько раз покажет нам страшные предупреждения о том, что теперь оно станет более уязвимо для злоумышленников, но мы смело нажимаем "подтвердить" и шьём root или самую свежую сборку кастомной прошивки, не задумываясь о том какие проблемы создаёт нам незаблокированный загрузчик. 

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

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

Читать далее
Всего голосов 127: ↑123 и ↓4+119
Комментарии210

Как без усилий сократить объем входящего в дата-центр трафика на 70%

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

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

Единственное, о чем мы пожалели — что не применили это решение раньше.

Читать далее
Всего голосов 137: ↑136 и ↓1+135
Комментарии53

Arstechnica: Harmony OS от Huawei — переделанный Android 10 без особых изменений

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

Мы несколько раз писали о разработках компании Huawei. Попав под санкции США, она начала создавать собственные аппаратные и программные решения. В частности — процессоры и ПО. Чаще всего среди этих разработок упоминается операционная система Harmony OS, которая, как многие считали, создавалась с нуля.

Разработка стартовала в 2019 году, и сейчас представлена уже вторая версия системы. При этом президент отдела разработки ПО Huawei заявил в свое время следующее: «Harmony OS не является ни копией Android, ни копией iOS». Но так ли это? Как узнали в редакции Arstechnica, слова разработчиков очень сильно расходятся с реальностью.
Читать дальше →
Всего голосов 30: ↑29 и ↓1+28
Комментарии23

Как мы научили мессенджер ТамТам распознавать адреса в тексте

Время на прочтение5 мин
Количество просмотров7.2K
Привет! Меня зовут Юра Дорофеев, я работаю над Android-версией мессенджера ТамТам. Представьте, что вы договариваетесь о встрече с другом, и он отправляет вам адрес. Но не отдельным сообщением, а посреди другого текста:


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


И тоже сидишь, копируешь, вырезаешь или просишь автора скинуть отдельным сообщением, чтобы весь чат не мучился так же, как и ты.
Читать дальше →
Всего голосов 55: ↑42 и ↓13+29
Комментарии41

Как Google Play разрушил все ожидания. Опыт создания игры на Android. 2 месяца разработки. Отказ. Временный бан Admob

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

Привет, сегодня я расскажу вам о разработке своей первой игры на Android, публикации ее в Google Play, закупке рекламы в Google Ads и доходе. Я советую эту статью к прочтению каждому кто впервые будет создавать игру, ведь тут вы найдете полезную информацию и некоторые нюансы, с которыми лично я не сталкивался в историях других людей.

Ссылка на игру в Google Play: Cyberpunk Shooter

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

Как удалить «неудаляемые» приложения со смартфона

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


Чтобы увеличить привлекательность смартфонов, производители ставят на них как можно больше разных программ. Это понятно. Просто берём и удаляем ненужное… Стоп.

Оказывается, некоторые программы невозможно удалить. Например, на отдельных моделях Samsung невозможно удалить Facebook (есть только опция 'disable'). Говорят, на Samsung S9 вдобавок предустановлены «неудаляемые» приложения Microsoft.

Эти смартфоны приведены для примера. Такая же проблема и на других моделях. На многих есть неудаляемые программы от самого производителя.

Всё это надо зачистить.
Читать дальше →
Всего голосов 190: ↑179 и ↓11+168
Комментарии203

Из 1С в Android-разработку: мой опыт перехода внутри Lamoda

Время на прочтение7 мин
Количество просмотров17K
Меня зовут Виталий Хмелёв, с 2019 года я работаю в команде Аndroid-разработки в Lamoda, а до того почти семь лет проработал здесь же программистом 1C. В этой статье хочу поделиться своим опытом и дать некоторые советы, которые, я надеюсь, помогут, если вы тоже задумываетесь заняться разработкой на Android.

image
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии34

Чаты на вебсокетах, когда на бэкенде WAMP. Теперь про Android

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

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

К реализации вернёмся чуть ниже, а начнём с ответов на вопросы про бэкенд, которые появились после первой статьи: почему WAMP, какой брокер используем и некоторые другие моменты.

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

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

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

Запуск Netflix на телевизорах и приставках. Лишние 40 миллисекунд

Время на прочтение6 мин
Количество просмотров39K
Приложение Netflix работает на сотнях умных телевизоров, стиков и телевизионных приставок. Я один из инженеров, которые помогают производителям запустить наше приложение на их устройствах. В этой статье обсудим особенно сложный вопрос, который помешал выходу одной телеприставки на европейский рынок.

Таинственная проблема


В конце 2017 года меня позвали на созвон, чтобы обсудить проблему с приложением Netflix на новой телеприставке. Это было новое устройство Android TV с поддержкой 4K, на базе Android Open Source Project (AOSP) версии 5.0, Lollipop. Я уже несколько лет работал в Netflix и помог выпустить несколько девайсов, но это был моё первое устройство Android TV.

На связи были все четыре стороны: крупная европейская компания платного ТВ, запускающая устройство (оператор), подрядчик, интегрирующий прошивку (интегратор), поставщик системы-на-чипе (поставщик чипов) и я (Netflix).

Интегратор и Netflix уже завершили строгий процесс сертификации Netflix, но во время внутреннего испытания у оператора руководитель компании сообщил о серьёзной проблеме: воспроизведение Netflix лагало, то есть видео воспроизводилось очень короткое время, затем пауза, затем снова, затем пауза. Это происходило не всегда, но стабильно начинало лагать через нескольких дней после включения приставки. Они показали видео, оно выглядело ужасно.
Читать дальше →
Всего голосов 111: ↑109 и ↓2+107
Комментарии58

Я месяц провел в MIT и понял — даже софтверным инженерам не стоит забывать про паяльник

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


В детстве отец иногда доверял мне свой паяльник. Я занимался нехитрой пайкой, но чаще поглядывал, как руки отца то окунали паяльник в канифоль, то цепляли кусочек припоя. Запах канифоли с тех пор всегда будит во мне воспоминания. Кто бы мог подумать, что я буду так же увлеченно паять, но уже не батиным, а навороченным американским паяльником, и не на кухне в квартире детства, а в Массачусетском Технологическом институте.
Читать дальше →
Всего голосов 68: ↑61 и ↓7+54
Комментарии43

Уязвимости в реализации межпроцессного взаимодействия в Android-приложениях

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

Последние 6 лет я работаю экспертом по информационной безопасности в Одноклассниках и отвечаю за безопасность приложений.


Мой доклад сегодня — о механизмах межпроцессного взаимодействия в Android и уязвимостях, связанных с их неверным использованием.



Но сначала пара слов о том, как появился этот доклад.


Наверное, вы уже заметили, что на каждом Heisenbug есть как минимум один доклад про безопасность, например про XSS или поиск уязвимостей в веб-приложениях. Тема мобильной безопасности осталась не охвачена, хотя мы живем в 2020 году, и аудитория мобильных приложений уже давно превысила аудиторию веба. Мне хотелось выбрать тему из мира мобильной безопасности — достаточно конкретную, чтобы выдержать формат технического доклада, но при этом достаточно распространенную.

Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии2

Стоит ли увольнять разраба за большую и дорогую ошибку? Думаю, нет, но менеджмент хотел крови

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


В Англии все одержимы футболом. Уйма любительских команд и куча стадионов. И вот через знакомых ко мне обратился один англичанин, у которого была идея и немного денег — он попросил сделать приложение, в котором люди могли бы управлять своей любительской командой по футболу. Расставлять людей на поле, делать замены, искать игроков, заказывать стадионы и общаться в чате.

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

Поэтому я согласился на работу. И это была просто отдушина после того, что я пережил в бэкенд разработке.
Читать дальше →
Всего голосов 71: ↑51 и ↓20+31
Комментарии155

Большие картинки? Deal with it

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

Привет, Хабр! Приложение iFunny создано, чтобы показывать контент, который генерируют пользователи. Это могут быть видео, гифки и картинки. Очень большие картинки. Представьте себе, сколько памяти займёт комикс, высотой в 10К пикселей. Представили? А теперь представьте, что вы не можете его сжимать, потому что в таком случае он потеряет в качестве настолько, что станет абсолютно нечитаемым. Под катом я расскажу, как iFunny работает с подобным контентом.
Читать дальше →
Всего голосов 37: ↑37 и ↓0+37
Комментарии4

Бесшовные A/B-обновления в Android: как они устроены

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

Всем привет. В SberDevices наша команда занимается разработкой различных железок и прошивок для них на базе AOSP.

Начиная с Android 8 (у некоторых вендоров с 7.1) в системе появился новый механизм накатки OTA-обновлений, т. н. Seamless A/B OTA Updates — бесшовные обновления. В этом посте я опишу общие принципы его работы, рассмотрю механизм с точки зрения разработчика, а также проведу сравнение со старым (будем его называть recovery-based) подходом применения обновлений. Всё нижесказанное будет справедливо только для чистого AOSP, т. к. конкретная реализация зависит от вендора.
Читать дальше →
Всего голосов 32: ↑30 и ↓2+28
Комментарии1

Alt: City Online. Как я в одиночку создавал «Gta Online» для мобильных устройств. Часть 1

Время на прочтение6 мин
Количество просмотров17K
Возможно ли в здравом уме замахнуться на подобный проект в одного, и надо ли оно вообще? Спойлер: да (длинный пост с картинками и видео).


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