Я пытаюсь подключиться к андроиду, работающему через genymotion. Тем не менее, я продолжаю получать следующее сообщение об ошибке при попытке подключиться через adb:
adb server version (41) doesn't match this client (39); killing...
Я видел, что у многих других есть эта проблема, и я попробовал все, и по какой-то причине я до сих пор не могу это на работу. У меня есть genymotion, использующий Android SDK вместо стандартного genymotion.
Я думаю, что ошибка может быть связана с тем, что у меня есть попытка заставить genymotion работать правильно на некоторых других этапах установки, например, когда я выполняю adb --version
, я получаю следующее:
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
в эту проблему? Если это имеет значение, я в настоящее время использую Ubuntu 18.04, и мой эмулятор не подключен к Wi-Fi. Спасибо всем, кто ответил заранее.
Это на самом деле решило мою проблему sudo cp ~/Android/Sdk/platform-tools/adb /usr/bin/adb
Я определенно сталкивался с этим сообщением об ошибке при попытке подключиться к виртуальной машине Genymotion с помощью средства ADB платформы Android SDK вместо версии, предоставленной Genymotion; однако я не пытался настроить Genymotion для использования ADB, предоставляемого Android SDK.
Я бы попробовал соединиться с предоставленной Genymotion версией. Похоже, что Genymotion может не соответствовать конфигурации, которую вы установили.
Это проблема, которую я наблюдал:
Как показано на этом скриншоте. Эта проблема определенно возникает, когда вы пытаетесь подключиться к версии ADB, которая не соответствует версии, используемой Genymotion.
Чтобы подтвердить, какая версия используется Genymotion (то есть, чтобы убедиться, что она соответствует вашим конфигурациям), выполните следующее:
netstat -tlpn | grep -i adb
Это должно сообщить вам идентификатор процесса сервера ADB, который слушает связи. Используя этот идентификатор процесса, мы можем определить, какая версия ADB выполняется с помощью ls -la /proc/ADB_PROCESS_ID/
(очевидно, подставить в числовой идентификатор процесса.)
Например, я вижу, что сервер ADB, работающий на моей стороне, /opt/genymobile/genymotion/tools/adb
, как показано ниже:
Если Genymotion действительно использует версию ADB, которую вы ожидали использовать, тогда вы можете запустить which adb
, а затем readlink "$(which adb)"
. Если этот результат неожиданный, то вам следует либо убедиться, что каталог с правильным adb
появится раньше в вашей переменной среды PATH
, либо вы можете попробовать добавить псевдоним для adb, который явно указывает на правильный путь. (Я бы, вероятно, добавил к передней части PATH
вместо использования псевдонима, так как другие приложения, которые вы запускаете, с большей вероятностью будут уважать PATH
, чем они будут уважать псевдоним.)
Если вы обнаружите, что путь ADB, на который ссылается Genymotion, отличается от пути, на который ссылается ADB, и вы решаете эту проблему, изменив свой PATH
, затем вам следует изменить файл .bash_profile
в вашем домашнем каталоге, добавив следующую строку ( измените, где необходимо), внизу:
export PATH="/path/to/adb-directory:$PATH"
После этого вам может потребоваться запустить source ~/.bash_profile && hash -r
и изменения вступят в силу. После этого, если все работает правильно, при запуске команды which adb
, приведенной выше, должен быть показан желаемый путь к ADB.
В genymotion переходят к Настройкам → ADB и выбирают SDK, который Вы установили.