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: "D383SF739",
issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
key_filepath: "./AuthKey_D383SF739.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: "D383SF739",
issuer_id: "6053b7fe-68a8-4acb-89be-165aa6465141",
key_filepath: "./AuthKey_D383SF739.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