我为我的iOS应用程序使用了fastlane。在这种情况下,我有一个Xcode项目与多个目标。因此,我想在fastlane中使用一些不同的变量。但是变量不会被初始化。Fastlane不初始化环境变量--env
我已经为每个目标设置了自定义的.env文件。例如目标1的.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}
当我设置硬编码,如“MyAppName”的TARGET_NAME我会看到.SH文件中的变量。但是,当我从选项[:target_name]中设置变量为空时。有人知道为什么会发生这种情况?
我真的不明白你的目标是什么,但在我看来,你应该只需要调用带有你想要的选项的':QA'车道。例如, '道:QA_all做 QA {TARGET_NAME:目标1} QA {TARGET_NAME:目标2} QA {TARGET_NAME:Target3} 结束 道:QA做|选项| 将“使用#{options [:target_name}”做任何想做的事“ end' –
我的目标是使用应用程序中的目标名称将.ipa文件写入文件夹,具体取决于此值。因此,每个目标都将.ipa文件放在名为目标的文件夹中。我的代码在设置target_name硬编码时工作,但没有从环境文件中获取值。 据我所知可以使用类似 '#{options [:target_name}'来获得目标名称? 我会尝试一下,并在这里再次评论 – Maurice
顺便说一句,我错误的类型如何做到这一点,要获得代码中的选项,你只需要'options [:target_name]'。 '#{options [:target_name]}'是将它放入Ruby字符串中。 –