最近经常看到用Python操作手机APP的项目,例如抖音、闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境。至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里。

为了使没有安卓开发经验的人也能快速学会用Python操作手机APP,我从Android SDK部署、ADB基础应用、Python操作手机等方面入手写了这篇文章,目的是使大家对ADB的使用有一个直观的认识,这样在玩上面提到的这些项目时会更轻松一些。

事先声明:本文涉及的各类操作可能有多种实现方法,我只会提及其中一种,而且我采取的方法很有可能不是最优的方法。

1

Android SDK下载和部署

说起Android SDK工具,那还真是不少,有SDK Tools、SDK、Platform-tools等等,这里我推荐SDK Tools,进入https://www.androiddevtools.cn/这个网站可以看到下图中的界面,选择自己对应的系统版本(zip版)下载。

将下载后的文件解压缩,运行其中的SDK Manager.exe文件,进入Packages安装管理界面,对于新手朋友们我建议直接使用默认选项,然后点击右下角的 Install XX packages 按钮,整个下载安装过程大概需要几十分钟,具体时间跟个人网速有关。

接着就是配置环境变量了,把android-sdk目录下的platform-tools和tools文件夹添加到系统变量中,这一步属于常规操作,我就不再演示了。

执行完以上步骤,ADB环境就算配置完毕了,之后要做的就是开启手机的开发者选项、开启USB调试、用usb线将手机跟电脑链接。

下面进入关键的一步——通过ADB测试手机是否连接成功。进入系统终端,输入adb devices指令,如果出现下图中的结果,就说明刚才的环境部署成功了,其中device前面的是连接的设备号。

如果连接测试不成功,例如找不到设备或者设备连接不上,可以依次尝试关闭并再次开始调试、重启手机、重启电脑、插拔USB线等操作,通常都可以解决。

2

ADB的一些基本操作

虽说是基本操作,但ADB的命令也还是挺多的,说多了大家一时也难以消化。所以我这里只列举几个操作手机APP常用的指令,都是一些基本的操作。

1).显示所有包名

adb shell pm list packages

这个指令会罗列出手机已经安装的所有应用包的名称,如果后缀加上参数-s,则会列出所有的系统应用的名称(下图),而加上后缀参数-3则会列出所有第三方应用名称。

2).显示活动程序

adb shell dumpsys activity activities

这个指令能够获取到当前手机系统中正在运行的程序包的名称,例如当我在手机中启动小米手机的“游戏中心”,运行上述指令就会获取到下图中的信息:

图中realActivity后面的参数就是当前正在运行的Activity名称,稍微留意一下就会发现,这个名称相比上面的包名称要更加详细一些,至于这个名称有什么用,我们马上就会提到。

3).启动应用程序

adb shell am start -n 要启动的应用Activity名称

这里所使用的Activity名称就是刚才获取到的realActivity后面的参数,使用这个指令时要注意,启动APP一定要使用上一条命令获取到的Activity名称,不能使用adb shell pm list packages命令获取到的包名称。例如,我们如果要启动小米的游戏中心,可以使用命令:

adb shell am start -n com.xiaomi.gamecenter/.ui.MainTabActivity

而如果使用了下面这条命令是无法顺利启动应用的:

adb shell am start -n com.xiaomi.gamecenter

4).停止应用程序

adb shell am force-stop 要停止的应用名称

这条指令会强制停止指定的应用程序,跟程序的启动略有差别,在停止应用时,使用adb shell pm list packages命令获取到的包名称就可以了。还是以小米的游戏中心为例,停止应用使用以下指令:

adb shell am force-stop com.xiaomi.gamecenter

5).点击指定位置

adb shell input tap x y

这条指令就很好理解了,模拟点击手机屏幕中的某个位置,(x,y)是对应的位置坐标。在ADB中默认手机屏幕的左上角坐标是(0,0),右下角坐标是(xmax,ymax)。

这里强调一点:使用模拟点击功能必须设置手机允许通过USB调试修改权限或点击模拟,下文中的滑动手机屏幕、输入文字信息等功能也需要进行同样设置。

6).滑动手机屏幕

adb shell input swipe x_start y_start x_end y_end

