最近有个项目大概需求是 根据服务端发送的指令 去执行一些特定的操作采集数据后并上传给服务器,前后搞了10来天,总算是搞出来了,现在记录下,省的以后忘记
给以后有类似需求的小伙伴多点资料,有啥问题可以联系我QQ 442947949 带上备注
刚拿到这个需求的时候一头雾水根本不知道怎么做操作,立马上网找资料,并且询问相关人员,想着这玩意跟测试一点有点关系,于是搜了许多移动端测试框架,
最后发现很多测试框架都需要基于链接PC端执行,但是我们的需求有不能连接PC,单独一个APK就行了。
最后对比了下 还是决定用最原始的 uiautomator 来做(其实应为项目比较急,周期为一个月,看了下感觉这个最容易上手),
好了主要问题解决了 接下去就是思考一需求上需要实现的问题了
比如我们要做一个微信助手(自动附近打招呼,回复信息,上报好友,发朋友圈,虚拟定位) 目标手机是100台,
其实,100台跟一台手机都一样,能控制1台就能控制一百台
前沿:uiautomator 这个是必须要了解的,百度下资料很多,大概看个半小时差不多了,然后就直接上手测试吧,有各种坑等你,不过没关系 应为uiautomator 需要掌握的东西并不是很多,相信你很快就会学会
1.uiautomator 写好的脚本怎么跑?(http://blog.youkuaiyun.com/robinzhou/article/details/8447058 这篇文章是写这么生成uiautomator脚本的必须看)
这个比较简单了,我们在PC端使用adb命令 可以直接调用uiautomator 来执行我们编译后的脚本,那边在android手机上肯定也是可以的嘛 ,直接当shell脚本跑嘛
(http://blog.163.com/wangguangxu08@126/blog/static/103783575201421454122742/) 执行工具类 这里需要ROOT掉手机,不然不行
2.怎么跟服务端通信?
这里我采用了个推 服务端给机子发消息 接受后 根据指令调用不同的脚本,回传就很简单了,执行完毕脚本后http回传到服务端就好了
3.如何采集会员消息
一个新的知识点,安卓无障碍模式, accessibility 啥红包助手,自动安装,基本都是基于他来做的,他主要的功能就是能监控指定APP当前状态,各种事件,然后又有uiautomator 的一些功能,这样就很好理解了吧
拦截通知栏,然后拿到消息,处理, 有人发红包了,通知栏收到红包 立马唤醒微信,然后点到第一个群 拿到红包 控件,点击打开,
其实就2步, 拦截通知栏,调用抢红包脚本
4 如何虚拟定位?
这个也很简单 我也是参考了https://github.com/Aslanchen/SimulateGps 这个项目,大家可以下载看看,去掉不需要的代码,剩下修改经纬度的就行了。
(不过现在很多APP 都会更具WIFI基站来获取位置,所以有这个功能可能以后会没啥用)
5.100台手机 如果APP要更新怎么办?需要一个个来吗?
第一次安装的时候记得装个守护APP,设置开启启动,然后注册个广播,监听我们APP 安装,
服务端发送升级指令时,我们调用系统安装APP的方法,然后无障碍模式接管安装,安装成功后守护APP 启动新应用,这样就完成自动升级再启动APP ,
这样以后机子再多也不用担心控制不过来
6.遇到的各种问题,比如下载文件图片等打开相册没显示,但是图片确实下载下来了
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri uri = Uri.fromFile(file); intent.setData(uri); context.sendBroadcast(intent);
我们需要广播下 让系统及时更新数据库
7.uiautomator 下无法输入中文
这个http://blog.youkuaiyun.com/zimo2013/article/details/49621173 上面有 需要下载个特殊字体
8.一些坑
1.wif状态监控,记得要监听 不然断网后 APP可能回死掉,我们在断网恢复后 执行一些方法,去跟服务端发送消息,具体按照业务来啦
好像差不多了。了解这些东西就够了, 不知道自己想的这样的方式行不行,如果其他小伙伴有更好的办法 求告知!