Mcregistry android что это

Как работает SystemUI в Android

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

В системе Android, SystemUI — это приложение, путь к исходному коду которого находится в platform_frameworks_base/packages/SystemUI/, на девайсе оно находится в system/priv-app/-SystemUI.

priv-app — это каталог, где хранятся привилегированные приложения. К слову, по пути system/app лежат предустановленные приложения, а обычные приложения, которые мы устанавливаем на свой девайс самостоятельно, хранятся в data/app.

Тут сразу возникает вопрос: почему нельзя засунуть все предустановленные и привилегированные приложения в один каталог, зачем нужно это разделение?

Дело в том, что некоторые приложения более системные, чем другие:) И это разделение необходимо для того чтобы уменьшить покрытие эксплойтами системных приложений, для получения доступа к защищенным операциям. Можно создавать приложение, которое будет иметь специальный ApplicationInfo.FLAG_SYSTEM и в системе получит больше прав, однако apk файл с таким разрешением будет помещен в раздел system.

Итак, SystemUI — это apk-файл, который по сути своей обычное приложение. Однако, если посмотреть на сложное устройство SystemUI, перестает казаться, что это всего лишь простое приложение, верно?

Данное приложение выполняет весьма важные функции:

Запуск SystemUI

Как я и говорила выше, SystemUI не похож на обычное приложение, так что его запуск не сопровождается запуском активности, как это происходит у большинства приложений. SystemUI — это глобальный пользовательский интерфейс, который запускается во время процесса загрузки системы и не может быть завершен.

Если мы залезем в SystemServer, который является одним из двух столпов в мире Android (второй — Zygote, но об этом я расскажу как-нибудь в другой раз), то мы можешь найти место, где стартует SystemUI при загрузке системы.

Тут мы видим как запускается сервис SystemUI с помощью непубличного API startServiceAsUser. Если бы вы захотели использовать это, то вам пришлось бы обратиться к рефлексии. Но если вы решите использовать reflection API в Android — подумайте несколько раз, стоит ли это того. Подумайте раз сто:)

Итак, тут создается отдельный процесс для приложения и по факту каждый раздел SystemUI является отдельным сервисом или независимым модулем.

Метод start() вызывается для запуска каждой службы, которые перечислены ниже.

Регулирование громкости

Мы регулярно пользуемся кнопками громкости на своих устройствах, но не задумываемся какие процессы должны произойти в системе для того чтобы мы могли прибавить или убавить звук. Операция кажется довольно простой на словах, но если заглянуть в VolumeUI, который находится в подпапке SystenUI/volume, в разных режимах интерфейс имеет свою вариацию.


Я уже говорила о том, что сервисы SystemUI запускаются методом start(). Если мы посмотрим на класс VolumeUI, то он тоже наследуется от SystemUI.

Тут мы видим что с помощью mEnabled мы определяем, следует ли нам показывать панель с настройкой звука. И судя по VolumeDialogComponent, VolumeUI отображает звуковую панель в виде диалога. Но все действия относительно нажатия на клавиши громкости обрабатываются в PhoneWindow.

Насколько мы видим, KEYCODE_VOLUME_UP (+) не обрабатывается и перейдет в обработку KEYCODE_VOLUME_DOWN (-). И в обоих событиях, как в onKeyDown, так и в onKeyUp вызывается метод dispatchVolumeButtonEventAsSystemService.

Итак, тут у нас вызывается метод adjustVolume, для того чтобы мы могли проверить наш direction, которому будет присвоен параметр события.

В итоге когда мы доберемся до AudioService, где будет вызван sendVolumeUpdate, где помимо вызова метода postVolumeChanged, будет установлен интерфейс HDMI.

RingtonePlayer

RingtonePlayer в Android выполняет роль проигрывателя. Он так же наследуется от SystemUI и в методе start() мы видим:

Здесь у нас устанавливается mCallback, который по сути является экземпляром IRingtonePlayer.

В итоге можно управлять RingtonePlayerService с помощью Binder для воспроизведения звуковых файлов.

PowerUI

PowerUI отвечает за управление питанием и уведомлениями. Аналогично наследуется от SystemUI и имеет метод start().

