我有一个 .NET 8 MAUI 项目,对于使用我的应用程序的品牌具有不同的构建配置。每个配置都有一个 Android Manifest、google-services.json 等,因此它们在不同的应用程序 ID 下构建,并且应该连接到不同的 firebase 项目。我尚未在 iOS 上进行测试,但目前在 Android 上无法按预期工作。
在我的 csproj 中,我的属性设置如下:
<!-- I have one for release as well -->
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='[Brand]Debug|net8.0-android|AnyCPU'">
<AndroidSigningKeyStore>Platforms\Android\Keystores\[brand].keystore</AndroidSigningKeyStore>
<AndroidManifest>Platforms\Android\[Brand]\AndroidManifest.xml</AndroidManifest>
...
</PropertyGroup>
...
<ItemGroup Condition="(('$(Configuration)' == '[Brand]Debug' Or '$(Configuration)' == '[Brand]Release') And '$(TargetFramework)' == 'net8.0-android')">
<None Remove="Platforms\Android\[MainBrand]\google-services.json" />
<GoogleServicesJson Include="Platforms\Android\[Brand]\google-services.json" />
</ItemGroup>
特定于构建的清单、密钥库、图像等都很好,但在项目组中,它似乎没有拾取不同的 google-services.json,因此来自所有构建配置的所有日志(分析和崩溃)都是出现在我的主品牌的 firebase 日志中。我的 csproj 中的其他任何地方都没有提到 google-services,每个 json 都是直接从相应的 firebase 项目下载的,它们看起来确实正确,并且位于正确的文件夹中。
知道为什么会发生这种情况吗?
我发现,我在 strings.xml 中硬编码了主应用程序 ID,这是我在初始设置中遵循教程时必须完成的。我只是删除了它,以便它动态地获取它,现在它似乎可以工作了。所以这是我自己的错,只影响了 Android,而不是 iOS。