这条指令的本质是使得坐标为(x_start, y_start)的点移动到(x_end, y_end)的坐标位置,以此来实现屏幕滑动的效果。

7).输入文字信息

adb shell input text 需要输入的字符

这条指令没什么好说明的,选定对应位置,然后输入对应的字符即可。

8).模拟手机按键

adb shell input keyevent X

现在的大部分手机除了常规键盘字符以外还有一些特殊按键,例如HOME键、音量+/-,以及软键盘中有时会出现的确认键等等,这些按键的模拟就可以通过上面这条指令来实现。

其中X对应的是特殊键的编号,下面举几个常用的例子(其他的特殊键还有很多):

  • 3对应的是HOME键

  • 24对应的是音量+

  • 25对应的是音量-

  • 66对应的是确认键

9).获取元素位置

细心的朋友现在可能会发现,上面提到的一些关于模拟点击、模拟输入的命令,都涉及到手机元素定位的问题,那么我们在实践中如何确定具体的坐标位置和元素信息呢?这里我提议使用uiautomatorviewer.bat这个工具,它会随着SDK Tools一起安装,就在tools目录下。

来看下面这幅图,手机连接成功后,点击左上角的绿色图标就会获取到手机的当前页面信息,然后在屏幕左侧可以点选任意位置或者元素,相关信息会在右侧屏幕中显示。

是不是感觉跟用chrome分析网页非常类似,有了这些信息,再使用上面提到的几款指令操作手机就不是问题了。

3

Python操控手机App

1).命令行操控

前面讲了ADB操控手机的一些基本操作,只有理论未免太枯燥,现在我们做个小试验来看看效果。

我们还是以小米的游戏中心为例,使用ADB依次完成以下任务:

  • 切换到“网游”选项卡,指令:adb shell input tap 400 263

  • 选中搜索栏,指令:adb shell input tap 776 139

  • 输入“wangzherongyao”,指令:adb shell input text wangzherongyao

  • 点击确认键,指令:adb shell input keyevent 66

  • 进入王者荣耀游戏页面,指令:adb shell input tap 600 500

为了录制方便,我把手机屏幕同步到电脑中,来看看试验效果:

(手机同步电脑-视频)

2).Python脚本操控

从上面的演示视频看,使用ADB操作手机APP还算比较成功,但是如果像刚才那样逐条输入指令,可能还不如直接操作手机来的方便,那么我们就需要借助Python脚本使其批量化、自动化运行。

Python执行终端指令可以借助os.system()函数,我们来看下面这段代码:

上面代码所实现的功能跟我们之前演示的基本一样,主要增加了一个打开游戏中心的操作、简化了一些中间步骤,再来看这次的操作过程(下面的视频),是不是比刚才流畅的多了?

(Python演示操作-视频)


小结:

今天的文章讲到的都是ADB的入门级操作,不懂ADB很多跟安卓APP有关的实践都没办法实现,但是仅仅学会这些还不足以实现一个像样的控制脚本,想要学习更牛逼的操作,可以去参考我在文章开头提到的一些项目。

更多有趣有用文章

懒人专用的奇淫技巧,用Python实现炫酷的语音操作电脑

Python里三个最高逼格的调试神器

九大神招,让Python里数据分析神器Jupyter,完美升华

推荐一款Python编辑器,集Pycharm和Sublime优点于一身的王者

当心啊!仅仅50行Python,就可以在手机端看小姐姐的电脑桌面!

自动编写Python程序的神器,Python 之父都发声力挺!

