繁体   English   中英

如何在应用中心的 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 上构建时注入它。 环境变量似乎应该解决这个问题,但文档中的示例没有提到它们如何进入代码(仅 nuget 和 gradle 配置)。 有没有办法用环境变量做我想做的事,还是我应该用另一种方式做?

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

因此,通过以下步骤可以很容易地实现这一点:

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

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

将你的秘密添加到secrets.json文件,所以在我的情况下我将添加一个SearchApiKey,显然你可以添加任意数量的秘密:

{
  "SearchApiKey": "SUPERSECRETGOESHERE"
}

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

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

var secret = Secrets.SearchApiKey;

最后要将秘密传递到AppCenter上的构建中,您需要添加一个与Secret_前面的属性名称匹配的环境变量,因此在我的情况下,它的名称是Secret_SearchApiKey并设置它的值。

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

如果您不想使用额外的 nuget 包,您可以按照GitHub 官方 AppCenter 项目中发布的示例进行操作

您需要做的是在 AppCenter 上使用您要设置的值创建一个新的环境变量。 然后在.csproj文件的同一级别保存一个名为appcenter-pre-build.sh的文件,并像示例中一样创建自己的代码。

将文件添加到存储库后,为了将检测到的脚本保存到构建配置中,您必须在构建配置中点击“保存”或“保存并构建”按钮

刚才它对我来说就像一个魅力,希望它可以帮助别人!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM