Показаны сообщения с ярлыком Android. Показать все сообщения
Показаны сообщения с ярлыком Android. Показать все сообщения

19 марта 2023 г.

Обход режима MODE_IGNORED в app-op

Сообщение о проблеме

Подробное объяснение уязвимости CVE-2022-20551, исправленной в Android в феврале 2023 года.

Об AppOpsManager

Отслеживаем (логирование) и контроль доступа (разрешение, запрет) к критичным API системы происходит через механизм app-opов. App-opы (давайте просто app-ops во множественном числе и app-op в единственном) покрывают большой набор функциональности — от рантайм пермишенов до монитора состояния батарейки. Управление же всеми этими фичами, внутри, происходит через AppOpsManager

13 марта 2023 г.

Изменения Android 14

Это просто подбивка списка изменений с пояснениями, чтобы не скакать по статьям на официальном сайте. Хотя правильнее, конечно, читать оригинал.

Изменения, касающиеся всех приложений

Фото такого пирога с сайта рецептов

Здесь собраны изменения, которые задевают приложения, даже если их таргет ниже 14. Называется новая версия Android Upside-down cake — "перевёрнутый" пирог или "вверх ногами" или "наизнанку" — как угодно. В общем, суть в том, что после выпекания этот пирог переворачивают и то, что раньше было верхом пирога становится его дном. 

7 декабря 2022 г.

Об утечке ключей подписи Samsung и LG

Используя последние обновления,
вы в безопасности. А мы - Google, мы врать не станем


    Все уже слышали новость о компрометировании ключей подписи APK файлов некоторых производителей Android прошивок.

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

    Так что внесу чуть ясности в эту историю.

22 января 2022 г.

Android устройство для ребёнка

Веб версия Family Link

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

    Важно понимать. Здесь рассматривается подход, когда у ребёнка своё собственное устройство, он не пользуется вашим. Если для вас такой подход непригоден, вы можете создать второй профиль на собственном устройстве и этого будет, в общем-то, достаточно. Если же у вашего ребёнка реально своё собственное Android устройство и, что здесь ОЧЕНЬ важно, оно использует учётную запись Google, то можете продолжить чтение.

    Как понять, использует ли прошивка в этом устройсте учётную запись Google? Если не понимаете, о чём идёт речь, то значит использует. Всё просто.

9 июля 2021 г.

Проект не собирается гредлом

    После очередного обновления системы (pacman -Suy в данном случае) у меня перестал собираться проект из командной строки:

➜  clicker git:(master) ✗ ./gradlew assembleAndroidTest assembleDebug
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details
> Task :app:processDebugMainManifest FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Unable to make field private final java.lang.String java.io.File.path accessible: module java.base does not "opens java.io" to unnamed module @101d84f6

17 декабря 2019 г.

Приложение не устанавливается, или устанавливается, но его не видно

Здесь можно включить поддержку нескольких профилей
    Буквально на днях у меня случилась аномалия, которой изначально я не придал значения. Ставлю приложение по adb, а оно не появляется в лончере. Делаю adb shell pm list packages, а его нет в списке установленных. Хотя установка проходит успешно! А сегодня ситуация усугубилась. Устанавливал другое приложение из файлового менеджера и получал ошибку установки. Хеш apk был правильный, приложение правильное, перезагрузка не помогала.

    Но на днях я включал другие профили в системе, хотя потом их удалил. Был у меня и профиль Гостя в Андроиде. И решил проверить подозрения.

13 марта 2018 г.

Форматирование карты памяти как внутренней памяти. Возвращение Android Adoptable Storage

Получаем вот этот экран
    В Android 6, кроме прочего, появилась встроенная возможность форматировать карточки памяти как часть внутренней памяти — adoptable storage. Это отлично, это удобно. Конечно, мрази-производители убирали эту возможность, но МОЖЕТ БЫТЬ решение ниже может помогать и в случае таких производителей.

    В моём же варианте речь про Android Emulator. Дело в том, что
ещё недавно образы в эмуляторе позволяли форматировать «карты памяти» так, чтобы они становились внутренней памятью. Без этого вы не можете, к примеру, выполнить простое
adb push myDir /sdcard/

11 марта 2018 г.

Android P: Возможности и API. Ч. 1: от Wi-Fi RTT до ImageDecoder

