如何使用.env文件覆盖fastlane的appfile中的值

Lut*_*fer 6 ios fastlane

在某些情况下,我们需要覆盖fastlane的appfile中的值,例如,使用不同的苹果帐户发布应用程序,但没有官方记录.

Kra*_*eFx 18

最简单的方法是使用环境变量:

使用Appfile这样的:

apple_id ENV["APPLE_ID"] || "default@company.com"
app_identifier ENV["APP_IDENTIFIER"] || "com.company.default"
Run Code Online (Sandbox Code Playgroud)

现在在没有环境变量的情况下调用fastlane:

fastlane beta
Run Code Online (Sandbox Code Playgroud)

它将使用提供的默认值(default@company.com)

设置您可以使用的不同值

APP_IDENTIFIER="com.custom.app" fastlane enterprise
Run Code Online (Sandbox Code Playgroud)

另外,正如其他回复中已经指出的那样,您可以始终为不同的环境设置多个通道,并为您正在调用的每个操作传递不同的应用程序标识符或用户名.

  • 将它与--env参数结合起来似乎是最舒服的方法 (2认同)

Lut*_*fer 5

我们找到了一种方法,使用主项目文件夹中被忽略的 .env 文件。

它可用于覆盖 appfile 中的值,如下所示:

require('dotenv')
Dotenv.load '../.env'

app_identifier "original.app.identifier" # The bundle identifier of your app
apple_id "account@example.com" # Your Apple email address
team_name "originalTeamName"
team_id "originalTeamID"

unless ENV["N42_FASTLANE_APP_IDENTIFIER"].nil?
  app_identifier ENV["N42_FASTLANE_APP_IDENTIFIER"]
end

unless ENV["N42_FASTLANE_APPLE_ID"].nil?
  apple_id ENV["N42_FASTLANE_APPLE_ID"]
end

unless ENV["N42_FASTLANE_TEAM_NAME"].nil?
  team_name ENV["N42_FASTLANE_TEAM_NAME"]
end

unless ENV["N42_FASTLANE_TEAM_ID"].nil?
  team_id ENV["N42_FASTLANE_TEAM_ID"]
end
Run Code Online (Sandbox Code Playgroud)

在 .env 文件中设置新值 van 如下:

N42_FASTLANE_APPLE_ID="anotherAccount@example.com"
Run Code Online (Sandbox Code Playgroud)

  • 我认为 `Dotenv.load ` 不是必需的,fastlane 本身支持 .env 文件。您应该使用 `--env` 参数运行它。例如,您有一个`.env.Production` 文件。然后你可以像`fastlane <lane_name_here> --env Production`一样运行fastlane。 (7认同)
  • 不客气)它没有很好的记录,但在“多个目标”部分中提到了[此处](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/FAQs.md)。 (2认同)