Fastlane支持苹果双重认证终极解决方案

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fastlane支持苹果双重认证终极解决方案相关的知识,希望对你有一定的参考价值。

参考技术A

项目在测试阶段,已经配置完成 远程Jenkins+Fastlane 自动化打包AdHoc包,并且完善了各个实用功能:

还是采用 Jenkins+Fastlane 的方案,前期为了将AdHoc包和正式包区分开来,所以在Jenkins上,对此分别构建了两个Item,一个专门构建AdHoc包,一个专门构建正式包。后期其实可以合并为一个Item,用Jenkins的多参数构建加以区分

对于Fastlane最常用的两个action,就是gym和deliver,gym是Shenzhen的进阶,作为App构建使用的工具。deliver是将二进制上传至App Store Connect的工具。其分别有自己对应的配置项,在 fastlane官方文档 可查,也可以使用 fastlane action deliver 命令进行查看。
下面是我从网上看到前人文章后二次总结的deliver部分常用的配置项及说明。

以上介绍了fastlane的其中一个action deliver的相关配置,可以发现其实deliver的很多配置可以多个应用是通用的,比如说使用的开发者邮箱、是否手动发布等配置项。这时就可以建立一个与Fastfile同目录的名为Deliverfile的文件,其顾名思义,就是deliver的配置文件,deliver的通用配置都可以在此文件中去设置。

这样另外一个App下Fastlane中deliver的一些通用配置就不用设置了,直接复制粘贴过来Deliverfile即可

做完以上这一切,觉得应该万事大吉了。打包机钥匙串里也存有对应的苹果账号的密码,所以潇洒地按下 立即构建 。一段时间过后发现构建成功了,但是并没有收到苹果的邮件啊~打开Jenkins的构建日志如下:

打包虽然成功了,但是因为苹果开发者账号开启了 双重认证 ,所以仅有账号和密码还是不能够成功登录账号的。于是屁颠地跑去 fastlane官网 寻找解决方案,发现了这个:
fastlane官网针对双重认证情况下给出的deliver解决方案

可以看到官方给出四种方案,前两种方案都是 Manual verification (内心MMP),后两种有一个被标记了 deprecated ,那就只有第三个方案了😓。正好解决了我的选择困难症。下面就介绍一下这个方案的流程:

做完以上操作后,Jenkins重新构建,一段时间后仍显示成功,却没收到苹果邮件。继续查看Jenkins构建日志如下:

可以看到这次账号登录成功了,但是上传二进制到App Store Connect时再次被双重认证拦截,并且fastlane还给出了建议的解决方案,仔细一看,MMP!!!这不就是我解决登录时的解决方案吗?不禁感叹用谎言去验证谎言,得到的一定是谎言。
所幸继续往下看,发现这么两句

这两句给了我灵感,可以把keychain下开发者账号对应的密码改为 application specific password ,我们可以 使用CredentialsManager重设钥匙串对应的开发者账号密码 。步骤如下:

最后再次进行重新构建,如愿看到以下日志信息:

大功告成,登录开发者后台可以再次确认一下是否上传成功~

没有fastlane的天蓝色devops服务连接到苹果

【中文标题】没有fastlane的天蓝色devops服务连接到苹果【英文标题】:azure devops service connection to apple without fastlane 【发布时间】:2020-08-04 17:32:10 【问题描述】:

为了将我们的 iOS 应用分发到 TestFlight,过去我们可以只使用帐户密码来授权我们的管道,这是一次性交易。但是现在,Apple 需要 2FA,所以现在我们需要使用 fastlane 会话,它每个月左右到期 - 不方便!有没有办法以另一种不会频繁过期的方式授权我们的管道?

【问题讨论】:

有什么更新吗?我正在寻找一个类似的解决方案,我想直接连接到 App Store Connect API。但我还没有找到任何关于此的文档。 @JacobAhlberg,没有更新 - 我们还没有找到解决方案。最近,devops 团队正在处理更高优先级的工作,但会在一两周内恢复。也就是说,您可以使用 Fastlane,但令牌将每隔几个月过期一次。 【参考方案1】:

有没有一种方法可以通过另一种方式来授权我们的管道,并且不会如此频繁地过期?

恐怕没有这样的方式来授权我们的管道另一种不会如此频繁地过期的方式。

大多数 iOS 持续交付管道已使用 Fastlane 工具设置,并且 2FA 成为 App Store Connect 中所有帐户持有者角色(非管理员)的强制性要求,因此目前没有解决此问题的干净解决方案,但将来可能会有一些临时的黑客行为。

此外,如果您是管理员用户,则无需启用 2FA。 Apple 开发者关系团队确认了这一点:

2FA 仅适用于您是帐户持有人角色(不是 admin) 在 App Store Connect 中。 如果您是管理员用户,则无需启用 2FA

Christopher Pickslay 的推文here。

此外,目前有一些关于如何从 iOS 项目中完全移除 Fastlane 的博客,您可以查看它们以获得一些帮助:

Five Options for iOS Continuous Delivery without Fastlane

Keep using Fastlane with Apple's 2FA changes

【讨论】:

谢谢,里奥。我们将对此进行调查并报告。 @tele-bird,这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗? 还没有更新,但我会在我们处理完后报告。我们的时间表是在 fastlane 会话令牌再次过期之前 - 可能是 1-2 周。

以上是关于Fastlane支持苹果双重认证终极解决方案的主要内容,如果未能解决你的问题,请参考以下文章

苹果手机显示不支持此配件怎么办 可以这样解决问题

如果苹果手机充电显示不支持此配件怎么办

微服务权限终极解决方案(spring-cloud-gateway-oauth2)

为啥苹果手机老出现可能不支持此设备

802.1X认证实验

苹果手机显示不支持此配件怎么解决?