2010-08-24 16 views
8

Devo creare un'applicazione Robotium che utilizzi l'applicazione Impostazioni per attivare/disattivare WIFi dal menu Impostazioni-> Wireless & reti-> Wi-Fi. Sono riuscito a trovare qualche codice di esempio here che dimostra come avviare l'applicazione con il solo file apk. Il problema è che la mia applicazione Robotium dovrebbe avere la stessa firma con l'applicazione Impostazioni (sistema). Durante il tentativo di eseguire l'applicazione ottengo il messaggio di errore:Come posso firmare la mia domanda con la chiave di firma del sistema?

run test fallito: Autorizzazione Denial: strumentazione partire ComponentInfo {com.jayway.test/android.test.InstrumentationTestRunner} da pid = 354, uid = 354 non ammessi perché pacchetto com.jayway.test non non ha una firma corrispondenti ai com.android.settings bersaglio

  1. Posso in qualche modo farlo funzionare con l'emulatore di Android?
  2. Se compongo un'immagine del telefono Android, come posso utilizzare la firma del sistema Android con la mia applicazione?

risposta

1

Il modo migliore per abilitare il wifi dall'applicazione è utilizzare WifiManager.

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

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

Nota: È inoltre necessario aggiungere le seguenti autorizzazioni per il vostro manifesto

<uses-permission android:name="android.permissions.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permissions.CHANGE_WIFI_STATE" /> 
+0

non ho solo bisogno di accendere il Wi-Fi/off. Devo controllare l'applicazione Impostazioni con uno script Robotium. In effetti, voglio simulare i clic degli utenti per accendere/spegnere WiFi. Questo processo può essere fatto usando uno script personalizzato con lo strumento scimmia. Anche se mi piacerebbe usare Robotium per verificare se un Access Point è stato veramente trovato. Il mio obiettivo principale è quello di rendere questo script Robotium avere accesso su com.android.settings.apk. Questo eviterà la mancata corrispondenza della firma e permetterà al mio script di Robotium di controllare questo APK. – Michalis

14

ho avuto lo stesso problema .. Ci sono alcune autorizzazioni che solo le applicazioni di sistema sono autorizzati ad avere. Stavo cercando di accedere ai comandi adb shell dumpsys dalla mia applicazione con le autorizzazioni android.permission.DUMP.

La soluzione a questo è ...

Nel file manifest di Android del progetto aggiungere la seguente riga nel tag manifest

android:sharedUserId="android.uid.system" 

È necessario avere due chiavi di firma presenti nel codice che è usato per costruire il binario.

platform.x509.pem

platform.pk8

che è presente nel

Android/build/target/prodotto/sicurezza

Scarica uno strumento dalla rete, ovvero

signapk.jar

dall'esportazione eclisse tuo apk senza segno. con il tasto destro del mouse sul progetto dagli strumenti Android. Conserva tutte le cose, ad esempio chiavi, apk senza firma e signapk.jar in una cartella.Eseguire il seguente comando

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

apk non firmato è il nome del tuo apk e apk firmato è il nuovo nome che si desidera. Dopo questo basta installare la vostra applicazione firmato nel telefono con il comando

adb shell install signed.apk 
+1

Nirmit ha dimenticato di menzionare che per ottenere 'android/build/target/product/security', devi controllare l'albero dei codici sorgente di Android da [qui] (http://source.android.com/source/downloading. html). – ChuongPham

+0

grazie !! choungpham per il percorso. –

+2

Se non è possibile eseguire il checkout del codice sorgente Android completo (ad esempio, su Windows) è possibile eseguire il checkout di questo singolo repository: git clone https://android.googlesource.com/platform/build. I file della piattaforma saranno sotto il target/prodotto/sicurezza – Alexey

Problemi correlati