情况一:Genymotion与adb连接不上,报错"adb server version (39) doesn't match this client (40); killing...”
情况剖析:
安装Genymotion 2.12.10及以下版本后出现的情况,因为2.12.10版本的Genymotion自带的adb版本为1.0.39,而Android Studio 3.4版本自带的adb为1.0.40版,所以Genymotion虚拟机与adb工具版本冲突,所以报错,adb连接不上虚拟机。
当系统的adb版本为1.0.40及以上版本时,推荐安装Genymotion 2.12.12版本,因为Genymotion 2.12.10及以下版本中自带的adb为1.0.39及以下版本,会出现adb与虚拟机或Android Studio连接不上的问题。
情况二:Genymotion虚拟机启动后,虚拟机一直黑屏,不能进入Android系统:
笔者使用的电脑配置是:
硬件:DELL笔记本电脑,CPU是Intel Core i3-2310M,RAM是4GB,显卡是集成显卡HD 3000,系统是Windows 7(64位版)等。
Android Studio 版本:3.4
adb版本 (Android Studio 3.4软件自带的版本):Android Debug Bridge version 1.0.40 | Version 28.0.2-5303910
情况剖析:
试验1:当安装Genymotion2.12.0及以下版本时,出现虚拟机连接不上adb和Android Studio的情况。
试验2:当安装Genymotion 3.0.0及以上版本时,笔者电脑上新建的虚拟机出现启动后黑屏进不了Android的情况。
网上解释1——因为显卡驱动与Genymotion冲突!
但是笔者卸载显卡驱动并恢复为Windows 7自带的核显驱动后,仍然存在Genymotion 虚拟机启动后黑屏进不了Android的情况。有可能是集成显卡的显存太小导致吗?
网上解释2——因为Virtual Box版本与Genymotion版本不兼容,导致黑屏进不了Android。
但是安装Genymotion 3.0.0及以上版本中自带Virtual Box 6.0版本后,仍然出现黑屏进不了Android的情况,所以有可能不是Genymotion与Virtual Box版本不兼容的问题吗?
解决方法:
下载并安装Genymotion 2.12.2版本,这个版本最完美!不会出现连接不上adb、Android Studio的情况,也不会出现虚拟机黑屏的情况。
Genymotion设置如下:
Genymotion -> Settings -> ADB -> Use Genymotion Android Tools (default)
报错情况(1):
adb server version (39) doesn't match this client (40); killing...
报错说明:
server version(39),指的是Genymotion虚拟机的adb版本号是39,
client(40),指的是本机SDK中的adb版本号是40,
当前环境说明:
Genymotion软件当前的默认设置是“Use Genymotion Android Tools (default)”:
Genymotion -> Settings -> ADB -> Use Genymotion Android Tools (default)
报错分析:
说明当前虚拟机所使用的adb版本号是39,而用户所使用的adb版本号是40,高于虚拟机的版本,所以要连接上虚拟机,需要使用39版的adb即可。解决问题的思路是,将Genymotion自带的39版的adb复制至sdk目录下,然后执行39版的adb即可连接上虚拟机。
解决方法:
1. 将Genymotion安装目录中tools文件夹下的adb.exe程序,复制并重命名为adb39.exe,并复制adb39.exe文件至android的SDK目录中的platform-tools文件夹下,可在命令行中执行(命令中的2个路径,需要替换为你的程序所在的实际安装路径):
copy D:\Genymotion\tools\adb.exe D:\Android\SDK\platform-tools\adb39.exe
2. 在cmd命令行中执行“adb39.exe”:
D:\Android\SDK\platform-tools\adb39.exe devices
3. 命令行提示找到虚拟机了:
List of devices attached
192.168.54.101:5555 device
4. 以后每次对虚拟机执行命令时,不要执行adb,而是要执行adb39.exe或adb39,即可。
报错情况(2)
adb server version (40) doesn't match this client (39); killing...
报错说明:
server version(40),指的是Genymotion虚拟机的adb版本号是40,
client(39),指的是本机SDK中的adb版本号是39,
当前环境说明:
Genymotion软件当前的默认设置是“Use custom Android SDK tools”:
Genymotion -> Settings -> ADB -> Use custom Android SDK tools ->
-> Android SDK:D:/Android/SDK (说明:此路径可替换为你安装Android SDK的实际目录)
√ Android SDK tools found successfully (说明:表示Genymotion已经检测并匹配到SDK目录)
报错分析:
说明当前虚拟机所使用的adb是Android SDK目录下的adb程序,版本号为40,而用户执行的adb版本号是39,低于虚拟机的版本,所以要连接上虚拟机,需要使用40版的adb。解决问题的思路是,将Genymotion设置为上文“报错(1)”中的设置"Genymotion -> Settings -> ADB -> Use Genymotion Android Tools (default)",然后执行39版的adb即可连接上虚拟机。
解决方法:
1. 关闭虚拟机
2. Genymotion软件当前的默认设置是“Use Genymotion Android Tools (default)”:
Genymotion -> Settings -> ADB -> Use Genymotion Android Tools (default)
说明:步骤3如果已经在之前操作过一次,则不用操作,直接检查(你的Android SDK目录)\platform-tools\下的adb39.exe程序是否存在,如adb39.exe已存在则可直接跳过至步骤4!
3. 将Genymotion安装目录中tools文件夹下的adb.exe程序,复制并重命名为adb39.exe,并复制adb39.exe文件至android的SDK目录中的platform-tools文件夹下,可在命令行中执行(命令中的2个路径,需要替换为你的程序所在的实际安装路径):
copy D:\Genymotion\tools\adb.exe D:\Android\SDK\platform-tools\adb39.exe
4. 在cmd命令行中执行“adb39.exe”:
D:\Android\SDK\platform-tools\adb39.exe devices
5. 命令行提示找到虚拟机了:
List of devices attached
192.168.54.101:5555 device
6. 以后每次对虚拟机执行命令时,不要执行adb,而是要执行adb39.exe或adb39,即可。