昨天同事说她的Android程序在客户那里使用有问题,我看了下觉得是跟安卓版本有关,于是想测试下,发现还没装模拟器。上网查了下,Android AVD在mac下的表现跟Windows上一样的糟糕,我就想到了用Windows时用的Genymotion模拟器。(不知为什么这个地址好像被墙了。)安装过程中遇到一些问题,这个时候就后悔当初怎么没写个博客记录下。。
简介及安装
Genymotion模拟器是个比较优秀的模拟器,依赖VirtualBox,跨平台,有免费版和收费版,收费版功能比免费的更加丰富。体验比Android AVD强得多。适合开发者。
我是通过brew cask
来安装的
brew cask install genymotion
他会先安装依赖VirtualBox
,有点慢,,然后要输入管理员密码,,然后才安装Genymotion,,更慢。。耐心等待吧。。
配置
主要是ADB的配置。我之前装了Android SDK,所以把adb改成Android SDK里面的比较统一一些。
更改了配置之后就可以新增虚拟机了。
点击主界面的add,会弹出选择界面,但是要先登录,才能进行操作。
问题一:开启虚拟设备出现黑屏或停留在Android图标上无法进入
这种情况,可能是由VirtualBox的配置引起的。
打开VirtualBox,cmd + ,
进入偏好设置:
打开编辑这个配置:
上面都是默认的设置截图,这里要把主机虚拟网络中的IPv4地址改成在DHCP服务器中最大地址和最小地址之间的地址。
然后重启Genymotion就可以了。
参考:stackoverflow
问题二:无法安装Genymotion-ARM-Translation或apk
由于Genymotion安装虚拟机是在x86架构下编译的Android,而大部分Android手机都是基于arm架构的CPU的,所以它上面是不能直接运行正常的程序的,所以如果直接安装apk会报错。对此,官网上是这么回答的:
大致意思就是如果你是这个app的开发者,那么请打包x86版本的app,,如果你不是,那么你可以在网上搜索支持包(翻译包)。。并且我们不建议你这么做,因为这样的程序不能稳定运行。。
我也是有点奇怪,,官方竟然没有提供这种支持包,,还要依赖于Internet。
但是在Windows上的版本也是这样的,当初我也是这么做的。
这个支持包有几个版本:
- Genymotion-ARM-Translation_v1.1.zip 这个版本的支持Android4.0以下,这个网上流传的比较多,可以随便搜。。
- ARM_Translation_Lollipop.zip 这个版本的支持Android5.0
- ARM_Translation_Marshmallow.zip,这个支持Android6.0,是我上传到csdn的。
但是比较奇怪的是我把这个东西拖拽进我的虚拟机之后,并不能开启转换的功能,提示我发生了一个错误,详情请看log。我去看了log,然而没有有用的信息。似乎根本没有记录这个错误。
Google到有人说这是因为Windows需要的文件和mac需要的文件是不同的,所以是我找错了。。然而最后发现并不是。。
解决方案是这样的,主要思路是将ARM_Translation_Marshmallow.zip
文件拷贝到对应的目录下:
首先查看adb能否链接到虚拟机:
adb devices
会列出当前链接的机器和状态,如果状态是offline
,那么可以重启adb试下:
adb kill-server
adb devices
应该可以恢复激活的状态,然后用adb将文件放入设备存储中:
adb push ~/Downloads/ARM_Translation_Marshmallow.zip /sdcard/Download/
然后进入adb shell,利用Genymotion提供的flash-archive.sh
脚本将这个zip刷入机器:
adb shell
sh /system/bin/flash-archive.sh /sdcard/Download/ARM_Translation_Marshmallow.zip
然后重启,就OK了,可以安装app了!
问题三:Windows下管理员模式打开无法移入文件
这是我刚刚想到当初用这个东西的时候遇到的奇葩问题。
当时是在Windows下,打开Genymotion第一次没问题,后面打开VirtualBox就会崩溃,无法运行!经过摸索,发现用管理员权限打开就没问题,不会崩溃了!但是又出现了新的问题,用管理员权限打开之后无法拖入文件!!简直坑爹。。Google发现还有其他人也遇到了这样的问题,但是没找到原因和解决方案。。
不过有网友分析无法拖入文件应该是因为权限问题!然后按照这个思路,我用管理员权限打开了WinRAR。。在里面找到待拖入的文件,这回就能拖进去了!!!
想到这个,就把它写在这里了。