Обновить
128K+

Android *

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

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

Я не умею программировать и рисовать, но сделал гео-игру про славянских духов. Как ИИ построил Mifozov за неделю

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели3.1K

Несколько лет я играл в Pokémon GO. Дело было не столько в покемонах, сколько в прогулках: выходишь вечером «на пять минут», а возвращаешься через два часа, пройдя десять километров. Во дворах собирались люди, ходили на рейды, знакомились, обсуждали, где что появилось.

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

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

Читать далее

Новости

i2pd 3.0: Первый мажорный релиз за 11 лет

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.6K

Прошлый мажорный релиз i2pd с номером 2.1 состоялся в далёком 2015 году. Развитие i2pd дошло до релиза 2.61. Спустя почти 11 лет вдруг вышла 3.0. Развитие i2pd активно продолжалось всё это время, но чем примечателен последний релиз?

Заходите и узнатете про фиксы критических уязвимостей, новый клиент под Android и что-то новое про торренты в I2P.

Давайте разбираться

ChaosBank — 131 переключаемый баг для тренировки мобильного тестирования

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели4.8K

Я экспериментирую с подходами к автоматизации UI-тестов мобильных приложений: XCUITest, Espresso/Compose, Appium, Maestro. Быстро выяснилось, что гонять всё это не на чем: опенсорсные демо-приложения либо только под Android, либо слишком простые, и реальных багов в них почти нет.

Поэтому я сделал ChaosBank — два зеркальных финтех-приложения, под iOS и Android, где баги — это фича: 131 дефект, от убытка, показанного как прибыль, до двойного списания при быстром тапе. Каждый включается и выключается конфигурацией. Рассказываю, как это устроено и как это можно использовать для тренировки, сравнения фреймворков и тестовых заданий.

Читать далее

API быстрее UI — не закон: замеры на 400+ Android UI-тестах

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели4.2K

Почти каждый наш UI-тест начинался одинаково: старт, email, OTP, пароль, создать пасскод, повторить пасскод. Шесть экранов, около 26 секунд, и ни один из этих тестов не проверял логин. Он был просто предусловием.

Совет «делай предусловия через API, а не через UI» знает каждый, кто писал автотесты. Мы проверили его на трёх кандидатах в Android-сьюте на реальных устройствах. В одном месте API-вариант оказался на 29% медленнее UI. В двух других вышло заметно быстрее: логин ускорился с ~26 до ~7 секунд, а суммарное время 400+ тестов сократилось на 27%.

Дальше расскажу, почему так получилось, как устроен программный логин внутри процесса приложения, как мы мерили (и где ошиблись в замере сами) и по какому правилу теперь решаем, что переводить с UI.

Читать далее

Suspend на пальцах. Ещё одна статья про корутины, ч.0

Уровень сложностиСредний
Время на прочтение29 мин
Охват и читатели5.8K

Всем привет! Я Дима, Android-разработчик в KTS, и я большой фанат языка Kotlin и библиотеки kotlinx.coroutines.

Здоровый человек может задать справедливый вопрос: зачем нужна очередная статья про корутины, когда есть ИИ? Любая модель моментально расскажет, как написать код с корутинами: где поставить suspend, что передать в launch, какой диспатчер выбрать.

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

У меня на это ушло много времени. Я писал рабочий код с корутинами, он работал, и всё это время я не до конца понимал, что происходит под капотом. Понимание пришло, когда я наконец сел и разобрал одну-единственную функцию: suspendCoroutine.

Так что я решил написать цикл статей про корутины, чтобы читателям Хабра было проще прийти к этому пониманию, чем мне. Думаю, он будет полезен и Android-разработчикам, и бэкендерам-котлинистам, и iOS-ерам, причём как начинающим, так и матерым сеньорам.

Читать далее

DroidScript. Впечатления от года работы

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели4K

Хотим поделиться с вами своим небольшим опытом работы с IDE DroidScript, средой разработки под Android, которая была обнаружена на просторах Google Play, как инструмент, с которым можно работать непосредственно на смартфоне, т.к. в первую очередь, появилась необходимость программировать в дороге или просто не дома, например, в электричке или на улице. Ноутбук носить с собой не всегда хочется и "можется" - всё-таки лишняя тяжесть, да и время, пока достанешь и запустишь его, а тем более, прогрузится, например, Android Studio - среда, с которой мы работали ранее, тоже пройдёт не маленькое.

Читать далее

Сделал приложение с ИИ за $40 в месяц. Самым сложным оказался не код

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели4.1K