Подсвечивание новых API

    Эта статья является переводом вот этой: https://developer.android.com/preview/features.html Как и всегда раньше, я рекомендую читать оригинал. Т.к. в оригинале 100% будут изменения текста, я буду обновлять и свою статью. Так что разумнее всего читать её после релиза. И эту, и оригинал — смотря что вам удобнее.
    Кроме того, здесь лишь половина от оригинала. Вторая часть находится под заголовком «ч. 2». Так и читать попроще, и корректировать точнее.

    В Android P вводится несколько отличных фишек для пользователей и разработчиков. Этот документ кратко описывает, что нового появилось именно у разработчиков.

    Для изучения новых API, прочтите отчёт по API diff или посетите страницу со списком всех Android API — на ней новые API подсвечены, чтобы их было проще увидеть.
    Также ознакомьтесь со страницей «Изменение поведений Android P» (TODO: когда переведу и эту страницу, ссылку заменю), чтобы прикинуть, в каких местах могли быть задеты ваши приложения.

3 февраля 2018 г.

Проблема запуска Android emulator из командной строки

Хочется, но не удаётся
    Если вы попытались запустить эмулятор Android из командной строки и словили ошибку
ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib
для GNU/Linux или
emulator/qemu/windows-x86_64/qemu-system-i386.exe': No such file or directory
для Windows, то вам сюда.

10 октября 2017 г.

Изменения в поведениях Android 8.0. Часть 2: Приложения с target Android 8.0 (API level 26)

    Перевод второй половины статьи https://developer.android.com/about/versions/oreo/android-8.0-changes.html. Свои комментарии я пометил курсивом. Как и ранее, я рекомендую читать оригинал.
Перевод первой части статьи: https://myachinqa.blogspot.ru/2017/09/android-80-1-target-api-level.html
 
    Эти изменения поведений затрагивают исключительно те приложения, у которых в targetSdkVersion указано Android 8.0 (API level 26) и выше. То есть если вы собираете приложение с таким параметром, вам нужно удостовериться, что оно поддерживает все эти изменения.

3 сентября 2017 г.

Изменения в поведениях Android 8.0. Часть 1: Приложения с любым target API level

   Перевод первой половины статьи об изменениях в Android 8.0. Как обычно, я рекомендую вам читать оригинал: https://developer.android.com/about/versions/oreo/android-8.0-changes.html Свои комментарии я пометил курсивом.
    Android 8.0 (API level 26), кроме новых возможностей и разных плюшек, некоторые привычные поведения системы и API. В этой статье описываются некоторые ключевые изменения, которые вам необходимо понимать и учитывать при разработке приложений.
   И хотя большинство этих изменений затрагивают все приложения и не важно, какая версия Android указана как target, есть и такие, которые повлияют лишь на те приложения, которые объявили в манифесте о готовности к Android 8.0. Для упрощения чтения, статья была разделена на две: приложения с любым target API level и приложения с target на Android 8.0.
   

21 мая 2017 г.

Представляем Treble: модульную основу для Android

    Статья является переводом вот этой запси в блоге для разработчиков под Android: https://android-developers.googleblog.com/2017/05/here-comes-treble-modular-base-for.html Как и всегда прежде, я рекомендую вам читать оригинал, если ваш уровень владения английским языком выше моего (наверняка это так).
    Сама запись важна хотя бы тем, что я пока не встречал упоминания об этом проекте нигде в Твиттере, Фейсбуке и Гугл Плюс. Единственный человек, который упоминал о нём — мой коллега, сидящий у меня за спиной. А между тем, это очень интересная фича. Впрочем, как и всегда, производители устройств её наверняка проигнорируют. Спойлер: Sony — молодцы.

    Мы, в Android team, считаем, что каждый сладкий (прим. перев.: буквально «сладкий», «десертный», если хотите; думаю, вы понимате, почему так) релиз — это причина сделать Android лучше для наших пользователей и партнёров по экосистеме. И каждый рах мы слышим от партнёров, создающих устройства, что обновление существующих устройств на новую версию Android чрезвычайно трудозатратно и дорого.
    При разработке Android O, мы очень тесно работали с изготовителями устройств и чипсетов, делали шаги к решению проблемы и теперь, с волнением, представляем вам Project Treble — самое большое низкоуровневое изменение в архитектуре Android на сегодня.

13 апреля 2017 г.

Изменения в работе с идентификаторами устройства в Android O

    Перевод записи https://android-developers.googleblog.com/2017/04/changes-to-device-identifiers-in.html

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


Изменения в работе с идентификаторами устройства в Android O

Posted by Giles Hogben, Privacy Engineer

    В Android O появляются некоторые улучшения, дабы помочь пользователю управлять доступом к своим идентификаторам. Эти улучшения включают:
  • Ограничение на использование постоянных (не сбрасываемых) устройство-зависимых идентификаторов
  • Обновление системой Wi-Fi стека, связанного с изменениями прошивки Wi-Fi чипсета на устройствах типа Pixel, Pixel XL и Nexus 5x для рандомизации MAC адресов во время сканирований сетей
  • Обновление в механизме, которым приложения запрашивали информацию об учётной записи и предоставление большего контроля над данными пользователя

