作为一个 mac+ios 的小白,我设立了一个极具挑战的目标:制作一个关于 ios 群控的二次开发工具(flag 已立)。
现在已经要被坑的吐血了。希望能用我的经历,帮助以后要入坑的伙伴,不至于摔得像我一样惨。
同样,过程中可能会有遗漏,望各位海涵。
存在的问题和错误,还希望有大神指正。

----------------------------------------

20220319

简述一下这周的内容

1.mac 虚拟机搭建,xcode 安装,airtest 连接虚拟 iphone

2.mac 真机环境搭建

详细过程

1)虚拟机(放弃)

一开始没有 mac 本,所以第一反应就是安装黑苹果。
我电脑中用的是 virtual box 6.1。因为公司不让装盗版,就没敢装 VM。

VBOX 安装不需要 mac 破解插件,但也有问题就是不能修改屏幕分辨率!!! 而且我在真机调试时发现虚拟机连接不上真机

上面发生的问题,我也会在下面的步骤中说一下尝试解决但没有解决的过程

步骤 1:mac 镜像安装

本来打算放网盘地址的,但我的镜像有问题,还是不误导新人了,有人需要的话,我再发吧。

虚拟机安装过程还是比较简单的:

1:新建虚拟机
avatar

avatar

2:右键虚拟机设置 - 存储中,把没有碟片用下面的按钮删掉,然后点击 SATA 后面的增加虚拟光驱的按钮,选择下载好的 iso 文件。(我还下过几个 dmg 镜像,但是都安装失败了)

3:右键虚拟机设置 - 系统中,取消光驱,cpu 数量调多。设置 - 显示中,把显存调高(我是 128MB)。设置 - 网络中,直接用 NAT 就行(公司有上网限制,win 虚拟机怎么调都不行,结果 mac 虚拟机用这个直接就能上网,真是奇怪)

4:进入到 virtualbox 安装目录,打开 shell
输入下面的文字,注意:请将 ios1013 改为你自己的名称,我这里应该改为:mac1013

VBoxManage.exe modifyvm ios1013 --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
VBoxManage setextradata ios1013 "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
VBoxManage setextradata ios1013 "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
VBoxManage setextradata ios1013 "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
VBoxManage setextradata ios1013 "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c) AppleComputerInc"
VBoxManage setextradata ios1013 "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
VBoxManage setextradata ios1013 "VBoxInternal2/EfiGopMode" 4

执行效果:
avatar

avatar

5:启动虚拟机,等待一段时间后。出现选择界面时,先选择磁盘工具。

找到配置的硬盘,选择抹掉 (相当于初始化)。之后正常安装就可以了。

avatar

avatar

步骤 2:软件调试

之后就是关于 webdriveragent 等工具的调试。和真机差不多一致。所以就写在下面了。而且手机连接时,会弹出相册,但是 xcode 上看不到真机。未能解决这个问题,就放弃了。

虚拟机到此结束。

关于修改分辨率的问题:

有的说可以通过我之前发的最后一行,进行分辨率的修改。但我没成功。

有的说修改一个 plist 文件,但是 sudo + wq! 也无法修改,说是没有权限,需要进入 恢复模式设置才行。

结果方式 1:虚拟机重启了一下午。command+r 也没进去。方式 2:开机时按 esc 倒是进入了 boot,但是没有恢复模式的选项。怀疑是我这个 ios 镜像的问题。

2)真 mac 机

mac 的系统是 11.6.5,之前是啥我忘记了,因为更新前没看。
mac 系统我是真心用不惯,穷人的难受。

步骤 1:拿到真机后,首先下载 xcode

坑:嗯。。应用商店登陆不上。

This Apple ID has not yet been used with the App Store

点击下载也有反应,就是不下载。。。。
没办法在 https://developer.apple.com/download/all/
选择版本的 xcode 进行下载

*坑: *第一次下载 xcode 版本为:13.2。运行 ios-agent(后面介绍)报错。
...but the embedded framework ... was built for IOS+IOS Simular
看了网上的方案:

修改:File -》Workspace Settings -》Build System

但实际上 1.worksapce 已经变成了 Project Settings。2.改完又因这里报错了,说是已经废弃掉了。

查了一堆资料,结论就是 xcode 有点新。所以决定,版本调低,降到 11.5。

步骤 2:卸载,重装 xcode-11.5

