14

我有一个包含六个目标的 Xcode 项目,每个目标都用于构建一个单独的应用程序。我正在尝试设置 fastlane 来帮助我发布这些应用程序。

Fastlane 文档建议使用 .env 文件来处理多个目标(您可以在不同的 .env 文件中指定app_identifierteam_name等,然后,例如,调用fastlane appstore --env ENV_NAME_HERE)。但是我不知道如何deliver正确设置。

deliver init默认情况下仅下载一个目标的元数据。我需要将所有目标的元数据下载到不同的目录(显然,然后使用这些目录上传数据)。 deliver download_metadata不接受--env参数(我的 Deliverfile 取决于 env 文件)。我试过fastlane deliver --env了,但它似乎只是 的简写deliver,所以它也不起作用。

我想我可以deliver使用不同--metadata_path的参数手动运行(以及所有其他参数,因为我的 Deliverfile 无效,因为它依赖于 env 文件),然后使用 Deliverfile + .env 文件指定目录。但是由于我已经设置了 Deliverfile 和 .env 文件(现在我deliver只用来上传二进制文件),我希望有更好的方法。有没有?

PS 这是一个大型遗留项目,因此将其分成六个不同的项目会很棒,但不幸的是,这不是一个选择。

4

3 回答 3

19

我也一直在努力解决这个问题,使用 .env 文件很容易设置提交。

但是检索初始数据很困难,但并非不可能。

要获取元数据,它运行以下命令:

fastlane deliver download_metadata -m "./Targets/Release/Metadata" -u "itunes@username" -a "com.example.ios"

对于屏幕截图:

fastlane deliver download_screenshots -w "./Targets/Release/Screenshots" -u "itunes@username" -a "com.example.ios"
于 2016-05-19T10:46:52.713 回答
8

加起来@rckoenes答案:

1)使用此信息创建一个 .env.yourEnvName 文件(例如):

DLV_METADATA_PATH="../Targets/Your_Target/Metadata"
DLV_ITUNESCONNECT_USERNAME="yourItunesUser@something.com"
DLV_BUNDLE_ID="com.yourCompany.yourTarget"

2)创建一个这样的车道:

desc "Download metadata"
 lane :metadata do
    sh('fastlane deliver download_metadata -m "$DLV_METADATA_PATH" -u $DLV_ITUNESCONNECT_USERNAME -a $DLV_BUNDLE_ID')
 end

3)像这样调用fastlane:

fastlane metadata --env yourEnvName

这样它会更干净一些,并且您将变量保存在 .env 文件中。要自动调用多个目标,请参阅:https ://docs.fastlane.tools/faqs/#multiple-targets-of-the-same-underlying-app

于 2017-09-08T14:51:53.893 回答
7

这是@rckoenes、@Riddick 的答案和这个fastlane github 问题提交的组合。

我正在尝试@Riddick 的答案以拥有更清洁的工作流程,但我无法让它下载元数据。出于某种原因,它只制作元数据路径文件夹,但没有从 iTunesConnect 下载元数据。我做了一些试验和错误,并从上面的链接中找到了这行代码:

ENV["DELIVER_FORCE_OVERWRITE"] = "1"

将它添加到车道并工作!

1)使用此信息创建一个 .env.yourEnvName 文件(例如):

METADATA_PATH="../Targets/Your_Target/Metadata"
APP_IDENTIFIER="com.yourCompany.yourTarget"

2)创建一个这样的车道:

desc "Download metadata"
 lane :metadata do
    ENV["DELIVER_FORCE_OVERWRITE"] = "1" # This is the additional line from Riddick's code
    sh "fastlane deliver download_metadata --app_identifier #{ENV['APP_IDENTIFIER'] --metadata_path #{ENV['METADATA_PATH']}"
 end

3)像这样调用fastlane:

fastlane metadata --env yourEnvName

***我没有使用用户名参数,因为我的交付文件中有它。

于 2018-04-25T07:21:35.603 回答