16 июля 2016 г.

Что делать, если не нажимается кнопка «Разрешить» в Android

Запрос разрешения, без которого антивирус будет слепым и беззубым
    Если у вас на устройстве установлен Android 6, то вы уже много раз нажимали кнопку «Разрешить» / „Allow“. А некоторые из вас в июне 2016 года столкнулись с проблемой, что кнопка разрешения не реагирует на тапы, а запрет работает нормально. Этой достаточно короткой записью я попробую указать на причины проблемы и рассказать решение. Если вам нужно только решение и вы пришли сюда по запросу из поисковой системы, то вот оно: «Удалите приложения, использующие оверлей и написанные не руками, а жопой. Чаще всего жизнь портит вот этот файловый менеджер: https://play.google.com/store/apps/details?id=com.rhmsoft.fm»

    Если вам интересна причина этого поведения, то добро пожаловать в статью.

26 мая 2016 г.

Негативные сценарии тестирования

    Ииииииии... Это последняя запись из цикла! Она самая короткая, самая простая и практически целиком состоит из реальных историй. По возможности — глупо-смешных. Даже есть видео, снятое специально для записи вот прямо в момент написания. Свежачок-с. К сожалению, я не догадался снять скриншот с сообщением о падении Youtube клиента, он бы подошёл. Упал прямо при заливке того ролика, который вставлен в статью. Ладно, пусть будет мой экран блокировки.

    На старте тестирования, вне зависимости от того, новый это проект или такой, что его стоило бы уже похоронить, в целом всегда ясно, с чего начинать. Если, конечно, к момент старта тестирования ни одно из звеньев цепи не слажало. Обычно тестировщики вычитывают требования и прочие документы с нерусскими названиями, типа «БиЭрКью», «ЭсАрки» и «Юзер стори» и прикидывают, как написать тест кейс, чтобы он проверил выполенения всех этих документов. Это всё понятно, на поверхности и нет смысла на этом задерживаться. Но есть ещё поведение самого Android, о котором иногда не знают не то что аналитики, но даже архитекторы и некоторые разработчики. А помня, что с AOSP никто не работает, только с кастомами, таких особенностей всплывает довольно много. И я говорю не о стрессовых сценариях, когда памяти нет или батарейку внезапно вынули (как-то встречал негодование человека на терминал GNU/Linux, что тот не показывает пароль при вводе, а у него глючная клавиатура и он не понимает, вводит пароль или же это клавиатура снова не работает), а о штатном поведении кастомизации Android и даже поведении, заложенном в AOSP. То есть штатные поведения системы, которые могут отрицательно сказаться на тестируемом продукте. Так называемые, негативные сценарии.

9 мая 2016 г.

Android SDK. Тестируем по-настоящему!

    Эта запись — предпоследняя из всего цикла. Пожалуй, она самая скучная, однако она ближе всего к тому, что называется тестированием. И, мне кажется, она ещё и самая длинная. Я попытался разбавить всю эту скукоту наглядными примерами, скриншотами. Книги с картинками читают охотнее? По крайней мере популярные «блоггеры» (а я — популярный, у меня есть минимум 8 читателей, скоро продамся кому-нибудь и работать перестану!) часто ставят всякие картинки, возможно это и работает.
    Как бы то ни было, здесь можно получить минимальное понимание того, что есть в Android SDK и что из этого нужно тестировщику. А главное — зачем. Ещё тут есть море грамматических ошибок, наверное, так как писать большую часть текста приходилось ночью, а я по ночам люблю спать и после 22 часов, как правило, уже сплю.

    Уверен, вам было интересно узнать, во сколько я засыпаю. Читайте дальше, там ещё интереснее!

 Android SDK

    Мы подбираемся всё ближе и ближе к инструментам и методам тестирования. Инструменты для тестирования, а также всякий вспомогательный инструментарий, входит в состави Android SDK. Самые нужные компоненты из состава SDK, конкретно для тестировщиков, это инструменты SDK, они же SDK tools, инструменты сборки, они же Build tools (внезапно, да?) и инструменты платформы, они же Platform tools. Нет никакого смысла запоминать это. Я просто сказал названия папок из установленного пакета Android SDK:
Рис. 1. Содержание папки Android SDK
    В этих папках лежит много чего, но я расскажу про минимальный полезный набор.

14 апреля 2016 г.

Исследовательское тестирование как метод изучения Android

