其实对于IOS开发我只能属于入门
级别,不对,是入门-
级别。因此,对于如何将写好的应用部署到真机上进行测试确实是一脸懵逼,不知道怎么操作,对于一些证书的处理也不知道应该怎么做,本文今天借最近比较火的跳一跳
小游戏作弊玩法的机会,着重介绍如何部署应用到真机上,小游戏只是后面的一个消遣啦。注意:虽然这里是介绍如何部署WebDriverAgent应用到真机上,但是本文的介绍的方法是通用的,针对所有应用!
下载WebDriverAgent应用
这个项目是Facebook在Github上开源的一个应用,主要用于IOS端的测试。由于是要对小游戏进行作弊破解,因此这个工具还是很有必要的。地址是:https://github.com/facebook/WebDriverAgent。把整个项目克隆或者下载到本地。下载以后打开文件夹如下:
1 | $ WebDriverAgent-master ls |
这个时候如果我们直接按照Facebook的提示去执行./Scripts/bootstrap.sh
,就会失败,它会提示说我们是不是还没有在/usr/local/bin/
下安装Carthage
。因此,在此之前我们先要安装Carthage
引用,使用Homebrew安装比较好。
1 | $ brew install carthage |
然后再执行./Scripts/bootstrap.sh
,如下:
1 | $ WebDriverAgent-master ./Scripts/bootstrap.sh |
接着我们就可以使用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 | $ brew install libimobiledevice |
注意上面的是libimobiledevice
,imobiledevice
已经不存在了,应该是升级成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 | $ wechat_jump_game-master ls |
上面的config.json
是我从config
目录中拷贝出来的,不然会报错,找一个和自己手机分辨率一样的目录,进去拷贝这个config.json
出来就好了。
打开微信小游戏
我们现在需要打开微信小游戏,然后使用两种模式来玩,自动和手动:
自动模式:
1 | $ python3 wechat_jump_auto_iOS.py |
手动模式:
1 | $ python3 wechat_jump_iOS_py3.py |
推荐手动模式,自己测距然后再点比较准确一点,自动模式好像到105分左右就会挂掉,不太靠谱。下面晒一晒自己的“战绩”:
一下子刷到了好友排名第三名,哈哈,不搞第一了,大家都懂。
总结
本文通过微信小程序游戏“跳一跳”作弊操作为例,详细讲解了如何将Xcode中的应用部署到真机上进行测试的操作流程,以前一直都不熟悉这一块,因此每次搞几下就放弃了。但是2018年都来了,要钻进去,一定可以找到解决方案,果然不负自己所望。面对不懂的问题,可以搁置,但是不能次次都搁置,否则现在不懂,到以后还是不懂。及时解决问题的心态和能力也是非常重要的。