2013-10-16 8 views
14

C'è un modo per aggiungere IMEI a AndroVM (ora Genymotion) o qualsiasi altro emulatore Android. E voglio anche l'indirizzo MAC per la porta wlan0. Abbiamo già emulatori che contengono MAC sulla porta lan0 ma non su wlan. Come possiamo farlo? se qualcuno dei tuoi conoscenti lo ha fatto, per favore chiedigli di contribuire.Aggiungi IMEI e MAC a wlan0 a Genymotion/AndroVM

Dettagli:

Sto cercando di costruire basato sede d'esame App Android come una nuvola nel mio progetto universitario anno pre finale per l'adempimento parziale verso il mio Bachelor of Technology (Computer Science) di laurea. Mi chiedo come possiamo ottenere più configurazioni per Genymotion. Oppure se è possibile fornirmi più configurazioni del dispositivo e se è possibile creare configurazioni per la genomotion per diversi dispositivi molto rapidamente. In secondo luogo, Come aggiungere gli indirizzi MAC e il numero IMEI ai build?

Stiamo cercando di emulare un dispositivo mobile (non Google nexus) per creare un centro di test basato su cloud. Per questo stiamo cercando di utilizzare androVM (Genymotion) e siamo di fronte ad alcuni problemi

cosa abbiamo fatto modalità finora

  1. Costruire il codice sorgente androVm in "VBOX86tp-userdebug" da zero dopo aver seguito i passaggi indicati sul sito web ufficiale di Android.
  2. Dopo aver creato il codice sorgente su un server ec2 virtuale, digitando il comando dell'emulatore viene eseguito ma vuoto.
  3. E se possibile, AndroVm può essere eseguito in modalità "Fastboot" in modo che possiamo installarlo sul dispositivo.

Abbiamo lavorato sulla "costruzione della androVm" dal codice sorgente e cercando di realizzare alcune operazioni come

  1. eseguendolo con l'IMG del disponibile dopo il processo di costruzione è completa.
  2. Rendendolo portatile, ovvero creando un iso/ovale tra tutti gli elementi trovati nella directory esterna.

Quello che abbiamo provato fino ad ora

Il download del codice sorgente AndroVm inizializzazione repo utilizzando repo init download del codice sorgente utilizzando repo sync scegliendo il menu del pranzo con il pranzo scelta vbox86tp-userdebug

Altri menu full-ita non ha funzionato in modo dismissione

pochi errori che è venuto il nostro modo

01.235.

Errori di creazione: erano abbastanza semplici, così risolti system.img non è stato generato: risolto rendendolo nuovamente errore di bin/bash jar error: si è verificato l'errore del percorso risolto dall'esportazione del comando path to jar.

Poche Domande

  1. Che un file OVA Consiste di e come può essere creato?Da quello che ho visto contiene alcuni file di VMDK e alcuni file di configurazioni allegati,
  2. Come convertire i file di immagine specifici della piattaforma (system.img ramdisk.img userdata.img) in un file OVA o ISO. Se a tutti mancano pochi file da dare all'emulatore, puoi solo nominarli.
  3. inoltre come aggiungere il numero IMEI
  4. Abbiamo già MAC per eth0/1 porta, ma vogliamo che sulla porta WLAN

Image Showing eth0 and eth1 port

Other Details



Ora per rendere le cose interessanti

Questa è la risposta che ho ricevuto da Genymotion della squadra:

I want my project to cover various configurations but for starters if i can get something like Samsung Galaxy phones and tab or as a 

start if I can get Samsung galaxy tab 2.

You can change the screen size and DPI for each virtual device. You can toggle navigation bar and virtual keyboard. However, we cannot provide virtual devices that contains proprietary applications like Samsung.

Now here what we get is the MAC address of eth0/1 port. What if I need wlan MAC. 

Unless one of the two network interface have been disabled, there should be 2 interfaces, 2 IP, and 2 MAC addresses: adb shell ip a. 2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:d4:fe:e0 brd ff:ff:ff:ff:ff:ff inet 192.168.56.101/24 brd 192.168.56.255 scope global eth0 inet6 fe80::a00:27ff:fed4:fee0/64 scope link valid_lft forever preferred_lft forever 3: eth1: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 08:00:27:c8:37:e7 brd ff:ff:ff:ff:ff:ff inet 10.0.3.15/24 brd 10.0.3.255 scope global eth1 inet6 fe80::a00:27ff:fec8:37e7/64 scope link .

Sorry, but we do not provide support for specific ROM. However, I strongly recommend you to visit the community at: https://groups.google.com/forum/#!forum/genymotion-users

1. What an OVA file consits of and how can it be created ?From what i have seen it contains few VMDK's and few configurations files 

attached to it,

