需要在Xcode的Targets->Signing&Capabilities勾选Automaticallymanagesigning。用这种方式,所有的工作包括AppId、证书、描述文件(ProvisioningProfile)的创建都由Xcode包办了,非常的方便。
这种方式对个人开发者非常友好,但是对团队开发来说有比较大的弊端,具体如下。
如图所示:
比如说,添加新设备后,如果描述文件配置里面没有勾选这个设备,这个设备是无法安装我们的应用的,所有每次都需要确保描述文件的SelectAll是否已勾选。
然后需要在Xcode上取消勾选Automaticallymanagesigning,同时设置对应的证书和描述文件(ProvisioningProfile)。
这种方式的优点是所有开发人员都共用一份证书和描述文件,缺点也非常明显:每次证书过期或者添加新的设备后,都需要手动去更新,然后重新分发其他人,操作起来非常麻烦。
下面我将详细介绍match的使用流程。
另外,当有多个App时,建议一个git分支对应一个App,这样,我们所有App的证书都在一个仓库里面,便于管理。
在终端定位到项目目录,注意先看项目目录下是否存在fastlane目录,如果没有的话,先执行fastlaneinit命令来初始化fastlane服务(后面会用到)。然后再执行fastlanematchinit命令,首先会提示让你选择存储方式,我们选git,然后再输入git仓库地址,最后会生成一个Matchfile的配置文件。接下来,我们修改一下Matchfile。
fastlanematchdevelopmentfastlanematchadhocfastlanematchappstore复制代码但是这种方式使用起来非常不方便,特别是用于自动化构建脚本,因为每次都要输入AppleId和密码;有的团队的做法是在Matchfile配置一个公用的AppleId,这样就不用每次输入账户和密码。
为什么要使用AppStoreConnectAPI?
创建AppStoreConnectAPI密钥
然后下载API秘钥(一个.p8文件),保存到项目的fastlane目录。注意:私钥只能下载一次,永远不会过期,保管好,如果丢失了,去AppStoreConnect后台撤销密钥,否则别人拿到也可以用。
为了更加方便使用,我们通过fastlane来配置几个常用的命令,将以下内容添加到你的fastlane目录下的Fastfile文件中:
当我们有新同事入职,或者需要在新的电脑上配置开发证书和描述文件,我们仅仅只需要一条fastlanematch_all命令即可。
很少会有这种需求,如果确实需要清空所有证书和描述文件的话,可以通过fastlanematch_nuke工具来处理:
desc"清空所有的证书和描述文件,慎用"lane:nuke_alldomatch_nuke(api_key:api_key,type:"development")match_nuke(api_key:api_key,type:"adhoc")match_nuke(api_key:api_key,type:"appstore")end复制代码注意:清空完所有的证书和描述文件后,已安装的测试包是无法使用的,谨慎使用。
1.通过Xcode来查看
先通过USB在电脑上连接iOS设备,然后在Xcode中打开菜单:Window->DeviceandSimulators,上面显示的Identifier这一项就是我们所需要的设备UDID。
2.通过第三方工具
原理:描述文件里面包含了所有的支持安装的设备的UDID,所以我们只需要看描述文件里面是否包含该设备的UDID就行了。在我们构建IPA包时,里面会嵌入一个叫embedded.mobileprovision文件(其实就是描述文件),判断我们的设备UDID是否在包含这个文件中,就能判断是否能安装(当然这只是其中的一个条件,其他的没在本文范围内,不做过多介绍)。
但是,这个文件是无法直接打开查看的,因为它经过了特殊的编码,其实质是一个plist文件,我们可以通过以下方式来查看它:
1.通过security命名解码查看
securitycms-D-iembedded.mobileprovision>result.plistopenresult.plist复制代码