В марте я записывал тренировки в Notion и скидывал скриншоты ChatGPT, чтобы он подсказал, что поменять в программе. Через полгода у меня было своё приложение в Google Play, сделанное с ChatGPT и Claude. Сделать его оказалось проще, чем я думал. Сложнее оказалось другое.

Читать далее

Публикуем .NET MAUI‑приложение в RuStore: от унаследованного Xamarin‑проекта до первого релиза

Уровень сложностиСредний
Время на прочтение32 мин
Охват и читатели4.9K

Миграция с Xamarin.Forms на.NET MAUI, десятки тысяч строк чужого кода, несколько неудачных попыток переписывания и первая публикация приложения в RuStore. Расскажу, как проходил этот путь, с какими трудностями столкнулась и что стоит учесть при подготовке Android‑приложения к публикации. А в конце — о том, что ждёт впереди: переход на новую версию на iPad.

Читать про миграцию и RuStore

Реверс‑инжиниринг и криптография: заставляем десктопные USB‑токены работать на Android

Уровень сложностиСложный
Время на прочтение13 мин
Охват и читатели4.5K

Адаптируем десктопные USB‑токены для работы на мобильных устройствах. Даже если производитель не закладывал поддержку мобильных устройств, это исправимо.

Читать далее

Анатомия уязвимости HTC Sense: Как обойти FRP на HTC U11 Plus без ПК, если забыт графический ключ

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.4K

Добрый день, хабровчане!

Недавно столкнулась со стандартной, но от этого не менее неприятной проблемой: на старом Android-смартфоне был намертво забыт графический ключ. Время откирпичиваться.

При попытке оживить HTC U11 Plus (Android 8/9) после жесткого сброса (Hard Reset) я ожидаемо уперлась в систему безопасности Factory Reset Protection (FRP), которая блокирует все стандартные пути обхода.

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

Читать далее

DMR-клиент на Motorola LEX F10: что сломалось, когда мы опустили minSdk до 22

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели3.6K

DMRConnect — наше Android-приложение для цифровой радиосвязи DMR. Оно подключается к BrandMeister и к любительским серверам по протоколу Homebrew (MMDVM), кодирует голос в AMBE+2 и превращает телефон или POC-рацию в абонента сети. До версии 2.2.0 приложение требовало Android 7.0, то есть minSdk 24, и нас это устраивало: телефонов старше почти не попадалось.

В октябре написал Алекс. У него Motorola LEX F10 — LTE-рация с сенсорным экраном 2017 года, в Россию её официально не возили. Внутри Android 5.1.1 с патчем безопасности от мая 2017-го, и обновлений уже не будет. Просьба была одна: поставить DMRConnect.

Читать далее

Как легко открыть запущенный локально сервис на телефоне и почему меня это выбесило

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели5.7K

Привет хабровчане! Обычно только читаю, а тут решил поделиться своей небольшой историей, может даже кому‑то будет полезной.

Немного о себе - Senior Java Developer, работаю на удаленке и постоянно мигрирую между деревней и городом (эта часть будет важна позже). В свободное время под настроение бывает пишу простенькие программки или игры в надежде что что‑то из этого однажды выстрелит и я проснусь богатым человеком, которому больше не придется никогда работать.

Теперь к сути - на работе дали мне проект по переписи китайского реакт монолита на наш спринговый с thymeleaf. Таймлиф выб выбран для простоты, и оттого что в проекте только одна страница (а нам не нужен отдельный микросервис фронта на одну страницу). Вот только эта единственная страница должна распознавать руку и работать не только с пк, но и с телефонов.

На пк то всё понятно, для проверки достаточно перейти на localhost:8080 и проверяй что хочешь. Но вот для телефона не всё так просто. Вернее просто, но муторно.

Покажу пошагово как это делаю я на примере одного из своих пет проектов.

1) Сперва..

Читать далее

Перехватываем запросы из Flutter приложения или как мы настраиваем Charles Proxy для тестировщиков

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.3K

Hola, Amigos! На связи Павел Гершевич, Mobile Team Lead в Amiga, а также соавтор книги Основы Flutter. В данной статье рассмотрим, как помочь тестировщикам в поиске багов, связанных с запросами на сервер.

Для этого используется специальное ПО, например, Charles. Это прокси, который умеет перехватывать трафик, подменять ответы и т. д. Только вот незадача - запросы из Flutter он перехватывать не умеет.

Читать далее

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

Телефон сказал «Нет связи». Сервер в это время читал этикетку

