ATX 树莓派部署 atx2-ios-provider,tidevice 实践

剪烛 for 平安科技 · 2021年06月06日 · 最后由 ckzl 回复于 2023年07月30日 · 2402 次阅读

背景说明

项目 app 相关的自动化用的是 ATX2 二次开发的方案,一直因为 mac 少,在 iOS 上的推广和效果一直没有安卓好,又因为 windows 在内网限制无法使用相关驱动,因此打主意到树莓派的身上,这样成本可以下来好多。
实践使用的板子:树莓派 3B+

安装步骤

  1. 升级 python

1.1 树莓派安装 python3.7.3

极有可能出现使用 pip3 安装第三方包时出现 ssl 错误,此错误是因为编译 python3 时树莓派上 openssl 的版本过低,或者路径不在指定位置上,可以在./configure 的命令输出中确认,需要重新安装 openssl 后,重新编译(确认方法是 python3 命令行模式 import ssl 成功 )

1.2 安装 openssl 1.1.1(树莓派)
https://blog.csdn.net/xingqingly/article/details/108682202

openssl version
1.1.1d

如果出现/usr/local/lib/libssl.so.1.1: version OPENSSL_1_1_1 not found,原因是默认 openssl lib 的地址为/usr/local/lib,需要将 openssl 安装目录加入到系统变量中

LD_LIBRARY_PATH=/usr/local/openssl/lib

在后续 tidevice 实际还出现过找不到 libssl.so.1.1 的问题,不清楚为什么没有使用 LD_LIBRARY_PATH 的路径,解决方法是按照错误提示,将/usr/local/openssl/lib 中的 so 文件拷贝到了搜索路径下

2. 安装 tidevice

pip3 install tidevice pyOpenSSL pyasn1 httpx

3. 部署 atx2-ios-provider

参考官网 https://github.com/openatx/atxserver2-ios-provider

我是使用源码运行起来的

注意一点是,不知道为啥做端口转发 iproxy.h 脚本中用了源码中没有代的./node_modules/.bin/irelay,但是幸运的是 tidevice 已经带了端口转发功能,直接修改称 tidevice relay --udid $UDID $LOCAL_PORT $REMOTE_PORT 即可

4. 我用了的环境变量

echo export LD_LIBRARY_PATH=/usr/local/openssl/lib >> /home/pi/.profile
echo export PATH="/home/pi/.local/bin:$PATH" >> /home/pi/.profile
source /home/pi/.profile

遇到的坑

  1. 开机启动的设置问题

开机启动为在/etc/rc.local 添加启动命令,然而后来才发现,这个脚本运行的用户,并不是常用的用户 pi,导致一些环境变量未加载进来,比如导致 tidevice 的命令运行不起来。

现象是整个 provider 工程可以正常运行起来,但是 iOS 的操作会陷入循环申请端口中。

在找到原因前的解决方法是把所有跟命令相关的全部替换为静态地址,后续找到原因,应该直接在开机命令中 source .profile 可以解决。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 6 条回复 时间 点赞

树莓派的稳定性是不是存在一些问题?建议使用一些 linux 的小主机应该会更稳定点

Joo 回复

嗯嗯,我们这个是作为一个补充的接入方式,大部分时间是给调试用的,看看它的长期运行表现

请问有用 facebook-wda 操作过 webiew 吗?

Forkey 回复

= =!我已经很久没具体写用例脚本了,但是我们一般 web 都用图像识别搞。建议你另外开帖询问

剪烛 回复

好的,谢谢

仅楼主可见
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册