【问题标题】:How to read Microsoft App Center Environment Variables in Xamarin.Forms (Android)?如何在 Xamarin.Forms (Android) 中读取 Microsoft App Center 环境变量?
【发布时间】:2021-02-20 05:42:45
【问题描述】:

我在 appcenter.ms 中部署了一个应用程序,其中包含一些“秘密”字段。我将它们添加到MYSTRING_STR value 之类的“环境变量”部分中,我试图在 Xamarin.Forms 项目中读取它,例如 var myStr = Environment.GetEnvironmentVariable("MYSTRING_STR"); 但不返回任何值。在发布版本中阅读它们的正确方法是什么?

【问题讨论】:

  • 您的 Xamarin.Android 项目中是否有名称/值文件,其中包含 AndroidEnvironment 的构建操作?

标签: c# xamarin xamarin.forms xamarin.android visual-studio-app-center


【解决方案1】:

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

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

因为它是一个 json,它不会读取值,但没关系。我们只希望在 github 上跟踪它的下一部分。将其提交到 repo 后,我将其添加到 .gitignore 并删除它的缓存,因此当我们将实际值放入其中时,它不会被跟踪。 当您点击编译时,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

然后你就完成了。很抱歉这篇文章很长,但我真的找不到任何解释这一点的来源,所以我把它留在这里,以防其他人像我一样迷路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 2012-04-17
    • 2020-09-18
    • 2017-11-03
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多