如何在应用程序中心的 Xamarin.Forms 中使用设置环境变量

问题描述 投票:0回答:3

我有一个 Xamarin Forms 应用程序,正在使用应用程序中心构建。该应用程序包含一些如下所示的代码:

var secret= "secretvaluegoeshere";

然后我使用该密钥与 API 进行通信。现在,我想从代码中提取该秘密,以免将其置于源代码控制中,并在应用程序中心构建时将其注入。 环境变量似乎他们应该解决这个问题,但文档中的示例没有提到它们如何进入代码(只有 nuget 和 gradle 配置)。有没有办法用环境变量来做我想要的事情,或者我应该以另一种方式做这件事?

c# xamarin xamarin.forms visual-studio-app-center
3个回答
19
投票

事实证明,按照以下步骤操作非常简单:

在项目中安装 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 存储库以获取更多信息。


4
投票

您可以通过预构建脚本将其注入到您的项目中(直接替换代码中的一些占位符,创建一些资源文件等),然后在运行时从那里读取它。


2
投票

如果您不想使用额外的 nuget 包,您可以按照 GitHub 上官方 AppCenter 项目发布的示例

您需要做的是在 AppCenter 上创建一个新的环境变量,并使用您想要设置的值。然后将名为

appcenter-pre-build.sh
的文件保存在
.csproj
文件的同一位置,并像示例中那样创建您自己的代码。

将文件添加到存储库后,为了将检测到的脚本保存到构建配置中,您必须点击构建配置中的“保存”或“保存并构建”按钮

它刚才对我来说就像魅力一样,希望它能帮助别人!

© www.soinside.com 2019 - 2024. All rights reserved.