一、简介
二、组件
三、组件说明
1、Android Training虚拟机环境
2、MobaXterm
3、adb.sh脚本
4、Genymotion
四、设备网络模式
五、模拟器APP运行情况
六、与Open-STF集成
1、Open-STF通过provider方式接入模拟器
2、Open-STF通过adb方式接入模拟器
七、QA
===
为了方便进行android测试,将android测试的资源集成到一起。
Android测试环境示意图如下:
===
虚拟机文件可以导入VirtualBox,也可以导入Vmware。这里使用Vmware是因为VirtualBox环境bug太多很不稳定,因此使用Vmware。
虚拟机使用PC上的共享文件夹,adb脚本以及测试的apk文件,均放在此目录下。
增加了一个Vwware网卡,桥接到VirtualBox的Hostonly网卡,这是用来打通adb脚本与genymotion上的android环境。
虚拟机2块网卡,一个桥接,另一个连接到Vmnet2,用来打通VitualBox上的Genymotion环境。
配置Terminal使用zsh环境
session里指定terminal启动路径及使用windows的环境变量
脚本可同时运行在MobaXterm(Widnows)和Linux(Android Training虚拟机)下,运行在Linux下时无法连接到127.0.0.1的模拟器(可以使用nginx打通)。脚本内容包括adb.sh、devices和packages文件以及share、temp文件夹。
脚本功能如下
devices文件是用来存放android设备的信息,内容如下,其中DeviceID是adb命令连接的信息。
packages文件用来存放apk信息,内容如下:
其中DirName是对应到app的路径,如下:
share目录
share目录下包含一些公共的文件,比如genymotion ARM扩展包、Burpsuite证书,会把这些文件push到设备的/sdcard/Download/下。
temp目录下是从设备上pull过来的内容,会存放在这里。
app目录
以版本区分,每个路径一个版本。
temp下存放pidcat、logcat输出的日志文件。
genymotion安装arm扩展包方法:
adb push E:\Genymotion-ARM-Translation_v1.1.zip /sdcard/Download/
adb shell /system/bin/flash-archive.sh /sdcard/Download/Genymotion-ARM-Translation_v1.1.zip
重启模拟器
在adb.sh脚本中(b选项)已经集成了该步骤。
===
略。
a、使用nodaemon方式启动server:
adb nodaemon server -a
后台运行:
adb nodaemon server -a &
b、重新编译adb包,然后使用命令可以监听所有地址;
adb -a server
可直接在STF平台上通过adb connect IP:PORT方式接入设备,如果STF平台不是部署在和模拟器同一台机器上,那么地址是不可达的。
模拟器均监听在127.0.0.1上,为了使STF平台和模拟器可以互通,在windows平台上使用nginx做tcp端口转发即可。
nginx版本需支持stream,示例配置如下:
stream{
proxy_timeout 30m;
server{
#MuMu模拟器
listen
7555``;
proxy_pass
127.0``.``0.1``:``7555``;
}
server{
#逍遥模拟器
listen
21503``;
proxy_pass
127.0``.``0.1``:``21503``;
}
server{
#逍遥模拟器
listen
21533``;
proxy_pass
127.0``.``0.1``:``21533``;
}
server{
#夜神模拟器
listen
62025``;
proxy_pass
127.0``.``0.1``:``62025``;
}
}
1、逍遥模拟器启动的时候会自动启动它的安装路径下的adb server,如果本地已经启动了adb server,这时候会报一些错误。可以先启动逍遥模拟器,后启动adb server,或者将逍遥模拟器和本地adb替换为同一版本。
2、adb -a不生效,一些解决办法:
http://www.cnblogs.com/rxwen/archive/2009/11/26/1713032.html
http://www.it610.com/article/5450684.htm
http://rxwen.blogspot.com/2009/11/adb-for-remote-connections.html
https://android.stackexchange.com/questions/52911/adb-start-server-and-listen-on-all-interfaces