"The entire directory can be distributed as an OVA package, which is a tar archive file with the OVF directory inside." (http://en.wikipedia.org/wiki/Open_Virtualization_Format)

2. How to convert the platform specific image files(system.img ramdisk.img userdata.img) into an OVA or ISO file. 

If at all we are missing few files to give to the emulator, can you just name them. 

Please read the community tutorials

3. Also how to add IMEI number 

There is currently no way to add IMEI number. This feature will come in the near future

4. We already have MAC for eth0 port but we want it on wlan port 

There is 2 interfaces: eth0 and eth1. Eth0 is used for Genymotion application widgets. If this network connection is broken, Genymotion would not be able to start anymore. Eth1 is used for network current access (fake WiFi connection). You can change this network configuration as you want.

+0

grazie a @Peter_O per le modifiche. –

risposta

11

È prassi comune per le applicazioni mobili identificare l'utente tramite il numero IMSI (associato alla carta SIM) o il numero IMEI (ID univoco del dispositivo). Naturalmente, è anche possibile su Android:

TelehponyManager manager = (TelehponyManager)getSystemService(TELEPHONY_SERVICE); 
String imei = manager.getDeviceId(); 
String imsi = manager.getSubscriberId(); 

Questo codice funziona perfettamente bene su un dispositivo reale, comunque sotto emulatore IMEI è sempre tutto da zero e non è configurabile. Diventa rapidamente scomodo durante il debug di un'applicazione abilitata alla rete che utilizza IMEI come ID utente.

provare a risolvere il problema in primo luogo ho guardato il servizio TelephonyManager, solo per trovare il seguente frammento:

private IPhoneSubInfo getSubscriberInfo() { 
// get it each time because that process crashes a lot 
return IPhoneSubInfo.Stub.asInterface(ServiceManager.getService("iphonesubinfo")); 
} 

commento giusto, non è vero? Ha davvero reso la mia giornata :)

Ad ogni modo, l'analisi del codice mostra che la richiesta IMEI/IMSI passa attraverso tutti gli strati di telefonia (vedi lo schema), raggiungendo infine il dispositivo della baseband. In caso di sistema emulato, il daemon rild viene utilizzato insieme a libreference-ril.so - libreria RIL del fornitore di riferimento che comunica con il dispositivo modem in banda base utilizzando semplici comandi AT vecchi.

Il modem stesso viene emulato all'esterno del sistema Android, come parte di qemu (che è il cuore dell'emulatore). I dettagli della comunicazione tra l'emulatore e il sistema Android in esecuzione all'interno dell'emulatore sono interessanti di per sé (tutta la comunicazione passa attraverso una porta seriale virtuale, il demone qemud di sistema Android viene utilizzato per (de) multiplexare i dati). Proverò a postare una breve introduzione all'argomento presto.

L'implementazione del modem virtuale può essere trovata in external/qemu/phone/android_modem.c.La parte più importante del file è questa funzione:

const char* amodem_send(AModem modem, const char* cmd); 

Questa funzione viene chiamata per ogni comando AT ricevuto. Per ogni comando sDefaultResponses array viene cercato un determinato comando e viene inviata una risposta predefinita oppure viene eseguito un gestore di comandi. L'array assomiglia:

static const struct { 
const char*  cmd;  /* command coming from libreference-ril.so, if first 
          character is '!', then the rest is a prefix only */ 

const char*  answer; /* default answer, NULL if needs specific handling or 
          if OK is good enough */ 

ResponseHandler handler; /* specific handler, ignored if 'answer' is not NULL, 
          NULL if OK is good enough */ 
} sDefaultResponses[] = 
{ 
    /* ... */ 
    { "+CIMI", OPERATOR_HOME_MCCMNC "000000000", NULL }, /* request internation subscriber identification number */ 
    { "+CGSN", "000000000000000", NULL }, /* request model version */ 
    /* ... */ 
}; 

Due righe di matrice citata sono responsabili IMSI e IMEI recupero. Come puoi vedere, entrambi i valori sono hardcoded e non c'è possibilità di modificarli senza ricompilare l'emulatore.

Tuttavia, un hack vecchia scuola è utile. Il binario dell'emulatore non è crittografato né compresso, quindi i valori letterali delle stringhe dovrebbero essere visibili all'interno del binario dell'emulatore. In realtà essi sono, e il numero IMEI possono essere modificate in pochi semplici passi:

** backup the emulator binary 
** open the binary with your favourite hex editor 
** search for +CGSN string followed by a null byte, it should be followed by 15 digits of the IMEI number 
** edit the number, be careful not to change the number of digits 
** save the file, that’s all! 

Certo, non è una soluzione perfettamente a suo agio, ma meglio di niente. Nella prossima parte spiegherò come rendere il numero IMEI un'opzione configurabile. Godere!

+0

questa risposta sembra simile a un blog che ho visto prima: D – cafebabe1991

+1

questo è per l'emulatore ufficiale non genymotion! –

+0

L'aggiunta di una fonte non danneggerà nessuno: https://codepainters.wordpress.com/2009/12/11/android-imei-number-and-the-emulator/ in modo che tutti possano seguire i link, come quando vedete "vedere" il diagramma "o la versione aggiornata del post con nuove informazioni. –

-1

Hai visto uno di questi link per la prima parte della tua domanda:

Get IMEI in GenyMotion emulator

https://codepainters.wordpress.com/2009/12/11/android-imei-number-and-the-emulator/

e questo collegamento per la parte MAC:

Does the Android Device Emulator have a MAC Address?

+0

grazie ma questo non risponde alla mia domanda. Voglio incorporare il codice non recuperarlo. –

+0

Inoltre ho già visto i link sopra –

+0

Nessun problema, ho visto quei collegamenti un po 'indietro su un problema che stavo avendo e ho pensato di trasmetterli. Scusa, non hanno aiutato. – JFelton