如何读取 Xamarin.Forms (Android) 中的 Microsoft App Center 环境变量?

How to read Microsoft App Center Environment Variables in Xamarin.Forms (Android)?

我在 appcenter.ms 部署了一个应用程序,它有一些“秘密”字段。我将它们添加到 MYSTRING_STR value 之类的“环境变量”部分中,我正尝试在 Xamarin.Forms 项目中读取它 var myStr = Environment.GetEnvironmentVariable("MYSTRING_STR"); 但没有返回任何值。在发布版本中阅读它们的正确方法是什么?

我当时很傻。当然它不会工作,因为该应用程序不会 运行 在它编译的系统上,所以环境变量不会被复制。我把它留给将来可能需要它的任何人。 Tl;博士,我的应用程序在 github 上,App Center 只是从那里编译的。这就是我如何在不泄露 github 上的信息的情况下设法获得“秘密”字段的方法: 您需要在项目中安装 Mobile.BuildTools nuget 包。 之后,您在项目的根目录中创建一个名为 secrets.json 的文件,其中包含您需要的信息。我在本地创建了一个占位符值,例如:

{
  "String1": "%VALUE1%",
  "String2": "%VALUE2%"
}

因为它是 json,它不会读取值,但没关系。我们只想在 github 上跟踪下一部分。将它提交到 repo 后,我将它添加到 .gitignore 并删除它的缓存,这样当我们将实际值放入其中时它就不会被跟踪。 当你点击编译时,Mobile.BuildTools 会自动生成一个名为 Secrets 的 class。您可以使用 Secrets.String1 等访问代码中的变量,因此您只需在需要它们的地方使用它们。 之后,您像往常一样在 App Center 中设置环境变量,然后您需要一个构建脚本将它们写入 json 文件。 在文件夹 <MyProject>.Android(或 iOS,如果您支持多个平台,则两者兼而有之),我创建了名为 appcenter-post-clone.sh 的脚本,内容如下:

#!/usr/bin/env bash

npm install node-jq --save

jq -n \
            --arg str1 "$STRING1" \
            --arg str2 "$STRING2" \
            '{String1: $str1, String2: $str2}' > $APPCENTER_SOURCE_DIRECTORY/<Project>/secrets.json

之后你就大功告成了。很抱歉 post 但是我真的找不到任何解释这个的来源所以我只是把它留在这里以防其他人像我一样迷路。