предоставить системные разрешения для приложения в эмуляторе Android - PullRequest
13 голосов
/ 29 февраля 2012

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

Ответы [ 2 ]

29 голосов
/ 10 марта 2012

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

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

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

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

2 голосов
/ 04 марта 2012

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

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

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

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

...