我有一个开源Xamarin项目,该项目在protected
文件中具有API密钥。目前,我已经通过AndroidManifest.xml
-ing .gitignore
处理了该问题,但这是一个混乱的解决方案,它使我无法使用AppCenter之类的自动化构建环境。
这可以通过Gradle文件完成:https://developer.android.com/studio/build/manifest-build-variables
但是,在Xamarin中,我们无权使用Gradle。我在Xamarin项目中找不到实现此目的的方法。我是否缺少明显的东西?
答案 0 :(得分:1)
不幸的是,当读取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>