趁着测试同学还在疯狂提 bug 的间隙,研究了一下 iOS 的自动打包以及上传,包括App Store和像蒲公英这样的一些第三方平台。 写这篇文章的本意是想记录下我在搭建及使用 fastlane 的所遇到的问题。 至于如何搭建和使用 fastlane,官方文档和网上文章也介绍得很详细了,不在这里赘述。
- 前提
1. 准备工作
- 注册开发者账号
- 申请并下载证书(开发、发布最好都要)
- 申请并下载配置文件(Provisioning Profile)
2. 项目配置
1.双击安装证书及配置文件
2.把开发者账号登录到 xcode (以后 Provisioning Profile 有更新可直接下载,不用去 Developer.Apple.com 下载)
3.在项目里选择对应的配置文件(这里我不适用自动配置,如图步骤一)
- 环境搭建
参考如下:
- 遇到的问题
使用 fastlane 自动打包上传至 App Store Connect 遇到的问题。
1. ruby 源不兼容
问题:
RubyGems is not listed as your Gem source
You can run `gem sources` to see all your sources
Please run the following command to fix this:
$ gem sources --add https://rubygems.org
解决:
# 终端执行
gem sources --add https://rubygems.org
分析:
我的电脑装的是 gems.ruby-china.com/, 但是提示 RubyGems is not listed as your Gem source,说明 rubygem 识别不了 china 这个源,那索性再加一个就好了。
2. 账号权限
问题:
The request could not be completed because:
This request is forbidden for security reasons - The API key in use does not allow this request
解决:
开发者账号权限设置成 App Manager 或以上
- 打开App Store Connect
- 进入用户和访问
- AppFile 文件里设置的账号是否包含在这个分组里,如果没有,就要调权限,或着换账号 (也可以是比这个更高的权限,出现这个问题的是,因为配置的是个开发者权限的账号,所以会被 forbidden)
参考:
3. 上传失败
问题:
Transporter transfer failed.
Please sign in with an app-specific password. You can create one at appleid.apple.com. (-22910)
Your account has 2 step verification enabled
Please go to https://appleid.apple.com/account/manage
and generate an application specific password for
the iTunes Transporter, which is used to upload builds
To set the application specific password on a CI machine using
an environment variable, you can set the
FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD variable
解决方法一:(我用的)
- 打开 appleid.apple.com/account/man…
- 使用 AppFile 配置的账号登录进入
- 设置 App 专用密码,会得到一串密码,拷贝出来存好
- 回到终端,重新运行 fastlane action xxxx(比如 upload_to_app_store)
- 在遇到需要输密码的地方把刚才生成的密码粘贴进去,回车 注意:username与密码必须一一对应
解决方法二:
1、2、3 同上
4.打开 fastFile 文件,设置环境变量
before_all do
ENV['FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD'] = '专用密码'
end
分析:
现在的 Apple id 基本都开启了双重验证,但是 fastlane action 里面需要一个专用密码跳过双重验证这一步,所以需要到 Apple id 管理界面生成一个专用密码,出现上面错误的原因是错误的把 Apple Id 的密码当成了专用密码。
3. Deliver 文件参数格式
问题:
DeliverFile 文件:
deliver(
force: true,
skip_screenshots: true,
skip_metadata: true,
)
解决:
force true
skip_screenshots true
skip_metadata true
分析:
根据官方文档使用的示例格式修改参数与实际不符
打包至蒲公英
打包发布至蒲公英相对来说还是简单的,配置相关的证书等信息,已经填写好 key,加上蒲公英已经写好了一套脚本,基本上没什么问题。
- 结语
fastlane 的使用还有很多可以拓展的地方,可根据业务需求自行拓展。每个人的业务需求不一样,遇到的问题也不一样。希望能给碰到同样难题的同学提供思路。还有,官方文档一定要看,里面才是最详细的从安装->使用.