Время на прочтение1 мин
Охват и читатели8.4K

Телефон уверял пользователя, что интернета нет. Интернет был, зато OCR на сервере читал мелкий состав дольше, чем приложение соглашалось ждать. Рассказываю, как мы нашли таймаут и исправили его без нового сервера.

Читать далее

Вылечил лагающий телевизор Xiaomi за 10 минут: реклама, слежка и YouTube — без root и с откатом

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели20K

Мой Xiaomi на Android 9 лагал так, что меню открывалось через пару секунд (а то и минут), а в фоне крутились аналитика, промо-окна и рекламные ряды. За 10 минут по Wi-Fi, без root и с откатом отключил 19 пакетов, поставил YouTube без рекламы — и телевизор ожил.

Рассказываю, что на самом деле живёт внутри «умного» ТВ, какие пакеты отключать нельзя ни в коем случае (некоторые дают чёрный экран или удаляют Wi-Fi) и как это сделать на Яндекс ТВ, Салют ТВ, Xiaomi, TCL и Google TV. Внутри — открытая утилита ЧистыйТВ, запуск одной строкой.

Читать далее

PyLab: учим Python и пишем код прямо на смартфоне

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели9.7K

Программирование на телефоне: бесполезная затея или нормальный инструмент? Я сделал PyLab, чтобы писать и запускать Python прямо на смартфоне, а потом добавил туда курсы для новичков. В статье показываю, что из этого вышло.

Читать далее

Анти‑антивирус: установка двух приложений по цене одного

Время на прочтение6 мин
Охват и читатели7.1K

Недавно нам на глаза попался APK-файл с интригующим и внушающим доверие названием «Антивирус ФСБ.apk».

Установив его, мы обнаружили, что при запуске пользователя встречает интерфейс известной программы для управления звонками на Android — Right Dialer от разработчика Goodwy.

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

Читать далее

«Алиса, включи буквально любой фильм»: как я научил колонку запускать кино и сериалы на проекторе без пультов и подписок

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели6.4K

У меня китайский проектор на Android TV. Картинку он выдает отличную, но пульт к нему самый обычный: без микрофона. Каждый раз вбивать стрелочками по буквам в экранную клавиатуру название фильма меня достало где‑то на второй день. Вправо, вправо, вниз, буква «О», влево, «К»... Опечатался: стирай половину слова и набирай заново.

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

В той же комнате стоит Яндекс Станция, а рядом пристроился тихий мини‑ПК. На нем у меня уже крутился проверенный набор: Prowlarr для поиска по трекерам и TorrServer для стриминга торрентов прямо в память.

Появилась логичная мысль: все нужные железки уже есть под рукой, почему бы не связать их вместе? Чтобы можно было просто плюхнуться на диван и сказать вслух: «Алиса, включи Рика и Морти от Сыендука», после чего кино сразу начнется на экране.

Казалось бы, делов на вечер: поймать вебхук от Алисы, найти раздачу, скормить в TorrServer и открыть плеер на проекторе. Но на практике вылезла пачка интересных нюансов, о которых и хочу рассказать.

Код проекта я выложил на GitHub, ссылка в конце статьи.

Читать далее

«Пишем симулятор черной дыры на RFO BASIC: как визуализировать ОТО без сложных формул»

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели5K

Простая программа симулятор отлично демонстрирует ключевые эффекты Общей теории относительности на графическом экране в двумерной системе координат. Приводится листинг программы и скриншот работы.

Читать далее

Его мы делаем все вместе

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.5K

Привет, Хабр!

С первой статьи про Гига Писаря прошло чуть больше месяца, пора подвести итоги.

За это время мне пришла масса сообщений: в комментариях, на почту, в issues на GitHub. Особенно приятно, что люди прямо включились. Кто-то присылал пулреквесты, кто-то свои идеи, очень многие находили баги, и мы всё это правили. Получается, что Писаря мы делаем все вместе, коллективно. И я вам за это очень благодарен. Это не только приятно: один я бы никогда столько не предусмотрел, у каждого свой компьютер, свой микрофон, свои программы, и сломаться может где угодно.

Немного цифр: - порядка 40 человек написали в issues или прислали пулреквест, 20 ваших пулреквестов вошли в Писаря; - у маковской версии сейчас 103 звезды на GitHub, в сентябре было 47; версию для Windows скачали около 3 тысяч раз, примерно столько же Android и примерно 1000 писарей стоит на маках.

Читать далее
1
23 ...