最近经常看到用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).显示所有包名

adbshellpmlistpackages

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

2).显示活动程序

adbshelldumpsys activity activities

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

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

3).启动应用程序

adbshellamstart -n 要启动的应用Activity名称

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

adbshellamstart -ncom.xiaomi.gamecenter/.ui.MainTabActivity

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

adbshellamstart -ncom.xiaomi.gamecenter

4).停止应用程序

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

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

adbshellamforce-stopcom.xiaomi.gamecenter

5).点击指定位置

adbshellinputtapxy

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

这里强调一点:

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

6).滑动手机屏幕

adbshellinputswipe x_start y_start x_end y_end

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

7).输入文字信息

adbshellinputtext 需要输入的字符

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

8).模拟手机按键

adbshellinputkeyeventX

现在的大部分手机除了常规键盘字符以外还有一些特殊按键,例如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()函数,我们来看下面这段代码:

上面代码所实现的功能跟我们之前演示的基本一样,主要增加了一个打开游戏中心的操作、简化了一些中间步骤

小结:

今天的文章讲到的都是ADB的入门级操作,不懂ADB很多跟安卓APP有关的实践都没办法实现,但是仅仅学会这些还不足以实现一个像样的控制脚本,想要学习更多Python相关的学习教程,尽请关注!

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

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

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

  2. python入门经典代码-python经典入门学习锦集就这篇够了,强烈建议收藏!

    原标题:python经典入门学习锦集就这篇够了,强烈建议收藏! Python 简介 Python 是一种高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.Python 由 Guido van ...

  3. 我的世界java版背景图更换_《我的世界手机版》如何修改界面背景 界面背景修改攻略图文教程...

    我的世界手机版中,开始界面的背景是可以自定义修改的哦?想不想知道如何修改开始界面的背景呢?想知道的话就跟随当乐网小编一起来看看吧: 教程作者:1360316710精彩内容,尽在百度攻略:https:/ ...

  4. Python之多线程:python多线程设计之同时执行多个函数命令详细攻略

    Python之多线程:python多线程设计之同时执行多个函数命令详细攻略 目录 实现功能 采取方法 应用场景 实现功能 同时执行多个函数命令 采取方法 T1.单个实现 import threadin ...

  5. Py之docx:Python库之docx简介、安装、使用方法详细攻略

    Py之docx:Python库之docx简介.安装.使用方法详细攻略 目录 Python库之docx简介 Python库之docx安装 docx使用方法 1.打开文档

  6. Py之Pandas:Python的pandas库简介、安装、使用方法详细攻略

    Py之Pandas:Python的pandas库简介.安装.使用方法详细攻略 目录 pandas库简介 pandas库安装 pandas库使用方法 1.函数使用方法 2.使用经验总结 3.绘图相关操作 ...

  7. Py之Pyinstaller:Python库之Pyinstaller简介、使用方法、安装详细攻略

    Py之Pyinstaller:Python库之Pyinstaller简介.使用方法.安装详细攻略 目录 Pyinstaller简介 Pyinstaller安装 Pyinstaller使用方法 1.使用 ...

  8. Py之pyglet:Python之pyglet库的简介、安装、使用详细攻略

    Py之pyglet:Python之pyglet库的简介.安装.使用详细攻略 目录 pyglet库的简介 pyglet库的安装 pyglet库的使用方法 pyglet库的简介 pyglet是一个pyth ...

  9. Python语言学习:python语言的特点、入门、基础用法之详细攻略

    Python语言学习:python语言的特点.入门.基础用法之详细攻略 相关内容 Python 基础教程 目录 python语言的特点 python语言的入门 python语言的基础用法 python ...

最新文章

  1. apache日志设置方法:按时间、按大小记录
  2. 如何解决企业邮件对国外的通信问题
  3. 杨彪 | 一次线上游戏卡死的解决历程(文末赠书福利)
  4. 垃圾热解气化工艺的电气、仪表及控制系统设计
  5. python Scrapy爬取天气预报,零基础的你也可以快速上手
  6. 针对Properties中实时性要求不高的配置参数,用Java缓存起来
  7. 栈帧与操作数栈剖析及符号引用与直接引用的转换
  8. 网建短信通 使用java调用API发送短信时总是返回-41,关键的关键,仅在于一个问号:(
  9. Linux下通用打印系统CUPS使用教程
  10. [全程建模]rose工具如何打开两个mdl文件问题
  11. android简单悬浮窗源码,android悬浮窗源码分析
  12. idea文件过大解决方法
  13. Spring Thymeleaf无法显示图片
  14. netbeans11安装教程_Netbeans使用教程
  15. ​为什么用Go编写机器学习的基础架构,而不是Python?
  16. 19秋计算机应用基础在线作业2,计算机应用基础19秋在线作业2 Windows 下能浏览并管理文件 驱动器及网络连接的强大工具是...
  17. YOLOX训练自己的数据集(VOC)
  18. 【Linux】SWAP 深度解读(必须收藏)
  19. TCL双引号 花括号 中括号
  20. 232层3D闪存芯片来了:单片容量2TB,传输速度提高50%

热门文章

  1. pdf怎样压缩文件大小?pdf大小怎么压缩?
  2. mindspore.ops.Pad如何像torch.nn.functional.pad一样可以填充负维度
  3. 笔记本电脑用久了卡顿解决方法
  4. GPS+北斗定位借助Arduino的数值显示
  5. 攻防世界 misc 打野
  6. 新入职了一个卷王,天天加班到凌晨,各种技术张口就来,太让人崩溃......
  7. 运放脉冲宽度放大_创鑫激光纳秒级脉冲激光器应用于精细焊接
  8. 海康IPC摄像头通过ONVIF协议接入VCN离线
  9. 用计算机弹音乐乐谱小幸运,小幸运——歌词和弦版本钢琴谱
  10. 6款PC脑图工具,你pick哪一款呢