带有Fastlane的简单iOS版本

在准备发布iOS应用程序时,您将面临许多繁琐的重复性过程,例如处理证书,配置文件,上传翻译,使用应用程序支持的所有语言进行屏幕截图等。
下面我将向您介绍名为Fastlane的工具,该工具将为您处理大部分任务。

工具概述

为了构建,签名和发布应用程序,我们将使用以下工具:

  • 在Apple Developer Portal和iTunes Connect中创建新应用的产品
  • 匹配以创建证书和配置文件
  • 用于构建和归档iOS应用的健身房
  • 快照框架,用于在所有支持的语言上截屏
  • 用于检查元数据和发布应用程序的precheckdeviler

安装

要使用fastlane,需要先安装XCode和自制软件。

  $ xcode-select --install#确保最新的XCode命令行工具 
$ brew cask安装fastlane

建议将Gemfile用于Fastlane依赖项。 同样,它将加快fastlane。

 $ sudo gem install bundle 

在项目的根目录中创建具有以下内容的Gemfile:

 source "https://rubygems.org" 
gem "fastlane"

然后运行:

  $ 捆绑包更新 

GemfileGemfile.lock都添加到版本控制中。

导航到项目的目录并运行。

  $ bundle exec fastlane init -u  

Fastlane将生成一个基本配置,并从iTunes Connect获取现有配置(如果有)。 结果将创建包含AppfileFastfile的 ./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