项目 app 相关的自动化用的是 ATX2 二次开发的方案,一直因为 mac 少,在 iOS 上的推广和效果一直没有安卓好,又因为 windows 在内网限制无法使用相关驱动,因此打主意到树莓派的身上,这样成本可以下来好多。
实践使用的板子:树莓派 3B+
极有可能出现使用 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 文件拷贝到了搜索路径下
pip3 install tidevice pyOpenSSL pyasn1 httpx
参考官网 https://github.com/openatx/atxserver2-ios-provider
我是使用源码运行起来的
注意一点是,不知道为啥做端口转发 iproxy.h 脚本中用了源码中没有代的./node_modules/.bin/irelay,但是幸运的是 tidevice 已经带了端口转发功能,直接修改称 tidevice relay --udid $UDID $LOCAL_PORT $REMOTE_PORT 即可
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
开机启动为在/etc/rc.local 添加启动命令,然而后来才发现,这个脚本运行的用户,并不是常用的用户 pi,导致一些环境变量未加载进来,比如导致 tidevice 的命令运行不起来。
现象是整个 provider 工程可以正常运行起来,但是 iOS 的操作会陷入循环申请端口中。
在找到原因前的解决方法是把所有跟命令相关的全部替换为静态地址,后续找到原因,应该直接在开机命令中 source .profile 可以解决。