Добавьте IMEI и MAC в wlan0 в Genymotion / AndroVM

Есть ли способ добавить IMEI в AndroVM (теперь Genymotion) или любой другой эмулятор Android. А также я хочу MAC-адрес для порта wlan0. У нас уже есть эмуляторы, которые содержат MAC в порту lan0, но не для wlan. Как мы можем это сделать? Если кто-то из ваших знакомых сделал это, попросите их внести свой вклад.

Детали:

Я пытаюсь создать облачный центр тестирования приложений для Android в качестве моего предыдущего проекта колледжа в прошлом году для частичного выполнения моей степени бакалавра технологий (компьютерных наук). Мне интересно, как мы можем получить больше конфигураций для Genymotion. Или, если вы можете предоставить мне больше конфигураций устройств и если можно быстро создать конфигурации для genymotion для разных устройств. Во-вторых, как добавить MAC-адреса и номер IMEI в сборки?

Мы пытаемся подражать мобильному устройству (не Google Nexus), чтобы создать облачный центр тестирования. Для этого мы пытаемся использовать androVM (Genymotion), и мы сталкиваемся с несколькими проблемами

Что мы сделали до сих пор

  1. Построение исходного кода androVm в режиме «VBOX86tp-userdebug» с нуля после выполнения шагов, приведенных на официальном веб-сайте Android.
  2. После создания исходного кода на виртуальном сервере ec2 введите команду эмулятора, но ее пробел.
  3. И если возможно, AndroVm можно запустить в режиме «Fastboot», чтобы мы могли установить его на устройство.

Мы работаем над созданием androVm из исходного кода и пытаемся выполнить несколько задач, таких как:

  1. Запуск его с помощью img, доступных после завершения процесса сборки, завершен.
  2. Сделать это переносимым, т. Е. Создать изо / ova из всего материала, найденного в выпадающем каталоге.

То, что мы пробовали до сих пор

Загрузка исходного кода AndroVm, инициализирующего репо с использованием repo init Загрузка исходного кода с использованием репо-синхронизации, выбрав меню обеда, используя обед, выбрав vbox86tp-userdebug

Другие меню full-eng не работают так прекращено

Мало ошибок, которые пришли нам

Сделайте ошибки: они были довольно простыми, так что система system.img не сгенерировалась: разрешена путем повторного запуска команды bin / bash jar: ошибка пути была решена путем экспорта пути к команде jar.

Несколько вопросов

  1. Что представляет собой файл OVA и как его можно создать? Из того, что я видел, он содержит несколько файлов VMDK и нескольких конфигураций, прикрепленных к нему,
  2. Как преобразовать файлы изображений, специфичные для платформы (system.img ramdisk.img userdata.img) в файл OVA или ISO. Если вообще нам не хватает нескольких файлов для эмулятора, можете ли вы просто назвать их.
  3. Также как добавить номер IMEI
  4. У нас уже есть MAC для порта eth0 / 1, но мы хотим его на порту wlan

Изображение Отображение порта eth0 и eth1

Другие детали



Теперь, чтобы сделать интересные вещи

Это ответ, который я получил от команды Genymotion:

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 

Начните, если я смогу получить вкладку Samsung galaxy 2.

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

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

Если один из двух сетевых интерфейсов отключен, должны быть два интерфейса, 2 IP и 2 MAC-адреса: 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 ссылка / эфир 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 справка.

Извините, но мы не предоставляем поддержку для конкретного ПЗУ. Тем не менее, я настоятельно рекомендую вам посетить сообщество по адресу: 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 

Прилагается к нему,

«Весь каталог может быть распространен как пакет OVA, который является файлом архива tar с внутренним каталогом OVF». ( 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. 

Прочтите учебники сообщества

 3. Also how to add IMEI number 

В настоящее время нет способа добавить номер IMEI. Эта функция появится в ближайшем будущем

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

Существует 2 интерфейса: eth0 и eth1. Eth0 используется для виджетов приложений Genymotion. Если это сетевое соединение нарушено, Genymotion больше не сможет запускаться. Eth1 используется для сетевого доступа к сети (поддельное соединение WiFi). Вы можете изменить эту конфигурацию сети по своему усмотрению.

Для мобильных приложений распространенной практикой является идентификация пользователя по номеру IMSI (связанная с SIM-картой) или номер IMEI (уникальный идентификатор устройства). Конечно, это также возможно на Android:

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

Этот код отлично работает на реальном устройстве, однако под эмулятором IMEI всегда все ноль, и он не настраивается. При отладке приложения с поддержкой сети, которое использует IMEI как идентификатор пользователя, быстро становится неудобно.

Пытаясь решить проблему, я сначала посмотрел на службу TelephonyManager, просто чтобы найти следующий фрагмент:

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

Справедливый комментарий, не так ли? Это действительно сделало мой день 🙂

Во всяком случае, анализ кода показывает, что запрос IMEI / IMSI проходит через все уровни телефонии (см. Диаграмму), в конечном итоге попадая на устройство основной полосы. В случае эмулируемой системы, rild daemon используется вместе с libreference-ril.so – ссылкой на библиотеку VID Render, которая разговаривает с модемным модемом с использованием простых старых AT-команд.

Само устройство модема эмулируется вне системы Android, как часть qemu (который является сердцем эмулятора). Подробная информация о связи между эмулятором и системой Android, работающей внутри эмулятора, интересна сама по себе (все коммуникации проходят через виртуальный последовательный порт, демона qemud системы Android используется для (де) мультиплексирования данных). В ближайшее время я попытаюсь опубликовать краткое введение в эту тему.

Реализация виртуального модема можно найти во внешнем / qemu / телефонии / android_modem.c. Наиболее важной частью файла является эта функция:

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

Эта функция вызывается для каждой принятой команды AT. Для каждой команды массив sDefaultResponses выполняет поиск заданной команды и отправляется либо предопределенный ответ, либо выполняется обработчик команд. Сам массив выглядит так:

 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 */ /* ... */ }; 

Две строки массива, приведенные выше, отвечают за поиск IMSI и IMEI. Как вы можете видеть, оба значения жестко закодированы, и нет возможности модифицировать их без повторной компиляции эмулятора.

Тем не менее, взлома старой школы пригодится. Двоичный эмулятор не зашифрован и не сжат, поэтому строковые литералы должны быть видны внутри двоичного файла эмулятора. Фактически они есть, и номер IMEI может быть изменен несколькими простыми шагами:

 ** 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! 

Конечно, это не очень удобное решение, но лучше, чем ничего. В следующей части я объясню, как сделать номер IMEI настраиваемым. Наслаждайтесь!

Вы видели какие-либо из этих ссылок для первой части вашего вопроса:

Получить IMEI в эмуляторе GenyMotion

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

И эта ссылка для части MAC:

У эмулятора Android-устройства есть MAC-адрес?