Как мы видим из приведенного выше кода, происодит подписка на изменения Settings.Global.LOW_POWER_MODE_TRIGGER_LEVEL, а после — вызов mReceiver.init().

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

Задачи

Recents — это основная и часто используемая функция в мобильных устройствах на базе Android.

Главные функции:

  • Отображение всех задач
  • Переключение между задачами
  • Удаление задач

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

Читайте также:  Fran bow all chapters android


А в с помощью RecentTaskInfo мы можем получить информацию о конкретной задаче.

Вообще, запущенные задачи можно вынести в отдельную тему. Я изучила ее со всех сторон, так как хотела размывать экран приложения перед переходом приложения в background, чтобы в RecentsTask отображалась нечитаемая версия снапшота. Однако, проблема заключается в том, что снапшот приложения берется раньше, чем вызывается onPause(). Эту проблему можно решить несколькими способами. Либо выставлять флаг, чтобы система просто скрывала содержимое экрана с помощью

О чем я говорила в предыдущей статье, посвященной как раз снапшотам.

Можно вообще сделать так, чтобы конкретная activity приложения не отображалось в задачах, проставив в манифесте

Либо можно воспользоваться хитростью с помощью

Можно задать основной активности выше приведенный флаг excludeFromRecents = true, для того чтобы ее экран отсутствовал в запущенных задачах, но во время загрузки приложения запустить отдельную задачу, которая будет показывать либо размытый скриншот с основной активности, либо любое другое изображение. Более подробно, как это можно сделать описано в официальной документации на примере Google Drive.

Экран блокировки

Keyguard уже посложнее всех вышеприведенных модулей. Он представляет из себя сервис, который запускается в SystemUI, а управляется при помощи KeyguardViewMediator.

Однако на самом деле KeyguardService самостоятельно не работает с интерфейсом экрана блокировки, он лишь передает информацию в модуль StatusBar, где уже и производятся действия относительно визуального вида экрана и отображения информации.

Панель уведомлений

SystemBars имеет довольно сложное устройство и структуру. Его работа разделяется на два этапа:

  1. Инициализация SystemBars
  2. Отображение уведомлений

Если посмотреть на запуск SystemBars

То мы видим ссылку на ресурс из которого читается имя класса и создается его экземпляр.

Таким образом мы видим что тут вызывается StatusBar, который будет работать с выводом уведомлений и UI.

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

Источник

Mcregistry android что это

Copy raw contents

Copy raw contents

Проблема в 32-bit’ной audio.primary.mt6755.so . ее либо надо собрать из исходников, либо просто удалить (но тогда не будет звука )))

Как вариант можно сделать stub для этих функций:

Но это чревато отсутствием записи с микрофона и еще некоторыми

** p.s.** Корень проблемы кроется в etc/audio_param и файлах audio* в etc, в частности:

  • audio_device.xml
  • audio_em.xml
  • audio_policy.conf

На MT6735 таких файлов не было (!) . а вот на MT6755 уже появились . и они являются неотъемлемой частью подсистемы Audio.

Проблема с Zygote

На CM13 столкнулся с падением Zygote . Zygote BOOT FAILURE making display ready и что-то там про null exception. Вообщем проблема не стоила выеденного яйца, чуть выше в логе было:

Все оказалось из-за того что присутствует файл /etc/permissions/android.hardware.consumerir.xml , а IR HW Module’я нет. Достаточно было удалить android.hardware.consumerir.xml , пока не решились проблемы с модулем и прошивка загрузилась.

Да, кстати, добавленный android.hardware.consumerir.xml без модуля может повесить загрузку всей системы в целом, даже без каких либо ошибок в logcat’е (!). Поэтому если у вас что-то не загружается удалите лишние разрешения из /etc/permissions на всякий случай.

  • lib_fpc_tac_shared.so
  • libgf_algo.so
  • libgf_ca.so
  • libgf_hal.so
  • libgoodixfingerprintd_binder.so
  • goodixfingerprintd (/system/bin)
  • libMcClient.so
  • libMcRegistry.so
  • libMcGatekeeper.so

Кстати, еще одна особенность, если по каким-то причинам бинарник от Goodix не может запустится, например так:

То в logcat’е этого к сожалению не видно, т.е. вместо того что сервис пытается запускаться, мы видим:

Поэтому его нужно как минимум объявить в domain.te .

ro.boot.fpsensor: gdx persist.sys.fp.goodix

libhardware? persist.sys.fp_vendor совместимость .

libhardware.so -> hardware/libhardware/hardware.c -> hw_get_module_by_class — модифицированная процедура.

libhardware.so

Вроде удалось завести сканер, но, приложение settings падает (точно такая же ситуация по ссылке выше):

Вообщем вот так у нас:

А вот так на стоке:

make -j9 fingerprint.mt6755 make -j9 libgf_hal make -j9 libgf_algo make -j9 goodixfingerprintd make -j9 libgoodixfingerprintd_binder

**Продолжаем раскопки . **Если в стоковой прошивке удалить AmigoSettings и даже все приложения от Amigo в /system/app, то датчик работает (!), если удалить GFManager, то датчик также работает. Если заменить в стоке fingerprint.mt6755.so на finerprint.goodix.so — то все также работает. Т.е. фактически нам нужен только finerprint.goodix.so, переименованный как mt6755, для того чтобы Android его загружал при старте.

Окончательное решение проблемы с Fingerprint’ом состоит в следующем:

Как мы выяснили ранее, для работы сканера отпечатков от Goodix необходимы, как минимум fingerprint.goodix.so (на самом деле fingerprint.mt6755.so) в /lib<,64>/hw, либы libgf_algo.so, libgf_ca.so, libgf_hal.so и бинарник goodixfingerprintd и либа libgoodixfingerprintd_binder.so от него. Плюс все что касается mobicore, т.е. у вас должно работать mobicore’овское шифрование и т.п. Без него сканер вряд-ли заработает.

Читайте также:  Как обновить андроид без компьютера если обновления не показываются

Для того чтобы сканирование отпечатка не падало в Settings нужен symlink — gatekeeper.mt6755.so -> libMcGatekeeper.so, он есть в system.img в оригинальной прошивке. Также, т.к. HAL’ом fingerprint’а является BLOB fingerprint.goodix.so, делаем symlink — fingerprint.mt6755.so -> fingerprint.goodix.so . fingerprint.mt6755.so, который есть на стоке для FPC, а не для Goodix и здесь не используется. Более того Gionee внесли изменения в libhardware, чтобы определять какой датчик используется и загружать соответствующий модуль. Поэтому на стоковой прошивке при наличии установленного флага persist.sys.fp_vendor = goodix (сам флаг устанавливается в goodixfingerprintd) libhardware подгружал модуль fingerprint.goodix.so. Т.к. наш libhardware полностью стоковый, а другого сканера у нас все равно нет, то гораздо проще сделать symlink в system.img для fingerprint.mt6755.so -> fingerprint.goodix.so.

Без соответствующих разрешающих sepolicy для mobicore_data_file в installd.te и kernel.te правила для создания необходимых папок в init’ах, в частности вот эти:

Не срабатывали, в результате при загрузке системы папка mcRegistry и mcRegistry/TbStorage в /data/app просто отсутствовали и отсканированные отпечатки при всем желании не могли сохраниться в базу. Т.к. необходимого пути /data/app/mcRegistry физически не существовало.

  • Также необходим патч PackageManager о котором рассказано ниже, чтобы при загрузке ОС он не удалял папку /data/app/mcRegistry
  • Еще раз обращаю ваше внимание что libMcGatekeeper.so, который в нашем телефоне находится в hw, это не что иное как gatekeeper.mt6755.so, без него Settings (настройки) после сканирования отпечатка будет падать. Возможно в других девайсах есть gatekeeper.mt6755.so, но здесь мы создаем его именно symlink’ом в разделе system. Причем на этапе подготовки system.img, симлинками в init’е, т.е. в init.rc и т.п. его создать нельзя, т.к. раздел system монтируется только для чтения.

Плюс еще одна странность . в момент инициализации прошивки папка /data/app/mcRegistry/ есть, но уже после ее инициализации, когда появился экран первоначальной настройки она почему-то отсутствует. Видимо что-то ее удаляет:

Это идет здесь frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java :

Соответствующий патч есть в дереве — 0013-PackageManager-don-t-delete-data-app-mcRegistry-fold.patch , собственно применена следующая мофикация PackageManager’а:

