android 模拟器测试之旅
近期,app 需要在模拟器上跑,主要验证在低内存(1g~2g)的环境中看下app会不会出现崩溃或者异常。
Android studio的模拟器
最开始就选择了google亲儿子验证。毕竟下载速度快,写测试demo的时候也运行过。一番操作下来,首先发现了第一个问题:
1. 模拟器占用空间大,C盘不够用了
百度下,配置了环境变量android_sdk_home,然后去C:\Users\xxx\.android\avd 目录把对应的模拟器删了很轻松就搞定了。
创建新的avd,选择android版本,选择system image,创建好了之后。第二步就是安装apk了。因为apk里面有很多资源文件,包括外部配置,地图等。直接运行是没法安装的,因此都是把资源文件打包到apk里面再进行安装。打好包,打开cmd,跳转到adb 命令所在的目录(我的是D:\software\android\platform-tools下),把apk拷贝过来,运行命令adb install 命令。
到这里出现了第二个问题:
2. install_failed_no_matching_abis 错误。
继续百度:
https://*.com/questions/24572052/install-failed-no-matching-abis-when-install-apk
上面讲的比较清楚了程序用的native library跟你模拟器的cpu 架构不匹配。网上搜了下解决办法,在app的build.gradle中加上这样一句话即可:
// 解决 native libraries 不支持cpu的体系结构。允许模拟器调试
android {
splits {
abi {
enable true
reset()
include 'x86', 'armeabi-v7a','x86_64'
universalApk true
}
}
}
OK,按部就班操作。重新打release包,报错。但是release下就生成了对应的apk。查看了下app的build.gradle的配置,注释掉了相对的打包配置
重新打包,成功。在release下,每个架构都生成了一个apk.
查找了下模拟器的架构,发现是x86的,
把app-x86-release.apk 放到了对应的目录下,重新运行 adb install 命令。安装成功!
原以为万事大吉,后面只需要找找修改模拟器内存的方式改下。然后运行下就ok了。可惜在运行的时候发现又报错了, 第三个问题:
so库与jar包不匹配
难道刚刚解决的不是这个问题吗?回想起之前弄so文件的时候也经常出现这个错误。看了下代码结构
难道说要找armeab-v7a架构的模拟器才行?简单查了下 还真在模拟器的选项上发现了。
好吧,那就重新建立个模拟器吧,反正也不费什么事儿,一通操作… , 下载成功,启动模拟器!第4个问题:
google arm架构的模拟器简直没法用
启动模拟器过程中弹出了个这个
没事,小问题,不管它,等了几分钟模拟器黑屏没动静,又等了十几分钟一直卡在android图标界面。半个多小时之后模拟器终于启动了,怀着激动的心情点击了几下模拟器,发现模拟器卡住不动了。重启之后一通操作的我终于意识到了上面那个10倍速度的慢是有多慢。
一边挂着google的模拟器,一遍寻求其它的解决办法。
转战genymotion
听大家说genymotion模拟器好用,而且安装可以不用adb命令,直接拖拽。那好吧,去官网瞅瞅
下一个带VitualBox的。安装,exe先装genymotion模拟器,再装virtualBox。 一切顺利,启动;哦,要账号,记得之前好像不需要账号的啊?算了 注册一个;啥,要收费?那免费试用30天的吧!register之后,发现邮箱里面并没有收到**邮件,等了几分钟,发现了这个。
这也太不靠谱了吧?我要这儿折腾一个小时(实际也没要1h,大概十几分钟之后收到了邮件)?而且听说这个模拟器还需要去下载一个兼容包(Genymotion-ARM-Translation.zip)才能跑arm架构的apk。此路不通?换?
转战雷电模拟器
寻寻觅觅,找到个雷电模拟器(听说支持arm架构),网上一搜发现有很多夹带私货的推广。发下官网地址:
https://www.ldmnq.com/
进去下载试了下,发现出乎意料的好用。程序很快就安装跑起来了,没出幺蛾子,修改内存简单,在设置里面修改, 重启就好。至此模拟器的选择就搞定了。
吐槽一下不好的地方:
- 雷电模拟器根据自己的版本支持android版本,比如我用的雷电模拟器大版本是4.x,那么对应支持的android模拟器的版本是7.1,无法新建其它版本的模拟器。这也是跟google模拟器以及genymotion的区别,比较人家搞这个主要是玩手游,多开方便的。
- 另外不知道是我电脑分辨率的原因还是什么其它原因?我的电脑显示没有退出按钮
好了 ,自此完结。