![](/img/trans.png)
[英]How to read Microsoft App Center Environment Variables in Xamarin.Forms (Android)?
[英]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.