#android #windows #android-studio
Вопрос:
Когда я пытаюсь использовать USB-переход, как описано в https://androidstudio.googleblog.com/2020/08/emulator-30024-canary.html,
emulator -avd Pixel_3a_API_30_x86 -qemu -usb -device usb-host,vendorid=076B,productid=3821
Я получаю сообщение об ошибке 'usb-host' is not a valid device model name
. Согласно ссылке Google, передача по USB должна поддерживаться с версии эмулятора 30.0.24, а мой эмулятор сообщает о версии 30.5.3.0 (build_id 7196367).
Кому-нибудь удалось заставить это работать?
Ответ №1:
Нет! То же самое с эмулятором Android версии 30.5.4.0 (build_id 7243153).
Если я посмотрю двоичную версию файла эмулятора qemu для Linux,
я все равно смогу найти опцию usb-хоста. Но это полностью исключено в версии для Windows.
Поэтому я предполагаю, что Google, должно быть, отключил поддержку usb-хоста в Windows.
К сожалению, последние примечания к выпуску эмулятора датированы 30.4.5 (23 февраля 2021 года).
Также я не могу найти никаких намеков на это в Android-обзоре AOSP Не знаю, где еще искать!?
[Обновление:]
Я думаю, что нашел его на зеркале AOSP на GitHub и в Android-обзоре AOSP. От Эрвина Янсена, совершенного 3 марта:
Отменить «Включить перенаправление USB-хоста для Windows»
# Libusb support on windows is not what we would like it to be
LIBUSB_FLAGS="--disable-libusb --disable-usb-redir"
Похоже, что функция USB-пропуска в Windows была просто слишком глючной.
Таким образом, если вернуться к версии 30.5.2 (build_id 7175973) (27 февраля 2021 года)
, usb-хост по-прежнему будет действительным именем модели устройства.
ДЛ брал с Канарского канала.
Но, похоже, Google все еще работает над этим…
[Обновление 10.12.21]
Начиная с версии 31.1.4 эмулятора Google внедрил некоторые новые функции и инструменты для передачи USB. Я не смог найти параметр-list-usb с помощью эмулятора-помощь, но он работает, если вы запустите:
emulator -list-usb
VID:PID 058f:6387 (Bus 1, Port 5.1.1)
Manufacturer:
Product:
SerialNumber: 40A0FE0A
С помощью этой информации вы можете использовать параметр-usb-passsthrough
(-usb-передача через vendorid=VID,productid=PID[,ШИНА хоста=ШИНА,ПОРТ хоста=ПОРТ])
emulator -netdelay none -netspeed full -avd Pixel_4_API_31 -usb-passthrough vendorid=058f,productid=6387,hostbus=1,hostport=5.1.1
но это показывает ошибку:
ERROR | Cannot load Android USB Assistant Driver for USB device "vendorid=058f". USB pass-through might not work.
Снова добавлен новый инструмент Google, со встроенными драйверами Windows для USB-передачи, который можно попробовать еще раз. Загружается непосредственно с AOSP (tgz)
запуск от имени администратора:
Install_Drivers.bat
Installing Android USB Assistant...
call Android_USB_Assistant_Install.bat
Microsoft PnP Utility
Processing inf : Android_USB_Assistant.inf
Successfully installed the driver.
Driver package added successfully.
Published name : oem89.inf
Total attempted: 1
Number successfully imported: 1
Installing Android Emulator USB Passthrough Assistance Driver
SERVICE_NAME: UsbAssist
TYPE : 1 KERNEL_DRIVER
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
[SC] DeleteService SUCCESS
SERVICE_NAME: UsbAssist
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
Но повторная попытка все равно показывает ту же ошибку.
[Обновление 13.12.21]
Теперь он работает. Правильный синтаксис-с 0x и без ключевых слов usbhost и usbport:
-usb-passthrough vendorid=0x058f,productid=0x6387
Он по-прежнему показывает сообщение об ошибке:
qemu-system-x86_64.exe: libusb_kernel_driver_active: -12 [NOT_SUPPORTED]
И устройство не распознается в AVD,
но как только вы укорените AVD (канарейку Magisk) с помощью моего скрипта rootAVD с Github
с параметрами PATCHFSTAB GetUSBHPmodZ
rootAVD.bat %LOCALAPPDATA%AndroidSdksystem-imagesandroid-32google_apis_playstorex86_64ramdisk.img PATCHFSTAB GetUSBHPmodZ
и установите мой usbhostpermissions.zip Модуль Magisk, USB-накопитель будет
отображаться как общесистемный накопитель, а доступ к последовательному устройству USB можно получить
через USB-последовательный терминал Apk. Информация об устройстве USB APK
теперь также будет отображать подключенные USB-устройства. Я обновлю свое руководство по XDA как можно скорее
соответствующим образом.
Чтобы пропустить больше USB-устройств, просто добавьте еще одно за первым i.e:
emulator -netdelay none -netspeed full -avd Pixel_4_API_32 -usb-passthrough vendorid=0x058f,productid=0x6387 -usb-passthrough vendorid=0x067b,productid=0x2303
Комментарии:
1. Какие-либо обновления по этой проблеме, похоже, изменения были объединены в ветку emu-master-dev?
2. Пожалуйста, обновите информацию по этому вопросу. работает ли он в среде Windows. Похоже, изменения были внесены в эмулятор версии 31.1.4.
3. Да, похоже, опция usb вернулась в двоичный файл, но я не могу подключить ни одно USB-устройство. У вас есть источник для этого слияния?
4. Я не получаю ошибку usb-хоста, но я также не могу подключить какое-либо USB-устройство. Вы можете сослаться на это android.googlesource.com/platform/external/qemu/ /ссылки/главы/…
5. о, отлично, спасибо. Это привело к появлению некоторых новых инструментов.