史上最全的用Python操控手机APP攻略!建议收藏!相关推荐

  1. 用Python操控手机APP攻略一

    [转自https://mp.weixin.qq.com/s/m5NVrayleQWztpJNbZ7mEA为了防止文章失效特此备份] 史上最全的用Python操控手机APP攻略!建议收藏! 原创 大刘  ...

  2. python手机版怎么用-如何用Python操控手机APP攻略!建议收藏!很全面

    最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. 为了 ...

  3. 如何用Python操控手机APP攻略!建议收藏!很全面

    最近经常看到用Python操作手机APP的项目,例如抖音.闲鱼之类的,看完后发现这些项目无一例外需要部署ADB环境.至于什么是ADB,很多大神都讲过,只是写得比较专业,我等菜鸟看完还是云里雾里. 为了 ...

  4. python教程app攻略_一篇清晰易懂的Python操控手机APP攻略!

    阅读全文大概需要 9 分钟. 最近由于一直处于在家远程办公状态,新的一年,很多公司.部门事情要处理,比较忙,公号原创文的创作速度明显减慢!亲爱的读者们,你们都等着急了吧. 最近经常看到许多公号在推一些 ...

  5. sql server与java实例_史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)

    活动预告:本周六,在北京将迎来一年一度的 ACOUG年会,在本次年会上,我们将对社区过去一年的工作进行回顾和梳理,并展望和探讨下一年工作的内容,同时,本次年会也开放了直播通道,名额不多,报名从速哦~ ...

  6. 史上最全阿里Java面试题目大汇总!强烈建议收藏~

    阿里面试题目目录 技术一面(基础面试题目) 技术二面(技术深度.技术原理) 项目实战(项目模拟面试) JAVA开发技术常问的问题 阿里必会知识 阿里面试范畴 阿里面试总结 一:阿里技术一面(基础掌握牢 ...

  7. [Git] 写文章 史上最全文献检索、阅读及管理攻略

    copy from  : https://zhuanlan.zhihu.com/p/30605683 一.查文献 首先,我认为需要常备几个体量大.文献全的数据库,有针对性找哦!下面列出了一些适合所有专 ...

  8. 史上最全Microsoft Edge 中的键盘快捷方式!(建议收藏!)

    Ctrl + Shift + B 显示或隐藏收藏夹栏 Alt + Shift + B 将焦点放在收藏夹栏中的第一项上 Ctrl + D 将当前选项卡另存为收藏夹 Ctrl + Shift + D 在新 ...

  9. 史上最全:PostgreSQL DBA常用SQL查询语句(建议收藏学习)

    编者的话:PostgreSQL连续两年被评为年度数据库,备受很多DBA的青睐,本文我们一起来了解学习PostgreSQL常用的查询语句有哪些? 查看帮助命令 DB=# help --总的帮助 DB=# ...

最新文章

  1. vsftp中配置默认目录
  2. 最全面详细讲解Oracle入门
  3. 场景法设计测试用例atm_测试用例设计经典面试题之电梯、杯子、笔、桌子、洗衣机、椅子、ATM等...
  4. centos7安装mysql8.0简书_CentOS7安装MySQL8.0图文教程
  5. MVC 之 属性详解
  6. 「软件项目管理」一文详解软件配置管理计划
  7. 首席技术执行官_如何在几分钟内找到任何首席执行官的电子邮件地址
  8. 业界资讯:adobe air 2.7 beta发布
  9. 编写了一个文件编码转换器。
  10. 跳表 skipList
  11. 个人账目管理系统oracle,个人账务管理系统(论文).doc
  12. matlab中符号函数sgn,matlab 饱和函数 sat
  13. TCP协议详解 (史上最全)
  14. matlab K近邻均值平滑滤波,K近邻均值滤波
  15. 信域安全云网产品架构
  16. 冰点还原精灵授权问题解答
  17. dest在C语言什么作用,目前最全面的dest答疑问题及相关回答
  18. 关于JAVAFX的鼠标单击事件案例
  19. 在微信里接收文件后如何指着文件用咱编的APP打开?
  20. html5给页面添加树叶特效,jQuery超酷页面树叶飘落装饰特效插件

热门文章

  1. 【李佳辉_周报_2022.9.11】
  2. 云南小学、初中、高中标准教学实验室设备配置清单整体解决方案
  3. pikachu全网最详细安装教程
  4. Windows自带的播放器Media Player实现快进
  5. ts, mp4文件快进快退(seek)原理
  6. HW - VCN 介绍
  7. 财务管理html,财务管理.html
  8. 前端性能优化必备技能 - 利用 Chrome Dev Tools 进行页面性能分析
  9. hypermesh和lsdyna联合仿真计算某汽车座椅进行的头冲吸能实验
  10. Android的绘画软件,可以画漫画的软件有那些?你们要的安卓绘画软件,拿走吧!...