这次以 fastlane 为例,尝试项目中有什么事情可以被自动完成。
fastlane 是 Ruby scripts 的集合,安装方法不多说了见 官网文档。
fastlane 中有但不限于以下工具集:
- produce 同时在 Apple Developer Portal 和 App Store Connect 中创建新的 iOS apps。
- cert 自动创建和维护 iOS 签名证书。
- sigh 创建,更新,下载和修复配置文件。
- snapshot 自动在每台设备上获取 iOS 应用的本地化屏幕截图。
- frameit 将您的屏幕截图放入正确的设备框架中。
- gym 构建和打包您的 iOS apps。
- deliver 将截图,元数据和您的应用上传到 App Store。
- pem 自动生成并更新推送通知配置文件。
- spaceship 一个 Ruby 库能够访问苹果开发者中心和应用商店连接 api。
- pilot 自动化 TestFlight 部署并管理测试用户。
- boarding 邀请 beta 测试人员。
- match 使用 Git 同步整个团队的证书和配置文件。
- scan 运行 app 测试。
实验环境:Xcode 10.1、Swift 4.2、fastlane 2.116.1、$99 开发者账户
项目添加 fastlane
在项目根目录下:
fastlane init |
在出现 What would you like to use fastlane for?
是选择 4 Manual setup
,在根据提示回车确认。
之后项目文件中将新增:
Gemfile
这个文件包含了 fastlane gem 的依赖fastlane
这个文件夹包含Appfile
存储 app identifier,Apple ID 以及 fastlane 设置 app 所需的任何其他标识信息Fastfile
管理 lanes 创建的可被调用的 actions
创建 App
打开 Fastfile
将里面所有内容替换为:
default_platform(:ios) |
打开 Appfile
将 apple_id
前的 # 移除,将 [[APPLE_ID]]
替换为真实 Apple ID,这样 fastlane 将不会反复提示你输入。
如果 App Store Connect 和 Apple Developer Portal 可以将 apple_id
替换为:
apple_dev_portal_id("[[APPLE_DEVELOPER_ACCOUNT_USERNAME]]") |
打开命令行在项目目录输入:
fastlane create_app |
根据提示输入密码,之后将提示你输入 bundle ID,以反 host 格式创建 ID,之后是 App name 最长 30 个字符。
完成后登陆 Apple Developer Center 和 App Store Connect,app 在二者已经都被创建了。
再次打开 Appfile 将 app_identifier
填写刚才创建的 bundle ID。
生成交付文件
bundle exec fastlane deliver |
根据提醒暂不使用 Swift 代替 Ruby,因为 fastlane.swift
现在为 beta。
完成后 fastlane 文件夹中新增:
metadata
这个文件夹存放了 app 大部分的 metadata 元数据Deliverfile
保存这剩余小部分的元数据screenshots
将保存 app 截图
metadata
文件夹中文件内容就是提交给 App Store Connect,多语言 app 可以手动创建对应的语言文件夹。
更多 deliver
参数见 这里
自动截图
多种设备和多语言 app 的截图是繁杂的。
fastlane snapshot init |
fastlane 文件夹中新增:Snapfile
,将里面的所有内容替换为一下:
# 1 - 想截图的设备列表 |
保存关闭,然后命令中执行:
fastlane snapshot init |
创建 Test Target
在 Xcode 选择 File -> New -> Target 选择 iOS UI Testing Bundle 点击 Next。
Product Name 输入上面 scheme
填写的名字 MZone Poker UITests 点击 Finish。
之后将 fastlane 文件夹中的 SnapshotHelper.swift 拖到 mZone Poker UITests 中。
之后将 mZone_Poker_UITests.swift 中的 setUp() 和 tearDown() 移除,替换 testExample():
// 1 设置截屏和启动 app |
之后创建 mZone Poker UITests scheme,点击 run stop 右边的按钮选择 Manage Schemes...
选择 Edit Schemes...
勾选 Test
和 Run
打开 Fastfile 添加:
desc "Take screenshots" |
命令行执行:
bundle exec fastlane screenshot |
完成后将自动打开:
创建 IPA 文件
首先要确保已经 target
设置 bundle identifier
和 signing identity
。
命令行执行:
fastlane gym init |
打开 Gymfile
替换为以下内容:
# 1 指定 scheme |
打开 Fastfile
添加:
desc "Create ipa" |
保存后命令行执行:
bundle exec fastlane build |
上传到 App Store Connect
使用 deliver
将截图、元数据、.ipa 文件上传到 App Store Connect。
替换 Deliverfile
内容:
# 1 价格为 0 则是免费应用 |
在 Fastfile
中添加:
desc "Upload to App Store" |
然后命令行执行:
bundle exec fastlane upload |
完成后,登录 App Store Connect。屏幕截图,元数据和构建应该在那里,等待审查。
将命令放在一起
打开 Fastfile
添加:
desc "Create app, take screenshots, build and upload to App Store" |
在 Deliverfile
添加:
force(true) |
执行:
bundle exec fastlane do_everything |
References
– EOF –