Если вы все это прочитали и данная информация помогла вам завести Goodix’овский сканер — поддержите проект , т.к. на понимание всего этого в прямом смысле ушли несколько суток работы.

remote_ctrl -> /dev/remote_ctrl

Источник

Mcregistry android что это

Samsung GT-I9300 Galaxy S III
Описание » | Обсуждение » | FAQ » | Покупка » | Аксессуары » | Брак » | Прошивка» | Прошивка Cyanogen(Mod)9 » | Прошивка MIUI » | Кастомные прошивки » | Модификация софта и украшательства » | Клуб любителей Samsung Galaxy S III » | Обсуждение камеры » | Обои для Samsung Galaxy S III » | Samsung GT-I9300 Galaxy S III — Игры » |

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

Не забывайте, что на форуме существует система обмена быстрыми сообщениями QMS и личные сообщения (справа вверху страницы).

Прозрачная шторка и изменённый статус бар в стиле темы XXELK4 Clean:
Shtorca.zip скрины в этом посте

прозрачный статус бар в стиле темы XXELK4 Clean:
Transparent statusbar.zip

Синие часы на экране блокировки и в статус баре в стиле темы XXELK4 Clean:
upgrade.zip скрины в этом посте

Твик громкости на 63 дб :
volume.zip

Галерея и камера от Android 4.2:
Camera 4.2.zip

P.S. Будет пополнятся.

Сообщение отредактировал компрессор10 — 17.02.14, 21:24

модифицировал прошивку от Darkside Agent (специально для русскоязычных пользователей) немного подчистил,кое что заменил.

— Aroma installer (можно выбрать русский)
— I9300XXDLJ4(4.1.1) Deodex
— Recovery на выбор в ароме
— Ядро на выбор в ароме
— Модем на выбор в ароме
— Root, busybox и т.д.
— CSC последний русский (SER)
— Лаунчер на выбор в ароме
— 15 иконок в шторке
— Долгое нажатие на иконки для перехода в настройки
— Русифицированное меню настроек иконок
— Меню иконок убрано в обычные настройки
— Полностью полупрозрачная шторка
— Цвет иконок в шторке на выбор в ароме
— Верхний статусбар с темами на выбор в ароме
— Положение часов на выбор в ароме
— Расширенное меню выключения
— Удален запрос о выключении из меню
— Полное название дат в блокировке
— Перелистывание треков в блокировке
— Обновленная звонилка SecPhone.apk
— Запись с линии разговора
— Слово «Запись» без кружка по центру
— Убрана верхняя полупрозрачная полоса
— Убрана задержка после звонка
— Убрано «Включена усл. переадресация» и т.п.
— Формат номера набора без черточек и пробелов
— Русская полоса прокрутки в контактах
— Отключена автоконвертация СМС в ММС
— Увеличено количество получателей на 1 СМС
— Увеличен размер отсылаемого СМС
— Убраны СМС и ММС в журнале звонков
— Камера от Galaxy Note2 или сток на выбор в ароме
— Исправлены шрифты в плеере
— Добавлен нормальный Swype Ru/Eng
— Выбор галереи сток или из Note2 на выбор в ароме
— SQLite3
— Faster GPS Fix
— Твик многозадачности
— Звуковые твики на выбор в ароме
— 736mb rom
— Добавлена прозрачность в настройках,звонилке и т.д (для этого выбираем в ароме Framework Mods-IMEUnplug * стоит по умолчанию )

Читайте также:  Android update using adb

И ещё много чего в таком же духе.

Скриншоты не делаю,потому что выбор тем находится в ароме и каждый выберет тему для себя.

скачать XXDLJ4 CodecROM 8.5.1 S.E by Partos.txt ( 136 байт )

Собрал облегчённый вариант XXDLJ4,многое удалено (каждый поставит сам,что нужно) архив для CWM с потерянными apk прилагается.В прошивке использованы материалы из прошивок:—VK—V-5.0 и —VK—V-4.1,UltimaROM_v4.1,XXDLJ4 CodecROM 8.5.1 S.E,Poppuri_Aroma_Simple_Theme_Edition_XXDLIB_V2,а так же из ветки Модификация софта и украшательства





