fastlane移除苹果两步验证

苹果的 AppleID 现在都开启了两步验证,在登录新设备或者进行一些操作时都需要提供二次验证的验证码(已登录设备、绑定手机号、绑定邮箱接收),这个功能提高了 AppleID 的安全性,但也给自动化打包带来了一些困扰,我们的打包过程会被中断,下面就简单介绍两种可以在 fastlane 中移除苹果两步验证的方案。

参考文档:http://docs.fastlane.tools/getting-started/ios/authentication/

使用应用特殊密码

点击链接 appleid.apple.com/account/manage 进入 AppleID 管理页面,点击 App 专用密码,然后生成。(此密码仅展示一次,请注意保存)

将专用密码配置在 fastlane 的环境变量当中即可

1
ENV["FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD"] = "xxxx-xxxx-xxxx-xxxx"

此种方式仅支持 upload_to_app_storeupload_to_testflight 等上传二进制动作,其他的与 App Store Connect 交互的动作不支持。

使用 App Store Connect API key(推荐)

点击 https://appstoreconnect.apple.com/access/api 进入 App Store Connect 用户与访问下面的 Keys 页面,生成一个 API key(请确保自己有权限使用这个功能,如果看不到这个 tab,也可以让账号持有者帮你创建),获得 key_idissuer_id 并下载 API Key 的 p8 文件(此文件仅能下载一次,请注意保存)

在调用动作之前,向 Apple 请求获得 api_key,并使用即可

1
2
3
4
5
6
7
8
9
10
11
lane :release do
api_key = app_store_connect_api_key(
key_id: "XXXXXXXXX",
issuer_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
key_filepath: "./AuthKey_XXXXXXXXX.p8",
duration: 1200, # optional (maximum 1200)
in_house: false # optional but may be required if using match/sigh
)

pilot(api_key: api_key)
end

本人更推荐自动将 api_key 自动写入上下文的这种写法,fastlane 的标准动作都会去上下文当中取 api_key,写法上更方便一点

1
2
3
4
5
6
7
8
9
10
11
12
lane :release do
app_store_connect_api_key(
key_id: "XXXXXXXXX",
issuer_id: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
key_filepath: "./AuthKey_XXXXXXXXX.p8",
duration: 1200, # optional (maximum 1200)
in_house: false # optional but may be required if using match/sigh
)

# Automatically loads Actions.lane_context[SharedValues::APP_STORE_CONNECT_API_KEY]
pilot
end