我正在为我的iOS应用程序使用fastlane。在这种情况下,我有一个具有多个目标的 xcode 项目。因此,我想在快车道中使用一些不同的变量。但是,变量不会初始化。
我已经为每个目标设置了自定义的 .env 文件。例如,Target1 的 .env 文件:
ENV_TARGET_NAME=MyAppName
ENV_TARGET_NAME_SHORT=MyAppNameShort
.env 文件称为 .env。目标 1 并在快车道文件夹中设置。我已经尝试通过将文件放在项目的根文件夹中来查看这是否有效。
我的快车道文件如下所示:
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]设置它时,变量为空。有人知道为什么会这样吗?
你做错了。正如文档所说 https://docs.fastlane.tools/advanced/#environment-variables它首先加载.env
然后加载您的.env.myTarget
但是看看你在做什么,你的跑步fastlane QA_all
(f.ex.(这个快车道的实例根本没有env
!这就是您有一个空字符串的原因。
甚至,当你做sh ...
这将在另一个,我不确定,进程?¿?上运行时,输出将与你启动快速通道的输出不同。
如果您想为 3 个不同的目标运行 3 个构建/部署脚本(我理解的应用程序(。对于调用 3 个快速通道配置的脚本,您应该做得更好。
我没有尝试过,但应该在脚本上序列化,启动您的第一个快车道 Target1,完成后,运行 2 等等......但最好测试一下。
我希望这对你;)有所帮助。