如何使用.env文件覆盖fastlane的应用程序文件中的值
在某些情况下,我们有必要覆盖fastlane的appfile中的值,例如使用不同的苹果账户来发布应用程序,但是没有文档化的官方方式。
最简单的方法是使用环境variables:
像这样使用一个Appfile
:
apple_id ENV["APPLE_ID"] || "default@company.com" app_identifier ENV["APP_IDENTIFIER"] || "com.company.default"
当你现在调用没有环境variables的fastlane时 :
fastlane beta
它将使用提供的默认值( default@company.com
)
设置一个不同的值,你可以使用
APP_IDENTIFIER="com.custom.app" fastlane enterprise
正如其他答复已经指出的那样,对于不同的环境,您可以始终拥有多个通道,只需将不同的应用标识符或用户名传递给您要调用的每个操作。
我们find了一个方法来执行此操作,在主项目文件夹中使用忽略的.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
新的值在.env文件中设置如下:
N42_FASTLANE_APPLE_ID="anotherAccount@example.com"
Appfile
支持重写不同通道的值: https : //github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md 。
您也可以在team_id
指定不同的team_id
, username
和Fastfile
,例如:
lane :example_lane do cert( username: "email@company.com", team_id: "ABCDE123" ) sigh( username: "email@company.com", team_id: "ABCDE123", app_identifier: "com.company.example.app" ) gym( export_team_id: "ABCDE123" ) end