Как установить apk в качестве системного приложения?

Я пытаюсь установить приложение в папку system/app устройства. Это необходимо сделать, поскольку я пишу программу QAT, и тесты должны выполняться с некоторыми привилегиями, недоступными для сторонних приложений.

У меня уже есть ключ подписи прошивки устройства, и мне нужно установить для свойства sharedUserId приложения значение android.uid.system . Однако он продолжает выдавать мне сообщение об ошибке «INSTALL_FAILED_SHARED_USER_INCOMPATIBLE».

Любые идеи о том, как я могу это исправить?

Что именно дает вам это сообщение об ошибке? Пожалуйста, добавьте шаги, которые вы предпринимаете.
Это менеджер пакетов. Одна из возможных причин заключается в том, что я сам создаю сертификат с помощью keytool и предоставленных соответствующих сведений, однако системные приложения, похоже, были подписаны сертификатом с иной действительностью, чем у меня, поскольку он был создан ранее. Может ли это быть проблемой, с которой я столкнулся?

Ответы (3)

Если у вас нет root-прав, чтобы следовать описанной Демизи процедуре ручной установки, приложение должно быть подписано тем же ключом, которым подписано ПЗУ; то есть тот же ключ, которым подписаны существующие системные приложения. Это мера безопасности: в противном случае любой мог бы написать приложение, которое будет работать с полным доступом к системе на любом устройстве.

Нашел эти инструкции по установке PowerManagerPro в /system/app, просто немного изменил их. (Примечание: сначала установите приложение в /data/app, как и любое другое приложение, и вам потребуется рутированное устройство.)

Откройте приложение эмулятора терминала и выполните следующую команду, чтобы скопировать приложение на SD-карту:

су
cp /data/app/ ваш.apk /sdcard/ ваш.apk

Если вы не можете найти приложение в /data/apptry /data/apps-private/. Затем удалите приложение с устройства.

Выполните следующие команды в эмуляторе терминала, чтобы перемонтировать /systemкаталог для чтения/записи и установить приложение в /system/appкаталог:

су
mount -o перемонтировать, rw -t yaffs2 /dev/block/mtdblock3 /system
cp/sdcard/ ваш.apk /система/приложение

Если вы предпочитаете использовать adb со своего компьютера, выполните следующие команды:

adb перемонтировать
adb shell cp /sdcard/ваш.apk / system/app
@Demizide: я уже пробовал это. У меня две проблемы, во-первых, устройство не рутировано и не собирается. Во-вторых, файлы в /system/app принадлежат пользователю root, и группа также является пользователем root. Это почему-то не позволяет мне установить группу как root и сохраняет ее как оболочку. То ли из-за этого, то ли по какой-то другой причине описанный выше способ не работает.

Вы можете использовать уязвимость мастер-ключа .

Выберите приложение, потеря или замена которого не повлияет на использование вами устройства. Возьмите его APK и найдите способ изменить его содержимое, а также вставьте файлы своего приложения. Ничего не перезаписывайте в оригинальном APK, а попробуйте сделать 2 записи одного и того же файла в заголовке ZIP. Затем вы можете установить модифицированный APK поверх оригинального. Он унаследует разрешения от исходного, но будет работать так, как вы задумали.