Xamarin:是否可以将环境变量注入AndroidManifest.xml文件?

时间:2019-01-02 12:36:08

标签: xamarin gradle xamarin.android

我有一个开源Xamarin项目,该项目在protected文件中具有API密钥。目前,我已经通过AndroidManifest.xml-ing .gitignore处理了该问题,但这是一个混乱的解决方案,它使我无法使用AppCenter之类的自动化构建环境。

这可以通过Gradle文件完成:https://developer.android.com/studio/build/manifest-build-variables

但是,在Xamarin中,我们无权使用Gradle。我在Xamarin项目中找不到实现此目的的方法。我是否缺少明显的东西?

1 个答案:

答案 0 :(得分:1)

不幸的是,当读取AndroidManifest.xml(或iOS版本的Info.plist)时,环境变量不可用。

我发现更改那些文件(包括com标识符)中的配置值的一种方法是通过“项目选项”->“构建”->“自定义命令”运行预构建脚本。

Project options view

实际的脚本可能非常简单。像这样:

#!/bin/sh
cat ./manifest/prod/AndroidManifest.xml > Properties/AndroidManifest.xml

每种构建配置都需要使用不同版本的脚本。就我而言,我需要根据环境更改com标识符,以便从Pushy.me隔离生产与开发推送通知。

这会显示在您的.csproj文件中,如下所示:

<CustomCommands>
    <CustomCommands>
    <Command>
        <type>BeforeBuild</type>
        <command>set_manifest_dev.sh</command>
        <workingdir>${ProjectDir}</workingdir>
    </Command>
    </CustomCommands>
</CustomCommands>