我在我的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]设置它时,变量为空。有人知道为什么会这样吗?
答案 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等等......但是更好地测试一下。
我希望这会对你有帮助;)。