当前位置: 首页 > news >正文

python代码中通过pymobiledevice3访问iOS沙盒目录获取app日志

【背景】

在进行业务操作过程中,即在app上的一些操作,在日志中会有对应的节点,例如,下面是查看设备实时视频过程对应的一些关键节点:

1、TxDeviceAwakeLogicHelper:wakeStart deviceId = CxD2BA11000xxxx

2、TxDeviceAwakeLogicHelper:awake send success

3、TxDeviceAwakeLogicHelper:awake success onDpUpdate deviceId = CxD2BA11000xxxx key = 1x9 value = 1 tempSuccess = false self = <xxxx.TxDeviceAwakeLogicHelper: 0x287bd81c0>

4、TXLivePlayer:p2pStart deviceId = CxD2BA11000xxxx

5、TXLivePlayer:CxD2BA11000xxxxconnect Succ

6、TXLivePlayer:p2pEnd deviceId = CxD2BA11000xxxx)

7、TXLivePlayer:previewStart deviceId = CxD2BA11000xxxx

8、TXLivePlayer:previewSuccess deviceId = CxD2BA11000xxxx

9、XxxxCameraLogicModel:XxxxCameraLogicModel-Playing = PlayState(rawValue: 1) ID = CxD2BA11000xxxx

10、TxPreviewCenter:stopPreview, deviceId=CxD2BA11000xxxx

11、TxCameraCenter:destroy finish

12、TXLivePlayerViewController:didStopPlay

13、XxxxCameraLogicModel:XxxxCameraLogicModel-!Playing = PlayState(rawValue: 4) ID = CxD2BA11000xxxx

【代码实现】

以实现捕获awake success onDpUpdate deviceId = CxD2BA11000xxxx,为例:

1、

def get_dev_play_state():command1 = subprocess.Popen(['pymobiledevice3', 'apps', 'afc', 'com.gxxxxxx.ios'], stdout=subprocess.PIPE, text=True)command2 = subprocess.run(['cat', 'Documents/Logs/gxxxxxx_app_ios_20241025.log', '|', 'grep', '-e', '"awake success.*deviceId = CxL2xx11000xxxx"'], stdin=command1.stdout, stdout=subprocess.PIPE, text=True)print(command2.stdout)

上面的代码不能进入xonsh-afc并且保留在shell中继续执行后学的cat命令,得到的结果是:No such file or directory

2、

def get_dev_play_state():result = subprocess.run('pymobiledevice3 apps afc com.gxxxxxx.ios && cat Documents/Logs/gxxxxxx_app_ios_20241025.log | grep -e "awake success.*deviceId = CxL2xx11000xxx"', shell=True, stdout=subprocess.PIPE, text=True)print(result.stdout)

执行上面代码后,一直没有结果返回,一直在运行状态

3、

使用 expect 模拟交互,在进入 xonsh-afc 环境后,通过 pexpect 来执行 grep 命令,在调试过程中执行:process = pexpect.spawn('/bin/zsh'),报错:

/Users/testmanzhang/PycharmProjects/practiceUICatalog/.venv/bin/python /Users/testmanzhang/PycharmProjects/practiceUICatalog/interact_with_phone.py ls (eval):39: command not found: compdef

查了一下资料,compdef 错误提示通常与 Zsh 的自动补全功能有关,可能是因为在执行 pexpect.spawn('/bin/zsh') 时,加载了某些与自动补全相关的配置文件(如 .zshrc 或 .zprofile),其中包含 compdef 配置,但 pexpect 的执行环境无法正确解析或运行这些命令。

所以添加了‘--no-rcs’:

process = pexpect.spawn('/bin/zsh', ['--no-rcs'])

--no-rcs:该选项告诉 Zsh 在启动时不要加载用户的 .zshrc 等配置文件,避免与自动补全和其他不必要的插件产生冲突。

def get_dev_play_state():process = pexpect.spawn('/bin/zsh', ['--no-rcs'])process.expect([pexpect.EOF, pexpect.TIMEOUT, 'testmanzxxxx@TestMandeMBP ~ % '])process.sendline('pymobiledevice3 apps afc com.gxxxxxx.ios')process.expect([pexpect.EOF, pexpect.TIMEOUT, '[com.apple.mobile.house_arrest:/]$'])process.sendline(f'cat Documents/Logs/gxxxxxx_app_ios_20241025.log | grep -e "awake success.*deviceId = CxL2xx11000xxxx"')process.expect([pexpect.EOF, pexpect.TIMEOUT])print(process.before.decode('utf-8'))process.sendline('exit')process.close()

