目前做Android自动化模拟用户操作的工具不多,还有一些工具是基于一些脚本框架封装的只能执行一些特定操作的应用。基于目前这类教程网上资源稀缺的现状下,我给大家推荐两款好用的工具,方便大家做相关方向的项目时可以参考。下面给大家介绍的两款好用的安卓自动化工具,也是本人常用的,感觉不错的两款:ADB和Autojs。
下面内容我将分别向大家介绍这两款工具的情况,然后列出一些常用命令,最后我会分别用两种工具做一个自动刷抖音的工具(每10秒滑动一次)。
一、ADB
ADB全称为Android Debug Bridge(安卓调试桥)。它是一个命令行窗口,用于通过电脑端与模拟器或者Android真机之间的交互。ADB是一个C/S架构的应用程序,由三部分组成:运行在pc端的adb client:命令行程序”adb”用于从shell或脚本中运行adb命令。首先,“adb”程序尝试定位主机上的ADB服务器,如果找不到ADB服务器,“adb”程序自动启动一个ADB服务器。接下来,当设备的adbd和pc端的adb server建立连接后,adb client就可以向ADB servcer发送服务请求;运行在pc端的adb server:ADB Server是运行在主机上的一个后台进程。它的作用在于检测USB端口感知设备的连接和拔除,以及模拟器实例的启动或停止,ADB Server还需要将adb client的请求通过usb或者tcp的方式发送到对应的adbd上;运行在设备端的常驻进程adb demon (adbd):程序“adbd”作为一个后台进程在Android设备或模拟器系统中运行。它的作用是连接ADB服务器,并且为运行在主机上的客户端提供一些服务。
1、使用之前你需要在电脑上安装好adb。
第一种就是最简单的方法,只下载adb压缩包去解压即可:链接: https://pan.baidu.com/s/1aYbFwTjx20S1hOC6BYnhGQ 密码: (关注微信公众号“程序员唐丁”获取)(备注:Windows下载到哪个盘下解压后,之后使用中打开dos窗口都要进入到那个盘,然后再去执行adb命令,输入adb查看它是否安装成功);第二种方法前提是已安装了Android Studio,它本身带有adb命令,如果配置好的Android Studio 一般都是可以直接调用adb命令的。安装成功后执行:adb --version
如下图
2、电脑安装完adb后需要打开自己手机的开发者模式,开启USB调试功能。并且需要用USB线连接手机和电脑(也可以采用无线连接,需要在同一局域网下,这个连连接方式大家自行百度)。
之后执行 adb devices
,出现下图所示说明adb已经成功连接到设备了。
3、这个时候已经可以在终端输入adb命令执行了,下面给大家列举一些常用的adb命令:
1、查看是否连接成功
adb devices
2、锁定/解锁手机(指纹或人脸解锁无效)
adb shell input keyevent 26
adb shell input keyevent 82
3、重启/关机
adb shell reboot //重启
adb shell reboot -p //关机
4、打开/关闭蓝牙
adb shell service call bluetooth_manager 6 //打开蓝牙
adb shell service call bluetooth_manager 9 //关闭蓝牙
5、打开关闭wifi
adb shell svc wifi enable //打开wifi
adb shell svc wifi disable //关闭wifi
6、打开wifi设置界面
adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings
7、模拟按键操作
adb shell input keyevent 111
8、模拟滑动触屏操作
adb shell input touchscreen swipe 930 880 930 380 //向上滑
adb shell input touchscreen swipe 930 880 330 880 //向左滑
adb shell input touchscreen swipe 330 880 930 880 //向右滑
adb shell input touchscreen swipe 930 380 930 880 //向下滑
9、模拟点击操作
adb shell input mouse tap 100 500
10、拨打电话
adb shell am start -a android.intent.action.CALL -d tel:10010
11、打开网站
adb shell am start -a android.intent.action.VIEW -d http://google.com
12、安装、删除app
adb install abc.apk //第一次安装。如果手机上已经有此app,则会报错。
adb uninstall com.example.appname
13、启动APP
adb shell am start -n com.package.name/com.package.name.MainActivity
adb shell am start -n com.package.name/.MainActivity
14、关闭/重启adb服务进程
adb kill-server
adb start-server
15、截屏操作
adb shell screencap -p /sdcard/picture.png #截屏
adb pull /sdcard/picture.png#传到电脑
adb shell rm /sdcard/picture.png#删除手机端截屏
4、下面我就利用Python的os模块加上adb命令做一个自动刷抖音的脚本
#导入os和time模块
import os
import time
#找到抖音应用的包名和activity
package_name = 'com.ss.android.ugc.aweme'
activity_name = 'com.ss.android.ugc.aweme.splash.SplashActivity'
#打开抖音
os.system('adb shell am start -n %s/%s' % (package_name, activity_name))
#等待5秒,防止网络延迟
time.sleep(5)
#循环刷抖音
while True:
#滑到下个视频
os.system('adb shell input touchscreen swipe 930 880 930 380')
#等待10秒
time.sleep(10)
二、Auto.js
Auto.js 是个基于 JavaScript 语言运行在Android平台上的脚本框架。Auto.js主要工作原理是基于辅助服务AccessibilityService。Auto.js无需Root权限,只需要将手机设置里面的无障碍模式开启,便可以开始开发了。它的用途非常多:
数据监控:可以监视当前手机的数据;
图片监控:截图获取当前页面信息;
控件操作:模拟操作手机控件;
自动化工作流:编写简单的脚本,完成一系列自动化操作。如:微信/QQ自动点赞,快速抢单等。
定时功能:定时执行某个脚本,来完成定时任务。如:定时打卡签到等。
我个人是更倾向于使用Autojs的,因为本人在实际使用中需要同时操作上百部手机,这种情况下,adb在管理大批量手机方面就显得逊色了一点。
1、使用前需要在手机上安装autojs应用,链接: https://pan.baidu.com/s/1u7ZapOnVq9IAEBLX59z2vA 密码: (关注微信公众号“程序员唐丁”获取)。大家直接下载安装即可。同时还需要在电脑上安装开发工具(推荐使用visual studio code),具体安装步骤可以参考这篇博客:http://www.360doc.com/content/20/0301/22/63408870_896035619.shtml。
2、手机和电脑环境搭建完成后就可以开始写代码了。同样的给大家分享一些常用函数:
//设备模块
device.width//得到手机分辨率-宽
device.height//得到手机分辨率-高
device.brand//得到手机品牌
device.model//得到手机设备型号
device.sdkInt//得到手机安卓系统API版本。例如安卓4.4的sdkInt为19。
device.release//得到手机安卓系统版本号。例如"5.0", "7.1.1"。
device.getBattery()//返回手机电量-百分比
device.isCharging()//判断手机是否在充电-boolean
//模拟点击模块
click(x, y)//模拟点击坐标(x, y),并返回是否点击成功。只有在点击执行完成后脚本才继续执行。
longClick(x, y)//模拟长按坐标(x, y), 并返回是否成功。只有在长按执行完成(大约600毫秒)时脚本才会继续执行。
swipe(x1, y1, x2, y2, duration)//duration {number} 滑动时长,单位毫秒,模拟从坐标(x1, y1)滑动到坐标(x2, y2),并返回是否成功。只有滑动操作执行完成时脚本才会继续执行。
//多媒体模块
media.pauseMusic()//暂停音乐播放。如果当前没有在播放音乐,则调用函数没有任何效果。
media.resumeMusic()//继续音乐播放。如果当前没有播放过音乐,则调用该函数没有任何效果。
media.stopMusic()//停止音乐播放。如果当前没有在播放音乐,则调用函数没有任何效果。
3、下面我就利用Autojs做一个自动刷抖音的脚本
//等待开启无障碍服务
auto.waitFor();
// 打开抖音
app.launchApp('抖音');
//等待5秒
sleep(5000);
while(1){
//滑到下一个视频
swipe(50,1000,50,400,200);
//等待10秒进入下次滑动
sleep(10000);
}
当然Autojs的功能远远不止这些,其他功能后面再向大家介绍。