Xcode部署应用到真机测试

其实对于IOS开发我只能属于入门级别,不对,是入门-级别。因此,对于如何将写好的应用部署到真机上进行测试确实是一脸懵逼,不知道怎么操作,对于一些证书的处理也不知道应该怎么做,本文今天借最近比较火的跳一跳小游戏作弊玩法的机会,着重介绍如何部署应用到真机上,小游戏只是后面的一个消遣啦。注意:虽然这里是介绍如何部署WebDriverAgent应用到真机上,但是本文的介绍的方法是通用的,针对所有应用!

下载WebDriverAgent应用

这个项目是Facebook在Github上开源的一个应用,主要用于IOS端的测试。由于是要对小游戏进行作弊破解,因此这个工具还是很有必要的。地址是:https://github.com/facebook/WebDriverAgent。把整个项目克隆或者下载到本地。下载以后打开文件夹如下:

1
2
3
4
5
6
7
$ WebDriverAgent-master ls
CONTRIBUTING.md LICENSE WebDriverAgent.xcodeproj
Cartfile PATENTS WebDriverAgentLib
Cartfile.resolved PrivateHeaders WebDriverAgentRunner
Carthage README.md WebDriverAgentTests
Configurations Resources
Inspector Scripts

这个时候如果我们直接按照Facebook的提示去执行./Scripts/bootstrap.sh,就会失败,它会提示说我们是不是还没有在/usr/local/bin/下安装Carthage。因此,在此之前我们先要安装Carthage引用,使用Homebrew安装比较好。

1
$ brew install carthage

然后再执行./Scripts/bootstrap.sh,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$ WebDriverAgent-master ./Scripts/bootstrap.sh
Fetching dependencies
Building Inspector
Creating bundle directory...
Fetching Inspector dependencies...
npm WARN [email protected] requires a peer of react@^15.6.2 but none was installed.
npm WARN [email protected] No repository field.

up to date in 3.148s
Validating Inspector
Launching Flow server for /Users/richard/Downloads/WebDriverAgent-master/Inspector
Spawned flow server (pid=3281)
Logs will go to /private/tmp/flow/zSUserszSrichardzSDownloadszSWebDriverAgent-masterzSInspector.log
No errors!
Building Inspector...

> [email protected] build /Users/richard/Downloads/WebDriverAgent-master/Inspector
> webpack --progress --colors

Hash: 8cac1428c00de3caad87
Version: webpack 1.15.0
Time: 2141ms
Asset Size Chunks Chunk Names
inspector.js 859 kB 0 [emitted] main
[0] multi main 28 bytes {0} [built]
+ 226 hidden modules
Done

接着我们就可以使用Xcode打开这个项目了。点击下图中的WebDriverAgent.xcodeproj文件即可:

设置证书

使用Xcode打开项目以后是这个样子的:

在运行之前,我们需要设置好证书,不然无法在真机上调试,目前有两种模式的证书,一种是直接到苹果开发者官网购买证书,一年99刀。博主比较穷,所以就选择免费的个人证书啦。关于个人证书如何生成?见下图:

不过你得先登录你的iCloud账户才能开始添加,这一步完成以后我们就可以开始设置整个项目的证书啦:

红框框的顺序是从左往右,从上往下。我这里是将中间那个Targets列表每一个都设置了证书,而且还需要注意的是,我们由于是免费证书,因此需要更改这个BundleID,如最右边第二个我们就改为了com.qinjiangbo,保证唯一性就可以了,不然Signing这个模块不会成功的。至于Signing这个选项我们所有的都默认为Automatically manage signing自动管理签名。

这里附一张IntegrationTests_1这个Target的BundleID修改方式,IntegrationTests_2及后面的两个都是一样的方式:

只要不是Facebook默认的那个就行了。最好是选择我们自己的域名的反写,这样肯定是唯一的。

编译运行项目

Xcode请求签名输入密码

当我们点击左边的运行按钮的时候,在编译的过程中可能会弹出这个框框:

这里是说项目需要访问我们的系统的KeyChain,即使密码输入正确,它也会弹很多次,这里我们在输入密码后,只需点击Always Allow就好了。如果不小心点击了Deny,那么项目将会一直编译失败,而且是Unknown Error,这个时候,我们需要手动地将KeyChain中的记录删除:

选中证书直接右击鼠标,点击删除就可以了。然后重新编译就会再次弹出这个框框了,按照上面输入正确的密码后点击Always Allow就好了。

选择设备和Target

如下图:

然后点击菜单栏中的Product->Test就可以编译执行了。

可能的问题

比如提示说我iPhone的版本为11.2.1 (15C153)不被当前版本的Xcode支持,但是我们又不想升级Xcode的,如何做呢?是需要添加一个11.2版本的IOS SDK就可以了。具体下载地址如下:https://pan.baidu.com/s/1pLKHgsr ,密码是: 73c5

选择11.2版本的下载下来丢进这个目录/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/即可,

手机上安装描述文件

重启Xcode,然后再重新连接你的iPhone就可以了,中间还可能出现一个问题就是,启动程序失败,如下:

原因很简单,就是手机上需要信任这个描述文件,如下:

然后就可以在我们的手机上安装成功了。

转发端口到Mac上

我们希望在Mac上可以直接通过localhost来访问到目标设备,而不是192.168.1.145这样的内网地址,怎么做呢?如下:

1
2
$ brew install libimobiledevice
$ iproxy 8100 8100

注意上面的是libimobiledeviceimobiledevice已经不存在了,应该是升级成libimobiledevice这个了。然后我们在浏览器输入:localhost:8100/inspector就可以看到如下界面了:

说明端口转发成功!

运行Python3脚本

这个Python3脚本依赖一个包https://github.com/openatx/facebook-wda,这个包是WebDriverAgent的一个Python操作库,因此我们先安装这个包:

1
$ pip3 install --pre facebook-wda

接着将脚本下载下来,地址https://github.com/wangshub/wechat_jump_game。下载完成以后我们打开目录可以看到以下文件:

1
2
3
4
5
6
7
$ wechat_jump_game-master ls
LICENSE config wechat_jump_auto.py
README.md config.json wechat_jump_auto_iOS.py
Tools requirements.txt wechat_jump_iOS_py3.py
autojump.png resource wechat_jump_py3.py
changelog.md screenshot_backups
common wechat_jump.py

上面的config.json是我从config目录中拷贝出来的,不然会报错,找一个和自己手机分辨率一样的目录,进去拷贝这个config.json出来就好了。

打开微信小游戏

我们现在需要打开微信小游戏,然后使用两种模式来玩,自动和手动:

自动模式:

1
$ python3 wechat_jump_auto_iOS.py

手动模式:

1
$ python3 wechat_jump_iOS_py3.py

推荐手动模式,自己测距然后再点比较准确一点,自动模式好像到105分左右就会挂掉,不太靠谱。下面晒一晒自己的“战绩”:

一下子刷到了好友排名第三名,哈哈,不搞第一了,大家都懂。

总结

本文通过微信小程序游戏“跳一跳”作弊操作为例,详细讲解了如何将Xcode中的应用部署到真机上进行测试的操作流程,以前一直都不熟悉这一块,因此每次搞几下就放弃了。但是2018年都来了,要钻进去,一定可以找到解决方案,果然不负自己所望。面对不懂的问题,可以搁置,但是不能次次都搁置,否则现在不懂,到以后还是不懂。及时解决问题的心态和能力也是非常重要的。

分享到