Visual studio 基于Xamarin中的构建配置,iOS/Android项目的不同“google services.json/GoogleService Info.plist”

Visual studio 基于Xamarin中的构建配置,iOS/Android项目的不同“google services.json/GoogleService Info.plist”,visual-studio,xamarin,xamarin.forms,xamarin.android,xamarin.ios,Visual Studio,Xamarin,Xamarin.forms,Xamarin.android,Xamarin.ios,因此,我有一个要求,我的项目应该使用不同的GoogleServices文件用于Android/iOS,同时使用不同的配置,例如,当我使用调试配置时,它应该使用文件的调试版本,在发布版本中,它应该使用发布版本 类似于 当我遵循已接受的答案时,我得到一个编译时错误 命令COPY/Y“$(ProjectDir)GoogleServices\google services development.json”“$(ProjectDir)google services.json”以代码1退出 我尝试了清洁

因此,我有一个要求,我的项目应该使用不同的GoogleServices文件用于Android/iOS,同时使用不同的配置,例如,当我使用调试配置时,它应该使用文件的调试版本,在发布版本中,它应该使用发布版本

类似于

当我遵循已接受的答案时,我得到一个编译时错误

命令
COPY/Y“$(ProjectDir)GoogleServices\google services development.json”“$(ProjectDir)google services.json”
以代码1退出

我尝试了清洁构建和清洁bin/obj,但没有任何改变

所以我尝试了这里提到的另一个解决方案,结果是GoogleServices文件(全部)被排除在项目之外,如果我构建并运行,什么都不会发生。我不确定这是否有效

我在csproj中分别添加了以下代码行,用于发布和调试

  <ItemGroup Condition="'$(Configuration)'=='Debug'">
  <GoogleServicesJson Include="Dev\google-services.json">
   <Link>google-services.json</Link>
  </GoogleServicesJson>
  </ItemGroup>

 <ItemGroup Condition="'$(Configuration)'=='Release'">
 <GoogleServicesJson Include="Prod\google-services.json">
  <Link>google-services.json</Link>
 </GoogleServicesJson>
 </ItemGroup>

google-services.json
google-services.json
其中dev和prod是我本机android项目中的根文件夹


欢迎提出任何建议

您必须编辑*.csproj文件

使用(LogicalName标记),您可以随心所欲地播放任何其他文件

对于Android,我在Resources文件夹中添加了两个*.json文件,并将此代码段添加到我的*.csproj文件中:


参考资料\google-services.json
参考资料\google-services.json
在本例中,我将release-google-services.json用于“release”构建配置,dev-google-services.json用于任何其他配置

iOS也是如此。我将两个*.plist文件添加到根文件夹,并将此代码段添加到我的*.csproj文件:


GoogleService-Info.plist
GoogleService-Info.plist
这种方法适合我。我想你把这些文件放在哪里,怎么命名都不重要。只需使用所需的逻辑名称

此外,还可以将其与其他变量组合,以构成更复杂的条件。例如,要在版本配置中使用不同的*.json文件构建两个*.apk,您可以:


参考资料\google-services.json
参考资料\google-services.json
按照以下方式构建您的项目:

msbuild MobileApp.sln/p:Configuration=Release/p:DynamicConstants=DEBUG
当您使用DEBUG参数时,您将使用dev-google-services.json构建发布apk


当您省略调试参数时,您将使用Release google services.json构建Release apk。

如果您要更改google json文件,则意味着您也需要打包/绑定标识符。实际上,您不需要更改绑定标识符,只需在两个项目中定义相同的标识符。.据我所知,当我们从Firebase控制台创建GoogleJson文件时,包名和包标识符与GoogleJson文件紧密耦合。我知道包名和包标识符是紧密耦合的,这些都不是我的问题,因为我知道firebase如何处理推送通知。我的问题是另一个问题,所有这些都是很好的解决方案——生活更安全!只是想说,不要将json文件手动添加到项目中(通过添加现有文件),因为它会停止工作。它们只需要在文件夹中,VS将加载它们。