Как скомпилировать Android-приложение с системными разрешениями

Мне нужно скомпилировать приложение с системными разрешениями, чтобы использовать целевое приложение com.android.settings. Пока я пытаюсь запустить мой apk, я получаю сообщение об ошибке

Тестовый запуск не выполнен: Отказ в разрешении: запуск инструментария ComponentInfo{com.jayway.test/android.test.InstrumentationTestRunner} из pid=354, uid=354 не разрешен, поскольку пакет com.jayway.test не имеет подписи, соответствующей целевому объекту com. android.settings

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

3 ответа

Решение

После некоторого поиска я нашел, как подписать мое приложение системным ключом (платформой). Системные подписи находятся в каталоге <root-of-android-source-tree>/build/target/product/security, Вы можете использовать их, чтобы подписать ваше приложение с системными привилегиями.

  1. Добавить в манифест android:sharedUserId="android.uid.system"

  2. Загрузите файлы системных подписей: platform.x509.pem platform.pk8

ссылка: https://android.googlesource.com/platform/build/+/android-8.0.0_r17/target/product/security/

  1. Подпишите приложение через терминал (java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signature.apk) (сначала необходимо поместить все файлы в одну папку) или создайте сертификат с помощью keytool-importkeypair, чтобы создать google_certificate.keystore а потом

ссылка для загрузки и объяснения keytool-importkeypair:

https://github.com/getfatday/keytool-importkeypair

  1. После этого установите подписанное системное приложение на свое устройство. Удачи!!!

Для меня ответом было просто удалить файл debug.keystore. Место хранения по умолчанию для AVD находится в ~/.android/ в OS X и Linux, в C:\Documents and Settings\.android\ в Windows XP и в C:\Users\.android\ в Windows Vista.

В Eclipse я "очистил" проект, удалил приложение и TestApp из эмулятора и - вуаля, все снова заработало нормально.

Другие вопросы по тегам