卸载安照这个教程做的:
https://www.jianshu.com/p/50643da1bd79

xcode 安装:下载 xcode 文件,是一个 xip 文件,双击后就自动解压安装了。最终会在你得下载文件夹里面看到。

为了后续方便使用,请把安装好的 xcode 拖拽到应用程序上
至此,xcode 安装完毕

步骤 3:webdriveragent(IOS-Tagent)模拟机调试

首先说明,目前我对 appium 的,facebook 的 airtest 等的 WDA 还分不太清除,先以 airtest 的 IOS-Tagent 为例(因为就把这个虚拟机调通了)。下载地址和说明连接如下

https://github.com/AirtestProject/iOS-Tagent

https://github.com/AirtestProject/iOS-Tagent/blob/master/Introduction/README_zh.md

完全按照 airtest 的官方文档走就可以
非真机的情况下,project-scheme 和 project-destination 设置完毕的情况下,没设置关于证书的内容,都可以安装在虚拟手机上了。

可以使用 airtest 连接虚拟手机了。虚拟手机调试先告一段落。

20220321

步骤 4:webdriveragent(IOS-Tagent)真机调试

我这真机有两台,一台 iphone6 ios12.4;一台 iphone7 ios 15.4。
当前手里没有开发者账号(就申请了一个 Apple id,没花钱)
还是完全按照 airtest 的文档走。
最终安装在了手机上,并且需要在手机的设置 - 通用 - 设备管理中,选择开发者证书并信任。
并记得
并且在设置开发者中,把 enable UI Animation 点开

2.0 安装 brew
/usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
2.1 通过 Homebrew 安装 iproxy
$ brew install libimobiledevice --HEAD
2.2 运行 iproxy
$ iproxy 8100 8100

iphone6 连接成功(反应有点慢,点击手机上的按钮,差不多 2s 才有反映)

** 坑: **iphone7 同样安装完毕,

但 airtest 连不上。Test failed

avatar

avatar

心凉透透,又要降版本。。。11.4.x 啊啊啊啊啊啊啊!(我再鼓捣鼓捣吧,是在不想重装 xcode 了)

打开软件后屏幕显示automation running。通过 http://127.0.0.1:8100/status 可以获取当前连接的一段 json 手机信息。但 http://127.0.0.1:8100/inspector 报错,error:unknown command(这个似乎是文档错了,我用 iPhone6 试了这个地址也报这个指令错误)。

iphone7 重启,再试一遍

*坑: *弹窗提示iphone7 is not available
这个问题怎么说呢,我之前用 xcode 版本为:13.2,不支持这个最新的 ios 15.4 所以下载了对应的调试包。然后调试了这台 iphone7,之后即使 xcode 降级 11.5.手机也一直也没重启过。重启前好好好的,就以为没关系了,重启后就出问题了。之前还想着要不要写这个,结果他来了。

** 坑: **xcode 低版本不能直接调试高版本的 ios,需要下载对应的调试包。

下载地址 https://github.com/iGhibli/iOS-DeviceSupport/tree/master/DeviceSupport

在访达中按 shift+command+g 输入访问的路径:/Applications/Xcode.app/Contents/Developer/
Platforms/iPhoneOS.platform/DeviceSupport
把对用的包解药好放进去。xcode 退出重启

这也是为啥要把 xcode 拖拽到应用程序里,因为网上的教程都是/Applications 的路径。

但是我这台 iphone7 的 airtest 还是连不上。

*坑: *呃,试了下代码,竟然发现可以用。。所以目前只是画面不能显示,但是可以使用。能用就行了。头越来越大,头发越来越少,不纠结了。。。

author = "admin"

from airtest.core.api import *
init_device("ios")
auto_setup(file)
home()

步骤 5:facebook-wda 调试

终于看到曙光了。
这个安装比较简单,就是 pip3 install -U facebook-wda

** 坑: **iphone7 的屏幕分辨率是 750*1344。我就想点这个数字 8,坐标是(287,696),死活点不上。
后来发现通过 window_size() 获取的才是能够点击的分辨率(375,667)。所以最后通过换算(138,353)点击到了数字 8。
avatar
avatar

import wda
c=wda.USBClient()
print(c.window_size())
c.click(138,353,1)

当前的任务告一段落。第一次发帖,检查一遍发现没生效。实在不想改了,算了,得过且过吧。


↙↙↙阅读原文可查看相关链接,并与作者交流