Fastlane没有初始化环境变量--env

时间:2017-06-15 08:04:48

标签: ios xcode environment fastlane

我在我的iOS应用程序中使用fastlane。在这种情况下,我有一个包含多个目标的xcode项目。因此我想在fastlane中使用一些不同的变量。但是,变量未初始化。

我为每个目标设置了自定义.env文件。例如Target1的.env文件:

ENV_TARGET_NAME=MyAppName
ENV_TARGET_NAME_SHORT=MyAppNameShort

.env文件名为.env.Target1,并在fastlane文件夹中设置。我已经尝试通过将文件放在项目的根文件夹中来查看这是否有效。

我的fastlane文件如下所示:

fastlane_version "1.109.0"

before_all do
     ensure_git_status_clean
     skip_docs
end

lane :QA_all do
    sh "fastlane QA --env Target1"
    sh "fastlane QA --env Target2"
    sh "fastlane QA --env Target3"
end

lane :accept_all do
    sh "fastlane QA --env Target1"
    sh "fastlane QA --env Target2"
    sh "fastlane QA --env Target3"
end

lane :live_all do
    sh "fastlane QA --env Target1"
    sh "fastlane QA --env Target2"
    sh "fastlane QA --env Target3"
end

desc "Builing version with TEST environment"
lane :QA do |options|
    target_name = ENV['ENV_TARGET_NAME']


/* Rest of the file */

- 更新

使用     选项[:TARGET_NAME] 得到目标名称。但是我将其发送到.sh文件以移动到ipa到正确的文件夹。

sh "sh ./scripts/ipa_deployment.sh #{version_number} #{target_name}

当我将target_name硬编码设置为“MyAppName”时,我会在.sh文件中看到变量。但是,当我从选项[:target_name]设置它时,变量为空。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

你做错了。 正如文件所说https://docs.fastlane.tools/advanced/#environment-variables 首先加载.env,然后加载.env.myTarget

但看看你在做什么,你的跑步fastlane QA_all(f.ex.)这个快速通道的例子根本没有env!这就是为什么你有一个空字符串。

甚至,当你正在进行sh ...时,这将在另一个上运行,我不确定,处理?¿?,输出与你启动fastlane的输出不一样。

如果你想为3个不同的目标(我理解的应用程序)运行3个构建/部署脚本。你应该更好地使用一个脚本,你可以调用3个fastlane配置。

我没有尝试过,但是应该在脚本上序列化,启动你的第一个fastlane Target1,当它完成时,运行2等等......但是更好地测试一下。

我希望这会对你有帮助;)。