![](/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.