如何在Xamarin.Forms(Android)中阅读Microsoft应用中心环境变量



我在appcenter.ms中部署了一个应用程序;秘密";字段。我把它们加在";"环境变量";类似MYSTRING_STR value的部分,我正试图在Xamarin.Forms项目中阅读它var myStr = Environment.GetEnvironmentVariable("MYSTRING_STR");,但未返回任何值。在发布版本中阅读它们的正确方式是什么?

我很愚蠢。当然,它不会起作用,因为应用程序不会在它编译的系统上运行,所以环境变量不会被复制。我把这个留给将来可能需要的人。Tl;博士,我在github上有我的应用程序,应用中心只是从那里编译的。这就是我如何设法得到";秘密";字段,而不会泄露github上的信息:您需要在项目中安装Mobile.BuildToolsnuget包。然后,在项目的根目录中创建一个名为secrets.json的文件,其中包含所需的信息。我在本地创建了一个占位符值,如:

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

因为它是json,所以它不会读取值,但它是可以的。我们只希望在github上跟踪它的下一部分。在将其提交给repo后,我将其添加到.gitignore并删除其缓存,这样当我们将实际值放入其中时,它就不会被跟踪。当您点击compile时,Mobile.BuildTools将自动生成一个名为Secrets的类。您可以使用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

之后你就完了。很抱歉发了这么长的帖子,但我真的找不到任何解释这件事的来源,所以我把它留在这里,以防其他人和我一样迷路。

最新更新