— XXDLJ4 Deodex
— Ядро Phenomenal4.0Medium
— Добавлены скрипты Init.d
— Root, reсovery, busybox
— CSC последний русский (SER)
— 15 иконок в шторке
— Долгое нажатие на иконки для перехода в настройки
— Русифицированное меню настроек иконок
— Расширенное меню выключения
— Добавлена анимация окон от VK-rom
— Заменена Bootanimation
— Gps конфиги для России
— Актуальный хост
— Добавлен мод многозадачности
— Т9 в диалере
— Перелистывание треков в блокировке
— Формат номера без скобок и деффисов
— Убраны логи смс из журнала звонков
— Запись с линии
— Убран нарастающий звонок
— Убрана задержка после звонка
— Убрана верхняя полупрозрачная полоса
— Русская полоса прокрутки в контактах
— Порог отключения камеры при заряде 0%
— Добавлен Swype Ru/Eng
— Отключена автоконвертация SMS в MMS
— Увеличено MMS с 300 кб до 1 мб

И так далее и тому подобное

Установка через CWM,предварительно рекомендуется сделать все вайпы.После прошивки перезагрузите аппарат ещё раз!

ссылки:
скачать XXDLJ4 LITE с депозита.txt ( 62 байт )

скачать XXDLJ4 LITE с народа.txt ( 115 байт )


архив для установки из под CWM.Содержит удалённые из LITE версии стоковые системные apk.
hidden apps.txt ( 188 байт )

мод,возвращающий стоковую анимацию и удаляющий прозрачность Stock Animations.zip ( 21.45 МБ )
(с этим модом,визуально аппарат стал работать быстрее :yes2: ) данный мод можно применить и на прошивке —VK—V-5.0





На этот раз ещё более облегчённая версия с изменённым интерфейсом.Как и в предыдущий раз,архив для CWM с потерянными apk прилагается.

— XXDLJ4 Deodex
— Ядро GalaxSih v2.0 B3
— Добавлены скрипты Init.d
— Твики Build.prop
— Root, reсovery, busybox
— CSC последний русский (SER)
— 15 иконок в шторке
— Долгое нажатие на иконки для перехода в настройки
— Русифицированное меню настроек иконок
— Расширенное меню выключения
— Добавлена анимация окон от VK-rom
— Заменена Bootanimation
— Gps конфиги для России
— Актуальный хост
— Добавлен мод многозадачности
— Т9 в диалере
— Перелистывание треков в блокировке
— Формат номера без скобок и деффисов
— Убраны логи смс из журнала звонков
— Запись с линии
— Убран нарастающий звонок
— Убрана задержка после звонка
— Убрана верхняя полупрозрачная полоса
— Русская полоса прокрутки в контактах
— Порог отключения камеры при заряде 0%
— Добавлен Swype Ru/Eng
— Отключена автоконвертация SMS в MMS
— Увеличено MMS с 300 кб до 1 мб

И так далее и тому подобное

Установка через CWM,предварительно рекомендуется сделать все вайпы.После прошивки перезагрузите аппарат ещё раз!

скачать BlackBlue XXDLJ4 LITE.txt ( 117 байт )

архив для установки из под CWM.Содержит удалённые из LITE версии стоковые системные apk: hidden apps.txt ( 47 байт )

Собрал облегчённый вариант,на основе новой XXDLJ5,потратил много времени на её создание,надеюсь вам понравится! Как и в предыдущих прошивках Lite серии,архив с потерянными apk прилагается,но теперь он упакован вместе с прошивкой и ставится через арому,в пункте hidden apps.Установщик aroma на русском языке,там всё понятно,разберётесь сами,единственное,что хочу сказать,есть выбор двух красивых тем BlackBlue Theme и BlackRed Theme ,не нужно выбирать в ароме сразу обе,выберите одну.А так же в этих темах уже присутствует мод 15 иконок в шторке,по этому,при выборе одной из выше указанных тем,мод 15 иконок,в ароме,не выбираем!.Прошивка без вайпов,если нужно,сделаете сами.В Lite версии многое вырезано,если вы не обнаружили одну из функций,которая вам очень нужна,тогда ставьте полную версию прошивки.

Источник

Оцените статью