如何在 App Center 中使用 Xamarin.Forms 中的设置环境变量

How can I use set Environment Variables in Xamarin.Forms from App Center

我有一个正在使用 App Center 构建的 Xamarin Forms 应用程序。该应用程序包含一些代码,如下所示:

var secret= "secretvaluegoeshere";

然后我使用秘密与 API 进行通信。现在我想从代码中提取这个秘密,以免在源代码管理中使用它,并在 App Center 上构建时注入它。 Environment Variables 似乎他们应该解决这个问题,但文档中的示例没有提到他们如何进入代码(只有 nuget 和 gradle 配置)。有没有办法用环境变量做我想做的事,还是我应该用另一种方式做?

您可以通过预构建脚本将它注入到您的项目中(直接在代码中替换一些占位符,创建一些资源文件左右),然后在运行时从那里读取它。

事实证明,按照以下步骤操作非常简单:

在您的项目中安装 Mobile.BuildTools NuGet 包。

在项目的根目录中添加一个 secrets.json 文件(这应该使用 .gitignore 从源代码管理中排除)。

将您的秘密添加到 secrets.json 文件,所以在我的例子中,我将添加一个 SearchApiKey,显然您可以添加任意数量的秘密:

{
  "SearchApiKey": "SUPERSECRETGOESHERE"
}

构建你的项目,这将生成一个名为 Secrets 的静态 class,带有 属性 SearchApiKey,如果你想查看它,你可以在 obj 文件夹下找到它。

您现在可以在您的代码中访问此 class 及其属性,所以我只需这样做:

var secret = Secrets.SearchApiKey;

最后,要将秘密传递到您在 AppCenter 上的构建中,您需要添加一个与 属性 名称相匹配的环境变量,该名称以 Secret_ 开头,所以在我的例子中,它的名称是 Secret_SearchApiKey 并设置它的值.

您可以查看 Mobile.BuildTools GitHub 存储库以获取更多信息。