跟着项目学iOS应用开发:基于Swift 4
上QQ阅读APP看书,第一时间看更新

3.1 使用Xcode将项目下载到物理真机

在将项目上传到物理真机之前,请允许我向大家介绍一下“Sideloading”。Sideloading主要是在互联网上使用的一个术语,与“上传”和“下载”类似,被引申为在两个本地设备之间传输文件的过程,特别是在计算机和移动设备,例如手机、iPad或电子阅读器等。

Sideloading通常是指通过USB线、蓝牙、Wi-Fi或通过写入存储卡将媒体文件传输到移动设备中的过程。当涉及iOS应用程序时,Sideloading通常意味着在iOS设备上自行安装自制的应用程序。

接下来,我们要将I Am Rich应用上传到iPhone真机上,但是过程会稍微有点儿曲折。因为Apple的安全需求,所以我们要严格按照下面的步骤操作。

实战:将I Am Rich应用上传到iPhone真机上。

步骤1:在Xcode中打开之前的I Am Rich项目,确定Xcode的版本与iPhone上系统的版本一致。这一步非常重要,因为版本不一致会导致应用程序无法上传到iPhone真机。在Xcode的About菜单选项中查看当前Xcode版本,如图3-1所示,如果当前的版本为9.1或9.2,则iPhone上对应的iOS版本就必须是11.1或11.2。一般来说,高版本的Xcode可以兼容低版本的iOS,但是强烈建议两个版本保持一致。

图3-1 通过Xcode查看版本号

步骤2:在项目导航中选择顶部的I Am Rich条目(蓝色图标的),在右侧面板中选择TARGETS部分的I Am Rich,并确保选中General标签。你会发现在General标签中有很多设置选项。

步骤3:在Signing部分,确保自动管理签名(Automatically manage signing)处于勾选状态。在该状态下允许Xcode自动创建项目配置文件,设置开发证书和所有的代码签名。除此以外,还有一些工作需要我们手动完成,但是已经比Xcode 7之前的操作简单多了。

步骤4:单击Team右侧的下拉列表,当前的选项是None,如果你之前没有在Xcode中设置过该选项的话,选择添加一个账号(Add an Account...),如图3-2所示。在Accounts面板中添加你自己的Apple ID,该Apple ID可以是你之前用于下载iOS应用的账号,并且不需要将其升级为开发者账号。输入完成以后单击Sign In,如图3-3所示。在面板中单击刚刚添加好的账号,可以看到一些账号相关信息以及当前账号的角色是User,如果是开发者账号的话,登录以后的角色将会是Agent,如图3-4所示。

图3-2 添加一个全新的账号

图3-3 利用Apple ID账号登录

图3-4 检查Apple ID账号

步骤5:关闭当前面板并回到General标签,将Team从None修改为新添加的账号。此时,Provisioning ProfileSigning Certificate iPhone Developer也发生了相应的改变,如图3-5所示。

图3-5 在Signing中设置用户账号

步骤6:利用数据线连接iPhone真机与Mac,并确定相互之间已经完全信任。连接成功后,在Xcode菜单中选择Product/Destination,确保iPhone真机的名字出现在Device中并选中它,如图3-6所示。

图3-6 确认Xcode是否认出物理真机

步骤7:在Xcode顶部工具栏的Scheme中再次确认I Am rich项目是运行在iPhone真机后,构建并运行项目。在构建项目的同时,可以看到消息窗口中会显示当前的操作状态,例如准备、安装、运行等。在Xcode上传程序到iPhone的时候,有时会弹出对话框提示用户macOS想要做一些事情,需要用户输入当前登录的用户名和密码,输入完成以后单击Allow按钮。这一步非常重要,因为Xcode会在系统层面做出一些改变和设置,如果单击Deny就会导致后面的操作失败。

步骤8:在Xcode上传应用到iPhone的最后,会弹出一个错误面板,如图3-7所示。这是因为你现在iPhone真机上面还没有信任用于开发的配置文件。目前,Apple ID只是设置在了你的iPhone上,单击OK按钮关闭错误面板。

图3-7 弹出的错误面板信息

步骤9:在iPhone真机上面打开设置→通用→设备管理,单击信任“xxxxx@icloud. com”的连接并确认,如图3-8所示。

图3-8 在iPhone的设置中信任该设备

步骤10:回到Xcode并确保I Am rich项目还是会安装在iPhone真机上面,再次构建并运行项目。在此期间你可能会得到另一个错误信息,告知你需要解锁iPhone以后才能运行,现在只需要解锁你的iPhone即可。

另外,在General标签中还有个Deployment Target选项,它代表当前项目所部署的iOS版本号,如果你选择的是11.1,则会向下兼容11.0或者是10.3。

挑战

利用之前所掌握的技能,仿照之前的I Am Happy,完成I Am Busy项目。在本书素材中会为大家提供非常Cool的App Icon,以及用于显示在屏幕上的图片。