Как я могу подписать свое приложение с помощью ключа подписи системы? - PullRequest
8 голосов
/ 24 августа 2010

Мне нужно создать приложение Robotium, которое будет использовать приложение «Настройки» для включения / выключения WIFi из меню «Настройки» -> «Беспроводная связь и сети -> Wi-Fi».Мне удалось найти пример кода здесь , который демонстрирует, как запустить приложение, имея только файл apk.Проблема в том, что мое приложение Robotium должно иметь ту же подпись, что и приложение (системные) Настройки.При попытке запустить приложение я получаю сообщение об ошибке:

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

  1. Можно ли как-то заставить его работать с эмулятором Android?
  2. Если я скомпилирую образ телефона Android, как я могу использовать системную подпись Android с моим приложением?

Ответы [ 2 ]

15 голосов
/ 20 декабря 2012

У меня была та же проблема .. Есть некоторые разрешения, которые могут иметь только системные приложения.Я пытался получить доступ к командам adb shell dumpsys из моего приложения с разрешениями android.permission.DUMP.

Решение этой проблемы ...

В файле манифеста Android вашего проекта добавьте следующую строку в тег манифеста

android:sharedUserId="android.uid.system"

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

platform.x509.pem

platform.pk8

, который присутствует в

android / build / target / product / security

Скачать инструмент из сети т.е.

signapk.jar

Из eclipse экспортируйте ваш неподписанный apk.щелкнув правой кнопкой мыши по проекту из инструментов Android.Храните все вещи, такие как ключи, неподписанные apk и signapk.jar в папке.Выполните следующую команду

java -jar signapk.jar platform.x509.pem platform.pk8 unsigned.apk signed.apk

unsigned apk - это имя вашего apk, а подписанный apk - это новое имя, которое вы хотите.После этого просто установите подписанное приложение в телефоне с помощью команды

adb shell install signed.apk
1 голос
/ 24 августа 2010

Лучший способ включить Wi-Fi из вашего приложения - использовать WifiManager .

WifiManager wManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);

if(!wManager.isWifiEnabled() && wManager.getWifiState() != WifiManager.WIFI_STATE_ENABLING)
    wManager.setWifiEnabled(true);

Примечание. Вам также необходимо добавить следующие разрешения в манифест

<uses-permission android:name="android.permissions.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permissions.CHANGE_WIFI_STATE" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...