簡體   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