使用adb操作android手机的idb工具有哪些?详情介绍-世界新资讯
腾讯云技术社区-掘金主页持续为大家呈现云计算技术文章,欢迎大家关注!
【资料图】
导读
对于android的开发以及测试人员,对adb命令一定会很熟悉,adb工具可谓android测试的入门神器,安装、卸载、抓log、截图等等一应俱全。很多自动化以及性能工具都一定程度上要依赖adb工具。
刚开始接触iOS时,一直希望iOS有一套类似adb工具的东西,结果都被告知要用itools、ituns类的图形化界面工具。后来经过研究,要在iOS上实现一套类adb工具理论上是没有问题,有很多开源库可以使用,所以就做了一套idb出来(目前适用于windows平台),作为iOS的测试的基础工具,主要实现了两个功能。
1、让用户可以使用idb对iOS手机进行基础的操作,就如同使用adb操作android手机;
2、封装好了一键抓取网络包(生成pcap文件)以及log的方式,提高相应的效率。
完整idb工具下载地址(仅供交流学习):share.weiyun.com/f28c0e8f6fb… 。
原理
iTunes是如何连接手机的?
第一步:首先通过usbmux技术,和手机建立连接。usbmux是一种可以通过usb管道(也就是一个usb端口)建立多路复用连接的系统。这是一个类TCP系统,通过这种系统,主机的端口号可以和手机中的特定端口号建立连接并通信。
第二步:连接手机的lockdown服务,对应的端口号为62708,然后通过和lockdown服务传输数据,实现相应的功能。这个服务通常只能通过usb端口建立相应的tcp连接(也就是第一步说的usbmux系统)。Lockdown服务可以用来做很多事情,安装应用、查看文件、重启等等。
通信协议从低到高如下:
1、USB协议:通过usb端口传输多个连接的数据,类似于网络中的数据链路层;
2、usbmuxd协议:打开设备上TCP端口连接,类型于网络中的运输层;
3、lockdownd协议:用于和lockdown服务传输数据,类似于网络中的应用层。
idb原理介绍
了解到iTunes的原理后,很多人便开始自己开发一些库,实现一样的功能,最有名的就是libimobiledevice是基于C语言实现的,编译配置比较麻烦,学习成本也较高。后来也出了对应的python库,即pymobiledevice。idb就是基于这个python库实现的。
idb架构设计上分为5层:
1、usbmux层:usb驱动层;
2、PlistService层:连接建立层,调用usbmux层,完成连接的建立,示例代码如下:
self.s = mux.connect(dev, 62708);
3、Locdown封装层:封装好基本的lockdwon服务,并完成和手机的配对验证;
4、功能实现层:通过lockdown实现对应的功能,核心示例代码如下:
实现安装功能self.lockdown.startService("com.apple.mobile.installation_proxy")
实现文件相关功能self.lockdown.startService("com.apple.mobile.house_arrest")
5、命令行工具封装层:工具的初衷是为了开发一套类似android的adb的工具,这一层主要仿照adb,实现对应命令行参数的解析并调用功能实现层,完成对应的功能。
遇到的问题及解决方案
工具交互方式的选择以及如何实现?
1、模仿adb的交互方式:adb的便利性以及高效已经得到了大家的广泛认可,所以idb的用法要和adb保持一致,做到在命令行中直接输入idb+对应的命令即可实现对应的功能;
2、具体的实现:工具使用的是python语言开发实现的,而python的运行方式最常见的是 python+脚本文件名,要做到在命令行中直接输入idb实现对应脚本python脚本的运行并实现参数的传递;
最初想到的方案:将python打包成可执行的exe文件,这个操作比较重,而且之后改起来又比较麻烦,同时也不符合python脚本语言的特性,最终抛弃了这种方案。
最终方案:简洁的bat封装(bat是windows自带的批处理语言)。
A、新建一个idb.bat文件,将idb.bat文件所在目录加入Path环境变量后,命令行中输入idb,即可运行对应的idb.bat文件;
B、Python脚本路径设置:最终需要调用相应的python脚本实现相应的功能,为了保证在任意目录下,都能正常运行。
在idb.bat中设置对应python脚本的绝对路径:目前python脚本和bat脚本在同一个目录下,所以可以用“%~dp0%mypy%”来表示python脚本的绝对路径,“mypy”变量代表对应的python脚本的名称。
C、Bat到python的参数传递:bat脚本中可以用“%*”表示在命令行中收到的参数,可以用这种方式传递参数给python。
具体的实现如下:
复杂功能的封装
在iOS日常测试过程中,会有一些抓包、抓log的需求,这些在android测试中也比较麻烦,所以在idb开发过程中,希望能够将抓网络包、抓log操作尽最大可能简化。
1、交互设计:一条命令开始抓取、Ctrl+C结束、当前目录生成pcap文件以及log文件 。
2、具体实现:
A、命令封装:idb pcap。
B、网络包和log的抓取实现通用的封装:核心实现start和stop两个函数。
start:启动工作线程实现对应的功能,并在工作线程中时刻检测对应的标志位,看是否要结束;
stop:修改标志位为结束,触发工作线程的停止;处理并存储生成的文件。
C、入口函数对Ctrl+C的捕获:当运行python程序时,使用键盘输入Ctrl+C,python程序内部会抛出一个KeyboardInterrupt异常,我们可以通过捕获对应的异常实现相应的功能。
D、为了方便查看,对应的文件统一以当前的时间命令,并存在在命令行所在的路径。
核心代码实现:
工具介绍
下载地址(仅供交流学习):share.weiyun.com/f28c0e8f6fb… 。
目录结构:
下载对应的zip包,然后解压。
“.”开头的是eclipse工程文件,不用管(可以直接作为pydev工程导入eclipse,仅供交流学习)。
“idb.py”实现idb所有功能的脚本。
“idb.bat”入口函数,方便在命令行中直接通过“idb”命令调用相应功能。
“pymobiledevice_sheldonfan”调用的类库,所有需要的python库都已经放在里面了。
主要功能:
1、支持手机基本操作:重启、锁屏、休眠;
2、支持应用的安装、卸载、查看;
3、支持沙盒目录的查看以及基本的文件操作(iOS10之后出现限制,暂无法完美支持);
4、支持log、网络pcap包的一键抓取。
环境依赖
1、安装python2.7(32位版),并设置环境变量。设置方法如下:
依次打开:计算机——》右键——》属性——》左上角"高级系统设置"——》右下角“环境变量”——》系统变量——》选中“Path”——》点击“编辑”——》将python的目录加进去用";"分割,其他不要变——》点击确定。
Python目录指的是python的安装目录,默认安装在C:\Python27目录下。Python目录需要包含python的可执行文件,如下图:
2、Windows 7,安装iPhone驱动(检验标准,各种iPhone手机助手能够识别并连接手机);
3、下载完后可以将目录添加到PC的环境变量中,方便在任何地方调用。
用法详解
如果已经添加了环境变量,直接打开cmd即可。
1.重启手机:输入命令 idb reboot。
后面输入的是调用python脚本时打印出来的内容。
2、关机:idb shutdown。
3、让手机休眠:idb sleep //这个命令会让手机进入深度睡眠,usb连接也会断掉;按电源键点亮屏幕,又会正常连接 。
4.安装app(ipa文件):idb install “ipa文件路径”。
5、卸载app:idb uninstall “app的id”(类似于android中的包名)。
6、显示所有的APP:idb listapps //默认显示所有的APP。
7、显示用户安装的APP:idb listapps user。
8、显示系统自带的APP:idb listapps sys。
9、查看系统级文件列表:idb shell //ios使用沙盒环境,默认进入的是系统的图片、书籍音乐,也只能显示这些文件:
进入后支持简单的ls、cd、pwd等命令。进入后可以使用exit命令退出。
10、获取系统文件到本机:idb pull 手机目录 pc目录手机目录可以通过idb shell命令来查看(就是上一条命令)。
示例:idb pull /DCIM .
将手机中的DCIM目录抓到当前目录(当前目录用“.”表示)。
可以pull单个文件,也可以pull整个目录。
11、push文件到系统目录idb push “pc文件路径”“手机目录”。
手机目录也是通过idb shell来确定的(push图片后,手机无法识别,后续会继续优化)。12、获取APP沙盒中的文件:idb -p “应用id” pull “ 手机目录”“pc目录”。
示例如下:
idb -p com.tencent.mlife.dailybuild pull Documents .将应用id为com.tencent.mlife.dailybuild 的应用的Documents 目录,拉到当前目录(用“.”表示)
13、push文件到app沙盒中:idb -p “应用id” push“pc文件路径”“手机目录”。
14、idb logcat 抓系统日志,也可以通过idb logcat >mylog.txt重定向到文件。
15、idb screenshot 截图,这个需要手机装了开发者功能,如果没装的话,可以考虑在手机上按电源键以及home键,然后pull到电脑上。
16、idb pcap抓包,开始抓包,按Ctrl+C结束,会在当前的cmd所在的目录生成对应的pcap文件以及log文件。
按Ctrl+C结束抓取,提示总流量并在当前目录生成pcap文件以及日志文件(系统日志)。
注意事项
1、驱动一定要先装好,如果电脑识别不了手机,所有的命令都无法执行;
2、有时候连接不上手机,可能是驱动加载问题,可以尝试启动itunes重新安装驱动、重启电脑、重启手机;
3、部分APP的沙盒环境是不能访问的,这个和APP设置有关。一般日常测试的APP(非正式发布的)都允许访问沙盒目录,方便获取相应的文件。但是iOS10增加了对沙盒目录的限制,无法完美支持;
4、目前支持python2.7 32位版,其他版本暂时无法支持(因为有些引用类库的限制)。
想知道更多测试相关干货 请关注我们的微信公众号——腾讯移动品质中心TMQ:
【有奖讨论】程序员,怎么应对三十岁? 点击查看详情
相关阅读Web 性能压测工具 ApacheBench(ab)使用总结手机发烫是为何—— App 电量测试定位方法iOS 程序从开发完到上 AppStore 那点事儿
此文已由作者授权腾讯云技术社区发布,转载请注明文章出处原文链接:cloud.tencent.com/community/a…获取更多腾讯海量技术实践干货,欢迎大家前往腾讯云技术社区
标签:
相关推荐:
最新新闻:
- 当前焦点!Panels教程:向panel页面中添加节点的创建流程
- 【自控笔记】自动控制系统的基本原理及分类原则 全球今热点
- Mobvista发布2019年财报 程序化广告收入已超22亿
- PDF转CAD格式图纸怎么做?教你两种方法_当前视点
- 百度域名收录情况怎么看?百度域名收录查看方法
- 使用adb操作android手机的idb工具有哪些?详情介绍-世界新资讯
- 焦点热议:UML类图画法全程解析 UML类图画法的介绍
- 当前热文:为什么用fork提高处理速度?详情解释
- 组装电脑选i78700还是8700k?i78700和i78700k区别
- 如何使用Markdown编辑器写博客?Markdown编辑器的基本语法知识
- 单摆控制教程 matlab仿真单摆控制-状态反馈|环球精选
- 环球实时:光谱资讯经典游戏《疯狂空间王》Steam页面上线 发售日期待定
- 【赛思基因】荧光素酶生物检测技术的应用
- I/O接口的基本概念是什么?一文读懂I/O接口的基本概念和原理|全球视点
- 标准差计算器怎样安装使用?标准差计算器使用教程介绍
- 校园车辆信息管理系统可行性分析及技术介绍-要闻速递
- 全球看热讯:Oracle函数大全 mysql常用函数返回值样例汇总
- 当前消息!魔法吃鸡游戏《咒语破碎》 现已正式从Steam下架
- 外媒:ChatGPT爆火或将再次导致全球GPU短缺 焦点资讯
- 全球关注:【教程】5分钟打造用U盘启动的linux
- 全球最资讯丨《仙乐传说:复刻版》中文上市宣传片公布 今日发售
- 热点聚焦:为啥删了?数据挖掘发现《霍格沃茨之遗》“洗点药水”
- 《原子之心》全新游戏实机视频曝光 公布国区解锁时间:世界快播
- 焦点关注:《超级马里奥兄弟大电影》大电影新海报:大反派库巴人人爱!
- 马斯克命工程师提升其 Twitter 账号权重 1000 倍
- AMD锐龙7 7730U“Zen3”处理器比锐龙7 5825U快4%|今亮点
- RTX 3070跌破2000元!RTX 30系列显卡在美国售价暴跌
- 设计大改!iPhone 15 Pro和iPhone 15 Pro Max再次被传闻将采用更薄的边框-快播
- 世界观察:iPhone 15 Pro大升级:边框终于要收窄了
- 通讯!《我是传奇2》背景在前作数十年后 受《最后生还者》剧集启发
- 捍卫收购提议 微软2月21日出席欧盟监管机构听证会-头条
- 最新:双倍恐惧 《黑相集:心中魔》好友通行证上线
- 让你心跳加速的星际探险:Returnal 现已在 PC 上推出_热议
- 《冲就完事模拟赛》联动最终幻想7免费DLC 3月3日全平台上线:全球独家
- 《地平线:山之召唤》预载现已开启 所需空间46.2GB 当前速讯
- 我市打造多层次户外步道体系,实施“五园连通”工程:世界观焦点
- 高颜值时尚好物 三星Galaxy Buds2 Pro情人节热销中 世界观热点
- 焦点速讯:《东京复仇者2》电影最新海报 前后篇4月6月上映
- 全球热推荐:上海公安联动《明日方舟》:陈Sir教你防范未然
- 《星空》被超越!《森林之子》成Steam愿望单最多游戏|世界最资讯
- 沙漠之花讲的什么
- 吉林桦甸全市出租车已停运数天具体详细内容是什么-环球速读
- 环球今热点:小米又推出旗下首款产品:199元
- 《Apex英雄》Steam在线峰值创新高 超过61万_环球热点评
- 《夜勤人》开发商制作《英雄联盟》外传春季发售|实时焦点
- 手柄操作大厨烹饪《主厨人生:餐厅模拟器》新预告
- 世界快看:安全第一 雅迪电动车头盔26.9元
- Geekbench 6针对混合CPU和机器学习进行了调整
- 限时特惠 西部数据4TB硬盘跌破500元
- 当前热议!谷歌光纤推出5Gbps服务,每月125美元
- 天天快资讯:三个宇宙速度的大小及意义_三个宇宙速度
- 员工发现老板娘偷看微信火速离职 不尊重他人隐私
- 全球报道:NS《尼尔:机械纪元》优惠:港区中文200元
- OpenAI CEO安抚外界担忧:ChatGPT不是人类的“就业杀手”
- 麦克斯•黄和成龙看了《真人快打》电影 晒出二人合照 全球聚焦
- 《满江红》港版定档海报释出:官宣3月2日上映
- 《三体漫画》纸质书全网上市:由原作者刘慈欣监督创作
- wz111重型坦克炮筒_wz111重型坦克_全球快消息
- 比亚迪订单一路狂飙,秦 PLUS DM-i 冠军版上市 5 天订单破 2.5 万:环球快看
- OPPO Find X6 Pro入网,或唯一支持100W快充影像旗舰-全球快资讯
- 当前速递!台湾歌手刘文正过世 代表作:《乡间的小路》《外婆的澎湖湾》
- 全球即时看!《蚁人3》GS 5分:动作戏很普通 喜剧程度不如前作!
- 《狂野之心》PC新补丁开发中 解决CPU瓶颈问题
- 全球快资讯:索尼 Xperia 1 V 和 Xperia 5 V 将率先支持蓝牙 LE Audio 和 LC3
- 小米 30W 车载无线充 199 元开售:感应伸缩 + 双重散热:全球快看点
- 袁冰妍回应直播中亲成毅说了什么?袁冰妍为什么亲成毅两人真实关系揭秘
- 《索尼克:未知边境》国区成最低价区:老外来薅羊毛了:当前焦点
- 贝拉·拉姆齐:《最后生还者》第二季应该仍会遵循原作游戏
- 上海浦东:十条举措推动上海国际航运中心核心区建设-全球快消息
- 口碑砸了?《蚁人3》烂番茄开局仅55%
- 世界微速讯:国产手游实装游戏GPT,NPC被玩家“玩破防”
- 深化全渠道合作模式 京东与iQOO签署线下业务战略合作协议
- 天天即时:存储价格狂跌!M.2固态硬盘2TB仅599元
- 联想小新迷你主机即将发布:13 代酷睿 H 处理器,内置电源
- 立省51元!M.2固态硬盘512GB仅需158元|世界播资讯