通过上面的代码可以实现程序跟iOS设备的交互,并分析app沙盒中的业务日志,返回想要的信息。

我这边业务得到的结果是这样的:

相关文章:

python代码中通过pymobiledevice3访问iOS沙盒目录获取app日志

【背景】 在进行业务操作过程中&#xff0c;即在app上的一些操作&#xff0c;在日志中会有对应的节点&#xff0c;例如&#xff0c;下面是查看设备实时视频过程对应的一些关键节点&#xff1a; 1、TxDeviceAwakeLogicHelper&#xff1a;wakeStart deviceId CxD2BA11000xxxx …...

Spring AOP 使用方法总结

AOP切面编程的最佳应用场景 记录日志性能监控事务管理处理异常数据验证&#xff0c;验证传入参数的正确性&#xff08;一般不用这个方法做&#xff0c;而是用拦截器&#xff09; spring提供了以下注解供开发者使用&#xff0c;编写AOP程序 Aspect 申明切面Pointcut 切点&#…...

LeetCode 每日一题 2024/10/21-2024/10/27

记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录 10/21 910. 最小差值 II10/22 3184. 构成整天的下标对数目 I10/23 3185. 构成整天的下标对数目 II10/24 3175. 找到连续赢 K 场比赛的第一位玩家10/25 3180. 执行操作可获得…...

不到1500元的I卡可以玩转3A大作吗?撼与科技Intel Arc A750显卡游戏性能实

一、前言 还记得2022年10月的时候&#xff0c;英特尔发布了Arc A750和A770显卡&#xff0c;和此前所发布的DG1、A380不同&#xff0c;这两张显卡可以说是真正意义上的游戏显卡。不知不觉间&#xff0c;两年已经过去了&#xff0c;在这两年期间&#xff0c;英特尔不仅在积极地打…...

STK与MATLAB互联——仿真导航卫星与地面用户间距离和仰角参数

文章目录 构建GPS星座创建单个PRN的GPS卫星创建GPS星座&#xff0c;并为其添加发射机 北斗星座构建搭建低轨铱星星座构建一颗轨道高度为800km/1000km/1200km的低轨卫星构建一颗轨道高度为800km/1000km/1200km的低轨卫星建立地面站&#xff0c;可见性分析确定地面站坐标分析单颗…...

js面试问题笔记(一)

一.热门js面试 1.简述同步和异步的区别? 同步: 浏览器访问服务器请求,用户看到页面刷新 ,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作 异步: 浏览器访问服务器请求,用户正常操作,浏览器后端进行请求,等请求完,页面不刷新,新内容也会出现,用户看到…...

pip 和 pipx 的主要区别?

特性pippipx用途用于安装Python库或命令行应用程序&#xff0c;可以安装带entry points的库专门用于安装和管理Python命令行工具&#xff0c;每个工具都在隔离的虚拟环境中运行虚拟环境不自动创建虚拟环境&#xff0c;需要手动使用 venv 或 virtualenv 创建自动为每个安装的工具…...

4457M数字示波器

_XLT新利通_ 4457M数字示波器 带宽500MHz到3GHz 4457M系列数字示波器产品&#xff0c;包含4457DM/EM/FM/GM四个产品型号&#xff0c;模拟通道数4、8个&#xff0c;带宽500MHz到3GHz&#xff0c;最高采样率10GSa/s&#xff0c;垂直分辨率8bit&#xff0c;最大存储深度2Gpts。…...

【永中软件-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…...

Tomcat作为web的优缺点

文章目录 优点缺点 优点 开源&#xff1a;Tomcat是Apache软件基金会的一个项目&#xff0c;这意味着它是免费且开放源代码的。这为开发者提供了高度的自由度来修改和扩展其功能。 轻量级&#xff1a;与一些全功能的Java EE应用服务器&#xff08;如IBM WebSphere, Oracle WebL…...

conda虚拟环境中安装cuda方法、遇到的问题

conda虚拟环境中安装cuda方法、遇到的问题 文章目录 conda虚拟环境中安装cuda方法、遇到的问题conda虚拟环境中安装cudacuda.h和cuda_runtime.hpytorch运行时的CUDA版本其他问题检查包冲突nvcc -V和nvidia-smi显示的版本不一致cuda路径 conda虚拟环境中安装cuda 参考文章&…...