Картинка без смысла
    Вторая часть лекции рассматривает реальные проблемы на реальных устройствах. Все рассмотренные проблемы вызваны архитектурой системы, Если точнее, изменениями, которые вносят некоторые производители в архитектуру, а приложения ничего с этим сделать не могут, потому что не имеют возможности влиять на работу системы. Использовать буду только реальные ситуации и, по возможности, буду давать ссылки в баг-трекер Google, чтобы каждый мог убедиться, что это всё не выдумки.

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

    Сразу нужно уяснить, что более-менее одинаковые реализации Android есть лишь у горстки производителей. И ситуация, когда на одной и той же модели устройства, но выпущенные в разных странах или даже в одной стране, но от разных операторов, используются разные прошивки — это жестокая реальность! Прошивка — это не ОС Android, а всё, под чем работает устройство. Начиная от загрузчика, заканчивая доступными в Android на этом устройстве языками и предустановленными приложениями с их настройками. ОС Android — это лишь часть прошивки.

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

11 апреля 2016 г.

Android не запрашивет пароль в процессе загрузки устройства

До Android N Accessibility недоступен в процессе загрузки ОС

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

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

6 апреля 2016 г.

Основы понимания приложений

    Этой записью я открою короткий цикл длинных и скучных (не просто так же имя блогу дано!) статей о тестировании приложений под Android. Здесь теория, теория, теория, вперемешку с историями «из жизни», которые, конечно, наиболее ценны (для меня).
    Все статьи буду идти от очень общего к частностям. Это поможет сначала разобраться с тем, как всё работает, как устроено, как называется, а затем — жонглировать этими теоретическими знаниями. Например в этой, открывающей статье, я сначала расскажу вскользь о компонентах приложений, затем расскажу о них подробно, а затем — добавлю понимания, где можно найти эти компоненты. Так будет построена каждая последующая статья, но, кроме того, каждая последующая будет сильно завязана на каждую предыдущую. Так что если уж решили подтянуть уровень понимания Android и исследовательского тестирования приложений под Android, стоит читать всё.
    К чёрту, приступим!

    Программный код пишется, в основном, на Java. То есть вы можете писать на чём угодно, хоть на той же Scala, да хоть на Python. Но тут есть свои подводные камни, очевидные и не очевидные. Можно писать и на C и нативный код будет работать также быстро, как и Java (слова «быстро» и «Java» в одном предложении и даже нет слова «память», спешите видеть!), возможно даже быстрее, но это дороже в скорости разработки и затратах на сопровождение.
Итак, код пишется на Java. Далее Android SDK (Software Development Kit — набор средств для разработки) собирает код и все требуемые файлы ресурсов в файл APK (Android Application Package) — программный пакет Android, который суть — zip файл с расширением .apk. То, что это zip, легко убедиться, посмотрев на заголовок, где мы увидим буквы PK:
    Ну или «РК» — РосКом и многозначительное многоточие… Кстати, а кто помнит, какие буквы находятся в заголовках exe и dll файлов и что они означают? Это буквы MZ — инициалы Марка Зибовски, бывшего архитектора компании Microsoft, который был одним из создателей MS DOS. Он и разработал этот формат исполняемых файлов, который заменил собой устаревший .com. Пятиминутка бесполезных знаний!

15 марта 2016 г.

Trusty TEE (Безопасная среда выполнения Trusty)

    Вся статья является переводом вот этой: https://source.android.com/security/trusty/index.html. Как обычно, я предлагаю читать оригинал, так как в своём переводе я могу допустить ошибки. Этот записью планирую начать небольшой набор статей о том, как обеспечивается безопасность в Android, когда все разработки ещё не сломаны конечными производителями аппаратов. И первая статья — о TEE. Потому что даже про FDE нельзя рассказать, пока не усвоится вот это базовое знание.
    По возможности я вставлял поясняющие комментарии и ссылки на Википедию. Также старался избегать перевода терминов, если этот перевод уже не общепринят в русском языке. Потому по всему тексту будет TEE, а не БСВ.

Trusty TEE

    Trusty — это набор программных компонентов, поддерживающих на мобильном устройстве безопасную среду выполнения или, в оригинальной терминологии, — Trusted Execution Environment (TEE).

    Trusty состоит из:
  • Операционной системы (Trusty ОС), работающей на процессоре, поддерживающем TEE
  • Драйверов для ядра Android (Linux), обеспечивающих взаимодействие с приложениями, работающими под Trusty OS
  • Набора библиотек для системного ПО Android, обеспечивающих взаимодействие с доверенными приложениями, выполняемыми внутри Trusty OS, использующего драйверы ядра
Важно: В Trusty и Trusty API вносятся изменения.
Чтобы больше узнать о Trusty API, смотрите описание API. Примечание. Перевод описания возможно и будет, если в нём будут важные куски для понимания всего происходящего.