带有Fastlane的简单iOS版本
在准备发布iOS应用程序时,您将面临许多繁琐的重复性过程,例如处理证书,配置文件,上传翻译,使用应用程序支持的所有语言进行屏幕截图等。
下面我将向您介绍名为Fastlane的工具,该工具将为您处理大部分任务。
工具概述
为了构建,签名和发布应用程序,我们将使用以下工具:
- 在Apple Developer Portal和iTunes Connect中创建新应用的产品
- 匹配以创建证书和配置文件
- 用于构建和归档iOS应用的健身房
- 快照和框架,用于在所有支持的语言上截屏
- 用于检查元数据和发布应用程序的precheck & deviler
安装
要使用fastlane,需要先安装XCode和自制软件。
$ xcode-select --install#确保最新的XCode命令行工具
$ brew cask安装fastlane
建议将Gemfile用于Fastlane依赖项。 同样,它将加快fastlane。
$ sudo gem install bundle
在项目的根目录中创建具有以下内容的Gemfile:
source "https://rubygems.org"
gem "fastlane"
然后运行:
$ 捆绑包更新
将Gemfile和Gemfile.lock都添加到版本控制中。
导航到项目的目录并运行。
$ bundle exec fastlane init -u
Fastlane将生成一个基本配置,并从iTunes Connect获取现有配置(如果有)。 结果将创建包含Appfile和Fastfile的 ./fastlane目录。
Appfile可能看起来像这样。
app_identifier “ com.datarockets.CoolApp”
apple_id “您的苹果ID”
team_id “ YOURTEAMID”
如果您有多个应用程序,并且不想一天面对“ 生成的最大证书数 ”,则可以对所有应用程序使用单个证书。 只需将所有应用程序标识符指定为如下数组:
app_identifier [“ com.datarockets.AppOne”,“ com.datarockets.AppTwo”]
生产
Fastlane生产允许从命令行在Apple Developer Portal和iTunes Connect中创建新的iOS应用。 运行以下命令。
$ bundle exec fastlane产生-u -a
比赛
现在,当创建新应用程序时,该处理证书和配置文件了。 Fastlane匹配允许使用私有git存储库跨团队同步证书和配置文件。
首先,创建一个单独的私有 git存储库 ,将在其中存储所有证书和配置文件。 这样安全吗?
您可以为每个应用程序使用单独的分支。 它是有效的解决方案,但是,当前我更喜欢将app_identifier设置为数组。
运行以下命令。 它将创建匹配配置文件-./fastlane目录中的Matchfile 。
$ bundle exec fastlane match初始化
Matchfile可能如下所示:
git_url “ https://github.com/datarockets/private-repository”
git_branch “您的应用分支”
team_id “ YOURTEAMID”
用户名 “ your-apple-id”
force_for_new_devices “ true”
您也可以将ssh git url与match一起使用。 只需将git_url修改为以下内容: git@github.com :datarockets / private-repository.git
使用以下命令之一生成证书和配置文件。
$ bundle exec fastlane match development#开发
$ bundle exec fastlane match adhoc#对于临时
$ bundle exec fastlane match appstore#对于App Store
$ bundle exec fastlane match enterprise#对于企业
这就是私有git存储库的样子。
现在转到XCode并在“签名”部分中选择新创建的配置文件。
健身房
是时候构建应用程序了! Fastlane健身房允许生成签名的iOS应用。
以下命令将在./fastlane目录中创建一个配置文件-Gymfile 。
$ bundle exec fastlane gym init
Gymfile可能看起来像这样。
方案 “ CoolApp”
sdk “ iphoneos10.0”
include_bitcode为真
include_symbols是
干净的真实
output_directory “ ./fastlane/build”
output_name “ CoolApp_1.0.0”
现在,要在.ipa文件中构建和打包我们的iOS应用,请运行以下命令。
$ 捆绑高管fastlane健身房
快照
要将我们的应用提交审核,我们需要根据指南为每个本地化至少制作一张屏幕截图。 可以使用每种设备类型的最高分辨率屏幕截图。 截取所有这些屏幕截图可能是一项繁琐且耗时的任务,尤其是对于许多受支持的语言而言。 Fastlane快照允许自动执行此任务。
以下命令将在./fastlane目录中创建一个配置文件-Snapfile 。
$ bundle exec fastlane快照初始化
快照文件可能看起来像这样。
设备 ([
“ iPhone 7 Plus”
])
语言 ([
“ ru”,
“ en”,
“ de”,
“ fr”,
“它”,
“ es”,
“ nl”
])
方案 “ CoolApp”
output_directory “ ./fastlane/screenshots”
clear_previous_screenshots是
要运行fastlane snapshot
创建一个简单的UI测试,然后运行该测试以获取所需的屏幕截图。 另外,您需要将fastlane snapshot init
生成的SnapshotHelper.swift文件添加到UI测试目标。
导入 XCTest
class MunchkinLevelCounterUITests:XCTestCase {
覆盖func setUp(){
超级 .setUp()
ContinueAfterFailure =假
让 app = XCUIApplication()
setupSnapshot(应用程序)
app.launch()
}
覆盖func tearDown(){
超级 .tearDown()
}
func testScreenshots(){
让 app = XCUIApplication()
XCUIDevice.shared()。orientation = .portrait
//屏幕编号onene
快照(“ 0-第一屏”)
//屏幕第二
app.navigationBars.buttons.element(boundBy:0).tap()
快照(“ 1秒屏幕”)
//屏幕三
app.navigationBars.buttons.element(boundBy:1).tap()
app.alerts.element(boundBy:0).buttons.element(boundBy:1).tap()
快照(“两屏”)
//跳转到第一个屏幕
XCUIApplication()。navigationBars.buttons.element(boundBy:0).tap()
XCTAssert(真)
}
}
全部设置完毕。 现在只需运行以下命令。
$ bundle exec fastlane快照
框架
(可选)为使屏幕截图看起来更好,我们可以使用fastlane frameit将屏幕截图放入真实的设备框架中。 为此,请导航到./fastlane/screenshots目录并运行以下命令。
$ bundle exec fastlane frameit gold
交付
现在,填写所有必需的元数据,并将其连同屏幕截图和应用程序二进制文件上传到iTunes Connect。 为此,请使用fastlane delivery 。 应用程序元数据可以放在Deliverfile本身中,也可以放在./fastlane/metadata目录中的单独的.txt文件中。 以下命令将在./fastlane目录中创建配置文件-Deliverfile 。
$ bundle exec fastlane提供初始化
Deliverfile可能看起来像这样。
app_identifier “ com.datarockets.CoolApp”
用户名 “ your-apple-id”
ipa “ CoolApp_1.0.0.ipa”
app_version “ 1.0.0”
Submit_for_review否
screenshots_path “ fastlane / screenshots /”
metadata_path “ fastlane / metadata /”
app_rating_config_path “ fastlane / rating_config.json”
app_review_information (
first_name:“帕维尔”,
last_name:“ Vashkel”,
电话号码: ””,
email_address:“您的电子邮件地址”,
笔记:“给评论者的一些笔记”
)
名字 (
'en-US'=>“ CoolApp”,
#...
'ru'=>“ CoolApp”
)
support_url (
'en-US'=>“ http://example.com/”,
#...
'ru'=>“ http://example.com/”
)
关键字 (
'en-US'=>“一些,关键,单词”,
#...
'ru'=>“一些,关键,单词”
)
app_icon './AppIcon.png'
平台 “ ios”
版权所有 “ 2017 datarockets,LLC”
primary_category'MZGenre.Games '
secondary_category'MZGenre.Entertainment '
primary_first_sub_category'MZGenre.Card '
primary_second_sub_category'MZGenre.Board '
在配置文件中,我们指向rating_config.json文件,该文件用于在iTunes Connect中计算应用程序评分。 每个类别的得分从0到2。
{
“ CARTOON_FANTASY_VIOLENCE” :0,
“ REALISTIC_VIOLENCE” :0,
“ PROLONGED_GRAPHIC_SADISTIC_REALISTIC_VIOLENCE” :0,
“ PROFANITY_CRUDE_HUMOR” :0,
“ MATURE_SUGGESTIVE” :0,
“恐怖” :0,
“ MEDICAL_TREATMENT_INFO” :0,
“ ALCOHOL_TOBACCO_DRUGS ”:0,
“赌博” :0,
“ SEXUAL_CONTENT_NUDITY” :0,
“ GRAPHIC_SEXUAL_CONTENT_NUDITY” :0,
“ UNRESTRICTED_WEB_ACCESS” :0,
“ GAMBLING_CONTESTS” :0
}
现在运行以下命令。
$ 捆绑执行fastlane交付
此步骤可能需要一段时间。 提交之前,将生成带有所有应用程序元数据和屏幕截图的Preview.html文件。 您可以检查所有内容是否正确填写。
一起使用
上面我们将每个fastlane工具用作单独的命令。 尽管这不是最坏的选择,但可以通过使用另一个配置文件Fastfile进一步自动化所有这些操作 。 Fastfile是一种顶级配置文件,您可以在其中定义用于不同任务的通道 。
Fastfile可能看起来像这样。
fastlane_version “ 1.109.0”
default_platform :ios
平台 :ios
before_all 做
椰子
干净 :正确,
repo_update :是
)
结束
desc“向AppStore提交新版本”
车道 :release do
生产
匹配 ( 类型 :“ appstore”)
健身房 (
export_method :“应用商店”,
export_options :{
ProvisioningProfiles :{
“ com.datarockets.CoolApp” =>“匹配AppStore com.datarockets.CoolApp”
}
}
)
快照
框架金
交付
desc“向闲置频道发布消息”
松弛 (
消息 :“ CoolApp已发布”,
slack_url :“ https://hooks.slack.com/services/desired-chanel”
)
错误 |通道,异常|
结束
结束
结束
现在,无需执行一堆单独的命令,只需执行一个即可。
$ bundle exec fastlane ios版本
包起来
Fastlane是一个出色的工具,有助于为开发过程增加更多的自动化,并使应用开发再次变得有趣。
链接
Github页面:https://github.com/fastlane/fastlane
官方文档:https://docs.fastlane.tools