【CPN TOOLS建模学习】设置变迁的属性

使用Tab键在属性之间进行切换 与一个变迁相关联的四个铭文&#xff0c;均为可选项&#xff1a; 变迁名称守卫(Guard)时间代码段 变迁延迟必须是一个正整数表达式。该表达式前面加上&#xff0c;这意味着时间铭文的形式为 delayexpr。在添加时间铭文之前&#xff0c;铭文的默…...

一个简单的例子,说明Matrix类的妙用

在Android、前端或者别的平台的软件开发中&#xff0c;有时会遇到类似如下需求&#xff1a; 将某个图片显示到指定的区域&#xff1b;要求不改变图片本身的宽高比&#xff0c;进行缩放&#xff1b;要求最大限度的居中填充到显示区域。 以下示意图可以简单描绘该需求 以Androi…...

【C++】类和对象(四):析构函数

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的析构函数&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1. 概念2. 特性 1. 概念 通过前面构造函数的学习&#xff0c;我们知道一个对象是怎么来的…...

linux中各目录作用及介绍

目录 1 /usr 1 /usr /usr 是 Unix-like 操作系统中的一个重要目录之一&#xff0c;代表可共享的用户资源&#xff08;User System Resources&#xff09;或 Unix Software Resource&#xff08;UNIX 软件资源&#xff09;。 /usr 目录通常包含了系统的许多可共享资源&#xf…...

v4.7版本使用线下付款方式不给管理员发送新订单通知问题修复

在app/api/controller/v1/order/StoreOrderController.php文件中&#xff0c;将红框内的代码注释&#xff0c;加上绿框的代码即可修复 if ($this->services->setOrderTypePayOffline($order[order_id])) {event(NoticeListener, [$order, admin_pay_success_code]);retur…...

vue3中mitt和pinia的区别和主要用途,是否有可重合的部分?

在 Vue 中&#xff0c;Mitt 和 Pinia 是两个不同的工具&#xff0c;它们的主要用途和功能有所不同&#xff0c;但在某些方面也存在重合的部分。 区别 Mitt&#xff1a; Mitt 是一个简单而强大的事件总线库&#xff0c;用于在组件之间进行事件的发布和订阅。 它提供了一种简洁…...

飞书文档解除复制限制

解除飞书文档没有编辑器权限限制复制功能方法 方法一&#xff1a;使用插件 方法二&#xff1a; 通过调试工具删除所有的copy事件 使用插件 缺点&#xff1a; 只有markdown格式&#xff0c;如果需要其他格式需要再通过Typora等markdown编辑器转pdf,word等格式 安装插件 Cloud Do…...

vue3中ref和reactive的用法,区别和优缺点,以及使用场景

写在前头&#xff1a; reactive定义的数据只能修改里面的属性&#xff0c;不能将整个数据替换&#xff0c;实在要替换请使用 Object.assign(obj1, obj2);举个例子 这种写法无法直接改变obj1 let obj1 reactive({name: 猫,age: 2, });obj1 {name: 猪,age: 2, } 正确的写法…...

电脑技巧:Rufus——最佳USB启动盘制作工具指南

目录 一、功能强大&#xff0c;兼容性广泛 二、界面友好&#xff0c;操作简便 三、快速高效&#xff0c;高度可定制 四、安全可靠&#xff0c;社区活跃 在日常的电脑使用中&#xff0c;无论是为了安装操作系统、修复系统故障还是进行其他需要可引导媒体的任务&#xff0c;拥…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...

协议转换利器,profinet转ethercat网关的两大派系,各有千秋

随着工业以太网的发展&#xff0c;其高效、便捷、协议开放、易于冗余等诸多优点&#xff0c;被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口&#xff0c;具有实时性、开放性&#xff0c;使用TCP/IP和IT标准&#xff0c;符合基于工业以太网的…...

深入解析 ReentrantLock:原理、公平锁与非公平锁的较量

ReentrantLock 是 Java 中 java.util.concurrent.locks 包下的一个重要类,用于实现线程同步,支持可重入性,并且可以选择公平锁或非公平锁的实现方式。下面将详细介绍 ReentrantLock 的实现原理以及公平锁和非公平锁的区别。 ReentrantLock 实现原理 基本架构 ReentrantLo…...