我有一个开源Xamarin项目,该项目在AndroidManifest.xml
文件中具有API密钥。目前,我已经通过.gitignore
-AndroidManifest.xml
处理了该问题,但这是一个麻烦的解决方案,它使我无法使用AppCenter等自动构建环境。
可以通过Gradle文件完成:https://developer.android.com/studio/build/manifest-build-variables
但是,在Xamarin中,我们无权使用Gradle。我在Xamarin项目中找不到实现此目的的方法。我是否缺少明显的东西?
不幸的是,当读取AndroidManifest.xml(或iOS版本的Info.plist)时,环境变量不可用。
我发现更改这些文件(包括com标识符)中的配置值的一种方法是通过“项目选项”->“构建”->“自定义命令”运行预构建脚本。实际的脚本可能非常简单。类似于:
#!/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>