如何在 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 存储库以获取更多信息。
我有一个正在使用 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 存储库以获取更多信息。