簡體   English   中英

如何在 Xamarin.Forms (Android) 中讀取 Microsoft App Center 環境變量?

[英]How to read Microsoft App Center Environment Variables in Xamarin.Forms (Android)?

我在 appcenter.ms 中部署了一個應用程序,它有一些“秘密”字段。 我將它們添加到“環境變量”部分,如MYSTRING_STR value ,我試圖在 Xamarin.Forms 項目中讀取它,如var myStr = Environment.GetEnvironmentVariable("MYSTRING_STR"); 但沒有返回值。 在發布版本中閱讀它們的正確方法是什么?

我很愚蠢。 當然它不會工作,因為應用程序不在它編譯的系統上運行,所以環境變量不會被復制。 我將把它留在這里給將來可能需要它的任何人。 Tl;Dr,我在 github 上有我的應用程序,而 App Center 只是從那里編譯。 這就是我設法在不泄露 github 信息的情況下獲得“秘密”字段的方法:您需要在項目中安裝Mobile.BuildTools nuget 包。 然后,您在項目的根目錄中創建一個名為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的腳本, 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

之后你就完成了。 很抱歉這篇很長的帖子,但我真的找不到任何解釋這一點的來源,所以我只是把它留在這里,以防其他人和我一樣迷路。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM