Предоставить системные разрешения для приложения в эмуляторе Android

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

Ответ 1

Если вам требуется разрешение signatureOrSystem, вам просто нужно поместить его на образ системы; вам не нужно подписываться с каким-либо специальным сертификатом. Вы можете сделать это как одноразовый (до выхода из эмулятора) следующим образом:

> adb root
> adb remount
> adb push /path/to/My.apk /system/app/My.apk

Как только вы это сделаете, вы можете использовать обычный процесс для установки дополнительных обновлений в разделе данных ( "adb install -r/path/to/My.apk", что и инструменты разработчика, когда вы запускаете из Eclipse). При установке этого способа приложение сохраняет любые разрешения на подпись, которые он запросил у исходной версии на системном изображении, но не может получить никаких новых таких разрешений.

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

Ответ 2

Насколько я могу судить, вам нужно:

  • загрузите источник Android и создайте образ прошивки эмулятора.
  • подпишите свое приложение с помощью ключей в исходном дереве Android в /build/target/product/security/.
  • добавить android:sharedUserId="android.uid.system" в манифест приложения.
  • запустите приложение на эмуляторе, используя изображение, построенное на шаге 1.

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

Отказ от ответственности: никогда не пробовал это сам.